/** * Nom d'une pièce jointe en clair (sans l'id du début du nom du fichier) * * @author Christophe Beyer <*****@*****.**> * @since 2012/06/22 * @param integer $key Clé de la PJ * @return string nom */ public function getAttachmentFilename($key) { $attachement = 'attachment' . $key; return $this->{$attachement} ? MinimailService::getAttachmentName($this->{$attachement}) : ''; }
/** * Téléchargement d'une pièce jointe dans un classeur * * @author Christophe Beyer <*****@*****.**> * @since 2012/06/21 * @param integer $id Id du minimail de départ */ public function attachmentToClasseur() { //_dump($_POST); $this->addJs('js/iconito/module_classeur.js'); $this->addJs('js/iconito/module_minimail.js'); $this->addCss('styles/module_classeur.css'); _classInclude('classeur|classeurService'); _classInclude('kernel|Request'); $idUser = _currentUser()->getId(); $idMessage = _request("id"); $files = _request('files', array()); $destination = _request('destination'); $errors = array(); $daoFrom = _ioDAO("minimail|minimail_from"); $daoTo = CopixDAOFactory::create("minimail_to"); $message = $daoFrom->getMessage($idMessage); $canMake = $isRecv = $isSend = false; if ($message && $message->from_id == $idUser) { // Message qu'il a envoyé $canMake = $isSend = true; } else { // Il en est peut-être destinataire $canMake = $isRecv = $daoTo->selectDestFromIdAndToUser($idMessage, $idUser); // Test s'il est dans les destin } if (!$canMake) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('minimail.error.cantDisplay'), 'back' => CopixUrl::get('minimail||'))); } $menu = array(); $menu[] = array('txt' => CopixI18N::get('minimail.mess_recv'), 'url' => CopixUrl::get('minimail||getListRecv'), 'current' => $isRecv); $menu[] = array('txt' => CopixI18N::get('minimail.mess_send'), 'url' => CopixUrl::get('minimail||getListSend'), 'current' => $isSend); $menu[] = array('txt' => CopixI18N::get('minimail.mess_write'), 'url' => CopixUrl::get('minimail||getNewForm')); $ppo = new CopixPPO(); $ppo->TITLE_PAGE = $message; $ppo->MENU = $menu; $ppo->message = $message; //_dump(Request::isXmlHttpRequest()); if (Request::isPostMethod()) { $error = $success = array(); if (!$files) { $error[] = CopixI18N::get('minimail.attachmentToClasseur.error.noFiles'); } if ($destination) { list($ppo->destinationType, $ppo->destinationId) = explode('-', $destination); if ('classeur' == $ppo->destinationType) { $rClasseur = _ioDAO('classeur|classeur')->get($ppo->destinationId); } if ('dossier' == $ppo->destinationType) { if ($rDossier = _ioDAO('classeur|classeurdossier')->get($ppo->destinationId)) { $rClasseur = _ioDAO('classeur|classeur')->get($rDossier->classeur_id); } } } if (!$destination || !$rClasseur) { $error[] = CopixI18N::get('classeur|classeur.error.noDestination'); } if ($error) { $ppo->error = $error; return _arPPO($ppo, array('template' => 'attachmentToClasseur.tpl', 'mainTemplate' => 'main|main_popup.php')); } //_dump($destination); //_dump($rClasseur); $dir = realpath('./static/classeur') . '/' . $rClasseur->id . '-' . $rClasseur->cle . '/'; if (!file_exists($dir)) { mkdir($dir, 0755, true); } foreach ($files as $file) { $fichierPhysique = realpath("../var/data") . "/minimail/" . $file; $nomFichierPhysique = $file; $fichier = _record('classeur|classeurfichier'); $fichier->classeur_id = $rClasseur->id; $fichier->dossier_id = isset($rDossier) && $rDossier ? $rDossier->id : 0; $fichier->titre = MinimailService::getAttachmentName($file); $fichier->fichier = $nomFichierPhysique; $fichier->taille = filesize($fichierPhysique); $fichier->type = strtoupper(substr(strrchr($nomFichierPhysique, '.'), 1)); $fichier->cle = classeurService::createKey(); $fichier->date_upload = date('Y-m-d H:i:s'); $fichier->user_type = _currentUser()->getExtra('type'); $fichier->user_id = _currentUser()->getExtra('id'); _ioDAO('classeur|classeurfichier')->insert($fichier); if ($fichier->id > 0) { $nomClasseur = $rClasseur->id . '-' . $rClasseur->cle; $nomFichier = $fichier->id . '-' . $fichier->cle; $extension = strtolower(strrchr($nomFichierPhysique, '.')); if (copy($fichierPhysique, $dir . $fichier->id . '-' . $fichier->cle . $extension)) { $success[] = MinimailService::getAttachmentName($file); } else { $error[] = CopixI18N::get('minimail.attachmentToClasseur.error.moved', array(MinimailService::getAttachmentName($file))); } } else { $error[] = CopixI18N::get('minimail.attachmentToClasseur.error.creation', array(MinimailService::getAttachmentName($file))); } } if (count($success) > 0) { $dest = $rClasseur; if (isset($rDossier) && $rDossier) { $dest .= ' / ' . $rDossier; } if (1 == count($success)) { Kernel::setFlashMessage('success', CopixI18N::get('minimail.attachmentToClasseur.moved_1', array(implode(', ', $success), $dest))); } else { Kernel::setFlashMessage('success', CopixI18N::get('minimail.attachmentToClasseur.moved_N', array(implode(', ', $success), $dest))); } } if ($error) { Kernel::setFlashMessage('error', implode('<br />', $error)); } $ppo->ok = 1; //echo 'OK'; //return _arNone(); //return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('minimail||getMessage', array('id' => $idMessage))); } return _arPPO($ppo, array('template' => 'attachmentToClasseur.tpl', 'mainTemplate' => 'main|main_popup.php')); }