/**
  * Commentaires d'une procedure
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2008/01/30
  * @param object $rFiche Recordset de la procedure
  */
 public function _createContent(&$toReturn)
 {
     $tpl = new CopixTpl();
     $rFiche = $this->getParam('rFiche');
     $mondroit = $this->getParam('mondroit');
     $daoinfo =& _dao('infosupp');
     $sql = 'SELECT * FROM module_teleprocedure_infosupp WHERE idinter=' . $rFiche->idinter . '';
     $canCheckVisible = TeleproceduresService::canMakeInTelep('CHECK_VISIBLE', $mondroit);
     $canAddComment = TeleproceduresService::canMakeInTelep('ADD_COMMENT', $mondroit);
     if (!$canCheckVisible) {
         $sql .= " AND info_message!='' AND info_message IS NOT NULL";
     }
     $sql .= " ORDER BY dateinfo ASC, idinfo ASC";
     $results = _doQuery($sql);
     // Pour chaque message on cherche les infos de son auteur
     $list = array();
     foreach ($results as $r) {
         $userInfo = Kernel::getUserInfo("ID", $r->iduser);
         //var_dump($userInfo);
         $avatar = Prefs::get('prefs', 'avatar', $r->iduser);
         $userInfo['avatar'] = $avatar ? CopixConfig::get('prefs|avatar_path') . $avatar : '';
         $r->user = $userInfo;
         $list[] = $r;
     }
     //print_r($rFiche);
     $tpl->assign('info_message_edition', CopixZone::process('kernel|edition', array('field' => 'info_message', 'format' => $rFiche->type_format, 'content' => '', 'width' => 350, 'height' => 135, 'options' => array('toolbarSet' => 'IconitoBasic', 'enterMode' => 'br', 'toolbarStartupExpanded' => 'false'))));
     $tpl->assign('info_commentaire_edition', CopixZone::process('kernel|edition', array('field' => 'info_commentaire', 'format' => $rFiche->type_format, 'content' => '', 'width' => 350, 'height' => 135, 'options' => array('toolbarSet' => 'IconitoBasic', 'enterMode' => 'br', 'toolbarStartupExpanded' => 'false'))));
     $tpl->assign('canCheckVisible', $canCheckVisible);
     $tpl->assign('canAddComment', $canAddComment);
     $tpl->assign('list', $list);
     $tpl->assign('rFiche', $rFiche);
     $toReturn = $tpl->fetch('fiche-comms-zone.tpl');
     return true;
 }
