예제 #1
0
 /**
  * Generate a new image to disk and return its location.
  *
  * @example '/path/to/dir/13b73edae8443990be1aa8f1a483bc27.jpg'
  *
  * @param string $dir             Path of the generated file, if null will use the system temp dir
  * @param int    $width           Width of the picture in pixels
  * @param int    $height          Height of the picture in pixels
  * @param string $format          Image format, jpg or png
  * @param bool   $fullPath        If true, returns the full path of the file generated, otherwise will only return the filename, default to true
  * @param string $text            Text to generate on the picture
  * @param string $textColor       Text color in hexadecimal format
  * @param string $backgroundColor Background color in hexadecimal format
  * @param string $fontPath        The name/path to the font
  */
 public static function imageFile($dir = null, $width = 800, $height = 600, $format = 'png', $fullPath = true, $text = null, $textColor = null, $backgroundColor = null, $fontPath = null)
 {
     $dir = is_null($dir) ? sys_get_temp_dir() : $dir;
     // GNU/Linux / OS X / Windows compatible
     // Validate directory path
     if (!is_dir($dir) || !is_writable($dir)) {
         throw new \InvalidArgumentException(sprintf('Cannot write to directory "%s"', $dir));
     }
     // Generate a random filename. Use the server address so that a file
     // generated at the same time on a different server won't have a collision.
     $name = md5(uniqid(empty($_SERVER['SERVER_ADDR']) ? '' : $_SERVER['SERVER_ADDR'], true));
     $filename = implode('.', [$name, $format]);
     $filepath = $dir . DIRECTORY_SEPARATOR . $filename;
     if ($text === null) {
         $text = static::DEFAULT_TEXT_FORMAT;
     }
     if ($textColor === null) {
         $textColor = static::DEFAULT_TEXT_COLOR;
     }
     if ($backgroundColor === null) {
         $backgroundColor = static::randomElement(static::$colors);
     }
     $textColor = static::hexColor($textColor);
     $backgroundColor = static::hexColor($backgroundColor);
     $maxTextWidth = floor($width - $width * self::TEXT_PAD_MULTIPLIER);
     $formattedText = str_replace(['%width%', '%height%', '%format%', '%file%', '%filepath%', '%color%', '%bgcolor%'], [$width, $height, $format, $filename, $filepath, $textColor, $backgroundColor], $text);
     $imanee = new \Imanee\Imanee();
     $imanee->newImage($width, $height, $backgroundColor);
     $imanee->getDrawer()->setFontColor($textColor)->setTextAlign(\Imanee\Drawer::TEXT_ALIGN_LEFT);
     if ($fontPath !== null) {
         $imanee->getDrawer()->setFont($fontPath);
     }
     $imanee->setFormat($format)->placeText($formattedText, \Imanee\Imanee::IM_POS_MID_CENTER, $maxTextWidth)->write($filepath, static::JPEG_QUALITY);
     return $fullPath ? $filepath : $filename;
 }
예제 #2
0
 public function uploadAction()
 {
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setNoRender();
     $db = new Fotos();
     $album_id = $this->_request->getPost('album_id');
     $db->setAlbumId($album_id);
     $adapter = new Zend_File_Transfer_Adapter_Http();
     $adapter->setDestination(APPLICATION_PATH . '/../data/temp');
     $upload = new Zend_File_Transfer();
     $files = $upload->getFileInfo();
     if (!file_exists(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id)) {
         mkdir(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id, 0777, true);
     }
     foreach ($files as $file => $info) {
         if ($upload->isUploaded($file)) {
             $extension = substr($info['name'], strrpos($info['name'], '.') + 1);
             $filename = 'photo_' . time() . '.' . $extension;
             $adapter->addFilter('Rename', array('target' => APPLICATION_PATH . '/../data/temp/' . $filename, 'overwrite' => true));
             $adapter->receive($info['name']);
             if (!$adapter->receive()) {
                 $messages = $adapter->getMessages();
                 echo implode("\n", $messages);
                 exit;
             }
             //setFileName::Url
             $db->setUrl($filename);
             //setCapa::false (0)
             $db->setCapa(0);
             $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $filename);
             //resized
             $imanee->resize(870, 653)->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'r_' . $filename, 80);
             //full
             //$imanee->resize(1024, 768)
             //        ->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'f_' . $filename, 80);
             //thumbnail
             $imanee->thumbnail(200, 200, true)->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 't_' . $filename, 60);
             unlink(APPLICATION_PATH . '/../data/temp/' . $filename);
             $data = array('url' => $db->getUrl(), 'album_id' => $db->getAlbumId(), 'capa' => $db->getCapa());
             $foto_id = $db->saveFoto($data);
             $data['foto_id'] = $foto_id;
             echo json_encode($data);
         }
     }
 }
