public function processDefault() { $tpl = new CopixTpl(); $tplModule = new CopixTpl(); //if user is not connected : if (1) { // S'il y a un blog prevu a l'accueil $dispBlog = false; $getKernelLimitsIdBlog = Kernel::getKernelLimits('id_blog'); if ($getKernelLimitsIdBlog) { _classInclude('blog|kernelblog'); if ($blog = _ioDao('blog|blog')->getBlogById($getKernelLimitsIdBlog)) { // On v�rifie qu'il y a au moins un article $stats = KernelBlog::getStats($blog->id_blog); if ($stats['nbArticles']['value'] > 0) { $dispBlog = true; } } } if ($dispBlog) { //return CopixActionGroup::process ('blog|frontblog::getListArticle', array ('blog'=>$blog->url_blog)); return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('blog||', array('blog' => $blog->url_blog))); } if (!CopixConfig::exists('|can_public_rssfeed') || CopixConfig::get('|can_public_rssfeed')) { CopixHtmlHeader::addOthers('<link rel="alternate" href="' . CopixUrl::get('public||rss', array()) . '" type="application/rss+xml" title="' . htmlentities(CopixI18N::get('public|public.rss.flux.title')) . '" />'); } CopixHTMLHeader::addCSSLink(_resource("styles/module_fichesecoles.css")); $tplModule->assign('user', _currentUser()); $result = $tplModule->fetch('welcome|welcome_' . CopixI18N::getLang() . '.tpl'); $tpl->assign('TITLE_PAGE', '' . CopixI18N::get('public|public.welcome.title')); $tpl->assign('MAIN', $result); return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl); } }
/** * Renvoie la liste des parents ayant un compte utilisateur et un enfant rattaché à une école d'une ville d'un groupe de villes * * @author Christophe Beyer <*****@*****.**> * @since 2006/01/20 * @param integer $grville Id du groupe de villes * @return mixed Objet DAO */ public function getParentsInGrville($grville) { $sqlPlus = ''; if (Kernel::getKernelLimits('ville')) { $sqlPlus .= ' AND V.id_vi IN (' . Kernel::getKernelLimits('ville') . ')'; } $query = "SELECT DISTINCT(R.numero) AS id, R.nom, R.prenom1 AS prenom, U.login_dbuser AS login, LI.bu_type, LI.bu_id FROM kernel_bu_responsable R, kernel_bu_sexe S, kernel_bu_responsables RE, kernel_bu_eleve_admission EA, kernel_bu_ecole E, kernel_bu_ville V, kernel_link_bu2user LI, dbuser U WHERE R.id_sexe=S.id_s AND R.numero=RE.id_responsable AND RE.type='responsable' AND RE.id_beneficiaire=EA.eleve AND RE.type_beneficiaire='eleve' AND EA.etablissement=E.numero AND E.id_ville=V.id_vi AND LI.user_id=U.id_dbuser AND LI.bu_type='USER_RES' AND LI.bu_id=R.numero AND V.id_grville=" . $grville . $sqlPlus . " ORDER BY R.nom, R.prenom1"; return _doQuery($query); }
/** * Renvoie la liste des personnes extérieures rattachées à une ville et ayant un compte utilisateur * * @author Christophe Beyer <*****@*****.**> * @since 2006/05/15 * @param integer $ville Id de la ville * @return mixed Objet DAO */ public function getPersonnelExtInVille($ville) { $sqlPlus = ''; if (Kernel::getKernelLimits('ville')) { $sqlPlus .= ' AND VI.id_vi IN (' . Kernel::getKernelLimits('ville') . ')'; } $query = "SELECT E.id, E.nom, E.prenom, VI.nom AS nom_ville, U.login_dbuser AS login, LI.bu_type, LI.bu_id FROM kernel_ext_user E, kernel_bu_ville VI, kernel_link_bu2user LI, kernel_link_user2node NO, dbuser U WHERE LI.user_id=U.id_dbuser AND NO.user_type=LI.bu_type AND NO.user_id=LI.bu_id AND NO.node_type='BU_VILLE' AND NO.node_id=VI.id_vi AND LI.bu_type='USER_EXT' AND LI.bu_id=E.id AND VI.id_vi=" . $ville . $sqlPlus . " ORDER BY nom, prenom"; //print_r($query); return _doQuery($query); }
/** * Renvoie la liste des élèves rattachés à un groupe de villes et ayant un compte utilisateur * * @author Christophe Beyer <*****@*****.**> * @since 2006/01/20 * @param integer $grville Id du groupe de villes * @return mixed Objet DAO */ public function getElevesInGrville($grville) { $sqlPlus = ''; if (Kernel::getKernelLimits('ville')) { $sqlPlus .= ' AND VIL.id_vi IN (' . Kernel::getKernelLimits('ville') . ')'; } $query = "SELECT E.idEleve AS id, E.nom, E.prenom1 as prenom, S.sexe, E.date_nais AS date_naissance, EC.nom AS nom_classe, U.login_dbuser AS login, LI.bu_type, LI.bu_id, CN.niveau_court FROM kernel_bu_eleve_affectation EA, kernel_bu_eleve E, kernel_bu_sexe S, kernel_bu_ecole_classe EC, kernel_bu_classe_niveau CN, kernel_bu_ecole ECO, kernel_bu_ville VIL, kernel_link_bu2user LI, dbuser U, kernel_bu_annee_scolaire AN WHERE EC.id=EA.classe AND EA.eleve=E.idEleve AND EA.niveau=CN.id_n AND E.id_sexe=S.id_s AND EC.ecole=ECO.numero AND ECO.id_ville=VIL.id_vi AND LI.user_id=U.id_dbuser AND LI.bu_type='USER_ELE' AND LI.bu_id=E.idEleve AND EA.current=1 AND VIL.id_grville=" . $grville . $sqlPlus . " AND EC.annee_scol=AN.id_as AND AN.current=1 ORDER BY nom, prenom1"; //print_r($query); return _doQuery($query); }
/** * Affiche la liste des blogs * * @author Christophe Beyer <*****@*****.**> * @since 2006/03/09 * @todo Positionner $grville */ public function processGetListBlogs() { if (!CopixConfig::exists('|can_public_rssfeed') || CopixConfig::get('|can_public_rssfeed')) { CopixHtmlHeader::addOthers('<link rel="alternate" href="' . CopixUrl::get('public||rss', array()) . '" type="application/rss+xml" title="' . htmlentities(CopixI18N::get('public|public.rss.flux.title')) . '" />'); } CopixHtmlHeader::addJSLink(CopixUrl::get() . 'js/iconito/module_annuaire.js'); $tpl = new CopixTpl(); $tpl->assign('TITLE_PAGE', CopixI18N::get('public|public.blog.annuaire')); $kw = $this->getRequest('kw', null); $grville = 1; $tplListe = new CopixTpl(); if ($ville_as_array = Kernel::getKernelLimits('ville_as_array')) { $tplListe->assign('list', CopixZone::process('GetListBlogs2', array('kw' => $kw, 'ville' => $ville_as_array))); } else { $tplListe->assign('list', CopixZone::process('GetListBlogs2', array('kw' => $kw, 'grville' => $grville))); } $tplListe->assign('kw', $kw); $result = $tplListe->fetch("getlistblogs.tpl"); $tpl->assign("MAIN", $result); return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl); }
/** * Affiche la liste déroulante avec toutes les villes d'un groupe de ville * * @author Christophe Beyer <*****@*****.**> * @since 2006/01/17 * @param integer $grville Id du groupe de ville * @param integer $value Valeur actuelle de la combo * @param string $fieldName Nom du champ de type SELECT qui en résulte * @param string $attribs Attributs HTML de la liste (STYLE, ONCHANGE...) * @param array $linesSup Lignes supplémentaires à ajouter en haut de la liste au-dessus des dossiers (ex: "Choisissez la ville"). Chaque ligne est un tableau, de type array ("value"=>"", "libelle"=>"Choisissez") * @param string $droit Si on ne veut afficher que les villes sur lesquelles l'usager a un certain droit (VOIR / COMM, ou voir / communiquer) */ public function _createContent(&$toReturn) { $annuaireService =& CopixClassesFactory::Create('annuaire|AnnuaireService'); $grville = $this->getParam('grville') ? $this->getParam('grville') : NULL; $value = $this->getParam('value') ? $this->getParam('value') : 0; $fieldName = $this->getParam('fieldName') ? $this->getParam('fieldName') : NULL; $attribs = $this->getParam('attribs') ? $this->getParam('attribs') : NULL; $linesSup = $this->getParam('linesSup') ? $this->getParam('linesSup') : NULL; $pDroit = $this->getParam('droit'); if ($ville_as_array = Kernel::getKernelLimits('ville_as_array')) { $villes = $annuaireService->getVilles($ville_as_array, array('droit' => $pDroit)); } else { $villes = $annuaireService->getVillesInGrville($grville, array('droit' => $pDroit)); } $tpl = new CopixTpl(); $tpl->assign('items', $villes); $tpl->assign('value', $value); $tpl->assign('fieldName', $fieldName); $tpl->assign('attribs', $attribs); $tpl->assign('linesSup', $linesSup); $toReturn = $tpl->fetch('combovilles.tpl'); return true; }
/** * Affichage de l'annuaire en version popup * * Affiche les discussions d'un forum et les informations sur les discussions (titre, dernier message...), avec un lien pour lire chaque discussion. * * @author Christophe Beyer <*****@*****.**> * @since 2006/01/18 */ public function getPopup() { if (!Kernel::is_connected()) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('annuaire|annuaire.error.noLogged'), 'back' => CopixUrl::get('||'))); } CopixHTMLHeader::addJSLink(_resource("js/iconito/module_annuaire_popup.js")); CopixHTMLHeader::addJSLink(_resource("js/jquery/jquery.tablesorter.min.js")); CopixHTMLHeader::addJSLink(_resource("js/jquery/jquery.metadata.js")); CopixHTMLHeader::addCSSLink(_resource("js/jquery/css/jquery.tablesorter.css")); $grville = _request('grville') ? _request('grville') : NULL; $ville = _request('ville') ? _request('ville') : NULL; $ecole = _request('ecole') ? _request('ecole') : NULL; $classe = _request('classe') ? _request('classe') : NULL; $field = _request('field') ? _request('field') : ''; $profils = _request('profils') ? _request('profils') : array(); $profil = $this->getRequest('profil'); // Si on force sur un profil unique a afficher $ALL = CopixConfig::get('annuaire|annu_combo_all'); $annuaireService =& CopixClassesFactory::Create('annuaire|AnnuaireService'); // Annuaire par défaut, on regarde sa session if (!$classe && !$ecole && !$ville) { $home = $annuaireService->getAnnuaireHome(); //print_r($home); switch ($home['type']) { case 'BU_GRVILLE': $grville = $home['id']; $ville = $ALL; $ecole = $ALL; $classe = $ALL; break; case 'BU_VILLE': $info = Kernel::getNodeInfo($home['type'], $home['id']); if ($info) { $grville = $info['ALL']->vil_id_grville; } $ville = $home['id']; $ecole = $ALL; $classe = $ALL; break; case 'BU_ECOLE': $info = Kernel::getNodeInfo($home['type'], $home['id']); if ($info) { $grville = $info['ALL']->vil_id_grville; $ville = $info['ALL']->eco_id_ville; } $ecole = $home['id']; $classe = $ALL; break; case 'BU_CLASSE': $info = Kernel::getNodeInfo($home['type'], $home['id']); //_dump($info); if ($info) { $grville = $info['parent']['ALL']->vil_id_grville; $ville = $info['parent']['ALL']->eco_id_ville; $ecole = $info['parent']['id']; } $classe = $home['id']; //echo "grville=$grville / ville=$ville / ecole=$ecole / classe=$classe"; break; } } $comboEcoles = $comboClasses = true; // On force les valeurs des combos if ($profil) { switch ($profil) { case 'USER_VIL': $comboEcoles = $comboClasses = false; $ecole = $classe = $ALL; break; } } $matrix =& enic::get('matrixCache'); $helper =& enic::get('matrixHelpers'); $right = _request('right', 'voir'); // voir ou communiquer $iCan = 'communiquer' == $right ? 'iCanTalkToThisType' : 'iCanSeeThisType'; $tplListe = new CopixTpl(); $visib = array('USER_ELE' => $helper->{$iCan}('USER_ELE'), 'USER_ENS' => $helper->{$iCan}('USER_ENS') || $helper->{$iCan}('USER_DIR'), 'USER_RES' => $helper->{$iCan}('USER_RES'), 'USER_EXT' => $helper->{$iCan}('USER_EXT'), 'USER_ADM' => $helper->{$iCan}('USER_ADM'), 'USER_VIL' => $helper->{$iCan}('USER_VIL')); //_dump($visib); $debug = false; $start = microtime(true); $tplListe->assign('combogrvilles', CopixZone::process('annuaire|combogrvilles', array('droit' => $right, 'value' => $grville, 'fieldName' => 'grville', 'attribs' => 'class="annu_combo_popup" ONCHANGE="change_grville(this,this.form);"', 'linesSup' => array()))); if ($debug) { echo "combogrvilles " . date("H:i:s") . " " . (microtime(true) - $start) . "<br />"; } $start = microtime(true); $tplListe->assign('combovilles', CopixZone::process('annuaire|combovilles', array('droit' => $right, 'grville' => $grville, 'value' => $ville, 'fieldName' => 'ville', 'attribs' => 'class="annu_combo_popup" ONCHANGE="change_ville(this,this.form);"', 'linesSup' => array(0 => array('value' => $ALL, 'libelle' => CopixI18N::get('annuaire|annuaire.comboAllVilles')))))); if ($debug) { echo "combovilles " . date("H:i:s") . " " . (microtime(true) - $start) . "<br />"; } $start = microtime(true); if ($ville == $ALL && $comboEcoles) { $tplListe->assign('comboecoles', CopixZone::process('annuaire|comboecolesingrville', array('droit' => $right, 'grville' => $grville, 'value' => $ecole, 'fieldName' => 'ecole', 'attribs' => 'class="annu_combo_popup" ONCHANGE="change_ecole(this,this.form);"', 'linesSup' => array(0 => array('value' => $ALL, 'libelle' => CopixI18N::get('annuaire|annuaire.comboAllEcoles')))))); if ($debug) { echo "comboecolesingrville " . date("H:i:s") . " " . (microtime(true) - $start) . "<br />"; } } elseif ($comboEcoles) { $tplListe->assign('comboecoles', CopixZone::process('annuaire|comboecolesinville', array('droit' => $right, 'ville' => $ville, 'value' => $ecole, 'fieldName' => 'ecole', 'attribs' => 'class="annu_combo_popup" ONCHANGE="change_ecole(this,this.form);"', 'linesSup' => array(0 => array('value' => $ALL, 'libelle' => CopixI18N::get('annuaire|annuaire.comboAllEcoles')))))); if ($debug) { echo "comboecolesinville " . date("H:i:s") . " " . (microtime(true) - $start) . "<br />"; } } $start = microtime(true); if ($ville == $ALL && $ecole == $ALL && $comboClasses) { $tplListe->assign('comboclasses', CopixZone::process('annuaire|comboclassesingrville', array('droit' => $right, 'grville' => $grville, 'value' => $classe, 'fieldName' => 'classe', 'attribs' => 'class="annu_combo_popup" ONCHANGE="change_classe(this,this.form);"', 'linesSup' => array(0 => array('value' => $ALL, 'libelle' => CopixI18N::get('annuaire|annuaire.comboAllClasses')))))); if ($debug) { echo "comboclassesingrville " . date("H:i:s") . " " . (microtime(true) - $start) . "<br />"; } } elseif ($ecole == $ALL && $comboClasses) { $tplListe->assign('comboclasses', CopixZone::process('annuaire|comboclassesinville', array('droit' => $right, 'ville' => $ville, 'value' => $classe, 'fieldName' => 'classe', 'attribs' => 'class="annu_combo_popup" ONCHANGE="change_classe(this,this.form);"', 'linesSup' => array(0 => array('value' => $ALL, 'libelle' => CopixI18N::get('annuaire|annuaire.comboAllClasses')))))); if ($debug) { echo "comboclassesinville " . date("H:i:s") . " " . (microtime(true) - $start) . "<br />"; } } elseif ($ecole && $comboClasses) { $tplListe->assign('comboclasses', CopixZone::process('annuaire|comboclassesinecole', array('droit' => $right, 'ecole' => $ecole, 'value' => $classe, 'fieldName' => 'classe', 'attribs' => 'class="annu_combo_popup" ONCHANGE="change_classe(this,this.form);"', 'linesSup' => array(0 => array('value' => $ALL, 'libelle' => CopixI18N::get('annuaire|annuaire.comboAllClasses')))))); if ($debug) { echo "comboclassesinecole " . date("H:i:s") . " " . (microtime(true) - $start) . "<br />"; } } elseif ($comboClasses) { $tplListe->assign('comboclasses', CopixZone::process('annuaire|comboempty', array('fieldName' => 'classe', 'attribs' => 'class="annu_combo_popup" ONCHANGE="change_classe(this,this.form);"'))); if ($debug) { echo "comboempty " . date("H:i:s") . " " . (microtime(true) - $start) . "<br />"; } } if ($ville_as_array = Kernel::getKernelLimits('ville_as_array')) { // Limitation par URL, on verifie les parametres if ($ville && $ville != $ALL && !in_array($ville, $ville_as_array)) { $ville = 0; } if ($ecole && $ecole != $ALL && ($rEcole = Kernel::getNodeInfo('BU_ECOLE', $ecole, false)) && !in_array($rEcole['ALL']->vil_id_grville, $ville_as_array)) { $ecole = 0; } if ($classe && $classe != $ALL && ($rClasse = Kernel::getNodeInfo('BU_CLASSE', $classe, false)) && !in_array($rClasse['ALL']->eco_id_ville, $ville_as_array)) { $classe = 0; } } //kernel::myDebug ("grville=$grville / ville=$ville / ecole=$ecole / classe=$classe"); //kernel::myDebug ($profils); if ($classe && $classe !== $ALL) { // Une classe précise $visib['USER_ELE'] = $matrix->classe($classe)->_right->USER_ELE->{$right}; $visib['USER_ENS'] = $matrix->classe($classe)->_right->USER_ENS->{$right} || $matrix->classe($classe)->_right->USER_DIR->{$right}; $visib['USER_RES'] = $matrix->classe($classe)->_right->USER_RES->{$right}; $visib['USER_ADM'] = $matrix->classe($classe)->_right->USER_ADM->{$right}; $visib['USER_EXT'] = $matrix->classe($classe)->_right->USER_EXT->{$right}; $visib['USER_VIL'] = $matrix->classe($classe)->_right->USER_VIL->{$right}; } elseif ($ecole && $classe == $ALL && $ecole !== $ALL) { // Une école $visib['USER_ELE'] = $matrix->ecole($ecole)->_right->USER_ELE->{$right}; $visib['USER_ENS'] = $matrix->ecole($ecole)->_right->USER_ENS->{$right} || $matrix->ecole($ecole)->_right->USER_DIR->{$right}; $visib['USER_RES'] = $matrix->ecole($ecole)->_right->USER_RES->{$right}; $visib['USER_ADM'] = $matrix->ecole($ecole)->_right->USER_ADM->{$right}; $visib['USER_EXT'] = $matrix->ecole($ecole)->_right->USER_EXT->{$right}; $visib['USER_VIL'] = $matrix->ecole($ecole)->_right->USER_VIL->{$right}; } elseif ($ville && $classe == $ALL && $ecole == $ALL && $ville !== $ALL) { // Une ville $visib['USER_ELE'] = $matrix->ville($ville)->_right->USER_ELE->{$right}; $visib['USER_ENS'] = $matrix->ville($ville)->_right->USER_ENS->{$right} || $matrix->ville($ville)->_right->USER_DIR->{$right}; $visib['USER_RES'] = $matrix->ville($ville)->_right->USER_RES->{$right}; $visib['USER_ADM'] = $matrix->ville($ville)->_right->USER_ADM->{$right}; $visib['USER_EXT'] = $matrix->ville($ville)->_right->USER_EXT->{$right}; $visib['USER_VIL'] = $matrix->ville($ville)->_right->USER_VIL->{$right}; } elseif ($grville && $classe == $ALL && $ecole == $ALL && $ville == $ALL) { // Un groupe de villes $visib['USER_ELE'] = $matrix->grville($grville)->_right->USER_ELE->{$right}; $visib['USER_ENS'] = $matrix->grville($grville)->_right->USER_ENS->{$right} || $matrix->grville($grville)->_right->USER_DIR->{$right}; $visib['USER_RES'] = $matrix->grville($grville)->_right->USER_RES->{$right}; $visib['USER_ADM'] = $matrix->grville($grville)->_right->USER_ADM->{$right}; $visib['USER_EXT'] = $matrix->grville($grville)->_right->USER_EXT->{$right}; $visib['USER_VIL'] = $matrix->grville($grville)->_right->USER_VIL->{$right}; } //_dump($visib); // Si on restreint a un profil if ($profil && $visib[$profil]) { switch ($profil) { case 'USER_VIL': $profils = array(); $profils['VIL'] = 1; break; } } if (!$profils && $visib['USER_ELE']) { $profils['ELE'] = 1; } elseif (!$profils && $visib['USER_ENS']) { $profils['PEC'] = 1; } elseif (!$profils && $visib['USER_RES']) { $profils['PAR'] = 1; } elseif (!$profils && $visib['USER_EXT']) { $profils['EXT'] = 1; } elseif (!$profils && $visib['USER_ADM']) { $profils['ADM'] = 1; } elseif (!$profils && $visib['USER_VIL']) { $profils['VIL'] = 1; } //kernel::myDebug($visib); // =============== ELEVES ========================= $eleves = array(); if (isset($profils['ELE']) && $grville && $ville && $ecole && $classe && $visib['USER_ELE']) { if ($classe != $ALL) { // Une classe précise $eleves = $annuaireService->getEleves('BU_CLASSE', $classe); } elseif ($classe == $ALL && $ecole != $ALL) { // Les eleves d'une école $eleves = $annuaireService->getEleves('BU_ECOLE', $ecole); } elseif ($classe == $ALL && $ecole == $ALL && $ville != $ALL) { // Les eleves d'une ville $eleves = $annuaireService->getEleves('BU_VILLE', $ville); } elseif ($classe == $ALL && $ecole == $ALL && $ville == $ALL) { // Les eleves d'un groupe de villes $eleves = $annuaireService->getEleves('BU_GRVILLE', $grville); } } // =============== PERSONNEL ========================= $personnel = array(); if (isset($profils['PEC']) && $grville && $ville && $ecole && $classe && $visib['USER_ENS']) { if ($classe != $ALL) { // Une classe précise $personnel = $annuaireService->getPersonnel('BU_CLASSE', $classe); } elseif ($classe == $ALL && $ecole != $ALL) { // Les classes d'une école $personnel = $annuaireService->getPersonnel('BU_ECOLE', $ecole); } elseif ($classe == $ALL && $ecole == $ALL && $ville != $ALL) { // Les classes d'une ville $personnel = $annuaireService->getPersonnel('BU_VILLE', $ville); } elseif ($classe == $ALL && $ecole == $ALL && $ville == $ALL) { // Les classes d'un groupe de villes $personnel = $annuaireService->getPersonnel('BU_GRVILLE', $grville); } } // =============== PARENTS ========================= $parents = array(); if (isset($profils['PAR']) && $grville && $ville && $ecole && $classe && $visib['USER_RES']) { if ($classe != $ALL) { // Une classe précise $parents = $annuaireService->getParents('BU_CLASSE', $classe); } elseif ($classe == $ALL && $ecole != $ALL) { // Les classes d'une école $parents = $annuaireService->getParents('BU_ECOLE', $ecole); } elseif ($classe == $ALL && $ecole == $ALL && $ville != $ALL) { // Les classes d'une ville $parents = $annuaireService->getParents('BU_VILLE', $ville); } elseif ($classe == $ALL && $ecole == $ALL && $ville == $ALL) { // Les classes d'un groupe de villes $parents = $annuaireService->getParents('BU_GRVILLE', $grville); } } // =============== PERSONNEL ADMINISTRATIF ========================= $adm = array(); if (isset($profils['ADM']) && $grville && $ville && $ecole && $classe && $visib['USER_ADM']) { if (($classe != $ALL || $classe == $ALL) && $ecole != $ALL) { // Les classes d'une école $adm = $annuaireService->getPersonnelAdm('BU_ECOLE', $ecole); } elseif ($classe == $ALL && $ecole == $ALL && $ville != $ALL) { // Les classes d'une ville $adm = $annuaireService->getPersonnelAdm('BU_VILLE', $ville); } elseif ($classe == $ALL && $ecole == $ALL && $ville == $ALL) { // Les classes d'un groupe de villes $adm = $annuaireService->getPersonnelAdm('BU_GRVILLE', $grville); } } // =============== PERSONNEL EXTERIEUR ========================= $ext = array(); if (isset($profils['EXT']) && $grville && $ville && $ecole && $classe && $visib['USER_EXT']) { $ext = $annuaireService->getPersonnelExt('ROOT', 0); } // =============== PERSONNEL VILLE ========================= $vil = array(); if (isset($profils['VIL']) && $grville && $ville && $visib['USER_VIL']) { if ($ville != $ALL) { // Dans une ville $vil = $annuaireService->getPersonnelVil('BU_VILLE', $ville); } elseif ($ville == $ALL) { // Dans un groupe de villes $vil = $annuaireService->getPersonnelVil('BU_GRVILLE', $grville); } } $droits = array('checkAll' => $annuaireService->canMakeInAnnuaire('POPUP_CHECK_ALL')); $users = array(); foreach ($eleves as $user) { $users[$user->bu_type . '-' . $user->bu_id] = $user; } foreach ($parents as $user) { $users[$user->bu_type . '-' . $user->bu_id] = $user; } foreach ($personnel as $user) { $users[$user->bu_type . '-' . $user->bu_id] = $user; } foreach ($adm as $user) { $users[$user->bu_type . '-' . $user->bu_id] = $user; } foreach ($vil as $user) { $users[$user->bu_type . '-' . $user->bu_id] = $user; } foreach ($ext as $user) { $users[$user->bu_type . '-' . $user->bu_id] = $user; } //_dump($eleves); /* if ('communiquer' === $right) { foreach ($users as $k => $user) { //print_r($user); //$matrix->communiquer(); } } */ usort($users, array('ActionGroupAnnuaire', '_usortPopup')); $tplListe->assign('field', $field); $tplListe->assign('grville', $grville); $tplListe->assign('eleves', $eleves); $tplListe->assign('personnel', $personnel); $tplListe->assign('parents', $parents); $tplListe->assign('ext', $ext); $tplListe->assign('adm', $adm); $tplListe->assign('vil', $vil); $tplListe->assign('profils', $profils); $tplListe->assign('droits', $droits); $tplListe->assign('ville', $ville); $tplListe->assign('ecole', $ecole); $tplListe->assign('classe', $classe); $tplListe->assign('visib', $visib); $tplListe->assign('profil', $profil); $tplListe->assign('users', $users); $tplListe->assign('right', $right); $result = $tplListe->fetch('getpopup.tpl'); $ppo = new CopixPPO(); $ppo->result = $result; $ppo->TITLE_PAGE = CopixI18N::get('annuaire|annuaire.moduleDescription'); CopixHTMLHeader::addJSLink(_resource("js/iconito/module_annuaire.js")); return _arPPO($ppo, array('template' => 'getpopup_ppo.tpl', 'mainTemplate' => 'default|main_popup.php')); }
/** * Retourne les classes d'un groupe de villes, avec les infos des enseignants affect�s * * @author Christophe Beyer <*****@*****.**> * @since 2006/01/19 * @param integer $grville Id du groupe de villes * @param array $options Tableau d'options. [droit] pour n'avoir que les classes sur lesquelles on a ce droit * @return array Tableau avec les classes */ public function getClassesInGrville($grville, $options = array()) { $classes = array(); if (isset($options['getNodeInfo_light']) && $options['getNodeInfo_light']) { $getNodeInfo_full = false; } else { $getNodeInfo_full = true; } $matrix =& enic::get('matrixCache'); $childs = Kernel::getNodeChilds('BU_GRVILLE', $grville); foreach ($childs as $child) { if ($child['type'] == 'BU_VILLE') { if (($ville_as_array = Kernel::getKernelLimits('ville_as_array')) && !in_array($child['id'], $ville_as_array)) { continue; } if (isset($options['droit'])) { $tmp = AnnuaireService::getClassesInVille($child['id'], array('droit' => $options['droit'])); } else { $tmp = AnnuaireService::getClassesInVille($child['id']); } if (count($tmp) > 0) { $node = Kernel::getNodeInfo($child['type'], $child['id'], $getNodeInfo_full); $classes[] = array('id' => '0', 'nom' => "----- " . $node['nom'] . " -----"); $classes = array_merge($classes, $tmp); } } } return $classes; }
/** * Renvoie la liste des agents de ville rattachés aux villes d'un groupe de villes et ayant un compte utilisateur * * @author Christophe Beyer <*****@*****.**> * @since 2007/11/06 * @param integer $grville Id du groupe de villes * @return mixed Objet DAO */ public function getPersonnelVilInGrville($grville) { $sqlPlus = ''; if (Kernel::getKernelLimits('ville')) { $sqlPlus .= ' AND VIL.id_vi IN (' . Kernel::getKernelLimits('ville') . ')'; } $query = "SELECT P.numero AS id, P.nom, P.prenom1 as prenom, P.mel AS email, S.sexe, U.id_dbuser AS id_copix, U.login_dbuser AS login, LI.bu_type, LI.bu_id, PE.role, PR.nom_role, PR.nom_role_pluriel FROM kernel_bu_personnel P, kernel_bu_personnel_entite PE, kernel_bu_personnel_role PR, kernel_bu_sexe S, kernel_bu_ville VIL, kernel_link_bu2user LI, dbuser U WHERE P.numero=PE.id_per AND PE.role=PR.id_role AND P.id_sexe=S.id_s AND LI.user_id=U.id_dbuser AND LI.bu_type='USER_VIL' AND LI.bu_id=P.numero AND PE.reference=VIL.id_vi AND PE.type_ref='VILLE' AND VIL.id_grville=" . $grville . $sqlPlus . " ORDER BY PR.priorite, P.nom, P.prenom1"; //print_r($query); return _doQuery($query); }
/** * Récupère la liste des derniers articles publiés dans des blogs publics. A utiliser pour des flux RSS ou des zones de la Une * * @author Christophe Beyer <*****@*****.**> * @since 2012/02/21 * @param array $options * [nb] Nombre d'éléments à afficher * [categories] Pour ajouter les catégories de chaque article * [parent] Pour récupérer les infos sur le parent du blog * [blogId] Pour limiter à un blog précis * [future] Pour afficher ou non les articles post-datés (true par défaut) * */ public function findPublic($options = array()) { $limit = isset($options['nb']) && $options['nb'] ? $options['nb'] : 10; $arTypes = array(); if (CopixConfig::exists('public|blogs.types') && CopixConfig::get('public|blogs.types')) { $arTypes = explode(",", CopixConfig::get('public|blogs.types')); } $arTypes[] = 'CLUB'; $params = array(); $critere = 'SELECT ART.id_bact, ART.name_bact, ART.url_bact, ART.date_bact, ART.time_bact, ART.sumary_bact, ART.sumary_html_bact, BLOG.url_blog, KME.node_type AS parent_type, KME.node_id AS parent_id FROM module_blog BLOG, module_blog_article ART, kernel_mod_enabled KME WHERE ART.id_blog=BLOG.id_blog AND KME.module_id=BLOG.id_blog AND KME.module_type=\'MOD_BLOG\' AND BLOG.is_public=1 AND ART.is_online=1'; $blogId = isset($options['blogId']) && $options['blogId'] ? (int) $options['blogId'] : 0; $future = isset($options['future']) ? $options['future'] : true; if ($blogId) { $critere .= ' AND ART.id_blog = :blogId'; $params['blogId'] = $blogId; } else { $critere .= ' AND KME.node_type IN (\'' . implode('\',\'', $arTypes) . '\')'; } if (!$future) { $critere .= ' AND (ART.date_bact < :today1 OR (ART.date_bact = :today2 AND ART.time_bact <= :now))'; $params['today1'] = $params['today2'] = date('Ymd'); $params['now'] = date('Hi'); } $critere .= ' ORDER BY ART.date_bact DESC, ART.time_bact DESC, ART.id_bact ASC'; if (!$blogId && Kernel::getKernelLimits('ville')) { $critere .= ' LIMIT ' . $limit * 10; } else { $critere .= ' LIMIT ' . $limit; } $list = _doQuery($critere, $params); $arArticle = array(); foreach ($list as $article) { $add = true; if (!$blogId) { switch ($article->parent_type) { case 'CLUB': if (Kernel::getKernelLimits('ville')) { $ville = GroupeService::getGroupeVille($article->parent_id); if (!in_array($ville, Kernel::getKernelLimits('ville_as_array'))) { $add = false; } } break; } } if (isset($options['categories']) && $options['categories']) { $sp = _daoSp(); $sp->addCondition('id_bact', '=', $article->id_bact); $article->categories = array(); foreach (_ioDAO('blog|blogarticle_blogarticlecategory')->findBy($sp) as $object) { $article->categories[] = _ioDAO('blog|blogarticlecategory')->get($object->id_bacg); } } $date = array(); $date['Y'] = substr($article->date_bact, 0, 4); $date['m'] = substr($article->date_bact, 4, 2); $date['d'] = substr($article->date_bact, 6, 2); $date['H'] = substr($article->time_bact, 0, 2); $date['i'] = substr($article->time_bact, 2, 2); $article->dateRFC822 = gmdate('D, d M Y H:i:s', mktime($date['H'], $date['i'], 0, $date['m'], $date['d'], $date['Y'])) . ' GMT'; if ($add) { if (!isset($options['parent']) || $options['parent']) { $article->parent = Kernel::getNodeInfo($article->parent_type, $article->parent_id); } $arArticle[] = $article; } } if (!$blogId && Kernel::getKernelLimits('ville')) { $arArticle = array_slice($arArticle, 0, $limit); } return $arArticle; }
/** * Affiche la liste des blogs ayant au moins un article, pour un groupe de ville, ou une ou plusieurs villes * * @author Christophe Beyer <*****@*****.**> * @since 2006/03/23 * @param string $kw Mot-cl� pour la recherche (option) * @param integer grville Id de groupe de ville * @param array ville Tableau avec les ID des villes */ public function _createContent(&$toReturn) { CopixHtmlHeader::addJSLink(CopixUrl::get() . 'js/iconito/module_fichesecoles.js'); $kw = $this->getParam('kw', null); $pGrVille = $this->getParam('grville', null); $pVille = $this->getParam('ville', null); // Tableau $tpl = new CopixTpl(); if ($pVille) { $villes = AnnuaireService::getVilles($pVille); } else { $villes = AnnuaireService::getVillesInGrville($pGrVille); } //print_r($villes); $tpl->assign('villes', $villes); $ecoles = array(); foreach ($villes as $ville) { //$ecoles $ec = AnnuaireService::getEcolesInVille($ville['id'], array('directeur' => false)); foreach ($ec as $k => $e) { $blog = getNodeBlog('BU_ECOLE', $e['id']); //print_r($blog); if ($blog && $blog->is_public == 1) { $ec[$k]['blog']['url_blog'] = $blog->url_blog; } } $ecoles[$ville['id']] = $ec; } //print_r($ecoles); $tpl->assign('ecoles', $ecoles); if ($kw) { $critere = " SELECT * FROM module_blog WHERE is_public=1 AND name_blog LIKE '%" . addslashes($kw) . "%' ORDER BY name_blog"; } else { $critere = " SELECT * FROM module_blog WHERE is_public=1 AND 1 ORDER BY name_blog"; } $sql = _doQuery($critere); $list = array(); $arTypes = array(); if (CopixConfig::exists('public|blogs.types') && CopixConfig::get('public|blogs.types')) { $arTypes = explode(",", CopixConfig::get('public|blogs.types')); } $arTypes[] = 'CLUB'; //print_r($sql); foreach ($sql as $blog) { $parent = Kernel::getModParentInfo("MOD_BLOG", $blog->id_blog); if ($parent) { if ($arTypes && !in_array($parent['type'], $arTypes)) { continue; } //var_dump($parent); $blog->parent = $parent['nom']; switch ($parent['type']) { case 'CLUB': if (Kernel::getKernelLimits('ville')) { $ville = GroupeService::getGroupeVille($parent['id']); if (!in_array($ville, Kernel::getKernelLimits('ville_as_array'))) { continue; } } $blog->type = CopixI18N::get('public.blog.typeClub'); break; /* case 'BU_CLASSE' : $blog->type = CopixI18N::get ('public.blog.typeClasse'); $blog->parent .= ' - '.$parent['ALL']->eco_nom; if ($parent['ALL']->eco_type) $blog->parent .= ' - '.$parent['ALL']->eco_type.''; break; */ //case 'BU_ECOLE' : $blog->type = CopixI18N::get ('public.blog.typeEcole'); break; //case 'BU_VILLE' : $blog->type = CopixI18N::get ('public.blog.typeVille'); break; //case 'BU_GRVILLE' : $blog->type = CopixI18N::get ('public.blog.typeGrville'); break; //default : $blog->type = $parent['type']; break; } if (!isset($blog->type)) { continue; } $blog->stats = KernelBlog::getStats($blog->id_blog); //print_r($blog); /* Activer pour cacher les blogs non lisibles */ // if( !blogauth::canMakeInBlog('READ', $blog) ) continue; if ($blog->stats['nbArticles']['value'] > 0) { $list[] = $blog; } } } usort($list, "order_tab_blogs"); $tpl->assign('list', $list); if (!CopixConfig::exists('|can_public_rssfeed') || CopixConfig::get('|can_public_rssfeed')) { $tpl->assign('can_public_rssfeed', 1); } else { $tpl->assign('can_public_rssfeed', 0); } $toReturn = $tpl->fetch('getlistblogszone2.tpl'); return true; }
/** * Affiche la liste des ecoles * * @author Christophe Beyer <*****@*****.**> * @since 2008/11/10 * @param string $titre Titre a donner a la zone * @param integer $ajaxpopup 1 si on veut afficher le lien vers la fiche en Ajax, 0 pour afficher le lien Href classique. Par defaut : 0 * @param integer $colonnes Nb de colonnes. Par defaut : 1 * @param integer $grville Id du groupe de villes dans lequel on pioche les ecoles. Par defaut : 1 * @param integer $ville Id de la ville dans laquelle on pioche les ecoles. Par defaut : null (prend le groupe de ville). Si on passe un grville et une ville, on prend la ville * @param string $groupBy Si regroupement. Peut valoir "type" * @param integer $dispType 1 pour afficher le type des ecoles, 0 pour n'afficher que leur nom. Par defaut : 1 */ public function _createContent(&$toReturn) { //params exclusion list $IdExclusionList = array(); CopixHtmlHeader::addJSLink(CopixUrl::get() . 'js/iconito/module_fichesecoles.js'); $annuaireService =& CopixClassesFactory::Create('annuaire|AnnuaireService'); $titre = $this->getParam('titre'); $ajaxpopup = $this->getParam('ajaxpopup', false); $colonnes = $this->getParam('colonnes'); $colonnes = intval($colonnes); if (!$colonnes) { $colonnes = 1; } $grville = $this->getParam('grville', null); $ville = $this->getParam('ville', null); $search = $this->getParam('search', null); $pGroupBy = $this->getParam('groupBy'); $pDispType = $this->getParam('dispType'); $pDispFilter = $this->getParam('dispFilter') === '' ? true : $this->getParam('dispFilter') ? true : false; $pDispHeader = $this->getParam('dispHeader', 1); if ($ville <= 0 && ($ville_as_array = Kernel::getKernelLimits('ville_as_array'))) { $list = array(); if (!empty($search)) { $list = $annuaireService->searchEcolesByVilles($search, $ville_as_array); } else { foreach ($ville_as_array as $ville_item) { $list_tmp = $annuaireService->getEcolesInVille($ville_item); $list = array_merge($list, $list_tmp); } } } else { //add default city : $ville = empty($ville) ? empty($this->defaultVille) ? null : $this->defaultVille : $ville; if (!empty($search)) { $list = $annuaireService->searchEcoles($search); } elseif (!empty($ville) && $ville > 0) { $list = $annuaireService->getEcolesInVille($ville); } elseif (!empty($grville)) { $list = $annuaireService->getEcolesInGrville($grville); } else { $list = $annuaireService->getAllEcoles(); } } if ($pGroupBy == 'type') { usort($list, array($this, "usort_ecoles_type")); } elseif ($pGroupBy == 'ville') { usort($list, array($this, "usort_ecoles_ville")); } elseif ($pGroupBy == 'villeType') { $listByCityAndType = array(); foreach ($list as $item) { if (!array_key_exists('ville', $item)) { continue; } if (in_array($item['id'], $IdExclusionList)) { continue; } $listByCityAndType[$item['ville_nom']][$item['type']][] = $item; } $listByCityAndTypeFinal = array(); //order type foreach ($listByCityAndType as $k => $typeCollection) { if (array_key_exists('Elémentaire', $typeCollection)) { $listByCityAndTypeFinal[$k]['Elémentaire'] = $typeCollection['Elémentaire']; } if (array_key_exists('Primaire', $typeCollection)) { $listByCityAndTypeFinal[$k]['Primaire'] = $typeCollection['Primaire']; } if (array_key_exists('Maternelle', $typeCollection)) { $listByCityAndTypeFinal[$k]['Maternelle'] = $typeCollection['Maternelle']; } if (array_key_exists('Privée', $typeCollection)) { $listByCityAndTypeFinal[$k]['Privée'] = $typeCollection['Privée']; } } $list = $listByCityAndTypeFinal; } //kernel::myDebug($list); $nbEcoles = 0; foreach ($list as $k => $ecole) { if ($ecole['id'] > 0) { $nbEcoles++; } } //kernel::myDebug($list); // Nb elements par colonnes $parCols = ceil($nbEcoles / $colonnes); if (($ville_as_array = Kernel::getKernelLimits('ville_as_array')) && is_array($ville_as_array) && count($ville_as_array) > 0) { $listVille = $this->db->query('SELECT * FROM kernel_bu_ville WHERE id_vi IN (' . implode(',', $ville_as_array) . ') ORDER BY canon')->toArray(); $displayVille = count($listVille) > 1 ? true : false; } else { $listVille = $this->db->query('SELECT * FROM kernel_bu_ville ORDER BY canon')->toArray(); $displayVille = count($listVille) > 1 ? true : false; } $tpl = new CopixTpl(); $tpl->assign('titre', $titre); $tpl->assign('ajaxpopup', $ajaxpopup); $tpl->assign('list', $list); $tpl->assign('parCols', $parCols); $tpl->assign('widthColonne', round(100 / $colonnes, 1) . '%'); $tpl->assign('displayVille', $displayVille); $tpl->assign('villes', $listVille); $tpl->assign('defaultVille', $ville); $tpl->assign('groupBy', $pGroupBy); $tpl->assign('dispType', $pDispType); $tpl->assign('dispFilter', $pDispFilter); $tpl->assign('dispHeader', $pDispHeader); $searchInputValue = empty($search) ? $this->i18n('welcome.ecoles.search') : $search; $tpl->assign('searchInputValue', $searchInputValue); $toReturn = $tpl->fetch('zone_ecoles.tpl'); return true; }
/** * Liste de groupes * * @author Christophe Beyer <*****@*****.**> * @since 2005/11/08 * @param integer $forum Id du forum * @return array Tableau avec les groupes */ public function getListPublic($offset, $count, $kw = null) { $criteres = _daoSp(); $criteres->addCondition('is_open', '=', 1); if (CopixConfig::exists('kernel|groupeAssistance') && ($groupeAssistance = CopixConfig::get('kernel|groupeAssistance'))) { $criteres->addCondition('id', '!=', $groupeAssistance); } // D�coupage du pattern if ($kw) { $testpattern = str_replace(array(" ", "%20"), "%20", $kw); $temp = split("%20", $testpattern); $criteres->startGroup(); foreach ($temp as $word) { if ($word != "") { $criteres->addCondition('titre', 'LIKE', "%{$word}%", 'or'); $criteres->addCondition('description', 'LIKE', "%{$word}%", 'or'); } } $criteres->endGroup(); } if ($offset) { $criteres->setOffset($offset); } if ($count) { $criteres->setCount($count); } $criteres->orderBy(array('date_creation', 'desc')); $list = _ioDao('groupe|groupe')->findBy($criteres); //search tags by Id or Name $listTag = new CopixDAORecordIterator(_doQuery('SELECT g.id AS id, g.titre AS titre, g.description AS description, g.is_open AS is_open, g.createur AS createur, g.date_creation AS date_creation FROM module_groupe_groupe AS g JOIN module_tags_groups AS tg ON tg.id_group = g.id JOIN module_tags AS t ON tg.id_tag = t.id WHERE g.is_open=1 AND t.name LIKE "%' . $kw . '%" OR t.id = ' . (int) $kw), $this->getDAOId()); //merge records $listGroupFinal = array(); foreach ($list as $l) { $listGroupFinal[] = $l; } foreach ($listTag as $l) { $listGroupFinal[] = $l; } $list = $listGroupFinal; $arGroupes = array(); $groupListId = array(); foreach ($list as $groupe) { if (in_array($groupe->id, $groupListId)) { continue; } $groupListId[] = $groupe->id; $parent = Kernel::getNodeParents("CLUB", $groupe->id); $ok = true; if (Kernel::getKernelLimits('ville')) { if ($parent) { $ville = GroupeService::getGroupeVille($groupe->id, $parent); if (!in_array($ville, Kernel::getKernelLimits('ville_as_array'))) { $ok = false; } } else { $ok = false; } } if ($ok) { $groupe->parent = $parent; $arGroupes[] = $groupe; } } $results = $arGroupes; return $results; }