public function _createContent(&$toReturn)
 {
     $arModuleToInstall = CopixSession::get('arModuleToInstall', 'copix');
     $arInstalledModule = CopixSession::get('arInstalledModule', 'copix');
     $moduleName = array_pop($arModuleToInstall);
     $url = $this->getParam('url');
     if (($message = CopixModule::installModule($moduleName)) === true) {
         $toReturn = _i18n('install.module.install') . ' ' . $moduleName . ' <img src="' . _resource('img/tools/valid.png') . '" />';
         if (count($arModuleToInstall) > 0) {
             $toReturn .= _tag('copixzone', array('id' => uniqid(), 'process' => 'admin|installmodule', 'url' => $url, 'auto' => true, 'ajax' => true));
         } elseif ($url) {
             $toReturn .= sprintf('<form action="%s" method="post"><input type="submit" value="%s"/></form>', htmlspecialchars($url), _i18n('copix:common.buttons.next'));
         } else {
             $toReturn .= "<script>\$('back').setStyle('display','');</script>";
         }
         array_push($arInstalledModule, $moduleName);
     } else {
         array_push($arInstalledModule, $moduleName);
         $toReturn = _i18n('install.module.install') . ' ' . $moduleName . ' ' . _tag('popupinformation', array('img' => _resource('img/tools/delete.png')), $message);
         $toReturn .= '<div class="errorMessage">' . $message . '</div>';
         if (count($arInstalledModule) > 0) {
             CopixSession::set('arModuleToDelete', $arInstalledModule, 'copix');
             CopixSession::set('arInstalledModule', null, 'copix');
             CopixSession::set('arModuleToInstall', null, 'copix');
             $toReturn .= _tag('copixzone', array('id' => uniqid(), 'process' => 'admin|deletemodule', 'auto' => true, 'ajax' => true));
         }
     }
     CopixSession::set('arModuleToInstall', $arModuleToInstall, 'copix');
     CopixSession::set('arInstalledModule', $arInstalledModule, 'copix');
     return true;
 }
 /**
  * Retourne les données du chart
  *
  */
 public function processGetChartsDatas()
 {
     $cle = CopixRequest::get('cle');
     echo CopixSession::get("charts|datas|{$cle}");
     CopixSession::set("charts|datas|{$cle}", null);
     return _arNone();
 }
 public function _createContent(&$toReturn)
 {
     //load PPO
     $ppo = new CopixPPO();
     $ppo->user = _currentUser();
     //if user is connected : load personal informations
     if ($ppo->user->isConnected()) {
         $ppo->animateur = _sessionGet('user_animateur') ? 1 : 0;
         $ppo->ien = _sessionGet('prisedecontrole_ien') ? 1 : 0;
         $type = $ppo->user->getExtra('type');
         $sexe = $ppo->user->getExtra('sexe') == 2 ? 2 : '';
         $ppo->usertype = strtolower($type) . $sexe;
     }
     // Get vocabulary catalog to use
     if ($myNode = CopixSession::get('myNode')) {
         $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog');
         $vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($myNode['type'], $myNode['id']);
     }
     $ppo->vocabularyCatalogId = isset($vocabularyCatalog) ? $vocabularyCatalog->id_vc : CopixConfig::get('kernel|defaultVocabularyCatalog');
     $this->addJs('js/iconito/module_auth.js');
     $this->addCss('styles/module_auth.css');
     $ppo->conf_Cas_actif = CopixConfig::exists('default|conf_Cas_actif') ? CopixConfig::get('default|conf_Cas_actif') : 0;
     $ppo->conf_Saml_actif = CopixConfig::exists('default|conf_Saml_actif') ? CopixConfig::get('default|conf_Saml_actif') : 0;
     //load tpl
     $toReturn = $this->_usePPO($ppo, 'userlogged.tpl');
 }
 /**
  * Retourne les logs sous forme d'idérateur
  *
  * @param 	string	$pProfil	Nom du profil dont on souhaite afficher le contenu
  * @param 	int 	$pNbItems	Nombres d'items à afficher
  * @return 	Iterator
  */
 public function getLog($pProfil, $pNbItems = 20)
 {
     // Mise en place des limites
     $page = CopixSession::get('log|numpage') - 1;
     $start = $page * $pNbItems;
     // Création du Search Params
     $sp = _daoSP()->addCondition('profile', '=', $pProfil)->orderBy(array('date', 'DESC'));
     $dbNbLines = _ioDAO('copixlog')->countBy($sp);
     CopixSession::set('log|nbpage', ceil($dbNbLines / $pNbItems));
     $sp = $sp->setLimit($start, $pNbItems);
     return _ioDAO('copixlog')->findBy($sp);
 }
 public function _createContent(&$toReturn)
 {
     $moduleName = CopixZone::getParam('moduleName');
     $arDependency = CopixModule::getDependenciesForDelete($moduleName);
     $tpl = new CopixTpl();
     $tpl->assign('arDependency', $arDependency);
     $tpl->assign('arModuleToDelete', $arDependency);
     CopixSession::set('arModuleToDelete', $arDependency, 'copix');
     $tpl->assign('id', uniqid());
     $tpl->assign('arModuleToDelete', $arDependency);
     $toReturn = $tpl->fetch('delete.script.tpl');
     return true;
 }
 /**
  * Envoie du mail
  */
 public function processSend()
 {
     $ppo->mail = CopixSession::get('admin|email|donnees');
     $ppo->mail['send'] = true;
     $ppo->mail['dest'] = _request("maildest");
     $ppo->mail['cc'] = _request("mailcc");
     $ppo->mail['cci'] = _request("mailcci");
     $ppo->mail['from'] = _request("mailfrom");
     $ppo->mail['fromname'] = _request("mailfromname");
     $ppo->mail['subject'] = _request("mailtitle");
     $ppo->mail['msg'] = _request("mailmsg");
     CopixSession::set('admin|email|donnees', $ppo->mail);
     $arrErrors = _class("emailservices")->sendMail($ppo->mail);
     return CopixActionGroup::process('admin|Email::create', array('error' => $arrErrors, 'sending' => 'true'));
 }
 public function beforeProcess(&$action)
 {
     if (CopixConfig::get('conf_Saml_actif') != 1) {
         return;
     }
     require_once COPIX_UTILS_PATH . '../../simplesamlphp/lib/_autoload.php';
     $asId = 'iconito-sql';
     if (CopixConfig::exists('default|conf_Saml_authSource') && CopixConfig::get('default|conf_Saml_authSource')) {
         $asId = CopixConfig::get('default|conf_Saml_authSource');
     }
     $as = new SimpleSAML_Auth_Simple($asId);
     $ppo->user = _currentUser();
     if ($as->isAuthenticated() && !$ppo->user->isConnected()) {
         $attributes = $as->getAttributes();
         $uidAttribute = 'login_dbuser';
         if (CopixConfig::exists('default|conf_Saml_uidAttribute') && CopixConfig::get('default|conf_Saml_uidAttribute')) {
             $uidAttribute = CopixConfig::get('default|conf_Saml_uidAttribute');
         }
         $ppo->saml_user = null;
         if (isset($attributes[$uidAttribute]) && isset($attributes[$uidAttribute][0])) {
             $ppo->saml_user = $attributes[$uidAttribute][0];
         }
         if ($ppo->saml_user) {
             $ppo->iconito_user = Kernel::getUserInfo("LOGIN", $ppo->saml_user);
             if ($ppo->iconito_user['login']) {
                 _currentUser()->login(array('login' => $ppo->iconito_user['login'], 'assistance' => true));
                 $url_return = CopixUrl::get('kernel||doSelectHome');
                 // $url_return = CopixUrl::get ('assistance||users');
                 return new CopixActionReturn(COPIX_AR_REDIRECT, $url_return);
             } else {
                 $ppo->cas_error = 'no-iconito-user';
                 return _arPpo($ppo, 'cas.tpl');
             }
         }
     }
     if (!$as->isAuthenticated() && $ppo->user->isConnected()) {
         $ppo->user = _currentUser();
         if ($ppo->user->isConnected()) {
             CopixAuth::getCurrentUser()->logout(array());
             CopixEventNotifier::notify('logout', array('login' => CopixAuth::getCurrentUser()->getLogin()));
             CopixAuth::destroyCurrentUser();
             CopixSession::destroyNamespace('default');
         }
     }
 }
 public function _createContent(&$toReturn)
 {
     if (!CopixPluginRegistry::isRegistered('themechooser|themechooser')) {
         $toReturn = "";
         return true;
     }
     $tpl = new CopixTpl();
     $arThemes = CopixPluginRegistry::getConfig('themechooser|themechooser')->getThemeList();
     $arThemesToReturn = array();
     foreach ($arThemes as $theme) {
         $arThemesToReturn[] = CopixTpl::getThemeInformations($theme);
     }
     $selectedTheme = CopixSession::get('themechooser|theme');
     $tpl->assign('selectedTheme', $selectedTheme);
     $tpl->assign('arThemes', $arThemesToReturn);
     $toReturn = $tpl->fetch('combo.list.tpl');
     return true;
 }
 public function _createContent(&$toReturn)
 {
     if (CopixZone::getParam('arModule') !== null && is_array(CopixZone::getParam('arModule'))) {
         $arModule = CopixZone::getParam('arModule');
     } else {
         $arModule = array(CopixZone::getParam('moduleName'));
     }
     $arModuleToInstall = array();
     $arOrder = array();
     foreach ($arModule as $moduleName) {
         $arDependency = CopixModule::getDependenciesForInstall($moduleName);
         foreach ($arDependency as $key => $dependency) {
             if ($dependency->kind === 'module') {
                 //Gestion des modules en double avec les dependences
                 if (!in_array($dependency->name, $arModuleToInstall)) {
                     $arModuleToInstall[] = $dependency->name;
                     $arOrder[] = $dependency->level;
                 } else {
                     //Gestion du niveau d'install des dependences
                     $key = array_search($dependency->name, $arModuleToInstall);
                     if ($arOrder[$key] < $dependency->level) {
                         $arOrder[$key] = $dependency->level;
                     }
                 }
             }
         }
     }
     array_multisort($arOrder, SORT_ASC, $arModuleToInstall, SORT_DESC);
     $arModuleInfos = array();
     $tpl = new CopixTpl();
     $tpl->assign('arModuleToInstall', $arModuleToInstall);
     $tpl->assign('arModuleInfos', $arModuleInfos);
     CopixSession::set('arModuleToInstall', $arModuleToInstall, 'copix');
     CopixSession::set('arInstalledModule', array(), 'copix');
     $tpl->assign('id', uniqid());
     $tpl->assign('url', CopixZone::getParam('url_return', _url('admin|install|manageModules')));
     $tpl->assign('messageConfirm', CopixZone::getParam('messageConfirm', true));
     $toReturn = $tpl->fetch('admin|install.script.tpl');
     return true;
 }
 public function _createContent(&$toReturn)
 {
     $arModuleToDelete = CopixSession::get('arModuleToDelete', 'copix');
     $moduleName = array_pop($arModuleToDelete);
     if (($message = CopixModule::deleteModule($moduleName)) === true) {
         $toReturn = _i18n('install.module.delete') . ' ' . $moduleName . ' <img src="' . _resource('img/tools/valid.png') . '" />';
         if (count($arModuleToDelete) > 0) {
             $toReturn .= _tag('copixzone', array('id' => uniqid(), 'process' => 'admin|deletemodule', 'auto' => true, 'ajax' => true));
         } else {
             $toReturn .= "<script>\$('back').setStyle('display','');</script>";
         }
     } else {
         $toReturn = _i18n('install.module.delete') . ' ' . $moduleName . ' ' . _tag('popupinformation', array('img' => _resource('img/tools/delete.png')), $message);
         $toReturn .= '<div class="errorMessage">' . $message . '</div>';
         if (count($arModuleToDelete) > 0) {
             $toReturn .= _tag('copixzone', array('id' => uniqid(), 'process' => 'admin|deletemodule', 'auto' => true, 'ajax' => true));
         } else {
             $toReturn .= "<script>\$('back').setStyle('display','');</script>";
         }
     }
     CopixSession::set('arModuleToDelete', $arModuleToDelete, 'copix');
     return true;
 }
 /**
  * Retourne les logs sous forme d'itérateur
  * @param	string	$pProfil	Le nom du profil dont on souhaite récupérer les logs
  * @return array
  */
 public function getLog($pProfil)
 {
     if (is_array($profile = CopixSession::get('copix|log|firebug|' . $pProfil))) {
         $arLog = array();
         foreach ($profile as $log) {
             $object = new StdClass();
             $object->date = $log['date'];
             $object->classname = $log['classname'];
             $object->message = $log['message'];
             $object->line = $log['line'];
             $object->file = $log['file'];
             $object->functionname = $log['functionname'];
             $object->user = $log['user'];
             $object->level = $log['level'];
             $object->profil = $pProfil;
             $object->type = $log['type'];
             $arLog[] = $object;
         }
         $arrayObject = new ArrayObject(array_reverse($arLog));
         return $arrayObject->getIterator();
     }
     return new ArrayObject();
 }
 public function getSwitchUser()
 {
     $login = _request('login');
     if ($login != '') {
         $me_info = Kernel::getUserInfo("ME", 0);
         $animateurs_dao =& CopixDAOFactory::create("kernel|kernel_animateurs");
         $animateur = $animateurs_dao->get($me_info['type'], $me_info['id']);
         $ien_dao =& CopixDAOFactory::create("kernel|kernel_ien");
         $ien = $ien_dao->get($me_info['type'], $me_info['id']);
         // echo "<pre>"; print_r($ien); die("</pre>");
         if (!$ien && (!$animateur || !isset($animateur->can_connect) || !$animateur->can_connect)) {
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('assistance||users', array('error' => 'forbidden')));
         }
         $user_info = Kernel::getUserInfo("LOGIN", $login);
         // $user_info->user_id
         if (!$user_info) {
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('assistance||users', array('error' => 'forbidden')));
         }
         $ok = false;
         $assistance_service =& CopixClassesFactory::Create('assistance|assistance');
         $user_assistance = $assistance_service->getAssistanceUsers();
         if (!$user_assistance) {
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('assistance||users', array('error' => 'forbidden')));
         }
         foreach ($user_assistance as $ville_id => $ville) {
             foreach ($ville as $ecole_id => $ecole) {
                 foreach ($ecole->personnels as $personnel_id => $personnel) {
                     if ($personnel->id_copix == $user_info['user_id']) {
                         $ok = $personnel->assistance;
                     }
                 }
             }
         }
         if (!$ok) {
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('assistance||users', array('error' => 'forbidden')));
         }
         $currentUserLogin = _currentUser()->getLogin();
         CopixSession::destroyNamespace('default');
         _sessionSet('user_animateur', $currentUserLogin);
         _sessionSet('prisedecontrole_ien', $ien ? true : false);
         _currentUser()->login(array('login' => $login, 'assistance' => true));
         $url_return = CopixUrl::get('kernel||doSelectHome');
     } else {
         if ($session = _sessionGet('user_animateur')) {
             CopixSession::destroyNamespace('default');
             //_sessionSet('user_animateur', null);
             _currentUser()->login(array('login' => $session, 'assistance' => true));
         }
         $url_return = CopixUrl::get('assistance||users');
     }
     return new CopixActionReturn(COPIX_AR_REDIRECT, $url_return);
 }
 /**
  * Supression d'un utilisateur du groupe
  */
 public function processRemoveUser()
 {
     $this->_validFromRequest();
     $users = CopixSession::get('auth|usersgroup');
     unset($users[CopixRequest::get('handlerUser')][CopixRequest::get('idUser')]);
     CopixSession::set('auth|usersgroup', $users);
     return _arRedirect(_url('auth|groups|edit'));
 }
 /**
  * Supression d'un handleExcept pour le profil en cours de modification
  */
 public function processRemoveHandleExcept()
 {
     if ($handleExceptToRemove = _request('handleExcept')) {
         if ($profile = CopixSession::get('admin|log|edit')) {
             unset($profile['handleExcept'][array_search($handleExceptToRemove, $profile['handleExcept'])]);
             CopixSession::set('admin|log|edit', $profile);
         }
     }
     return _arRedirect(_url('log|edit'));
 }
 /**
  * Destruction de l'utilisateur courant
  */
 public static function destroyCurrentUser()
 {
     CopixSession::set('copix|auth|user', null);
 }
 public function processGetMultipleSelectContent()
 {
     $currentId = null;
     $classString = CopixSession::get(CopixRequest::get('class'));
     $arClass = explode('::', $classString);
     $class = _ioClass($arClass[0]);
     $values = $class->{$arClass}[1]();
     $objectMap = CopixRequest::get('objectMap');
     if (!empty($objectMap)) {
         $tab = explode(';', $objectMap);
         if (count($tab) != 2) {
             throw new CopixTemplateTagException("[plugin select] parameter 'objectMap' must looks like idProp;captionProp");
         }
         $idProp = $tab[0];
         $captionProp = $tab[1];
     }
     $id = CopixRequest::get('idselect');
     $name = CopixRequest::get('nameselect');
     $toReturn = '';
     $compteur = 0;
     if (empty($objectMap)) {
         foreach ((array) $values as $key => $caption) {
             $currentId = uniqid();
             $compteur++;
             $color = $compteur % 2 == 0 ? '#cccccc' : '#ffffff';
             $toReturn .= '<div style="width:100%;background-color:' . $color . '"><input type="checkbox" class="check_' . $id . '" id="' . $currentId . '" value="' . $key . '" /><label id="label_' . $currentId . '" for="' . $currentId . '">' . _copix_utf8_htmlentities($caption) . '</label></div>';
         }
     } else {
         //if given an object mapping request.
         foreach ((array) $values as $object) {
             $color = $compteur % 2 == 0 ? '#cccccc' : '#ffffff';
             $toReturn .= '<div style="width:100%;background-color:' . $color . '"><input type="checkbox" id="' . $currentId . '" class="check_' . $id . '" value="' . $object->{$idProp} . '" /><label id="label_' . $currentId . '" for="' . $currentId . '">' . _copix_utf8_htmlentities($object->{$captionProp}) . '</label></div>';
         }
     }
     //CopixSession::set(CopixRequest::get('class'),null);
     CopixHTMLHeader::addJsCode("\n        window.addEvent('domready', function () {\n            var input = \$('{$id}');\n            \$\$('.check_{$id}').each (function (el) {\n                el.addEvent ('change', function () {\n                    var value = '';\n                    \$('hidden_{$id}').setHTML('');\n                    \$\$('.check_{$id}').each ( function (el) {\n                        if (el.checked) {\n                            if (value!='') {\n                                value += ',';\n                            }\n                            value += \$('label_'+el.getProperty('id')).innerHTML;\n                            \$('hidden_{$id}').setHTML (\$('hidden_{$id}').innerHTML+'<input type=\"hidden\" name=\"" . $name . "[]\" value=\"'+el.value+'\" />');\n                        }\n                    });\n                    input.value = value;\n                });\n            });\n        });\n        ");
     return _arDirectPPO(new CopixPPO(array('MAIN' => $toReturn)), 'generictools|blank.tpl');
 }
 /**
  * Récupération d'un flash message
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2012/06/21
  * @param string $type : warning, success, error
  * @return string Contenu du flash message
  */
 public function getFlashMessage($type)
 {
     return CopixSession::get('flash|' . $type);
 }
 public function processQuiz()
 {
     $pId = CopixRequest::getInt('id', false);
     //init & secure quiz system !
     if (is_null(CopixSession::get('id')) || $pId != qSession('id')) {
         if ($pId === false || !($quizData = _dao('quiz|quiz_quiz')->get($pId))) {
             return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('quiz.errors.noQuiz'), 'back' => CopixUrl::get('quiz||')));
         }
         //to propagate the quizData
         $quizData =& $quizData;
         //security for quiz
         $gr_id = qSession('id_gr_quiz');
         if ($gr_id != $quizData->gr_id) {
             return $this->error('quiz.errors.noQuiz');
         }
         //session storage :
         qSession('id', $pId);
         qSession('name', $quizData->name);
         qSession('opt', array('save' => $quizData->opt_save, 'show_result' => $quizData->opt_show_results));
         //description
         $desc = $quizData->description == null ? null : $quizData->description;
         if ($quizData->lock == 1) {
             return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('quiz.errors.lock'), 'back' => CopixUrl::get('quiz||')));
         }
         //time test :
         if (time() < $quizData->date_start && $quizData->date_start != 0) {
             return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('quiz.errors.beforeStart'), 'back' => CopixUrl::get('quiz||')));
         }
         if (time() > $quizData->date_end && CopixRequest::get('action') != 'end_quiz' && $quizData->date_end != 0) {
             return CopixActionGroup::process('quiz|default::EndQuiz', array('id' => $pId));
         }
     } else {
         $quizData = _dao('quiz|quiz_quiz')->get($pId);
     }
     //echo CopixRequest::get('action');
     //ICI REROUTAGE EN FONCTION BESOIN !!
     //get informations from DB
     $userId = _currentUser()->getId();
     $authorInfos = Kernel::getUserInfo('ID', $quizData->id_owner);
     $questionsData = _ioDAO('quiz|quiz_questions')->getQuestionsForQuiz($pId);
     $responsesFromUser = _ioDAO('quiz|quiz_responses')->getResponsesFromUser($userId, $pId);
     //si pas de questions : erreur :
     if (empty($questionsData)) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('quiz.errors.noQuestions'), 'back' => CopixUrl::get('quiz||')));
     }
     //if user have already begin the quiz :
     $uResp = false;
     $userResponses = array();
     if (count($responsesFromUser) != 0) {
         $uResp = true;
         foreach ($responsesFromUser as $resp) {
             $userResponses[] = $resp->id_question;
             $userChoices[$resp->id_question] = $resp->id_choice;
         }
         array_unique($userResponses);
     }
     //fetch all question
     $i = 0;
     $userAllQuestions = true;
     foreach ($questionsData as $question) {
         $currentQuestionId = $question->id * 1;
         //pile for question
         $qQueue[] = $currentQuestionId;
         $questionsReturn[$i]['ct'] = $question;
         $questionsReturn[$i]['userResp'] = isset($userChoices[$currentQuestionId]);
         $i++;
     }
     if (!isset($qQueue)) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('quiz.errors.noQuestions'), 'back' => CopixUrl::get('quiz||')));
     }
     //data storage
     $this->session->save('questions', $qQueue);
     $this->session->save('quizId', $pId);
     $this->session->save('authorName', $authorInfos['nom']);
     $this->session->save('authorSurname', $authorInfos['prenom']);
     //load help
     $help = empty($quizData->help) ? $this->i18n('quiz.msg.noHelp') : $quizData->help;
     qSession('help', $help);
     //if qID exists in url : routing to question
     $qId = CopixRequest::get('qId', false);
     if ($qId) {
         return CopixActionGroup::process('quiz|default::Question', array('id' => $pId, 'qId' => (int) $qId));
     } elseif (!$uResp) {
         //if users have not started the quiz :
         return CopixActionGroup::process('quiz|default::Question', array('id' => $pId, 'qId' => $qQueue[0]));
     }
     //var_dump($questionsReturn);
     //start TPL
     $this->addCss('styles/module_quiz.css');
     //        $this->js->button('.button');
     $ppo = new CopixPPO();
     //global data for quiz
     $ppo->name = $quizData->name;
     $ppo->quizId = $pId;
     $ppo->description = stripslashes($desc);
     $ppo->nameAuthor = $authorInfos['nom'];
     $ppo->surname = $authorInfos['prenom'];
     $ppo->img = $quizData->pic;
     //user data for quiz
     $ppo->uResp = $uResp;
     $ppo->uEnd = $userAllQuestions;
     //questions datas
     $ppo->questions = $questionsReturn;
     $ppo->next = $qQueue[0];
     $ppo->TITLE_PAGE = 'Quiz';
     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')));
     }
     return _arPPO($ppo, 'accueil_quiz.tpl');
 }
 /**
  * On regarde s'il existe des informations de sélection en session
  *
  * Si c'est le cas, on met à jour les variables d'état du plugin
  * @return bool
  */
 private function _alreadyDefinied()
 {
     $lang = null;
     $country = null;
     if (CopixSession::get('plugin|i18n|lang') !== null) {
         $this->_lang = CopixSession::get('plugin|i18n|lang');
     }
     if (CopixSession::get('plugin|i18n|country') !== null) {
         $this->_country = CopixSession::get('plugin|i18n|country');
     }
     return $this->_lang || $this->_country;
 }
 /**
  * Logout
  */
 public function processOut()
 {
     Logs::set(array('type' => 'LOG', 'message' => 'Logout: ' . _currentUser()->getLogin()));
     CopixAuth::getCurrentUser()->logout(array());
     CopixEventNotifier::notify('logout', array('login' => CopixAuth::getCurrentUser()->getLogin()));
     CopixAuth::destroyCurrentUser();
     CopixSession::destroyNamespace('default');
     return _arRedirect(CopixRequest::get('auth_url_return', _url('||')));
 }
 public function processPreDelete()
 {
     CopixSession::set('admin|database|loginInformations', null);
 }
 /**
  * Renvoie l'ecole sur laquelle on travaille selon la session utilisateur, uniquement pour les directeurs
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2009/01/23
  * @return integer Id de l'ecole, ou NULL si aucune (anormal)
  */
 public function getTelepEcole()
 {
     $myNode = CopixSession::get('myNode');
     return $myNode && $myNode['type'] == 'BU_ECOLE' ? $myNode['id'] : null;
 }
 /**
  * Validation des modification sur le profil de cache
  */
 public function processValid()
 {
     $type = CopixSession::get('admin|cache|edit');
     if (_request('enabled')) {
         $type['enabled'] = true;
     }
     $type['strategy'] = _request('strategy');
     if (_request('strategy_class', null, true)) {
         $type['strategy'] = _request('strategy_class');
     }
     if ($dir = _request('dir')) {
         $type['dir'] = $dir;
     }
     $type['duration'] = _request('duration');
     if ($link = _request('link')) {
         $type['link'] .= $type['link'] == "" ? $link : "|" . $link;
     }
     CopixSession::set('admin|cache|edit', $type);
     if (_request('save')) {
         $types = CopixConfig::instance()->copixcache_getRegisteredProfiles();
         $types[$type['name']] = $type;
         _class('cacheConfigurationFile')->write($types);
         CopixSession::set('admin|cache|edit', null);
         return _arRedirect(_url('cache|admin'));
     } else {
         return _arRedirect(_url('cache|edit'));
     }
 }
 /**
  * retourne le code html qui sera attaché au tpl
  * @return code html a passer au template
  */
 protected function getChart($width = 400, $height = 250)
 {
     _classInclude('chart_swf|CopixSwfChart');
     CopixSession::set("charts|datas|{$this->_cle}", CopixSwfChart::getChartData($this->_data));
     $swf = _class('chart_swf|CopixSwfChart');
     return $swf->getChart(_url("chart_swf||getChartsDatas", array("cle" => $this->_cle)), $width, $height);
 }
 public function beforeDisplay(&$display)
 {
     $jscode = array();
     $logs = array();
     foreach (CopixConfig::instance()->copixlog_getRegistered() as $profil) {
         $name = CopixConfig::instance()->copixlog_getProfile($profil);
         $name = $name['strategy'];
         if (strtoupper($name) == "FIREBUG") {
             $logs[] = CopixLog::getLog($profil);
         }
     }
     //merge last logs to new logs
     if (CopixSession::get('plugin|firebug|log') !== null) {
         $logs = array_merge(CopixSession::get('plugin|firebug|log'), $logs);
         CopixSession::set('plugin|firebug|log', null);
     }
     $logs = array_reverse($logs);
     foreach ($logs as $arlog) {
         foreach ($arlog as $log) {
             foreach (array('message', 'file', 'line', 'level', 'classname', 'functionname', 'type') as $var) {
                 if (isset($log->{$var})) {
                     ${$var} = $log->{$var};
                     unset($log->{$var});
                 } else {
                     ${$var} = null;
                 }
             }
             $log->date = CopixDateTime::yyyymmddhhiissToDateTime($log->date);
             $log->location = "{$file}:{$line}";
             $log->function = ($classname ? "{$classname}::" : "") . $functionname;
             switch ($level) {
                 case CopixLog::INFORMATION:
                     $type = "info";
                     break;
                 case CopixLog::WARNING:
                 case CopixLog::NOTICE:
                     $type = "warn";
                     break;
                 case CopixLog::EXCEPTION:
                 case CopixLog::ERROR:
                 case CopixLog::FATAL_ERROR:
                     $type = "error";
                     break;
                 default:
                     $type = "log";
             }
             unset($log->level);
             $jscode[] = sprintf('_l(%s,%s,%s,%s);', CopixJSON::encode($type), CopixJSON::encode($message), CopixJSON::encode($log->location), CopixJSON::encode($log));
         }
     }
     foreach (CopixConfig::instance()->copixlog_getRegistered() as $profil) {
         $name = CopixConfig::instance()->copixlog_getProfile($profil);
         $name = $name['strategy'];
         if (strtoupper($name) == "FIREBUG") {
             CopixLog::deleteProfile($profil);
         }
     }
     if (count($jscode) > 0) {
         $jscode[] = "if(window.console && console.firebug){var _l=function(t,m,l,e){console.group('[COPIX] - '+t+' - '+l);console[t](m);console.dir(e);console.groupEnd();}";
         $jscode = array_reverse($jscode);
         $jscode[] = "}";
         CopixHTMLHeader::addJSCode(implode("\n", $jscode));
     }
 }
 /**
  * Validation des modifications apportées sur un utilisateur
  */
 public function processValid()
 {
     //$user = new stdClass ();
     $user = _record('dbuser');
     $user->login_dbuser = _request('login_dbuser', '');
     $user->email_dbuser = _request('email_dbuser');
     $errors = array();
     //on vérifie si le login n'est pas déja pris
     $sp = _daoSp();
     $sp->addCondition('login_dbuser', '=', $user->login_dbuser);
     if ($user->login_dbuser === '') {
         $errors['loginEmpty'] = 1;
     }
     if (count(_ioDAO('dbuser')->findBy($sp))) {
         $errors['loginNotAvailable'] = 1;
     }
     //on vérifie si un mot de passe est donné qu'ils soient bien identiques
     if (CopixRequest::get('password_dbuser')) {
         if (CopixRequest::get('password_dbuser') != CopixRequest::get('password_confirmation_dbuser')) {
             $errors['passwordDoNotMatch'] = 1;
         } else {
             $user->password_dbuser = md5(CopixRequest::get('password_dbuser'));
         }
     } else {
         //Comme c'est automatiquement un nouvel utilisateur, il est obligatoire de saisir un nouveau mot de passe.
         $errors['passwordEmpty'] = 1;
     }
     if (Copixconfig::get('auth|typeConfirm') == "email") {
         if (!$user->email_dbuser) {
             $errors['emailEmpty'] = 1;
         } else {
             try {
                 CopixFormatter::getMail($user->email_dbuser);
             } catch (CopixException $e) {
                 $errors['emailIsBad'] = 1;
             }
         }
     }
     if (Copixconfig::get('auth|typeConfirm') == "email") {
         $user->enabled_dbuser = 0;
     } else {
         $user->enabled_dbuser = 1;
     }
     //Si le module imageprotect est activé test la protection anti-spam
     if (CopixModule::isEnabled('antispam')) {
         CopixRequest::assert('confirmcode_dbuser');
         CopixRequest::assert('idcode_dbuser');
         $code = _request('confirmcode_dbuser');
         $idCode = _request('idcode_dbuser');
         // Test si le code de ssession est valide
         _classInclude('antispam|imageprotect');
         if (!ImageProtect::getCode($idCode, $code)) {
             $errors['confirmCodeBad'] = 1;
         }
     }
     //redirige vers l'éditeur si il y a des erreurs
     if (count($errors) != 0) {
         $errors['idForm'] = uniqid();
         CopixSession::set('auth|createForm', $user, $errors['idForm']);
         return _arRedirect(_url('auth|usersregister|edit', $errors));
     }
     //sauvegarde de l'utilisateur
     _ioDAO('dbuser')->insert($user);
     return _arRedirect(_url(''));
 }
 /**
  * Retourne les travaux en classe pour un agenda et une période de date donnés
  *
  * @param int     $agendaId           Identifiant de l'agenda
  * @param string  $dateDebutSemaine   Date de début (YYYYmmdd)
  * @param string  $dateFinSemaine     Date de fin   (YYYYmmdd)
  * @param string  $nodeType           Type du node de l'agenda
  * @param int     $nodeId             Id du node de l'agenda
  * @param int     $agendaLevel        Level de l'utilisateur sur l'agenda
  *
  * @return array
  */
 public function findTravauxEnClasseByAgendaParJour($agendaId, $dateDebutSemaine, $dateFinSemaine, $nodeType, $nodeId, $agendaLevel)
 {
     $arTravauxParJour = array();
     $dateService = new DateService();
     $dateCourante = $dateDebutSemaine;
     while ($dateCourante <= $dateFinSemaine) {
         $arTravauxParJour[$dateCourante] = '';
         $dateCourante = $dateService->addToDate($dateService->dateBddToDateFr($dateCourante), 1, 0, 0, '/');
         $dateCourante = $dateService->dateFrToDateBdd($dateCourante);
     }
     // Eleve
     if ($agendaLevel == PROFILE_CCV_WRITE) {
         $sql = 'SELECT count(module_cahierdetextes_travail.id) as count, module_agenda_work.module_agenda_agenda_id_agenda as id_agenda, "' . $nodeType . '" as node_type, ' . $nodeId . ' as node_id, module_cahierdetextes_travail.date_creation as date_creation, module_cahierdetextes_domaine.nom' . ' FROM module_cahierdetextes_travail' . ' LEFT JOIN module_agenda_work ON (module_agenda_work.module_agenda_agenda_id_agenda = :agendaId)' . ' LEFT JOIN module_cahierdetextes_travail2eleve ON (module_cahierdetextes_travail.id = module_cahierdetextes_travail2eleve.module_cahierdetextes_travail_id)' . ' LEFT JOIN module_cahierdetextes_domaine ON (module_cahierdetextes_domaine.id = module_cahierdetextes_travail.module_cahierdetextes_domaine_id)' . ' WHERE module_agenda_work.module_cahierdetextes_travail_id = module_cahierdetextes_travail.id' . ' AND module_cahierdetextes_travail2eleve.kernel_bu_eleve_idEleve=:idEleve' . ' AND module_cahierdetextes_travail.supprime = 0' . ' AND module_cahierdetextes_travail.a_faire = ' . self::TYPE_EN_CLASSE . ' AND module_cahierdetextes_travail.date_creation >= :dateDebut' . ' AND module_cahierdetextes_travail.date_creation <= :dateFin' . ' GROUP BY module_cahierdetextes_travail.id';
         $results = _doQuery($sql, array('dateDebut' => $dateDebutSemaine, 'dateFin' => $dateFinSemaine, 'idEleve' => _currentUser()->getExtra('id'), 'agendaId' => $agendaId));
         foreach ($results as $result) {
             $arTravauxParJour[$result->date_creation][] = $result;
         }
     } elseif ($agendaLevel == PROFILE_CCV_NONE && _currentUser()->getExtra('type') == 'USER_RES') {
         $myNode = CopixSession::get('myNode');
         $eleveId = $myNode['type'] == "USER_ELE" ? $myNode['id'] : null;
         $sql = 'SELECT count(module_cahierdetextes_travail.id) as count, module_agenda_work.module_agenda_agenda_id_agenda as id_agenda, "' . $nodeType . '" as node_type, ' . $nodeId . ' as node_id, module_cahierdetextes_travail.date_creation as date_creation, module_cahierdetextes_domaine.nom' . ' FROM module_cahierdetextes_travail' . ' LEFT JOIN module_agenda_work ON (module_agenda_work.module_agenda_agenda_id_agenda = :agendaId)' . ' LEFT JOIN module_cahierdetextes_travail2eleve ON (module_cahierdetextes_travail.id = module_cahierdetextes_travail2eleve.module_cahierdetextes_travail_id)' . ' LEFT JOIN module_cahierdetextes_domaine ON (module_cahierdetextes_domaine.id = module_cahierdetextes_travail.module_cahierdetextes_domaine_id)' . ' WHERE module_agenda_work.module_cahierdetextes_travail_id = module_cahierdetextes_travail.id' . ' AND module_cahierdetextes_travail2eleve.kernel_bu_eleve_idEleve = :eleveId' . ' AND module_cahierdetextes_travail.supprime = 0' . ' AND module_cahierdetextes_travail.a_faire = ' . self::TYPE_EN_CLASSE . ' AND module_cahierdetextes_travail.date_creation >= :dateDebut' . ' AND module_cahierdetextes_travail.date_creation <= :dateFin' . ' GROUP BY module_cahierdetextes_travail.id';
         $results = _doQuery($sql, array('dateDebut' => $dateDebutSemaine, 'dateFin' => $dateFinSemaine, 'agendaId' => $agendaId, 'eleveId' => $eleveId));
         foreach ($results as $result) {
             $arTravauxParJour[$result->date_creation][] = $result;
         }
     } elseif ($agendaLevel == PROFILE_CCV_ADMIN) {
         $sql = 'SELECT count(module_cahierdetextes_travail.id) as count, module_agenda_work.module_agenda_agenda_id_agenda as id_agenda, "' . $nodeType . '" as node_type, ' . $nodeId . ' as node_id, module_cahierdetextes_travail.date_creation as date_creation, module_cahierdetextes_domaine.nom' . ' FROM module_cahierdetextes_travail' . ' LEFT JOIN module_agenda_work ON (module_agenda_work.module_agenda_agenda_id_agenda = :agendaId)' . ' LEFT JOIN module_cahierdetextes_domaine ON (module_cahierdetextes_domaine.id = module_cahierdetextes_travail.module_cahierdetextes_domaine_id)' . ' WHERE module_cahierdetextes_domaine.kernel_bu_ecole_classe_id=:nodeId' . ' AND module_agenda_work.module_cahierdetextes_travail_id = module_cahierdetextes_travail.id' . ' AND module_cahierdetextes_travail.supprime = 0' . ' AND module_cahierdetextes_travail.a_faire = ' . self::TYPE_EN_CLASSE . ' AND module_cahierdetextes_travail.date_creation >= :dateDebut' . ' AND module_cahierdetextes_travail.date_creation <= :dateFin' . ' GROUP BY module_cahierdetextes_travail.id';
         $results = _doQuery($sql, array('dateDebut' => $dateDebutSemaine, 'dateFin' => $dateFinSemaine, 'nodeId' => $nodeId, 'agendaId' => $agendaId));
         foreach ($results as $result) {
             $arTravauxParJour[$result->date_creation][] = $result;
         }
     }
     return $arTravauxParJour;
 }
 /**
  * Récupération en session de l'aide simple en édition
  * @access: private.
  */
 private function _getSessionSimpleHelp()
 {
     _daoInclude('simplehelp');
     $oEdit = CopixSession::get('edithelp_object', 'simplehelp');
     return isset($oEdit) ? unserialize($oEdit) : null;
 }
 public function beforeProcess()
 {
     if (in_array(CopixSession::get('themechooser|theme'), $this->config->getThemeList())) {
         CopixTpl::setTheme(CopixSession::get('themechooser|theme'));
     }
 }
 public function processLogout()
 {
     require_once COPIX_UTILS_PATH . '../../simplesamlphp/lib/_autoload.php';
     $asId = 'iconito-sql';
     if (CopixConfig::exists('default|conf_Saml_authSource') && CopixConfig::get('default|conf_Saml_authSource')) {
         $asId = CopixConfig::get('default|conf_Saml_authSource');
     }
     $as = new SimpleSAML_Auth_Simple($asId);
     $ppo = new CopixPPO();
     $ppo->user = _currentUser();
     if ($ppo->user->isConnected()) {
         CopixAuth::getCurrentUser()->logout(array());
         CopixEventNotifier::notify('logout', array('login' => CopixAuth::getCurrentUser()->getLogin()));
         CopixAuth::destroyCurrentUser();
         CopixSession::destroyNamespace('default');
     }
     $as->logout(_url() . 'simplesaml/saml2/idp/initSLO.php?RelayState=' . urlencode(_url('auth|saml|logout_cas')));
     // $as->logout(_url ().'simplesaml/saml2/idp/initSLO.php?RelayState='.urlencode(_url() . 'logout.php'));
 }