예제 #3
0
 public function editarAction()
 {
     $eq = new Equipe();
     $request = $this->getRequest();
     $id = $request->getParam('id');
     $equipe = $eq->getById($id);
     if (!$equipe) {
         $this->_helper->redirector('listar', 'equipe');
     }
     $erro = false;
     if ($request->isPost()) {
         $erro = false;
         $msg = '';
         $eq->setNome($request->getPost('Nome'));
         $eq->setCargo($request->getPost('Cargo'));
         $eq->setDescricao($request->getPost('Descricao'));
         $data = array('nome' => $eq->getNome(), 'cargo' => $eq->getCargo(), 'descricao' => $eq->getDescricao());
         $eq->save($data, $id);
         $adapter = new Zend_File_Transfer_Adapter_Http();
         $adapter->setDestination(APPLICATION_PATH . '/../data/temp');
         $upload = new Zend_File_Transfer();
         $files = $upload->getFileInfo();
         if ($files['Avatar']['tmp_name']) {
             if (!file_exists(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'equipe' . DS . $id)) {
                 mkdir(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'equipe' . DS . $id, 0777, true);
             }
             foreach ($files as $file => $info) {
                 if ($upload->isUploaded($file)) {
                     //$extension = substr($info['name'], strrpos($info['name'], '.') + 1);
                     $filename = 'avatar.jpg';
                     $adapter->addFilter('Rename', array('target' => APPLICATION_PATH . '/../data/temp/' . $filename, 'overwrite' => true));
                     $adapter->receive($info['name']);
                     if (!$adapter->receive()) {
                         $messages = $adapter->getMessages();
                         echo implode("\n", $messages);
                         exit;
                     }
                     //setFileName::Url
                     $eq->setAvatar($filename);
                     $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $filename);
                     //resized
                     $imanee->resize(300, 300)->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'equipe' . DS . $id . DS . $filename, 80);
                     //full
                     //$imanee->resize(1024, 768)
                     //        ->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'f_' . $filename, 80);
                     unlink(APPLICATION_PATH . '/../data/temp/' . $filename);
                 }
             }
         }
         if ($erro) {
             $msg = 'Ocorreu um erro, tente novamente';
             $this->view->msg = $msg;
         } else {
             $this->_helper->redirector('listar', 'equipe');
         }
     }
     $this->view->equipe = $equipe;
     $this->render();
 }
예제 #4
0
 public function editarAction()
 {
     $tp = new LoginTipo();
     $ut = new Util();
     $us = new Usuarios();
     $tiposLogin = $tp->getAllLoginTipo();
     $request = $this->getRequest();
     $id = $request->getParam('id');
     $usuario = $us->getUserByLoginId($id);
     if (!$usuario) {
         $this->_helper->redirector('listar', 'usuarios');
     }
     if ($request->isPost()) {
         $erro = false;
         $msg = '';
         $nascimento = empty($request->getPost('Nascimento')) ? NULL : $ut->dateToSql($request->getPost('Nascimento'));
         $now = $ut->nowDateSql();
         $rg = $ut->limpaDados($request->getPost('Rg'));
         $cpf = $ut->limpaDados($request->getPost('Cpf'));
         $telefone = $ut->limpaDados($request->getPost('Telefone'));
         $celular = $ut->limpaDados($request->getPost('Celular'));
         $us->setNome($request->getPost('Nome'));
         $us->setSobrenome($request->getPost('Sobrenome'));
         $us->setEmail($request->getPost('Email'));
         $us->setLoginId($id);
         $us->setRg($rg);
         $us->setCpf($cpf);
         $us->setNascimento($nascimento);
         $us->setTelefone($telefone);
         $us->setCelular($celular);
         $us->setSexo($request->getPost('Sexo'));
         $us->setCadastradoEm($now);
         $data = array('nome' => $us->getNome(), 'sobrenome' => $us->getSobrenome(), 'email' => $us->getEmail(), 'login_id' => $us->getLoginId(), 'rg' => $us->getRg(), 'cpf' => $us->getCpf(), 'nascimento' => $us->getNascimento(), 'telefone' => $us->getTelefone(), 'celular' => $us->getCelular(), 'sexo' => $us->getSexo());
         $us->saveUser($data, $id);
         $adapter = new Zend_File_Transfer_Adapter_Http();
         $adapter->setDestination(APPLICATION_PATH . '/../data/temp');
         $upload = new Zend_File_Transfer();
         $files = $upload->getFileInfo();
         if ($files['Avatar']['tmp_name']) {
             if (!file_exists(ROOT_DIR . DS . 'painel' . DS . 'images' . DS . 'usuario' . DS . $id)) {
                 mkdir(ROOT_DIR . DS . 'painel' . DS . 'images' . DS . 'usuario' . DS . $id, 0777, true);
             }
             foreach ($files as $file => $info) {
                 if ($upload->isUploaded($file)) {
                     //$extension = substr($info['name'], strrpos($info['name'], '.') + 1);
                     $filename = 'avatar.jpg';
                     $adapter->addFilter('Rename', array('target' => APPLICATION_PATH . '/../data/temp/' . $filename, 'overwrite' => true));
                     $adapter->receive($info['name']);
                     if (!$adapter->receive()) {
                         $messages = $adapter->getMessages();
                         echo implode("\n", $messages);
                         exit;
                     }
                     //setFileName::Url2
                     $us->setAvatar($filename);
                     $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $filename);
                     //resized
                     $imanee->resize(300, 300, false)->write(ROOT_DIR . DS . 'painel' . DS . 'images' . DS . 'usuario' . DS . $id . DS . $filename, 80);
                     //full
                     //$imanee->resize(1024, 768)
                     //        ->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'f_' . $filename, 80);
                     unlink(APPLICATION_PATH . '/../data/temp/' . $filename);
                 }
             }
         }
         if ($erro) {
             $msg = 'Ocorreu um erro, tente novamente';
             $this->view->msg = $msg;
         } else {
             $this->_helper->redirector('listar', 'usuarios');
         }
     }
     $this->view->usuario = $usuario;
     $this->view->tipos = $tiposLogin;
     $this->view->util = $ut;
     $this->render();
 }
