Upload Standard form upload

Asked

Viewed 51 times

0

I need to force the user to send the photo, if not, to go up a pattern. Unfortunately it doesn’t work and I can’t think of anything else.

//form html
<div class="form-group">          
<span class="field">Foto:</span>
<input
    class="btn btn-danger"
    type="file"
    name="colaborador_cover"
/>
</div>

//php
private $Data;
private $Colaborador;
private $Error;
private $Result;

//Nome da tabela no banco de dados
const Entity = 'ws_colaboradores';

/**
 * <b>Cadastrar Colaborador:</b> Envelope os dados de um usuário em um array atribuitivo e execute esse método
 * para cadastrar o mesmo no sistema. Validações serão feitas!
 * @param ARRAY $Data = Atribuitivo
 */
public function ExeCreate(array $Data) {
    $this->Data = $Data;
    $this->checkData();
    if (empty($Data['colaborador_cover'])):
        $Data['colaborador_cover']['name'] = 'user.png';
        $Data['colaborador_cover']['type'] = 'image/png';
        $Data['colaborador_cover']['tmp_name'] = '../uploads/images/user.png';
        $Data['colaborador_cover']['error'] = 0;
        $Data['colaborador_cover']['size'] = 1134;
    endif;
    var_dump($Data);

    if (in_array('', $this->Data)):
        $this->Error = ["Erro ao cadastrar: Para criar um post, favor preencha todos os campos!", WS_ALERT];
        $this->Result = false;
    else:
        if ($this->Data['colaborador_cover']):
            $upload = new Upload;
            // = "{$this->Data['colaborador_name']}"."{$this->Data['colaborador_lastname']}-gb-" . (substr(md5(time()), 0, 5));
            $nomeimg = $this->Data['colaborador_name'].$this->Data['colaborador_email'];
            $upload->Image($this->Data['colaborador_cover'], $nomeimg);
        endif;

        if (isset($upload) && $upload->getResult()):
            $this->Data['colaborador_cover'] = $upload->getResult();
        else:
            $this->Data['colaborador_cover'] = null;
        endif;
    endif;

    if ($this->Result):
        $this->Create();
    endif;
}

/**
 * <b>Atualizar Colaborador:</b> Envelope os dados em uma array atribuitivo e informe o id de um
 * usuário para atualiza-lo no sistema!
 * @param INT $ColaboradorId = Id do usuário
 * @param ARRAY $Data = Atribuitivo
 */
public function ExeUpdate($ColaboradorId, array $Data) {
    $this->Colaborador = (int) $ColaboradorId;
    $this->Data = $Data;

    if (!$this->Data['colaborador_password']):
        unset($this->Data['colaborador_password']);
    endif;

    $this->checkData();

    if (in_array('', $this->Data)):
        $this->Error = ["Para atualizar este post, preencha todos os campos ( Capa não precisa ser enviada! )", WS_ALERT];
        $this->Result = false;
    else:

        if (is_array($this->Data['colaborador_cover'])):
            $readCapa = new Read;
            $readCapa->ExeRead(self::Entity, "WHERE colaborador_id = :colaborador", "colaborador={$this->Colaborador}");
            $capa = '../uploads/' . $readCapa->getResult()[0]['colaborador_cover'];
            if (file_exists($capa) && !is_dir($capa)):
                unlink($capa);
            endif;

            $uploadCapa = new Upload;
            //$nomeimg = "{$this->Data['colaborador_name']}"."{$this->Data['colaborador_lastname']}-gb-" . (substr(md5(time()), 0, 5));
            $nomeimg = $this->Data['colaborador_name'].$this->Data['colaborador_email'];
            $uploadCapa->Image($this->Data['colaborador_cover'], $nomeimg);
        endif;

        if (isset($uploadCapa) && $uploadCapa->getResult()):
            $this->Data['colaborador_cover'] = $uploadCapa->getResult();
        else:
            unset($this->Data['colaborador_cover']);
        endif;
    endif;

    if ($this->Result):
        $this->Update();
    endif;
}

/**
 * <b>Remover Colaborador:</b> Informe o ID do usuário que deseja remover. Este método não permite deletar
 * o próprio perfil ou ainda remover todos os ADMIN'S do sistema!
 * @param INT $ColaboradorId = Id do usuário
 */
