source: spip-zone/_plugins_/noizetier/trunk/formulaires/configurer_noizetier.php @ 110333

Last change on this file since 110333 was 110333, checked in by eric@…, 5 months ago

Renommage dans l'API des blocs.
Mise au point de l'API des objets.
Correction des fonctions réversibles de composition/décomposition des conteneurs pour le cas des objets.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.5 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7
8function formulaires_configurer_noizetier_charger_dist() {
9
10        // On récupère les valeurs configurées
11        include_spip('inc/cvt_configurer');
12        $valeurs = cvtconf_formulaires_configurer_recense('configurer_noizetier');
13
14        // Injecter les objets exclus
15        include_spip('inc/noizetier_objet');
16        $valeurs['_objets_exclus'] = lister_objets_exclus();
17
18        $valeurs['editable'] = true;
19
20        return $valeurs;
21}
22
23
24function formulaires_configurer_noizetier_traiter_dist() {
25        $retour = array();
26
27        // Si on a changé la configuration de l'ajax par défaut, on supprime le cache ajax des
28        // noisettes pour forcer son recalcul à la prochaine utilisation.
29        include_spip('inc/config');
30        $defaut_ajax = lire_config('noizetier/ajax_noisette');
31
32        if ($defaut_ajax != _request('ajax_noisette')) {
33                include_spip('inc/ncore_cache');
34                cache_supprimer('noizetier', _NCORE_NOMCACHE_TYPE_NOISETTE_AJAX);
35        }
36
37        // On filtre le tableau des objets configurables pour éviter l'index vide fourni systématiquement par la saisie.
38        $objets_configurables = _request('objets_noisettes');
39        $objets_configurables = is_array($objets_configurables) ? array_filter($objets_configurables) : array();
40        set_request('objets_noisettes', $objets_configurables);
41
42        // On enregistre les nouvelles valeurs saisies
43        include_spip('inc/cvt_configurer');
44        $trace = cvtconf_formulaires_configurer_enregistre('configurer_noizetier', array());
45        $retour['message_ok'] = _T('config_info_enregistree') . $trace;
46        $retour['editable'] = true;
47
48        return $retour;
49}
50
51
52/**
53 * Renvoie la liste des types d'objet ne pouvant pas être personnalisés car ne possédant pas
54 * de page détectable par le noiZetier.
55 *
56 * @api
57 *
58 * @return array|null
59 */
60function lister_objets_exclus() {
61
62        static $exclusions = null;
63
64        if (is_null($exclusions)) {
65                $exclusions = array();
66                include_spip('base/objets');
67
68                // On récupère les tables d'objets sous la forme spip_xxxx.
69                $tables = lister_tables_objets_sql();
70                $tables = array_keys($tables);
71
72                // On récupère la liste des pages disponibles et on transforme le type d'objet en table SQL.
73                $where = array('composition=' . sql_quote(''), 'est_page_objet=' . sql_quote('oui'));
74                $pages = sql_allfetsel('type', 'spip_noizetier_pages', $where);
75                $pages = array_map('reset', $pages);
76                $pages = array_map('table_objet_sql', $pages);
77
78                // On exclut donc les tables qui ne sont pas dans la liste issues des pages.
79                $exclusions = array_diff($tables, $pages);
80        }
81
82        return $exclusions;
83}
Note: See TracBrowser for help on using the repository browser.