/**
  * Edition d'un mémo - * Enseignant *
  */
 public function processEditerMemo()
 {
     $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->dateSelectionnee = mktime(0, 0, 0, $ppo->mois, $ppo->jour, $ppo->annee);
     $ppo->format = CopixConfig::get('cahierdetextes|format_par_defaut');
     $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $ppo->nodeInfos = array('type' => $cahierInfos[0]->module_type, 'id' => $cahierInfos[0]->module_id);
     if (is_null($memoId = _request('memoId', null))) {
         $ppo->memo = _record('cahierdetextes|cahierdetextesmemo');
     } else {
         $memoDAO = _ioDAO('cahierdetextes|cahierdetextesmemo');
         $ppo->memo = $memoDAO->get($memoId);
         $ppo->memo->date_creation = CopixDateTime::yyyymmddToDate($ppo->memo->date_creation);
         $ppo->memo->date_validite = CopixDateTime::yyyymmddToDate($ppo->memo->date_validite);
         $ppo->memo->date_max_signature = CopixDateTime::yyyymmddToDate($ppo->memo->date_max_signature);
         // Récupération des élèves liés au mémo
         $memo2eleveDAO = _ioDAO('cahierdetextes|cahierdetextesmemo2eleve');
         $ppo->elevesSelectionnes = $memo2eleveDAO->findElevesParMemo($ppo->memo->id);
         // Récupération des fichiers liés au mémo
         $fichierMalleDAO = _ioDAO('malle|malle_files');
         $fichierClasseurDAO = _ioDAO('classeur|classeurfichier');
         $memo2fichiersDAO = _ioDAO('cahierdetextes|cahierdetextesmemo2files');
         $memo2fichiers = $memo2fichiersDAO->retrieveByMemo($ppo->memo->id);
         $ppo->fichiers = array();
         $fichiers = array();
         foreach ($memo2fichiers as $memo2fichier) {
             if ($memo2fichier->module_file == 'MOD_MALLE') {
                 if ($fichier = $fichierMalleDAO->get($memo2fichier->file_id)) {
                     $ppo->fichiers[] = array('type' => $memo2fichier->module_file, 'id' => $memo2fichier->file_id, 'nom' => $fichier->nom);
                 }
             } elseif ($memo2fichier->module_file == 'MOD_CLASSEUR') {
                 if ($fichier = $fichierClasseurDAO->get($memo2fichier->file_id)) {
                     $ppo->fichiers[] = array('type' => $memo2fichier->module_file, 'id' => $memo2fichier->file_id, 'nom' => $fichier);
                 }
             }
         }
     }
     if (CopixRequest::isMethod('post')) {
         $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $ppo->cahierId);
         $ppo->memo->classe_id = $cahierInfos[0]->node_id;
         $ppo->memo->date_creation = CopixDateTime::dateToyyyymmdd(_request('memo_date_creation', null));
         $ppo->memo->date_validite = CopixDateTime::dateToyyyymmdd(_request('memo_date_validite', null));
         $ppo->memo->message = _request('memo_message', null);
         $ppo->memo->avec_signature = _request('memo_avec_signature', 0);
         $ppo->memo->date_max_signature = CopixDateTime::dateToyyyymmdd(_request('memo_date_max_signature', null));
         $ppo->memo->supprime = 0;
         $ppo->elevesSelectionnes = _request('eleves', array());
         $ppo->fichiers = _request('memo_fichiers', array());
         // Traitement des erreurs
         $ppo->erreurs = array();
         if ($ppo->memo->date_creation == '') {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.noCreationDate');
         }
         if ($ppo->memo->date_validite == '') {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.noValidityDate');
         }
         if (!is_null($ppo->memo->date_validite) && $ppo->memo->date_validite < $ppo->memo->date_creation) {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.wrongValidityDate');
         }
         if ($ppo->memo->message == '') {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.noContent');
         }
         if ($ppo->memo->avec_signature && $ppo->memo->date_max_signature == '') {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.noSignatureDate');
         }
         if (!is_null($ppo->memo->date_max_signature) && !is_null($ppo->memo->date_validite) && ($ppo->memo->date_max_signature > $ppo->memo->date_validite || $ppo->memo->date_max_signature < $ppo->memo->date_creation)) {
             $ppo->erreurs[] = CopixI18N::get('cahierdetextes|cahierdetextes.error.wrongMaxSignatureDate');
         }
         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->memo->date_creation = _request('memo_date_creation', null);
             $ppo->memo->date_validite = _request('memo_date_validite', null);
             $ppo->memo->date_max_signature = _request('memo_date_max_signature', null);
             if (isset($fichiers)) {
                 $ppo->fichiers = $fichiers;
             }
             $modParentInfo = Kernel::getModParentInfo('MOD_CAHIERDETEXTES', $ppo->cahierId);
             $ppo->TITLE_PAGE = $modParentInfo['nom'];
             return _arPPO($ppo, 'editer_memo.tpl');
         }
         $memoDAO = _ioDAO('cahierdetextes|cahierdetextesmemo');
         $memo2eleveDAO = _ioDAO('cahierdetextes|cahierdetextesmemo2eleve');
         $memo2fichierDAO = _ioDAO('cahierdetextes|cahierdetextesmemo2files');
         // Création
         if ($ppo->memo->id == '') {
             // Insertion de l'enregistrement "memo"
             $memoDAO->insert($ppo->memo);
         } else {
             // Mise à jour de l'enregistrement "memo"
             $memoDAO->update($ppo->memo);
             // Suppression des relations memo - eleves existantes
             $memo2eleveDAO->deleteByMemo($ppo->memo->id);
             // Suppression des relations memo - fichiers existantes
             $memo2fichierDAO->deleteByMemo($ppo->memo->id);
         }
         // Insertion des nouveaux liens memo > eleve
         foreach ($ppo->elevesSelectionnes as $eleveId) {
             $memo2eleve = _record('cahierdetextes|cahierdetextesmemo2eleve');
             $memo2eleve->memo_id = $ppo->memo->id;
             $memo2eleve->eleve_id = $eleveId;
             $memo2eleveDAO->insert($memo2eleve);
         }
         // Insertion des liens "mémo > fichiers"
         if (!empty($fichiers)) {
             foreach ($fichiers as $fichier) {
                 $memo2fichier = _record('cahierdetextes|cahierdetextesmemo2files');
                 $memo2fichier->memo_id = $ppo->memo->id;
                 $memo2fichier->module_file = $fichier['type'];
                 $memo2fichier->file_id = $fichier['id'];
                 $memo2fichierDAO->insert($memo2fichier);
             }
         }
         return _arRedirect(CopixUrl::get('cahierdetextes||voirMemos', array('cahierId' => $ppo->cahierId, 'msgSuccess' => CopixI18N::get('cahierdetextes|cahierdetextes.message.success'))));
     }
     $modParentInfo = Kernel::getModParentInfo('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $ppo->TITLE_PAGE = $modParentInfo['nom'];
     return _arPPO($ppo, 'editer_memo.tpl');
 }
 /**
  * Ré-génération des mots de passe d'une classe
  */
 public function processResetClassroomPasswords()
 {
     $ppo = new CopixPPO();
     $ppo->nodeId = _request('nodeId', null);
     // Récupération des paramètres
     if (is_null($ppo->nodeId)) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => "Une erreur est survenue.", 'back' => CopixUrl::get('gestionautonome||showTree')));
     }
     $classroomDAO = _ioDAO('kernel|kernel_bu_ecole_classe');
     if (!($classroom = $classroomDAO->get($ppo->nodeId))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => "Une erreur est survenue.", 'back' => CopixUrl::get('gestionautonome||showTree')));
     }
     // Contrôle des droits
     $ppo->hasCredentialTeacherUpdate = _currentUser()->testCredential('module:classroom|' . $ppo->nodeId . '|teacher|update@gestionautonome');
     $ppo->hasCredentialStudentUpdate = _currentUser()->testCredential('module:classroom|' . $ppo->nodeId . '|student|update@gestionautonome');
     $ppo->hasCredentialPersonInChargeUpdate = _currentUser()->testCredential('module:classroom|' . $ppo->nodeId . '|person_in_charge|update@gestionautonome');
     if (!$ppo->hasCredentialPersonInChargeUpdate && !$ppo->hasCredentialStudentUpdate && !$ppo->hasCredentialPersonInChargeUpdate) {
         throw new CopixCredentialException();
     }
     // Infos du noeud
     $nodeInfos = Kernel::getNodeInfo('BU_CLASSE', $ppo->nodeId);
     // Compteur max
     $counters = array();
     // Récupération des enseignants de la classe
     $ppo->teachers = array();
     if ($ppo->hasCredentialTeacherUpdate) {
         $personnelDAO = _ioDAO('kernel|kernel_bu_personnel');
         $ppo->teachers = $personnelDAO->findTeachersByClassroomId($ppo->nodeId);
         $counters[] = count($ppo->teachers);
     }
     // Récupération des élèves de la classe
     $ppo->students = array();
     if ($ppo->hasCredentialStudentUpdate) {
         $studentDAO = _ioDAO('kernel|kernel_bu_ele');
         $ppo->students = $studentDAO->getStudentsByClass($ppo->nodeId);
         $counters[] = count($ppo->students);
     }
     // Récupération des parents de la classe
     $ppo->personsInCharge = array();
     if ($ppo->hasCredentialPersonInChargeUpdate) {
         $responsableDAO = _ioDAO('kernel|kernel_bu_res');
         $ppo->personsInCharge = $responsableDAO->getParentsInClasse($ppo->nodeId);
         $counters[] = count($ppo->personsInCharge);
     }
     // Compteur MAX
     $ppo->counter = max($counters);
     // Breadcrumbs & titre
     $breadcrumbs = Kernel::generateBreadcrumbs($nodeInfos);
     $breadcrumbs[] = array('txt' => 'Re-génération des mots de passe');
     $ppo->breadcrumbs = Kernel::PetitPoucet($breadcrumbs, ' &raquo; ');
     $ppo->TITLE_PAGE = CopixConfig::get('gestionautonome|moduleTitle');
     // Get vocabulary catalog to use
     $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog');
     $ppo->vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($ppo->nodeType, $ppo->nodeId);
     // Traitement du formulaire
     if (CopixRequest::isMethod('post')) {
         $studentsIds = _request('students', array());
         $teachersIds = _request('teachers', array());
         $personsInChargeIds = _request('personsInCharge', array());
         $dbuserDAO = _ioDAO('kernel|kernel_copixuser');
         // Mise en session globale des mots de passe
         $passwordsList = _sessionGet('modules|gestionautonome|passwordsList');
         if (!is_array($passwordsList)) {
             $passwordsList = array();
         }
         $ppo->accounts = array();
         foreach ($ppo->students as $student) {
             if (in_array($student->idEleve, $studentsIds)) {
                 if ($account = $dbuserDAO->getUserByBuIdAndBuType($student->idEleve, 'USER_ELE')) {
                     $password = Kernel::createPasswd();
                     $account->password_dbuser = md5($password);
                     $dbuserDAO->update($account);
                     // Mise en session de l'élève pour l'export des infos
                     $studentAr = array('lastname' => $student->nom, 'firstname' => $student->prenom1, 'login' => $account->login_dbuser, 'password' => $password, 'bu_type' => 'USER_ELE', 'bu_id' => $student->idEleve, 'type_nom' => Kernel::Code2Name('USER_ELE'), 'node_nom' => Kernel::Code2Name('BU_CLASSE') . ' ' . $nodeInfos['nom'], 'gender' => $student->id_sexe);
                     $passwordsList['USER_ELE'][$student->idEleve] = $studentAr;
                     $ppo->accounts[] = $studentAr;
                 }
             }
         }
         foreach ($ppo->personsInCharge as $personInCharge) {
             if (in_array($personInCharge->id, $personsInChargeIds)) {
                 if ($account = $dbuserDAO->getUserByBuIdAndBuType($personInCharge->id, 'USER_RES')) {
                     $password = Kernel::createPasswd();
                     $account->password_dbuser = md5($password);
                     $dbuserDAO->update($account);
                     // Mise en session de la personne responsable pour l'export des infos
                     $personAr = array('lastname' => $personInCharge->nom, 'firstname' => $personInCharge->prenom, 'login' => $account->login_dbuser, 'password' => $password, 'bu_type' => 'USER_RES', 'bu_id' => $personInCharge->id, 'type_nom' => Kernel::Code2Name('USER_RES'), 'node_nom' => Kernel::Code2Name('BU_CLASSE') . ' ' . $nodeInfos['nom'], 'gender' => $personInCharge->sexe);
                     $passwordsList['USER_RES'][$personInCharge->id] = $personAr;
                     $ppo->accounts[] = $personAr;
                 }
             }
         }
         foreach ($ppo->teachers as $teacher) {
             if (in_array($teacher->numero, $teachersIds)) {
                 if ($account = $dbuserDAO->getUserByBuIdAndBuType($teacher->numero, 'USER_ENS')) {
                     $password = Kernel::createPasswd();
                     $account->password_dbuser = md5($password);
                     $dbuserDAO->update($account);
                     // Mise en session de l'enseignant pour l'export des infos
                     $teacherAr = array('lastname' => $teacher->nom, 'firstname' => $teacher->prenom1, 'login' => $account->login_dbuser, 'password' => $password, 'bu_type' => 'USER_ENS', 'bu_id' => $teacher->numero, 'type_nom' => Kernel::Code2Name('USER_ENS'), 'node_nom' => Kernel::Code2Name('BU_CLASSE') . ' ' . $nodeInfos['nom'], 'gender' => $personInCharge->id_sexe);
                     $passwordsList['USER_ENS'][$teacher->numero] = $teacherAr;
                     $ppo->accounts[] = $teacherAr;
                 }
             }
         }
         if (!empty($ppo->accounts)) {
             _sessionSet('modules|gestionautonome|createAccount', $ppo->accounts);
             _sessionSet('modules|gestionautonome|passwordsList', $passwordsList);
             return _arRedirect(CopixUrl::get('gestionautonome||showNewClassroomPasswords', array('nodeId' => $ppo->nodeId)));
         } else {
             $ppo->error = 1;
         }
     }
     return _arPPO($ppo, 'reset_classroom_passwords.tpl');
 }
 /**
  * ACTION DE MASSE - Copie d'un ou de plusieurs fichiers / dossiers
  */
 public function processCopierContenu()
 {
     $classeurDAO = _ioDAO('classeur|classeur');
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     $fichierDAO = _ioDAO('classeur|classeurfichier');
     if (is_null($ppo->classeur = $classeurDAO->get(_request('classeurId', null))) || is_null($ppo->dossier = $dossierDAO->get(_request('dossierId', null)))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('')));
     }
     $nomsContenus = array();
     // Récupération des identifiants de dossier à copier
     $dossierIds = _request('dossiers', array());
     if (!is_null($dossierIds)) {
         // Si copie d'un seul dossier, on vérifie s'il s'agit d'un casier et que l'utilisateur à la permission de le copier
         if (count($dossierIds) == 1) {
             $dossier = $dossierDAO->get($dossierIds[0]);
             // Seul l'enseignant peut copier un casier
             if ($dossier->casier && Kernel::getLevel('MOD_CLASSEUR', $ppo->classeur->id) < PROFILE_CCV_PUBLISH) {
                 return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('classeur|classeur.error.copyLocker'), 'back' => CopixUrl::get('classeur||voirContenu', array('classeurId' => $ppo->classeur->id))));
             } else {
                 $nomsContenus[] = $dossier->nom;
             }
         } else {
             $ppo->dossierIds = implode($dossierIds, ',');
             foreach ($dossierIds as $dossierId) {
                 $dossier = $dossierDAO->get($dossierId);
                 if (!$dossier->casier) {
                     $nomsContenus[] = $dossier->nom;
                 } else {
                     unset($ppo->dossiers[$dossierId]);
                 }
             }
         }
     }
     // Récupération des identifiants de fichier à déplacer
     $fichierIds = _request('fichiers', array());
     if (!is_null($fichierIds)) {
         if (is_array($fichierIds)) {
             $ppo->fichierIds = implode($fichierIds, ',');
         } else {
             $ppo->fichierIds = $fichierIds;
             $fichierIds = explode($ppo->fichierIds, ',');
         }
         foreach ($fichierIds as $fichierId) {
             $fichier = $fichierDAO->get($fichierId);
             if ($fichier) {
                 $nomsContenus[] = $fichier->fichier;
             }
         }
     }
     if (!empty($nomsContenus)) {
         $ppo->nomsContenus = implode($nomsContenus, ', ');
     } else {
         $ppo->nomsContenus = _request('fichiersSelectionnes', null);
     }
     if (CopixRequest::isMethod('post')) {
         _classInclude('classeur|classeurservice');
         $arFichierIds = !is_null(_request('fichiers', null)) ? explode(',', _request('fichiers')) : array();
         $arDossierIds = !is_null(_request('dossiers', null)) ? explode(',', _request('dossiers')) : array();
         if (!is_null($destination = _request('destination', null))) {
             list($destinationType, $destinationId) = explode('-', $destination);
             if ($destinationType == 'dossier') {
                 $dossierDestination = $dossierDAO->get($destinationId);
             }
         }
         // Traitement des erreurs
         $ppo->erreurs = array();
         if (!isset($destinationType) || !isset($destinationId) || is_null($destinationType) || is_null($destinationId)) {
             $ppo->erreurs[] = CopixI18N::get('classeur|classeur.error.noDestination');
         } elseif ($destinationType == 'dossier' && in_array($destinationId, $arDossierIds)) {
             $ppo->erreurs[] = CopixI18N::get('classeur|classeur.error.destinationUnauthorized');
         }
         if (empty($arFichierIds) && empty($arDossierIds)) {
             $ppo->erreurs[] = CopixI18N::get('classeur|classeur.error.noContentSelected');
         }
         if (!empty($ppo->erreurs)) {
             $modParentInfo = Kernel::getModParentInfo('MOD_CLASSEUR', $ppo->classeur->id);
             $ppo->TITLE_PAGE = $modParentInfo['nom'];
             return _arPPO($ppo, array('template' => 'copier_contenu.tpl'));
         }
         // Copie des dossiers
         if (!empty($arDossierIds)) {
             $dossiers = array();
             foreach ($arDossierIds as $arDossierId) {
                 $dossier = $dossierDAO->get($arDossierId);
                 if ($destinationType == 'dossier' && !classeurService::isDescendantOf($dossierDestination, $dossier) || $destinationType == 'classeur') {
                     // On ne copie que les dossiers pouvant l'être
                     if ($dossier = $dossierDAO->get($arDossierId) && !$dossier->casier) {
                         // En cas de copie, le copieur devient le propriétaire de la copie
                         $dossier->user_type = _currentUser()->getExtra('type');
                         $dossier->user_id = _currentUser()->getExtra('id');
                         classeurService::copyFolder($dossier, $destinationType, $destinationId);
                     }
                 }
             }
         }
         // Copie des fichiers
         if (!empty($arFichierIds)) {
             foreach ($arFichierIds as $arFichierId) {
                 $fichier = $fichierDAO->get($arFichierId);
                 // En cas de copie, le copieur devient le propriétaire de la copie
                 $fichier->user_type = _currentUser()->getExtra('type');
                 $fichier->user_id = _currentUser()->getExtra('id');
                 classeurService::copyFile($fichier, $destinationType, $destinationId);
             }
         }
         // Redirection
         $confirmMessage = CopixI18N::get('classeur|classeur.message.confirmCopy');
         if ($destinationType == 'dossier') {
             classeurService::updateFolderInfos($dossierDestination);
             return _arRedirect(CopixUrl::get('classeur||voirContenu', array('classeurId' => $dossierDestination->classeur_id, 'dossierId' => $destinationId, 'confirmMessage' => $confirmMessage)));
         } else {
             return _arRedirect(CopixUrl::get('classeur||voirContenu', array('classeurId' => $destinationId, 'confirmMessage' => $confirmMessage)));
         }
     }
     $modParentInfo = Kernel::getModParentInfo('MOD_CLASSEUR', $ppo->classeur->id);
     $ppo->TITLE_PAGE = $modParentInfo['nom'];
     return _arPPO($ppo, array('template' => 'copier_contenu.tpl'));
 }