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

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

revert total : la modif z105884 pouvait poser des problèmes avec les critères {objet?}{id_objet?} (marcimat)

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