public function processDefault()
 {
     _classInclude('sysutils|admin');
     if (!Admin::canAdmin()) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get()));
     }
     echo "Récupération des classeurs de classe sans casier\n";
     echo "----------------------------------------------------------------------\n\n";
     // Récupération des classeurs de classe sans casier
     $sql = 'SELECT DISTINCT module_classeur.id' . ' FROM kernel_mod_enabled, module_classeur' . ' LEFT JOIN module_classeur_dossier ON (module_classeur_dossier.module_classeur_id = module_classeur.id)' . ' WHERE module_classeur.id = kernel_mod_enabled.module_id' . ' AND kernel_mod_enabled.module_type = "MOD_CLASSEUR"' . ' AND kernel_mod_enabled.node_type = "BU_CLASSE"' . ' AND (module_classeur_dossier.id IS NULL' . ' OR module_classeur_dossier.id NOT IN (SELECT id FROM module_classeur_dossier WHERE casier = 1 AND module_classeur_id = module_classeur.id))';
     $results = _doQuery($sql);
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     _classInclude('classeur|classeurService');
     echo count($results) . " casiers à créer.\n";
     foreach ($results as $result) {
         $casier = _record('classeur|classeurdossier');
         $casier->classeur_id = $result->id;
         $casier->parent_id = 0;
         $casier->nom = CopixI18N::get('classeur|classeur.casierNom');
         $casier->nb_dossiers = 0;
         $casier->nb_fichiers = 0;
         $casier->taille = 0;
         $casier->cle = classeurService::createKey();
         $casier->casier = 1;
         $casier->date_creation = date('Y-m-d H:i:s');
         $dossierDAO->insert($casier);
         echo "Casier du classeur {$result->id} créé avec succès !\n";
     }
     echo "\n\nFin de la tâche";
     return _arNone();
 }
 /**
  * Retourne l'adresse du favori
  *
  * @return string Adresse du favori
  */
 public function getLienFavori()
 {
     $toReturn = null;
     if ($this->estUnFavori()) {
         $toReturn = classeurService::getUrlOfFavorite($this);
     }
     return $toReturn;
 }
 /**
  * Crée un classeur
  *
  * @param array  $infos (option) Infos sur le module. [title], [subtitle], [node_type], [node_id]
  *
  * @return ID du classeur ou NULL si erreur
  */
 public function create($infos = array())
 {
     $return = null;
     _classInclude('classeur|classeurservice');
     $classeurDAO = _dao('classeur|classeur');
     $classeur = _record('classeur|classeur');
     $classeur->titre = $infos['title'] ? $infos['title'] : CopixI18N::get('classeur|classeur.moduleDescription');
     $classeur->cle = ClasseurService::createKey();
     $classeur->date_creation = date('Y-m-d H:i:s');
     $classeurDAO->insert($classeur);
     // Si l'insertion en base du classeur s'est bien passée, création du dossier physique
     if (!is_null($classeur->id)) {
         $path2data = realpath('./static/classeur');
         $folder = $path2data . '/' . $classeur->id . '-' . $classeur->cle;
         if ($mkdir = mkdir($folder, 0777)) {
             chmod($folder, 0777);
             // Création d'un casier s'il s'agit d'un classeur de classe
             if ('BU_CLASSE' == $infos['node_type']) {
                 $dossierDAO = _ioDAO('classeur|classeurdossier');
                 $casier = _record('classeur|classeurdossier');
                 $casier->classeur_id = $classeur->id;
                 $casier->parent_id = 0;
                 $casier->nom = CopixI18N::get('classeur|classeur.casierNom');
                 $casier->nb_dossiers = 0;
                 $casier->nb_fichiers = 0;
                 $casier->taille = 0;
                 $casier->cle = classeurService::createKey();
                 $casier->casier = 1;
                 $casier->date_creation = date('Y-m-d H:i:s');
                 $dossierDAO->insert($casier);
             }
             $return = $classeur->id;
         }
         if (!$return) {
             $classeurDAO->delete($classeur->id);
         }
     }
     return $return;
 }
 /**
  * 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'));
 }
 public function getFilesInFolder_sort($doc1, $doc2)
 {
     $sort = 0;
     $sort_config = classeurService::getContentSort();
     //     [colonne] => titre
     //     [direction] => ASC
     switch ($sort_config['colonne']) {
         case 'date':
             if ($doc1->date_upload < $doc2->date_upload) {
                 $sort = -1;
             }
             if ($doc1->date_upload > $doc2->date_upload) {
                 $sort = 1;
             }
             break;
         case 'taille':
             if ($doc1->taille < $doc2->taille) {
                 $sort = -1;
             }
             if ($doc1->taille > $doc2->taille) {
                 $sort = 1;
             }
             break;
         case 'type':
             if ($doc1->type < $doc2->type) {
                 $sort = -1;
             }
             if ($doc1->type > $doc2->type) {
                 $sort = 1;
             }
             break;
         case 'titre':
         default:
             if ($doc1->titre < $doc2->titre) {
                 $sort = -1;
             }
             if ($doc1->titre > $doc2->titre) {
                 $sort = 1;
             }
             break;
     }
     if ($sort_config['direction'] == 'DESC') {
         $sort = -$sort;
     }
     return $sort;
 }
 /**
  * Edition d'un travail - * Enseignant *
  */
 public function processEditerTravail()
 {
     $ppo = new CopixPPO();
     if (is_null($ppo->cahierId = _request('cahierId', null))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('')));
     } elseif (Kernel::getLevel('MOD_CAHIERDETEXTES', $ppo->cahierId) < PROFILE_CCV_PUBLISH) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get('')));
     }
     // Récupération des paramètres
     $ppo->jour = _request('jour', date('d'));
     $ppo->mois = _request('mois', date('m'));
     $ppo->annee = _request('annee', date('Y'));
     $ppo->msgSuccess = _request('msgSuccess', false);
     $ppo->vue = _request('vue', null);
     $ppo->dateSelectionnee = mktime(0, 0, 0, $ppo->mois, $ppo->jour, $ppo->annee);
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $ppo->nodeInfos = array('type' => $cahierInfos[0]->module_type, 'id' => $cahierInfos[0]->module_id);
     $ppo->format = CopixConfig::get('cahierdetextes|format_par_defaut');
     $ppo->nombreMaxVueRadio = CopixConfig::get('cahierdetextes|nombre_max_vue_radio');
     // Récupération des domaines disponibles
     $ppo->idsDomaine = array();
     $ppo->nomsDomaine = array();
     $domaineDAO = _ioDAO('cahierdetextes|cahierdetextesdomaine');
     $domaines = $domaineDAO->findByClasse($cahierInfos[0]->node_id);
     if (count($domaines) > $ppo->nombreMaxVueRadio) {
         $ppo->idsDomaine[] = '';
         $ppo->nomsDomaine[] = '';
     }
     foreach ($domaines as $domaine) {
         $ppo->idsDomaine[] = $domaine->id;
         $ppo->nomsDomaine[] = $domaine->nom;
     }
     $fichierMalleDAO = _ioDAO('malle|malle_files');
     $fichierClasseurDAO = _ioDAO('classeur|classeurfichier');
     // Mode edition ?
     $travailDAO = _ioDAO('cahierdetextes|cahierdetextestravail');
     if (is_null($travailId = _request('travailId', null))) {
         $ppo->travail = _record('cahierdetextes|cahierdetextestravail');
         $ppo->travail->a_faire = _request('a_faire', 0);
         $ppo->travail->domaine_id = _request('domaineId', null);
         // Travail à faire
         //  - Par défaut : date de réalisation = date de création + 1
         //  - Vue liste : date de réalisation = date sélectionnée / date de création = date du jour
         if ($ppo->travail->a_faire) {
             $dateJour = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
             if ($ppo->vue == 'liste' && $ppo->dateSelectionnee > $dateJour) {
                 $ppo->travail->date_creation = date('d/m/Y');
                 $ppo->travail->date_realisation = date('d/m/Y', $ppo->dateSelectionnee);
             } else {
                 $jourSuivant = strtotime("+1 day", $ppo->dateSelectionnee);
                 $ppo->travail->date_realisation = date('d/m/Y', $jourSuivant);
             }
         }
     } else {
         $ppo->travail = $travailDAO->get($travailId);
         $ppo->travail->date_creation = CopixDateTime::yyyymmddToDate($ppo->travail->date_creation);
         $ppo->travail->date_realisation = CopixDateTime::yyyymmddToDate($ppo->travail->date_realisation);
         // Récupération des élèves
         $travail2eleveDAO = _ioDAO('cahierdetextes|cahierdetextestravail2eleve');
         $elevesSelectionnes = $travail2eleveDAO->findElevesParTravail($ppo->travail->id);
         $ppo->elevesSelectionnes = array();
         foreach ($elevesSelectionnes as $eleve) {
             $ppo->elevesSelectionnes[] = $eleve->idEleve;
         }
         // Récupération des fichiers
         $travail2fichiersDAO = _ioDAO('cahierdetextes|cahierdetextestravail2files');
         $travail2fichiers = $travail2fichiersDAO->retrieveByTravail($ppo->travail->id);
         $ppo->fichiers = array();
         $fichiers = array();
         foreach ($travail2fichiers as $travail2fichier) {
             if ($travail2fichier->module_file == 'MOD_MALLE') {
                 if ($fichier = $fichierMalleDAO->get($travail2fichier->file_id)) {
                     $ppo->fichiers[] = array('type' => $travail2fichier->module_file, 'id' => $travail2fichier->file_id, 'nom' => $fichier->nom);
                 }
             } elseif ($travail2fichier->module_file == 'MOD_CLASSEUR') {
                 if ($fichier = $fichierClasseurDAO->get($travail2fichier->file_id)) {
                     $ppo->fichiers[] = array('type' => $travail2fichier->module_file, 'id' => $travail2fichier->file_id, 'nom' => $fichier);
                 }
             }
         }
     }
     if (CopixRequest::isMethod('post')) {
         $ppo->travail->domaine_id = _request('travail_domaine_id', null);
         $ppo->travail->a_faire = _request('a_faire', 0);
         $ppo->travail->date_creation = CopixDateTime::dateToyyyymmdd(_request('travail_date_creation', null));
         $ppo->travail->date_realisation = CopixDateTime::dateToyyyymmdd(_request('travail_date_realisation', null));
         $ppo->travail->description = _request('travail_description', null);
         $ppo->travail->a_rendre = _request('travail_a_rendre', 0);
         $ppo->travail->supprime = 0;
         $ppo->elevesSelectionnes = _request('eleves', array());
         $ppo->fichiers = _request('travail_fichiers', array());
         $ppo->travail_redirection = _request('travail_redirection', null);
         // Traitement des erreurs
         $ppo->erreurs = array();
         if ($ppo->travail->date_creation == '') {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.noCreationDate');
         }
         if ($ppo->travail->a_faire && $ppo->travail->date_realisation == '') {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.noRealisationDate');
         }
         if (!is_null($ppo->travail->date_realisation) && $ppo->travail->date_realisation < $ppo->travail->date_creation) {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.wrongRealisationDate');
         }
         if ($ppo->travail->domaine_id == '') {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.noDomain');
         }
         if ($ppo->travail->description == '') {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.noDescription');
         }
         if (empty($ppo->elevesSelectionnes)) {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.noStudents');
         }
         if (!empty($ppo->fichiers)) {
             $ppo->fichiers = array_unique($ppo->fichiers);
             // Récupération de l'identifiant de la malle du node
             $mods = Kernel::getModEnabled($cahierInfos[0]->node_type, $cahierInfos[0]->node_id);
             if ($malle = Kernel::filterModuleList($mods, 'MOD_MALLE')) {
                 $malleId = $malle[0]->module_id;
             }
             // Récupération des identifiants de classeur
             $classeurIds = array();
             // Classeur du node
             $mods = Kernel::getModEnabled($cahierInfos[0]->node_type, $cahierInfos[0]->node_id);
             if ($classeur = Kernel::filterModuleList($mods, 'MOD_CLASSEUR')) {
                 $classeurIds[] = $classeur[0]->module_id;
             }
             // Classeur personnel
             $mods = Kernel::getModEnabled(_currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
             if ($classeur = Kernel::filterModuleList($mods, 'MOD_CLASSEUR')) {
                 $classeurIds[] = $classeur[0]->module_id;
             }
             // On détermine s'il s'agit de documents de la malle ou du classeur
             foreach ($ppo->fichiers as $fichierInfos) {
                 $fichierInfos = explode('-', $fichierInfos);
                 if ($fichierInfos[0] == 'MOD_MALLE') {
                     // Erreur : le fichier n'appartient pas à la malle du node
                     if (!$fichierMalleDAO->isFileOfMalle($fichierInfos[1], $malleId)) {
                         $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.invalidFile');
                         break;
                     } else {
                         $fichier = $fichierMalleDAO->get($fichierInfos[1]);
                         $fichiers[] = array('type' => $fichierInfos[0], 'id' => $fichierInfos[1], 'nom' => $fichier->nom);
                     }
                 } elseif ($fichierInfos[0] == 'MOD_CLASSEUR') {
                     $fichier = $fichierClasseurDAO->get($fichierInfos[1]);
                     // Erreur : le fichier n'appartient pas aux classeurs disponible à l'utilisateur
                     if (!in_array($fichier->classeur_id, $classeurIds)) {
                         $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.invalidFile');
                         break;
                     } else {
                         $fichiers[] = array('type' => $fichierInfos[0], 'id' => $fichierInfos[1], 'nom' => $fichier);
                     }
                 }
             }
         }
         if (!empty($ppo->erreurs)) {
             $ppo->travail->date_creation = _request('travail_date_creation', null);
             $ppo->travail->date_realisation = _request('travail_date_realisation', null);
             if (isset($fichiers)) {
                 $ppo->fichiers = $fichiers;
             }
             $modParentInfo = Kernel::getModParentInfo('MOD_CAHIERDETEXTES', $ppo->cahierId);
             $ppo->TITLE_PAGE = $modParentInfo['nom'];
             return _arPPO($ppo, 'editer_travail.tpl');
         }
         // Récupération de la liste des modules activés
         $mods = Kernel::getModEnabled($cahierInfos[0]->node_type, $cahierInfos[0]->node_id);
         // Création du classeur pour permettre aux élèves de rendre leur travail (si mod activé)
         if ($ppo->travail->a_rendre) {
             $dossierDAO = _ioDAO('classeur|classeurdossier');
             if (is_null($ppo->travail->dossier_id) || !$dossierDAO->get($ppo->travail->dossier_id)) {
                 $classeur = Kernel::filterModuleList($mods, 'MOD_CLASSEUR');
                 if ($classeur) {
                     // Récupération du casier de la classe
                     $casier = $dossierDAO->getCasier($classeur[0]->module_id);
                     if ($casier) {
                         _classInclude('classeur|classeurService');
                         $dossier = _record('classeur|classeurdossier');
                         $dossier->nb_dossiers = 0;
                         $dossier->nb_fichiers = 0;
                         $dossier->taille = 0;
                         $dossier->classeur_id = $classeur[0]->module_id;
                         $dossier->parent_id = $casier->id;
                         $dossier->cle = classeurService::createKey();
                         $dossier->date_creation = date('Y-m-d H:i:s');
                         $dossier->user_type = _currentUser()->getExtra('type');
                         $dossier->user_id = _currentUser()->getExtra('id');
                         $dossier->casier = 1;
                         // Le nom du casier pour un travail à rendre doit être unique
                         $dossier->nom = CopixDateTime::yyyymmddToDate($ppo->travail->date_realisation) . ' ' . $ppo->nomsDomaine[array_search($ppo->travail->domaine_id, $ppo->idsDomaine)];
                         $cpt = '';
                         $nomDossier = $dossier->nom;
                         while (count($dossierDAO->getByNom($dossier->nom)) > 0) {
                             if ($cpt == '') {
                                 $cpt = 2;
                             } else {
                                 $cpt++;
                             }
                             $dossier->nom = $nomDossier . ' ' . $cpt;
                         }
                         $dossierDAO->insert($dossier);
                         $ppo->travail->dossier_id = $dossier->id;
                     }
                 }
             }
         }
         // Création
         if ($ppo->travail->id == '') {
             // Insertion de l'enregistrement "travail"
             $travailDAO->insert($ppo->travail);
         } else {
             // Mise à jour de l'enregistrement "travail"
             $travailDAO->update($ppo->travail);
             // Suppression des relations travail - eleves existantes
             $travail2eleveDAO = _ioDAO('cahierdetextes|cahierdetextestravail2eleve');
             $travail2eleveDAO->deleteByTravail($ppo->travail->id);
             // Suppression des relations travail - fichiers existants
             $travail2fichierDAO = _ioDAO('cahierdetextes|cahierdetextestravail2files');
             $travail2fichierDAO->deleteByTravail($ppo->travail->id);
         }
         // Insertion des liens "travail > eleve"
         $travail2eleveDAO = _ioDAO('cahierdetextes|cahierdetextestravail2eleve');
         foreach ($ppo->elevesSelectionnes as $eleveId) {
             $travail2eleve = _record('cahierdetextes|cahierdetextestravail2eleve');
             $travail2eleve->travail_id = $ppo->travail->id;
             $travail2eleve->eleve_id = $eleveId;
             $travail2eleveDAO->insert($travail2eleve);
         }
         // Insertion des liens "travail > fichiers"
         $travail2fichierDAO = _ioDAO('cahierdetextes|cahierdetextestravail2files');
         if (!empty($fichiers)) {
             foreach ($fichiers as $fichier) {
                 $travail2fichier = _record('cahierdetextes|cahierdetextestravail2files');
                 $travail2fichier->travail_id = $ppo->travail->id;
                 $travail2fichier->module_file = $fichier['type'];
                 $travail2fichier->file_id = $fichier['id'];
                 $travail2fichierDAO->insert($travail2fichier);
             }
         }
         // Insertion de l'événement dans l'agenda (si mod activé)
         $agenda = Kernel::filterModuleList($mods, 'MOD_AGENDA');
         if ($agenda) {
             $agendaWorkDAO = _ioDAO('agenda|work');
             if (!$agendaWorkDAO->get($ppo->travail->id, $agenda[0]->module_id)) {
                 $agenda2work = _record('agenda|work');
                 $agenda2work->travail_id = $ppo->travail->id;
                 $agenda2work->agenda_id = $agenda[0]->module_id;
                 $agendaWorkDAO->insert($agenda2work);
             }
         }
         $ppo->msgSuccess = CopixI18N::get('cahierdetextes|cahierdetextes.message.success');
         // Redirection
         switch ($ppo->travail_redirection) {
             case 0:
                 switch ($ppo->vue) {
                     case "jour":
                         return _arRedirect(CopixUrl::get('cahierdetextes||voirTravaux', array('cahierId' => $ppo->cahierId, 'msgSuccess' => $ppo->msgSuccess)));
                         break;
                     case "liste":
                         return _arRedirect(CopixUrl::get('cahierdetextes||voirListeTravaux', array('cahierId' => $ppo->cahierId, 'msgSuccess' => $ppo->msgSuccess)));
                         break;
                     case "domaine":
                         return _arRedirect(CopixUrl::get('cahierdetextes||voirTravauxParDomaine', array('cahierId' => $ppo->cahierId, 'msgSuccess' => $ppo->msgSuccess)));
                         break;
                     default:
                         return _arRedirect(CopixUrl::get('cahierdetextes||voirTravaux', array('cahierId' => $ppo->cahierId, 'msgSuccess' => $ppo->msgSuccess)));
                         break;
                 }
                 break;
             case 1:
                 return _arRedirect(CopixUrl::get('cahierdetextes||editerTravail', array('cahierId' => $ppo->cahierId, 'msgSuccess' => $ppo->msgSuccess, 'vue' => $ppo->vue)));
                 break;
             case 2:
                 return _arRedirect(CopixUrl::get('cahierdetextes||editerTravail', array('cahierId' => $ppo->cahierId, 'msgSuccess' => $ppo->msgSuccess, 'vue' => $ppo->vue, 'a_faire' => 1)));
                 break;
             default:
                 return _arRedirect(CopixUrl::get('cahierdetextes||voirTravaux', array('cahierId' => $ppo->cahierId, 'msgSuccess' => $ppo->msgSuccess, 'vue' => $ppo->vue)));
                 break;
         }
     }
     $modParentInfo = Kernel::getModParentInfo('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $ppo->TITLE_PAGE = $modParentInfo['nom'];
     return _arPPO($ppo, 'editer_travail.tpl');
 }
 /**
  * Affichage du classeur en popup pour intégration dans les autres modules
  */
 public function processGetClasseurPopup()
 {
     $classeurDAO = _ioDAO('classeur|classeur');
     if (is_null($ppo->classeur = $classeurDAO->get(_request('classeurId', null)))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('')));
     }
     $ppo->dossierId = _request('dossierId', 0);
     $ppo->field = _request('field', null);
     $ppo->format = _request('format', null);
     $ppo->withPersonal = _request('withPersonal', true);
     $ppo->moduleType = _request('moduleType', null);
     $ppo->moduleId = _request('moduleId', null);
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeur->id);
     _classInclude('classeur|classeurService');
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     $fichierDAO = _ioDAO('classeur|classeurfichier');
     // Récupération des dossiers & des fichiers / favoris
     $ppo->dossiers = $dossierDAO->getEnfantsDirects($ppo->classeur->id, $ppo->dossierId)->fetchAll();
     $ppo->fichiers = $fichierDAO->getParDossier($ppo->classeur->id, $ppo->dossierId)->fetchAll();
     foreach ($ppo->fichiers as $fichier) {
         $fichier->fullUrl = $fichier->getLienMiniature();
         $fichier->url = substr($fichier->getLienMiniature(), 0, strlen($fichier->getLienMiniature()) - strlen(strrchr($fichier->getLienMiniature(), '.')));
         $fichier->extension = $fichier->getExtension();
     }
     // Ouverture du dossier courant dans l'arborescence
     if ($ppo->dossierId != 0) {
         classeurService::openTree($ppo->classeur->id, $ppo->dossierId);
         $dossier = $dossierDAO->get($ppo->dossierId);
         if ($dossier->parent_id != 0) {
             $ppo->dossierParent = $dossierDAO->get($dossier->parent_id);
         } else {
             $ppo->classeurParent = $ppo->classeur;
         }
     }
     // Dossier temporaire pour l'upload des fichiers
     _classInclude('classeur|classeurService');
     $dossierTmp = classeurService::getTmpFolder();
     $ppo->dossierTmp = $dossierTmp . classeurService::createKey();
     CopixHTMLHeader::addJSLink(_resource('js/iconito/module_classeur.js'));
     return _arPPO($ppo, array('template' => 'classeur_popup.tpl', 'mainTemplate' => 'main|main_popup.php'));
 }