/** * filtre de test pour savoir si l'acces a un article est restreint * * @param int $id_article * @param int $id_auteur * @return bool */ function accesrestreint_article_restreint($id_article, $id_auteur = null) { include_spip('public/quete'); include_spip('inc/accesrestreint'); $article = quete_parent_lang('spip_articles', $id_article); return @in_array($article['id_rubrique'], accesrestreint_liste_rubriques_exclues(!test_espace_prive(), $id_auteur)); }
/** * Retourne la rubrique d'un article * * Repose sur la fonction quete_parent_lang pour la mutualisation * +mise en cache SQL des requêtes * * @uses quete_parent_lang() * * @param int $id_article * @param $serveur * @return int */ function quete_rubrique($id_article, $serveur) { $id_parent = quete_parent_lang('spip_articles', $id_article, $serveur); return $id_parent['id_rubrique']; }
function autoriser_site_voir($faire, $type, $id, $qui, $opt) { include_spip('public/quete'); if (!$id_rubrique = $opt['id_rubrique']){ $site = quete_parent_lang('spip_syndic',$id); $id_rubrique = $site['id_rubrique']; } return autoriser_rubrique_voir('voir','rubrique',$id_rubrique,$qui,$opt); }
/** * Calcul de la rubrique associée à la requête * (sélection de squelette spécifique par id_rubrique & lang) * * Êttention, on repète cela à chaque inclusion, * on optimise donc pour ne faire la recherche qu'une fois * par contexte semblable du point de vue des id_xx * * @staticvar array $liste_objets * @param array $contexte * @return array */ function quete_rubrique_fond($contexte) { static $liste_objets = null; static $quete = array(); if (is_null($liste_objets)) { $liste_objets = array(); include_spip('inc/urls'); include_spip('public/quete'); $l = urls_liste_objets(false); // placer la rubrique en tete des objets $l = array_diff($l, array('rubrique')); array_unshift($l, 'rubrique'); foreach ($l as $objet) { $id = id_table_objet($objet); if (!isset($liste_objets[$id])) { $liste_objets[$id] = objet_type($objet, false); } } } $c = array_intersect_key($contexte, $liste_objets); if (!count($c)) { return false; } $c = array_map('intval', $c); $s = serialize($c); if (isset($quete[$s])) { return $quete[$s]; } if (isset($c['id_rubrique']) and $r = $c['id_rubrique']) { unset($c['id_rubrique']); $c = array('id_rubrique' => $r) + $c; } foreach ($c as $_id => $id) { if ($id and $row = quete_parent_lang(table_objet_sql($liste_objets[$_id]), $id)) { $lang = isset($row['lang']) ? $row['lang'] : ''; if ($_id == 'id_rubrique' or isset($row['id_rubrique']) and $id = $row['id_rubrique']) { return $quete[$s] = array($id, $lang); } } } return $quete[$s] = false; }
function quete_rubrique_fond($contexte) { if (isset($contexte['id_rubrique']) AND $id = intval($contexte['id_rubrique']) AND $row = quete_parent_lang('spip_rubriques',$id)) { $lang = isset($row['lang']) ? $row['lang'] : ''; return array ($id, $lang); } if (isset($contexte['id_breve']) AND $id = intval($contexte['id_breve']) AND $row = quete_parent_lang('spip_breves',$id) AND $id_rubrique_fond = $row['id_rubrique']) { $lang = isset($row['lang']) ? $row['lang'] : ''; return array($id_rubrique_fond, $lang); } if (isset($contexte['id_syndic']) AND $id = intval($contexte['id_syndic']) AND $row = quete_parent_lang('spip_syndic',$id) AND $id_rubrique_fond = $row['id_rubrique'] AND $row = quete_parent_lang('spip_rubriques',$id_rubrique_fond)) { $lang = isset($row['lang']) ? $row['lang'] : ''; return array($id_rubrique_fond, $lang); } if (isset($contexte['id_article']) AND $id = intval($contexte['id_article']) AND $row = quete_parent_lang('spip_articles',$id) AND $id_rubrique_fond = $row['id_rubrique']) { $lang = isset($row['lang']) ? $row['lang'] : ''; return array($id_rubrique_fond, $lang); } }