Пример #1
0
 /**
  * Método que trata a requisição POST da página cadastrar_anexo_especifico
  */
 private function cadastrarAnexoEspecifico($pkLivro, $capitulo, $materia, $tipo, $finalidade, $conteudo)
 {
     $usrvalidar = new \Kernel\Auxiliar\Usuario();
     //
     $anexos = new Anexos();
     $sqlAnexos = new \Kernel\Sql\SqlAnexos();
     $arquivos = new Arquivos();
     $livro = new aula\models\dao\SqlLivroAnexo();
     //
     $sqlCapitulo = new \Kernel\Sql\SqlCapitulo();
     $sqlConteudo = new aula\models\dao\SqlConteudos();
     $sqlSerie = new aula\models\dao\SqlSerie();
     try {
         //Definindo os dados do objeto
         $idAnexo = (int) $this->input->post("anexo");
         if ($idAnexo) {
             //Caso esteja em modo de edição de anexos
             $anexos = $sqlAnexos->get($idAnexo);
         }
         $anexos->setTipo((int) $tipo);
         $anexos->setAnexoDesc($this->input->post("anexo_desc"));
         $anexos->setFinalidade((int) $finalidade);
         $anexos->setObjetivo((int) $this->input->post("objetivo"));
         $anexos->setAnoEnvio(date("Y"));
         $anexos->setObs(filter_input(INPUT_POST, "obs", FILTER_SANITIZE_MAGIC_QUOTES));
         $anexos->setFonte($this->input->post("fonte"));
         $anexos->setFonteUrl($this->input->post("fonte_url"));
         $anexos->setUsuarioInsert($usrvalidar->usuarioLogado());
         //Variável de configuração de acordo com o tipo de anexo informado
         $nomeTipos = $anexos->dadosAnexo();
         //Fazendo definições especificas por tipo de anexo
         if ($anexos->getTipo() == Anexos::TIPO_AUDIO) {
             $anexos->setSubtipo((int) $this->input->post("subtipo"));
             if ($anexos->getSubtipo() == Anexos::SUBTIPO_AUDIO_ARQUIVO) {
                 $arquivo = $_FILES["arquivo"];
                 $uploaddir = Anexos::DIR_UPLOAD . DIRECTORY_SEPARATOR . $nomeTipos["pasta"];
                 $anexos->setArquivoNome(Util::retira_caracteres_especiais($arquivo['name']));
                 $arquivos->upload($arquivo, $uploaddir, $nomeTipos["extencoes"], $anexos->getNome());
                 $anexos->setExtensao(substr($anexos->getNome(), strrpos($anexos->getNome(), ".") + 1));
             } else {
                 $anexos->setArquivoNome($this->input->post("url"));
             }
         } elseif ($anexos->getTipo() == Anexos::TIPO_VIDEO) {
             $anexos->setSubtipo(0);
             $anexos->setArquivoNome($this->input->post("url_video"));
         } elseif ($anexos->getTipo() == Anexos::TIPO_ANEXO) {
             $arquivo = $_FILES["arquivo"];
             $uploaddir = Anexos::DIR_UPLOAD . DIRECTORY_SEPARATOR . $nomeTipos["pasta"];
             $anexos->setArquivoNome(Util::retira_caracteres_especiais($arquivo['name']));
             $arquivos->upload($arquivo, $uploaddir, $nomeTipos["extencoes"], $anexos->getNome());
             $anexos->setExtensao(substr($anexos->getNome(), strrpos($anexos->getNome(), ".") + 1));
             $mimeType = $arquivo["type"];
             $anexos->setSubtipo(is_int(strpos($mimeType, "image")) ? Anexos::SUBTIPO_ANEXO_IMAGEM_ARQUIVO : Anexos::SUBTIPO_ANEXO_OUTROS);
         } elseif ($anexos->getTipo() == Anexos::TIPO_TESTE) {
             $anexos->setSubtipo(0);
             $anexos->setArquivoNome("Componente não definido ainda no HTML");
         } elseif ($anexos->getTipo() == Anexos::TIPO_RA) {
             $anexos->setSubtipo(0);
             $anexos->setArquivoNome($this->input->post("pagina"));
         } elseif ($anexos->getTipo() == Anexos::TIPO_GALERIA) {
             $anexos->setSubtipo(0);
             $anexos->setArquivoNome($_SESSION['pasta']);
         } elseif ($anexos->getTipo() == Anexos::TIPO_URL) {
             $anexos->setSubtipo(0);
             $anexos->setArquivoNome($this->input->post("url"));
         }
         //Definindo o tópico ou capítulo para associar
         if ((int) $conteudo) {
             $voidConteudo = $sqlConteudo->get((int) $conteudo);
             $serie = $sqlSerie->deTopico($voidConteudo);
         } else {
             $voidConteudo = $sqlCapitulo->get((int) $capitulo);
             $serie = $sqlSerie->deCapitulo($voidConteudo);
         }
         //Salvando o anexo no banco de dados
         if ($anexos->getId()) {
             $sqlAnexos->update($anexos);
             $this->session->set_flashdata('msg', '<p class="alert ok">Conteúdo Digital atualizado com sucesso.</p>');
         } else {
             $lastId = $sqlAnexos->insert($anexos);
             $anexos->setId($lastId);
             $sqlAnexos->insertVinculo($anexos, $serie, $voidConteudo);
             $this->session->set_flashdata('msg', '<div class="alert ok">Link cadastrado com sucesso.</div>');
         }
         //Defirecionando para a página de exibição
         $shadowbox = $this->input->post('shadowbox') == 1 ? '?shadowbox=1' : '';
         redirect(base_url("aula/conteudos/cadastrar_anexo/{$pkLivro}/{$capitulo}/{$materia}/" . ((int) $conteudo ?: 0) . "/{$shadowbox}"));
         return "";
     } catch (Exception $e) {
         ini_set('default_charset', 'utf-8');
         echo Javascript::alert($e->getMessage());
         die(Javascript::history_back());
     }
 }