/**
 * 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));
}
Exemple #2
0
/**
 * 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;
}
Exemple #5
0
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);
	}
}