source: spip-zone/_plugins_/contacts_et_organisations/trunk/base/contacts.php @ 96442

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

Un peu de php-cs-fixer pour unifier.

  • Property svn:executable set to *
File size: 11.1 KB
Line 
1<?php
2/**
3 * Déclarations relatives à la base de données
4 *
5 * @plugin Contacts & Organisations pour Spip 3.0
6 * @license GPL (c) 2009 - 2013
7 * @author Cyril Marion, Matthieu Marcillaud, Rastapopoulos
8 *
9 * @package SPIP\Contacts\Pipelines
10**/
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14/**
15 * Déclarer les interfaces des tables organisations et contacts
16 *
17 * @pipeline declarer_tables_interfaces
18 *
19 * @param array $interface
20 *     Déclarations d'interface pour le compilateur
21 * @return array
22 *     Déclarations d'interface pour le compilateur
23 */
24function contacts_declarer_tables_interfaces($interface) {
25       
26        $interface['table_des_tables']['annuaires'] = 'annuaires';
27        $interface['table_des_tables']['organisations'] = 'organisations';
28        $interface['table_des_tables']['organisations_liens'] = 'organisations_liens';
29        $interface['table_des_tables']['contacts'] = 'contacts';
30        $interface['table_des_tables']['contacts_liens'] = 'contacts_liens';
31        $interface['table_des_tables']['organisations_contacts'] = 'organisations_contacts';
32       
33        // -- Liaisons organisations/contacts
34        $interface['tables_jointures']['spip_organisations_contacts'][] = 'contacts';
35        $interface['tables_jointures']['spip_organisations_contacts'][] = 'organisations';
36
37        /**
38         * Objectif : autoriser les traitements SPIP sur certains champs texte...
39         */
40        $interface['table_des_traitements']['NOM'][] = _TRAITEMENT_TYPO;
41        $interface['table_des_traitements']['PRENOM'][] = _TRAITEMENT_TYPO;
42        $interface['table_des_traitements']['CIVILITE'][] = _TRAITEMENT_TYPO;
43        $interface['table_des_traitements']['FONCTION'][] = _TRAITEMENT_TYPO;
44        $interface['table_des_traitements']['ACTIVITE'][] = _TRAITEMENT_TYPO;
45        $interface['table_des_traitements']['OUVERTURES'][] = _TRAITEMENT_RACCOURCIS;
46        $interface['table_des_traitements']['TARIFS'][] = _TRAITEMENT_RACCOURCIS;
47       
48        // Chercher plus facilement dans les annuaires avec {annuaire=truc}
49        $interface['exceptions_des_tables']['organisations']['annuaire'] = array('spip_annuaires', 'identifiant');
50        $interface['exceptions_des_tables']['contacts']['annuaire'] = array('spip_annuaires', 'identifiant');
51       
52        return $interface;
53}
54
55
56/**
57 * Déclarer les objets éditoriaux des contacts et organisations
58 *
59 * @pipeline declarer_tables_objets_sql
60 *
61 * @param array $tables
62 *     Description des tables
63 * @return array
64 *     Description complétée des tables
65 */
66function contacts_declarer_tables_objets_sql($tables) {
67        //-- Table annuaires ----------------------------------------
68        $tables['spip_annuaires'] = array(
69                // Caractéristiques
70                'principale' => 'oui',
71                'page' => 'annuaire',
72                // Les champs et leurs particularités (clés etc)
73                'field' => array(
74                        'id_annuaire'           => "bigint(21) NOT NULL auto_increment",
75                        'identifiant'           => 'varchar(255) not null default ""',
76                        'titre'                         => "text DEFAULT '' NOT NULL",
77                        'descriptif'            => "TEXT DEFAULT '' NOT NULL",
78                        'maj'                           => "TIMESTAMP"
79                ),
80                'key' => array(
81                        "PRIMARY KEY"           => "id_annuaire",
82                        'KEY identifiant'       => 'identifiant',
83                ),
84                'join' => array(
85                        "id_annuaire"   => "id_annuaire",
86                ),
87                'titre' => 'titre, "" AS lang',
88                'champs_editables' => array('identifiant', 'titre', 'descriptif'),
89                'champs_versionnes' => array('identifiant', 'titre', 'descriptif'),
90                'rechercher_champs' => array(
91                        'identifiant' => 8, 'titre' => 8, 'descriptif' => 4,
92                ),
93                'tables_jointures' => array(
94                        'contacts',
95                        'organisations',
96                ),
97                // Chaînes de langue explicite
98                'texte_objets' => 'contacts:annuaires',
99                'texte_objet' => 'contacts:annuaire',
100                'texte_modifier' => 'contacts:annuaire_editer',
101                'texte_creer' => 'contacts:annuaire_creer',
102                'texte_creer_associer' => 'contacts:annuaire_creer_associer',
103                'texte_ajouter' => 'contacts:annuaire_ajouter',
104                'texte_logo_objet' => 'contacts:annuaire_logo',
105                'info_aucun_objet' => 'contacts:annuaire_aucun',
106                'info_1_objet' => 'contacts:annuaire_un',
107                'info_nb_objets' => 'contacts:annuaires_nb',
108        );
109       
110        //-- Table organisations ----------------------------------------
111        $tables['spip_organisations'] = array(
112                'page' => 'organisation',
113                'texte_objets' => 'contacts:organisations',
114                'texte_objet' => 'contacts:organisation',
115                'texte_modifier' => 'contacts:organisation_editer',
116                'texte_creer' => 'contacts:organisation_creer',
117                'texte_creer_enfant' => 'contacts:organisation_creer_fille',
118                'texte_creer_associer' => 'contacts:organisation_creer_associer',
119                'texte_ajouter' => 'contacts:organisation_ajouter',
120                'texte_logo_objet' => 'contacts:organisation_logo',
121                'info_aucun_objet' => 'contacts:organisation_aucun',
122                'info_1_objet' => 'contacts:organisation_un',
123                'info_nb_objets' => 'contacts:organisations_nb',
124                'titre' => 'nom AS titre, "" AS lang',
125                'date' => 'date_creation',
126                'principale' => 'oui',
127                'champs_editables' => array(
128                        'id_parent', 'id_auteur', 'id_annuaire',
129                        'nom', 'statut_juridique', 'identification', 'activite',
130                        'date_creation', 'descriptif', 'ouvertures', 'tarifs', 'url_site'),
131                'field' => array(
132                        "id_organisation"       => "bigint(21) NOT NULL auto_increment",
133                        'id_annuaire'           => 'bigint(21) NOT NULL default 0',
134                        "id_parent"                     => "bigint(21) NOT NULL default 0",
135                        "id_auteur"             => "bigint(21) NOT NULL default 0",
136                        "nom"                           => "tinytext DEFAULT '' NOT NULL",
137                        "statut_juridique"      => "tinytext DEFAULT '' NOT NULL", // forme juridique : SA, SARL, association, etc.
138                        "identification"        => "tinytext DEFAULT '' NOT NULL", // N° d'identification : SIRET, SIREN, N° TVA...
139                        "activite"                      => "tinytext DEFAULT '' NOT NULL", // Secteur d'activité : humanitaire, formation...
140                        "date_creation"         => "datetime NOT NULL default '0000-00-00 00:00:00'",
141                        "descriptif"            => "TEXT DEFAULT '' NOT NULL",
142                        "ouvertures"            => "text not null default ''",
143                        "tarifs"                        => "text not null default ''",
144                        "url_site"                      => "text not null default ''",
145                        "maj"                           => "TIMESTAMP",
146                ),
147                'key' => array(
148                        "PRIMARY KEY"           => "id_organisation",
149                        "KEY id_auteur"         => "id_auteur",
150                        'KEY id_annuaire'       => 'id_annuaire',
151                ),
152                'join' => array(
153                        "id_organisation"       => "id_organisation",
154                        "id_auteur"             => "id_auteur",
155                        'id_annuaire'           => 'id_annuaire',
156                ),
157                'tables_jointures' => array(
158                        'auteurs', 'annuaires',
159                        'organisations_contacts',
160                        'organisations_liens',
161                ),
162                'rechercher_champs' => array(
163                        'id_organisation' => 12, 'nom' => 8, 'descriptif' => 4, 'activite' => 4, 'statut_juridique' => 2, 'ouvertures' => 1, 'tarifs' => 1,
164                ),
165                /*
166                'rechercher_jointures' => array(
167                        'auteur' => array('nom' => 2, 'bio' => 1)
168                ),*/
169                'champs_versionnes' => array(
170                        'id_parent', 'id_auteur', 'id_annuaire',
171                         'nom', 'descriptif', 'identification', 'statut_juridique',
172                         'activite', 'date_creation', 'ouvertures', 'tarifs', 'url_site'),
173        );
174
175
176
177        //-- Table contacts ----------------------------------------
178        $tables['spip_contacts'] = array(
179                'page' => 'contact',
180                'texte_objets' => 'contacts:contacts',
181                'texte_objet' => 'contacts:contact',
182                'texte_modifier' => 'contacts:contact_editer',
183                'texte_creer' => 'contacts:contact_creer',
184                'texte_creer_associer' => 'contacts:contact_creer_associer',
185                'texte_ajouter' => 'contacts:contact_ajouter',
186                'texte_logo_objet' => 'contacts:contact_logo',
187                'info_aucun_objet' => 'contacts:contact_aucun',
188                'info_1_objet' => 'contacts:contact_un',
189                'info_nb_objets' => 'contacts:contacts_nb',
190                'titre' => '"" as lang, trim(concat(prenom, \' \', nom)) AS titre',
191                'date' => 'date_naissance',
192                'principale' => 'oui',
193                'champs_editables' => array(
194                        'id_auteur', 'id_annuaire', 'civilite', 'nom', 'prenom', 'fonction',
195                        'date_naissance', 'descriptif'),
196                'field' => array(
197                        "id_contact"    => "bigint(21) NOT NULL auto_increment",
198                        'id_annuaire'           => 'bigint(21) NOT NULL default 0',
199                        "id_auteur"     => "bigint(21) NOT NULL default 0",
200                        "civilite"              => "tinytext DEFAULT '' NOT NULL",
201                        "nom"                   => "tinytext DEFAULT '' NOT NULL",
202                        "prenom"                => "tinytext NOT NULL DEFAULT ''",
203                        "fonction"              => "tinytext DEFAULT '' NOT NULL", // gérant, membre, trésorier, etc.
204                        "date_naissance" => "datetime NOT NULL default '0000-00-00 00:00:00'",
205                        "descriptif"    => "text DEFAULT '' NOT NULL",
206                        "maj"                   => "TIMESTAMP"
207                ),
208                'key' => array(
209                        "PRIMARY KEY"           => "id_contact",
210                        "KEY id_auteur"         => "id_auteur",
211                        'KEY id_annuaire'       => 'id_annuaire',
212                ),
213                'join' => array(
214                        "id_contact"    => "id_contact",
215                        "id_auteur"     => "id_auteur",
216                        'id_annuaire'   => 'id_annuaire',
217                ),
218                'tables_jointures' => array(
219                        'auteurs', 'annuaires',
220                        'organisations_contacts',
221                        'contacts_liens',
222                ),
223                'rechercher_champs' => array(
224                        'id_contact' => 12, 'nom' => 8, 'prenom' => 2, 'descriptif' => 4, 'fonction' => 2,
225                ),
226                /*
227                'rechercher_jointures' => array(
228                        'auteur' => array('nom' => 2, 'bio' => 1)
229                ),*/
230                'champs_versionnes' => array(
231                        'id_auteur', 'id_annuaire', 'civilite', 'nom', 'prenom', 'fonction',
232                        'date_naissance', 'descriptif'),
233        );
234
235        //-- Jointures ----------------------------------------------------
236        $tables['spip_auteurs']['tables_jointures'][] = 'contacts';
237        $tables['spip_auteurs']['tables_jointures'][] = 'organisations';
238
239        return $tables;
240}
241
242
243
244/**
245 * Déclarer les tables auxiliaires des contacts et organisations
246 *
247 * @pipeline declarer_tables_auxiliaires
248 *
249 * @param array $tables_auxiliaires
250 *     Description des tables
251 * @return array
252 *     Description complétée des tables
253 */
254function contacts_declarer_tables_auxiliaires($tables_auxiliaires) {
255
256        //-- Table organisations_contacts -------------------------------------
257        $organisations_contacts = array(
258                "id_organisation" => "BIGINT(21) NOT NULL",
259                "id_contact"      => "BIGINT(21) NOT NULL",
260                "type_liaison"    => "tinytext NOT NULL DEFAULT ''",
261        );
262        $organisations_contacts_key = array(
263                "PRIMARY KEY"          => "id_organisation, id_contact",
264                "KEY id_organisation"  => "id_organisation",
265                "KEY id_contact"       => "id_contact"
266        );
267        $tables_auxiliaires['spip_organisations_contacts'] =
268                array('field' => &$organisations_contacts, 'key' => &$organisations_contacts_key);
269
270
271        //-- Table organisations_liens -------------------------------------
272        $organisations_liens = array(
273                "id_organisation" => "BIGINT(21) NOT NULL",
274                "id_objet"        => "BIGINT(21) NOT NULL",
275                "objet"           => "VARCHAR(25) NOT NULL",
276                "type_liaison"    => "VARCHAR(25) NOT NULL DEFAULT ''",
277        );
278        $organisations_liens_key = array(
279                "PRIMARY KEY"         => "id_organisation, id_objet, objet, type_liaison",
280                "KEY id_organisation" => "id_organisation",
281                "KEY id_objet"        => "id_objet",
282                "KEY objet"           => "objet"
283        );
284        $tables_auxiliaires['spip_organisations_liens'] =
285                array('field' => &$organisations_liens, 'key' => &$organisations_liens_key);
286
287
288        //-- Table contacts_liens -------------------------------------
289        $contacts_liens = array(
290                "id_contact"   => "BIGINT(21) NOT NULL",
291                "id_objet"     => "BIGINT(21) NOT NULL",
292                "objet"        => "VARCHAR(25) NOT NULL",
293                "type_liaison" => "VARCHAR(25) NOT NULL DEFAULT ''",
294        );
295        $contacts_liens_key = array(
296                "PRIMARY KEY"    => "id_contact, id_objet, objet, type_liaison",
297                "KEY id_contact" => "id_contact",
298                "KEY id_objet"   => "id_objet",
299                "KEY objet"      => "objet"
300        );
301        $tables_auxiliaires['spip_contacts_liens'] =
302                array('field' => &$contacts_liens, 'key' => &$contacts_liens_key);
303       
304        return $tables_auxiliaires;
305}
Note: See TracBrowser for help on using the repository browser.