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

Last change on this file since 54514 was 54514, checked in by cam.lafit@…, 8 years ago

Considerer les auteurs spip devenant client

  • cas des visiteurs participant à des forums

Patch (mode attila) permettant d'inscrire un client sans créer un auteur
Il semble necessaire de rationaliser à terme ces 2 fichiers qui font doublons sur pas mal de points

File size: 11.4 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
344    //Si le contact n'existe pas encore, on doit le créer (cas d'un auteur prexistant à son statut de client)
345    if (is_null($id_contact)) {
346        $inscrire_client = charger_fonction('traiter','formulaires/inscription_client');
347        $inscrire_client();
348
349            $id_contact = sql_getfetsel(
350                    'id_contact',
351                    'spip_contacts_liens',
352                    'objet = '.sql_quote('auteur').' and id_objet = '.$id_auteur
353            );
354    }
355
356        // Le pseudo SPIP est construit
357        set_request('nom', trim(_request('prenom').' '._request('nom'))); 
358       
359        // On modifie l'auteur
360        $editer_auteur = charger_fonction('editer_auteur', 'action/');
361        $editer_auteur($id_auteur);
362       
363        // On modifie l'adresse
364        $id_adresse = sql_getfetsel(
365                'id_adresse',
366                'spip_adresses_liens',
367                array(
368                        'objet = '.sql_quote('auteur'),
369                        'id_objet = '.$id_auteur,
370                        'type = '.sql_quote('principale')
371                )
372        );
373        // S'il n'y a pas d'adresse principale, on la crée
374        if (!$id_adresse){
375                $id_adresse = 'oui';
376                set_request('objet', 'auteur');
377                set_request('id_objet', $id_auteur);
378                set_request('type', 'principale');
379        }
380       
381        $editer_adresse = charger_fonction('editer_adresse', 'action/');
382        $editer_adresse($id_adresse);
383       
384        // On modifie le numero
385        $id_numero = sql_getfetsel(
386                'id_numero',
387                'spip_numeros_liens',
388                array(
389                        'objet = '.sql_quote('auteur'),
390                        'id_objet = '.$id_auteur,
391                        'type = '.sql_quote('principal')
392                )
393        );
394       
395        // S'il n'y a pas de numero de telephone principal, on le crée
396        if (!$id_numero){
397                $id_numero = 'oui';
398                set_request('objet', 'auteur');
399                set_request('id_objet', $id_auteur);
400                set_request('type', 'principal');
401        }
402       
403        $editer_numero = charger_fonction('editer_numero', 'action/');
404        $editer_numero($id_numero);
405       
406        // On modifie le portable s'il existe dans l'environnement
407        if(_request('portable')){
408                // on stocke cette donnee
409                $numero = _request('numero');
410                set_request('numero', _request('portable'));
411                $id_portable = sql_getfetsel(
412                        'id_numero',
413                        'spip_numeros_liens',
414                        array(
415                                'objet = '.sql_quote('auteur'),
416                                'id_objet = '.$id_auteur,
417                                'type = '.sql_quote('portable')
418                        )
419                );
420       
421                // S'il n'y a pas de numero de portable, on le crée
422                if (!$id_portable){
423                        $id_portable = 'oui';
424                        set_request('objet', 'auteur');
425                        set_request('id_objet', $id_auteur);
426                        set_request('type', 'portable');
427                }
428               
429                $editer_portable = charger_fonction('editer_numero', 'action/');
430                $editer_portable($id_portable);
431               
432        }
433       
434        // On modifie le fax s'il existe dans l'environnement
435        if(_request('fax')){
436                // on stocke cette donnee si elle ne l'est pas deja
437                $numero ? '' : $numero = _request('numero');
438                set_request('numero', _request('fax'));
439                $id_fax = sql_getfetsel(
440                        'id_numero',
441                        'spip_numeros_liens',
442                        array(
443                                'objet = '.sql_quote('auteur'),
444                                'id_objet = '.$id_auteur,
445                                'type = '.sql_quote('fax')
446                        )
447                );
448       
449                // S'il n'y a pas de numero de fax, on le crée
450                if (!$id_fax){
451                        $id_fax = 'oui';
452                        set_request('objet', 'auteur');
453                        set_request('id_objet', $id_auteur);
454                        set_request('type', 'fax');
455                }
456               
457                $editer_fax = charger_fonction('editer_numero', 'action/');
458                $editer_fax($id_fax);
459               
460        }
461       
462        // Quand on reste sur la même page, on peut toujours éditer après
463        $retours['editable'] = true;
464        // si necessaire on replace la bonne donnee dans l'environnement
465        $numero ? set_request('numero', $numero) : '';
466       
467        // Si on demande une redirection
468        if ($retour) $retours['redirect'] = $retour;
469       
470        return $retours;
471}
472
473?>
Note: See TracBrowser for help on using the repository browser.