public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->cahierId = $this->getParam('cahierId');
     $ppo->elevesSelectionnes = $this->getParam('elevesSelectionnes');
     if (is_null($ppo->elevesSelectionnes) || !is_array($ppo->elevesSelectionnes)) {
         $ppo->elevesSelectionnes = array();
     }
     $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $ppo->cahierId);
     // Récupération des élèves de la classe
     $eleveDAO = _ioDAO('kernel|kernel_bu_ele');
     $ppo->eleves = $eleveDAO->getStudentsByClass($cahierInfos[0]->node_id);
     // Récupération des niveaux de la classe
     $classeNiveauDAO = _ioDAO('kernel|kernel_bu_ecole_classe_niveau');
     $classLevelDAO = _ioDAO('kernel|kernel_bu_classe_niveau');
     $classeNiveaux = $classeNiveauDAO->getByClass($cahierInfos[0]->node_id);
     $ppo->nomsNiveau = array();
     $ppo->idsNiveau = array();
     foreach ($classeNiveaux as $classeNiveau) {
         $niveau = $classLevelDAO->get($classeNiveau->niveau);
         $ppo->nomsNiveau[] = $niveau->niveau_court;
         $ppo->idsNiveau[] = $niveau->id_n;
     }
     $toReturn = $this->_usePPO($ppo, '_liste_eleves.tpl');
 }
Пример #2
0
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->cahierId = $this->getParam('cahierId');
     $ppo->jour = $this->getParam('date_jour');
     $ppo->mois = $this->getParam('date_mois');
     $ppo->annee = $this->getParam('date_annee');
     $ppo->eleve = $this->getParam('eleve');
     $time = mktime(0, 0, 0, $ppo->mois, $ppo->jour, $ppo->annee);
     $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $nodeId = isset($cahierInfos[0]) ? $cahierInfos[0]->node_id : null;
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $estAdmin = $ppo->niveauUtilisateur >= PROFILE_CCV_PUBLISH ? true : false;
     // Récupération des mémos suivant les accès de l'utilisateur courant (élève / responsable / enseignant)
     $memoDAO = _ioDAO('cahierdetextes|cahierdetextesmemo');
     if ($estAdmin) {
         $ppo->memos = $memoDAO->findByClasse($nodeId, true);
     } elseif (Kernel::getLevel('MOD_CAHIERDETEXTES', $ppo->cahierId) == PROFILE_CCV_READ) {
         $ppo->memos = $memoDAO->findByEleve($ppo->eleve, true);
     } else {
         $ppo->memos = $memoDAO->findByEleve(_currentUser()->getExtra('id'), true);
     }
     $toReturn = $this->_usePPO($ppo, '_memos.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->cahierId = $this->getParam('cahierId');
     $ppo->jour = $this->getParam('date_jour');
     $ppo->mois = $this->getParam('date_mois');
     $ppo->annee = $this->getParam('date_annee');
     $ppo->vue = $this->getParam('vue');
     $ppo->eleve = $this->getParam('eleve');
     $time = mktime(0, 0, 0, $ppo->mois, $ppo->jour, $ppo->annee);
     $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $nodeId = isset($cahierInfos[0]) ? $cahierInfos[0]->node_id : null;
     $ppo->estAdmin = Kernel::getLevel('MOD_CAHIERDETEXTES', $ppo->cahierId) >= PROFILE_CCV_PUBLISH ? true : false;
     // Récupération des travaux suivant les accès de l'utilisateur courant (élève / responsable / enseignant)
     $travailDAO = _ioDAO('cahierdetextes|cahierdetextestravail');
     if ($ppo->estAdmin) {
         $ppo->travaux = $travailDAO->findByClasseEtTypeDeTravail($nodeId, DAOCahierDeTextesTravail::TYPE_EN_CLASSE, $time);
     } elseif (Kernel::getLevel('MOD_CAHIERDETEXTES', $ppo->cahierId) == PROFILE_CCV_READ) {
         $ppo->travaux = $travailDAO->findByEleveEtTypeDeTravail($ppo->eleve, DAOCahierDeTextesTravail::TYPE_EN_CLASSE, $time);
     } else {
         $ppo->travaux = $travailDAO->findByEleveEtTypeDeTravail(_currentUser()->getExtra('id'), DAOCahierDeTextesTravail::TYPE_EN_CLASSE, $time);
     }
     $toReturn = $this->_usePPO($ppo, '_travaux_en_classe.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->cahierId = $this->getParam('cahierId');
     $ppo->jour = $this->getParam('date_jour');
     $ppo->mois = $this->getParam('date_mois');
     $ppo->annee = $this->getParam('date_annee');
     $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $ppo->cahierId);
     // Récupération des domaines de la classe
     $domaineDAO = _ioDAO('cahierdetextes|cahierdetextesdomaine');
     $ppo->domaines = $domaineDAO->findByClasse($cahierInfos[0]->node_id);
     $toReturn = $this->_usePPO($ppo, '_liste_domaines.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->cahierId = $this->getParam('cahierId');
     $ppo->jour = $this->getParam('date_jour');
     $ppo->mois = $this->getParam('date_mois');
     $ppo->annee = $this->getParam('date_annee');
     $ppo->eleve = $this->getParam('eleve');
     $ppo->current = $this->getParam('current');
     $ppo->vue = $this->getParam('vue');
     $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $ppo->estAdmin = Kernel::getLevel('MOD_CAHIERDETEXTES', $ppo->cahierId) >= PROFILE_CCV_PUBLISH ? true : false;
     $toReturn = $this->_usePPO($ppo, '_affichage_menu.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $cahierId = $this->getParam('cahierId');
     $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $cahierId);
     // Récupération des logins des enseignants de la classe
     if (isset($cahierInfos[0]) && $cahierInfos[0]->node_type == 'BU_CLASSE') {
         $personnelDAO = _ioDAO('kernel|kernel_bu_personnel');
         $enseignants = $personnelDAO->findTeachersByClassroomId($cahierInfos[0]->node_id);
         $logins = array();
         foreach ($enseignants as $enseignant) {
             $logins[] = $enseignant->login_dbuser;
         }
     }
     $ppo->logins = implode(',', $logins);
     $toReturn = $this->_usePPO($ppo, '_lien_minimail.tpl');
 }
 public function _createContent(&$toReturn)
 {
     _classInclude('agenda|dateservices');
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->cahierId = $this->getParam('cahierId');
     $ppo->jour = $this->getParam('date_jour');
     $ppo->mois = $this->getParam('date_mois');
     $ppo->annee = $this->getParam('date_annee');
     $ppo->eleve = $this->getParam('eleve');
     $service = new DateService();
     $ppo->nomMois = $service->moisNumericToMoisLitteral($ppo->mois);
     // Timestamp du 1er du mois sélectionné
     $time = mktime(0, 0, 0, $ppo->mois, 1, $ppo->annee);
     // Récupération du timestamp du mois suivant & précédent
     $ppo->moisPrecedent = strtotime("-1 month", $time);
     $ppo->moisSuivant = strtotime("+1 month", $time);
     $ppo->nombreDeJoursDansLeMois = date('t', $time);
     // Nombre de jours dans le mois
     $ppo->codePremierJourDeLaSemaine = date('w', $time);
     // Premier jour de la semaine (format numérique)
     if ($ppo->codePremierJourDeLaSemaine == 0) {
         $ppo->codePremierJourDeLaSemaine = 7;
     }
     $ppo->codePremierJourSemaine = 1;
     // Récupération des travaux suivant les accès de l'utilisateur courant (élève / responsable / enseignant)
     $cahierInfos = Kernel::getModParent('MOD_CAHIERDETEXTES', $ppo->cahierId);
     $nodeId = isset($cahierInfos[0]) ? $cahierInfos[0]->node_id : null;
     $ppo->estAdmin = Kernel::getLevel('MOD_CAHIERDETEXTES', $ppo->cahierId) >= PROFILE_CCV_PUBLISH ? true : false;
     $travailDAO = _ioDAO('cahierdetextes|cahierdetextestravail');
     if ($ppo->estAdmin) {
         $ppo->travaux = $travailDAO->findByClasseEtMoisParJour($nodeId, $ppo->mois, $ppo->annee);
     } elseif (Kernel::getLevel('MOD_CAHIERDETEXTES', $ppo->cahierId) == PROFILE_CCV_READ) {
         $ppo->travaux = $travailDAO->findByEleveEtMoisParJour($ppo->eleve, $ppo->mois, $ppo->annee);
     } else {
         $ppo->travaux = $travailDAO->findByEleveEtMoisParJour(_currentUser()->getExtra('id'), $ppo->mois, $ppo->annee);
     }
     $toReturn = $this->_usePPO($ppo, '_calendrier.ptpl');
 }
 public function getModRight($mod_type, $mod_id, $user_type = "-1", $user_id = "-1")
 {
     // Kernel::deb ("getModRight( $mod_type, $mod_id, $user_type, $user_id )");
     $droit = 0;
     if ($mod_type == "MOD_MINIMAIL") {
         return _currentUSer()->isConnected() ? PROFILE_CCV_ADMIN : 0;
     }
     if ($user_type == "-1" && $user_id == "-1") {
         if (_currentUser()->getExtra('type') && _currentUser()->getExtra('id')) {
             $user_type = _currentUser()->getExtra('type');
             $user_id = _currentUser()->getExtra('id');
         } else {
             return 0;
         }
     }
     $mod_parents = Kernel::getModParent($mod_type, $mod_id);
     $user_parents = Kernel::getNodeParents($user_type, $user_id);
     // Rustine CB 23/01/2009 pour les droits des directeurs dans les teleprocedures
     if ($mod_type == 'MOD_TELEPROCEDURES' && $user_type == 'USER_ENS') {
         //print_r($mod_parents);
         //print_r($user_parents);
         $villeMod = $mod_parents[0]->node_type == 'BU_VILLE' ? $mod_parents[0]->node_id : null;
         // S'il est bien directeur d'une ecole dans cette ville
         foreach ($user_parents as $parent) {
             if ($parent['type'] == 'BU_ECOLE' && $parent['droit'] >= PROFILE_CCV_ADMIN && $parent['ALL']->eco_id_ville == $villeMod) {
                 return PROFILE_CCV_READ;
             }
         }
     } elseif ($mod_type == 'MOD_TELEPROCEDURES' && $user_type == 'USER_ADM' && CopixConfig::exists('teleprocedures|USER_ADM_as_USER_ENS') && CopixConfig::get('teleprocedures|USER_ADM_as_USER_ENS')) {
         $villeMod = $mod_parents[0]->node_type == 'BU_VILLE' ? $mod_parents[0]->node_id : null;
         foreach ($user_parents as $parent) {
             if ($parent['type'] == 'BU_ECOLE' && $parent['droit'] >= 30 && $parent['ALL']->eco_id_ville == $villeMod) {
                 return PROFILE_CCV_READ;
             }
         }
     } elseif (isset($mod_parents[0]) && $mod_parents[0]->node_type == 'MOD_TELEPROCEDURES' && $user_type == 'USER_VIL') {
         return Kernel::getModRight($mod_parents[0]->node_type, $mod_parents[0]->node_id, $user_type, $user_id);
     }
     //print_r("getModRight( $mod_type, $mod_id, $user_type, $user_id)<br/>");
     //print_r($mod_parents);
     foreach ($mod_parents as $mod_key => $mod_val) {
         // Check user -> admin
         if ($mod_val->node_type == $user_type && $mod_val->node_id == $user_id) {
             $droit = PROFILE_CCV_ADMIN;
         }
         // Rustine CB 25/08/2010 Si c'est un droit d'un module du groupe d'assistance
         if (CopixConfig::exists('kernel|groupeAssistance') && ($groupeAssistance = CopixConfig::get('kernel|groupeAssistance')) && $mod_val->node_type == 'CLUB' && $mod_val->node_id == $groupeAssistance) {
             //print_r();
             switch ($mod_type) {
                 case 'MOD_FORUM':
                     // Forum : on peut ecrire
                     $droit = PROFILE_CCV_MEMBER;
                     break;
                 case 'MOD_MALLE':
                     // Malle : on peut lire
                 // Malle : on peut lire
                 case 'MOD_BLOG':
                     // Blog : on peut lire
                     $droit = PROFILE_CCV_READ;
                     break;
             }
         }
         // Check parents nodes -> right (DB)
         reset($user_parents);
         //foreach( $user_parents AS $user_key=>$user_val ) {
         while ($user_val = array_pop($user_parents)) {
             // Rustine 1 : les gens rattachÈs ‡ une classe ont le mÍme droit dans l'Ècole de la classe
             if ($user_val["type"] == "BU_CLASSE") {
                 $ecoles = Kernel::getNodeParents($user_val["type"], $user_val["id"]);
                 foreach ($ecoles as $ecole_key => $ecole_val) {
                     $ecoles[$ecole_key]["droit"] = PROFILE_CCV_READ;
                     $user_parents[] = $ecoles[$ecole_key];
                 }
             }
             // Rustine 2 : les parents ont des droits de lecture sur les classes de leur enfants
             if ($user_val["type"] == "USER_ELE" && $user_type == "USER_RES") {
                 $nodes_all = Kernel::getNodeParents($user_val["type"], $user_val["id"]);
                 //print_r($nodes_all);
                 foreach ($nodes_all as $node) {
                     if ($node['type'] != 'BU_CLASSE') {
                         continue;
                     }
                     $node['droit'] = PROFILE_CCV_READ;
                     $user_parents[] = $node;
                     //print_r($node);
                     /*
                     $child['classe'] = $node['nom'];
                     $modules = Kernel::getModEnabled(
                     $node['type'], $node['id'],
                     $child["type"],   $child["id"]   );
                     */
                     //print_r($modules);
                 }
             }
             if ($mod_val->node_type == $user_val["type"] && $mod_val->node_id == $user_val["id"]) {
                 $droit = max($droit, $user_val["droit"]);
             }
             //$droit = min();
         }
     }
     $dao = _dao("kernel|kernel_link_user2node");
     $res = $dao->getByUser($user_type, $user_id);
     foreach ($res as $key => $val) {
         // Utilisateurs --(n)--> Modules
         // if( ereg( "^MOD_(.+)$", $val->node_type ) ) {
         if ($val->node_type == $mod_type && $val->node_id == $mod_id) {
             $ok = true;
             if ($val->debut && $val->debut > date("Ymd")) {
                 $ok = false;
             }
             if ($val->fin && $val->fin < date("Ymd")) {
                 $ok = false;
             }
             $droit_module = $ok ? $val->droit : 0;
             $droit = max($droit, $droit_module);
         }
     }
     // die( "USER="******"/".$user_id."<br />"."MOD=".$mod_type."/".$mod_id."<br />".$droit."<pre>".print_r( $mod_parents, true )."</pre><hr /><pre>".print_r( $user_parents, true )."</pre>" );
     return $droit;
 }
 public function processDefault()
 {
     ini_set('max_execution_time', 0);
     $classeurservice =& CopixClassesFactory::Create('classeur|classeurservice');
     /* DEBUG
        if (!Admin::canAdmin())
            return CopixActionGroup::process ('genericTools|Messages::getError', array ('message'=>CopixI18N::get ('kernel|kernel.error.noRights'), 'back'=>CopixUrl::get ()));
        */
     $tpl = new CopixTpl();
     // $tpl->assign ('TITLE_PAGE', CopixI18N::get ('sysutils|admin.menu.cache'));
     // $tpl->assign ('MENU', Admin::getMenu('cache'));
     ///////////////
     //// ALBUM ////
     ///////////////
     $sql = "\n            SELECT\n                A.id AS album_id, A.nom AS album_nom, A.prefs AS album_prefs, A.date AS album_date, A.cle AS album_cle, A.public AS album_public\n            FROM module_album_albums A\n            ORDER BY A.id\n        ";
     $album_list = _doQuery($sql);
     $album_tree = array();
     foreach ($album_list as $album_item) {
         if (!isset($album_tree[$album_item->album_id])) {
             $album_tree[$album_item->album_id] = new CopixPPO();
             $album_tree[$album_item->album_id]->info = $album_item;
             $parent = Kernel::getModParent("MOD_ALBUM", $album_item->album_id);
             if (!$parent) {
                 unset($album_tree[$album_item->album_id]);
                 continue;
             }
             $album_tree[$album_item->album_id]->parent = $parent[0];
             $album_tree[$album_item->album_id]->dossier = array();
             $album_tree[$album_item->album_id]->photo = array();
         }
         $root = $this->albumScanFolder($album_item->album_id, 0);
         $album_tree[$album_item->album_id]->dossier = $root->dossier;
         $album_tree[$album_item->album_id]->photo = $root->photo;
     }
     // module_malle_malles : id 	titre 	date_creation 	cle
     // module_malle_folders : id malle parent nom nb_folders nb_files taille date_creation
     // module_malle_files : id 	malle 	folder 	nom 	fichier 	taille 	type 	cle 	date_upload
     ///////////////
     //// MALLE ////
     ///////////////
     $sql = "\n            SELECT\n                id, titre, date_creation, cle\n            FROM module_malle_malles\n            ORDER BY id\n        ";
     $malle_list = _doQuery($sql);
     $malle_tree = array();
     foreach ($malle_list as $malle_item) {
         if (!isset($malle_tree[$malle_item->id])) {
             $malle_tree[$malle_item->id] = new CopixPPO();
             $malle_tree[$malle_item->id]->info = $malle_item;
             $parent = Kernel::getModParent("MOD_MALLE", $malle_item->id);
             if (!$parent) {
                 unset($malle_tree[$malle_item->id]);
                 continue;
             }
             $malle_tree[$malle_item->id]->parent = $parent[0];
             $user_parents = Kernel::getNodeParents($parent[0]->node_type, $parent[0]->node_id);
             $malle_tree[$malle_item->id]->user_parents = $user_parents;
             $malle_tree[$malle_item->id]->dossier = array();
             $malle_tree[$malle_item->id]->docs = array();
         }
         $root = $this->malleScanFolder($malle_item->id, 0);
         $malle_tree[$malle_item->id]->dossier = $root->dossier;
         $malle_tree[$malle_item->id]->docs = $root->docs;
     }
     /////////////////////////////////////
     /////////////////////////////////////
     // kernel_mod_enabled : node_type 	node_id 	module_type 	module_id
     // module_classeur : id 	titre 	cle 	date_creation 	date_publication 	public
     // module_classeur_dossier : id 	module_classeur_id 	parent_id 	nom 	nb_dossiers 	nb_fichiers 	taille 	cle 	date_creation 	user_type 	user_id 	date_publication 	public
     // module_classeur_fichier : id 	module_classeur_id 	module_classeur_dossier_id 	titre 	commentaire 	fichier 	taille 	type 	cle 	date_upload 	user_type 	user_id
     // IMPORT ALBUMS
     if (1) {
         foreach ($album_tree as $album_item) {
             if (!isset($album_item->parent->node_type)) {
                 continue;
             }
             //// RECHERCHE D'UN CLASSEUR EXISTANT
             $sql = "\n                SELECT module_id\n                FROM kernel_mod_enabled\n                WHERE node_type=:node_type AND node_id=:node_id AND module_type=:module_type\n            ";
             $param = array('node_type' => $album_item->parent->node_type, 'node_id' => $album_item->parent->node_id, 'module_type' => 'MOD_CLASSEUR');
             $mod_classeur = _doQuery($sql, $param);
             if (!isset($mod_classeur[0])) {
                 $node_infos = $this->getNodeInfos($album_item->parent->node_type, $album_item->parent->node_id);
                 $file =& CopixSelectorFactory::create("classeur|classeur");
                 $filePath = $file->getPath() . COPIX_CLASSES_DIR . "kernel" . strtolower($file->fileName) . '.class.php';
                 $modservice =& CopixClassesFactory::Create('classeur|kernelclasseur');
                 if (method_exists($modservice, "create")) {
                     $modid = $modservice->create(array('title' => $node_infos->nom, 'subtitle' => '', 'node_type' => $album_item->parent->node_type, 'node_id' => $album_item->parent->node_id));
                     if ($modid != null) {
                         Kernel::registerModule('MOD_CLASSEUR', $modid, $album_item->parent->node_type, $album_item->parent->node_id);
                     }
                 }
                 $classeur_id = $modid;
             } else {
                 $classeur_id = $mod_classeur[0]->module_id;
             }
             $classeurDAO = _ioDAO('classeur|classeur');
             $classeur = $classeurDAO->get($classeur_id);
             $new_dir = realpath('./static/classeur') . '/' . $classeur->id . '-' . $classeur->cle . '/';
             if (!file_exists($new_dir)) {
                 mkdir($new_dir, 0755, true);
             }
             //// CREATION D'UN DOSSIER D'IMPORT
             $dossierDAO = _ioDAO('classeur|classeurdossier');
             $dossier = _record('classeur|classeurdossier');
             $dossier->classeur_id = $classeur_id;
             $dossier->parent_id = 0;
             $dossier->nom = "Import Album " . $album_item->info->album_id;
             $dossier->cle = $album_item->info->album_cle;
             $dossier->date_creation = $album_item->info->album_date;
             $dossier->user_type = "";
             $dossier->user_id = "";
             $dossier->nb_dossiers = 0;
             $dossier->nb_fichiers = 0;
             $dossier->taille = 0;
             $dossier->casier = 0;
             $dossierDAO->insert($dossier);
             // $dossier->id
             $this->albumImport($album_item, $dossier);
             $classeurservice->updateFolderInfosWithDescendants($dossier);
         }
     }
     // IMPORT MALLES
     if (1) {
         foreach ($malle_tree as $malle_item) {
             if (!isset($malle_item->parent->node_type)) {
                 continue;
             }
             //// RECHERCHE D'UN CLASSEUR EXISTANT
             $sql = "\n                SELECT module_id\n                FROM kernel_mod_enabled\n                WHERE node_type=:node_type AND node_id=:node_id AND module_type=:module_type\n            ";
             $param = array('node_type' => $malle_item->parent->node_type, 'node_id' => $malle_item->parent->node_id, 'module_type' => 'MOD_CLASSEUR');
             $mod_classeur = _doQuery($sql, $param);
             if (!isset($mod_classeur[0])) {
                 $node_infos = $this->getNodeInfos($malle_item->parent->node_type, $malle_item->parent->node_id);
                 $file =& CopixSelectorFactory::create("classeur|classeur");
                 $filePath = $file->getPath() . COPIX_CLASSES_DIR . "kernel" . strtolower($file->fileName) . '.class.php';
                 $modservice =& CopixClassesFactory::Create('classeur|kernelclasseur');
                 if (method_exists($modservice, "create")) {
                     $modid = $modservice->create(array('title' => $node_infos->nom, 'subtitle' => '', 'node_type' => $malle_item->parent->node_type, 'node_id' => $malle_item->parent->node_id));
                     if ($modid != null) {
                         Kernel::registerModule('MOD_CLASSEUR', $modid, $malle_item->parent->node_type, $malle_item->parent->node_id);
                     }
                 }
                 $classeur_id = $modid;
             } else {
                 $classeur_id = $mod_classeur[0]->module_id;
             }
             $classeurDAO = _ioDAO('classeur|classeur');
             $classeur = $classeurDAO->get($classeur_id);
             $new_dir = realpath('./static/classeur') . '/' . $classeur->id . '-' . $classeur->cle . '/';
             if (!file_exists($new_dir)) {
                 mkdir($new_dir, 0755, true);
             }
             //// CREATION D'UN DOSSIER D'IMPORT
             $dossierDAO = _ioDAO('classeur|classeurdossier');
             $dossier = _record('classeur|classeurdossier');
             $dossier->classeur_id = $classeur_id;
             $dossier->parent_id = 0;
             $dossier->nom = "Import documents " . $malle_item->info->id;
             $dossier->cle = $malle_item->info->cle;
             $dossier->date_creation = $malle_item->info->date_creation;
             $dossier->user_type = "";
             $dossier->user_id = "";
             $dossier->nb_dossiers = 0;
             $dossier->nb_fichiers = 0;
             $dossier->taille = 0;
             $dossierDAO->insert($dossier);
             // $dossier->id
             $this->malleImport($malle_item, $dossier);
             $classeurservice->updateFolderInfosWithDescendants($dossier);
         }
     }
     $sql = "\n            UPDATE kernel_mod_available\n            SET node = CONCAT(node, '_OFF')\n            WHERE module = 'MOD_MALLE' OR module = 'MOD_ALBUM'";
     _doQuery($sql);
     $sql = "\n            UPDATE kernel_mod_enabled\n            SET node_type = CONCAT(node_type, '_OFF')\n            WHERE module_type = 'MOD_MALLE' OR module_type = 'MOD_ALBUM' AND node_type != 'MOD_TELEPROCEDURES'";
     _doQuery($sql);
     echo "<h1>Fin</h1>";
     echo "<pre>";
     print_r($album_tree);
     print_r($malle_tree);
     die;
 }
 /**
  * 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');
 }
 /**
  * Publication automatique par mail
  *
  * @author Frederic Mossmann <*****@*****.**>
  * @since 2006/07/28
  */
 public function doMailPublish()
 {
     if (_request("key")) {
         if (ereg("^([0-9]{8}-[0-9]{6})-([a-zA-Z0-9]+)-([a-fA-F0-9]{32})\$", _request("key"), $regs)) {
             $key = _request("key");
             $login = $regs[2];
             $dao = CopixDAOFactory::create("magicmail|magicmail");
             $mymagicmail = $dao->getByLogin($login);
             $error = false;
             if (sizeof($mymagicmail)) {
                 $nodes = Kernel::getModParent("MOD_MAGICMAIL", $mymagicmail[0]->magicmail_id);
                 if (sizeof($nodes)) {
                     $node_type = $nodes[0]->node_type;
                     $node_id = $nodes[0]->node_id;
                 } else {
                     $error = true;
                 }
             } else {
                 $error = true;
             }
             if (!$error) {
                 $file = @fopen(CopixConfig::get('magicmail|magicmail_url') . 'data/' . $key . '/' . 'info.txt', 'r');
                 if ($file) {
                     $reply = '';
                     while (!feof($file)) {
                         $reply .= fgets($file, 4096);
                     }
                     // while (!feof($file))
                     fclose($file);
                     // <-- DEBUT TRAITEMENT -->
                     //////////////////////////
                     $blog_service =& CopixClassesFactory::Create('blog|kernelblog');
                     $album_classes =& CopixClassesFactory::Create('album|album');
                     $album_service =& CopixClassesFactory::Create('album|kernelalbum');
                     $classeur_service =& CopixClassesFactory::Create('classeur|kernelclasseur');
                     /*
                     $groupe_service = & CopixClassesFactory::Create ('groupe|groupeservice');
                     $blog = $groupe_service->getGroupeBlog( $grp );
                     $album = $groupe_service->getGroupeAlbum( $grp );
                     */
                     $blog = null;
                     $album = null;
                     $mods = Kernel::getModEnabled($node_type, $node_id);
                     foreach ($mods as $mod) {
                         switch ($mod->module_type) {
                             case 'MOD_CLASSEUR':
                                 $classeur = $mod->module_id;
                                 break;
                             case 'MOD_ALBUM':
                                 $album = $mod->module_id;
                                 break;
                             case 'MOD_BLOG':
                                 $blog = $mod->module_id;
                                 break;
                         }
                     }
                     /*
                     if( $blog == null ) {
                         echo "-ERR No Blog\n";
                         return new CopixActionReturn (COPIX_AR_NONE, 0);
                     }
                     if( $album == null ) {
                         echo "-ERR No Album\n";
                         return new CopixActionReturn (COPIX_AR_NONE, 0);
                     }
                     */
                     // echo "<br \>Blog: ".$blog." - Album: ".$album."<br \>\n";
                     //////////////////////////
                     $blog_article = array();
                     $album_photos = array();
                     $audio_files = array();
                     while (ereg("^(SUBJECT|IMAGE|AUDIO|VIDEO-FLV|BODY) ?([^\n]+)\n(.*)\$", $reply, $regs)) {
                         // echo "<li>".$regs[0]."<br/>\n<li>".$regs[1]."<br/>\n<li>".$regs[2]."<br/>\n<li>".$regs[3];
                         switch ($regs[1]) {
                             case 'SUBJECT':
                                 $blog_article['title'] = $regs[2];
                                 break;
                             case 'IMAGE':
                                 if (ereg("^([0-9a-fA-F]+) ([0-9]+) (.*)\$", $regs[2], $image_data)) {
                                     $photo_file = fopen(CopixConfig::get('magicmail|magicmail_url') . 'data/' . $key . '/' . $image_data[1], 'r');
                                     $photo_data = '';
                                     if ($file) {
                                         while (!feof($photo_file)) {
                                             $photo_data .= fgets($photo_file, 4096);
                                         }
                                         // while (!feof($file))
                                         fclose($photo_file);
                                     }
                                     $album_photos[] = array('file' => $image_data[3], 'title' => $image_data[3], 'data' => $photo_data);
                                 }
                                 break;
                             case 'AUDIO':
                                 if (ereg("^([0-9a-fA-F]+) ([0-9]+) (.*)\$", $regs[2], $audio_data)) {
                                     $audio_files[] = array('file' => CopixConfig::get('magicmail|magicmail_url') . 'data/' . $key . '/' . $audio_data[1], 'title' => $audio_data[3]);
                                 }
                                 break;
                             case 'VIDEO-FLV':
                                 if (ereg("^([0-9a-fA-F]+) ([0-9]+) (.*)\$", $regs[2], $video_flv_data)) {
                                     $video_flv_files[] = array('file' => CopixConfig::get('magicmail|magicmail_url') . 'data/' . $key . '/' . $video_flv_data[1], 'title' => $video_flv_data[3]);
                                 }
                                 break;
                             case 'BODY':
                                 $blog_article['body'] = $regs[3];
                                 break;
                         }
                         $reply = $regs[3];
                     }
                     //////////////////////////
                     $images = array();
                     if ($classeur != null) {
                         if ($album_photos) {
                             foreach ($album_photos as $album_photo) {
                                 $album_photo_retour = $classeur_service->publish($classeur, $album_photo);
                                 $images[] = $album_photo_retour;
                             }
                         }
                     } else {
                         if ($album != null) {
                             if ($album_photos) {
                                 foreach ($album_photos as $album_photo) {
                                     $album_photo_retour = $album_service->publish($album, $album_photo);
                                     $images[] = $album_photo_retour;
                                 }
                             }
                         }
                     }
                     if ($blog != null) {
                         if (!$blog_article['title'] || trim($blog_article['title']) == '') {
                             $date = date('d/m/Y \\� H\\hi');
                             $blog_article['title'] = 'Article du ' . $date;
                         }
                         if (isset($audio_files)) {
                             foreach ($audio_files as $audio_file) {
                                 $blog_article['body'] .= "\n" . '[[' . $audio_file['file'] . "|mp3]]\n";
                             }
                         }
                         if (isset($video_flv_files)) {
                             foreach ($video_flv_files as $video_flv_file) {
                                 $blog_article['body'] .= "\n" . '[[' . $video_flv_file['file'] . ".flv|flv]]\n";
                             }
                         }
                         if (isset($images)) {
                             foreach ($images as $image) {
                                 // TODO
                                 if ($classeur != null) {
                                     $blog_article['body'] .= "\n" . '[((' . CopixUrl::get() . 'static/classeur/' . $image['album_id'] . '-' . $image['album_key'] . '/' . $image['photo_id'] . '-' . $image['photo_key'] . '_240.' . $image['photo_ext'] . '|' . $image['title'] . '|))|' . CopixUrl::get() . 'static/classeur/' . $image['album_id'] . '-' . $image['album_key'] . '/' . $image['photo_id'] . '-' . $image['photo_key'] . '.' . $image['photo_ext'] . ']' . "\n";
                                 } else {
                                     $blog_article['body'] .= "\n" . '[((' . CopixUrl::get() . 'static/album/' . $image['album_id'] . '_' . $image['album_key'] . '/' . $image['photo_id'] . '_' . $image['photo_key'] . '_240.' . $image['photo_ext'] . '|' . $image['title'] . '|))|' . CopixUrl::get() . 'static/album/' . $image['album_id'] . '_' . $image['album_key'] . '/' . $image['photo_id'] . '_' . $image['photo_key'] . '.' . $image['photo_ext'] . ']' . "\n";
                                 }
                             }
                         }
                         $blog_retour = $blog_service->publish($blog, $blog_article);
                         print_r($blog_retour);
                     }
                     // <-- FIN TRAITEMENT -->
                     echo "+OK\n";
                     // print_r( $images );
                     // echo htmlentities($reply);
                 } else {
                     echo "-ERR No info (file not found)\n";
                 }
             } else {
                 echo "-ERR Bad key\n";
             }
         } else {
             echo "-ERR Bad key (ereg not match)\n";
         }
     } else {
         echo "-ERR Bad key (not set)\n";
     }
     return new CopixActionReturn(COPIX_AR_NONE, 0);
 }