source: spip-zone/_plugins_/sel/pipelines/complement_editer_auteur.php @ 61250

Last change on this file since 61250 was 61250, checked in by zonepro@…, 9 years ago
  • connexion des map google avec le kml dynamique -> derniers inscrits
  • on conditionne l'appatition de la modération utilisateur / annonce dans le menu aux options configurées dans les meta
  • ceinture et bretelle : on vérifie aux différents étages des inclure le droit de visualiser / agir sur les pages concernées
File size: 12.1 KB
Line 
1<?php
2function sel_editer_contenu_objet($flux){
3        $spip_branche_principale = substr($GLOBALS[spip_version_branche], 0, 1);
4        if ($flux['args']['type']=='auteur') {
5                // $flux['data'] = preg_replace("%(<form method='post')%is","<form method='post' onsubmit='codeAdresse()'",$flux['data']);
6       
7                $complement_auteur_identite = recuperer_fond('formulaires/inc-auteur-identite', $flux['args']['contexte']);
8                if ($spip_branche_principale==3) $flux['data'] = preg_replace('%(<li class="editer editer_nom (.*?)</li>)%is',''."\n".$complement_auteur_identite, $flux['data']);
9                if ($spip_branche_principale==2) $flux['data'] = preg_replace('%(<li class="editer_nom (.*?)</li>)%is',''."\n".$complement_auteur_identite, $flux['data']);
10
11                if ($spip_branche_principale==3) $flux['data'] = preg_replace('%(<li class="editer editer_bio(.*?)</li>)%is','',$flux['data']);
12                if ($spip_branche_principale==2) $flux['data'] = preg_replace('%(<li class="editer_bio(.*?)</li>)%is','',$flux['data']);
13
14               
15                if ($spip_branche_principale==3) $flux['data'] = preg_replace('%(<li class="editer editer_email(.*?)</li>)%is','',$flux['data']);
16                if ($spip_branche_principale==2) $flux['data'] = preg_replace('%(<li class="editer_email(.*?)</li>)%is','',$flux['data']);
17
18                if ($spip_branche_principale==3) $flux['data'] = preg_replace('%(<li class="editer editer_pgp(.*?)</li>)%is','',$flux['data']);
19                if ($spip_branche_principale==2) $flux['data'] = preg_replace('%(<li class="editer_pgp(.*?)</li>)%is','',$flux['data']);
20               
21                // utilisateur non certifié --> pas d'accès aux statuts des utilisateurs :
22                // champ acces : '0nouveau' et statut : '6forum' (visiteur)
23               
24                // utilisateur certifié  --> pas d'accès aux statuts des utilisateurs
25                // champ acces : 1utilisateur_ok et champ statut : 1comite (rédacteur)
26               
27                // utilisateur refusé  --> pas d'accès aux statuts des utilisateurs
28                // champ acces : '2utilisateur_ko' et statut : '6forum' (visiteur)
29               
30                // administrateur local du catalogue --> accès aux statuts des utilisateurs (menu normal), mais pas la case à cocher "webmestre"
31                // champ acces : 3admin_local et champ statut : '1comite' (rédacteur)
32               
33                // admistrateur général du catalogue --> --> accès à tout, menu + case à cocher.
34                // champ acces : 4admin_general et champ statut : '0minirezo' (admin, éventuellement webmestre)
35                               
36                if (!test_espace_prive()) {
37                        if ($spip_branche_principale==3) $flux['data'] = preg_replace("%(<div class='notice'>(.*?)</div>)%is",'', $flux['data']);               
38                        if ($spip_branche_principale==2) $flux['data'] = preg_replace("%(<em class='attention'>(.*?)</em>)%is",'', $flux['data']);
39                }
40                $flux['data'] = preg_replace("%(<label for='new_pass2'(.*?)</label>)%is",'$1'.'<br />'."\n", $flux['data']);
41               
42                if (in_array($GLOBALS[auteur_session][statut],array('','1comite','6forum')))
43                {       
44                        if ($spip_branche_principale==3) $flux['data'] = preg_replace("%(<li class='editer editer_statut'>(.*?)</script>(.*?)</li>)%is","",$flux['data']);
45                        if ($spip_branche_principale==2) $flux['data'] = preg_replace("%(<li class='editer_statut'>(.*?)</li>)%is","",$flux['data']);
46                }
47
48                // Pour les sessions d'admin non webmestre (admin local du catalogue), on cache la case droit webmestre
49                // Pour les sessions d'admin webmestre (admin global du catalogue), on la met en changeant son label
50               
51                if (($GLOBALS[auteur_session][statut]=='0minirezo') && ($GLOBALS[auteur_session][webmestre]=='non'))
52                {
53                        $flux['data'] = preg_replace('%(<div class="choix choix-webmestre(.*?)</div>)%is','',$flux['data']);
54                }
55
56                if (($GLOBALS[auteur_session][statut]=='0minirezo') && ($GLOBALS[auteur_session][webmestre]=='oui'))
57                {
58                        if ($spip_branche_principale==3) $flux['data'] = preg_replace('%(<label for="webmestre">(.*?)</label>)%is','<label for="webmestre">'._T('auteur:info_admin_statuer_webmestre').'</label>',$flux['data']);
59                        if ($spip_branche_principale==2) $flux['data'] = preg_replace("%(<label for='webmestre'>(.*?)</label>)%is","<label for='webmestre'>"._T('auteur:info_admin_statuer_webmestre').'</label>',$flux['data']);
60                }
61               
62                $flux['data'] = preg_replace("%(<li class='editer_liens_sites fieldset'>(.*?)</fieldset>(.*?)</li>)%is","",$flux['data']);
63
64                $complement_auteur_contact = recuperer_fond('formulaires/inc-auteur-contact', $flux['args']['contexte']);
65                $flux['data'] =    preg_replace('%(<fieldset>(.*?)</fieldset>)%isU', '$1'."\n".$complement_auteur_contact, $flux['data']);
66
67                // $complement_sels = recuperer_fond('formulaires/inc-liste_sels', $flux['args']['contexte']);
68                // $flux['data'] =    preg_replace('%(<fieldset>(.*?)</fieldset>)%isU', '$1'."\n".$complement_sels, $flux['data']);
69
70                $complement_organisations = recuperer_fond('formulaires/inc-liste_organisations', $flux['args']['contexte']);
71                $flux['data'] =    preg_replace('%(<fieldset>(.*?)</fieldset>)%isU', '$1'."\n".$complement_organisations, $flux['data']);
72               
73                } // Vos identifiants de connexion...
74       
75       
76        return $flux;
77}
78// $flux['data'] = preg_replace('%(<li(.*?)editer_statut|editer_bio|editer_pgp(.*?)>(.*?)</li>)%is'...
79
80
81function sel_formulaire_charger($flux){
82    if ($flux['args']['form'] == 'editer_auteur'){
83                $valeurs = formulaires_editer_objet_charger('auteur', $id_auteur, '', '', $retour, '');         
84                if ($flux['data']['id_auteur']=='oui') {
85                        $flux['data']['statut'] = '6forum';
86                        $flux['data']['sels0'] = '';
87                        $flux['data']['corresp_tous_sel'] = '';
88                        $flux['data']['org'] = array();
89                        // pour une modif, faire requete sur spip_organisations et construire le tableau org[1,2,3...] = id_organisation
90                        // (sauter le 0 du tableau car se base sur #COMPTEUR_BOUCLE)
91                }
92                if ($GLOBALS['meta']['moderation_utilisateur'] == 'non') $flux['data']['acces'] = '1utilisateur_ok';
93                else $flux['data']['acces'] = '0nouveau';
94        }
95        return $flux;   
96}
97
98
99function sel_formulaire_verifier($flux){
100    if ($flux['args']['form'] == 'editer_auteur'){
101                $oblig = array('nom','prenom','email', 'new_login', 'new_pass', 'adresse1','code_postal','ville','pays','tel1','sels0');
102                foreach($oblig as $ch) if (_request($ch)=='') {
103                        $erreurs[$ch] = _T('sel:formerr_oblig');
104                        $flux['data'][$ch] = $erreurs[$ch];
105                };
106                if (!email_valide(_request('email'))) {
107                        $erreurs['email'] = _T('sel:formerr_email_format');
108                        $flux['data']['email'] = $erreurs['email'];                     
109                };
110                $mails = sql_select('email','spip_auteurs');
111                while($r = sql_fetch($mails)){
112                        if (_request('email') == $r['email']) {
113                                $erreurs['email'] = _T('sel:formerr_email_existe');
114                                $flux['data']['email'] = $erreurs['email'];                                     
115                        }
116                }
117    }
118    return $flux;
119}
120
121function sel_formulaire_traiter($flux){
122    if ($flux['args']['form'] == 'editer_auteur'){
123                $id_auteur = $flux['data']['id_auteur'];
124                $upd = sql_updateq('spip_auteurs', array(
125                        'prenom'=> _request('prenom'),
126                        'acces' => _request('acces'),
127                        'adresse1' => _request('adresse1'),
128                        'adresse2' => _request('adresse2'),
129                        'code_postal' => _request('code_postal'),
130                        'ville' => _request('ville'),
131                        'pays' => _request('pays'),
132                        'tel1' => _request('tel1'),
133                        'tel2' => _request('tel2'),
134                        'lon' => _request('lon'),
135                        'lat' => _request('lat'),
136                        'commentaires' => _request('commentaires'),
137                        'inscription'   => date('Y-m-d'),                       
138                ), 'id_auteur=' . intval($id_auteur));
139                if ($upd) $flux['data']['message_ok'] = "Bravo !";
140                if (!$upd) $flux['data']['message_erreur'] = "Raté.....";
141               
142                // On ajoute les liaisons sels et organisations + éventuelles liaisons
143
144                $i = 0;
145                while (_request('sels'.$i) != '') {             
146                        $var_sel = 'sels'.$i;           
147                        $request_sel = _request($var_sel);             
148                        preg_match("#<N°[0-9]{1,}>$#",$request_sel,$n_id);
149                        $id_sel = substr($n_id[0],4);
150                        $id_sel = substr($id_sel,0,-1); 
151                        $i++;
152
153                        // on récupère l'ensemble des case cochées org[xx]
154                        $tab_org = _request('org');
155
156                       
157                        if (_request('corresp_tous_sel')=='oui') {
158                                if (is_array($tab_org)) {
159                               
160                                // on teste qu'on ait bien au moins 1 organisation
161                                        foreach($tab_org as $id_org) {
162                                                // si oui, on vérifie que les lignes ne soient pas déjà
163                                                // dans la table et si ok, insertq dans spip_correspondances pour chaque organisation
164                                                if (sql_countsel('spip_correspondances','id_auteur = '.sql_quote($id_auteur).'and id_sel = '.sql_quote($id_sel).'and id_organisation = '.sql_quote($id_org))==0) {
165                                                        sql_insertq('spip_correspondances',array('id_auteur'=>$id_auteur,'id_sel'=>$id_sel,'id_organisation'=>$id_org));
166                                                };
167                                                // Ensuite, on regarde si on trouve dans spip_correspondances
168                                                // des trios qui ne figurent pas dans le form.
169                                                // cas 1 : on trouve pour un auteur et un sel qui ne change pas, une organisation différente
170                                                // cas 2 : on trouve pour un auteur et une organisation qui ne changent pas, un sel différent
171                                                // cas 3 : on trouve pour un auteur une organisation et un sel qui ont changés
172                                                // if (sql_countsel('spip_correspondances','id_auteur = '.sql_quote($id_auteur).'and id_sel = '.sql_quote($id_sel).'or id_organisation != '.sql_quote($id_org))!=0) {
173                                                //}
174
175                                        // Dans ce cas, ça signifie qu'on fait une mise à jour,
176                                        // il faut supprimer ces lignes de la base.
177                                        // : A FAIRE qd on fera la fiche en modif
178                                        }
179                                }
180                        } else { // si la case corresp_tous_sel n'a pas été cochée : on regarde les SEL à l'unité
181                                $j = 0;
182                                // debug
183
184                                while (_request('sels_corresp'.$j) != '') {
185                                        $var_sel = 'sels_corresp'.$j;           
186                                        $request_sel = _request($var_sel);             
187                                        preg_match("#<N°[0-9]{1,}>$#",$request_sel,$n_id);
188                                        $id_selcorresp = substr($n_id[0],4);
189                                        $id_selcorresp = substr($id_selcorresp,0,-1);
190                                                                       
191                                        // on regarde si le sel en cours ($id_sel) en fait partie
192                                        // et on teste qu'il y ait bien au moins 1 organisation
193                                        // si oui, insertq id_auteur ($id_auteur) $id (en cours) org[#ID_ORGANISATION] (de chaque organisation)
194                                       
195                                        if (($id_sel == $id_selcorresp) and (is_array($tab_org))) {
196                                       
197                                                foreach($tab_org as $id_org) {
198
199                                                        if (sql_countsel('spip_correspondances','id_auteur = '.sql_quote($id_auteur).'and id_sel = '.sql_quote($id_selcorresp).'and id_organisation = '.sql_quote($id_org))==0) {
200                                                                sql_insertq('spip_correspondances',array('id_auteur'=>$id_auteur,'id_sel'=>$id_selcorresp,'id_organisation'=>$id_org));
201                                                        }
202                                                }                               
203                                        }
204                                        $j++;
205                                } 
206                               
207                                if ((!is_array($tab_org)) and $j<=1) {
208                                        // S'il n'y a ni case corresp_tous_sel ni précision de SELS pour correspondances dans les input sels_corresp
209                                        // on est dans le cas d'adhésions simples, donc des couples id_auteur / id_sel : insertq dans spip_correspondance
210                                        if (sql_countsel('spip_correspondances','id_auteur = '.sql_quote($id_auteur).'and id_sel = '.sql_quote($id_sel).'and id_organisation = NULL')==0) {
211                                                sql_insertq('spip_correspondances',array('id_auteur'=>$id_auteur,'id_sel'=>$id_sel,'id_organisation'=>NULL));
212                                        }
213
214                                        // si les valeurs reçues du form ne sont pas dans la table, et suppression dans le cas contraire (rien dans le form mais présence dans la table).
215                                        // A FAIRE quand on en sera à la fiche modif
216                                                       
217                                }
218                        }
219                       
220                       
221                } // Fin examen SELs autocompletion
222               
223                // Connecter le nouvel inscrit : include_spip('inc/auth');
224                // -----------------------------------------------------------
225                // cette fonction renvoie la ligne spip_auteur de cet auteur ss forme de tableau, mais ne fait pas de connexion
226                // $flux['data']['auteur_auth'] = auth_identifier_login(_request('new_login'), _request('new_pass'));           
227                $connect_auteur = auth_identifier_login(_request('new_login'), _request('new_pass'));
228                if (is_array($connect_auteur)) auth_loger($auteur);
229               
230                include_spip('inc/autoriser');
231                if (!autoriser('ecrire')){
232                        $h = generer_url_action('logout','logout=prive&url='.urlencode(self()));
233                }
234               
235               
236                // $GLOBALS[visiteur_session] = auth_identifier_login(_request('new_login'), _request('new_pass'));
237                // $GLOBALS[auteur_session] = auth_identifier_login(_request('new_login'), _request('new_pass'));
238                // $GLOBALS[_REQUEST][var_login] = _request('new_login');
239                // $GLOBALS[_REQUEST][password] = {6df83cca986b0bbd250660a40d24bf45b08137c05bed2890953036a9cd6b94ae;45b8428151faea0cccf65e6dac5e0d7e0d2709af26f9018c51617b9ed2d65ea8}
240                // debug : spip_log($flux['data']['auteur_auth'],'nn');
241                if (!test_espace_prive()) $flux['data']['redirect'] = 'spip.php?page=avatar&id_auteur='.$id_auteur;;
242               
243    };
244       
245    return $flux;
246}
247
248
249?>
Note: See TracBrowser for help on using the repository browser.