public function ExeDelete($ColaboradorId) {
    $this->Colaborador = (int) $ColaboradorId;

    $readColaborador = new Read;
    $readColaborador->ExeRead(self::Entity, "WHERE colaborador_id = :id", "id={$this->Colaborador}");

    if (!$readColaborador->getResult()):
        $this->Error = ['Oppsss, você tentou remover um usuário que não existe no sistema!', WS_ERROR];
        $this->Result = false;
    elseif ($this->Colaborador == $_SESSION['colaboradorlogin']['colaborador_id']):
        $this->Error = ['Oppsss, você tentou remover seu usuário. Essa ação não é permitida!!!', WS_INFOR];
        $this->Result = false;
    else:
        if ($readColaborador->getResult()[0]['colaborador_level'] == 1):

            $readAdmin = $readColaborador;
            $readAdmin->ExeRead(self::Entity, "WHERE colaborador_id != :id AND colaborador_level = :lv", "id={$this->Colaborador}&lv=1");

            if (!$readAdmin->getRowCount()):
                $this->Error = ['Oppsss, você está tentando remover o único ADMIN do sistema. Para remover cadastre outro antes!!!', WS_ERROR];
                $this->Result = false;
            else:
                $this->Delete();
            endif;

        else:
            $PostDelete = $readColaborador->getResult()[0];
            if (file_exists('../uploads/' . $PostDelete['colaborador_cover']) && !is_dir('../uploads/' . $PostDelete['colaborador_cover'])):
                unlink('../uploads/' . $PostDelete['colaborador_cover']);
            endif;
            $this->Delete();
        endif;

    endif;
}

/**
 * <b>Verificar Cadastro:</b> Retorna TRUE se o cadastro ou update for efetuado ou FALSE se não.
 * Para verificar erros execute um getError();
 * @return BOOL $Var = True or False
 */
public function getResult() {
    return $this->Result;
}

/**
 * <b>Obter Erro:</b> Retorna um array associativo com um erro e um tipo.
 * @return ARRAY $Error = Array associatico com o erro
 */
public function getError() {
    return $this->Error;
}

/*
 * ***************************************
 * **********  PRIVATE METHODS  **********
 * ***************************************
 */

//Verifica os dados digitados no formulário
private function checkData() {
    if (in_array('', $this->Data)):
        $this->Error = ["Existem campos em branco. Favor preencha todos os campos!", WS_ALERT];
        $this->Result = false;
    elseif (!Check::Email($this->Data['colaborador_email'])):
        $this->Error = ["O e-email informado não parece ter um formato válido!", WS_ALERT];
        $this->Result = false;
    elseif (isset($this->Data['colaborador_password']) && (strlen($this->Data['colaborador_password']) < 6 || strlen($this->Data['colaborador_password']) > 12)):
        $this->Error = ["A senha deve ter entre 6 e 12 caracteres!", WS_INFOR];
        $this->Result = false;
    else:
        $this->checkEmail();
    endif;
}

//Verifica usuário pelo e-mail, Impede cadastro duplicado!
private function checkEmail() {
    $Where = ( isset($this->Colaborador) ? "colaborador_id != {$this->Colaborador} AND" : '');

    $readColaborador = new Read;
    $readColaborador->ExeRead(self::Entity, "WHERE {$Where} colaborador_email = :email", "email={$this->Data['colaborador_email']}");

    if ($readColaborador->getRowCount()):
        $this->Error = ["O e-email informado foi cadastrado no sistema por outro usuário! Informe outro e-mail!", WS_ERROR];
        $this->Result = false;
    else:
        $this->Result = true;
    endif;
}

//Cadasrtra Colaborador!
private function Create() {
    $Create = new Create;
    $this->Data['colaborador_registration'] = date('Y-m-d H:i:s');
    $this->Data['colaborador_password'] = md5($this->Data['colaborador_password']);

    $Create->ExeCreate(self::Entity, $this->Data);

    if ($Create->getResult()):
        $this->Error = ["O usuário <b>{$this->Data['colaborador_name']}</b> foi cadastrado com sucesso no sistema!", WS_ACCEPT];
        $this->Result = $Create->getResult();
    endif;
}

//Atualiza Colaborador!
private function Update() {
    $Update = new Update;
    if (isset($this->Data['colaborador_password'])):
        $this->Data['colaborador_password'] = md5($this->Data['colaborador_password']);
    endif;

    $Update->ExeUpdate(self::Entity, $this->Data, "WHERE colaborador_id = :id", "id={$this->Colaborador}");
    if ($Update->getResult()):
        $this->Error = ["O usuário <b>{$this->Data['colaborador_name']}</b> foi atualizado com sucesso!", WS_ACCEPT];
        $this->Result = true;
    endif;
}

//Remove Colaborador
private function Delete() {
    $Delete = new Delete;
    $Delete->ExeDelete(self::Entity, "WHERE colaborador_id = :id", "id={$this->Colaborador}");
    if ($Delete->getResult()):
        $this->Error = ["Colaborador removido com sucesso do sistema!", WS_ACCEPT];
        $this->Result = true;
    endif;
}

}
  • I ask you: $Data where does this variable come from? Post tag code <form> in full, and the PHP code also?

  • $data is the $POST array, about php is an own mvc, but I will post the snippet because it is a lot.

  • $_FILE is what the $_POST is for input other than file the code does not help because there is also a configuration in the tag <form> so that PHP works and can rescue this image, regardless of whether it is MVC or any other division of responsibilities in the end everything is PHP that code I can’t see where the variables are passed, I can’t help with that alone.

  • I put the whole model, see if it improves

  • 1

    If there is no upload you leave the default address of a default photo in the database column. No need to upload it.

  • @zooboomafoo is right!

  • then, a request was if there was no image would rise a default image.

Show 2 more comments
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.