source: spip-zone/_plugins_/champs_extras/core/trunk/base/cextras.php @ 65577

Last change on this file since 65577 was 65577, checked in by marcimat@…, 7 years ago

Autoriser le versionnage des champs. (drBouvierLeduc, Rainer Müller)

File size: 3.8 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION")) return;
3
4
5/*
6 * Déclarer les nouveaux champs et
7 * les nouvelles infos des objets éditoriaux
8 *
9 * /!\ Ne pas utiliser table_objet() qui ferait une reentrance et des calculs faux.
10 */
11function cextras_declarer_tables_objets_sql($tables){
12
13        include_spip('inc/cextras');
14       
15        // recuperer les champs crees par les plugins
16        // array($table => array(Liste de saisies))
17        include_spip('inc/saisies');
18       
19        // si saisies a ete supprime par ftp, on sort tranquilou sans tuer SPIP.
20        // champs extras sera ensuite desactive par admin plugins.
21        if (!function_exists('saisies_lister_avec_sql')) {
22                return $tables;
23        }
24       
25        $saisies_tables = pipeline('declarer_champs_extras', array());
26        foreach ($saisies_tables as $table => $saisies) {
27                if (isset($tables[$table])) {
28                        $saisies = saisies_lister_avec_sql($saisies);
29                        foreach ($saisies as $saisie) {
30                                $nom = $saisie['options']['nom'];
31                                if (!isset($tables[$table]['field'][$nom])) {
32                                        $tables[$table]['field'][$nom] = $saisie['options']['sql'];
33                                }
34                                // on l'ajoute dans la liste des champs editables
35                                if (isset($tables[$table]['champs_editables'])
36                                  and !in_array($nom, $tables[$table]['champs_editables'])){
37                                        $tables[$table]['champs_editables'][] = $nom;
38                                }
39
40                                // ajouter le champ dans les analyses de recherche si demande
41                                // l'option rechercher peut valoir 'on', true, ou 5 (entier) pour l'indice de ponderation
42                                // par defaut, la ponderation est de 2.
43                                if (isset($saisie['options']['rechercher']) and $saisie['options']['rechercher']) {
44                                        $ponderation = $saisie['options']['rechercher'];
45                                        if ($ponderation === 'on' OR $ponderation === true) {
46                                                // le plugin d'interface donne la valeur de ponderation dans une option separee.
47                                                if (isset($saisie['options']['rechercher_ponderation']) and $saisie['options']['rechercher_ponderation']) {
48                                                        $ponderation = intval($saisie['options']['rechercher_ponderation']);
49                                                } else {
50                                                        $ponderation = 2;
51                                                }
52                                        } else {
53                                                $ponderation = intval($ponderation);
54                                        }
55                                        $tables[$table]['rechercher_champs'][$nom] = $ponderation;
56                                }
57                                // option de versionnage ?
58                                if (isset($saisie['options']['versionner']) and $saisie['options']['versionner']) {
59                                        // on l'ajoute dans la liste des champs versionnables
60                                        if (isset($tables[$table]['champs_versionnes'])
61                                          and !in_array($nom, $tables[$table]['champs_versionnes'])) {
62                                                $tables[$table]['champs_versionnes'][] = $nom;
63                                        }
64                                }
65                        }
66                }
67        }
68
69        return $tables;
70}
71
72
73/**
74 * Déclarer les nouvelles infos sur les champs extras ajoutés
75 * en ce qui concerne les traitements automatiques sur les balises.
76 *
77**/
78function cextras_declarer_tables_interfaces($interface){
79
80        include_spip('inc/cextras');
81        include_spip('inc/saisies');
82
83        // si saisies a ete supprime par ftp, on sort tranquilou sans tuer SPIP.
84        // champs extras sera ensuite desactive par admin plugins.
85        if (!function_exists('saisies_lister_avec_sql')) {
86                return $tables;
87        }
88
89        // recuperer les champs crees par les plugins
90        $saisies_tables = pipeline('declarer_champs_extras', array());
91        if (!$saisies_tables) {
92                return $interface;
93        }
94
95        foreach ($saisies_tables as $table=>$saisies) {
96                $saisies = saisies_lister_avec_sql($saisies);
97                $saisies = saisies_lister_avec_traitements($saisies);
98               
99                foreach ($saisies as $saisie) {
100                        $traitement = $saisie['options']['traitements'];
101                        $balise = strtoupper($saisie['options']['nom']);
102                        // definir
103                        if (!isset($interface['table_des_traitements'][$balise])) {
104                                $interface['table_des_traitements'][$balise] = array();
105                        }
106                        // le traitement peut etre le nom d'un define
107                        $traitement = defined($traitement) ? constant($traitement) : $traitement;
108       
109                        // SPIP 3 permet de declarer par la table sql directement.
110                        $interface['table_des_traitements'][$balise][$table] = $traitement;             
111                       
112                }
113        }
114
115        // ajouter les champs au tableau spip
116        return $interface;
117}
118
119
120?>
Note: See TracBrowser for help on using the repository browser.