Пример #2
0
 public function startExec()
 {
     if (_currentUser()->isConnected()) {
         $userId = _currentUser()->getId();
         $userInfos = Kernel::getUserInfo('ID', $userId);
         $this->director = false;
         $this->animator = _currentUser()->hasAssistance();
         $this->idEn = isset($userInfos['id']) ? $userInfos['id'] : null;
         $this->id = $userId * 1;
         $this->type = isset($userInfos['type']) ? $userInfos['type'] : null;
         $this->root = false;
         $this->login = $userInfos['login'];
         $this->nom = $userInfos['nom'];
         $this->prenom = $userInfos['prenom'];
         $this->connected = true;
         $this->chartValid = isset($_SESSION['chartValid']) ? $_SESSION['chartValid'] : false;
     } else {
         $this->director = false;
         $this->animator = false;
         $this->id = 0;
         $this->type = 'USER_ANON';
         $this->root = false;
         $this->login = '******';
         $this->nom = 'Anon';
         $this->prenom = 'Anon';
         $this->connected = false;
         $this->idEn = 0;
         $this->chartValid = true;
     }
 }
 /**
  * Affiche la fiche détaillée d'un utilisateur (login, nom, prénom...)
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2006/01/04
  * @param string $type Type de personne (USER_ELE, USER_ELE...)
  * @param integer $id Id
  */
 public function _createContent(&$toReturn)
 {
     $type = $this->getParam('type') ? $this->getParam('type') : NULL;
     $id = $this->getParam('id') ? $this->getParam('id') : NULL;
     if ($type && $id) {
         $usr = Kernel::getUserInfo($type, $id);
         //print_r($usr);
         /*
         $res = '<?xml version="1.0" ?>
         <person>
         <login>'.$login.'</login>
         <sexe>'.$usr['sexe'].'</sexe>
         <firstname>'.$usr['prenom'].'</firstname>
         <name>'.$usr['nom'].'</name>
         </person>
         ';
         */
         $tpl = new CopixTpl();
         $tpl->assign('usr', $usr);
         //$toReturn = utf8_encode($tpl->fetch ('getuser.tpl'));
         $toReturn = $tpl->fetch('getuser.tpl');
         //$toReturn = $res;
     }
     return true;
 }
 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 getSso()
 {
     $id = $this->getRequest('id', null);
     if (!$id) {
         // Récupération des infos de l'utilisateur.
         $userInfo = Kernel::getUserInfo();
         // Création des modules inexistants.
         Kernel::createMissingModules($userInfo["type"], $userInfo["id"]);
         // Liste des modules activés.
         $modsList = Kernel::getModEnabled($userInfo["type"], $userInfo["id"]);
         foreach ($modsList as $modInfo) {
             if ($modInfo->module_type == "MOD_SSO" && $modInfo->module_id) {
                 $urlReturn = CopixUrl::get('sso||getSso', array('id' => $modInfo->module_id));
                 return new CopixActionReturn(COPIX_AR_REDIRECT, $urlReturn);
             }
         }
     }
     if (!$id) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => 'Problème', 'back' => CopixUrl::get('||')));
     }
     $tpl = new CopixTpl();
     $tpl->assign('TITLE_PAGE', CopixI18N::get('sso.title.servext'));
     $dao = CopixDAOFactory::create("sso|sso_auth");
     // $all = $dao->findAll();
     $all = $dao->findBySso($id);
     $tpl->assign('MAIN', CopixZone::process('sso|SsoAuthList', array('list' => $all, 'id' => _request("id"))));
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 public function processLogin()
 {
     include_once COPIX_UTILS_PATH . '../../CAS-1.2.2/CAS.php';
     $_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 {
         $conf_Cas_host = CopixConfig::get('default|conf_Cas_host');
         $conf_Cas_port = CopixConfig::get('default|conf_Cas_port');
         $conf_Cas_path = CopixConfig::get('default|conf_Cas_path');
         phpCAS::client(CAS_VERSION_2_0, $conf_Cas_host, (int) $conf_Cas_port, $conf_Cas_path, false);
         phpCAS::setNoCasServerValidation();
         phpCAS::forceAuthentication();
         $ppo->cas_user = phpCAS::getUser();
         if ($ppo->cas_user) {
             $ppo->iconito_user = Kernel::getUserInfo("LOGIN", $ppo->cas_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');
                 $this->user->forceReload();
                 if (!$this->service('charte|CharteService')->checkUserValidation()) {
                     $this->flash->redirect = $url_return;
                     return $this->go('charte|charte|valid');
                 }
                 return new CopixActionReturn(COPIX_AR_REDIRECT, $url_return);
             } else {
                 $ppo->cas_error = 'no-iconito-user';
                 return _arPpo($ppo, 'cas.tpl');
             }
         }
     }
     $ppo = new CopixPPO();
     $ppo->TITLE_PAGE = $pTitle;
     phpCAS::setDebug();
     $conf_Cas_host = CopixConfig::get('default|conf_Cas_host');
     $conf_Cas_port = CopixConfig::get('default|conf_Cas_port');
     $conf_Cas_path = CopixConfig::get('default|conf_Cas_path');
     phpCAS::client(CAS_VERSION_2_0, $conf_Cas_host, (int) $conf_Cas_port, $conf_Cas_path, false);
     phpCAS::setNoCasServerValidation();
     phpCAS::forceAuthentication();
     if (isset($_REQUEST['logout'])) {
         phpCAS::logout();
     }
     die(phpCAS::getUser());
     die('ok');
     return _arPpo($ppo, 'handlers.list.tpl');
 }
 /**
  * Admins
  *
  * Affiche la liste des administrateurs
  *
  * @package	Comptes
  * @author	Frédéric Mossmann <*****@*****.**>
  */
 public function processDefault()
 {
     if (!Kernel::isAdmin()) {
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('||'));
     }
     $roles = _request('role');
     $new_admin = _request('new_admins');
     if ($roles) {
         $sql = "\n                SELECT dbuser.*, kernel_link_bu2user.*\n                FROM dbuser\n                JOIN kernel_link_bu2user ON dbuser.id_dbuser=kernel_link_bu2user.user_id\n                WHERE dbuser.id_dbuser IN (" . implode(',', array_keys($roles)) . ")\n            ";
         $admins_mod = _doQuery($sql);
         foreach ($admins_mod as $admins_mod_item) {
             $sql = "\n                    DELETE FROM kernel_link_user2node\n                    WHERE node_type='ROOT' AND node_id=0\n                    AND   user_type=:bu_type AND user_id=:bu_id\n                ";
             _doQuery($sql, array(':bu_type' => $admins_mod_item->bu_type, ':bu_id' => $admins_mod_item->bu_id));
             $sql = "\n                    DELETE FROM dbgroup_users\n                    WHERE id_dbgroup=:id_dbgroup AND userhandler_dbgroup=:userhandler_dbgroup AND user_dbgroup=:user_dbgroup";
             $params = array(':id_dbgroup' => 1, ':userhandler_dbgroup' => 'auth|dbuserhandler', ':user_dbgroup' => $admins_mod_item->id_dbuser);
             _doQuery($sql, $params);
             if ($roles[$admins_mod_item->id_dbuser]) {
                 $sql = "\n                        INSERT INTO kernel_link_user2node\n                            ( user_type,  user_id,  node_type,  node_id,  droit)\n                        VALUES\n                            (:user_type, :user_id, :node_type, :node_id, :droit)\n                        ";
                 $params = array(':user_type' => $admins_mod_item->bu_type, ':user_id' => $admins_mod_item->bu_id, ':node_type' => 'ROOT', ':node_id' => 0, ':droit' => $roles[$admins_mod_item->id_dbuser]);
                 _doQuery($sql, $params);
                 $sql = "\n                        INSERT INTO dbgroup_users\n                            ( id_dbgroup,  userhandler_dbgroup,  user_dbgroup)\n                        VALUES\n                            (:id_dbgroup, :userhandler_dbgroup, :user_dbgroup)\n                        ";
                 $params = array(':id_dbgroup' => 1, ':userhandler_dbgroup' => 'auth|dbuserhandler', ':user_dbgroup' => $admins_mod_item->id_dbuser);
                 _doQuery($sql, $params);
             }
         }
     }
     if ($new_admin) {
         $new_admin_array = split(',', $new_admin);
         $new_admin_array_clean = array_map('trim', $new_admin_array);
         $sql_newadmins = "OR dbuser.login_dbuser IN (";
         $first = true;
         foreach ($new_admin_array_clean as $new_admin_array_item) {
             $sql_newadmins .= (!$first ? ", " : "") . "'" . addslashes($new_admin_array_item) . "'";
             $first = false;
         }
         $sql_newadmins .= ")";
     } else {
         $sql_newadmins = '';
     }
     $sql = "\n            SELECT dbuser.*, kernel_link_bu2user.*, kernel_link_user2node.*\n            FROM dbuser\n            JOIN kernel_link_bu2user ON dbuser.id_dbuser=kernel_link_bu2user.user_id\n            LEFT JOIN kernel_link_user2node ON kernel_link_bu2user.bu_type=kernel_link_user2node.user_type AND kernel_link_bu2user.bu_id=kernel_link_user2node.user_id AND kernel_link_user2node.node_type='ROOT' AND kernel_link_user2node.node_id=0\n            WHERE (node_type='ROOT' AND node_id=0)\n            " . $sql_newadmins . "\n            ORDER BY kernel_link_user2node.droit DESC,dbuser.login_dbuser\n        ";
     $admins = _doQuery($sql);
     foreach ($admins as &$admin) {
         $admin->user_infos = Kernel::getUserInfo($admin->bu_type, $admin->bu_id);
     }
     /*
     dbuser : id_dbuser 	login_dbuser 	password_dbuser 	email_dbuser 	enabled_dbuser
     kernel_link_bu2user : user_id 	bu_type 	bu_id
     kernel_link_user2node : user_type 	user_id 	node_type 	node_id 	droit 	debut 	fin
     */
     $tpl = new CopixTpl();
     $tplListe = new CopixTpl();
     $tplListe->assign("admins", $admins);
     $tplListe->assign("user_id", _currentUser()->getExtra('user_id'));
     $tplListe->assign("admin_fonctionnel", Kernel::isAdminFonctionnel());
     $main = $tplListe->fetch("admins-list.tpl");
     $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.admins'));
     $tpl->assign('MAIN', $main);
     $tpl->assign('MENU', $this->menu);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * Récupération de tous les agendas en base de données
  * @author Audrey Vassal <*****@*****.**>
  * @since 2006/07/24
  * @return array tableau d'objet agenda
  */
 public function getAvailableAgenda()
 {
     //var_dump($_SESSION);
     if (!_sessionGet('modules|agenda|his')) {
         $serviceAuth = new AgendaAuth();
         $res = array();
         $ags = array();
         // 1. Son agenda perso
         $userInfo = Kernel::getUserInfo();
         // Création des modules inexistants.
         Kernel::createMissingModules($userInfo["type"], $userInfo["id"]);
         // Liste des modules activés.
         $modsList = Kernel::getModEnabled($userInfo["type"], $userInfo["id"]);
         foreach ($modsList as $modInfo) {
             if ($modInfo->module_type == "MOD_AGENDA" && $modInfo->module_id) {
                 $ags[] = $modInfo->module_id;
             }
         }
         // 2. Ceux de sa classe, son école, ses groupes...
         $mynodes = Kernel::getNodes();
         foreach ($mynodes as $nodes) {
             foreach ($nodes as $node) {
                 //print_r($node);
                 if (substr($node['type'], 0, 5) == 'USER_') {
                     continue;
                 }
                 $modules = Kernel::getModEnabled($node['type'], $node['id']);
                 $agenda = Kernel::filterModuleList($modules, 'MOD_AGENDA');
                 if ($agenda && $serviceAuth->getCapability($agenda[0]->module_id) >= $serviceAuth->getRead()) {
                     $ags[] = $agenda[0]->module_id;
                 }
             }
         }
         //print_r($ags);
         $daoAgenda =& CopixDAOFactory::getInstanceOf('agenda|agenda');
         $agendas = $daoAgenda->findAgendasInIds($ags);
         foreach ($agendas as $agenda) {
             $tmp = new stdClass();
             $tmp->id_agenda = $agenda->id_agenda;
             $tmp->title_agenda = $agenda->title_agenda;
             $tmp->desc_agenda = $agenda->desc_agenda;
             $tmp->type_agenda = $agenda->type_agenda;
             /*
                       $tmp = array (
                           'id_agenda' => $agenda->id_agenda,
                           'title_agenda' => $agenda->title_agenda,
                           'desc_agenda' => $agenda->desc_agenda,
                           'type_agenda' => $agenda->type_agenda,
                       );
             */
             $res[] = $tmp;
         }
         //die();
         //$sess = $daoAgenda->findAll ();
         _sessionSet('modules|agenda|his', serialize($res));
     }
     return unserialize(_sessionGet('modules|agenda|his'));
 }
 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);
 }
 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');
         }
     }
 }
/**
 * Affichage des infos d'une personne selon son ID utilisateur
 * @author   Christophe Beyer <*****@*****.**>
 * @since    2010/12/13
 * @param    integer  $id Id utilisateur (cf table dbuser)
 * @return   string
 */
