source: spip-zone/_core_/plugins/plan/plan_fonctions.php

Last change on this file was 93620, checked in by cedric@…, 3 years ago

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

File size: 3.7 KB
Line 
1<?php
2/**
3 * Fonctions pour le plugin Plan du site dans l’espace privé
4 *
5 * @plugin     Plan du site dans l’espace privé
6 * @copyright  2015
7 * @author     Matthieu Marcillaud
8 * @licence    GNU/GPL
9 * @package    SPIP\Plan\Fonctions
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16/**
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
19 * après clic…
20 *
21 * @return int nombre
22 **/
23function plan_limiter_listes() {
24        return defined('_PLAN_LIMITER_LISTES') ? _PLAN_LIMITER_LISTES : 50;
25}
26
27
28/**
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.
31 *
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.
36 *
37 * @param Pile $p
38 * @return Pile
39 **/
40function balise_PLAN_AFFICHER_LISTE_dist($p) {
41
42        // #GRAND_TOTAL
43        $grand_total = charger_fonction('GRAND_TOTAL', 'balise');
44        $p = $grand_total($p);
45        $grand_total = $p->code;
46
47        // #ENV{lister}
48        $lister = "(isset(\$Pile[0]['lister']) ? \$Pile[0]['lister'] : '')";
49
50        $p->code = "(($lister == 'tout') OR ($grand_total <= plan_limiter_listes()))";
51
52        return $p;
53}
54
55/**
56 * Trouve les objets qui peuvent s'afficher dans le plan de page, dans une rubrique
57 *
58 * @return array [table -> chemin du squelette]
59 **/
60function plan_lister_objets_rubrique() {
61        static $liste = null;
62        if (is_null($liste)) {
63                $liste = array();
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'];
70                                }
71                        }
72                }
73        }
74
75        return $liste;
76}
77
78/**
79 * Trouve les objets qui peuvent s'afficher dans le plan de page,
80 * dans une rubrique ainsi que leurs statuts éventuels
81 *
82 * @note
83 *     Tous les statuts sont ici retournés, même ceux que ne peuvent pas
84 *     forcément utiliser l'auteur en cours.
85 *
86 * @see  plan_lister_objets_rubrique_statuts_auteur()
87 * @uses plan_lister_objets_rubrique()
88 *
89 * @return array
90 **/
91function plan_lister_objets_rubrique_statuts() {
92        static $liste = null;
93        if (is_null($liste)) {
94                $objets = plan_lister_objets_rubrique();
95                include_spip('inc/puce_statut');
96                $liste = array();
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
104                                $_statuts = array();
105                                foreach ($statuts as $statut) {
106                                        $_statuts[$statut] = array(
107                                                'image' => statut_image($objet, $statut),
108                                                'titre' => statut_titre($objet, $statut),
109                                        );
110                                }
111                                $liste[$objet] = $_statuts;
112                        }
113                }
114        }
115
116        return $liste;
117}
118
119
120/**
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
123 *
124 * @uses plan_lister_objets_rubrique_statuts()
125 *
126 * @return array
127 **/
128function 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;
138                        }
139                }
140        }
141
142        return $liste;
143}
Note: See TracBrowser for help on using the repository browser.