/** * Detail d'une ecole * * @author Christophe Beyer <*****@*****.**> * @since 2008/09/03 * @param object $rEcole Recordset de l'ecole * @param object $rFiche Recordset de la fiche ecole */ public function _createContent(&$toReturn) { $tpl = new CopixTpl(); $rEcole = $this->getParam('rEcole'); $rFiche = $this->getParam('rFiche'); $arClasses = AnnuaireService::getClassesInEcole($rEcole->numero, array('forceCanViewEns' => true, 'withNiveaux' => true)); usort($arClasses, array("ZoneFiche", "_usortClasses")); //var_dump($arClasses); $canModify = FichesEcolesService::canMakeInFicheEcole($rEcole->numero, 'MODIFY'); $blog = getNodeBlog('BU_ECOLE', $rEcole->numero, array('is_public' => 1)); //var_dump($blog); $arClassesBlogs = false; if ($blog) { $rEcole->blog = $blog; } else { // Si pas de blog, on regarde s'il y a des blogs publics de classes $arClassesBlogs = AnnuaireService::getClassesInEcole($rEcole->numero, array('onlyWithBlog' => true, 'onlyWithBlogIsPublic' => 1, 'enseignant' => false)); } //Kernel::deb($arClassesBlogs); $rEcole->directeur = AnnuaireService::getDirecteurInEcole($rEcole->numero); //var_dump($rEcole); $matrix =& enic::get('matrixCache'); $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog'); $vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode('BU_ECOLE', $rEcole->numero); $tpl->assign('rEcole', $rEcole); $tpl->assign('rFiche', $rFiche); $tpl->assign('arClasses', $arClasses); $tpl->assign('arClassesBlogs', $arClassesBlogs); $tpl->assign('canModify', $canModify); $_right = $matrix->ecole($rEcole->numero)->_right; $tpl->assign('canViewDir', $_right->USER_DIR->voir); $tpl->assign('canWriteDir', $_right->USER_DIR->communiquer); $tpl->assign('canViewEns', $_right->USER_ENS->voir); $tpl->assign('canWriteEns', $_right->USER_ENS->communiquer); $tpl->assign('id_vc', $vocabularyCatalog->id_vc); $toReturn = $tpl->fetch('fiche.tpl'); return true; }
/** * Affichage d'un annuaire de classe * * @author Christophe Beyer <*****@*****.**> * @since 2006/01/18 * @param integer $classe Id de la classe */ public function getAnnuaireClasse() { if (!Kernel::is_connected()) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('annuaire|annuaire.error.noLogged'), 'back' => CopixUrl::get('||'))); } $classe = _request("classe") ? _request("classe") : NULL; $annuaireService =& CopixClassesFactory::Create('annuaire|AnnuaireService'); $criticErrors = array(); $rClasse = Kernel::getNodeInfo('BU_CLASSE', $classe, false); $matrix =& enic::get('matrixCache'); if (!$rClasse) { $criticErrors[] = CopixI18N::get('annuaire|annuaire.error.noClasse'); } elseif (!$matrix->classe($classe)->_right->count->voir > 0) { $criticErrors[] = CopixI18N::get('kernel|kernel.error.noRights'); } if ($criticErrors) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $criticErrors), 'back' => CopixUrl::get('annuaire||'))); } CopixHtmlHeader::addJSLink(CopixUrl::get() . 'js/iconito/module_fichesecoles.js'); // Si c'est le détail d'une classe, on en déduit l'école $parent = Kernel::getNodeParents('BU_CLASSE', $classe); if ($parent[0]['type'] == 'BU_ECOLE') { $ecole = $parent[0]['id']; } $rEcole = Kernel::getNodeInfo('BU_ECOLE', $ecole, false); // Blog de l'école $blog = getNodeBlog('BU_ECOLE', $ecole, array('is_public' => 1)); if ($blog) { $rEcole['blog'] = CopixUrl::get('blog||', array('blog' => $blog->url_blog)); } $tplListe = new CopixTpl(); $tplListe->assign('infosecole', CopixZone::process('annuaire|infosecole', array('rEcole' => $rEcole))); $tplListe->assign('infosclasse', CopixZone::process('annuaire|infosclasse', array('rClasse' => $rClasse))); $tplListe->assign('classe', $rClasse); $result = $tplListe->fetch('getannuaireclasse.tpl'); //print_r($rEcole); $tpl = new CopixTpl(); $tpl->assign('TITLE_PAGE', $rClasse["nom"]); $menu = array(); if (!CopixConfig::exists('|can_group_showlist') || CopixConfig::get('|can_group_showlist')) { $menu[] = array('txt' => CopixI18N::get('groupe|groupe.annuaire'), 'url' => CopixUrl::get('groupe||getListPublic'), 'size' => '110'); } $menu[] = array('txt' => CopixI18N::get('public|public.blog.annuaire'), 'url' => CopixUrl::get('public||getListBlogs')); $menu[] = array('txt' => CopixI18N::get('annuaire|annuaire.backEcole'), 'url' => CopixUrl::get('|getAnnuaireEcole', array('ecole' => $ecole))); $menu[] = array('txt' => CopixI18N::get('annuaire|annuaire.backVille'), 'url' => CopixUrl::get('|getAnnuaireVille', array('ville' => $rEcole['ALL']->vil_id_vi))); if (CopixConfig::exists('|can_annuaire_menu') && !CopixConfig::get('|can_annuaire_menu')) { $menu = array(); } $tpl->assign('MENU', $menu); $tpl->assign('MAIN', $result); return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl); }
/** * Affichage de la fiche d'une ecole * * @author Christophe Beyer <*****@*****.**> * @since 2008/09/03 * @param integer $id Id de l'ecole */ public function blogs() { $id = $this->getRequest('id', null); $pAnnee = $this->getRequest('annee', null); // $ecoleDAO = CopixDAOFactory::create('kernel|kernel_bu_ecole'); $ficheDAO = CopixDAOFactory::create("fiches_ecoles"); $criticErrors = array(); if (!($rEcole = $ecoleDAO->get($id))) { $criticErrors[] = CopixI18N::get('fichesecoles.error.param'); } elseif (!FichesEcolesService::canMakeInFicheEcole($id, 'VIEW')) { $criticErrors[] = CopixI18N::get('kernel|kernel.error.noRights'); } if ($criticErrors) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $criticErrors), 'back' => CopixUrl::get('annuaire||'))); } $arClasses = AnnuaireService::getClassesInEcole($rEcole->numero, array('forceCanViewEns' => true, 'onlyWithBlog' => true, 'onlyWithBlogIsPublic' => 1, 'enseignant' => false, 'annee' => $pAnnee)); $rEcole->blog = getNodeBlog('BU_ECOLE', $rEcole->numero, array('is_public' => 1)); // Get vocabulary catalog to use $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog'); $vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode('BU_ECOLE', $id); $tpl = new CopixTpl(); $tpl->assign('rEcole', $rEcole); $tpl->assign('arClasses', $arClasses); $tpl->assign('catalog', $vocabularyCatalog->id_vc); if ($anneeDebutBlogs = CopixConfig::get('fichesecoles|anneeDebutBlogs')) { $anneeFinBlogs = Kernel::getAnneeScolaireCourante()->id_as; //Kernel::deb("anneeDebutBlogs=$anneeDebutBlogs / anneeFinBlogs=$anneeFinBlogs"); if (!$pAnnee) { $pAnnee = $anneeFinBlogs; } if ($anneeFinBlogs > $anneeDebutBlogs) { $comboAnnees = CopixZone::process('kernel|combo_annees', array('name' => 'annee', 'selected' => $pAnnee, 'debut' => $anneeDebutBlogs, 'fin' => $anneeFinBlogs, 'extra2' => 'onChange="ficheViewBlogs(' . $id . ',this.options[this.selectedIndex].value);"')); $tpl->assign('comboAnnees', $comboAnnees); } } $result = $tpl->fetch('blogs.tpl'); header('Content-type: text/html; charset=utf-8'); //echo utf8_encode($result); echo $result; return new CopixActionReturn(COPIX_AR_NONE, 0); }
/** * Retourne les classes d'une �cole, avec les infos des enseignants affect�s * * @author Christophe Beyer <*****@*****.**> * @since 2006/01/18 * @param integer $ecole Id de l'�cole * @param array $options Tableau d'options. Implemente : [forceCanViewEns] force l'affichage des enseignants au lieu de regarder si l'usager a les droits [onlyWithBlog] ne renvoie que les classes ayant un blog [onlyWithBlog] ne renvoie que les classes ayant un blog [onlyWithBlogIsPublic] verifie que le blog est public (ou pas, selon valeur onlyWithBlogIsPublic) [enseignant] si on veut avoir l'enseignant de la classe (true par defaut) [withNiveaux] cherche les niveaux de chaque classe [annee] Force une annee scolaire [droit] pour n'avoir que les classes sur lesquelles on a ce droit * @return array Tableau avec les classes * @todo Voir pour remplacer le -1 par un ID d'un enseignant */ public function getClassesInEcole($ecole, $options = array()) { $classes = array(); if (isset($options['getNodeInfo_light']) && $options['getNodeInfo_light']) { $getNodeInfo_full = false; } else { $getNodeInfo_full = true; } $matrix =& enic::get('matrixCache'); $getNodeChildsOptions = array(); if (isset($options['annee']) && $options['annee']) { $getNodeChildsOptions['annee'] = $options['annee']; } $childs = Kernel::getNodeChilds('BU_ECOLE', $ecole, $getNodeInfo_full, $getNodeChildsOptions); //return($childs); //echo "<pre>"; print_r($childs); die(); //return($childs); foreach ($childs as $child) { //print_r($child); if ($child['type'] == 'BU_CLASSE') { if (isset($options['droit']) && $options['droit']) { $droit = $matrix->classe($child['id'])->_right->count->{$options}['droit'] || $matrix->classe($child['id'])->member_of || $matrix->classe($child['id'])->descendant_of; //Kernel::myDebug("id=".$child['id']." / droit=".$droit); if (!$droit) { continue; } } $add = true; $node = Kernel::getNodeInfo($child['type'], $child['id'], false); $classe = array('id' => $child['id'], 'nom' => $node['nom']); // On cherche les enseignants if (!isset($options['enseignant']) || $options['enseignant']) { if (isset($options['forceCanViewEns'])) { $canViewEns = $options['forceCanViewEns']; } else { $droit = $matrix->classe($child['id'])->_right->USER_ENS->voir || $matrix->classe($child['id'])->member_of || $matrix->classe($child['id'])->descendant_of; //Kernel::myDebug("id=".$child['id']." / droit=".$droit); $canViewEns = $droit; } //Kernel::deb ("canViewEns=$canViewEns"); if (!isset($options['no_enseignant']) || $options['no_enseignant'] == 0) { $classe['enseignant'] = $canViewEns ? AnnuaireService::getEnseignantInClasse($child['id']) : NULL; } } // On cherche seulement les classes avec blog if (isset($options['onlyWithBlog']) && $options['onlyWithBlog']) { $getNodeBlogOptions = array(); if (isset($options['onlyWithBlogIsPublic'])) { $getNodeBlogOptions['is_public'] = $options['onlyWithBlogIsPublic']; } if ($blog = getNodeBlog('BU_CLASSE', $child['id'], $getNodeBlogOptions)) { //var_dump($blog); $classe['url_blog'] = $blog->url_blog; } else { $add = false; } } // Ajout eventuel des niveaux if (isset($options['withNiveaux']) && $options['withNiveaux']) { //var_dump($child); $classe['niveaux'] = $child['ALL']->getNiveaux(); } if ($add) { $classes[] = $classe; } } } // $start = microtime(true); // echo ">> foreach (childs) ".(microtime(true)-$start)."<br />"; return $classes; }
/** * 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; }