function smarty_function_user_id($params, &$smarty)
{
    if (!isset($params['id'])) {
        $smarty->trigger_error("mailto: missing 'id' parameter");
        return;
    }
    $res = '';
    if ($userInfo = Kernel::getUserInfo("ID", $params['id'])) {
        $label = trim($userInfo['prenom'] . ' ' . $userInfo['nom']);
        $res = '<a ' . $params['linkAttribs'] . ' class="viewuser" user_type="' . $userInfo['type'] . '" user_id="' . $userInfo['id'] . '">' . $label . '</a>';
    }
    if (isset($params['assign'])) {
        $smarty->assign($params['assign'], $res);
        return '';
    } else {
        return $res;
    }
}
 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');
 }
 /**
  * Affiche la liste des personnes ayant des droits spécifiques sur un blog
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2007/05/31
  * @param object $blog Blog (recordset)
  * @param integer $kind Numéro générique de la rubrique (ne pas y toucher)
  * @param string $attribs Attributs HTML de la liste (STYLE, ONCHANGE...)
  */
 public function _createContent(&$toReturn)
 {
     //Getting the user.
     //Create Services, and DAO
     $tpl = new CopixTpl();
     $blog = $this->getParam('blog', null);
     $kind = $this->getParam('kind', null);
     $droit = $this->getParam('droit', null);
     $errors = $this->getParam('errors');
     $membres = $this->getParam('membres');
     $droit = $this->getParam('droit');
     //Kernel::deb("droit=$droit");
     //print_r($blog);
     // On vérifie le droit d'être ici
     if (!BlogAuth::canMakeInBlog("ADMIN_DROITS", $blog)) {
         return false;
     }
     $groupeService =& CopixClassesFactory::Create('groupe|groupeService');
     $childs = Kernel::getNodeChilds("MOD_BLOG", $blog->id_blog);
     foreach ($childs as $k => $v) {
         //print_r($v);
         $userInfo = Kernel::getUserInfo($v["type"], $v["id"]);
         $childs[$k]["login"] = $userInfo["login"];
         $childs[$k]["nom"] = $userInfo["nom"];
         $childs[$k]["prenom"] = $userInfo["prenom"];
         $childs[$k]["droitnom"] = $groupeService->getRightName($v['droit']);
     }
     //print_r($childs);
     $tplHome = new CopixTpl();
     //$tplHome->assign ('groupe', $groupe[0]);
     $tpl->assign('kind', $kind);
     $tpl->assign('droit', $droit);
     $tpl->assign('list', $childs);
     $tpl->assign('errors', $errors);
     $tpl->assign('membres', $membres);
     $tpl->assign('linkpopup', CopixZone::process('annuaire|linkpopup', array('field' => 'membres')));
     $tpl->assign('droit_values', array(PROFILE_CCV_VALID => $groupeService->getRightName(PROFILE_CCV_VALID), PROFILE_CCV_MODERATE => $groupeService->getRightName(PROFILE_CCV_MODERATE)));
     $tpl->assign('blog', $blog);
     // retour de la fonction :
     $toReturn = $tpl->fetch('blog.show.droits.tpl');
     return true;
 }
 /**
  * Affiche la fiche détaillée d'un utilisateur (login, nom, prénom...)
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2006/01/04
  * @param string $type Type de personne (USER_ELE, USER_ELE...)
  * @param integer $id Id
  */
 public function _createContent(&$toReturn)
 {
     $annuaireService =& CopixClassesFactory::Create('annuaire|AnnuaireService');
     $type = $this->getParam('type') ? $this->getParam('type') : NULL;
     $id = $this->getParam('id') ? $this->getParam('id') : NULL;
     $canWrite = $canView = false;
     if ($type && $id) {
         $usr = Kernel::getUserInfo($type, $id);
         $usr['type_nom'] = Kernel::Code2Name($usr['type']);
         //Kernel::myDebug($usr);
         $droits = Kernel::getUserInfoMatrix($usr);
         $canView = $droits['voir'];
         $canWrite = $droits['communiquer'];
         if ($canView) {
             // Avatar
             $avatar = '';
             if (isset($usr['user_id'])) {
                 $avatar = Prefs::get('prefs', 'avatar', $usr['user_id']);
             }
             $usr['avatar'] = $avatar ? CopixConfig::get('prefs|avatar_path') . $avatar : '';
             $parents = $enfants = array();
             if ($type == 'USER_ELE') {
                 // Pour un élève, on cherche ses parents
                 $parents = $annuaireService->getParentsFromEleve($id);
             } elseif ($type == 'USER_RES') {
                 // Pour un parent, on cherche ses enfants
                 $enfants = $annuaireService->getEnfantsFromParent($id);
             }
         } else {
             $usr = $parents = $enfants = false;
         }
         $tpl = new CopixTpl();
         $tpl->assign('usr', $usr);
         $tpl->assign('canWrite', $canWrite);
         $tpl->assign('parents', $parents);
         $tpl->assign('enfants', $enfants);
         $toReturn = $tpl->fetch('getuserprofilzone.tpl');
     }
     return true;
 }
 public function getPrefs($data = null)
 {
     $toReturn = array();
     $toReturn['name'] = CopixI18N::get('prefs.string.generalprefs');
     $toReturn['form'][] = array('type' => 'titre', 'text' => CopixI18N::get('prefs.config.passwd.title'), 'expl' => CopixI18N::get('prefs.config.passwd.expl'));
     $toReturn['form'][] = array('code' => 'passwd1', 'type' => 'password', 'text' => CopixI18N::get('prefs.config.passwd1.input'), 'value' => '');
     $toReturn['form'][] = array('code' => 'passwd2', 'type' => 'password', 'text' => CopixI18N::get('prefs.config.passwd2.input'), 'value' => '');
     if (!CopixConfig::exists('|can_pref_assistance_animtice') || CopixConfig::get('|can_pref_assistance_animtice')) {
         $toReturn['form'][] = array('type' => 'titre', 'text' => CopixI18N::get('prefs.config.assistance.title'), 'expl' => CopixI18N::get('prefs.config.assistance.expl'));
         $toReturn['form'][] = array('code' => 'assistance', 'type' => 'checkbox', 'text' => CopixI18N::get('prefs.config.assistance'), 'value' => isset($data['assistance']) && $data['assistance'] ? true : false);
     }
     if (!CopixConfig::exists('|can_pref_assistance_ien') || CopixConfig::get('|can_pref_assistance_ien')) {
         $user_infos = Kernel::getUserInfo();
         if ($user_infos['type'] == 'USER_ENS') {
             $toReturn['form'][] = array('type' => 'titre', 'text' => CopixI18N::get('prefs.config.ien.title'), 'expl' => CopixI18N::get('prefs.config.ien.expl'));
             $toReturn['form'][] = array('code' => 'assistance_ien', 'type' => 'checkbox', 'text' => CopixI18N::get('prefs.config.ien'), 'value' => isset($data['assistance_ien']) && $data['assistance_ien'] ? true : false);
         }
     }
     $toReturn['form'][] = array('type' => 'titre', 'text' => CopixI18N::get('prefs.config.avatar.title'), 'expl' => CopixI18N::get('prefs.config.avatar.expl'));
     $avatar = Prefs::get('prefs', 'avatar');
     if ($avatar) {
         $avatar_url = 'static/prefs/avatar/' . $avatar;
         $toReturn['form'][] = array('type' => 'image', 'text' => CopixI18N::get('prefs.config.avatar.image'), 'value' => $avatar_url);
     }
     $toReturn['form'][] = array('code' => 'avatar_upload', 'type' => 'upload', 'text' => CopixI18N::get('prefs.config.avatar.upload'), 'value' => isset($data['nom']) ? $data['nom'] : _currentUser()->getExtra('nom'));
     if ($avatar) {
         $toReturn['form'][] = array('code' => 'avatar_delete', 'type' => 'checkbox', 'text' => CopixI18N::get('prefs.config.avatar.delete'), 'value' => false);
     }
     /////////////////////////// ALERTE MAIL ///////////////////////////
     $toReturn['form'][] = array('type' => 'titre', 'text' => CopixI18N::get('prefs.config.mail.title'), 'expl' => CopixI18N::get('prefs.config.mail.expl'));
     /*
     $toReturn['form'][] = array(
             'code'=>'alerte_mail_active',
             'type'=>'checkbox',
             'text'=>CopixI18N::get ('prefs.config.mail.alerte_mail_active'), // 'Souhaitez-vous être alerté par un email à chaque fois que vous recevez un minimail ?',
             'value'=>($data['alerte_mail_active']?true:false) );
     */
     $toReturn['form'][] = array('code' => 'alerte_mail_email', 'type' => 'string', 'text' => CopixI18N::get('prefs.config.mail.alerte_mail_email'), 'value' => isset($data['alerte_mail_email']) ? $data['alerte_mail_email'] : '');
     return $toReturn;
 }
/**
 * Smarty {user} function plugin
 *
 * Type:     function<br>
 * Name:     user<br>
 * Date:     06/04/2006
 * Purpose:  Affiche une personne en rendant éventuellement son nom cliquable pour détailler son profil, et éventuellement l'enveloppe pour lui écrire un minimail.<br>
 * Input:<br>
 *         - label = nom à afficher (nom, nom+prénom, login...)
 *         - userType = (optional) type d'utilisateur. Nécessaire pour rendre le label cliquable et afficher son profil
 *         - userId = (optional) id d'utilisateur. Nécessaire pour rendre le label cliquable et afficher son profil
 *         - dispMail = (optional) 1 pour afficher l'enveloppe permettant d'écrire un minimail
 *         - login = (optional) login de l'utilisateur. Nécessaire pour afficher l'enveloppe
 *         - linkAttribs = (optional) attributs HTML de la balise A HREF entourant le label
 *				 - assign   = (optional) name of the template variable we'll assign
 *                      the output to instead of displaying it directly
 *				 - fromLogin = a partir du login, se charge d'afficher les infos du compte
 * Examples:
 * <pre>
 * {user label="Marc Dupond"}
 * {user label="Marc Dupond" userType="USER_ENS" userId=1}
 * {user label="Marc Dupond" userType="USER_ENS" userId=1 login="******" dispMail=1}
 * {user label="Marc Dupond" userType="USER_ENS" userId=1 login="******" dispMail=1 linkAttribs='CLASS="link"'}
 * {user fromLogin="******"}
 * </pre>
 * @version  1.0
 * @author   Christophe Beyer <*****@*****.**>
 * @author   CAP-TIC
 * @param    array
 * @param    Smarty
 * @return   string
 */
