3 * Fonctions pour le plugin Plan du site dans l’espace privé
5 * @plugin Plan du site dans l’espace privé
7 * @author Matthieu Marcillaud
9 * @package SPIP\Plan\Fonctions
12 if (!defined('_ECRIRE_INC_VERSION')) {
17 * Retourne le nombre d'éléments d'une liste d'objet qui fait qu'on
18 * n'affiche pas le contenu par défaut, mais seulement en ajax
23 function plan_limiter_listes() {
24 return defined('_PLAN_LIMITER_LISTES') ? _PLAN_LIMITER_LISTES
: 50;
29 * Compile la balise `#PLAN_AFFICHER_LISTE` qui, dans une boucle listant un objet
30 * permet de savoir si on doit afficher la liste complète.
32 * Cela dépend de la variable d'environnement 'lister' et du nombre d'éléments dans la liste :
33 * - si lister = tout, retourne vrai
34 * - si le nombre d'élément ne dépasse pas _PLAN_LIMITER_LISTES, retourne vrai,
35 * - sinon retourne faux.
40 function balise_PLAN_AFFICHER_LISTE_dist($p) {
43 $grand_total = charger_fonction('GRAND_TOTAL', 'balise');
44 $p = $grand_total($p);
45 $grand_total = $p->code
;
48 $lister = "(isset(\$Pile[0]['lister']) ? \$Pile[0]['lister'] : '')";
50 $p->code
= "(($lister == 'tout') OR ($grand_total <= plan_limiter_listes()))";
56 * Trouve les objets qui peuvent s'afficher dans le plan de page, dans une rubrique
58 * @return array [table -> chemin du squelette]
60 function plan_lister_objets_rubrique() {
62 if (is_null($liste)) {
64 $tables = lister_tables_objets_sql();
65 unset($tables['spip_rubriques']);
66 foreach ($tables as $cle => $desc) {
67 if (isset($desc['field']['id_rubrique'])) {
68 if (trouver_fond('prive/squelettes/inclure/plan-' . $desc['table_objet'])) {
69 $liste[$cle] = $desc['table_objet'];
79 * Trouve les objets qui peuvent s'afficher dans le plan de page,
80 * dans une rubrique ainsi que leurs statuts éventuels
83 * Tous les statuts sont ici retournés, même ceux que ne peuvent pas
84 * forcément utiliser l'auteur en cours.
86 * @see plan_lister_objets_rubrique_statuts_auteur()
87 * @uses plan_lister_objets_rubrique()
91 function plan_lister_objets_rubrique_statuts() {
93 if (is_null($liste)) {
94 $objets = plan_lister_objets_rubrique();
95 include_spip('inc/puce_statut');
97 foreach ($objets as $table => $null) {
98 $desc = lister_tables_objets_sql($table);
99 // l'objet possède un statut
100 if (!empty($desc['statut_textes_instituer'])) {
101 $statuts = array_keys($desc['statut_textes_instituer']);
102 $objet = $desc['table_objet'];
103 // obtenir titre et image du statut
105 foreach ($statuts as $statut) {
106 $_statuts[$statut] = array(
107 'image' => statut_image($objet, $statut),
108 'titre' => statut_titre($objet, $statut),
111 $liste[$objet] = $_statuts;
121 * Trouve les objets qui peuvent s'afficher dans le plan de page,
122 * dans une rubrique ainsi que leurs statuts utilisables pour l'auteur en cours
124 * @uses plan_lister_objets_rubrique_statuts()
128 function plan_lister_objets_rubrique_statuts_auteur() {
129 static $liste = null;
130 if (is_null($liste)) {
131 $liste = plan_lister_objets_rubrique_statuts();
132 include_spip('inc/session');
133 foreach ($liste as $objet => $statuts) {
134 if ($objet == 'articles') {
135 $autorises = statuts_articles_visibles(session_get('statut'));
136 $statuts = array_intersect_key($statuts, array_flip($autorises));
137 $liste[$objet] = $statuts;