/** * envie por post uma array de ids de files, só os ids * file/get_ziped_files */ public function getZipedFiles() { if (!UserClient::getId() > 0) { //nao tem permissao Navigation::redirect("405"); exit; } $array_file_ids = DataHandler::getValueByArrayIndex($_POST, "file_id"); //Debug::print_r($_REQUEST); $array_file_vo = array(); if (is_array($array_file_ids)) { foreach ($array_file_ids as $id) { $FileVO = new FileVO(); $Result = $FileVO->setId($id, TRUE); if ($Result->success == TRUE) { $array_file_vo[] = $FileVO; } } } else { //erro, não é uma array, verifica se pelo menos é 1 único id $id = DataHandler::forceInt($array_file_ids); if ($id > 0) { //é um id único $FileVO = new FileVO(); $Result = $FileVO->setId($id, TRUE); if ($Result->success == TRUE) { $array_file_vo[] = $FileVO; } } else { //erro mesmo, esse dado é zoado, estoura excessão throw new Exception("No ids sended", 404); exit; } } //a pasta zip precisa existir DataHandler::createFolderIfNotExist("upload/zip/"); //verifica o nome do arquivo baseado nos ids enviados conforme regra inventada agora $zip_name = "upload/zip/" . md5(implode("|", $array_file_ids)); DataHandler::createFolderIfNotExist($zip_name); $zip_name = $zip_name . "/teto.zip"; if (!file_exists($zip_name)) { //echo Debug::li($zip_name);exit(); $Zip = new ZipArchive(); $Zip->open($zip_name, ZipArchive::CREATE); foreach ($array_file_vo as $FileVO) { $url = $FileVO->getUrl(); $array = explode("/", $url); $file = $array[count($array) - 1]; $Zip->addFile($url, $file); } $Zip->close(); } header("Location: " . Config::getRootPath($zip_name)); exit; }
function delete() { $image_id = DataHandler::getValueByArrayIndex($_POST, "id"); $ReturnResultVO = new ReturnResultVO(); if ($image_id > 0) { //vai deletar $ImageVO = new FileVO(); $ImageVO->setId($image_id, TRUE); $ImageVO->delete(); $LinkDAO = LinkDAO::getInstance(); if (FALSE) { $LinkDAO = new LinkDAO(); } $ReturnDataVO = $LinkDAO->deleteAllFromLinkedTableAndLinkedTableId("file", $image_id); $ReturnResultVO->success = $ReturnDataVO->success; if ($ReturnResultVO->success) { $ReturnResultVO->addMessage(Translation::text("File deleted successfully.")); } else { $ReturnResultVO->addMessage(Translation::text("Error when deleting file.")); } } echo $ReturnResultVO->toJson(); exit; }
public function insert() { //inicia um retorno de ReturnResultVO $ReturnResultVO = new ReturnResultVO(); //pega os dados baseado na infoPost $VO = new FileVO(); if ($this->infoPost->file_info_id) { $VO->setId($this->infoPost->file_info_id, TRUE); } $VO->setActive($this->infoPost->file_info_active); $VO->setName($this->infoPost->file_info_name); $VO->setDescription($this->infoPost->file_info_description); $VO->setType($this->infoPost->file_info_type); $VO->setAuthor($this->infoPost->file_info_author); $VO->setLocale($this->infoPost->file_info_locale); $VO->setOrder($this->infoPost->file_info_order); //("JÁ") gera id para criar pasta onde vai ser guardado o arquivo $ReturnResultFileVO = $VO->commit(); if ($ReturnResultFileVO->success) { $ReturnResultFileVO->result = $VO->getId(); } else { //erro, os motivos estão na ReturnResultVO abaixo return $ReturnResultFileVO; } //pega o id da file $FILE_ID = $VO->getId(); $ReturnResultFileVO = new ReturnResultVO(); if (isset($this->infoPost->file_data) && !$this->infoPost->file_info_id > 0) { set_time_limit(0); $sentFileData = $this->infoPost->file_data; //$_FILES['Filedata']; $name = $sentFileData['name']; // extens�o enviada $sentExtension = DataHandler::returnExtensionOfFile($name); // remove caracteres escrotos $name = DataHandler::returnFilenameWithoutExtension($name); $name = DataHandler::removeAccent($name); $name = DataHandler::removeSpecialCharacters($name); $name = trim(substr($name, 0, 80)); switch ($sentFileData["type"]) { case "text/plain": $extension = "txt"; break; default: $extension = strtolower($sentExtension); break; } //verifica se a pasta existe, se não existir, inventa DataHandler::createFolderIfNotExist($this->defaultFolderForNewFiles); // pasta de upload de files está no config.php $tempFolder = DataHandler::removeDobleBars($this->defaultFolderForNewFiles . "/" . $FILE_ID); DataHandler::createFolderIfNotExist($tempFolder); $tempUrl = $tempFolder . "/" . strtolower($name . "." . $extension); $i = 2; while (file_exists($tempUrl)) { $tempUrl = $tempFolder . "/" . strtolower($name . "-" . $i . "." . $extension); $i++; } $VO->setUrl($tempUrl); $ReturnResultFileVO = $VO->commit(); //Debug::li("aaa"); if ($ReturnResultFileVO->success) { //incluir o vinculo com a linked_table e linked_table_id //receber table // table_id if ($this->infoPost->table) { $table = $this->infoPost->table; $table_id = $this->infoPost->table_id; include_once "library/facil3/core/dao/LinkDAO.class.php"; $LinkDAO = new LinkDAO(); //vincula a foto ao table e table_id enviado $ReturnResultVinculoVO = $LinkDAO->insert($table, $table_id, $this->moduleName, $VO->getId(), 1); if (!$ReturnResultVinculoVO->success) { //deu erro ao vincular $ReturnResultVO->success = false; $ReturnResultVO->appendMessage($ReturnResultVinculoVO->array_messages); return $ReturnResultVO; } } else { $ReturnResultVO->addMessage(Translation::text("LibraryLanguage::WARNING_FILE_NO_LINKED_TABLE")); } //movendo o arquivo para sua respectiva pasta. $localFile = $VO->getUrl(); if (!move_uploaded_file($sentFileData['tmp_name'], $localFile)) { $ReturnResultVO->success = false; $ReturnResultVO->addMessage(Translation::text("Arquivo não encontrado")); return $ReturnResultVO; } else { $ReturnResultVO->success = TRUE; $ReturnResultVO->result = $VO->getId(); $ReturnResultVO->addMessage(Translation::text("Arquivo gravado")); } } else { return $ReturnResultFileVO; } return $ReturnResultVO; } else { $ReturnResultFileVO = new ReturnResultVO(); $ReturnResultFileVO->addMessage("Envie o Filedata"); // nao veio filedata return $ReturnResultFileVO; } }