function smarty_function_user($params, &$smarty)
{
    if (isset($params['fromLogin'])) {
    } elseif (empty($params['label'])) {
        //$smarty->trigger_error("mailto: missing 'label' parameter");
        return;
    } else {
        $label = trim($params['label']);
    }
    if (trim($params['fromLogin'])) {
        $params['fromLogin'] = trim($params['fromLogin']);
        $userInfo = Kernel::getUserInfo("LOGIN", $params['fromLogin']);
        if (count($userInfo) > 0) {
            //var_dump($userInfo);
            $label = trim($userInfo['prenom'] . ' ' . $userInfo['nom']);
            $params['userType'] = $userInfo['type'];
            $params['userId'] = $userInfo['id'];
            $params['login'] = $params['fromLogin'];
        } else {
            $label = $params['fromLogin'];
        }
    }
    if ($params['userType'] && $params['userId']) {
        // $res = '<A '.$params['linkAttribs'].' HREF="javascript:viewUser(\''.$params['userType'].'\', \''.$params['userId'].'\', \''.addslashes(htmlentities(CopixI18N::get ('annuaire|annuaire.profil.loading'))).'\');">'.$label.'</A>';
        $res = '<a ' . $params['linkAttribs'] . ' class="viewuser" user_type="' . $params['userType'] . '" user_id="' . $params['userId'] . '">' . $label . '</a>';
    } else {
        $res = $label;
    }
    if ($params['dispMail'] == 1 && $params['login']) {
        $url = CopixUrl::get('minimail||getNewForm', array('login' => $params['login']));
        $res .= '&nbsp;<A HREF="' . $url . '"><IMG WIDTH="12" HEIGHT="9" SRC="' . CopixUrl::getResource("img/minimail/new_minimail.gif") . '" ALT="' . htmlentities(CopixI18N::get('annuaire|annuaire.writeMinimail')) . '" TITLE="' . htmlentities(CopixI18N::get('annuaire|annuaire.writeMinimail')) . '" BORDER="0" /></A>';
    }
    if (isset($params['assign'])) {
        $smarty->assign($params['assign'], $res);
        return '';
    } else {
        return $res;
    }
}
 public function processDefault()
 {
     $ppo = new CopixPPO();
     $ppo->visio = new CopixPPO();
     $ppo->error = "";
     $user_from = Kernel::getUserInfo("ME", 0);
     $ppo->login_to = $this->request('login', 'str');
     $ppo->login_from = $user_from['login'];
     $ppo->visio->red5 = CopixConfig::exists('default|conf_ModVisio_url') ? CopixConfig::get('default|conf_ModVisio_url') : '';
     $ppo->visio->secondsToWait = CopixConfig::exists('visio|conf_secondsToWait') ? CopixConfig::get('visio|conf_secondsToWait') : 30;
     $ppo->visio->secondsToRetry = CopixConfig::exists('visio|conf_secondsToRetry') ? CopixConfig::get('visio|conf_secondsToRetry') : 60;
     $ppo->visio->textColor = CopixConfig::exists('visio|conf_textColor') ? CopixConfig::get('visio|conf_textColor') : "#FF0000";
     $ppo->visio->textOverColor = CopixConfig::exists('visio|conf_textOverColor') ? CopixConfig::get('visio|conf_textOverColor') : "#00FF00";
     $ppo->visio->infoTextColor = CopixConfig::exists('visio|conf_infoTextColor') ? CopixConfig::get('visio|conf_infoTextColor') : "#0000FF";
     $ppo->visio->bandwidth = CopixConfig::exists('visio|conf_bandwidth') ? CopixConfig::get('visio|conf_bandwidth') : 0;
     $ppo->visio->videoQuality = CopixConfig::exists('visio|conf_videoQuality') ? CopixConfig::get('visio|conf_videoQuality') : 95;
     $ppo->visio->motionLevel = CopixConfig::exists('visio|conf_motionLevel') ? CopixConfig::get('visio|conf_motionLevel') : 60;
     $ppo->visio->motionTimeout = CopixConfig::exists('visio|conf_motionTimeout') ? CopixConfig::get('visio|conf_motionTimeout') : 1500;
     $ppo->visio->keyFrameInterval = CopixConfig::exists('visio|conf_keyFrameInterval') ? CopixConfig::get('visio|conf_keyFrameInterval') : 15;
     $ppo->visio->useEchoSuppression = CopixConfig::exists('visio|conf_useEchoSuppression') ? CopixConfig::get('visio|conf_useEchoSuppression') : 'on';
     $ppo->visio->bufferTime = CopixConfig::exists('visio|conf_bufferTime') ? CopixConfig::get('visio|conf_bufferTime') : 0;
     $ppo->visio->useSpeex = CopixConfig::exists('visio|conf_useSpeex') ? CopixConfig::get('visio|conf_useSpeex') : 'off';
     $ppo->visio->microSilenceLevel = CopixConfig::exists('visio|conf_microSilenceLevel') ? CopixConfig::get('visio|conf_microSilenceLevel') : 20;
     $ppo->visio->microSilenceTimeout = CopixConfig::exists('visio|conf_microSilenceTimeout') ? CopixConfig::get('visio|conf_microSilenceTimeout') : -1;
     $ppo->visio->microSetLoopBack = CopixConfig::exists('visio|conf_microSetLoopBack') ? CopixConfig::get('visio|conf_microSetLoopBack') : 'false';
     $ppo->visio->microGain = CopixConfig::exists('visio|conf_microGain') ? CopixConfig::get('visio|conf_microGain') : 50;
     $ppo->visio->speexEncodeQuality = CopixConfig::exists('visio|conf_speexEncodeQuality') ? CopixConfig::get('visio|conf_speexEncodeQuality') : 6;
     if ($ppo->login_to) {
         $user_to = Kernel::getUserInfo("LOGIN", $ppo->login_to);
         if ($user_to) {
             return _arPPO($ppo, 'visio.tpl');
         } else {
             $ppo->error = "Login inconnu";
         }
     }
     return _arPPO($ppo, 'default.tpl');
 }
 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);
 }
 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');
 }
 /**
  * Changement des responsables d'une procedure
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2009/01/21
  * @param integer $id Id de la procedure
  * @param string $responsables Nouveaux responsables
  */
 public function changeResponsables()
 {
     $id = $this->getRequest('id', null);
     $daoIntervention = CopixDAOFactory::create("intervention");
     $criticErrors = $errors = array();
     if ($id && ($rFiche = $daoIntervention->get($id))) {
         $title = $rFiche->objet;
         $mondroit = Kernel::getLevel("MOD_TELEPROCEDURES", $rFiche->type_teleprocedure);
         if (!TeleproceduresService::canMakeInTelep('DELEGUE', $mondroit, array('idinter' => $rFiche->idinter))) {
             $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||')));
     }
     $reqResponsables = $this->getRequest('responsables');
     // Responsables
     $responsables = $reqResponsables;
     $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;
         }
     }
     // 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;
         }
     }
     if (!count($tabResponsables)) {
         $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.noResp');
     }
     if (!$errors) {
         if ($rFiche->responsables != $reqResponsables) {
             TeleproceduresService::alertChangeResponsables($rFiche, $reqResponsables);
             $rFiche->responsables = $reqResponsables;
             //var_dump($rFiche);
             $daoIntervention->update($rFiche);
             TeleproceduresService::saveDroits('intervention', $rFiche->idinter, 'responsables', $tabResponsables);
         }
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('|fiche', array('id' => $id)));
     }
     return CopixActionGroup::process('teleprocedures|default::ficheDroits', array('id' => $id, 'errors' => $errors, 'rFiche' => array('responsables' => $this->getRequest('responsables'), 'lecteurs' => $this->getRequest('lecteurs'))));
 }
 public function getNew()
 {
     if (!Kernel::isAdmin()) {
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('||'));
     }
     CopixHTMLHeader::addCSSLink(_resource("styles/module_comptes.css"));
     $tpl = new CopixTpl();
     $tplAnimateurs = new CopixTpl();
     $animateurs_dao = _dao("kernel|kernel_animateurs");
     $animateurs = $animateurs_dao->findAll();
     $ppo->animateurs = array();
     foreach ($animateurs as $animateur) {
         $ppo->animateurs[$animateur->user_type . "-" . $animateur->user_id] = $animateur;
     }
     //// Personnes externes ///////////////////////////////////////
     $userext_dao = _dao("kernel|kernel_ext_user");
     $list = $userext_dao->listUsers();
     $user_key = 0;
     foreach ($list as $user_val) {
         $ppo->userext[$user_key] = $user_val;
         $user_key++;
     }
     foreach ($ppo->userext as $user_key => $user_val) {
         if (isset($ppo->animateurs["USER_EXT-" . $user_val->ext_id])) {
             // Si la personne est déjà animateur
             unset($ppo->userext[$user_key]);
         } else {
             $ppo->userext[$user_key]->user_infos = Kernel::getUserInfo('USER_EXT', $user_val->ext_id);
             if (!isset($ppo->userext[$user_key]->user_infos['login'])) {
                 // Si la personne n'a pas de login de type enseignant
                 unset($ppo->userext[$user_key]);
             }
         }
     }
     $sql = "\n            SELECT PER.nom AS nom, PER.prenom1 AS prenom,\n                   B2U.bu_type AS bu_type, B2U.bu_id AS bu_id,\n                   USR.login_dbuser\n            FROM kernel_bu_personnel PER\n            JOIN kernel_bu_personnel_entite ENT ON PER.numero=ENT.id_per\n            JOIN kernel_link_bu2user B2U ON PER.numero=B2U.bu_id AND B2U.bu_type IN ('USER_VIL','USER_ENS','USER_ADM')\n            JOIN dbuser USR ON B2U.user_id=USR.id_dbuser\n            -- WHERE PER.deleted=0\n            GROUP BY bu_type,bu_id\n        ";
     $pers = _doQuery($sql);
     $ppo->pers = array();
     foreach ($pers as $pers_item) {
         $ppo->pers[$pers_item->bu_type][$pers_item->bu_id] = $pers_item;
     }
     /*
     echo "<pre>";
     // print_r($ppo->animateurs);
     print_r($ppo->userext);
     // print_r($ppo->userens);
     die();
     */
     $tplAnimateurs->assign('ppo', $ppo);
     $result = $tplAnimateurs->fetch("animateurs-new.tpl");
     $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.animateur_list'));
     $tpl->assign('MAIN', $result);
     $tpl->assign('MENU', $this->menu);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * L'annuaire (TODO temporaire)
  */
 public function view()
 {
     $annuaireService =& CopixClassesFactory::Create('annuaire|AnnuaireService');
     $classe = _request("classe");
     $id = 1;
     $type = "BU_ECOLE";
     $ecole = Kernel::getNodeInfo($type, $id, false);
     //print_r($ecole);
     $classes = $enseignants = $directeur = array();
     $result = Kernel::getNodeChilds($type, $id);
     foreach ($result as $key => $value) {
         //print_r($value);
         if ($value["type"] == "BU_CLASSE") {
             $nodeInfo = Kernel::getNodeInfo($value["type"], $value["id"], false);
             $result[$key]["info"] = $nodeInfo;
             // Enseignants
             $childs = Kernel::getNodeChilds($value["type"], $value["id"]);
             //print_r($childs);
             $enseignants = array();
             foreach ($childs as $child) {
                 if ($child["type"] == "USER_ENS") {
                     $userInfo = Kernel::getUserInfo($child["type"], $child["id"]);
                     // print_r($userInfo);
                     $enseignants[] = $userInfo;
                 }
             }
             $result[$key]["enseignants"] = $enseignants;
             $classes[] = $result[$key];
         } elseif ($value["type"] == "USER_ENS") {
             $droit = Kernel::getLevel($type, $id, $value["type"], $value["id"]);
             if ($droit >= PROFILE_CCV_ADMIN) {
                 $nodeInfo = Kernel::getUserInfo($value["type"], $value["id"]);
                 //print_r($nodeInfo);
                 $result[$key]["info"] = $nodeInfo;
                 //$enseignants[] = $result[$key];
                 $directeur = $result[$key];
             }
         }
     }
     //print_r($directeur);
     $ecole["directeur"] = $directeur;
     //print_r($ecole);
     $id = $classe;
     $type = "BU_CLASSE";
     $classe = Kernel::getNodeInfo($type, $id, false);
     $eleves = $enseignants = array();
     $result = Kernel::getNodeChilds($type, $id);
     foreach ($result as $key => $value) {
         if ($value["type"] == "USER_ELE") {
             $nodeInfo = Kernel::getUserInfo($value["type"], $value["id"]);
             $result[$key]["info"] = $nodeInfo;
             //print_r($result[$key]);
             $eleves[] = $result[$key];
         } elseif ($value["type"] == "USER_ENS") {
             $userInfo = Kernel::getUserInfo($value["type"], $value["id"]);
             //print_r($userInfo);
             $enseignants[] = $userInfo;
         }
     }
     //print_r($eleves);
     $classe["eleves"] = $annuaireService->order_tab_eleves($eleves);
     $classe["enseignants"] = $annuaireService->order_tab_enseignants($enseignants);
     //$classe["enseignants"]=($enseignants);
     //print_r($classe);
     $tplListe = new CopixTpl();
     $tplListe->assign('ecole', $ecole);
     $tplListe->assign('classes', $classes);
     $tplListe->assign('classe', $classe);
     $tplListe->assign('annu', "<pre>" . $return_str . "</pre>");
     $result = $tplListe->fetch("view.tpl");
     $tpl = new CopixTpl();
     $tpl->assign('TITLE_PAGE', $ecole["nom"] . " (" . $ecole["desc"] . ")");
     $tpl->assign("MAIN", $result);
     $tpl->assign('MENU', $this->menu);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * Retourne les enfants d'un parent
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2006/12/19
  * @param integer $parent Id du parent
  * @return array Tableau avec les enfants
  */
 public function getEnfantsFromParent($parent)
 {
     $res = array();
     $enfants = Kernel::getNodeParents('USER_RES', $parent);
     //print_r($enfants);
     foreach ($enfants as $enfant) {
         if ($enfant['type'] != 'USER_ELE') {
             continue;
         }
         //print_r($parent);
         $userInfo = Kernel::getUserInfo($enfant['type'], $enfant['id']);
         //print_r($userInfo);
         $tmp = array_merge($enfant, $userInfo);
         $res[] = $tmp;
     }
     //print_r($res);
     return $res;
 }
 public function processDoCreateAccounts()
 {
     $comptes_service =& CopixClassesFactory::Create('comptes|ComptesService');
     if (!Admin::canAdmin()) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get()));
     }
     $limit = $this->getRequest('limit', 5);
     $password = $this->getRequest('password', '123456');
     $ppo = new CopixPPO();
     // dbuser : id_dbuser 	login_dbuser 	password_dbuser 	email_dbuser 	enabled_dbuser
     // kernel_link_bu2user : user_id 	bu_type 	bu_id
     $sql_params = array();
     $sql = '
         SELECT
             E.idEleve, E.nom, E.prenom1 AS prenom,
             KLB2U.*
         FROM
             kernel_bu_eleve E
         LEFT JOIN
             kernel_link_bu2user KLB2U ON E.idEleve=KLB2U.bu_id AND KLB2U.bu_type="USER_ELE"
         WHERE bu_type IS NULL';
     $ppo->user_ele = CopixDB::getConnection()->doQuery($sql, $sql_params);
     $sql = '
         SELECT
             P.numero, P.nom, P.prenom1 AS prenom, P.civilite, P.id_sexe,
             PE.role,
             KLB2U.*
         FROM
             kernel_bu_personnel_entite PE, kernel_bu_personnel P
         LEFT JOIN
             kernel_link_bu2user KLB2U ON P.numero=KLB2U.bu_id AND KLB2U.bu_type="USER_ENS"
         WHERE PE.type_ref="ECOLE" AND (PE.role=1 OR PE.role=2) AND PE.id_per=P.numero
         AND bu_type IS NULL';
     $ppo->user_ens = CopixDB::getConnection()->doQuery($sql, $sql_params);
     $sql = '
         SELECT
             P.numero, P.nom, P.prenom1 AS prenom, P.civilite, P.id_sexe,
             PE.role,
             KLB2U.*
         FROM
             kernel_bu_personnel_entite PE, kernel_bu_personnel P
         LEFT JOIN
             kernel_link_bu2user KLB2U ON P.numero=KLB2U.bu_id AND KLB2U.bu_type="USER_VIL"
         WHERE PE.type_ref="VILLE" AND PE.role=4 AND PE.id_per=P.numero
         AND bu_type IS NULL';
     $ppo->user_vil = CopixDB::getConnection()->doQuery($sql, $sql_params);
     $sql = '
         SELECT
             R.numero, R.nom, R.prenom1 AS prenom, R.civilite, R.id_sexe,
             KLB2U.*
         FROM
             kernel_bu_responsable R
         LEFT JOIN
             kernel_link_bu2user KLB2U ON R.numero=KLB2U.bu_id AND KLB2U.bu_type="USER_RES"
         WHERE bu_type IS NULL';
     $ppo->user_res = CopixDB::getConnection()->doQuery($sql, $sql_params);
     $fusible = $limit;
     echo "<pre>";
     foreach ($ppo->user_ele as $eleve) {
         if ($fusible-- <= 0) {
             break;
         }
         $user_infos = Kernel::getUserInfo('USER_ELE', $eleve->idEleve);
         $login = $comptes_service->createLogin($user_infos);
         $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
         $user_new->login_dbuser = $login;
         $user_new->password_dbuser = md5($password);
         $user_new->email_dbuser = '';
         $user_new->enabled_dbuser = 1;
         _dao("kernel|kernel_copixuser")->insert($user_new);
         $bu_new = _record("kernel|kernel_bu2user2");
         $bu_new->user_id = $user_new->id_dbuser;
         $bu_new->bu_type = 'USER_ELE';
         $bu_new->bu_id = $eleve->idEleve;
         _dao("kernel|kernel_bu2user2")->insert($bu_new);
         echo $eleve->nom . ";" . $eleve->prenom . ";" . $login . ";" . $password . "\n";
     }
     foreach ($ppo->user_ens as $ens) {
         if ($fusible-- <= 0) {
             break;
         }
         $user_infos = Kernel::getUserInfo('USER_ENS', $ens->numero);
         $login = $comptes_service->createLogin($user_infos);
         $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
         $user_new->login_dbuser = $login;
         $user_new->password_dbuser = md5($password);
         $user_new->email_dbuser = '';
         $user_new->enabled_dbuser = 1;
         _dao("kernel|kernel_copixuser")->insert($user_new);
         $bu_new = _record("kernel|kernel_bu2user2");
         $bu_new->user_id = $user_new->id_dbuser;
         $bu_new->bu_type = 'USER_ENS';
         $bu_new->bu_id = $ens->numero;
         _dao("kernel|kernel_bu2user2")->insert($bu_new);
         echo $ens->nom . ";" . $ens->prenom . ";" . $login . ";" . $password . "\n";
     }
     foreach ($ppo->user_vil as $vil) {
         if ($fusible-- <= 0) {
             break;
         }
         $user_infos = Kernel::getUserInfo('USER_VIL', $vil->numero);
         $login = $comptes_service->createLogin($user_infos);
         $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
         $user_new->login_dbuser = $login;
         $user_new->password_dbuser = md5($password);
         $user_new->email_dbuser = '';
         $user_new->enabled_dbuser = 1;
         _dao("kernel|kernel_copixuser")->insert($user_new);
         $bu_new = _record("kernel|kernel_bu2user2");
         $bu_new->user_id = $user_new->id_dbuser;
         $bu_new->bu_type = 'USER_VIL';
         $bu_new->bu_id = $vil->numero;
         _dao("kernel|kernel_bu2user2")->insert($bu_new);
         echo $vil->nom . ";" . $vil->prenom . ";" . $login . ";" . $password . "\n";
     }
     foreach ($ppo->user_res as $res) {
         if ($fusible-- <= 0) {
             break;
         }
         $user_infos = Kernel::getUserInfo('USER_RES', $res->numero);
         $login = $comptes_service->createLogin($user_infos);
         $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
         $user_new->login_dbuser = $login;
         $user_new->password_dbuser = md5($password);
         $user_new->email_dbuser = '';
         $user_new->enabled_dbuser = 1;
         _dao("kernel|kernel_copixuser")->insert($user_new);
         $bu_new = _record("kernel|kernel_bu2user2");
         $bu_new->user_id = $user_new->id_dbuser;
         $bu_new->bu_type = 'USER_RES';
         $bu_new->bu_id = $res->numero;
         _dao("kernel|kernel_bu2user2")->insert($bu_new);
         echo $res->nom . ";" . $res->prenom . ";" . $login . ";" . $password . "\n";
     }
     echo "</pre>";
     die;
     /*
              *
              *
              *
              * 				$user_infos = Kernel::getUserInfo( $user_type, $user_id );
     
                     // V�rification de l'existance d'un login.
                     // -> Si c'est le cas, il ne faut pas proposer un nouveau login.
                     $bu_user = $bu_dao->getByBUID( $user_type, $user_id );
     
                     if( !count($bu_user) ) {
     
                         $user_infos['login']  = $comptes_service->createLogin( $user_infos );
                     $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
                             $user_new->login_dbuser = $pLogin[$typeid];
                             $user_new->password_dbuser = md5($pPasswd[$typeid]);
                             $user_new->email_dbuser = '';
                             $user_new->enabled_dbuser = 1;
                                                     if( $user_dao->insert( $user_new ) ) {
     
                                 // Cr�ation du lien entre l'utilisateur de la base unique et le login.
                                 $bu_new = _record("kernel|kernel_bu2user2");
                                 $bu_new->user_id = $user_new->id_dbuser;
                                 $bu_new->bu_type = $user_type;
                                 $bu_new->bu_id = $user_id;
     
                                 // Enregistrement et v�rification de l'insertion.
                                 if( _dao("kernel|kernel_bu2user2")->insert( $bu_new ) ) {
     */
 }
 /**
  * Soumission du formulaire d'�criture d'un minimail (envoie le minimail)
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2005/10/18
  * @see getNewForm()
  * @param string $dest Logins du(des) destinataire(s)
  * @param string $title Titre du minimail
  * @param string $message Corps du minimail
  * @param string $go Forme de soumission : preview (pr�visualiser) ou send (enregistrer)
  */
 public function doSend()
 {
     $dest = _request("dest") ? _request("dest") : "";
     $title = _request("title") ? _request("title") : "";
     $message = _request("message") ? _request("message") : "";
     $format = _request("format") ? _request("format") : "";
     $go = _request("go") ? _request("go") : 'preview';
     $iReply = CopixRequest::getInt('reply');
     $iForward = CopixRequest::getInt('forward');
     $destTxt = $dest;
     $destTxt = str_replace(array(" "), "", $destTxt);
     $destTxt = str_replace(array(",", ";"), ",", $destTxt);
     $destin = array_unique(explode(",", $destTxt));
     $fromId = _currentUser()->getId();
     $errors = array();
     if (!$dest) {
         $errors[] = CopixI18N::get('minimail.error.typeDest');
     }
     if (!$title) {
         $errors[] = CopixI18N::get('minimail.error.typeTitle');
     }
     if (!$message) {
         $errors[] = CopixI18N::get('minimail.error.typeMessage');
     }
     if (!$format) {
         $errors[] = CopixI18N::get('minimail.error.typeFormat');
     }
     $tabDest = array();
     // On v�rifie que les destinataires existent
     while (list(, $login) = each($destin)) {
         if (!$login) {
             continue;
         }
         $userInfo = Kernel::getUserInfo("LOGIN", $login, array('strict' => true));
         //print_r("login=$login");
         //print_r($userInfo);
         if (!$userInfo) {
             $errors[] = CopixI18N::get('minimail.error.badDest', array($login));
         } elseif ($userInfo["user_id"] == $fromId) {
             $errors[] = CopixI18N::get('minimail.error.writeHimself');
         } else {
             $droits = Kernel::getUserInfoMatrix($userInfo);
             if ($droits['communiquer']) {
                 $tabDest[$userInfo["user_id"]] = $userInfo["user_id"];
             } else {
                 $errors[] = CopixI18N::get('minimail.error.cannotWrite', array($login));
             }
         }
     }
     // On v�rifie les pi�ces jointes
     CopixConfig::get('minimail|attachment_size');
     //print_r($_FILES);
     for ($i = 1; $i <= 3; $i++) {
         if (isset($_FILES['attachment' . $i]) && !is_uploaded_file($_FILES['attachment' . $i]['tmp_name'])) {
             switch ($_FILES['attachment' . $i]['error']) {
                 case 0:
                     //no error; possible file attack!
                     $errors[] = CopixI18N::get('minimail|minimail.error.upload_default', $i);
                     break;
                 case 1:
                     //uploaded file exceeds the upload_max_filesize directive in php.ini
                     $errors[] = CopixI18N::get('minimail|minimail.error.upload_toobig', $i);
                     break;
                 case 2:
                     //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form
                     $errors[] = CopixI18N::get('minimail|minimail.error.upload_toobig', $i);
                     break;
                 case 3:
                     //uploaded file was only partially uploaded
                     $errors[] = CopixI18N::get('minimail|minimail.error.upload_partial', $i);
                     break;
                 case 4:
                     //no file was uploaded
                     break;
                 default:
                     $errors[] = CopixI18N::get('minimail|minimail.error.upload_default', $i);
                     break;
             }
         }
     }
     if (!$errors) {
         if (!$errors && $go == 'save') {
             $serv = CopixClassesFactory::create("MinimailService");
             $send = $serv->sendMinimail($title, $message, $fromId, $tabDest, $format);
             if (!$send) {
                 $errors[] = CopixI18N::get('minimail.error.send');
             }
         }
         if (!$errors && $go == 'save') {
             // Reponse ou forward ?
             if ($iReply) {
                 // On verifie qu'on est destinataire
                 if ($inDest = _ioDAO('minimail_to')->selectDestFromIdAndToUser($iReply, $fromId)) {
                     _doQuery("UPDATE module_minimail_to SET is_replied=1 WHERE id=:id", array(':id' => $inDest->id2));
                 }
             } elseif ($iForward) {
                 $message = _ioDAO('minimail_from')->get($iForward);
                 // Si on etait l'expediteur
                 if ($message && $message->from_id == $fromId) {
                     _doQuery("UPDATE module_minimail_from SET is_forwarded=1 WHERE id=:id", array(':id' => $iForward));
                     // Si on etait destinataire
                 } elseif ($message && ($inDest = _ioDAO('minimail_to')->selectDestFromIdAndToUser($iForward, $fromId))) {
                     _doQuery("UPDATE module_minimail_to SET is_forwarded=1 WHERE id=:id", array(':id' => $inDest->id2));
                 }
             }
             // Ajout des pieces jointes
             $attachments = array();
             $dataPath = realpath("../var/data");
             for ($i = 1; $i <= 3; $i++) {
                 if (isset($_FILES["attachment" . $i]) && isset($_FILES["attachment" . $i]["name"]) && $_FILES["attachment" . $i]["name"]) {
                     $name = $send . "_" . $_FILES["attachment" . $i]["name"];
                     $uploadFrom = $_FILES["attachment" . $i]["tmp_name"];
                     $uploadTo = $dataPath . "/minimail/" . $name;
                     if (move_uploaded_file($uploadFrom, $uploadTo)) {
                         $attachments[] = $name;
                     } else {
                         $errors[] = CopixI18N::get('minimail.error.send', array($i));
                     }
                 }
             }
             if (count($attachments) > 0) {
                 $DAOminimail_from = CopixDAOFactory::create("minimail_from");
                 $mp = $DAOminimail_from->get($send);
                 $mp->attachment1 = isset($attachments[0]) ? $attachments[0] : NULL;
                 $mp->attachment2 = isset($attachments[1]) ? $attachments[1] : NULL;
                 $mp->attachment3 = isset($attachments[2]) ? $attachments[2] : NULL;
                 $DAOminimail_from->update($mp);
             }
             //    update_message_pj ($res, $pj[0], $pj[1], $pj[2]);
             if (!$errors) {
                 $urlReturn = CopixUrl::get('|getListSend');
                 return new CopixActionReturn(COPIX_AR_REDIRECT, $urlReturn);
             }
         }
     }
     //_dump($message);
     return CopixActionGroup::process('minimail|minimail::getNewForm', array('dest' => $dest, 'title' => $title, 'message' => $message, 'format' => $format, 'errors' => $errors, 'preview' => $go == 'save' ? 0 : 1, 'reply' => $iReply, 'forward' => $iForward));
     //$url_return = CopixConfig::get('minimail|afterMsgSend');
     //$url_return = CopixUrl::get('minimail||getListSend');
 }
 /**
  * Suppression d'un message. Renvoie sur la page demandant confirmation avant de supprimer.
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2005/11/10
  * @param integer $id Id du message a supprimer
  */
 public function getDeleteMessage()
 {
     $errors = $criticErrors = array();
     $id = _request("id") ? _request("id") : NULL;
     $dao_messages = CopixDAOFactory::create("forum_messages_forums");
     $forumService =& CopixClassesFactory::Create('forum|forumService');
     $rMessage = $dao_messages->get($id);
     if ($rMessage && $rMessage->status == 1) {
         //print_r($rMessage);
         $mondroit = Kernel::getLevel("MOD_FORUM", $rMessage->forum_id);
         if (!$forumService->canMakeInForum('DELETE_MESSAGE', $mondroit)) {
             $criticErrors[] = CopixI18N::get('kernel|kernel.error.noRights');
         }
     } else {
         $criticErrors[] = CopixI18N::get('forum|forum.error.noMessage');
     }
     if ($criticErrors) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $criticErrors), 'back' => CopixUrl::get('forum||')));
     } else {
         $userInfo = Kernel::getUserInfo("ID", $rMessage->auteur);
         return CopixActionGroup::process('genericTools|Messages::getConfirm', array('title' => CopixI18N::get('forum|forum.conf.messageFrom', array($userInfo["prenom"] . ' ' . $userInfo["nom"])), 'message' => CopixI18N::get('forum|forum.conf.messageAsk'), 'confirm' => CopixUrl::get('forum||doDeleteMessage', array('id' => $id)), 'cancel' => CopixUrl::get('forum||getTopic', array('message' => $id)) . "#" . $id));
     }
 }
