Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erro upload de arquivo Odin Contact Form #317

Closed
AdsonCicilioti opened this issue Jul 17, 2015 · 6 comments
Closed

Erro upload de arquivo Odin Contact Form #317

AdsonCicilioti opened this issue Jul 17, 2015 · 6 comments
Labels
Milestone

Comments

@AdsonCicilioti
Copy link
Contributor

Olá pessoal!

Copiei o código de exemplo na documentação da Class Contact Form, e a única modificação foi mudar a opção required do field para false, para que não seja obrigatório o envio de arquivos em meu form, mas mesmo assim é retornado o alert Arquivo No file was uploaded..
shot-er-file

Dei uma olhada no código mas não consegui achar algo que poderia comprometer essa função.

Se alguém puder ajudar será nice!

romuloctba added a commit that referenced this issue Jul 23, 2015
Fix #317 upload problem if file is not required changing if($files) to if(count($files)
@romuloctba
Copy link
Contributor

Testa aí #321

(alteração: a02aad8 )

@rudwolf
Copy link
Contributor

rudwolf commented Feb 15, 2016

To confuso, isto está aberto ainda ou já foi resolvido, se eu puder gostaria de ajudar se ainda for preciso.

@AdsonCicilioti
Copy link
Contributor Author

Então @rudwolf da um sak no #321 onde o Claudio Sanchez ficou de verificar um fix para o problema. Se quiser vale fazer um teste aí.. Mas ainda não tá rolando.

@adammacias adammacias added this to the v.2.4.0 milestone Oct 7, 2016
@adammacias
Copy link
Member

Temos que testar isso aí, faz tanto que o issue "morreu" que não sabemos se de fato o problema foi solucionado hehe.

@AdsonCicilioti
Copy link
Contributor Author

AdsonCicilioti commented Nov 28, 2016

O problema está no uso do media_handle_upload com outros campos no mesmo form. Ele não reconhece outros campos a não ser que eles sirvam para abastecer o title, alt da imagem/mídia, pois foi feito apenas para fazer upload de mídia.
Na linha 679 do abstracts temos uma condicional que checa se há erro no upload e o mesmo está retornando positivo e apresenta o erro printado na issue, mesmo se o input file estiver sem o required.

if ( is_wp_error( $attachment_id ) ) {
	$error = apply_filters( 'odin_front_end_form_upload_error_' . $this->id, sprintf( '%s %s.', '<strong>' . $this->get_field_label( $id ) . '</strong>', $attachment_id->get_error_message() ) );
	$this->set_errors( $error );
} else {
	$attachments[ $id ] = array(
		'file' => get_attached_file( $attachment_id ),
		'url'  => wp_get_attachment_url( $attachment_id )
	);
}

Tentei add uma condicional para checar se o required é true, assim, se positivo, teremos duas camadas de validação no input file XD. o problema é que se falso não terá nenhuma validação.

Outra solução mais segura porém meio tosca seria excluir o erro No file was uploaded. da condicional:

if ( is_wp_error( $attachment_id ) && $attachment_id->get_error_message() !== 'No file was uploaded.' ) ) {
	$error = apply_filters( 'odin_front_end_form_upload_error_' . $this->id, sprintf( '%s %s.', '<strong>' . $this->get_field_label( $id ) . '</strong>', $attachment_id->get_error_message() ) );
	$this->set_errors( $error );
} else {
   ...
}

Bom, testei as duas formas e obtive sucesso, os emails chegam com e sem anexo,
Assim o usuário consegue enviar o formulário com o file input vazio para os casos onde este precise ser opcional ( 'required' => false ).

Resta saber se exite maneira melhor de fazer isso... Só consegui ir até aqui.

@AdsonCicilioti
Copy link
Contributor Author

Acho que achei uma forma melhor e mais genérica, checando o peso do arquivo em bytes. Tentei checar se existe arquivo com empty() mas não rolou.. Ao printar com count() sempre retorna 1 mesmo com o input vazio, então fui pro size mesmo.
Então adicionei && $_FILES[ $id ][ 'size' ] > 0 . assim só haverá a validação do WP_error se existir peso em bytes. Acho que já dá pra preparar um PR.

Feliz ano Novo pra todos!

adammacias added a commit that referenced this issue Dec 3, 2016
Fix Contact form Bugs - labels and upload error ( #317, #397, #321 and #430 )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants