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'); }
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); }