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->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId');
     $ppo->current = $this->getParam('current');
     // Gestion des droits
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId);
     $ppo->typeUtilisateur = _currentUser()->getExtra('type');
     $ppo->vue = !is_null(_sessionGet('classeur|typeVue')) ? _sessionGet('classeur|typeVue') : 'liste';
     $ppo->conf_ModClasseur_options = CopixConfig::exists('default|conf_ModClasseur_options') ? CopixConfig::get('default|conf_ModClasseur_options') : 0;
     // L'album public est t-il publié ?
     $ppo->estPublic = false;
     if (!is_null($ppo->dossierId) && $ppo->dossierId != 0) {
         $dossierDAO = _ioDAO('classeur|classeurdossier');
         $ppo->dossier = $dossierDAO->get($ppo->dossierId);
         if ($ppo->dossier->public) {
             $ppo->estPublic = true;
         }
     } else {
         $classeurDAO = _ioDAO('classeur|classeur');
         $classeur = $classeurDAO->get($ppo->classeurId);
         if ($classeur->public) {
             $ppo->estPublic = true;
         }
     }
     $toReturn = $this->_usePPO($ppo, '_affichage_menu.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');
 }
 /**
  * Configuration de MagicMail
  *
  * @author Frederic Mossmann <*****@*****.**>
  * @since 2006/08/09
  */
 public function getMagicMail()
 {
     $id = _request("id");
     if (Kernel::getLevel("MOD_MAGICMAIL", $id) < PROFILE_CCV_ADMIN) {
         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('magicmail.message.title'));
     $dao = CopixDAOFactory::create("magicmail|magicmail");
     $magic_result = $dao->get($id);
     $tplForm = new CopixTpl();
     $tplForm->assign('id', $id);
     $tplForm->assign('infos', $magic_result);
     // $tplForm->assign ('magicmail_mail', CopixConfig::get ('magicmail|magicmail_mail'));
     if (_request("return")) {
         $tplForm->assign('return', _request("return"));
     }
     CopixHTMLHeader::addCSSLink(_resource("styles/module_prefs.css"));
     $tplForm->assign('msg', array('type' => 'ok', 'image_url' => _resource('img/prefs/smiley_black.png'), 'image_alt' => 'Ok !', 'value' => CopixI18N::get('prefs|prefs.msg.prefsrecorded')));
     $result = $tplForm->fetch("login_form.tpl");
     $tpl->assign("MAIN", $result);
     $menu = array();
     $tpl->assign('MENU', $menu);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 public function checkRight($type, $id, $mini)
 {
     switch ($type) {
         case 'ANNU':
             $annuaire_dao = CopixDAOFactory::create("ressource_annuaires");
             $annuaire = $annuaire_dao->get($id);
             if (!$annuaire) {
                 return false;
             }
             $id_annu = $id;
             break;
         case 'RES':
             $ressource_dao = CopixDAOFactory::create("ressource_ressources");
             $ressource = $ressource_dao->get($id);
             if (!$ressource) {
                 return false;
             }
             $id_annu = $ressource->ressources_id_annu;
             break;
         default:
             return false;
     }
     // Test : if( ! Ressource::checkRight( "RES", $id, PROFILE_CCV_SHOW ) )
     if (Kernel::getLevel("MOD_RESSOURCE", $id_annu) >= $mini) {
         return true;
     }
     return false;
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     _classInclude('classeur|ClasseurService');
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId');
     // Gestion des droits
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId);
     $ppo->typeUtilisateur = _currentUser()->getExtra('type');
     $ppo->idUtilisateur = _currentUser()->getExtra('id');
     // Récupération des paramètres d'affichages
     $ppo->tri = ClasseurService::getContentSort();
     // Récupération des dossiers & des fichiers / favoris
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     if ($ppo->dossier = $dossierDAO->get($ppo->dossierId)) {
         if ($ppo->dossier->parent_id != 0) {
             $ppo->dossierParent = $dossierDAO->get($ppo->dossier->parent_id);
         } else {
             $classeurDAO = _ioDAO('classeur|classeur');
             $ppo->classeurParent = $classeurDAO->get($ppo->classeurId);
             $ppo->classeurParent->isPersonnel = ClasseurService::getClasseurPersonnelId() == $ppo->classeurParent->id;
         }
     }
     if (!$ppo->dossier->casier || $ppo->niveauUtilisateur >= PROFILE_CCV_MODERATE) {
         $ppo->contenus = $dossierDAO->getContenus($ppo->classeurId, $ppo->dossierId, $ppo->tri);
         foreach ($ppo->contenus as $contenu) {
             if ($ppo->dossier->casier) {
                 $user = Kernel::getUserInfo($contenu->user_type, $contenu->user_id);
                 $contenu->user = $user['prenom'] . ' ' . $user['nom'];
             }
         }
     }
     $toReturn = $this->_usePPO($ppo, '_vue_liste.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId', null);
     $ppo->dossierCourant = $this->getParam('dossierCourant');
     // Paramètres pour la vue popup
     $ppo->field = $this->getParam('field');
     $ppo->format = $this->getParam('format');
     $ppo->withPersonal = $this->getParam('withPersonal', true);
     $ppo->moduleType = $this->getParam('moduleType', null);
     $ppo->moduleId = $this->getParam('moduleId', null);
     $ppo->estAdmin = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId) >= PROFILE_CCV_PUBLISH;
     $ppo->withLockers = $ppo->estAdmin || is_null($ppo->dossierId);
     // Récupération des dossiers
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     $ppo->dossiers = $dossierDAO->getEnfantsDirects($ppo->classeurId, $ppo->dossierId, $ppo->withLockers);
     _classInclude('classeurservice');
     $ppo->dossiersOuverts = ClasseurService::getFoldersTreeState();
     if (!is_array($ppo->dossiersOuverts)) {
         $ppo->dossiersOuverts = array();
     }
     $toReturn = $this->_usePPO($ppo, '_arborescence_dossiers.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierCourant = $this->getParam('dossierCourant');
     // Paramètres pour la vue popup
     $ppo->field = $this->getParam('field');
     $ppo->format = $this->getParam('format');
     $ppo->withPersonal = _sessionGet('user_animateur') ? false : $this->getParam('withPersonal', true);
     $ppo->moduleType = $this->getParam('moduleType', null);
     $ppo->moduleId = $this->getParam('moduleId', null);
     // Récupération des classeurs accessibles à l'utilisateur
     $classeurIds = array();
     // Récupération de ses ressources (obligatoire pour récupérer le classeur personnel)
     $nodes = Kernel::getMyNodes(_currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
     foreach ($nodes as $node) {
         $modules = Kernel::getModEnabled($node->type, $node->id, _currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
         foreach ($modules as $module) {
             if ($module->module_type == 'MOD_CLASSEUR' && Kernel::getLevel('MOD_CLASSEUR', $module->module_id) >= PROFILE_CCV_READ) {
                 // Le module correspond-il au classeur personnel
                 if ($ppo->withPersonal && strpos($module->node_type, 'USER_') !== false && ($module->node_type == _currentUser()->getExtra('type') && $module->node_id == _currentUser()->getExtra('id'))) {
                     $ppo->classeurPersonnel = $module->module_id;
                     $classeurIds[] = $module->module_id;
                 } elseif (null === $ppo->moduleType) {
                     $classeurIds[] = $module->module_id;
                 }
             }
         }
     }
     // Récupération des ressources
     if (null !== $ppo->moduleType) {
         $node = Kernel::getModParentInfo($ppo->moduleType, $ppo->moduleId);
         $modules = Kernel::getModEnabled($node['type'], $node['id'], _currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
         foreach ($modules as $module) {
             if ($module->module_type == 'MOD_CLASSEUR' && Kernel::getLevel('MOD_CLASSEUR', $module->module_id) >= PROFILE_CCV_READ) {
                 $classeurIds[] = $module->module_id;
             }
         }
     }
     // Dédoublonnage des classeurs (responsables avec plusieurs enfants)
     $classeurIds = array_unique($classeurIds);
     $ppo->classeurs = array();
     $classeurDAO = _dao("classeur|classeur");
     foreach ($classeurIds as $classeurId) {
         $classeur = $classeurDAO->get($classeurId);
         $classeur->titre = $classeur->realName();
         $ppo->classeurs[] = $classeur;
     }
     _classInclude('classeurservice');
     $ppo->classeursOuverts = ClasseurService::getClasseursTreeState();
     if (!is_array($ppo->classeursOuverts)) {
         $ppo->classeursOuverts = array();
     }
     $this->flash->addCycle();
     $toReturn = $this->_usePPO($ppo, '_arborescence_classeurs.tpl');
 }
 /**
  * fonction getUserInfos
  * param :
  * return : Le prénom et le nom de l'utilisateur connecté
  */
 public function getUserInfos($id_blog = NULL)
 {
     $user = new user();
     if ($id_blog) {
         if (!_sessionGet('cache|right|MOD_BLOG|' . $id_blog)) {
             _sessionSet('cache|right|MOD_BLOG|' . $id_blog, Kernel::getLevel("MOD_BLOG", $id_blog));
         }
         $user->right = _sessionGet('cache|right|MOD_BLOG|' . $id_blog);
     }
     return $user;
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId');
     $ppo->idClasseurPersonnel = _sessionGet('classeur|idClasseurPersonnel');
     // Gestion des droits
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId);
     // Récupération du dossier courant
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     $ppo->dossier = $dossierDAO->get($ppo->dossierId);
     $toReturn = $this->_usePPO($ppo, '_actions_de_masse.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();
     _classInclude('classeur|ClasseurService');
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId');
     // Gestion des droits
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId);
     $ppo->typeUtilisateur = _currentUser()->getExtra('type');
     $ppo->idUtilisateur = _currentUser()->getExtra('id');
     // Récupération des paramètres d'affichages
     $ppo->tri = ClasseurService::getContentSort();
     // Récupération des dossiers & des fichiers / favoris
     $fichierDAO = _ioDAO('classeur|classeurfichier');
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     if ($ppo->dossier = $dossierDAO->get($ppo->dossierId)) {
         if ($ppo->dossier->parent_id != 0) {
             $ppo->dossierParent = $dossierDAO->get($ppo->dossier->parent_id);
         } else {
             $classeurDAO = _ioDAO('classeur|classeur');
             $ppo->classeurParent = $classeurDAO->get($ppo->classeurId);
             $ppo->classeurParent->isPersonnel = ClasseurService::getClasseurPersonnelId() == $ppo->classeurParent->id;
         }
     }
     if (!$ppo->dossier->casier || $ppo->niveauUtilisateur >= PROFILE_CCV_MODERATE) {
         $imgTypes = array('PNG', 'GIF', 'JPG', 'JPEG', 'png', 'gif', 'jpg', 'jpeg');
         $ppo->contenus = $dossierDAO->getContenus($ppo->classeurId, $ppo->dossierId, $ppo->tri);
         foreach ($ppo->contenus as $contenu) {
             if ($contenu->content_type == 'fichier' && in_array($contenu->type, $imgTypes)) {
                 $fichier = $fichierDAO->get($contenu->id);
                 $contenu->lienMiniature = $fichier->getLienMiniature(90);
             }
             if ($ppo->dossier->casier) {
                 $user = Kernel::getUserInfo($contenu->user_type, $contenu->user_id);
                 $contenu->user = $user['prenom'] . ' ' . $user['nom'];
             }
         }
         $ppo->fileExtensionAllowed = array('ai', 'avi', 'bmp', 'css', 'csv', 'doc', 'docx', 'eps', 'gif', 'html', 'ico', 'jpg', 'jpeg', 'js', 'json', 'mov', 'mp3', 'odp', 'ods', 'odt', 'pdf', 'png', 'ppt', 'pptx', 'psd', 'svg', 'swf', 'tiff', 'ttf', 'txt', 'wav', 'xls', 'xlsx', 'xml', 'zip');
     }
     $toReturn = $this->_usePPO($ppo, '_vue_vignette.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->targetType = $this->getParam('targetType');
     $ppo->targetId = $this->getParam('targetId');
     $ppo->withMainLocker = $this->getParam('withMainLocker', true);
     $ppo->withSubLockers = $this->getParam('withSubLockers', Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId) >= PROFILE_CCV_PUBLISH ? true : false);
     // Récupération des classeurs accessibles à l'utilisateur pour les actions de masse (copie / déplacement)
     $classeurIds = array();
     $nodes = Kernel::getMyNodes(_currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
     foreach ($nodes as $node) {
         $modules = Kernel::getModEnabled($node->type, $node->id, _currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
         foreach ($modules as $module) {
             if ($module->module_type == "MOD_CLASSEUR") {
                 // Identification du classeur personnel de l'utilisateur
                 if (strpos($module->node_type, 'USER_') !== false && ($module->node_type == _currentUser()->getExtra('type') && $module->node_id == _currentUser()->getExtra('id'))) {
                     $ppo->classeurPersonnel = $module->module_id;
                     $classeurIds[] = $module->module_id;
                 } elseif (strpos($module->node_type, 'USER_') == false && Kernel::getLevel('MOD_CLASSEUR', $module->module_id) >= PROFILE_CCV_MEMBER) {
                     $classeurIds[] = $module->module_id;
                 }
             }
         }
     }
     // Dédoublonnage des classeurs (responsables avec plusieurs enfants)
     $classeurIds = array_unique($classeurIds);
     $ppo->classeurs = array();
     $classeurDAO = _dao("classeur|classeur");
     foreach ($classeurIds as $classeurId) {
         $classeur = $classeurDAO->get($classeurId);
         $ppo->classeurs[] = $classeur;
     }
     _classInclude('classeurservice');
     $ppo->classeursOuverts = ClasseurService::getClasseursTreeState();
     if (!is_array($ppo->classeursOuverts)) {
         $ppo->classeursOuverts = array();
     }
     $toReturn = $this->_usePPO($ppo, '_selection_classeurs.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId');
     $ppo->targetType = $this->getParam('targetType');
     $ppo->targetId = $this->getParam('targetId');
     $ppo->alwaysOpen = $this->getParam('alwaysOpen');
     $ppo->withLocker = $this->getParam('withLocker', true);
     $ppo->estAdmin = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId) >= PROFILE_CCV_PUBLISH;
     $ppo->withLockers = $ppo->estAdmin || is_null($ppo->dossierId);
     // Récupération des dossiers
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     $ppo->dossiers = $dossierDAO->getEnfantsDirects($ppo->classeurId, $ppo->dossierId, $ppo->withLockers);
     _classInclude('classeurservice');
     $ppo->dossiersOuverts = ClasseurService::getFoldersTreeState();
     if (!is_array($ppo->dossiersOuverts)) {
         $ppo->dossiersOuverts = array();
     }
     $toReturn = $this->_usePPO($ppo, '_selection_dossiers.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');
 }
 /**
  * Formulaire de saisie/modif d'un type de teleprocedure
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2009/01/15
  * @param integer $save 1 si submit du formulaire
  */
 public function formtype()
 {
     $idtype = $this->getRequest('idtype');
     $teleprocedure = $this->getRequest('teleprocedure');
     $save = $this->getRequest('save');
     $daoType =& CopixDAOFactory::create('teleprocedures|type');
     $criticErrors = $errors = array();
     $tplForm = new CopixTpl();
     $tplForm->assign('is_online', array('values' => array(1, 0), 'output' => array(CopixI18N::get('blog|blog.oui'), CopixI18N::get('blog|blog.non'))));
     $formats = CopixConfig::get('teleprocedures|formats_types');
     $tabFormats = preg_split('/[\\s,]+/', $formats);
     $values = $output = array();
     foreach ($tabFormats as $k) {
         $values[] = $k;
         $output[] = CopixI18N::get('blog|blog.default_format_articles.' . $k);
     }
     $tplForm->assign('format', array('values' => $values, 'output' => $output));
     $tplForm->assign('linkpopup_responsables', CopixZone::process('annuaire|linkpopup', array('field' => 'responsables', 'profil' => 'USER_VIL')));
     $tplForm->assign('linkpopup_lecteurs', CopixZone::process('annuaire|linkpopup', array('field' => 'lecteurs', 'profil' => 'USER_VIL')));
     // Verifications
     if ($idtype) {
         if ($rType = $daoType->get($idtype)) {
             $mondroit = Kernel::getLevel("MOD_TELEPROCEDURES", $rType->teleprocedure);
             if (!TeleproceduresService::canMakeInTelep('ADMIN', $mondroit)) {
                 $criticErrors[] = CopixI18N::get('kernel|kernel.error.noRights');
             }
         } else {
             $criticErrors[] = CopixI18N::get('teleprocedures|teleprocedures.error.noParameter');
         }
     } elseif ($teleprocedure) {
         $mondroit = Kernel::getLevel("MOD_TELEPROCEDURES", $teleprocedure);
         if (!TeleproceduresService::canMakeInTelep('ADMIN', $mondroit)) {
             $criticErrors[] = CopixI18N::get('kernel|kernel.error.noRights');
         }
     } else {
         $criticErrors[] = CopixI18N::get('teleprocedures|teleprocedures.error.noParameter');
     }
     if ($criticErrors) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $criticErrors), 'back' => CopixUrl::get('teleprocedures||')));
     }
     // Traitement
     if ($idtype) {
         // Modif
         $title = CopixI18N::get('teleprocedures|teleprocedures.title.modifType');
         if ($save) {
             // Responsables
             $responsables = $this->getRequest('responsables');
             $responsables = str_replace(array(" "), "", $responsables);
             $responsables = str_replace(array(",", ";"), ",", $responsables);
             $responsables = preg_split('/[\\s,]+/', $responsables);
             $tabResponsables = array();
             $deja = array();
             // On vérifie que les membres existent
             while (list(, $login) = each($responsables)) {
                 if (!$login) {
                     continue;
                 }
                 $userInfo = Kernel::getUserInfo("LOGIN", $login);
                 if (!$userInfo) {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoUser', array($login));
                 } elseif ($userInfo['type'] != 'USER_VIL') {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoVille', array($login));
                 } else {
                     $tabResponsables[] = $userInfo;
                     $deja[] = $login;
                 }
             }
             //print_r($tabResponsables);
             // Lecteurs
             $lecteurs = $this->getRequest('lecteurs');
             $lecteurs = str_replace(array(" "), "", $lecteurs);
             $lecteurs = str_replace(array(",", ";"), ",", $lecteurs);
             $lecteurs = preg_split('/[\\s,]+/', $lecteurs);
             $tabLecteurs = array();
             // On vérifie que les membres existent
             while (list(, $login) = each($lecteurs)) {
                 if (!$login) {
                     continue;
                 }
                 $userInfo = Kernel::getUserInfo("LOGIN", $login);
                 if (!$userInfo) {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoUser', array($login));
                 } elseif ($userInfo['type'] != 'USER_VIL') {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoVille', array($login));
                 } elseif (in_array($login, $deja)) {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberDeja', array($login));
                 } else {
                     $tabLecteurs[] = $userInfo;
                 }
             }
             $type = $rType;
             $type->nom = $this->getRequest('nom');
             $type->is_online = $this->getRequest('is_online');
             $type->teleprocedure = $this->getRequest('teleprocedure');
             $type->format = $this->getRequest('format');
             $type->texte_defaut = $this->getRequest('texte_defaut');
             $type->responsables = $this->getRequest('responsables');
             $type->lecteurs = $this->getRequest('lecteurs');
             $type->mail_from = $this->getRequest('mail_from');
             $type->mail_to = $this->getRequest('mail_to');
             $type->mail_cc = $this->getRequest('mail_cc');
             $type->mail_message = $this->getRequest('mail_message');
             if ($type->mail_from && !validateEMail($type->mail_from)) {
                 $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.incorrectMail', $type->mail_from);
             }
             if ($type->mail_to) {
                 $list = preg_split('/[\\s,]+/', $type->mail_to);
                 foreach ($list as $email) {
                     if (!validateEMail($email)) {
                         $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.incorrectMail', $email);
                     }
                 }
             }
             if ($type->mail_cc) {
                 $list = preg_split('/[\\s,]+/', $type->mail_cc);
                 foreach ($list as $email) {
                     if (!validateEMail($email)) {
                         $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.incorrectMail', $email);
                     }
                 }
             }
             if ($type->mail_to && !$type->mail_from) {
                 $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.mail_from');
             }
             $errorsDao = _dao('teleprocedures|type')->check($type);
             //die();
             if (count($errors) || is_array($errorsDao)) {
                 // Erreurs
                 if (is_array($errorsDao)) {
                     $errors = array_merge($errorsDao, $errors);
                 }
             } else {
                 // Pas d'erreurs
                 $daoType->update($type);
                 TeleproceduresService::saveDroits("type", $idtype, 'responsables', $tabResponsables);
                 TeleproceduresService::saveDroits("type", $idtype, 'lecteurs', $tabLecteurs);
                 return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('admin|admin', array('id' => $type->teleprocedure)));
             }
         } else {
             $type = $rType;
         }
     } else {
         // Creation
         $title = CopixI18N::get('teleprocedures|teleprocedures.title.newType');
         $type = CopixDAOFactory::createRecord('teleprocedures|type');
         if ($save) {
             // Responsables
             $responsables = $this->getRequest('responsables');
             $responsables = str_replace(array(" "), "", $responsables);
             $responsables = str_replace(array(",", ";"), ",", $responsables);
             $responsables = preg_split('/[\\s,]+/', $responsables);
             $tabResponsables = array();
             while (list(, $login) = each($responsables)) {
                 if (!$login) {
                     continue;
                 }
                 $userInfo = Kernel::getUserInfo("LOGIN", $login);
                 if (!$userInfo) {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoUser', array($login));
                 } elseif ($userInfo['type'] != 'USER_VIL') {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoVille', array($login));
                 } else {
                     $tabResponsables[] = $userInfo;
                     $deja[] = $login;
                 }
             }
             // Lecteurs
             $lecteurs = $this->getRequest('lecteurs');
             $lecteurs = str_replace(array(" "), "", $lecteurs);
             $lecteurs = str_replace(array(",", ";"), ",", $lecteurs);
             $lecteurs = preg_split('/[\\s,]+/', $lecteurs);
             $tabLecteurs = array();
             // On vérifie que les membres existent
             while (list(, $login) = each($lecteurs)) {
                 if (!$login) {
                     continue;
                 }
                 $userInfo = Kernel::getUserInfo("LOGIN", $login);
                 if (!$userInfo) {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoUser', array($login));
                 } elseif ($userInfo['type'] != 'USER_VIL') {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoVille', array($login));
                 } elseif (in_array($login, $deja)) {
                     $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberDeja', array($login));
                 } else {
                     $tabLecteurs[] = $userInfo;
                 }
             }
             $type->nom = $this->getRequest('nom');
             $type->is_online = $this->getRequest('is_online');
             $type->teleprocedure = $this->getRequest('teleprocedure');
             $type->format = $this->getRequest('format');
             $type->texte_defaut = $this->getRequest('texte_defaut');
             $type->responsables = $this->getRequest('responsables');
             $type->lecteurs = $this->getRequest('lecteurs');
             $type->mail_from = $this->getRequest('mail_from');
             $type->mail_to = $this->getRequest('mail_to');
             $type->mail_cc = $this->getRequest('mail_cc');
             $type->mail_message = $this->getRequest('mail_message');
             $errorsDao = _dao('teleprocedures|type')->check($type);
             if (count($errors) || is_array($errorsDao)) {
                 // Erreurs
                 if (is_array($errorsDao)) {
                     $errors = array_merge($errorsDao, $errors);
                 }
             } else {
                 // Pas d'erreurs
                 $daoType->insert($type);
                 if ($type->idtype) {
                     TeleproceduresService::saveDroits("type", $type->idtype, 'responsables', $tabResponsables);
                     TeleproceduresService::saveDroits("type", $type->idtype, 'lecteurs', $tabLecteurs);
                 }
                 return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('admin|admin', array('id' => $type->teleprocedure)));
             }
         } else {
             $type->teleprocedure = $teleprocedure;
             $type->is_online = 1;
             $type->format = CopixConfig::get('teleprocedures|default_format');
         }
     }
     //print_r($type);
     $tplForm->assign('type', $type);
     $tplForm->assign('edition_texte_defaut', CopixZone::process('kernel|edition', array('field' => 'texte_defaut', 'format' => $type->format, 'content' => $type->texte_defaut, 'height' => 460)));
     $tplForm->assign('errors', $errors);
     $tplForm->assign('mailEnabled', CopixConfig::get('|mailEnabled'));
     $main = $tplForm->fetch('form-type.tpl');
     $tpl = new CopixTpl();
     $tpl->assign('TITLE_PAGE', $title);
     $tpl->assign("MAIN", $main);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * getModEnabled
  *
  * Retourne la liste des modules attachÈs ‡ un noeud, et en option, ceux dÈpendant du type d'utilisateur.
  *
  * @author FrÈdÈric Mossmann <*****@*****.**>
  * @param string  $node_type Type de noeud.
  * @param integer $node_id   Identifiant du noeud.
  * @param string  $user_type Type d'utilisateur (facultatif).
  * @param integer $user_id   Identifiant du noeud (facultatif).
  */
 public function getModEnabled($node_type, $node_id, $user_type = '', $user_id = 0, $full = 0, $notification = 0)
 {
     // echo "getModEnabled( $node_type, $node_id, $user_type, $user_id)";
     $carnetDeLiaison = CopixConfig::exists('kernel|carnetDeLiaison') && CopixConfig::get('kernel|carnetDeLiaison');
     $dao = _dao("kernel|kernel_mod_enabled");
     $modules = array();
     // Parent d'eleve...
     if (0 == strncmp($node_type, "USER_ELE", 8) && 0 == strncmp($user_type, "USER_RES", 8)) {
         $parents = Kernel::getNodeParents($node_type, $node_id);
         $parent = Kernel::filterNodeList($parents, 'BU_CLASSE');
         if (count($parent)) {
             if ($parent[0]['droit'] >= 30) {
                 $parent_modules = Kernel::getModEnabled($parent[0]['type'], $parent[0]['id'], $node_type, $node_id);
                 /*
                 echo '<li>$parent[0][] = '.$parent[0]['type']."/".$parent[0]['id']."</li>";
                 echo '<li>$node_* = '.$node_type."/".$node_id."</li>";
                 */
                 $perso = new stdClass();
                 foreach ($parent_modules as $parent_module) {
                     /*
                     $perso->node_type   = $parent[0]['type'];
                     $perso->node_id     = $parent[0]['id'];
                     */
                     $perso->node_type = $node_type;
                     $perso->node_id = $node_id;
                     $perso->module_type = $parent_module->module_type;
                     $perso->module_id = $parent_module->module_id;
                     $perso->module_nom = Kernel::Code2Name($parent_module->module_type);
                     $modules[] = clone $perso;
                 }
                 /*
                 $perso->node_type   = $parent[0]['type'];
                 $perso->node_id     = $parent[0]['id'];
                 */
                 $perso->node_type = $node_type;
                 $perso->node_id = $node_id;
                 $perso->module_type = 'MOD_CARNET';
                 $perso->module_id = 'ELEVE_' . $node_id;
                 $perso->module_nom = Kernel::Code2Name('MOD_CARNET');
                 if ($carnetDeLiaison) {
                     $modules[] = clone $perso;
                 }
             }
         }
         // _dump($modules);
         if ($notification) {
             Kernel::getModlistNotifications($modules);
         }
         reset($modules);
         return $modules;
     }
     $list = $dao->getByNode($node_type, $node_id);
     foreach ($list as $v) {
         if (!$full) {
             if ($v->module_type == 'MOD_MAGICMAIL') {
                 continue;
             }
         }
         $v->module_nom = Kernel::Code2Name($v->module_type);
         $modules[] = clone $v;
     }
     // _dump($modules);
     //print_r($modules);
     if ($user_type == "USER_ENS" && $node_type == "BU_CLASSE" && Kernel::getLevel($node_type, $node_id) >= 60) {
         $carnetcorresp = new CopixPPO();
         $carnetcorresp->node_type = $node_type;
         $carnetcorresp->node_id = $node_id;
         $carnetcorresp->module_type = 'MOD_CARNET';
         $carnetcorresp->module_id = 'CLASSE_' . $node_id;
         $carnetcorresp->module_nom = Kernel::Code2Name('MOD_CARNET');
         if ($carnetDeLiaison) {
             $modules[] = clone $carnetcorresp;
         }
     }
     //for KNE
     if (in_array($user_type, array('USER_ELE', 'USER_ENS', 'USER_DIR', 'USER_DID')) && $node_type == 'BU_CLASSE' && CopixClassesFactory::create('kne|kneService')->active) {
         $modKne = new stdClass();
         $modKne->node_type = $node_type;
         $modKne->node_id = $node_id;
         $modKne->module_type = 'MOD_KNE';
         $modKne->module_id = $node_id;
         $modKne->module_nom = kernel::Code2Name('MOD_KNE');
         $modules[] = $modKne;
     }
     //for Coreprim
     if (in_array($user_type, array('USER_ELE', 'USER_ENS', 'USER_DIR', 'USER_DID')) && $node_type == 'BU_CLASSE' && CopixConfig::exists('default|rssEtagereEnabled') && CopixConfig::get('default|rssEtagereEnabled')) {
         $modRssEtagere = new stdClass();
         $modRssEtagere->node_type = $node_type;
         $modRssEtagere->node_id = $node_id;
         $modRssEtagere->module_type = 'MOD_RSSETAGERE';
         $modRssEtagere->module_id = $node_type . "-" . $node_id;
         $modRssEtagere->module_nom = kernel::Code2Name('MOD_RSSETAGERE');
         $modules[] = $modRssEtagere;
     }
     if (CopixConfig::exists('|conf_ModTeleprocedures') && CopixConfig::get('|conf_ModTeleprocedures') == 0) {
         // Pas de module de tÈlÈprocÈdures...
     } else {
         if ($user_type == "USER_ENS" && $node_type == "BU_ECOLE" && Kernel::getLevel($node_type, $node_id) >= 60) {
             $teleprocedures = new CopixPPO();
             $teleprocedures->node_type = $node_type;
             $teleprocedures->node_id = $node_id;
             $teleprocedures->module_type = 'MOD_TELEPROCEDURES';
             $teleprocedures->module_id = 'ECOLE_' . $node_id;
             $teleprocedures->module_nom = Kernel::Code2Name('MOD_TELEPROCEDURES');
             $modules[] = clone $teleprocedures;
         } elseif (CopixConfig::exists('teleprocedures|USER_ADM_as_USER_ENS') && CopixConfig::get('teleprocedures|USER_ADM_as_USER_ENS') && $user_type == "USER_ADM" && $node_type == "BU_ECOLE" && Kernel::getLevel($node_type, $node_id) >= 30) {
             $teleprocedures = new CopixPPO();
             $teleprocedures->node_type = $node_type;
             $teleprocedures->node_id = $node_id;
             $teleprocedures->module_type = 'MOD_TELEPROCEDURES';
             $teleprocedures->module_id = 'ECOLE_' . $node_id;
             $teleprocedures->module_nom = Kernel::Code2Name('MOD_TELEPROCEDURES');
             $modules[] = clone $teleprocedures;
         }
     }
     // Cas particuliers : modules personnels sans numÈros
     if (0 == strncmp($node_type, "USER_", 5)) {
         $perso_list = array('MOD_ANNUAIRE', 'MOD_MINIMAIL', 'MOD_GROUPE', 'MOD_RESSOURCE');
         foreach ($perso_list as $perso_module) {
             $perso = new CopixPPO();
             $perso->node_type = $node_type;
             $perso->node_id = $node_id;
             $perso->module_id = NULL;
             $perso->module_type = $perso_module;
             $perso->module_nom = Kernel::Code2Name($perso_module);
             $modules[] = clone $perso;
             unset($perso);
         }
     }
     // Cas particulier : module d'administration
     if ($node_type == "ROOT" && Kernel::getLevel($node_type, $node_id) >= 60) {
         $sysutils = new CopixPPO();
         $sysutils->node_type = $node_type;
         $sysutils->node_id = $node_id;
         $sysutils->module_id = NULL;
         $sysutils->module_type = 'MOD_SYSUTILS';
         $sysutils->module_nom = Kernel::Code2Name('MOD_SYSUTILS');
         $modules[] = clone $sysutils;
         $charte = new CopixPPO();
         $charte->node_type = $node_type;
         $charte->node_id = $node_id;
         $charte->module_id = NULL;
         $charte->module_type = 'MOD_CHARTE';
         $charte->module_nom = Kernel::Code2Name('MOD_CHARTE');
         $modules[] = clone $charte;
     }
     // Cas ENS+VIL : SSO vers Gael si tout est configurÈ.
     $SsoGaelService =& CopixClassesFactory::Create('ssogael|ssogael');
     if (($user_type == "USER_ENS" && $node_type == "BU_ECOLE" || $user_type == "USER_VIL" && $node_type == "BU_VILLE") && method_exists($SsoGaelService, "canSsoGael") && $SsoGaelService->canSsoGael() && Kernel::getLevel($node_type, $node_id) >= 60) {
         $comptes = new stdClass();
         $comptes->node_type = $node_type;
         $comptes->node_id = $node_id;
         $comptes->module_type = 'MOD_SSOGAEL';
         $comptes->module_id = $node_type . '-' . $node_id;
         $comptes->module_nom = Kernel::Code2Name('MOD_SSO_GAEL');
         $comptes->module_popup = true;
         // Mode Popup !!!
         $modules[] = clone $comptes;
     }
     // Cas particulier : gestion des groupes de ville (AC/TICE)
     if ($node_type == "ROOT" && Kernel::getLevel($node_type, $node_id) >= 60) {
         $mod_grvilles = new stdClass();
         $mod_grvilles->node_type = $node_type;
         $mod_grvilles->node_id = $node_id;
         $mod_grvilles->module_type = 'MOD_REGROUPEMENTS';
         $mod_grvilles->module_id = $node_type . '-' . $node_id;
         $mod_grvilles->module_nom = Kernel::Code2Name('MOD_REGROUPEMENTS');
         $modules[] = clone $mod_grvilles;
     }
     // Cas particulier : Gestion autonome
     // if(    $user_type == "USER_EXT"
     //    && $node_type == "ROOT"
     //    && Kernel::getLevel( $node_type, $node_id ) >= 60 ) {
     if (CopixConfig::exists('kernel|gestionAutonomeEnabled') && CopixConfig::get('kernel|gestionAutonomeEnabled')) {
         if (($node_type == "ROOT" || $user_type == "USER_ENS" && $node_type == "BU_ECOLE" || $user_type == "USER_ENS" && $node_type == "BU_CLASSE" || $user_type == "USER_VIL" && $node_type == "BU_VILLE") && Kernel::getLevel($node_type, $node_id) >= 60) {
             $mod_grvilles = new CopixPPO();
             $mod_grvilles->node_type = $node_type;
             $mod_grvilles->node_id = $node_id;
             $mod_grvilles->module_type = 'MOD_GESTIONAUTONOME';
             $mod_grvilles->module_id = $node_type . '-' . $node_id;
             $mod_grvilles->module_nom = Kernel::Code2Name('MOD_GESTIONAUTONOME');
             $modules[] = clone $mod_grvilles;
         }
     } elseif (($node_type == "ROOT" || $user_type == "USER_ENS" && $node_type == "BU_ECOLE" || $user_type == "USER_ENS" && $node_type == "BU_CLASSE" || $user_type == "USER_VIL" && $node_type == "BU_VILLE") && Kernel::getLevel($node_type, $node_id) >= 60) {
         $comptes->node_type = $node_type;
         $comptes->node_id = $node_id;
         $comptes->module_type = 'MOD_COMPTES';
         $comptes->module_id = $node_type . '-' . $node_id;
         $comptes->module_nom = Kernel::Code2Name('MOD_COMPTES');
         $modules[] = clone $comptes;
     }
     if ($user_type == "USER_ENS" && ($node_type == "BU_ECOLE" && Kernel::getLevel($node_type, $node_id) >= 60 || $node_type == "BU_CLASSE") && CopixConfig::exists('default|conf_Ceriseprim_actif') && CopixConfig::get('default|conf_Ceriseprim_actif')) {
         $perso->node_type = $node_type;
         $perso->node_id = $node_id;
         $perso->module_type = 'MOD_CERISEPRIM';
         $perso->module_id = $node_type . "-" . $node_id;
         $perso->module_nom = Kernel::Code2Name('MOD_CERISEPRIM');
         $modules[] = clone $perso;
     }
     // _dump($modules);
     if ($notification) {
         Kernel::getModlistNotifications($modules);
     }
     reset($modules);
     return $modules;
 }
 public function processQuestion()
 {
     //get params
     $pId = CopixRequest::getInt('id', false);
     $pQId = CopixRequest::getInt('qId', false);
     if (empty($pId) || !$this->session->exists('questions')) {
         $this->error('quiz.errors.badOperation');
     }
     if ($pQId == false) {
         return CopixActionGroup::process('quiz|default::Quiz', array('id' => $this->session->load('quizId')));
     }
     //get question datas
     $questionDatas = $this->service('QuizService')->getQuestion($pQId);
     //check if question exists
     if (empty($questionDatas)) {
         $this->error('quiz.errors.noQuestions');
     }
     //check if question & quiz are same id_quiz
     if ($pId != $questionDatas['id_quiz']) {
         $this->error('quiz.errors.badOperation');
     }
     //get responses from users :
     $responsesDatas = $this->service('QuizService')->getResponses($pQId, $this->user->id);
     //check if user as already respond to the question
     $uResp = !empty($responsesDatas) ? true : false;
     //get choices for question
     $choicesDatas = $this->service('QuizService')->getChoices($pQId);
     //if no choices : error :
     $this->error('quiz.errors.noChoice');
     //data preparation
     $i = 0;
     $correct = 0;
     $choiceReturn = array();
     foreach ($choicesDatas as $choice) {
         $choiceReturn[$i]['ct'] = $choice['content'];
         $choiceReturn[$i]['id'] = $choice['id'];
         $choiceReturn[$i]['user'] = false;
         if ($choice['correct'] == 1) {
             $correct++;
         }
         foreach ($responsesDatas as $response) {
             if ((int) $response['id_choice'] == (int) $choice['id']) {
                 $choiceReturn[$i]['user'] = true;
             }
         }
         $i++;
     }
     //check the current pos in queue, and build array for nav
     $qQueue = $this->session->load('questions');
     foreach ($qQueue as $key => $qe) {
         $questionTpl[$key + 1] = $qe;
         //if queue id == current id
         if ($qe == $pQId) {
             $questionTpl[$key + 1] = 'current';
             $prev = isset($qQueue[$key - 1]) ? $qQueue[$key - 1] : false;
             $next = isset($qQueue[$key + 1]) ? $qQueue[$key + 1] : false;
         }
     }
     //put next answ in flash
     $this->flash->nextAnsw = $next;
     $this->flash->currentAnsw = $pQId;
     $this->flash->typeAnsw = $questionDatas['opt_type'];
     //build tpl
     CopixHTMLHeader::addCSSLink(_resource("styles/module_quiz.css"));
     CopixHTMLHeader::addCSSLink(_resource("styles/jquery.fancybox-1.3.4.css"));
     //        $this->js->button('.button');
     $ppo = new CopixPPO();
     $ppo->error = $this->flash->has('error') ? $this->flash->error : null;
     $ppo->userResp = $uResp;
     $ppo->choices = $choiceReturn;
     $ppo->prev = $prev;
     $ppo->nameAuthor = $this->session->load('authorName');
     $ppo->surname = $this->session->load('authorSurname');
     $ppo->questionTpl = $questionTpl;
     $ppo->question = $questionDatas;
     $ppo->type = $questionDatas['opt_type'] == 'choice' ? 'radio' : 'txt';
     $ppo->select = $correct > 1 ? 'checkbox' : 'radio';
     $ppo->help = qSession('help');
     $ppo->name = qSession('name');
     $ppo->next = $next;
     if (Kernel::getLevel('MOD_QUIZ', $pId) >= PROFILE_CCV_ADMIN) {
         $ppo->MENU[] = array('txt' => $this->i18n('quiz.admin.listActive'), 'type' => 'list-active', 'url' => $this->url('quiz|default|default', array('qaction' => 'list')));
         $ppo->MENU[] = array('txt' => $this->i18n('quiz.admin.listAll'), 'type' => 'list', 'url' => $this->url('quiz|admin|list'));
         $ppo->MENU[] = array('txt' => $this->i18n('quiz.admin.new'), 'type' => 'create', 'url' => $this->url('quiz|admin|modif', array('qaction' => 'new')));
     }
     $this->js->dialog('#qd-help', '#help-data');
     return _arPPO($ppo, 'question.tpl');
 }
 public function processDefault()
 {
     _classInclude('classeur|classeurService');
     $classeurDAO = _ioDAO('classeur|classeur');
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     $ppo->conf_ModClasseur_upload = CopixConfig::exists('default|conf_ModClasseur_upload') ? CopixConfig::get('default|conf_ModClasseur_upload') : 0;
     if (is_null($ppo->classeur = $classeurDAO->get(_request('classeurId', null)))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('', array('error' => 'classeur_not_found'))));
     }
     if (!realpath('./upload')) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('', array('error' => 'upload_folder_not_found'))));
     }
     if ($ppo->save->mode = _request('save-mode', null)) {
         switch ($ppo->save->mode) {
             case 'upload':
                 $ppo->save->ok = true;
                 $ppo->save->error = '';
                 $ppo->save->folder_input = _request('destination', 0);
                 if (!preg_match('/dossier-(?P<folder>\\d+)/', $ppo->save->folder_input, $matches)) {
                     $ppo->save->ok = false;
                     $ppo->save->error = '-ERR destination';
                     break;
                 }
                 $ppo->save->folder_id = $matches['folder'];
                 if ($ppo->classeur->upload_fs) {
                     $dir = realpath('.') . '/upload/' . $ppo->classeur->upload_fs . '/';
                     if (is_dir($dir)) {
                         $this->rrmdir($dir);
                     }
                 }
                 $ppo->classeur->upload_db = $ppo->save->folder_id;
                 $ppo->classeur->upload_fs = 'classeur-' . $ppo->classeur->id;
                 if (!$ppo->classeur->upload_pw) {
                     $ppo->classeur->upload_pw = substr(md5($ppo->classeur->id . $ppo->save->folder_id . $ppo->classeur->cle . date('YmdHis')), 0, 8);
                 }
                 $classeurDAO->update($ppo->classeur);
                 // Création du répertoire
                 $dir = realpath('.') . '/upload/' . $ppo->classeur->upload_fs . '/';
                 if (!file_exists($dir)) {
                     mkdir($dir, 0755, true);
                     $htaccess = fopen($dir . '.htaccess', 'w');
                     fwrite($htaccess, "<Limit GET HEAD OPTIONS POST>\n\trequire user " . $ppo->classeur->upload_fs . "\n</Limit>\n<Files .htaccess>\n\torder allow,deny\n\tdeny from all\n</Files>\n");
                     fclose($htaccess);
                 }
                 // Génération du fichier .htpasswd
                 $htpasswd_file = realpath('.') . '/upload/.htpasswd';
                 $htpasswd_output = '';
                 $in = fopen($htpasswd_file, 'r');
                 $htpasswd_updated = false;
                 if ($in) {
                     while (preg_match("/:/", $line = fgets($in))) {
                         $line = rtrim($line);
                         $a = explode(':', $line);
                         if ($a[0] != 'classeur-' . $ppo->classeur->id) {
                             $htpasswd_output .= $line . "\n";
                         }
                     }
                 }
                 $htpasswd_salt = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789"), 0, 2);
                 $htpasswd_output .= $ppo->classeur->upload_fs . ":" . crypt($ppo->classeur->upload_pw, $htpasswd_salt) . "\n";
                 fclose($in);
                 $out = fopen($htpasswd_file, 'w');
                 fwrite($out, $htpasswd_output);
                 fclose($out);
                 // Génération du fichier .htdigest
                 $htpasswd_file = realpath('.') . '/upload/.htdigest';
                 $htpasswd_output = '';
                 $in = fopen($htpasswd_file, 'r');
                 $htpasswd_updated = false;
                 if ($in) {
                     while (preg_match("/:/", $line = fgets($in))) {
                         $line = rtrim($line);
                         $a = explode(':', $line);
                         if ($a[0] != 'classeur-' . $ppo->classeur->id) {
                             $htpasswd_output .= $line . "\n";
                         }
                     }
                 }
                 $htpasswd_output .= $ppo->classeur->upload_fs . ":Classeur:" . md5($ppo->classeur->upload_fs . ":Classeur:" . $ppo->classeur->upload_pw) . "\n";
                 fclose($in);
                 $out = fopen($htpasswd_file, 'w');
                 fwrite($out, $htpasswd_output);
                 fclose($out);
                 break;
             case 'upload-delete':
                 $dir = realpath('.') . '/upload/' . $ppo->classeur->upload_fs . '/';
                 if (strlen($ppo->classeur->upload_fs) > 3 && is_dir($dir)) {
                     $this->rrmdir($dir);
                 }
                 $ppo->classeur->upload_db = null;
                 $ppo->classeur->upload_fs = null;
                 $ppo->classeur->upload_pw = null;
                 $classeurDAO->update($ppo->classeur);
                 // Suppression de l'utilisateur dans le .htpasswd
                 $htpasswd_file = realpath('.') . '/upload/.htpasswd';
                 $htpasswd_output = '';
                 $in = fopen($htpasswd_file, 'r');
                 $htpasswd_updated = false;
                 if ($in) {
                     while (preg_match("/:/", $line = fgets($in))) {
                         $line = rtrim($line);
                         $a = explode(':', $line);
                         if ($a[0] != 'classeur-' . $ppo->classeur->id) {
                             $htpasswd_output .= $line . "\n";
                         }
                     }
                 }
                 fclose($in);
                 $out = fopen($htpasswd_file, 'w');
                 fwrite($out, $htpasswd_output);
                 fclose($out);
                 // Suppression de l'utilisateur dans le .htdigest
                 $htpasswd_file = realpath('.') . '/upload/.htdigest';
                 $htpasswd_output = '';
                 $in = fopen($htpasswd_file, 'r');
                 $htpasswd_updated = false;
                 if ($in) {
                     while (preg_match("/:/", $line = fgets($in))) {
                         $line = rtrim($line);
                         $a = explode(':', $line);
                         if ($a[0] != 'classeur-' . $ppo->classeur->id) {
                             $htpasswd_output .= $line . "\n";
                         }
                     }
                 }
                 fclose($in);
                 $out = fopen($htpasswd_file, 'w');
                 fwrite($out, $htpasswd_output);
                 fclose($out);
                 break;
             default:
                 break;
         }
         $ppo->classeur = $classeurDAO->get($ppo->classeur->id);
         $classeurs2htaccess_list = $classeurDAO->findBy(_daoSp()->addCondition('upload_fs', '!=', null));
         $classeurs2htaccess_string = '';
         /*
         $classeurs2htaccess_string .= "<Directory ".realpath('./upload').">\n";
         $classeurs2htaccess_string .= "\t<Limit GET HEAD OPTIONS POST>\n";
         $classeurs2htaccess_string .= "\t\trequire user admin\n";
         $classeurs2htaccess_string .= "\t</Limit>\n";
         $classeurs2htaccess_string .= "</Directory>\n";
         if($classeurs2htaccess_list) foreach( $classeurs2htaccess_list AS $classeurs2htaccess_item ) {
             $classeurs2htaccess_string .= "<Directory ".realpath('./upload/'.$classeurs2htaccess_item->upload_fs).">\n";
             $classeurs2htaccess_string .= "\t<Limit GET HEAD OPTIONS POST>\n";
             $classeurs2htaccess_string .= "\t\trequire user ".$classeurs2htaccess_item->upload_fs."\n";
             $classeurs2htaccess_string .= "\t</Limit>\n";
             $classeurs2htaccess_string .= "</Directory>\n";
         }
         
         $htaccess_file = realpath('.').'/upload/.htaccess';
         $out = fopen( $htaccess_file, 'w' );
         fwrite( $out, $classeurs2htaccess_string );
         fclose( $out );
         */
     }
     $ppo->classeur->upload_url = CopixUrl::get() . "upload/" . $ppo->classeur->upload_fs . "/";
     if ($ppo->classeur->upload_db) {
         $ppo->classeur->folder_infos = $dossierDAO->get($ppo->classeur->upload_db);
     } else {
         $ppo->classeur->folder_infos = NULL;
     }
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeur->id);
     return _arPPO($ppo, 'options_default.tpl');
 }
 public function getGrvilles()
 {
     if (Kernel::getLevel('ROOT', 0) < PROFILE_CCV_ADMIN) {
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('||'));
     }
     $tpl = new CopixTpl();
     $tplGrVilles = new CopixTpl();
     CopixHTMLHeader::addCSSLink(_resource("styles/module_grvilles.css"));
     $tpl->assign('TITLE_PAGE', CopixI18N::get('grvilles|grvilles.module.titre'));
     $dao_grvilles_gr2ville = CopixDAOFactory::create("grvilles|grvilles_gr2ville");
     $dao_grvilles = CopixDAOFactory::create("grvilles|grvilles");
     $dao_villes = CopixDAOFactory::create("kernel|kernel_tree_vil");
     $villes = $dao_villes->findAll();
     $tplGrVilles->assign('villes', $villes);
     if (_request("delete")) {
         $dao_grvilles->delete(_request("delete"));
         $dao_grvilles_gr2ville->deleteByGroupe(_request("delete"));
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('grvilles||'));
     }
     if (_request("save") && _request("save") == 1) {
         $date = date("Y-m-d H:i:s");
         $user = Kernel::getUserInfo();
         if (_request("form_id") > 0) {
             $grvilles_infos = $dao_grvilles->get(_request("form_id"));
             $grvilles_infos->nom = _request("form_nom");
             $grvilles_infos->updated_at = $date;
             $grvilles_infos->updated_by = $user['login'];
             $dao_grvilles->update($grvilles_infos);
             $dao_grvilles_gr2ville->deleteByGroupe(_request("form_id"));
         } else {
             $grvilles_infos = CopixDAOFactory::createRecord("grvilles|grvilles");
             $grvilles_infos->nom = _request("form_nom");
             if ($grvilles_infos->nom == '') {
                 $grvilles_infos->nom = 'Sans nom';
             }
             $grvilles_infos->updated_at = date("Y-m-d H:i:s");
             $grvilles_infos->updated_by = $user['login'];
             $dao_grvilles->insert($grvilles_infos);
         }
         $grvilles_gr2ville = _record("grvilles|grvilles_gr2ville2");
         $grvilles_gr2ville->id_groupe = $grvilles_infos->id;
         $grvilles_gr2ville->updated_at = $date;
         $grvilles_gr2ville->updated_by = $user['login'];
         foreach ($villes as $ville) {
             if (_request("ville_" . $ville->vil_id_vi) == 1) {
                 $grvilles_gr2ville->id_ville = $ville->vil_id_vi;
                 _dao("grvilles|grvilles_gr2ville2")->insert($grvilles_gr2ville);
             }
         }
         if (_request("form_id") == 0) {
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('grvilles||', array('groupe' => $grvilles_infos->id)));
         }
     }
     if (_request("groupe")) {
         $tplGrVilles->assign('grvilles_id', _request("groupe"));
         $tplGrVilles->assign('grvilles_form', true);
         if (_request("groupe") > 0) {
             // Edition d'un groupe
             $grvilles_infos = $dao_grvilles->get(_request("groupe"));
             $grvilles_villes_raw = $dao_grvilles_gr2ville->findByGroupe(_request("groupe"));
             // Tableau indexé par id de ville
             $grvilles_villes = array();
             foreach ($grvilles_villes_raw as $grvilles_villes_item) {
                 $grvilles_villes[$grvilles_villes_item->id_ville] = $grvilles_villes_item;
             }
             $tplGrVilles->assign('grvilles_infos', $grvilles_infos);
             $tplGrVilles->assign('grvilles_villes', $grvilles_villes);
         } else {
             // Création d'un nouveau groupe
         }
     }
     $grvilles_list = $dao_grvilles->findAll();
     // print_r($grvilles_list);
     $tplGrVilles->assign('grvilles_list', $grvilles_list);
     $main = $tplGrVilles->fetch('getgrvilles.tpl');
     $tpl->assign('MAIN', $main);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * Ajout d'une info supplementaire
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2008/01/30
  * @param integer $id Id de la procedure
  */
 public function insertInfoSupp()
 {
     $id = $this->getRequest('id', null);
     $info_message = $this->getRequest('info_message', null);
     $info_commentaire = $this->getRequest('info_commentaire', null);
     $visible = $this->getRequest('visible', null);
     $daoIntervention = CopixDAOFactory::create("intervention");
     $daoInfoSupp = CopixDAOFactory::create("infosupp");
     $criticErrors = $errors = array();
     if ($id && ($rFiche = $daoIntervention->get($id))) {
         $title = $rFiche->objet;
         $mondroit = Kernel::getLevel("MOD_TELEPROCEDURES", $rFiche->type_teleprocedure);
         if (!TeleproceduresService::canMakeInTelep('ADD_COMMENT', $mondroit)) {
             $criticErrors[] = CopixI18N::get('kernel|kernel.error.noRights');
         }
     } else {
         $criticErrors[] = CopixI18N::get('teleprocedures|teleprocedures.error.prob.telep');
     }
     if ($criticErrors) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $criticErrors), 'back' => CopixUrl::get('teleprocedures||')));
     }
     if ($info_message || $info_commentaire) {
         //$canCheckVisible = TeleproceduresService::canMakeInTelep('CHECK_VISIBLE', $mondroit);
         $rFiche->insertInfoSupp($info_message, $info_commentaire);
     }
     return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('|fiche', array('id' => $id)));
 }
 /**
  * getUserExtMod
  *
  * Affiche le formulaire de modification d'un utilisateur extérieur
  *
  * @package	Comptes
  * @author	Frédéric Mossmann <*****@*****.**>
  */
 public function getUserExtMod()
 {
     if (!Kernel::isAdmin() && !_currentUser()->hasAssistance('can_comptes')) {
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('||'));
     }
     $errors = array();
     $tpl = new CopixTpl();
     $userext_dao =& CopixDAOFactory::create("kernel|kernel_ext_user");
     $copixuser_dao =& CopixDAOFactory::create("kernel|kernel_copixuser");
     $bu2user_dao =& CopixDAOFactory::create("kernel|kernel_bu2user2");
     $pNom = trim(_request('nom'));
     $pPrenom = trim(_request('prenom'));
     $pLogin = trim(_request('login'));
     $pPasswd1 = trim(_request('passwd1'));
     $pPasswd2 = trim(_request('passwd2'));
     $mode = _request('mode');
     if ($mode) {
         switch ($mode) {
             case 'MOD':
                 $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.getuserextmod'));
                 $userext_item = $userext_dao->get(_request('id'));
                 if (!$userext_item) {
                     return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('comptes||getUserExt'));
                 }
                 if ($pNom == '' && $pPrenom == '') {
                     $errors['ext_nom'] = CopixI18N::get('comptes.alert.nameempty');
                 }
                 if ($pPasswd1 != '' && $pPasswd1 != $pPasswd2) {
                     $errors['passwd2'] = CopixI18N::get('comptes.alert.passwddiff');
                 }
                 if (count($errors) == 0) {
                     $userext_item->ext_nom = $pNom;
                     $userext_item->ext_prenom = $pPrenom;
                     $userext_dao->update($userext_item);
                     if ($pPasswd1 != '' && $pPasswd1 == $pPasswd2) {
                         // Changer passwd
                         // dbuser : id_dbuser 	login_dbuser 	password_dbuser 	email_dbuser 	enabled_dbuser
                         // kernel_link_bu2user : user_id 	bu_type 	bu_id
                         $sql = "\n                                UPDATE dbuser\n                                JOIN kernel_link_bu2user\n                                    ON dbuser.id_dbuser=kernel_link_bu2user.user_id\n                                SET dbuser.password_dbuser=md5(:passwd)\n                                WHERE kernel_link_bu2user.bu_type = 'USER_EXT'\n                                AND   kernel_link_bu2user.bu_id   = :id";
                         _doQuery($sql, array(':passwd' => $pPasswd1, ':id' => _request('id')));
                     }
                     return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('comptes||getUserExt'));
                 }
                 break;
             case 'ADD':
                 $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.getuserextadd'));
                 $userext_item = CopixDAOFactory::createRecord("kernel|kernel_ext_user");
                 if ($pNom == '' && $pPrenom == '') {
                     $errors['ext_nom'] = CopixI18N::get('comptes.alert.nameempty');
                     $userext_item->ext_id = 0;
                 }
                 if (trim($pLogin) == '') {
                     $errors['login'] = CopixI18N::get('comptes.alert.loginempty');
                 } else {
                     $logins = _doQuery('SELECT * FROM dbuser WHERE login_dbuser=:login', array(':login' => $pLogin));
                     if (count($logins)) {
                         $errors['login'] = CopixI18N::get('comptes.alert.loginexists');
                     }
                 }
                 if ($pPasswd1 == '') {
                     $errors['passwd1'] = CopixI18N::get('comptes.alert.passwdempty');
                 }
                 if ($pPasswd1 != '' && $pPasswd1 != $pPasswd2) {
                     $errors['passwd2'] = CopixI18N::get('comptes.alert.passwddiff');
                 }
                 if (count($errors) == 0) {
                     // $userext_item->ext_id
                     $userext_item->ext_nom = $pNom;
                     $userext_item->ext_prenom = $pPrenom;
                     $userext_item->ext_description = '';
                     $userext_dao->insert($userext_item);
                     $copixuser_item = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
                     $copixuser_item->login_dbuser = trim($pLogin);
                     $copixuser_item->password_dbuser = md5($pPasswd1);
                     $copixuser_item->email_dbuser = '';
                     $copixuser_item->enabled_dbuser = 1;
                     $copixuser_dao->insert($copixuser_item);
                     $bu2user_item = CopixDAOFactory::createRecord("kernel|kernel_bu2user2");
                     $bu2user_item->user_id = $copixuser_item->id_dbuser;
                     $bu2user_item->bu_type = "USER_EXT";
                     $bu2user_item->bu_id = $userext_item->ext_id;
                     $bu2user_dao->insert($bu2user_item);
                     return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('comptes||getUserExt'));
                 }
                 break;
             case 'DEL':
                 // die("Do Del");
                 $userext_item = $userext_dao->get(abs(_request('id')));
                 if ($userext_item) {
                     $userext_dao->delete(abs(_request('id')));
                 }
                 _doQuery('DELETE FROM dbuser, kernel_link_bu2user USING dbuser JOIN kernel_link_bu2user ON dbuser.id_dbuser=kernel_link_bu2user.user_id WHERE kernel_link_bu2user.bu_type="USER_EXT" AND kernel_link_bu2user.bu_id=:id', array(':id' => abs(_request('id'))));
                 // _doQuery('DELETE FROM kernel_link_bu2user WHERE kernel_link_bu2user.bu_type="USER_EXT" AND kernel_link_bu2user.bu_id=:id', array(':id'=>abs(_request('id'))));
                 return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('comptes||getUserExt'));
                 break;
         }
     } else {
         if (_request('id') > 0) {
             $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.getuserextmod'));
             $userext_item = $userext_dao->get(_request('id'));
             if (!$userext_item) {
                 return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('comptes||getUserExt'));
             }
             if (!Kernel::isSuperAdmin() && Kernel::getLevel('ROOT', 0, "USER_EXT", $userext_item->ext_id) >= PROFILE_CCV_ADMIN) {
                 return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('comptes||getUserExt'));
             }
             $mode = 'MOD';
         } elseif (_request('id') < 0) {
             $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.getuserextdel'));
             $userext_item = $userext_dao->get(abs(_request('id')));
             if (!$userext_item) {
                 return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('comptes||getUserExt'));
             }
             if (!Kernel::isSuperAdmin() && Kernel::getLevel('ROOT', 0, "USER_EXT", $userext_item->ext_id) >= PROFILE_CCV_ADMIN) {
                 return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('comptes||getUserExt'));
             }
             $mode = 'DEL';
         } else {
             $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.getuserextadd'));
             $userext_item = CopixDAOFactory::createRecord("kernel|kernel_ext_user");
             $userext_item->ext_id = 0;
             $mode = 'ADD';
         }
     }
     if ($mode == 'ADD' || $mode == 'MOD') {
         $result = CopixZone::process('comptes|getUserExtForm', array('user' => $userext_item, 'mode' => $mode, 'errors' => $errors));
     } else {
         return CopixActionGroup::process('genericTools|Messages::getConfirm', array('title' => CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.getuserextdel'), 'message' => CopixI18N::get('comptes.alert.getuserextdel', trim($userext_item->ext_prenom . ' ' . $userext_item->ext_nom)), 'confirm' => CopixUrl::get('comptes|default|getUserExtMod', array('id' => _request('id'), 'mode' => 'DEL')), 'cancel' => CopixUrl::get('comptes|default|getUserExt')));
     }
     $tpl->assign('MAIN', $result);
     $tpl->assign('MENU', $this->menu);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * Affichage du suivi d'un mémo (élèves concernés & signatures) - * Enseignant *
  */
 public function processSuiviMemo()
 {
     $ppo = new CopixPPO();
     $memoDAO = _ioDAO('cahierdetextes|cahierdetextesmemo');
     if (is_null($cahierId = _request('cahierId', null)) || !($ppo->memo = $memoDAO->get(_request('memoId', null)))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('')));
     } elseif (Kernel::getLevel('MOD_CAHIERDETEXTES', $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 élèves liés au mémo
     $memo2eleveDAO = _ioDAO('cahierdetextes|cahierdetextesmemo2eleve');
     $ppo->suivis = $memo2eleveDAO->findSuiviElevesParMemo($ppo->memo->id);
     return _arPPO($ppo, array('template' => 'suivi_memo.tpl', 'mainTemplate' => 'main|main_fancy.php'));
 }
 /**
  * Suppression effective d'une discussion
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2005/11/10
  * @param integer $id Id de la discussion a supprimer
  */
 public function doDeleteTopic()
 {
     $errors = array();
     $id = _request("id") ? _request("id") : NULL;
     $dao_topics = CopixDAOFactory::create("forum_topics");
     $forumService = CopixClassesFactory::create("forum|forumService");
     $rTopic = $dao_topics->get($id);
     if (!$rTopic) {
         $errors[] = CopixI18N::get('forum|forum.error.noTopic');
     } else {
         $mondroit = Kernel::getLevel("MOD_FORUM", $rTopic->forum_id);
         if (!$forumService->canMakeInForum('DELETE_TOPIC', $mondroit)) {
             $errors[] = CopixI18N::get('kernel|kernel.error.noRights');
         }
     }
     if ($errors) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $errors), 'back' => CopixUrl::get('forum||')));
     } else {
         $del = $forumService->deleteForumTopic($id);
         if (!$del) {
             $errors[] = CopixI18N::get('forum|forum.error.delTopic');
         }
         if ($errors) {
             return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $errors), 'back' => CopixUrl::get('forum||getTopic', array("id" => $id))));
         }
         $urlReturn = CopixUrl::get('forum||getForum', array("id" => $rTopic->forum_id));
         return new CopixActionReturn(COPIX_AR_REDIRECT, $urlReturn);
     }
 }
 public function doFolder()
 {
     $kernel_service =& CopixClassesFactory::Create('kernel|kernel');
     if (!_request("album_id") || trim(_request("album_id")) == "" || !preg_match("/^[0-9]+\$/", _request("album_id"))) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('album.error.noalbumnumber'), 'back' => CopixUrl::get('||')));
     }
     $album_id = _request("album_id");
     if (Kernel::getLevel("MOD_ALBUM", $album_id) < PROFILE_CCV_PUBLISH) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get('||')));
     }
     $album_dao = CopixDAOFactory::create("album");
     $album = $album_dao->get($album_id);
     $dossier_id = CopixRequest::getInt('dossier_id', -1);
     if ($dossier_id == -1) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('album.error.nofoldernumber'), 'back' => CopixUrl::get('album||album', array('album_id' => $album_id))));
     }
     $dossier_dao = CopixDAOFactory::create("dossier");
     if ($dossier_id > 0) {
         $dossier = $dossier_dao->get($dossier_id);
         if ($dossier->dossier_album != $album_id) {
             return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('album.error.badfoldernumber'), 'back' => CopixUrl::get('album||album', array('album_id' => $album_id))));
         }
     } else {
         $dossier->dossier_id = 0;
         $dossier->dossier_album = $album_id;
         $dossier->dossier_parent = -1;
         $dossier->dossier_nom = CopixI18N::get('album|album.message.topfolder');
         $dossier->dossier_comment = "";
         $dossier->album_id = $album_id;
     }
     if (!_request("subaction")) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('album.error.badsubaction'), 'back' => CopixUrl::get('album||album', array('album_id' => $album_id, 'dossier_id' => $dossier_id))));
     }
     switch (_request("subaction")) {
         case 'new':
             $dossier_new = CopixDAOFactory::createRecord("dossier");
             $dossier_new->dossier_album = $album_id;
             $dossier_new->dossier_parent = $dossier_id;
             $dossier_new->dossier_nom = _request("folder_new", "Nouveau dossier");
             $dossier_new->dossier_comment = '';
             $dossier_new->dossier_date = date("Y-m-d H:i:s");
             $dossier_new->dossier_cle = substr(md5(microtime()), 0, 10);
             $dossier_new->dossier_public = '0';
             $dossier_dao->insert($dossier_new);
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('album|default|album', array('album_id' => $album_id, 'dossier_id' => $dossier_new->dossier_id)));
             break;
         case 'rename':
             $dossier->dossier_nom = _request("folder_rename");
             $dossier_dao->update($dossier);
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('album|default|album', array('album_id' => $album_id, 'dossier_id' => $dossier_id)));
             break;
         case 'move':
             $dossier->dossier_parent = _request("folder_move");
             $dossier_dao->update($dossier);
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('album|default|album', array('album_id' => $album_id, 'dossier_id' => $dossier_id)));
             break;
         case 'delete':
             // action=dofolder subaction=delete album_id=1& dossier_id=4 dossier_todo=moveparent
             Album::delFolder(_request("album_id"), _request("dossier_id"), _request("dossier_todo"));
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('album|default|album', array('album_id' => $album_id, 'dossier_id' => max(0, $dossier->dossier_parent))));
             break;
         default:
             return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('album.error.badsubaction'), 'back' => CopixUrl::get('album||album', array('album_id' => $album_id, 'dossier_id' => $dossier_id))));
             break;
     }
 }
 public function getVisioScopia()
 {
     $dao = CopixDAOFactory::create("visioscopia|visioscopia_config");
     $id = $this->getRequest('id', null);
     $user_infos = Kernel::getUserInfo();
     $conf_result = $dao->get($id);
     $title = "Visioconf&eacute;rence";
     $tpl = new CopixTpl();
     $tpl->assign('TITLE_PAGE', $title);
     $tplVisio = new CopixTpl();
     $save = $this->getRequest('save', 0);
     if ($save == 1) {
         $conf_id = $this->getRequest('conf_id', 0);
         $conf_msg = $this->getRequest('conf_msg', '');
         $conf_active = $this->getRequest('conf_active', 0);
         if (1) {
             // test de validité ?
             if (!$conf_result) {
                 $conf_result = _record("visioscopia|visioscopia_config");
             }
             $conf_result->id = (int) $id;
             $conf_result->conf_id = $conf_id;
             $conf_result->conf_msg = $conf_msg;
             $conf_result->conf_active = $conf_active;
             //_dump($conf_result);
             $dao->delete($id);
             $dao->insert($conf_result);
             $tplVisio->assign('saved', 1);
         }
     }
     if ($conf_result) {
         if (CopixConfig::exists('visioscopia|conf_ModVisioScopia_url')) {
             $tplVisio->assign('config_ok', 1);
             $url = CopixConfig::get('visioscopia|conf_ModVisioScopia_url');
         } else {
             $tplVisio->assign('config_ok', 0);
         }
         // $url = CopixConfig::get('visioscopia|url');
         $patterns[0] = '/%ROOM%/';
         $patterns[1] = '/%NAME%/';
         $replacements[0] = $conf_result->conf_id;
         $replacements[1] = urlencode(trim($user_infos['prenom'] . " " . $user_infos['nom']));
         $url = preg_replace($patterns, $replacements, $url);
         $tplVisio->assign('url', $url);
     } else {
         $tplVisio->assign('config_ok', 0);
     }
     $tplVisio->assign('visio_id', $id);
     // _dump($conf_result);
     $tplVisio->assign('config', $conf_result);
     $result = $tplVisio->fetch('visioscopia-user.tpl');
     // echo Kernel::getLevel( "MOD_VISIOSCOPIA", $id );
     if (Kernel::getLevel("MOD_VISIOSCOPIA", $id) >= PROFILE_CCV_ADMIN) {
         $result .= $tplVisio->fetch('visioscopia-admin.tpl');
     } else {
     }
     $menu = array();
     $tpl->assign('MENU', $menu);
     $tpl->assign('MAIN', $result);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * Entree dans le module
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2010/08/26
  * @param integer $id Id du module
  */
 public function processGo()
 {
     $ppo = new CopixPPO();
     $iId = CopixRequest::getInt('id');
     $iSubmit = CopixRequest::getInt('submit');
     $this->addCss('styles/module_contact.css');
     $this->js->button('.button');
     $getLevel = Kernel::getLevel('MOD_CONTACT', $iId);
     //echo "getLevel=$getLevel";
     $rContact = _dao('contact|contacts')->get($iId);
     //print_r($rContact);
     if (!$rContact) {
         return $this->error('contact|contact.errors.param', true, CopixUrl::get('||'));
     }
     $ppo->types = _dao('contact|contacts_types')->findByContact($iId);
     $user = _currentUser();
     $possible = CopixConfig::get('|mailEnabled') == 1 && CopixConfig::get('|mailSmtpHost');
     if ($iSubmit) {
         // Submit du formulaire
         $record = _record('contact|contacts_messages');
         $record->contact = $iId;
         $record->to_email = $rContact->email;
         $record->date = date("Y-m-d H:i:s");
         $record->from_nom = _request('from_nom');
         $record->from_email = _request('from_email');
         $record->from_login = $user->getLogin();
         $record->from_user_id = $user->getId();
         $record->type = _request('type');
         $record->message = _request('message');
         $record->ip = $_SERVER["REMOTE_ADDR"];
         $check = _dao('contact|contacts_messages')->check($record);
         $ok = false;
         if (!is_array($check)) {
             // OK, pas d'erreurs
             _dao('contact|contacts_messages')->insert($record);
             if ($record->id) {
                 // Enregistrement bien passe
                 $type_nom = '';
                 foreach ($ppo->types as $type) {
                     if ($type->id == $record->type) {
                         $type_nom = $type->nom;
                     }
                 }
                 if ($possible) {
                     $to = $record->to_email;
                     $subject = $type_nom;
                     $message = CopixI18N::get('contact.mail.date') . " : " . date("d/m/Y H:i");
                     $message .= "\n" . CopixI18N::get('contact.mail.ip') . " : " . $record->ip;
                     $message .= "\n";
                     $message .= "\n" . CopixI18N::get('contact.mail.nom') . " : " . $record->from_nom;
                     if ($record->from_login) {
                         $message .= ' (' . $record->from_login . ')';
                     }
                     $message .= "\n" . CopixI18N::get('contact.mail.email') . " : " . $record->from_email;
                     $message .= "\n";
                     $message .= "\n" . CopixI18N::get('contact.mail.type') . " : " . $type_nom;
                     $message .= "\n" . CopixI18N::get('contact.mail.message') . " : " . $record->message;
                     $message .= "\n\n-- \n" . CopixUrl::get();
                     $from = $record->from_email;
                     $fromName = $record->from_nom;
                     if ($record->from_login) {
                         $fromName .= ' (' . $record->from_login . ')';
                     }
                     $cc = $cci = '';
                     $monMail = new CopixTextEMail($to, $cc, $cci, utf8_decode($subject), utf8_decode($message));
                     $send = $monMail->send(utf8_decode($from), utf8_decode($fromName));
                     if ($send) {
                         $ok = true;
                     } else {
                         $check = array(CopixI18N::get('contact|contact.errors.mailSend'));
                     }
                 } else {
                     $check = array(CopixI18N::get('contact|contact.errors.mailDisabledAfter'));
                 }
             } else {
                 $check = array(CopixI18N::get('contact|contact.errors.save'));
             }
         }
         $ppo->rForm = $record;
         $ppo->errors = $check;
         $ppo->ok = $ok;
     } else {
         $ppo->rForm = _record('contact|contacts_messages');
         foreach ($ppo->types as $type) {
             if ($type->is_default) {
                 $ppo->rForm->type = $type->id;
             }
         }
         $ppo->rForm->from_nom = trim($user->getExtra('prenom') . ' ' . $user->getExtra('nom'));
         $prefs = Prefs::getPrefs($user->getId());
         if (isset($prefs['prefs']['alerte_mail_email'])) {
             $ppo->rForm->from_email = $prefs['prefs']['alerte_mail_email'];
         }
         if (!$possible) {
             $ppo->errors = array(CopixI18N::get('contact|contact.errors.mailDisabled'));
         }
     }
     $ppo->TITLE_PAGE = $rContact->titre;
     return _arPPO($ppo, 'contact.tpl');
 }
 /**
  * Fonction qui prépare l'affichage de la vue semaine
  */
 public function getVueSemaine()
 {
     CopixHTMLHeader::addCSSLink(_resource("styles/module_agenda.css"));
     CopixHtmlHeader::addJSLink(CopixUrl::get() . 'js/iconito/module_agenda.js');
     $obj = new AgendaService();
     $listAgendas = $obj->getAvailableAgenda();
     $agendaService = new AgendaService();
     $dateService = new DateService();
     if (($params = $this->_getSessionSemaineParams()) == null) {
         $params = new SemaineParams();
         $params->numSemaine = $this->getRequest('numSemaine', $dateService->dateToWeeknum(mktime()), true);
         $params->annee = $this->getRequest('annee', date('Y'), true);
     } else {
         $params->numSemaine = $this->getRequest('numSemaine', $params->numSemaine, true);
         $params->annee = $this->getRequest('annee', $params->annee, true);
     }
     //pour savoir si on a cliqué sur un agenda à afficher
     if (_request('updateAgendaAffiches')) {
         $arIdAgendas = array();
         foreach ($listAgendas as $agenda) {
             if (_request('agendas_' . $agenda->id_agenda)) {
                 $arIdAgendas[$agenda->id_agenda] = $agenda->id_agenda;
             }
         }
         $agendaService->setAgendaAffiches($arIdAgendas);
     }
     //on récupère en session les agendas à afficher
     $params->agendas = $agendaService->getAgendaAffiches();
     //on met à jour la session
     $this->_setSessionSemaineParams($params);
     //on determine la date de début et de fin de la semaine en cours d'affichage
     $dateDebutSemaine = date('Ymd', $dateService->numweekToDate($params->numSemaine, $params->annee, 1));
     //date au format bdd
     $dateFinSemaine = date('Ymd', $dateService->numweekToDate($params->numSemaine, $params->annee, 0));
     //date au format bdd
     $arEventsSemaine = array();
     //on récupère tous les évènements de la semaine en cours de vue
     foreach ((array) $params->agendas as $idAgenda) {
         $arEventsSemaine[$idAgenda] = $agendaService->checkEventOfAgendaInBdd($idAgenda, $dateDebutSemaine, $dateFinSemaine);
     }
     //on classe ces évènements par jour
     $arEventByDay = $agendaService->getEventsByDay($arEventsSemaine, $dateDebutSemaine, $dateFinSemaine);
     //on ordonne les évènements par ordre croissant d'heure de début d'évènement dans la journée
     $arEventByDay = $agendaService->getEventsInOrderByDay($arEventByDay);
     //on détermine l'heure de début et l'heure de fin pour l'affichage du calendrier
     //on travail sur des heures sans séparateur pour pouvoir les comparer
     $heureDeb = CopixConfig::get('agenda|heuredebcal');
     $heureFin = CopixConfig::get('agenda|heurefincal');
     foreach ((array) $arEventByDay as $jours) {
         if (!isset($jours->events)) {
             continue;
         }
         //print_r($jours);
         foreach ((array) $jours->events as $event) {
             if ($event->alldaylong_event == 0) {
                 if ($dateService->heureWithSeparateurToheureWithoutSeparateur($event->heuredeb_event) < $dateService->heureWithSeparateurToheureWithoutSeparateur($heureDeb)) {
                     $heureDeb = $dateService->heureWithSeparateurToheureWithoutSeparateur($event->heuredeb_event);
                 }
                 if ($dateService->heureWithSeparateurToheureWithoutSeparateur($heureFin) < $dateService->heureWithSeparateurToheureWithoutSeparateur($event->heurefin_event)) {
                     $heureFin = $dateService->heureWithSeparateurToheureWithoutSeparateur($event->heurefin_event);
                 }
             }
         }
     }
     //on arrondit à l'heure inférieure pour l'heure de début et à l'heure supérieure pour l'heure de fin
     $heureDeb = substr($heureDeb, 0, 2);
     if (substr($heureFin, 2, 2) == 0) {
         //si les minutes sont à 0, on arrondit à l'heure
         $heureFin = substr($heureFin, 0, 2);
     } else {
         //si les minutes ne sont pas à 0, on arrondit à l'heure supérieure
         $heureFin = substr($heureFin, 0, 2) + 1;
     }
     //on récupère les leçons de la semaine à afficher
     $arLecons = $agendaService->getLeconsByDay((array) $params->agendas, $dateDebutSemaine, $dateFinSemaine);
     // On récupère les travaux de la semaine par agenda
     $travailDAO = _ioDAO('cahierdetextes|cahierdetextestravail');
     $agenda2cahier = array();
     $arTravauxEnClasse = array();
     $arTravauxAFaire = array();
     foreach ($params->agendas as $agendaId) {
         $agendaInfos = Kernel::getModParentInfo('MOD_AGENDA', $agendaId);
         $agendaType = AgendaType::getAgendaTypeForNode($agendaInfos['type'], $agendaInfos['id']);
         $mods = Kernel::getModEnabled($agendaInfos['type'], $agendaInfos['id']);
         $cahierDeTextes = Kernel::filterModuleList($mods, 'MOD_CAHIERDETEXTES');
         $agendaLevel = Kernel::getLevel($agendaInfos['type'], $agendaInfos['id']);
         if (isset($cahierDeTextes[0])) {
             $agenda2cahier[$agendaId] = $cahierDeTextes[0]->module_id;
             $travauxEnClasse = $travailDAO->findTravauxEnClasseByAgendaParJour($agendaId, $dateDebutSemaine, $dateFinSemaine, $agendaInfos['type'], $agendaInfos['id'], $agendaLevel);
             if (!is_null($travauxEnClasse)) {
                 foreach ($travauxEnClasse as $date => $travail) {
                     $arTravauxEnClasse[$date][$agendaId] = $travail;
                 }
             }
             $travauxAFaire = $travailDAO->findTravauxAFaireByAgendaParJour($agendaId, $dateDebutSemaine, $dateFinSemaine, $agendaInfos['type'], $agendaInfos['id'], $agendaLevel);
             if (!is_null($travauxAFaire)) {
                 foreach ($travauxAFaire as $date => $travail) {
                     $arTravauxAFaire[$date][$agendaId] = $travail;
                 }
             }
         }
     }
     //récupération de la liste des agendas affichés
     $listAgendasAffiches = $obj->getAgendaAffiches();
     //template pour agenda
     $tplAgenda = new CopixTpl();
     $tplAgenda->assign('MAIN_AGENDA', CopixZone::process('agenda|agendavuesemaine', array('elementsSemaineAffichee' => $params, 'arEventByDay' => $arEventByDay, 'heureDeb' => $heureDeb, 'heureFin' => $heureFin, 'arLecons' => $arLecons, 'arTravauxEnClasse' => $arTravauxEnClasse, 'arTravauxAFaire' => $arTravauxAFaire, 'agenda2cahier' => $agenda2cahier)));
     $title = $obj->getCurrentTitle();
     //template principal
     $tpl = new CopixTpl();
     $tpl->assign('TITLE_PAGE', $title['title']);
     $menu = $agendaService->getAgendaMenu('week');
     $tpl->assign('MENU', $menu);
     $tpl->assign('MAIN', $tplAgenda->fetch('agenda|main.agenda.tpl'));
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * Suppression d'un service SSO.
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2006/11/14
  * @param integer $id Id du SSO à supprimer
  */
 public function doDeleteService()
 {
     $id = $this->getRequest('id', null);
     $dao = CopixDAOFactory::create("sso|sso_auth");
     $obj = $dao->get($id);
     $criticErrors = $errors = array();
     if (!$obj) {
         $criticErrors[] = CopixI18N::get('sso.error.nosso');
     }
     $mondroit = Kernel::getLevel("MOD_SSO", $obj->sso_auth_id_sso);
     if ($mondroit < PROFILE_CCV_ADMIN) {
         $criticErrors[] = CopixI18N::get('sso.error.norights');
     }
     if ($criticErrors) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $criticErrors), 'back' => CopixUrl::get('sso||')));
     }
     $dao->delete($id);
     return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('sso||'));
 }
 public function processDelete()
 {
     //check flash
     if (!isset($this->flash->dashboardType) || !isset($this->flash->dashboardId)) {
         return $this->error('kernel|dashboard.admin.badOperation');
     }
     $node_id = $this->flash->dashboardId;
     $node_type = $this->flash->dashboardType;
     //check security
     if (Kernel::getLevel($node_type, $node_id) < 60) {
         return $this->error('kernel|dashboard.admin.noRight');
     }
     //delete records
     $this->db->update('module_admindash', array('content' => "''"), 'id_zone = ' . $node_id . ' AND type_zone = ' . $this->db->quote($node_type));
     //go to index
     return $this->go('||');
 }