Пример #27
0
 public function getUserInfo($type = "ME", $id = 0, $options = array())
 {
     //Kernel::deb("getUserInfo / type=$type / id=$id");
     $user = $users = array();
     switch ($type) {
         case "ID":
             $user_dao = _dao("kernel|kernel_bu2user");
             $users = $user_dao->getByUserID($id);
             break;
         case "LOGIN":
             $user_dao = _dao("kernel|kernel_bu2user");
             $users = $user_dao->getByLogin($id);
             break;
         case "ME":
             if (Kernel::is_connected()) {
                 return Kernel::getUserInfo(_currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
             }
         default:
             $user_dao = _dao("kernel|kernel_bu2user");
             $users = $user_dao->getByBUID($type, $id);
             if (count($users)) {
                 $users[0]->bu_type = $type;
                 $users[0]->bu_id = $id;
             } else {
                 if (!isset($options['strict']) || $options['strict']) {
                     // Si pas strict
                     $record = _record("kernel|kernel_bu2user");
                     $record->bu_type = $type;
                     $record->bu_id = $id;
                     $record->user_id = '';
                     $record->user_login = '';
                     $users = array();
                     $users[0] = $record;
                 }
             }
             break;
     }
     if (!sizeof($users)) {
         if (isset($options['strict']) && $options['strict']) {
             return false;
         }
         return array_merge($user, array('nom' => 'Utilisateur inconnu', 'prenom' => $type . ' ' . $id, 'login' => '', 'ALL' => null));
     } else {
         $userval = $users[0];
         $user["type"] = $users[0]->bu_type;
         $user["id"] = $users[0]->bu_id;
         if (isset($users[0]->user_id)) {
             $user["user_id"] = $users[0]->user_id;
         }
         if (isset($users[0]->user_login)) {
             $user["login"] = $users[0]->user_login;
         }
         switch ($userval->bu_type) {
             case "USER_VIL":
             case "USER_ENS":
             case "USER_ADM":
                 $pers_dao = _dao("kernel|kernel_bu_personnel");
                 $personne = $pers_dao->get($userval->bu_id);
                 if (!$personne) {
                     return array_merge($user, array('nom' => 'Utilisateur inconnu', 'prenom' => $userval->bu_type . ' ' . $userval->bu_id, 'ALL' => null));
                 }
                 $user["nom"] = $personne->pers_nom;
                 $user["prenom"] = $personne->pers_prenom1;
                 $user["civilite"] = $personne->pers_civilite;
                 $user["sexe"] = $personne->pers_id_sexe;
                 $user["cle_privee"] = $personne->pers_cle_privee;
                 $user["ALL"] = $personne;
                 $pers_entite_dao = _dao("kernel|kernel_bu_personnel_entite");
                 $pers_entites = $pers_entite_dao->getById($userval->bu_id);
                 foreach ($pers_entites as $key => $value) {
                     switch ($value->pers_entite_type_ref) {
                         case "VILLE":
                             $user["link"]->ville[$value->pers_entite_reference] = $value->pers_entite_role;
                             break;
                         case "ECOLE":
                             $user["link"]->ecole[$value->pers_entite_reference] = $value->pers_entite_role;
                             break;
                         case "CLASSE":
                             $user["link"]->classe[$value->pers_entite_reference] = $value->pers_entite_role;
                             break;
                     }
                 }
                 break;
             case "USER_ELE":
                 $ele_dao = _dao("kernel|kernel_bu_ele");
                 $eleve = $ele_dao->get($userval->bu_id);
                 if (!$eleve) {
                     return array_merge($user, array('nom' => 'Utilisateur inconnu', 'prenom' => $userval->bu_type . ' ' . $userval->bu_id, 'ALL' => null));
                 }
                 $user["nom"] = $eleve->ele_nom;
                 $user["prenom"] = $eleve->ele_prenom1;
                 $user["civilite"] = $eleve->ele_civilite;
                 $user["sexe"] = $eleve->ele_id_sexe;
                 $user["ALL"] = $eleve;
                 $parents = Kernel::getNodeParents("USER_ELE", $userval->bu_id);
                 foreach ($parents as $key => $value) {
                     switch ($value['type']) {
                         case "BU_CLASSE":
                             $user["link"]->classe[$value['id']] = 1;
                             if (isset($value['ALL'])) {
                                 $user["link"]->ecole[$value['ALL']->cla_ecole] = 1;
                                 $user["link"]->ville[$value['ALL']->eco_id_ville] = 1;
                             }
                             if (isset($options['link_data']) && $options['link_data']) {
                                 $user["link_data"]->classe[$value['id']] = Kernel::getNodeInfo("BU_CLASSE", $value['id'], true);
                             }
                             break;
                     }
                 }
                 break;
             case "USER_RES":
                 $res_dao = _dao("kernel|kernel_bu_res");
                 $reponsable = $res_dao->get($userval->bu_id);
                 if (!$reponsable) {
                     return array_merge($user, array('nom' => 'Utilisateur inconnu', 'prenom' => $userval->bu_type . ' ' . $userval->bu_id, 'ALL' => null));
                 }
                 $user["nom"] = $reponsable->res_nom;
                 $user["prenom"] = $reponsable->res_prenom1;
                 $user["civilite"] = $reponsable->res_civilite;
                 $user["sexe"] = $reponsable->res_id_sexe;
                 $user["ALL"] = $reponsable;
                 $user['link'] = array();
                 $parents = Kernel::getNodeParents("USER_RES", $userval->bu_id);
                 foreach ($parents as $parent) {
                     switch ($parent['type']) {
                         case "USER_ELE":
                             if (isset($parent['link'])) {
                                 foreach ($parent['link'] as $nodeType => $nodeValue) {
                                     if (!isset($user['link'][$nodeType])) {
                                         $user['link'][$nodeType] = array();
                                     }
                                     foreach ($nodeValue as $id => $value) {
                                         $user['link'][$nodeType][$id] = $value;
                                     }
                                 }
                             }
                             break;
                     }
                 }
                 break;
             case "USER_EXT":
                 $ext_dao = _dao("kernel|kernel_ext_user");
                 $extuser = $ext_dao->get($userval->bu_id);
                 if (!$extuser) {
                     return array_merge($user, array('nom' => 'Utilisateur inconnu', 'prenom' => $userval->bu_type . ' ' . $userval->bu_id, 'ALL' => null));
                 }
                 $user["nom"] = $extuser->ext_nom;
                 $user["prenom"] = $extuser->ext_prenom;
                 $user["ALL"] = $extuser;
                 $user['link'] = array();
                 $parents = Kernel::getNodeParents("USER_EXT", $userval->bu_id);
                 foreach ($parents as $parent) {
                     if (!isset($user['link'][$parent['type']])) {
                         $user['link'][$parent['type']] = array();
                     }
                     $user['link'][$parent['type']][$parent['id']] = $parent['droit'];
                 }
                 break;
             default:
                 break;
         }
         // switch( $userval->bu_type )
         // } // foreach( $users as $key => $userval )
     }
     // if( sizeof( $users ) )
     return $user;
 }
 public function checkLoginAccess($login)
 {
     if (trim($login) == '') {
         die('Pas de login dans l\'URL');
     }
     $userinfo = Kernel::getUserInfo('LOGIN', $login);
     if (0 == sizeof($userinfo)) {
         die('Login inconnu');
     }
     $level = 0;
     $level = Kernel::getLevel_r($userinfo['type'], $userinfo['id']);
     $level = max($level, Kernel::getLevel_r('ROOT', '0'));
     // Test via le module assistance
     $ok = false;
     $animateur_dao =& CopixDAOFactory::create("kernel|kernel_animateurs");
     $animateur = $animateur_dao->get(_currentUser()->getExtra("type"), _currentUser()->getExtra("id"));
     if ($animateur && isset($animateur->can_comptes) && $animateur->can_comptes) {
         $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->login == $login) {
                         $ok = true;
                         // echo "<pre>"; print_r($personnel); die("</pre>");
                     }
                 }
             }
         }
         if ($ok) {
             $level = 70;
         }
     }
     if ($level < 70) {
         // A vérifier...
         die('Pas le droit !');
     }
     return $userinfo;
 }
 public function getGroup()
 {
     if (!Kernel::isAdmin()) {
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('||'));
     }
     $tpl = new CopixTpl();
     $tplGrVilles = new CopixTpl();
     CopixHTMLHeader::addCSSLink(_resource("styles/module_regroupements.css"));
     $regroupements_service =& CopixClassesFactory::Create('regroupements|regroupements');
     $tpl->assign('TITLE_PAGE', CopixI18N::get('regroupements|regroupements.villes.titre'));
     $tpl->assign('MENU', $regroupements_service->getMenu());
     $dao_grvilles_gr2ville = CopixDAOFactory::create("regroupements|grvilles_gr2ville");
     $dao_grvilles = CopixDAOFactory::create("regroupements|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('regroupements|villes|'));
     }
     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("regroupements|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("regroupements|grvilles_gr2ville");
         $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("regroupements|grvilles_gr2ville")->insert($grvilles_gr2ville);
             }
         }
         if (_request("form_id") == 0) {
             return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('regroupements|villes|', 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);
 }
 /**
  * Envoi de messages prives aux responsables d'une intervention lorsqu'on les change. Envoie un message aux nouveaux responsables
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2009/01/22
  * @param object $rIntervention Recordset de l'intervention
  * @param string $responsables Liste des nouveaux responsables (logins separes par virgules)
  * @return null
  */
 public function alertChangeResponsables($rIntervention, $responsables)
 {
     //print_r($rIntervention);
     //print_r($responsables);
     $minimailService =& CopixClassesFactory::Create('minimail|minimailService');
     $titre = $rIntervention->objet;
     $auteur = $rIntervention->iduser;
     $ecoleInfos = Kernel::getNodeInfo('BU_ECOLE', $rIntervention->idetabliss, false);
     $arOld = $rIntervention->responsables;
     $arOld = str_replace(array(" "), "", $arOld);
     $arOld = str_replace(array(",", ";"), ",", $arOld);
     $arOld = preg_split('/[\\s,]+/', $arOld);
     $arNew = $responsables;
     $arNew = str_replace(array(" "), "", $arNew);
     $arNew = str_replace(array(",", ";"), ",", $arNew);
     $arNew = preg_split('/[\\s,]+/', $arNew);
     //print_r($arOld);
     //print_r($arNew);
     foreach ($arNew as $login) {
         if (!in_array($login, $arOld)) {
             $userInfo = Kernel::getUserInfo('LOGIN', $login);
             if ($userInfo && $userInfo["user_id"]) {
                 $dest = array($userInfo["user_id"] => 1);
                 $ecole = $ecoleInfos['nom'];
                 $url = CopixUrl::get('teleprocedures||fiche', array("id" => $rIntervention->idinter));
                 $message = CopixI18N::get('teleprocedures|teleprocedures.message.alertChangeResp', array(1 => $ecole, 2 => $url, 3 => $url));
                 $message = str_replace("\\n", "\n", $message);
                 $minimailService->sendMinimail($titre, $message, $auteur, $dest, 'dokuwiki');
             }
         }
     }
 }