public function processGetTable()
 {
     $ppo = new CopixPPO();
     // Si c'est pour de l'ajax
     if (CopixRequest::get('url') == null) {
         try {
             //Recup les données
             $id = CopixRequest::get('table_id');
             $table = CopixListFactory::get($id);
             if (CopixRequest::get('submit') !== 'false') {
                 $table->getFromRequest();
             }
             //On génère le HTML
             $ppo->MAIN = $table->generateTable();
         } catch (Exception $e) {
             //En cas d'erreur en etant en ajax, on renvoi l'erreur
             $ppo->MAIN = $e->getMessage();
             return _arDirectPPO($ppo, 'blank.tpl');
         }
         return _arDirectPPO($ppo, 'blank.tpl');
         //Si c'est pas en ajax
     } else {
         //On récup les données
         $id = CopixRequest::get('table_id');
         $table = CopixListFactory::get($id);
         if (CopixRequest::get('submit') !== 'false') {
             $table->getFromRequest();
         }
         //Et on redirige
         return _arRedirect(_url(CopixRequest::get('url')));
     }
 }
 /**
  *
  */
 public function processLaunch()
 {
     //Si aucun test n'est donné, on redirige vers la page de choix
     if (($test = _request('tests')) === null) {
         return _arRedirect(_url('unittest|'));
     }
     //Si on a demandé à lancer les tests avec Ajax, on génère le template d'appel pour chaque élément
     if (_request('ajax')) {
         $ppo = new CopixPpo();
         $ppo->TITLE_PAGE = 'Lancements des tests unitaires';
         $ppo->arTests = $this->_getTest();
         return _arPpo($ppo, 'tests.launch.php');
     } else {
         //on a pas demandé d'appel type ajax, donc on lance directement les tests demandés.
         if (CopixAjax::isAJAXRequest()) {
         } else {
             //C'est une demande normale, la réponse sera de type HTML
             $more = '';
         }
     }
     //On lance enfin la demande de test
     $httpClientRequest = new CopixHTTPClientRequest(CopixUrl::appendToUrl(_url() . 'test.php', array('tests' => $test, 'xml' => CopixAjax::isAJAXRequest())));
     $httpClient = new CopixHttpClient();
     $response = $httpClient->launch($httpClientRequest);
     return _arContent($response[0]->getBody(), array('content-type' => 'text/html'));
 }
 /**
  * Actiongroup qui permet de gérer la suppression
  *
  */
 public function processDelete()
 {
     $form = CopixFormFactory::get(_request('form_id'));
     $form->delete(CopixRequest::asArray());
     $url = _request('url');
     return _arRedirect(_url($url));
 }
 /**
  * Par défaut, on redirige vers l'url d'accueil définie dans les paramètres
  */
 public function processDefault()
 {
     $home = CopixConfig::get('|homePage');
     if (strpos($home, 'http://') !== 0) {
         $home = _url() . $home;
     }
     return _arRedirect($home);
 }
 /**
  * Supression d'un plugin de la liste des plugins enregistrés
  */
 public function processRemovePlugin()
 {
     //on regarde si le plugin fait parti des plugins déja enregistrés
     $arPluginsConfiguration = array();
     if (in_array($pluginName = CopixRequest::get('plugin'), $arPlugins = CopixConfig::instance()->plugin_getRegistered())) {
         foreach ($arPlugins as $plugin) {
             if ($plugin != $pluginName) {
                 $arPluginsConfiguration[] = $plugin;
             }
         }
         _class('PluginsConfigurationFile')->write($arPluginsConfiguration);
     }
     return _arRedirect(_url('plugin|'));
 }
 /**
  * Supression d'une variable de session.
  */
 public function processRemove()
 {
     $namespace = CopixRequest::get('for_namespace');
     $key = CopixRequest::get('key');
     if ($namespace !== null) {
         if ($key !== null) {
             unset($_SESSION['COPIX'][$namespace][$key]);
         } else {
             unset($_SESSION['COPIX'][$namespace]);
         }
     } else {
         if (isset($_SESSION[$key])) {
             unset($_SESSION[$key]);
         }
     }
     return _arRedirect(_url(CopixRequest::get('popup') ? 'admin|session|popup' : 'admin|session|'));
 }
 /**
  * Ajout d'un commentaire dans la base après vérification des droits d'écriture
  * et que l'on a bien la bonne session
  */
 public function processAddComment()
 {
     //Vérifie que l'on a bien un paramètre id
     CopixRequest::assert('id');
     if (($informations = _ioClass('commentsservices')->getEnabled(_request('id'))) === false) {
         throw new Exception(_i18n('comments.error.badidsession'));
     }
     //_log ('FROMPAGE: '.$informations['fromPage']);
     //_log ('POUR ID: '._request ('id'));
     //vérifie les droits d'écriture
     if ($informations['writeCredential'] != "") {
         CopixAuth::getCurrentUser()->assertCredential($informations['writeCredential']);
     }
     //Ajout du commentaire
     $objComment = _record('comments');
     $objComment->content_comment = _request('content');
     $objComment->format_comment = 'TEXT';
     //aujourd'hui on ne supporte que le format text pour les commentaires
     $objComment->authorlogin_comment = _request('author');
     $objComment->authoremail_comment = _request('mail');
     $objComment->authorsite_comment = _request('site');
     $objComment->page_comment = $informations['id'];
     $objComment->date_comment = date('YmdHis');
     if (CopixConfig::get('comments|captcha') != 0) {
         $objComment->captcha_id = _request('captcha_id');
         $objComment->captcha_answer = _request('captcha_answer');
     }
     try {
         if (_request('preview') === null) {
             _ioDAO('comments')->insert($objComment);
             _ioClass('commentsservices')->removeEnabled($informations['id']);
             _notify('Content', array('id' => $informations['id'], 'kind' => 'comment', 'keywords' => null, 'title' => $informations['id'], 'summary' => null, 'content' => $objComment->content_comment, 'url' => $informations['fromPage']));
             return _arRedirect($informations['fromPage']);
         } else {
             _ioClass('commentsservices')->updateEnabled($objComment);
             return _arRedirect(_url($informations['fromPage'], array('preview' => 1, 'comments' => 'list')));
         }
     } catch (CopixDAOCheckException $e) {
         _ioClass('commentsservices')->updateEnabled($objComment);
         return _arRedirect(_url($informations['fromPage'], array('errors' => 1, 'comments' => 'list')));
     }
 }
 /**
  * Fonction permettant d'afficher une exception à l'écran.
  * Principalement destinée à l'utilisation interne, pas nécessairement à l'utilisation depuis l'url
  *
  */
 public function processException()
 {
     CopixRequest::assert('exception');
     $e = _request('exception');
     //Absolument impossible dans le contexte normal d'utilisation, $e est nécessairement une exception
     //catchée par le processus.
     if (!$e instanceof Exception) {
         return _arRedirect(_url('||'));
     }
     $ppo = new CopixPPO();
     $ppo->TITLE_PAGE = _request('TITLE_PAGE', get_class($e));
     switch (get_class($e)) {
         case 'CopixDAOCheckException':
             $ppo->message = sprintf('Une erreur de validation est survenue avec le message [%s]', implode(', ', $e->getErrors()));
             break;
         default:
             $ppo->message = $e->getMessage();
     }
     $ppo->type = get_class($e);
     $ppo->file = $e->getFile();
     $ppo->line = $e->getLine();
     $ppo->trace = $e->getTrace();
     $ppo->id = uniqid();
     $ppo->urlBack = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
     switch (CopixConfig::instance()->getMode()) {
         case CopixConfig::DEVEL:
             $ppo->mode = 'DEVEL';
             break;
         case CopixConfig::PRODUCTION:
             $ppo->mode = 'FORCE_INITIALISATION';
             break;
         case CopixConfig::FORCE_INITIALISATION:
             $ppo->mode = 'FORCE_INITIALISATION';
             break;
         default:
             $ppo->mode = 'UNKNOW';
             break;
     }
     return _arPpo($ppo, 'default|exception.tpl');
 }
 /**
  * On retourne sur la page de choix des tests unitaires à lancer
  */
 public function processDefault()
 {
     return _arRedirect(_url('unittest|'));
 }
 /**
  * Sélection d'un module et redirection vers la page par défaut
  * (simplement pour éviter les problèmes de rafraichissement de page)
  */
 public function processSelectModule()
 {
     return _arRedirect(_url('admin|parameters|', CopixRequest::get('choiceModule') !== null ? array('choiceModule' => CopixRequest::get('choiceModule')) : array()));
 }
 /**
  * Effacer une aide simple
  *
  */
 public function processDelete()
 {
     if (CopixRequest::get('id_sh', null) === null) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => _i18n('simplehelp.error.missingParameters'), 'back' => _url('simplehelp|admin|listAide')));
     }
     $dao = _ioDao('simplehelp');
     if (!($toDelete = $dao->get(CopixRequest::get('id_sh')))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => _i18n('simplehelp.unableToFind'), 'back' => _url('simplehelp|admin|listAide')));
     }
     //Confirmation screen ?
     if (CopixRequest::get('confirm', null) === null) {
         return CopixActionGroup::process('generictools|Messages::getConfirm', array('title' => _i18n('simplehelp.title.confirmdelevent'), 'message' => _i18n('simplehelp.message.confirmdelevent'), 'confirm' => _url('simplehelp|admin|delete', array('id_sh' => $toDelete->id_sh, 'confirm' => '1')), 'cancel' => _url('simplehelp|admin|listAide')));
     }
     //Delete aide
     $dao->delete($toDelete->id_sh);
     return _arRedirect(_url('simplehelp|admin|listAide'));
 }
 /**
  * Set the home page of the web site
  */
 public function processsetHomePage()
 {
     if (_request('id') !== null) {
         CopixConfig::set('|homePage', _url('cms|default|get', array('id' => CopixRequest::get('id'), 'online' => 'true')));
     } elseif (($url = CopixRequest::get('urlinput')) !== null) {
         CopixConfig::set('|homePage', $url);
     } else {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => _i18n('error|error.specifyid'), 'back' => _url('admin||')));
     }
     return _arRedirect(_url('admin||'));
 }
 public function processDefault()
 {
     return _arRedirect(_url('|getHome'));
 }
 /**
  * Catch les exceptions de check de formulaire générées dans le process de l'actiongroup
  *
  * @param object $pException Exception
  * @return object CopixActionReturn
  */
 public function _catchActionExceptions($pException)
 {
     if ($pException instanceof CopixFormCheckException) {
         $urlParams['mode_' . _request('form_id')] = 'edit';
         $urlParams['error_' . _request('form_id')] = true;
         $this->_form->setErrors($pException->getErrors());
         return _arRedirect(_url(_request('url'), $urlParams));
     } else {
         return $this->catchActionExceptions($pException);
     }
 }
 /**
  * Définition du thème à utiliser
  */
 public function processDoSelectTheme()
 {
     $theme = _request('id_ctpt', null, true);
     CopixConfig::set('defaultThemeId', $theme);
     return _arRedirect(_url('admin|themes|'));
 }
 /**
  * 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(''));
 }
 public function processAdd_Admin()
 {
     if (!Kernel::isAdmin()) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get()));
     }
     $groupe_id = _request("groupe");
     $tplHome = new CopixTpl();
     $tpl = new CopixTpl();
     $tpl->assign('TITLE_PAGE', CopixI18N::get('sysutils|admin.moduleDescription'));
     $tpl->assign('MENU', Admin::getMenu('groupes'));
     $tplHome->assign('groupe_id', $groupe_id);
     $new_admin_check = array();
     if (_request('save', 0)) {
         $new_admins = _request('new_admins');
         $new_admins = preg_split("/[\\s,]+/", $new_admins);
         foreach ($new_admins as $new_admin) {
             if (trim($new_admin) == '') {
                 continue;
             }
             $sql = "\n                    SELECT\n                        dbuser.id_dbuser, dbuser.login_dbuser,\n                        kernel_link_bu2user.bu_type, kernel_link_bu2user.bu_id,\n                        kernel_link_user2node.droit, kernel_link_user2node.debut, kernel_link_user2node.fin\n                    FROM dbuser\n                    JOIN kernel_link_bu2user ON kernel_link_bu2user.user_id=dbuser.id_dbuser\n                    LEFT JOIN kernel_link_user2node ON kernel_link_user2node.user_type=kernel_link_bu2user.bu_type AND kernel_link_user2node.user_id=kernel_link_bu2user.bu_id AND kernel_link_user2node.node_type='CLUB' AND kernel_link_user2node.node_id=:node_id\n                    WHERE dbuser.login_dbuser=:login_dbuser\n                ";
             $new_admin_check[$new_admin] = _doQuery($sql, array(':login_dbuser' => $new_admin, ':node_id' => $groupe_id));
             if (!count($new_admin_check[$new_admin])) {
                 // login inconnu
                 // NE RIEN FAIRE !!!
             } elseif (!$new_admin_check[$new_admin][0]->bu_type) {
                 // login non rattaché
                 // NE RIEN FAIRE !!!
             } elseif ($new_admin_check[$new_admin][0]->droit) {
                 // déjà inscrit
                 // Modifier le droit actuel -> admin
                 $sql = "DELETE FROM kernel_link_user2node WHERE user_type=:user_type AND user_id=:user_id AND node_type=:node_type AND node_id=:node_id";
                 _doQuery($sql, array(':user_type' => $new_admin_check[$new_admin][0]->bu_type, ':user_id' => $new_admin_check[$new_admin][0]->bu_id, ':node_type' => 'CLUB', ':node_id' => $groupe_id));
                 $sql = "\n                        INSERT INTO kernel_link_user2node ( user_type,  user_id,  node_type,  node_id,  droit)\n                        VALUES                            (:user_type, :user_id, :node_type, :node_id, :droit)";
                 _doQuery($sql, array(':user_type' => $new_admin_check[$new_admin][0]->bu_type, ':user_id' => $new_admin_check[$new_admin][0]->bu_id, ':node_type' => 'CLUB', ':node_id' => $groupe_id, ':droit' => 70));
             } else {
                 // Ajouter le droit -> admin
                 $sql = "\n                        INSERT INTO kernel_link_user2node ( user_type,  user_id,  node_type,  node_id,  droit)\n                        VALUES                            (:user_type, :user_id, :node_type, :node_id, :droit)";
                 _doQuery($sql, array(':user_type' => $new_admin_check[$new_admin][0]->bu_type, ':user_id' => $new_admin_check[$new_admin][0]->bu_id, ':node_type' => 'CLUB', ':node_id' => $groupe_id, ':droit' => 70));
             }
         }
         $this->flash->new_admin_check = $new_admin_check;
         $tplHome->assign('new_admin_check', $new_admin_check);
         // echo "<pre>"; print_r($new_admin_check); echo "</pre>";
         return _arRedirect(_url('sysutils|groupes|'));
         $tpl->assign('MAIN', $tplHome->fetch('sysutils|groupes-addadmin-do.tpl'));
         return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
     }
     $sql = "SELECT * FROM module_groupe_groupe WHERE id=:id";
     $groupe_infos = _doQuery($sql, array(':id' => $groupe_id));
     if (!$groupe_infos) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get()));
     }
     $tplHome->assign('groupe_id', $groupe_id);
     $tplHome->assign('groupe_infos', $groupe_infos);
     $tpl->assign('MAIN', $tplHome->fetch('sysutils|groupes-addadmin.tpl'));
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 public function processLogin()
 {
     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);
     $_SESSION['chartValid'] = false;
     $ppo = new CopixPPO();
     $ppo->user = _currentUser();
     if ($ppo->user->isConnected()) {
         $url_return = CopixUrl::get('kernel||doSelectHome');
         /*
          * PATCH FOR CHARTE
          */
         $this->user->forceReload();
         if (!$this->service('charte|CharteService')->checkUserValidation()) {
             $this->flash->redirect = $url_return;
             return $this->go('charte|charte|valid');
         }
         return _arRedirect($url_return);
         //return new CopixActionReturn (COPIX_AR_REDIRECT, $url_return);
     } else {
         $as->requireAuth();
         $attributes = $as->getAttributes();
         /*
         echo "<pre>";
         print_r($attributes);
         die();
         */
         $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];
         } else {
             $ppo->saml_error = 'bad-conf-uidattribute';
             return _arPpo($ppo, 'saml-error.tpl');
         }
         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->saml_error = 'no-iconito-user';
                 return _arPpo($ppo, 'saml-error.tpl');
             }
         }
     }
     // $as->getLoginURL();
     /*
     if (!$as->isAuthenticated()) {
     	$url = SimpleSAML_Module::getModuleURL('core/authenticate.php', array('as' => $asId));
     	$params = array(
     		'ErrorURL' => CopixUrl::get ('auth|saml|test_error'),
     		'ReturnTo' => CopixUrl::get ('auth|saml|test_ok'),
     	);
     	$as->login($params);
     }
     */
     /*
     $attributes = $as->getAttributes();
     
     echo "<pre>";
     print_r($attributes);
     die();
     */
 }
 /**
  * Réécriture du chemin des classes
  *
  */
 public function processRebuildClassPath()
 {
     CopixAuth::getCurrentUser()->assertCredential('basic:admin');
     CopixAutoloader::getInstance()->rebuildClassPath();
     return _arRedirect(_url('admin||'));
 }
 /**
  * Verouille les commentaires sur un élément
  */
 public function processLock()
 {
     // On teste si on peut rediriger le lien
     CopixRequest::assert('url_return');
     // On teste si on a un id
     if (_request('id') !== null) {
         $lock_status = CopixRequest::getInt('lock_status');
         if ($lock_status === 0) {
             if (_ioDAO('commentslocked')->countBy(_daoSp()->addCondition('locked_page_comment', '=', _request('id'))) != 0) {
                 _ioDAO('commentslocked')->deleteBy(_daoSp()->addCondition('locked_page_comment', '=', _request('id')));
             }
         } else {
             $objLocked = _record('commentslocked');
             $objLocked->locked_page_comment = _request('id');
             _ioDAO('commentslocked')->insert($objLocked);
         }
     }
     return _arRedirect(_request('url_return'));
 }
 /**
  * Supression d'un cache
  */
 public function processDeleteType()
 {
     $type = _request('type');
     if (CopixRequest::getInt('confirm') == 1) {
         if (Copixcache::exists($type)) {
             Copixcache::clear($type);
         }
         $types = CopixConfig::instance()->copixcache_getRegisteredProfiles();
         unset($types[$type]);
         _class('cacheConfigurationFile')->write($types);
         return _arRedirect(_url('cache|admin'));
     } else {
         if (!in_array($type, CopixConfig::instance()->copixcache_getRegistered())) {
             return _arRedirect(_url('cache|admin'));
         }
         return CopixActionGroup::process('generictools|Messages::getConfirm', array('message' => _i18n('cache.delete', $type), 'confirm' => _url('admin|cache|deleteType', array('type' => $type, 'confirm' => 1)), 'cancel' => _url('admin|cache|admin')));
     }
 }
 /**
  * Ecran de connexion
  */
 public function processForm()
 {
     $ppo = new CopixPPO();
     $ppo->TITLE_PAGE = _i18n('auth.connect');
     if (CopixAuth::getCurrentUser()->isConnected()) {
         $ppo->user = CopixAuth::getCurrentUser();
         return _arRedirect(_url('kernel||getHome'));
     }
     $config = CopixConfig::instance();
     if (count($config->copixauth_getRegisteredUserHandlers()) > 1 && CopixConfig::get('auth|multipleConnectionHandler')) {
         $ppo->noCredential = true;
     }
     $ppo->auth_url_return = CopixRequest::get('auth_url_return', _url('#'));
     $ppo->failed = array();
     if (CopixRequest::getInt('noCredential', 0)) {
         $ppo->failed[] = _i18n('auth.error.noCredentials');
     }
     if (CopixRequest::getInt('failed', 0)) {
         $ppo->failed[] = _i18n('auth.error.failedLogin');
     }
     $ppo->createUser = Copixconfig::get('auth|createUser');
     $ppo->conf_Saml_actif = CopixConfig::exists('default|conf_Saml_actif') ? CopixConfig::get('default|conf_Saml_actif') : 0;
     return _arPPO($ppo, 'login.form.php');
 }
 /**
  * Supression d'un log
  */
 public function processDeleteProfile()
 {
     $profile = _request('profile');
     if (CopixRequest::getInt('confirm') == 1) {
         CopixLog::deleteProfile($profile);
         $profiles = CopixConfig::instance()->copixlog_getRegisteredProfiles();
         unset($profiles[$profile]);
         _class('LogConfigurationFile')->write($profiles);
         return _arRedirect(_url('log|admin'));
     } else {
         if (!in_array($profile, CopixConfig::instance()->copixlog_getRegistered())) {
             return _arRedirect(_url('log|admin'));
         }
         return CopixActionGroup::process('generictools|Messages::getConfirm', array('message' => _i18n('logs.delete', $profile), 'confirm' => _url('admin|log|deleteProfile', array('profile' => $profile, 'confirm' => 1)), 'cancel' => _url('admin|log|admin')));
     }
 }
 /**
  * Sauvegarde les handlers dans le fichier de configuration
  *
  * @return ActionReturn
  */
 public function processSaveHandlers()
 {
     CopixRequest::assert('type');
     $activeHandler = array();
     foreach (_request('handlers', array()) as $handler) {
         $activeHandler[] = $handler;
     }
     _classInclude('auth|useConfigurationFile');
     $configurationFile = new useConfigurationFile(_request('type'));
     $configurationFile->write($activeHandler);
     return _arRedirect(_url('admin||'));
 }
 /**
  * Permet d'exporter les classes des modukes
  *
  * @return CopixActionReturn
  */
 public function processExportClass()
 {
     $pModuleName = CopixRequest::get('moduleName');
     $pClassFileName = CopixRequest::get('classFileName');
     // si on a confirmé l'ajout
     if (CopixRequest::get('confirm')) {
         $pServiceName = trim(CopixRequest::get('serviceName'));
         $pClassName = CopixRequest::get('className');
         $pClassFileName = _request('classFileName');
         $pModuleName = _request('moduleName');
         // nom de service vide
         if ($pServiceName == '') {
             return _arRedirect(_url('admin|ExportClass', array('error' => 'serviceEmpty', 'moduleName' => $pModuleName, 'classFileName' => $pClassFileName)));
         }
         // verification si on n'a pas déja un service de ce nom
         $wsservices = _ioDao('wsservices')->findBy(_daoSP()->addCondition('name_wsservices', '=', $pServiceName));
         if (count($wsservices) > 0) {
             return _arRedirect(_url('admin|ExportClass', array('error' => 'serviceExists', 'moduleName' => $pModuleName, 'classFileName' => $pClassFileName)));
         }
         CopixDB::getConnection()->doQuery("insert into wsservices (name_wsservices, module_wsservices, file_wsservices, class_wsservices) values ('" . $pServiceName . "','" . $pModuleName . "','" . $pClassFileName . "', '" . $pClassName . "')");
         $res = 'Url du Webservice  : <a href="' . _url('wsserver||', array('wsname' => $pServiceName)) . '">' . _url('wsserver||', array('wsname' => $pServiceName)) . '</a><br/>' . "\n";
         $res .= 'Url du fichier wsdl : <a href="' . _url('wsserver|default|wsdl', array('wsname' => $pServiceName)) . '">' . _url('wsserver|default|wsdl', array('wsname' => $pServiceName)) . '</a><br/>' . "\n";
         $res .= '<br />';
         $res .= '<input type="button" value="' . _i18n('wsserver.back') . '" onclick="javascript: document.location=\'' . _url('admin|manageWebServices') . '\';" />';
         $tpl = new CopixTpl();
         $tpl->assign('MAIN', $res);
         return new CopixActionReturn(CopixActionReturn::DISPLAY, $tpl);
         // si on doit afficher le formulaire d'ajout
     } else {
         $ppo = new CopixPPO();
         $ppo->TITLE_PAGE = _i18n('wsserver.title.manageWebServices');
         $ppo->classFileName = $pClassFileName;
         $ppo->arErrors = array();
         // erreur "service existant" passée en paramètre
         if (_request('error') !== null) {
             $ppo->arErrors[] = _i18n('wsserver.error.' . _request('error'));
         }
         $ppo->ModuleName = $pModuleName;
         $arBefore = get_declared_classes();
         include CopixModule::getPath($pModuleName) . COPIX_CLASSES_DIR . $pClassFileName;
         $arAfter = get_declared_classes();
         $arClass = array_diff($arAfter, $arBefore);
         sort($arClass);
         if (count($arClass) == 0) {
             throw new Exception('Pas de classe à exporter');
         }
         $ppo->arClass = $arClass;
         return _arPPO($ppo, 'wsservices.add.php');
     }
 }
 /**
  * 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'));
 }
 public function processSave()
 {
     if (!$this->flash->has('nextAnsw')) {
         return $this->error('quiz.errors.badOperation');
     }
     if (is_null(qSession('id'))) {
         return CopixActionGroup::process('quiz|default::Quiz', array('id' => false));
     }
     //get url's answ id
     $qId = $this->request('qId') * 1;
     //test id validity
     if ($qId != $this->flash->currentAnsw) {
         return $this->error('quiz.errors.badOperation');
     }
     //get responses form datas
     $pResponse = CopixRequest::get('response', false);
     if (!$pResponse) {
         $this->flash->error = $this->i18n('quiz.errors.emptyResponse');
         return $this->go('quiz|default|question', array('id' => qSession('id'), 'qId' => $this->flash->currentAnsw));
     }
     $optType = $this->flash->typeAnsw == 'choice' ? 'radio' : 'txt';
     $userId = $this->user->id;
     //delete previous info
     $criteres = _daoSp()->addCondition('id_user', '=', $userId)->addCondition('id_question', '=', $this->flash->currentAnsw, 'and');
     _dao('quiz_response_insert')->deleteBy($criteres);
     if ($optType == 'radio') {
         $i = 0;
         foreach ($pResponse as $response) {
             $record = _record('quiz_response_insert');
             $record->id_user = $userId;
             $record->id_choice = $response + 0;
             $record->id_question = $this->flash->currentAnsw;
             $record->date = time();
             $responses[] = $response + 0;
             _dao('quiz_response_insert')->insert($record);
             $i++;
         }
     } else {
         //cas du submit txt
     }
     //lock test
     $quizData = _dao('quiz_quiz')->get(qSession('id'));
     if ($quizData->lock == 1) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('quiz.errors.lock'), 'back' => CopixUrl::get('quiz||')));
     }
     $nextQ = $this->flash->nextAnsw;
     //if next answ = flash : end of quiz
     if (!$nextQ) {
         return _arRedirect(_url('quiz|default|endQuestions', array('id' => qSession('id'))));
     }
     return _arRedirect(_url('quiz|default|question', array('id' => qSession('id'), 'qId' => $nextQ)));
 }
 /**
  * Efface tous les droits associés a un id_dc ou un id_dcv
  */
 public function processDelete()
 {
     $id_dc = _request('id_dc');
     if ($id_dc !== null) {
         _dao('dynamiccredentials')->delete($id_dc);
         _dao('dynamiccredentialsvalues')->deleteBy(_daoSP()->addCondition('id_dc', '=', $id_dc));
         _dao('dynamiccredentialsgroups')->deleteBy(_daoSP()->addCondition('id_dc', '=', $id_dc));
     }
     $id_dcv = _request('id_dcv');
     if ($id_dcv !== null) {
         _dao('dynamiccredentialsvalues')->delete($id_dcv);
         _dao('dynamiccredentialsgroups')->deleteBy(_daoSP()->addCondition('id_dcv', '=', $id_dcv));
     }
     return _arRedirect(_url('auth|dynamic|list', array('id_group' => _request('id_group'), 'handler_group' => _request('handler_group'), 'url_return' => _request('url_return'))));
 }
 public function go($iUrl = 'default', $iParams = array())
 {
     //build url :
     $back = $iUrl == 'default' ? $this->module . '||' : $iUrl;
     return _arRedirect($this->url($iUrl, $iParams));
 }
 /**
  * Ré-génération des mots de passe d'une classe
  */
 public function processResetClassroomPasswords()
 {
     $ppo = new CopixPPO();
     $ppo->nodeId = _request('nodeId', null);
     // Récupération des paramètres
     if (is_null($ppo->nodeId)) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => "Une erreur est survenue.", 'back' => CopixUrl::get('gestionautonome||showTree')));
     }
     $classroomDAO = _ioDAO('kernel|kernel_bu_ecole_classe');
     if (!($classroom = $classroomDAO->get($ppo->nodeId))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => "Une erreur est survenue.", 'back' => CopixUrl::get('gestionautonome||showTree')));
     }
     // Contrôle des droits
     $ppo->hasCredentialTeacherUpdate = _currentUser()->testCredential('module:classroom|' . $ppo->nodeId . '|teacher|update@gestionautonome');
     $ppo->hasCredentialStudentUpdate = _currentUser()->testCredential('module:classroom|' . $ppo->nodeId . '|student|update@gestionautonome');
     $ppo->hasCredentialPersonInChargeUpdate = _currentUser()->testCredential('module:classroom|' . $ppo->nodeId . '|person_in_charge|update@gestionautonome');
     if (!$ppo->hasCredentialPersonInChargeUpdate && !$ppo->hasCredentialStudentUpdate && !$ppo->hasCredentialPersonInChargeUpdate) {
         throw new CopixCredentialException();
     }
     // Infos du noeud
     $nodeInfos = Kernel::getNodeInfo('BU_CLASSE', $ppo->nodeId);
     // Compteur max
     $counters = array();
     // Récupération des enseignants de la classe
     $ppo->teachers = array();
     if ($ppo->hasCredentialTeacherUpdate) {
         $personnelDAO = _ioDAO('kernel|kernel_bu_personnel');
         $ppo->teachers = $personnelDAO->findTeachersByClassroomId($ppo->nodeId);
         $counters[] = count($ppo->teachers);
     }
     // Récupération des élèves de la classe
     $ppo->students = array();
     if ($ppo->hasCredentialStudentUpdate) {
         $studentDAO = _ioDAO('kernel|kernel_bu_ele');
         $ppo->students = $studentDAO->getStudentsByClass($ppo->nodeId);
         $counters[] = count($ppo->students);
     }
     // Récupération des parents de la classe
     $ppo->personsInCharge = array();
     if ($ppo->hasCredentialPersonInChargeUpdate) {
         $responsableDAO = _ioDAO('kernel|kernel_bu_res');
         $ppo->personsInCharge = $responsableDAO->getParentsInClasse($ppo->nodeId);
         $counters[] = count($ppo->personsInCharge);
     }
     // Compteur MAX
     $ppo->counter = max($counters);
     // Breadcrumbs & titre
     $breadcrumbs = Kernel::generateBreadcrumbs($nodeInfos);
     $breadcrumbs[] = array('txt' => 'Re-génération des mots de passe');
     $ppo->breadcrumbs = Kernel::PetitPoucet($breadcrumbs, ' &raquo; ');
     $ppo->TITLE_PAGE = CopixConfig::get('gestionautonome|moduleTitle');
     // Get vocabulary catalog to use
     $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog');
     $ppo->vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($ppo->nodeType, $ppo->nodeId);
     // Traitement du formulaire
     if (CopixRequest::isMethod('post')) {
         $studentsIds = _request('students', array());
         $teachersIds = _request('teachers', array());
         $personsInChargeIds = _request('personsInCharge', array());
         $dbuserDAO = _ioDAO('kernel|kernel_copixuser');
         // Mise en session globale des mots de passe
         $passwordsList = _sessionGet('modules|gestionautonome|passwordsList');
         if (!is_array($passwordsList)) {
             $passwordsList = array();
         }
         $ppo->accounts = array();
         foreach ($ppo->students as $student) {
             if (in_array($student->idEleve, $studentsIds)) {
                 if ($account = $dbuserDAO->getUserByBuIdAndBuType($student->idEleve, 'USER_ELE')) {
                     $password = Kernel::createPasswd();
                     $account->password_dbuser = md5($password);
                     $dbuserDAO->update($account);
                     // Mise en session de l'élève pour l'export des infos
                     $studentAr = array('lastname' => $student->nom, 'firstname' => $student->prenom1, 'login' => $account->login_dbuser, 'password' => $password, 'bu_type' => 'USER_ELE', 'bu_id' => $student->idEleve, 'type_nom' => Kernel::Code2Name('USER_ELE'), 'node_nom' => Kernel::Code2Name('BU_CLASSE') . ' ' . $nodeInfos['nom'], 'gender' => $student->id_sexe);
                     $passwordsList['USER_ELE'][$student->idEleve] = $studentAr;
                     $ppo->accounts[] = $studentAr;
                 }
             }
         }
         foreach ($ppo->personsInCharge as $personInCharge) {
             if (in_array($personInCharge->id, $personsInChargeIds)) {
                 if ($account = $dbuserDAO->getUserByBuIdAndBuType($personInCharge->id, 'USER_RES')) {
                     $password = Kernel::createPasswd();
                     $account->password_dbuser = md5($password);
                     $dbuserDAO->update($account);
                     // Mise en session de la personne responsable pour l'export des infos
                     $personAr = array('lastname' => $personInCharge->nom, 'firstname' => $personInCharge->prenom, 'login' => $account->login_dbuser, 'password' => $password, 'bu_type' => 'USER_RES', 'bu_id' => $personInCharge->id, 'type_nom' => Kernel::Code2Name('USER_RES'), 'node_nom' => Kernel::Code2Name('BU_CLASSE') . ' ' . $nodeInfos['nom'], 'gender' => $personInCharge->sexe);
                     $passwordsList['USER_RES'][$personInCharge->id] = $personAr;
                     $ppo->accounts[] = $personAr;
                 }
             }
         }
         foreach ($ppo->teachers as $teacher) {
             if (in_array($teacher->numero, $teachersIds)) {
                 if ($account = $dbuserDAO->getUserByBuIdAndBuType($teacher->numero, 'USER_ENS')) {
                     $password = Kernel::createPasswd();
                     $account->password_dbuser = md5($password);
                     $dbuserDAO->update($account);
                     // Mise en session de l'enseignant pour l'export des infos
                     $teacherAr = array('lastname' => $teacher->nom, 'firstname' => $teacher->prenom1, 'login' => $account->login_dbuser, 'password' => $password, 'bu_type' => 'USER_ENS', 'bu_id' => $teacher->numero, 'type_nom' => Kernel::Code2Name('USER_ENS'), 'node_nom' => Kernel::Code2Name('BU_CLASSE') . ' ' . $nodeInfos['nom'], 'gender' => $personInCharge->id_sexe);
                     $passwordsList['USER_ENS'][$teacher->numero] = $teacherAr;
                     $ppo->accounts[] = $teacherAr;
                 }
             }
         }
         if (!empty($ppo->accounts)) {
             _sessionSet('modules|gestionautonome|createAccount', $ppo->accounts);
             _sessionSet('modules|gestionautonome|passwordsList', $passwordsList);
             return _arRedirect(CopixUrl::get('gestionautonome||showNewClassroomPasswords', array('nodeId' => $ppo->nodeId)));
         } else {
             $ppo->error = 1;
         }
     }
     return _arPPO($ppo, 'reset_classroom_passwords.tpl');
 }