/**
  * getLoginForm
  *
  * Affiche la liste des comptes à créer, avec proposition de login/passwd.
  * @author	Frédéric Mossmann
  * @since	14.02.2006
  *
  */
 public function getLoginForm()
 {
     $comptes_service =& CopixClassesFactory::Create('comptes|ComptesService');
     $bu_dao =& CopixDAOFactory::create("kernel|kernel_bu2user");
     $tpl = new CopixTpl();
     $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " » " . CopixI18N::get('comptes.title.getloginform'));
     $menu[] = array('txt' => CopixI18N::get('comptes.menu.return_listes'), 'url' => CopixUrl::get('comptes||getNode', array('type' => _request('type'), 'id' => _request('id'))));
     $tpl->assign('MENU', $menu);
     if ($pUsers = _request('users')) {
         $users = array();
         // $pUsers = _request('users');
         //var_dump($pUsers);
         foreach ($pUsers as $user) {
             if (ereg('(.+)-(.+)', $user, $user_infos)) {
                 $user_type = $user_infos[1];
                 $user_id = $user_infos[2];
                 $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_infos['passwd'] = $comptes_service->createPasswd();
                     $users[] = $user_infos;
                 }
             }
         }
     } elseif ($pReset = _request('reset')) {
         $users = array();
         $pNodeType = _request('type');
         $pNodeId = _request('id');
         $childs = Kernel::getNodeChilds($pNodeType, $pNodeId);
         $users_dump = Kernel::filterNodeList($childs, $pReset);
         if ($pReset == 'USER_RES') {
             $users_dump = array();
             $eleves = Kernel::filterNodeList($childs, 'USER_ELE');
             foreach ($eleves as $eleve) {
                 $parents = Kernel::getNodeChilds($eleve['type'], $eleve['id']);
                 $parents = Kernel::filterNodeList($parents, 'USER_RES');
                 foreach ($parents as $parent) {
                     $users_dump[] = $parent;
                 }
             }
         }
         foreach ($users_dump as $user) {
             $user_infos = Kernel::getUserInfo($user['type'], $user['id']);
             $bu_user = $bu_dao->getByBUID($user['type'], $user['id']);
             // _dump($user_infos);
             // _dump($bu_user);
             if (count($bu_user)) {
                 $user_infos['login'] = $bu_user[0]->user_login;
                 $user_infos['passwd'] = $comptes_service->createPasswd();
                 $users[] = $user_infos;
             }
         }
     } else {
         $urlReturn = CopixUrl::get('comptes||getNode', array('type' => _request('type'), 'id' => _request('id')));
         return new CopixActionReturn(COPIX_AR_REDIRECT, $urlReturn);
     }
     // Ajoute le type d'utilisateur en toute lettres.
     foreach ($users as $user_key => $user_val) {
         $users[$user_key]['type_nom'] = Kernel::Code2Name($user_val['type']);
     }
     $tpl->assign('MAIN', CopixZone::process('comptes|loginform', array('users' => $users, 'type' => _request('type'), 'id' => _request('id'), 'reset' => _request('reset'))));
     $tpl->assign('MENU', $this->menu);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 public function whereAmI($node_type = false, $node_id = false)
 {
     // Patch EN2010
     return array();
     $where = array();
     if ($node_type == 'BU_CLASSE') {
         $where['BU_CLASSE']['type'] = $node_type;
         $where['BU_CLASSE']['id'] = $node_id;
         $infos = Kernel::getNodeInfo($node_type, $node_id);
         $where['BU_CLASSE']['nom'] = $infos['nom'];
         $parents = Kernel::getNodeParents($node_type, $node_id);
         $parent = Kernel::filterNodeList($parents, 'BU_ECOLE');
         $node_type = $parent[0]["type"];
         $node_id = $parent[0]["id"];
     }
     if ($node_type == 'BU_ECOLE') {
         $where['BU_ECOLE']['type'] = $node_type;
         $where['BU_ECOLE']['id'] = $node_id;
         $infos = Kernel::getNodeInfo($node_type, $node_id);
         $where['BU_ECOLE']['nom'] = $infos['nom'];
         $parents = Kernel::getNodeParents($node_type, $node_id);
         $parent = Kernel::filterNodeList($parents, 'BU_VILLE');
         $node_type = $parent[0]["type"];
         $node_id = $parent[0]["id"];
     }
     if ($node_type == 'BU_VILLE') {
         $where['BU_VILLE']['type'] = $node_type;
         $where['BU_VILLE']['id'] = $node_id;
         $infos = Kernel::getNodeInfo($node_type, $node_id);
         $where['BU_VILLE']['nom'] = $infos['nom'];
         $parents = Kernel::getNodeParents($node_type, $node_id);
         $parent = Kernel::filterNodeList($parents, 'BU_GRVILLE');
         $node_type = $parent[0]["type"];
         $node_id = $parent[0]["id"];
     }
     if ($node_type == 'BU_GRVILLE') {
         $where['BU_GRVILLE']['type'] = $node_type;
         $where['BU_GRVILLE']['id'] = $node_id;
         $infos = Kernel::getNodeInfo($node_type, $node_id);
         $where['BU_GRVILLE']['nom'] = $infos['nom'];
     }
     return $where;
 }
 public function processDefault()
 {
     $tpl = new CopixTpl();
     $tplModule = new CopixTpl();
     if (!$this->user->connected) {
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('welcome|default|'));
     }
     $tpl->assign('TITLE_PAGE', CopixI18N::get('kernel.title.accueilsimple'));
     $nodes_all = Kernel::getNodeParents($this->user->type, $this->user->idEn);
     $nodes_all = Kernel::sortNodeList($nodes_all);
     // _dump($nodes_all);
     $nodes = array();
     foreach ($nodes_all as $node) {
         if ($node['type'] == 'CLUB' && CopixConfig::exists('kernel|groupeAssistance') && ($groupeAssistance = CopixConfig::get('kernel|groupeAssistance')) && $node['id'] == $groupeAssistance) {
             continue;
         }
         if ($node['type'] == 'CLUB' && $node['droit'] < 20) {
             continue;
         }
         if (!isset($nodes[$node['type']])) {
             $nodes[$node['type']] = array();
         }
         //module not initialized : loaded into inconito
         if (!isset($nodes[$node['type']][$node['id']])) {
             $nodes[$node['type']][$node['id']] = $node;
             Kernel::createMissingModules($node['type'], $node['id']);
             $nodes[$node['type']][$node['id']]['modules'] = Kernel::getModEnabled($node['type'], $node['id'], $this->user->type, $this->user->idEn, 0, count($nodes_all) > $this->conf_notification_maxnodes ? 0 : 1);
             // Cas des groupes : on ajoute les membres et admin, selon les droits
             if ($node['type'] == 'CLUB') {
                 $addModule = new CopixPPO();
                 $addModule->node_type = $node['type'];
                 $addModule->node_id = $node['id'];
                 $addModule->module_type = 'MOD_ADMIN';
                 $addModule->module_id = 0;
                 $addModule->module_nom = CopixI18N::get('groupe|groupe.group.admin');
                 $nodes[$node['type']][$node['id']]['modules'][] = $addModule;
             }
             /*
              * ===== CONTENT GENERATION =====
              *
              */
             //cas parent élève
             if ($node['type'] == 'USER_ELE') {
                 $contentNode = Kernel::getNodeParents($node['type'], $node['id']);
                 $contentNode = Kernel::filterNodeList($contentNode, 'BU_CLASSE');
                 if (empty($contentNode)) {
                     continue;
                 }
                 $contentNode = $contentNode[0];
             } else {
                 $contentNode = $node;
             }
             //get content from db :
             $content = $this->db->query('SELECT * FROM module_admindash WHERE id_zone = ' . $contentNode['id'] . ' AND type_zone = "' . $contentNode['type'] . '"')->toArray1();
             // Get vocabulary catalog to use
             $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog');
             $vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($contentNode['type'], $contentNode['id']);
             //if no content : get default content
             if (empty($content['content'])) {
                 switch ($contentNode['type']) {
                     case 'BU_CLASSE':
                     case 'USER_ELE':
                         $content['content'] = CopixZone::process('kernel|dashboardClasse', array('idZone' => $contentNode['id'], 'catalog' => $vocabularyCatalog->id_vc));
                         break;
                     case 'BU_ECOLE':
                         $content['content'] = CopixZone::process('kernel|dashboardEcole', array('idZone' => $contentNode['id'], 'catalog' => $vocabularyCatalog->id_vc));
                         break;
                     case 'BU_VILLE':
                         $content['content'] = CopixZone::process('kernel|dashboardVille', array('idZone' => $contentNode['id'], 'catalog' => $vocabularyCatalog->id_vc));
                         break;
                     case 'CLUB':
                         $content['content'] = CopixZone::process('kernel|dashboardGrTravail', array('idZone' => $contentNode['id'], 'catalog' => $vocabularyCatalog->id_vc));
                         break;
                     case 'ROOT':
                         if ($contentNode['droit'] >= 60) {
                             $contentTpl = new CopixTpl();
                             $content['content'] = $contentTpl->fetch('zone.dashboard.root.tpl');
                         } else {
                             $contentTpl = new CopixTpl();
                             $content['content'] = $contentTpl->fetch('zone.dashboard.userext.tpl');
                         }
                         break;
                     default:
                         $content['content'] = '';
                         break;
                 }
             }
             //twitter integration
             $twitterSrc = '';
             if (!empty($content['social_stream'])) {
                 enic::to_load('social');
                 $twitter = new enicSocialTwitter();
                 $twitterSrc = $content['social_stream'];
             }
             //is admin :
             $is_admin = $contentNode['droit'] >= 60;
             //build html content
             $content_tpl = new CopixTpl();
             $content_tpl->assign('content', $content['content']);
             if (!empty($content['picture'])) {
                 $content_tpl->assign('picture', $content['picture']);
                 $content_tpl->assign('picturePath', $this->picturesPath);
             }
             $content_tpl->assign('twitter', $twitterSrc);
             $content_tpl->assign('is_admin', $is_admin);
             $content_tpl->assign('id', $contentNode['id']);
             $content_tpl->assign('type', $contentNode['type']);
             $content_tpl->assign('catalog', $vocabularyCatalog->id_vc);
             if ($contentNode['type'] == "BU_ECOLE") {
                 $content_tpl->assign('idZone', $contentNode['id']);
             }
             $content = $content_tpl->fetch('dashboard.nodes.tpl');
             //add css
             $this->addCss('styles/dashboard_zone.css');
             //free memory
             unset($content_tpl);
             /*
              *  ===== END CONTENT GENERATION =====
              */
             $nodes[$node['type']][$node['id']]['content'] = $content;
         } elseif ($nodes[$node['type']][$node['id']]['droit'] < $node['droit']) {
             $nodes[$node['type']][$node['id']] = $node;
         }
     }
     if (CopixConfig::exists('|use_class_validity') && CopixConfig::get('|use_class_validity')) {
         $tplModule->assign("use_class_validity", 1);
         if (isset($nodes['BU_CLASSE'])) {
             foreach ($nodes['BU_CLASSE'] as $classe_id => $classe_data) {
                 $validity_timestamp = Kernel::getValidityDateForClass($classe_data['id']);
                 if ($validity_timestamp) {
                     $nodes['BU_CLASSE'][$classe_id]['validity_timestamp'] = $validity_timestamp;
                     $nodes['BU_CLASSE'][$classe_id]['validity_date'] = date('d/m/Y', $validity_timestamp);
                     // Si l'école existe : mémoriser max validity
                     if (isset($nodes['BU_ECOLE'][$nodes['BU_CLASSE'][$classe_id]['ALL']->cla_ecole])) {
                         if (!isset($nodes['BU_ECOLE'][$nodes['BU_CLASSE'][$classe_id]['ALL']->cla_ecole]['validity_timestamp']) || $nodes['BU_ECOLE'][$nodes['BU_CLASSE'][$classe_id]['ALL']->cla_ecole]['validity_timestamp'] < $validity_timestamp) {
                             $nodes['BU_ECOLE'][$nodes['BU_CLASSE'][$classe_id]['ALL']->cla_ecole]['validity_timestamp'] = $validity_timestamp;
                             $nodes['BU_ECOLE'][$nodes['BU_CLASSE'][$classe_id]['ALL']->cla_ecole]['validity_date'] = date('d/m/Y', $validity_timestamp);
                         }
                     }
                 }
             }
         }
         $count_validity_ok = 0;
         $count_validity_bad = 0;
         foreach ($nodes as $node_type => $node_type_list) {
             foreach ($node_type_list as $node_id => $node) {
                 if (isset($nodes[$node_type][$node_id]['validity_timestamp'])) {
                     if ($nodes[$node_type][$node_id]['validity_timestamp'] < time()) {
                         unset($nodes[$node_type][$node_id]);
                         $count_validity_bad++;
                     } else {
                         $count_validity_ok++;
                     }
                 }
             }
         }
     } else {
         $tplModule->assign("use_class_validity", 0);
     }
     /* DRAFT WORKING */
     // _dump($nodes);
     /* $rClasse = Kernel::getNodeInfo ('BU_CLASSE', $nodes['BU_CLASSE'][1]['id'], false);
        CopixZone::process ('annuaire|infosclasse', array('rClasse'=>$rClasse)); */
     //echo $this->matrix->display();
     // _dump($nodes);
     $tplModule->assign("nodes", $nodes);
     if (count($nodes) == 0) {
         $result = $tplModule->fetch("dashboard-empty.tpl");
     } else {
         $result = $tplModule->fetch("dashboard.tpl");
     }
     $tpl->assign('MAIN', $result);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }