source: spip-zone/_plugins_/lim/branches/V1/inc/lim_api.php @ 100491

Last change on this file since 100491 was 100491, checked in by peetdu@…, 4 years ago

déplacer Truck vers branches/V1

  • Property svn:executable set to *
File size: 4.9 KB
Line 
1<?php
2/**
3 * Fonctions utiles au plugin Lim
4 *
5 * @plugin     Lim
6 * @copyright  2015
7 * @author     Pierre Miquel
8 * @licence    GNU/GPL
9 * @package    SPIP\Lim\Inc
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14/**
15 * Vérifier si il existe déjà des logos de téléchargés pour un type d'objet
16 * Exception : le logo du site (dans 'Identité du site') n'est pas pris en compte
17 *
18 * @type string
19 * @return bool
20 */
21function lim_verifier_presence_logo($type) {
22        include_spip('inc/chercher_logo');
23        include_spip('base/objets');
24        $id_objet = id_table_objet($type);
25        $prefixe_logo = _DIR_LOGOS.type_du_logo($id_objet).'*.*';
26        $liste_logos = glob($prefixe_logo);
27
28        // ne pas prendre en compte le logo du site (id = 0)
29        if ($type == 'spip_syndic') {
30                $chercher_logo = charger_fonction('chercher_logo','inc');
31                $logo_du_site = $chercher_logo(0,'id_syndic');
32                if(!empty($logo_du_site[0])) {
33                        $logo_du_site = array_slice($logo_du_site, 0, 1);
34                        $liste_logos = array_diff($liste_logos, $logo_du_site);
35                }
36        }
37       
38        if (is_array($liste_logos) AND count($liste_logos) > 0) return true;
39        return false;
40}
41
42/**
43 * Vérifier si il existe déjà des pétitions
44 * @return bool
45 */
46function lim_verifier_presence_petitions() {
47        /* recherche de pétitions */
48        if (sql_countsel('spip_petitions', "statut='publie'") > 0) {
49                return true;
50        }
51        return false;
52}
53
54/**
55 * si LIM est activé pour un objet et si une seule rubrique est activée, ne pas afficher le sélecteur de rubrique
56 * surcharge de inc/chercher_rubrique.php
57 * @return string
58 *     Code HTML du sélecteur
59 */
60function inc_chercher_rubrique($id_rubrique, $type, $restreint, $idem = 0, $do = 'aff') {
61        include_spip('inc/chercher_rubrique');
62        if (sql_countsel('spip_rubriques') < 1) {
63                return '';
64        }
65        /* surcharge */
66        $rubriques_restreintes = lire_config("lim_rubriques/$type");
67        if (!is_null($rubriques_restreintes)) {
68                $nbre_rubriques_total           = sql_countsel('spip_rubriques');
69                $nbre_rubriques_desactives      = count($rubriques_restreintes);
70
71                if ($nbre_rubriques_total - $nbre_rubriques_desactives <= 1) {
72                        return '';
73                }
74        }
75        // note : du coup, plus de input name='id_parent' ! Un traitement via le pipeline "editer_contenu_objet" s'occupe de palier à ce problème.
76        /* fin surcharge */
77               
78
79        // Mode sans Ajax :
80        // - soit parce que le cookie ajax n'est pas la
81        // - soit parce qu'il y a peu de rubriques
82        if (_SPIP_AJAX < 1
83                or $type == 'breve'
84                or sql_countsel('spip_rubriques') < _SPIP_SELECT_RUBRIQUES
85        ) {
86                return selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem);
87        } else {
88                return selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem, $do);
89        }
90
91}
92
93/**
94 * Vérifier si il existe déjà des objets dans la rubrique
95 * on renvoi un tableau avec le type et la table_objet
96 * @param int $id_rubrique
97 * @param string $objet
98 * @return bool
99 */
100function lim_verifier_presence_objets($id_rubrique, $objet) {
101        $table = table_objet_sql($objet);
102        if (sql_countsel($table, "id_rubrique=$id_rubrique") > 0) return true;
103        return false;
104}
105
106
107/**
108 * chercher les tables SPIP qui ne gèrent pas de rubrique, et donc non pertinentes dans la restriction par rubrique
109 * gestion des tables historiques également : annuaire de site et brèves activés ?
110 *
111 * @return array
112 *      tableau des nom de tables SPIP à exclure (ex : spip_auteurs, spip_mots, etc.)
113 */
114function lim_objets_sans_rubrique() {
115        $exclus = array();
116        $tables = lister_tables_objets_sql();
117        foreach ($tables as $key => $value) {
118                if ($value['editable'] == 'oui' AND !isset($value['field']['id_rubrique']))
119                        array_push($exclus,$key);       
120        }
121       
122        // Exception pour les objets breves et sites : sont-ils activés
123        if (lire_config('activer_breves') == 'non')
124                array_push($exclus,'spip_breves');
125        if (lire_config('activer_sites') == 'non')
126                array_push($exclus,'spip_syndic');
127
128        return $exclus;
129}
130
131/**
132 * récupérer le tableau des rubriques dans lesquelles il est possible d'editer un objet
133 *
134 * @param string $type
135 * @return array
136 */
137
138function lim_publierdansrubriques($type) {
139        $rubriques_choisies = array();
140        $tab_rubrique_objet = lire_config("lim_rubriques/$type");
141
142        // si aucune restriction on sort.
143        if (is_null($tab_rubrique_objet)) return $rubriques_choisies;
144
145        $res = sql_allfetsel('id_rubrique', 'spip_rubriques');
146        foreach ($res as $key => $value) {
147                $tab_rubriques[] = $value['id_rubrique'];
148        }
149        $rubriques_choisies = array_diff($tab_rubriques,$tab_rubrique_objet);
150        return $rubriques_choisies;
151}
152
153/**
154 * Récupérer le type des objets sélectionnés. ex. spip_articles -> article
155 *
156 * @param array
157 * @return array
158 */
159function lim_type($tableau) {
160        if (!is_array($tableau))
161                return '';
162
163        array_walk($tableau, 'lim_get_type');
164        return $tableau;
165}
166
167/**
168 * Changer les valeurs du tableau spip_articles -> article
169 */
170function lim_get_type(&$value, $key) {
171        $value = objet_type(table_objet($key));
172}
173
174/**
175 * renvoyer le nombre de rubrique auxquelles est
176 */
177function lim_nombre_rubrique($objet) {
178        $value = objet_type(table_objet($key));
179}
180
181?>
Note: See TracBrowser for help on using the repository browser.