[PLUGINS] +clavettes et dependances
[lhc/web/clavette_www.git] / www / plugins / champs_extras3 / base / cextras.php
1 <?php
2
3 /**
4 * Déclaration colonnes SQL des champs extras
5 *
6 * @package SPIP\Cextras\Pipelines
7 **/
8
9 // sécurité
10 if (!defined("_ECRIRE_INC_VERSION")) return;
11
12
13 /**
14 * Déclarer les nouveaux champs et les nouvelles infos des objets éditoriaux
15 *
16 * La fonction déclare tous les champs extras (saisies de type sql).
17 *
18 * Elle déclare aussi, en fonction des options choisies pour les champs
19 * - la recherche dans le champs, avec une certaine pondération,
20 * - le versionnage de champ
21 *
22 * @note
23 * Ne pas utiliser dans le code de cette fonction
24 * table_objet() qui ferait une réentrance et des calculs faux.
25 *
26 * @pipeline declarer_tables_objets_sql
27 * @param array $tables
28 * Description des tables
29 * @return array
30 * Description complétée des tables
31 */
32 function cextras_declarer_tables_objets_sql($tables){
33
34 include_spip('inc/cextras');
35
36 // recuperer les champs crees par les plugins
37 // array($table => array(Liste de saisies))
38 include_spip('inc/saisies');
39
40 // si saisies a ete supprime par ftp, on sort tranquilou sans tuer SPIP.
41 // champs extras sera ensuite desactive par admin plugins.
42 if (!function_exists('saisies_lister_avec_sql')) {
43 return $tables;
44 }
45
46 $saisies_tables = pipeline('declarer_champs_extras', array());
47 foreach ($saisies_tables as $table => $saisies) {
48 if (isset($tables[$table])) {
49 $saisies = saisies_lister_avec_sql($saisies);
50 foreach ($saisies as $saisie) {
51 $nom = $saisie['options']['nom'];
52 if (!isset($tables[$table]['field'][$nom])) {
53 $tables[$table]['field'][$nom] = $saisie['options']['sql'];
54 }
55 // on l'ajoute dans la liste des champs editables
56 if (isset($tables[$table]['champs_editables'])
57 and !in_array($nom, $tables[$table]['champs_editables'])){
58 $tables[$table]['champs_editables'][] = $nom;
59 }
60
61 // ajouter le champ dans les analyses de recherche si demande
62 // l'option rechercher peut valoir 'on', true, ou 5 (entier) pour l'indice de ponderation
63 // par defaut, la ponderation est de 2.
64 if (isset($saisie['options']['rechercher']) and $saisie['options']['rechercher']) {
65 $ponderation = $saisie['options']['rechercher'];
66 if ($ponderation === 'on' OR $ponderation === true) {
67 // le plugin d'interface donne la valeur de ponderation dans une option separee.
68 if (isset($saisie['options']['rechercher_ponderation']) and $saisie['options']['rechercher_ponderation']) {
69 $ponderation = intval($saisie['options']['rechercher_ponderation']);
70 } else {
71 $ponderation = 2;
72 }
73 } else {
74 $ponderation = intval($ponderation);
75 }
76 $tables[$table]['rechercher_champs'][$nom] = $ponderation;
77 }
78 // option de versionnage ?
79 if (isset($saisie['options']['versionner']) and $saisie['options']['versionner']) {
80 // on l'ajoute dans la liste des champs versionnables
81 if (isset($tables[$table]['champs_versionnes'])
82 and !in_array($nom, $tables[$table]['champs_versionnes'])) {
83 $tables[$table]['champs_versionnes'][] = $nom;
84 }
85 }
86 }
87 }
88 }
89
90 return $tables;
91 }
92
93
94 /**
95 * Déclarer les nouvelles infos sur les champs extras ajoutés
96 * en ce qui concerne les traitements automatiques sur les balises.
97 *
98 * @pipeline declarer_tables_interfaces
99 * @param array $interfaces
100 * Déclarations d'interface pour le compilateur
101 * @return array
102 * Déclarations d'interface pour le compilateur
103 **/
104 function cextras_declarer_tables_interfaces($interfaces){
105
106 include_spip('inc/cextras');
107 include_spip('inc/saisies');
108
109 // si saisies a ete supprime par ftp, on sort tranquilou sans tuer SPIP.
110 // champs extras sera ensuite desactive par admin plugins.
111 if (!function_exists('saisies_lister_avec_sql')) {
112 return $tables;
113 }
114
115 // recuperer les champs crees par les plugins
116 $saisies_tables = pipeline('declarer_champs_extras', array());
117 if (!$saisies_tables) {
118 return $interfaces;
119 }
120
121 foreach ($saisies_tables as $table=>$saisies) {
122 $saisies = saisies_lister_avec_sql($saisies);
123 $saisies = saisies_lister_avec_traitements($saisies);
124
125 foreach ($saisies as $saisie) {
126 $traitement = $saisie['options']['traitements'];
127 $balise = strtoupper($saisie['options']['nom']);
128 // definir
129 if (!isset($interfaces['table_des_traitements'][$balise])) {
130 $interfaces['table_des_traitements'][$balise] = array();
131 }
132 // le traitement peut etre le nom d'un define
133 $traitement = defined($traitement) ? constant($traitement) : $traitement;
134
135 // SPIP 3 permet de declarer par la table sql directement.
136 $interfaces['table_des_traitements'][$balise][$table] = $traitement;
137
138 }
139 }
140
141 // ajouter les champs au tableau spip
142 return $interfaces;
143 }
144
145
146 ?>