예제 #5
0
 public function atualizarAction()
 {
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setNoRender();
     $slug = new My_Slugifier();
     $slug->setTransliterate(true);
     #Remover também caractéres Latin (ex.: á, ü, ç)
     if ($this->_request->isPost()) {
         $tipo = $this->_request->getPost('tipo');
         $material_id = $this->_request->getPost('material_id');
         if ($tipo == 'imagem') {
             $imagem = $this->_request->getPost('imagem');
             //localização que imagem será salva (temp)
             $imageName = 'material_' . time() . '.jpg';
             $url = ROOT_DIR . DS . '..' . DS . 'data' . DS . 'temp' . DS . $imageName;
             //remove criptografia e especificações da string de imagem
             $base64 = base64_decode(preg_replace('#^data:image/[^;]+;base64,#', '', $imagem));
             //criar imagem
             $source = imagecreatefromstring($base64);
             //salvar imagem temporária
             imagejpeg($source, $url, 70);
             //verifica a existência do diretório e cria o mesmo (se necessário)
             if (!is_dir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem')) {
                 mkdir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem', 0777, true);
             }
             //redimensiona a imagem mantendo a proporção e armazena nos diretórios corretos.
             $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $imageName);
             //full
             $imanee->resize(870, 653)->write(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem' . DS . 'r_' . $imageName, 80);
             //thumbnail
             $imanee->thumbnail(200, 200, true)->write(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem' . DS . 't_' . $imageName, 60);
             //apaga imagem temporária
             unlink(APPLICATION_PATH . '/../data/temp/' . $imageName);
             #TODO: Remover a imagem atual (database) ao finalizar a alteração.
             #TODO: Atualizar tabela com a nova imagem.
         } elseif ($tipo == 'audio') {
             $audio = $this->_request->getPost('audio');
             //armazenando a string do arquivo na variável $base64
             $base64 = base64_decode(preg_replace('#^data:audio/[^;]+;base64,#', '', $audio));
             //obtendo formato do arquivo ($extension)
             base64_decode(preg_match('/audio\\/[^;]+;/', $audio, $decoded));
             $ext = str_replace(array('audio/', ';'), array(''), $decoded);
             $extension = '.' . $ext[0];
             //localização que o áudio será salvo (temp)
             $audioName = 'material_' . time() . $extension;
             $url = ROOT_DIR . DS . '..' . DS . 'data' . DS . 'temp' . DS . $audioName;
             file_put_contents($url, $base64);
             //verifica a existência do diretório e cria o mesmo (se necessário)
             if (!is_dir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'audio')) {
                 mkdir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'audio', 0777, true);
             }
             //move o arquivo da pasta temp para a pasta correta e renomeia (se necessário)
             rename($url, ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'audio' . DS . $audioName);
             #TODO: Remover o audio atual (database) ao finalizar a alteração.
             #TODO: Atualizar tabela com o novo audio.
         } elseif ($tipo == 'arquivo') {
             //Dados de Exemplo (obter os mesmos do registro real #db)
             $titulo = 'Material de Aula - Dançando Macarena Style no passinho do Romano';
             //Dados de Exemplo :: FIM
             $arquivo = $this->_request->getPost('arquivo');
             $formato = $this->_request->getPost('formato');
             //armazenando a string do arquivo na variável $base64
             $base64 = base64_decode(preg_replace('#^data:([^;]*)+;base64,#', '', $arquivo));
             //localização que o áudio será salvo (temp)
             $arquivoName = 'material_' . time() . '.' . $formato;
             $url = ROOT_DIR . DS . '..' . DS . 'data' . DS . 'temp' . DS . $arquivoName;
             file_put_contents($url, $base64);
             //verifica a existência do diretório e cria o mesmo (se necessário)
             if (!is_dir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'arquivo')) {
                 mkdir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'arquivo', 0777, true);
             }
             //gera nome do arquivo baseado no título do material
             $newName = $slug->slugify($titulo) . '.' . $formato;
             //move o arquivo da pasta temp para a pasta correta e renomeia (se necessário)
             rename($url, ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'arquivo' . DS . $newName);
             #TODO: Remover o arquivo atual (database) ao finalizar a alteração.
             #TODO: Atualizar tabela com o novo arquivo.
         } elseif ($tipo == 'video') {
             $video = $this->_request->getPost('video');
             var_dump($_POST);
         }
     }
 }