source: spip-zone/_plugins_/clients/formulaires/editer_client.php @ 54292

Last change on this file since 54292 was 54292, checked in by pierre.fiches@…, 8 years ago

Configuration et gestion supplémentaire :

  • portable de type "portable" et de titre "Portable"
  • fax de type "fax" et de titre "Fax"
File size: 11.1 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6include_spip('inc/config');
7
8function formulaires_editer_client_saisies_dist($id_auteur, $retour=''){
9        $conf=lire_config('clients/elm',array());
10       
11        $civilite=array();
12        $type_c = lire_config('clients/type_civ','i');
13       
14        if($type_c == 'c'){             
15                $civ=lire_config('clients/elm_civ',array('madame', 'monsieur'));       
16                $civ_t=array();
17                if (in_array("civilite", $conf) and !in_array("obli_civilite", $conf)) {               
18                        foreach($civ as $v){
19                                array_push($civ_t, "<:clients:label_$v:>");
20                        }
21                        $civ_t = array_combine($civ, $civ_t);
22                        $civilite=array(
23                                'saisie' => 'radio',
24                                'options' => array(
25                                        'nom' => 'civilite',
26                                        'label' => _T('contacts:label_civilite'),
27                                        'datas' => $civ_t
28                                )
29                        );
30                }elseif (in_array("civilite", $conf) and in_array("obli_civilite", $conf)) {
31                        foreach($civ as $v){
32                                array_push($civ_t, "<:clients:label_$v:>");
33                        }
34                        $civ_t = array_combine($civ, $civ_t);
35                        $civilite=array(
36                                'saisie' => 'radio',
37                                'options' => array(
38                                        'nom' => 'civilite',
39                                        'label' => _T('contacts:label_civilite'),
40                                        'obligatoire' => 'oui',
41                                        'datas' => $civ_t
42                                )
43                        );
44                }
45        }else{
46                if (in_array("civilite", $conf) and !in_array("obli_civilite", $conf)) {
47                        $civilite=array(
48                                'saisie' => 'input',
49                                'options' => array(
50                                        'nom' => 'civilite',
51                                        'label' => _T('contacts:label_civilite')
52                                )
53                        );
54                }elseif (in_array("civilite", $conf) and in_array("obli_civilite", $conf)) {
55                        $civilite=array(
56                                'saisie' => 'input',
57                                'options' => array(
58                                        'nom' => 'civilite',
59                                        'label' => _T('contacts:label_civilite'),
60                                        'obligatoire' => 'oui'
61                                )
62                        );
63                }
64        }
65       
66        $numero=array();
67        if (in_array("numero", $conf) and !in_array("obli_numero", $conf)) {
68                $numero=array(
69                        'saisie' => 'input',
70                        'options' => array(
71                                'nom' => 'numero',
72                                'label' => _T('coordonnees:label_numero'),
73                        )
74                );
75        }elseif (in_array("numero", $conf) and in_array("obli_numero", $conf)) {
76                $numero=array(
77                        'saisie' => 'input',
78                        'options' => array(
79                                'nom' => 'numero',
80                                'label' => _T('coordonnees:label_numero'),
81                                'obligatoire' => 'oui'
82                        )
83                );
84        }
85       
86        $portable=array();
87        if (in_array("portable", $conf) and !in_array("obli_portable", $conf)) {
88                $portable=array(
89                        'saisie' => 'input',
90                        'options' => array(
91                                'nom' => 'portable',
92                                'label' => _T('clients:label_portable')
93                        )
94                );
95        }elseif (in_array("portable", $conf) and in_array("obli_portable", $conf)) {
96                $portable=array(
97                        'saisie' => 'input',
98                        'options' => array(
99                                'nom' => 'portable',
100                                'label' => _T('clients:label_portable'),
101                                'obligatoire' => 'oui'
102                        )
103                );
104        }
105       
106        $fax=array();
107        if (in_array("fax", $conf) and !in_array("obli_fax", $conf)) {
108                $fax=array(
109                        'saisie' => 'input',
110                        'options' => array(
111                                'nom' => 'fax',
112                                'label' => _T('clients:label_fax')
113                        )
114                );
115        }elseif (in_array("fax", $conf) and in_array("obli_fax", $conf)) {
116                $fax=array(
117                        'saisie' => 'input',
118                        'options' => array(
119                                'nom' => 'fax',
120                                'label' => _T('clients:label_fax'),
121                                'obligatoire' => 'oui'
122                        )
123                );
124        }
125               
126        $complement=array();
127        if (in_array("complement", $conf) and !in_array("obli_complement", $conf)) {
128                $complement=array(
129                        'saisie' => 'input',
130                        'options' => array(
131                                'nom' => 'complement',
132                                'label' => _T('coordonnees:label_complement'),
133                        )
134                );
135        }elseif (in_array("complement", $conf) and in_array("obli_complement", $conf)) {
136                $complement=array(
137                        'saisie' => 'input',
138                        'options' => array(
139                                'nom' => 'complement',
140                                'label' => _T('coordonnees:label_complement'),
141                                'obligatoire' => 'oui'
142                        )
143                );
144        }
145       
146        $pays=array();
147        if (in_array("pays", $conf) and !in_array("obli_pays", $conf)) {
148                $pays=array(
149                        'saisie' => 'pays',
150                        'options' => array(
151                                'nom' => 'pays',                               
152                                'code_pays' => 'oui',
153                                'label' => _T('coordonnees:label_pays'),
154                        )
155                );
156        }elseif (in_array("pays", $conf) and in_array("obli_pays", $conf)) {
157                $pays=array(
158                        'saisie' => 'pays',
159                        'options' => array(
160                                'nom' => 'pays',                               
161                                'code_pays' => 'oui',
162                                'label' => _T('coordonnees:label_pays'),
163                                'obligatoire' => 'oui'
164                        )
165                );
166        }
167       
168        return array(
169                $civilite,
170                array(
171                        'saisie' => 'input',
172                        'options' => array(
173                                'nom' => 'prenom',
174                                'label' => _T('contacts:label_prenom'),
175                                'obligatoire' => 'oui'
176                        )
177                ),
178                array(
179                        'saisie' => 'input',
180                        'options' => array(
181                                'nom' => 'nom',
182                                'label' => _T('contacts:label_nom'),
183                                'obligatoire' => 'oui'
184                        )
185                ),
186                array(
187                        'saisie' => 'input',
188                        'options' => array(
189                                'nom' => 'email_rien',
190                                'label' => _T('contacts:label_email'),
191                                'disable' => 'oui',
192                        ),
193                        'verifier' => array(
194                                'type' => 'email'
195                        )
196                ),
197                $numero,
198                $portable,
199                $fax,
200                array(
201                        'saisie' => 'input',
202                        'options' => array(
203                                'nom' => 'voie',
204                                'label' => _T('coordonnees:label_voie'),
205                                'obligatoire' => 'oui'
206                        )
207                ),
208                $complement,
209                array(
210                        'saisie' => 'input',
211                        'options' => array(
212                                'nom' => 'code_postal',
213                                'label' => _T('coordonnees:label_code_postal'),
214                                'obligatoire' => 'oui'
215                        )
216                ),
217                array(
218                        'saisie' => 'input',
219                        'options' => array(
220                                'nom' => 'ville',
221                                'label' => _T('coordonnees:label_ville'),
222                                'obligatoire' => 'oui'
223                        )
224                ),
225                $pays
226        );
227}
228
229function formulaires_editer_client_charger_dist($id_auteur, $retour=''){
230        include_spip('inc/session');
231        $contexte = array();
232       
233        // On vérifie qu'il y a un client correct (auteur+contact+adresse) quelque part
234        if (
235                $id_auteur > 0
236                and $email = sql_getfetsel('email', 'spip_auteurs', 'id_auteur = '.intval($id_auteur))
237                and $contact = sql_fetsel(
238                        '*',
239                        'spip_contacts_liens LEFT JOIN spip_contacts USING(id_contact)',
240                        array(
241                                'objet = '.sql_quote('auteur'),
242                                'id_objet = '.intval($id_auteur)
243                        )
244                )
245        ){
246                $contexte['email_rien'] = $email;
247                foreach ($contact as $cle=>$valeur) {
248                        $contexte[$cle] = $valeur;
249                }
250               
251                // S'il y a une adresse principale, on charge les infos
252                if ($adresse = sql_fetsel(
253                        '*',
254                        'spip_adresses_liens LEFT JOIN spip_adresses USING(id_adresse)',
255                        array(
256                                'objet = '.sql_quote('auteur'),
257                                'id_objet = '.intval($id_auteur),
258                                'type = '.sql_quote('principale')
259                        )
260                ))
261                        $contexte = array_merge($contexte, $adresse);
262                       
263                // S'il y a un numero principal, on charge les infos
264                if ($numero = sql_fetsel(
265                        '*',
266                        'spip_numeros_liens LEFT JOIN spip_numeros USING(id_numero)',
267                        array(
268                                'objet = '.sql_quote('auteur'),
269                                'id_objet = '.intval($id_auteur),
270                                'type = '.sql_quote('principal')
271                        )
272                ))
273                        $contexte = array_merge($contexte, $numero);
274                       
275                $conf=lire_config('clients/elm',array());
276                if (in_array('portable', $conf)){       
277                        // S'il y a un numero portable, on charge les infos
278                        if ($portable = sql_fetsel(
279                                '*',
280                                'spip_numeros_liens LEFT JOIN spip_numeros USING(id_numero)',
281                                array(
282                                        'objet = '.sql_quote('auteur'),
283                                        'id_objet = '.intval($id_auteur),
284                                        'type = '.sql_quote('portable')
285                                )
286                        )){
287                                foreach($portable as $c => $v){
288                                        if ($c == 'numero'){
289                                                        $c = 'portable'; 
290                                                        $_portable[$c] = $v;
291                                                        }
292                                        }                               
293                                $contexte = array_merge($contexte, $_portable);
294                        }
295                }
296                if (in_array('fax', $conf)){   
297                        // S'il y a un numero fax, on charge les infos
298                        if ($fax = sql_fetsel(
299                                '*',
300                                'spip_numeros_liens LEFT JOIN spip_numeros USING(id_numero)',
301                                array(
302                                        'objet = '.sql_quote('auteur'),
303                                        'id_objet = '.intval($id_auteur),
304                                        'type = '.sql_quote('fax')
305                                )
306                        )){
307                                foreach($fax as $c => $v){
308                                        if ($c == 'numero'){
309                                                        $c = 'fax'; 
310                                                        $_fax[$c] = $v;
311                                                        }
312                                        }                               
313                                $contexte = array_merge($contexte, $_fax);
314                        }
315                }
316        }
317        // Sinon rien
318        else{
319                $contexte['editable'] = false;
320        }
321       
322        return $contexte;
323}
324
325function formulaires_editer_client_verifier_dist($id_auteur, $retour=''){
326        $erreurs = array();
327       
328        return $erreurs;
329}
330
331function formulaires_editer_client_traiter_dist($id_auteur, $retour=''){
332        // Si redirection demandée, on refuse le traitement en ajax
333        if ($retour) refuser_traiter_formulaire_ajax();
334       
335        $retours = array();
336       
337        // On modifie le contact
338        $id_contact = sql_getfetsel(
339                'id_contact',
340                'spip_contacts_liens',
341                'objet = '.sql_quote('auteur').' and id_objet = '.$id_auteur
342        );
343        $editer_contact = charger_fonction('editer_contact', 'action/');
344        $editer_contact($id_contact);
345       
346        // Le pseudo SPIP est construit
347        set_request('nom', trim(_request('prenom').' '._request('nom'))); 
348       
349        // On modifie l'auteur
350        $editer_auteur = charger_fonction('editer_auteur', 'action/');
351        $editer_auteur($id_auteur);
352       
353        // On modifie l'adresse
354        $id_adresse = sql_getfetsel(
355                'id_adresse',
356                'spip_adresses_liens',
357                array(
358                        'objet = '.sql_quote('auteur'),
359                        'id_objet = '.$id_auteur,
360                        'type = '.sql_quote('principale')
361                )
362        );
363        // S'il n'y a pas d'adresse principale, on la crée
364        if (!$id_adresse){
365                $id_adresse = 'oui';
366                set_request('objet', 'auteur');
367                set_request('id_objet', $id_auteur);
368                set_request('type', 'principale');
369        }
370       
371        $editer_adresse = charger_fonction('editer_adresse', 'action/');
372        $editer_adresse($id_adresse);
373       
374        // On modifie le numero
375        $id_numero = sql_getfetsel(
376                'id_numero',
377                'spip_numeros_liens',
378                array(
379                        'objet = '.sql_quote('auteur'),
380                        'id_objet = '.$id_auteur,
381                        'type = '.sql_quote('principal')
382                )
383        );
384       
385        // S'il n'y a pas de numero de telephone principal, on le crée
386        if (!$id_numero){
387                $id_numero = 'oui';
388                set_request('objet', 'auteur');
389                set_request('id_objet', $id_auteur);
390                set_request('type', 'principal');
391        }
392       
393        $editer_numero = charger_fonction('editer_numero', 'action/');
394        $editer_numero($id_numero);
395       
396        // On modifie le portable s'il existe dans l'environnement
397        if(_request('portable')){
398                // on stocke cette donnee
399                $numero = _request('numero');
400                set_request('numero', _request('portable'));
401                $id_portable = sql_getfetsel(
402                        'id_numero',
403                        'spip_numeros_liens',
404                        array(
405                                'objet = '.sql_quote('auteur'),
406                                'id_objet = '.$id_auteur,
407                                'type = '.sql_quote('portable')
408                        )
409                );
410       
411                // S'il n'y a pas de numero de portable, on le crée
412                if (!$id_portable){
413                        $id_portable = 'oui';
414                        set_request('objet', 'auteur');
415                        set_request('id_objet', $id_auteur);
416                        set_request('type', 'portable');
417                }
418               
419                $editer_portable = charger_fonction('editer_numero', 'action/');
420                $editer_portable($id_portable);
421               
422        }
423       
424        // On modifie le fax s'il existe dans l'environnement
425        if(_request('fax')){
426                // on stocke cette donnee si elle ne l'est pas deja
427                $numero ? '' : $numero = _request('numero');
428                set_request('numero', _request('fax'));
429                $id_fax = sql_getfetsel(
430                        'id_numero',
431                        'spip_numeros_liens',
432                        array(
433                                'objet = '.sql_quote('auteur'),
434                                'id_objet = '.$id_auteur,
435                                'type = '.sql_quote('fax')
436                        )
437                );
438       
439                // S'il n'y a pas de numero de fax, on le crée
440                if (!$id_fax){
441                        $id_fax = 'oui';
442                        set_request('objet', 'auteur');
443                        set_request('id_objet', $id_auteur);
444                        set_request('type', 'fax');
445                }
446               
447                $editer_fax = charger_fonction('editer_numero', 'action/');
448                $editer_fax($id_fax);
449               
450        }
451       
452        // Quand on reste sur la même page, on peut toujours éditer après
453        $retours['editable'] = true;
454        // si necessaire on replace la bonne donnee dans l'environnement
455        $numero ? set_request('numero', $numero) : '';
456       
457        // Si on demande une redirection
458        if ($retour) $retours['redirect'] = $retour;
459       
460        return $retours;
461}
462
463?>
Note: See TracBrowser for help on using the repository browser.