/** * T�l�chargement d'une pi�ce jointe (download) * * @author Christophe Beyer <*****@*****.**> * @since 2005/10/18 * @param string $file Nom du fichier � t�l�charger * @todo V�rifier les droits par rapport au minimail contenant cette pi�ce jointe */ public function downloadAttachment() { $minimailService =& CopixClassesFactory::Create('minimail|minimailService'); $malleService =& CopixClassesFactory::Create('malle|malleService'); $file = _request("file") ? _request("file") : NULL; $fullFile = realpath("../var/data") . "/minimail/" . $file; $errors = array(); if (!$file || !file_exists($fullFile)) { $errors[] = CopixI18N::get('minimail.error.noFile'); } if ($errors) { $urlReturn = CopixUrl::get('minimail||getListRecv'); return new CopixActionReturn(COPIX_AR_REDIRECT, $urlReturn); } $fileDl = $minimailService->getAttachmentName($file); return _arFile($fullFile, array('filename' => $fileDl, 'content-type' => $malleService->getMimeType($fileDl))); }
/** * FICHIER - Téléchargement d'un fichier */ public function processTelechargerFichier() { $classeurDAO = _ioDAO('classeur|classeur'); $fichierDAO = _ioDAO('classeur|classeurfichier'); $classeur = $classeurDAO->get(_request('classeurId', null)); $fichier = $fichierDAO->get(_request('fichierId', null)); if (!$classeur || !$fichier) { return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('classeur||'))); } _classInclude('classeur|classeurService'); $nomClasseur = $classeur->id . '-' . $classeur->cle; $extension = strtolower(strrchr($fichier->fichier, '.')); $nomFichier = $fichier->id . '-' . $fichier->cle . $extension; $pathFichier = realpath('./static/classeur') . '/' . $classeur->id . '-' . $classeur->cle . '/' . $nomFichier; if (!file_exists($pathFichier)) { return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('classeur|classeur.error.noFile'), 'back' => CopixUrl::get('classeur||'))); } $this->flash->addCycle(); return _arFile($pathFichier, array('filename' => $fichier->fichier, 'content-type' => classeurService::getMimeType($pathFichier), 'content-disposition' => 'attachement')); }
/** * Telechargement d'un document joint a une fiche * * @author Christophe Beyer <*****@*****.**> * @since 2011/01/31 * @param string $fichier Nom du fichier * */ public function processDoc() { $iFichier = CopixRequest::get('fichier'); $malleService =& CopixClassesFactory::Create('malle|malleService'); preg_match('/^([0-9]+)_(.+)$/', $iFichier, $regs); $file = COPIX_VAR_PATH . CopixConfig::get('fichesecoles|docPath') . $iFichier; if (@file_exists($file)) { $filename = $regs[2]; return _arFile($file, array('filename' => $filename, 'content-type' => $malleService->getMimeType($file), 'content-disposition' => 'attachement')); } header("HTTP/1.0 404 Not Found"); return new CopixActionReturn(COPIX_AR_NONE, 0); }
/** * Téléchargement (download) de plusieurs fichiers en un seul fichier ZIP * * @author Christophe Beyer <*****@*****.**> * @since 2006/05/09 * @param integer $id Id de la malle * @param integer $folder Id du dossier * @param array $files Liste des fichiers sélectionnés * @param array $folders Liste des dossiers sélectionnés */ public function processDoActionDownloadZip() { $kernelService =& CopixClassesFactory::Create('kernel|kernel'); $malleService =& CopixClassesFactory::Create('malle|malleService'); $daoMalles = CopixDAOFactory::create("malle|malle_malles"); $daoFolders = CopixDAOFactory::create("malle|malle_folders"); $daoFiles = CopixDAOFactory::create("malle|malle_files"); $id = $this->getRequest('id', null); $folder = $this->getRequest('folder', null); $files = $this->getRequest('files', array()); $folders = $this->getRequest('folders', array()); $criticErrors = array(); if ($folder) { $rFolder = $daoFolders->get($folder); if (!$rFolder) { $criticErrors[] = CopixI18N::get('malle|malle.error.noFolder'); } elseif ($rFolder->malle != $id) { $criticErrors[] = CopixI18N::get('malle|malle.error.noFolder'); } $malle_cle = $rFolder->malle_cle; } else { $rMalle = $daoMalles->get($id); if (!$rMalle) { $criticErrors[] = CopixI18N::get('malle|malle.error.noMalle'); } $malle_cle = $rMalle->cle; } if (!count($files) && !count($folders)) { $criticErrors[] = CopixI18N::get('malle|malle.error.noSelection'); } if (!$criticErrors) { $mondroit = $kernelService->getLevel("MOD_MALLE", $id); //print_r($mondroit); if (!$malleService->canMakeInMalle("ITEM_DOWNLOAD_ZIP", $mondroit)) { $criticErrors[] = CopixI18N::get('kernel|kernel.error.noRights'); } else { //$parent = $kernelService->getModParentInfo( "MOD_MALLE", $id); } } if ($criticErrors) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $criticErrors), 'back' => CopixUrl::get('malle||'))); } $errors = array(); $zipFile = 'archive' . mt_rand(100000, 9999999) . '.zip'; if (file_exists($malleService->getTmpFolder() . '/' . $zipFile)) { unlink($malleService->getTmpFolder() . '/' . $zipFile); } $archive = new PclZip($malleService->getTmpFolder() . '/' . $zipFile); //print_r($files); $zipFiles = array(); foreach ($files as $k) { $r = $daoFiles->get($k); if ($r && $r->malle == $id && $r->folder == $folder) { //print_r($r); $zipFiles[] = $r->id . '_' . $r->fichier; } } $zipFiles2 = array(); foreach ($folders as $k) { $r = $daoFolders->get($k); if ($r && $r->malle == $id && $r->parent == $folder) { //print_r($r); $malleService->getFilesInFolder($id, $k, $zipFiles2); } } //print_r($zipFiles2); if ($zipFiles) { // Fichiers foreach ($zipFiles as $f) { //print_r($f); $fullFile = realpath('./static/malle') . '/' . $id . '_' . $malle_cle . '/' . $f; //print_r($fullFile); //$add = $archive->add($fullFile, PCLZIP_OPT_REMOVE_ALL_PATH, PCLZIP_ATT_FILE_NEW_SHORT_NAME, 'toto.txt'); $add = $archive->add(array(PCLZIP_ATT_FILE_NAME => $fullFile), PCLZIP_OPT_REMOVE_ALL_PATH); if ($add == 0) { // , $errors[] = $archive->errorInfo(true); } } } if ($zipFiles2) { // Dossiers //print_r($zipFiles2); //print_r($fullFile); foreach ($zipFiles2 as $f) { $fullFile = realpath('./static/malle') . '/' . $id . '_' . $malle_cle . '/' . $f['id'] . '_' . $f['fichier']; //print_r($fullFile); if ($archive->add($fullFile, PCLZIP_OPT_ADD_PATH, $f['folder_path'], PCLZIP_OPT_REMOVE_ALL_PATH) == 0) { // , $errors[] = $archive->errorInfo(true); } } } //print_r($fullFile); //var_dump($malleService->getTmpFolder().'/'.$zipFile); //die ('a'); //print_r($archive); //$list = $archive->listContent(); //print_r($list); if ($errors) { //print_r($errors); return CopixActionGroup::process('malle|malle::getMalle', array('id' => $id, 'folder' => $folder, 'errors' => $errors)); } else { return _arFile($malleService->getTmpFolder() . '/' . $zipFile, array('filename' => $zipFile, 'content-type' => $malleService->getMimeType($zipFile))); } }