source: spip-zone/_plugins_/inscription/trunk/inscription3_pipelines.php @ 87176

Last change on this file since 87176 was 87176, checked in by kent1@…, 5 years ago

Amélioration de la gestion des logos, permet (via un autre plugin par exemple) d'avoir d'autres fichiers dans le formulaire d'édition d'auteur

File size: 39.5 KB
Line 
1<?php
2/**
3 * Plugin Inscription3 pour SPIP
4 * © cmtmt, BoOz, kent1
5 * Licence GPL v3
6 *
7 * Utilisations de pipelines
8 *
9 * @package SPIP\Inscription3\Pipelines
10 */
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14/**
15 *
16 * Insertion dans le pipeline i3_exceptions_chargement_champs_auteurs_elargis (Inscription3)
17 * qui empêche le chargement et la recherche de champs lors de l'affichage de formulaires (editer_auteur / inscription)
18 *
19 * @return array Un tableau des champs correspondant au "name" de son input de configuration dans le CFG
20 * @param array $array Prend un tableau en argument qui doit être complété en fonction des besoins
21 */
22
23function inscription3_i3_exceptions_chargement_champs_auteurs_elargis($array){
24        // liste des champs pour lesquels on ne doit pas charger la valeur
25        $array[] = 'creation';
26        return $array;
27}
28
29/**
30 *
31 * Insertion dans le pipeline i3_exceptions_des_champs_auteurs_elargis
32 * qui empêche la création de certains champs dans la table
33 * après les avoir configuré
34 *
35 * @return array Un tableau des champs correspondant au "name" de son input de configuration dans le CFG
36 * @param array $array Prend un tableau en argument qui doit être complété en fonction des besoins
37 */
38
39function inscription3_i3_exceptions_des_champs_auteurs_elargis($array){
40        // liste des champs pour lesquels on ne doit pas créer de champs dans la table spip_auteurs
41
42        // Principalement les champs déjà présents dans spip_auteurs
43        $array[] = 'id_auteur';
44        $array[] = 'bio';
45        $array[] = 'nom';
46        $array[] = 'pass';
47        $array[] = 'login';
48        $array[] = 'email';
49        $array[] = 'statut';
50        $array[] = 'pgp';
51        $array[] = 'url_site';
52        $array[] = 'nom_site';
53
54        // Des choses spécifiques à inscription3
55        $array[] = 'logo';
56        $array[] = 'username';
57        $array[] = 'statut_nouveau';
58        $array[] = 'statut_int';
59        $array[] = 'statut_interne';
60        $array[] = 'accesrestreint';
61        $array[] = 'password';
62        $array[] = 'pass';
63        $array[] = 'affordance_form';
64        $array[] = 'reglement';
65        $array[] = 'reglement_article';
66        $array[] = 'password_complexite';
67        $array[] = 'validation_numero_international';
68        $array[] = 'pays_defaut';
69        $array[] = 'valider_comptes';
70        $array[] = 'message_form_inscription';
71        $array[] = 'auto_login';
72
73        return $array;
74}
75
76/**
77 *
78 * Insertion dans le pipeline i3_verifications_specifiques du plugin inscription3
79 * Utilisation de l'API verifier du plugin éponyme
80 *
81 * Pour chaque champs on fourni un array associatif contenant :
82 * - type => la fonction de l'api de vérification à utiliser
83 * - options => un array des options à passer à cette fonction
84 *
85 * @return array Tableau contenant plusieurs tableaux en fonction du type de champs
86 * @param object $array Doit recevoir un tableau du même type
87 */
88
89function inscription3_i3_verifications_specifiques($array){
90
91        // Les emails : fonction verifier/email
92        $array['email'] = array('type' => 'email','options' => array('disponible'=>'disponible'));
93        $array['mail_inscription'] = array('type' => 'email','options' => array('disponible'=>'disponible'));
94
95        // Les noms (signature)
96        $array['nom'] = array('type' => 'signature');
97        $array['nom_inscription'] = array('type' => 'signature');
98
99        // Les logins : fonction verifier/login
100        $array['login'] = array('type' => 'login');
101
102        // Les statuts : fonction verifier/statut
103        $array['statut'] = array('type' => 'statut');
104
105        // Les codes postaux : fonction verifier/code_postal
106        $array['code_postal'] = array('type' => 'code_postal');
107
108        // Les numéros de téléphone : fonction verifier/telephone
109        $array['telephone'] = array('type' => 'telephone');
110        $array['fax'] = array('type' => 'telephone');
111        $array['mobile'] = array('type' => 'telephone');
112
113        // Les dates
114        $array['naissance'] = array('type' => 'date','options' => array('format' => 'amj'));
115
116        return $array;
117}
118
119/**
120 * Insertion dans le pipeline affiche_droite (SPIP)
121 *
122 * Dans certaines pages définies, afficher le lien d'accès à la page des comptes utilisateurs
123 *
124 * @return array Le même tableau qu'il reçoit en argument
125 * @param array $flux Un tableau donnant des informations sur le contenu passé au pipeline
126 */
127
128function inscription3_affiche_droite($flux){
129        if(((preg_match('/^inscription3/',$flux['args']['exec']))
130                 || (preg_match('/^auteur/',$flux['args']['exec']))
131                 || (preg_match('/^i3_/',$flux['args']['exec']))
132                 || ($flux['args']['exec'] == 'configurer_inscription3')
133                 || (($flux['args']['exec'] == 'cfg') && ((_request('cfg') == 'inscription3') || preg_match('/^i3_/',_request('cfg'))))
134                )
135                 && ($flux['args']['exec'] != 'inscription3_adherents'))
136                        $flux['data'] .= recuperer_fond('prive/inscription3_affiche_droite');
137        return $flux;
138}
139
140/**
141 * Insertion dans le pipeline i3_definition_champs
142 *
143 * Définition spécifique des champs qui ne sont pas de type text
144 * Par défaut inscription3 définit les champs comme étant de type texte, cela peut être
145 * différent pour d'autres ...
146 */
147function inscription3_i3_definition_champs($flux){
148        include_spip('inc/config');
149        /**
150         * Récupération de la configuration d'inscription3
151         * pour éviter d'avoir à utiliser la fonction lire_config beaucoup de fois
152         */
153        $config_i3 = lire_config('inscription3',array());
154
155        $flux['pays'] = array(
156                'saisie' => 'pays', // type de saisie
157                'options' => array(
158                        'sql' => "int NOT NULL", // declaration sql
159                        'option_intro'=>_T('inscription3:aucun'),
160                        'class' => 'pays',
161                        'defaut' => ((array_key_exists('pays_defaut', $config_i3) and isset($config_i3['pays_defaut'])) ? $config_i3['pays_defaut'] : ''),
162                        'obligatoire' => (array_key_exists('pays_obligatoire', $config_i3) and $config_i3['pays_obligatoire'] == 'on') ? true : false,
163                        'rechercher' => false
164                )
165        );
166        $flux['validite'] = array(
167                'saisie' => 'date_jour_mois_annee', // type de saisie
168                'options'=> array(
169                        'sql' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // declaration sql
170                        'obligatoire' => (array_key_exists('validite_obligatoire', $config_i3) and $config_i3['validite_obligatoire'] == 'on') ? true : false,
171                        'rechercher' => false
172                ),
173                'verifier' => array(
174                        'type' => 'date',
175                        'options' => array(
176                                'format' => 'amj'
177                        )
178                )
179        );
180        $flux['creation'] = array(
181                'saisie' => 'date_jour_mois_annee', // type de saisie
182                'options' => array(
183                        'sql' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // declaration sql
184                        'rechercher' => false
185                ),
186                'restrictions' => array(
187                        'voir' => array('auteur' => ''),
188                        'modifier' => array('auteur' => 'webmestre')
189                )
190        );
191        $flux['naissance'] = array(
192                'saisie' => 'date_jour_mois_annee', // type de saisie
193                'options' => array(
194                        'sql' => "DATE DEFAULT '0000-00-00' NOT NULL", // declaration sql
195                        'obligatoire' => (array_key_exists('naissance_obligatoire', $config_i3) and $config_i3['naissance_obligatoire'] == 'on') ? true : false,
196                        'class'=>'nomulti',
197                        'datetime'=>'non',
198                        'rechercher' => false
199                ),
200                'verifier' => array(
201                        'type' => 'date',
202                        'options' => array(
203                                'format' => 'amj'
204                        )
205                )
206        );
207        $flux['sexe'] = array(
208                'saisie' => 'radio', // type de saisie
209                'options' => array(
210                        'label'=> _T('inscription3:label_civilite'),
211                        'datas'=> array(
212                                'F' => _T('inscription3:choix_feminin'),
213                                'M' => _T('inscription3:choix_masculin')
214                        ),
215                        'sql' => "varchar(2) NOT NULL default ''", // declaration sql
216                        'obligatoire' => (array_key_exists('sexe_obligatoire', $config_i3) and $config_i3['sexe_obligatoire'] == 'on') ? true : false,
217                        'rechercher' => false
218                )
219        );
220
221        $flux['commentaire']['saisie'] = 'textarea';
222        $flux['commentaire']['options'] = array_merge(((isset($flux['commentaire']['options']) and is_array($flux['commentaire']['options'])) ? $flux['commentaire']['options'] : array()),array('rows'=>5,'class'=>'adresse'));
223
224        $flux['adresse']['saisie'] = 'textarea';
225        $flux['adresse']['options'] = array_merge(((isset($flux['adresse']['options']) and is_array($flux['adresse']['options'])) ? $flux['adresse']['options'] : array()),array('rows'=>5,'class'=>'adresse'));
226
227        $flux['telephone']['verifier']['type'] = 'telephone';
228        $flux['telephone']['options'] = array('class'=>'nomulti');
229
230        $flux['fax']['verifier'] = 'telephone';
231        $flux['fax']['options'] = array('class'=>'nomulti');
232
233        $flux['mobile']['verifier']['type'] = 'telephone';
234        $flux['mobile']['options'] = array('class'=>'nomulti');
235
236        $flux['code_postal']['verifier']['type'] = 'code_postal';
237        $flux['code_postal']['options']['class'] = 'nomulti';
238
239        return $flux;
240}
241
242/**
243 * Insertion dans le pipeline formulaire_charger (SPIP)
244 *
245 * Charge des valeurs spécifiques dans le formulaire d'inscription
246 *
247 * @param array $flux Le contexte d'environnement du pipeline
248 * @return array $flux Le contexte d'environnement modifié
249 */
250function inscription3_formulaire_charger($flux){
251        if ($flux['args']['form']=='inscription'){
252                $valeurs = array();
253                $chercher_champs = charger_fonction('inscription3_champs_formulaire','inc');
254                $champs = $chercher_champs(null, 'inscription');
255                foreach($champs as $clef =>$valeur) {
256                        $valeurs[$valeur] = _request($valeur);
257                        if (is_array($valeurs[$valeur]))
258                                $valeurs[$valeur] = implode(',',$valeurs[$valeur]);
259                        $valeurs[$valeur] = trim($valeurs[$valeur]);
260                        if($valeur == 'naissance'){
261                                if(_request('naissance') && preg_match("/([0-9]{4})-([0-9]{2})-([0-9]{2})/",_request('naissance'),$date_naissance)){
262                                        $valeurs['naissance_annee'] = $date_naissance[1];
263                                        $valeurs['naissance_mois'] = $date_naissance[2];
264                                        $valeurs['naissance_jour'] = $date_naissance[3];
265                                }else{
266                                        $valeurs['naissance_annee'] = _request('naissance_annee');
267                                        $valeurs['naissance_mois'] = _request('naissance_mois');
268                                        $valeurs['naissance_jour'] = _request('naissance_jour');
269                                }
270                        }
271                }
272
273                include_spip('cextras_pipelines');
274                $saisies = champs_extras_objet($table = 'spip_auteurs');
275                foreach($champs as $clef=>$valeur){
276                        if(!$valeurs[$valeur]){
277                                if(array_key_exists($valeur, $saisies)){
278                                        $saisie_nom = $saisies[$valeur]['options']['nom'];
279                                        if (_request($saisie_nom)) {
280                                                $valeurs[$saisie_nom] = trim(_request($saisie_nom));
281                                        }
282                                }
283                        }
284
285                }
286                $valeurs = pipeline('i3_charger_formulaire',
287                        array(
288                                'args' => $flux['args'],
289                                'data' => $valeurs
290                        ),array()
291                );
292
293                if(is_array($flux['data']))
294                        $flux['data'] = array_merge($flux['data'], $valeurs);
295                else
296                        $flux['data'] = $valeurs;
297        }
298
299        return $flux;
300}
301
302/**
303 * Insertion dans le pipeline formulaire_verifier (SPIP)
304 *
305 * Vérifie des valeurs spécifiques dans le formulaire d'inscription et d'édition d'auteur (pour le logo)
306 *
307 * @pipeline formulaire_verifier
308 * @param array $flux
309 *              Le contexte d'environnement du pipeline
310 * @return array $flux
311 *              Le contexte d'environnement modifié
312 */
313function inscription3_formulaire_verifier($flux){
314        include_spip('inc/config');
315        if ($flux['args']['form'] == 'configurer_inscription3'){
316                /**
317                 * On supprime l'ancienne configuration pour avoir la nouvelle dans l'ordre
318                 */
319                include_spip('inc/meta');
320                effacer_meta('inscription3');
321        }
322        if($flux['args']['form']=='oubli'){
323                $erreurs = $flux['args']['erreurs'];
324                if(!$erreurs OR (count($erreurs) == 0)){
325                        $email = _request('oubli');
326                        if(!empty($email)) {
327                                $statut = sql_getfetsel('statut','spip_auteurs','email='.sql_quote($email));
328                                if($statut == '8aconfirmer'){
329                                        $flux['data']['oubli'] = _T('inscription3:erreur_compte_attente_mail');
330                                        $flux['data']['message_erreur'] = _T('inscription3:erreur_compte_attente');
331                                }
332                        }else{
333                                $erreurs['email'] = "Champ email vide";
334                        }
335                }
336        }
337
338        if (in_array($flux['args']['form'],array('editer_auteur','inscription'))){
339                /**
340                 * On inclue inscription3_fonctions pour prendre en compte la surcharge de
341                 * formulaires_inscription_traiter en ajax
342                 */
343                $erreurs = $flux['data'];
344
345                include_spip('inscription3_fonctions');
346                include_spip('inc/editer');
347                $config_i3 = lire_config('inscription3',array());
348                if($erreurs['message_erreur'] == NULL)
349                        unset($erreurs['message_erreur']);
350               
351                /**
352                 * Vérifier le logo
353                 */
354                if(isset($_FILES['logo']) && ($_FILES['logo']['error'] == 0)){
355                        $f =_DIR_LOGOS . $arg . '.tmp';
356                        include_spip('inc/documents');
357                        if ($erreur = check_upload_error($_FILES['logo']['error'],"",$f))
358                                $erreurs['logo'] = $erreur;
359                        else
360                                $source = deplacer_fichier_upload($_FILES['logo']['tmp_name'], $f);
361                       
362                        if ($source AND $f) {
363                                global $formats_logos;
364                                $size = @getimagesize($f);
365                                $type = !$size ? '': ($size[2] > 3 ? '' : $formats_logos[$size[2]-1]);
366                                if ($type) {
367                                        $poids = filesize($f);
368       
369                                        if (_LOGO_MAX_SIZE > 0
370                                        AND $poids > _LOGO_MAX_SIZE*1024) {
371                                                spip_unlink ($f);
372                                                $erreur = _T('info_logo_max_poids',
373                                                                                        array('maxi' => taille_en_octets(_LOGO_MAX_SIZE*1024),
374                                                                                        'actuel' => taille_en_octets($poids)));
375                                        }
376               
377                                        elseif (_LOGO_MAX_WIDTH * _LOGO_MAX_HEIGHT
378                                        AND ($size[0] > _LOGO_MAX_WIDTH
379                                        OR $size[1] > _LOGO_MAX_HEIGHT)) {
380                                                spip_unlink ($f);
381                                                $erreur = _T('info_logo_max_poids',
382                                                                                        array(
383                                                                                        'maxi' =>
384                                                                                                _T('info_largeur_vignette',
385                                                                                                        array('largeur_vignette' => _LOGO_MAX_WIDTH,
386                                                                                                        'hauteur_vignette' => _LOGO_MAX_HEIGHT)),
387                                                                                        'actuel' =>
388                                                                                                _T('info_largeur_vignette',
389                                                                                                        array('largeur_vignette' => $size[0],
390                                                                                                        'hauteur_vignette' => $size[1]))
391                                                                                        ));
392                                        }
393                                        spip_unlink ($f);
394                                }
395                                else {
396                                        spip_unlink ($f);
397                                        $erreur = _T('info_logo_format_interdit',
398                                                                                        array('formats' => join(', ', $formats_logos)));
399                                }
400                        }
401
402                        if ($erreur){
403                                $erreurs['logo'] = $erreur;
404                        }
405                }
406
407                /**
408                 * Vérification des champs obligatoires
409                 * En fonction de ceux présents dans le formulaire
410                 */
411                $champs_obligatoires = charger_fonction('inscription3_champs_obligatoires','inc');
412                $obligatoires = $champs_obligatoires(null,$flux['args']['form']);
413                unset($obligatoires['email']);
414                unset($obligatoires['nom']);
415                $erreurs = array_merge($erreurs,formulaires_editer_objet_verifier('auteur',null,$obligatoires));
416
417                if($flux['args']['form'] == 'inscription'){
418                        if(lire_config('inscription3/pass_obligatoire') == 'on' && lire_config('inscription3/pass') == 'on' && (!_request('pass') OR !_request('password1')))
419                                $erreurs['pass'] = _T('info_obligatoire');
420                        else if(lire_config('inscription3/pass') == 'on'){
421                                if(_request('pass') != _request('password1'))
422                                        $erreurs['pass'] = _T('info_passes_identiques');
423                                else if(strlen(_request('pass')) > 0){
424                                        $pass_min = !defined('_PASS_MIN') ? 6 : _PASS_MIN;
425                                        if (strlen(_request('pass')) < $pass_min)
426                                                $erreurs['pass'] = _T('info_passe_trop_court');
427                                }
428                        }
429
430                        if($erreurs['reglement'])
431                                $erreurs['reglement'] = _T('inscription3:erreur_reglement_obligatoire');
432                }
433
434                if(count($erreurs))
435                        $erreurs_obligatoires = true;
436
437                $valeurs = array();
438
439                $verifier = charger_fonction('verifier','inc',true);
440
441                if($verifier){
442                        /**
443                         * Vérification des champs de champs extras
444                         */
445                        $options = array();
446                        if($flux['args']['form'] == 'editer_auteur' && intval(_request('id_auteur'))){
447                                $infos_auteurs = sql_fetsel('*','spip_auteurs','id_auteur='.intval(_request('id_auteur')));
448                                if(intval($infos_auteurs['id_auteur']) > 0)
449                                        $options['id_auteur'] = $infos_auteurs['id_auteur'];
450                        }
451
452                        $champs_a_verifier = pipeline('i3_verifications_specifiques',array());
453                        //gere la correspondance champs -> _request(champs)
454                        foreach($champs_a_verifier as $clef => $type) {
455                                /*
456                                 * Si le champs n'est pas déjà en erreur suite aux champs obligatoires
457                                 * On s'assure qu'il est bien présent dans le formulaire également
458                                 */
459                                if($flux['args']['form'] == 'editer_auteur' && intval(_request('id_auteur')) > 0 && in_array($type['type'],array('email','signature'))){
460                                        if($type['type'] == 'email' && isset($type['options']['disponible']) && $infos_auteurs[$clef] == _request($clef))
461                                                unset($type['options']['disponible']);
462                                        else if(($type['type'] == 'signature') && ($infos_auteurs[$clef] == _request($clef)))
463                                                continue;
464                                }
465                                if(!isset($erreurs[$clef]) && _request($clef)){
466                                        $valeurs[$clef] = trim(_request($clef));
467                                        $type['options'] = array_merge(array_merge(is_array($type['options']) ? $type['options'] : array(),$_GET),$options);
468                                        $erreurs[$clef] = $verifier($valeurs[$clef],$type['type'],$type['options']);
469                                        if($erreurs[$clef] == null)
470                                                unset($erreurs[$clef]);
471                                }
472                        }
473                        /**
474                         * Vérification des champs de cextras
475                         * Uniquement sur le formulaire d'inscription
476                         *
477                         * On ne vérifie pas les obligatoires qui doivent être faits plus haut
478                         */
479                        if (($flux['args']['form'] == 'inscription') && $saisies = champs_extras_objet( $table = 'spip_auteurs' )) {
480                                include_spip('inc/autoriser');
481                                include_spip('inc/saisies');
482
483                                $saisies = saisies_lister_avec_sql($saisies);
484
485                                // restreindre la vue selon les autorisations
486                                $id_objet = $flux['args']['args'][0]; // ? vraiment toujours ?
487                                $saisies = champs_extras_autorisation('modifier', $objet, $saisies, array_merge($flux['args'], array(
488                                        'id' => $id_objet,
489                                        'contexte' => array()))); // nous ne connaissons pas le contexte dans ce pipeline
490
491                                foreach ($saisies as $saisie) {
492                                        $nom = $saisie['options']['nom'];
493                                        // verifier (api) + normalisation
494                                        if ($verifier
495                                                AND isset($saisie['verifier']['type'])
496                                                AND $verif = $saisie['verifier']['type']){
497                                                $options = isset($saisie['verifier']['options']) ? $saisie['verifier']['options'] : array();
498                                                $normaliser = null;
499                                                if ($erreur = $verifier(_request($nom), $verif, $options, $normaliser))
500                                                        $erreurs[$nom] = $erreur;
501                                                // si une valeur de normalisation a ete transmis, la prendre.
502                                                elseif (!is_null($normaliser))
503                                                        set_request($nom, $normaliser);
504                                        }
505                                }
506                        }
507                }
508                /**
509                 * Naisance est un champs spécifique coupé en trois on le vérifie séparément
510                 * s'il est obligatoire
511                 */
512                if($erreurs['naissance']){
513                        $annee = trim(_request('naissance_annee'));
514                        $mois = trim(_request('naissance_mois'));
515                        $jour = trim(_request('naissance_jour'));
516                        if((!$annee || !$mois || !$jour) && $config_i3['naissance_obligatoire'] != 'on' && (trim(_request('naissance')) == '0000-00-00'))
517                                unset($erreurs['naissance']);
518                }
519                if(!$erreurs['naissance'] && _request('naissance') && (_request('naissance') != '0000-00-00')){
520                        if(_request('naissance_annee') > (date('Y')))
521                                $erreurs['naissance'] = _T('inscription3:erreur_naissance_futur');
522                        elseif(_request('naissance_annee') > (date('Y')-10))
523                                $erreurs['naissance'] = _T('inscription3:erreur_naissance_moins_cinq');
524                        elseif((date('Y') - _request('naissance_annee')) > 110)
525                                $erreurs['naissance'] = _T('inscription3:erreur_naissance_plus_110');
526                }
527
528                $args = array_merge($flux['args'],array('champs' => $valeurs));
529
530                /**
531                 * Offrir aux autres plugins la possibilite de verifier les donnees
532                 */
533                $erreurs = pipeline('i3_verifier_formulaire',
534                        array(
535                                'args' => $args,
536                                'data' => $erreurs
537                        )
538                );
539
540                /**
541                 * Message d'erreur generalise
542                 */
543                if (count($erreurs) && !isset($erreurs['message_erreur'])) {
544                        if(isset($erreurs_obligatoires))
545                                $erreurs['message_erreur'] .= _T('inscription3:formulaire_remplir_obligatoires');
546                        else
547                                $erreurs['message_erreur'] .= _T('inscription3:formulaire_remplir_validation');
548                }
549                $flux['data'] = $erreurs;
550        }
551
552        return $flux;
553}
554
555/**
556 * Insertion dans le pipeline formulaire_traiter (SPIP)
557 *
558 * Traitement des valeurs spécifiques dans le formulaire d'inscription
559 *
560 * @param array $flux Le contexte d'environnement du pipeline
561 * @return array $flux Le contexte d'environnement modifié
562 */
563function inscription3_formulaire_traiter($flux){
564        if ($flux['args']['form']=='configurer_inscription3'){
565                /**
566                 * Crée les champs dans la table spip_auteurs dès la validation du CFG
567                 */
568                $verifier_tables = charger_fonction('inscription3_verifier_tables','inc');
569                $verifier_tables();
570        }
571        if($flux['args']['form']=='mot_de_passe'){
572                $row = sql_fetsel('id_auteur,email,login,source','spip_auteurs',array("statut<>'5poubelle'","pass<>''"),'','maj DESC','1');
573                $affordance = lire_config('inscription3/affordance_form','login');
574                switch($affordance){
575                        case 'email' :
576                                $flux['data']['message_ok'] = _T('pass_nouveau_enregistre').
577                                        "<p>" . _T('inscription3:pass_rappel_email', array('email' => $row['email'])); break;
578                        case 'login_et_email' :
579                                $flux['data']['message_ok'] = _T('pass_nouveau_enregistre').
580                                        "<p>" . _T('inscription3:pass_rappel_login_email', array('email' => $row['email'],'login'=>$row['login']));break;
581                }
582        }
583        /**
584         * Prise en charge du logo dans le formulaire d'édition d'auteur
585         */
586        if($flux['args']['form'] == 'editer_auteur'){
587                if(isset($_FILES['logo']) && ($_FILES['logo']['error'] == 0)){
588                        $id_auteur = $flux['data']['id_auteur'];
589                        if(intval($id_auteur) > 0){
590                                $chercher_logo = charger_fonction('chercher_logo', 'inc');
591                               
592                                // supprimer l'ancien logo s'il existe
593                                if ($on = $chercher_logo($id_auteur, 'id_auteur', 'on')) spip_unlink($on[0]);
594       
595                                // ajouter le nouveau
596                                include_spip('action/iconifier');
597                               
598                                action_spip_image_ajouter_dist(
599                                        type_du_logo('id_auteur').'on'.$id_auteur, true, $_FILES['logo']
600                                );
601                                // indiquer qu'on doit recalculer les images
602                                $GLOBALS['var_images'] = true;
603                        }
604                }
605                else if(_request('supprimer_logo') && _request('supprimer_logo') == 'on'){
606                        $id_auteur = $flux['data']['id_auteur'];
607                        if(intval($id_auteur) > 0){
608                                $chercher_logo = charger_fonction('chercher_logo', 'inc');
609                               
610                                // supprimer l'ancien logo s'il existe
611                                if ($on = $chercher_logo($id_auteur, 'id_auteur', 'on')) spip_unlink($on[0]);
612                        }
613                }
614        }
615        if ($flux['args']['form']=='inscription'){
616                if(!function_exists('lire_config'))
617                        include_spip('inc/config');
618                $config_i3 = lire_config('inscription3',array());
619                include_spip('inscription3_fonctions');
620
621                $data = array();
622                /**
623                 * Les valeurs "normales" du formulaire d'inscription
624                 * qui nous permettront de retrouver l'id_auteur
625                 */
626                $nom = _request('nom_inscription');
627                $mail = _request('mail_inscription');
628
629                /**
630                 * A ce moment là SPIP a déjà créé l'auteur et lui a déjà donné un login et pass
631                 */
632                $user = sql_fetsel('*','spip_auteurs','email='.sql_quote($mail));
633
634                /**
635                 * Si l'on demande le passe dans le formulaire
636                 * On a un mode avec pass fourni
637                 * Sinon un mode simple
638                 */
639                if(($config_i3['pass'] == 'on') && (strlen(_request('pass'))))
640                        $mode = 'inscription_pass';
641                else
642                        $mode = 'inscription';
643
644                /**
645                 * Generer la liste des champs a traiter
646                 * champ => valeur formulaire
647                 */
648                $chercher_champs = charger_fonction('inscription3_champs_formulaire','inc');
649                $champs = $chercher_champs(null,'inscription');
650
651                foreach($champs as $clef => $valeur) {
652                        $valeurs[$valeur] = _request($valeur);
653                        if (is_array($valeurs[$valeur]))
654                                $valeurs[$valeur] = implode(',',$valeurs[$valeur]);
655
656                        $valeurs[$valeur] = trim($valeurs[$valeur]);
657                        if($valeur == 'naissance'){
658                                $annee = trim(_request('naissance_annee'));
659                                $mois = _request('naissance_mois');
660                                $jour = _request('naissance_jour');
661                                $valeurs[$valeur] = sql_format_date($annee,$mois,$jour);
662                        }
663                }
664                // Definir le login s'il a besoin de l'etre
665                // NOM et LOGIN sont des champs obligatoires donc a la creation il ne doivent pas etre vide
666                // Apres on s'en fiche s'il n'est pas dans le formulaire
667                if(!$valeurs['login'] && !$nom){
668                        if($valeurs['nom_famille']||$valeurs['prenom'])
669                                $valeurs['nom'] = trim($valeurs['prenom'].' '.$valeurs['nom_famille']);
670                        else
671                                $valeurs['nom'] = strtolower(translitteration(preg_replace('/@.*/', '', $mail)));
672                }else
673                        $valeurs['nom'] = $nom;
674
675                $valeurs['email'] = $mail;
676                if(!$valeurs['login']){
677                        if($user['login'])
678                                $valeurs['login'] = $user['login'];
679                }
680
681                $trouver_table = charger_fonction('trouver_table','base');
682
683                //genere le tableau des valeurs a mettre a jour pour spip_auteurs
684                //toutes les clefs qu'inscription3 peut mettre a jour
685                $clefs = $trouver_table('auteurs');
686                $clefs = $clefs['field'];
687
688                //extrait uniquement les donnees qui ont ete proposees a la modification
689                $val = array_intersect_key($valeurs,$clefs);
690
691                /**
692                 * Si on demande le pass dans le formulaire
693                 * Le compte est automatiquement activé
694                 */
695                if($mode == 'inscription_pass'){
696                        if (strlen(_request('password')) != 0)
697                                $new_pass = _request('password');
698                        elseif($mode == 'inscription_pass')
699                                $new_pass = _request('pass');
700
701                        if (strlen($new_pass)>0) {
702                                include_spip('inc/acces');
703                                include_spip('auth/sha256.inc');
704                                $val['htpass'] = generer_htpass($new_pass);
705                                $val['alea_actuel']  = creer_uniqid();
706                                $val['alea_futur'] = creer_uniqid();
707                                $val['pass'] = _nano_sha256($val['alea_actuel'].$new_pass);
708                                $val['htpass'] = $htpass;
709                                $val['low_sec'] = '';
710                        }
711                        $val['statut'] = (strlen($flux['args']['args'][0]) > 1) ? $flux['args']['args'][0] : ($config_i3['statut_nouveau'] ? $config_i3['statut_nouveau'] : '6forum');
712
713                }
714
715                /**
716                 * On met le compte en "à confirmer" si on a configuré les choses comme cela
717                 * Dans ce cas on met la bio à '' si elle n'est pas dans le form afin d'enlever le statut temporaire qui y est stocké par SPIP
718                 * Sinon si on a la bio dans le formulaire et qu'on la reçoit, on met directement un statut à
719                 * l'auteur, sinon on laisse l'ancien (nouveau normalement)
720                 */
721                if($config_i3['valider_comptes'] == 'on'){
722                        $mode = 'aconfirmer';
723                        if(!$val['bio'])
724                                $val['bio'] = '';
725                        $val['statut'] = '8aconfirmer';
726                }
727                /**
728                 * Si on a le champ bio dans le formulaire on force le statut
729                 */
730                else if(_request('bio'))
731                        $val['statut'] = (strlen($flux['args']['args'][0]) > 1) ? $flux['args']['args'][0] : ($config_i3['statut_nouveau'] ? $config_i3['statut_nouveau'] : '6forum');
732
733                if(strlen($val['pass']) == 0)
734                        unset($val['pass']);
735
736                if (function_exists('test_inscription'))
737                        $f = 'test_inscription';
738                else $f = 'test_inscription_dist';
739
740                $desc = $f($user['bio'], $mail, $valeurs['nom'], $user['id_auteur']);
741
742                if (is_array($desc) AND $mail = $desc['email']){
743                        /**
744                         * On recrée le pass pour être sûr d'avoir le bon
745                         */
746                        $desc['pass'] = creer_pass_pour_auteur($user['id_auteur']);
747                        $desc['login'] = $val['login'];
748
749                        /**
750                         * Mise à jour des infos
751                         */
752                        sql_updateq(
753                                "spip_auteurs",
754                                $val,
755                                'id_auteur = '.$user['id_auteur']
756                        );
757
758                        $args = array_merge($flux['args'],array(
759                                'id_auteur' => $user['id_auteur'],
760                                'champs' => $valeurs
761                        ));
762
763                        /**
764                         * Prise en charge du logo
765                         */
766                        if(isset($_FILES['logo']) && ($_FILES['logo']['error'] == 0)){
767                                $chercher_logo = charger_fonction('chercher_logo', 'inc');
768
769                                // supprimer l'ancien logo
770                                if ($on = $chercher_logo($id_auteur, 'id_auteur', 'on')) @unlink($on[0]);
771
772                                // ajouter le nouveau
773                                include_spip('action/iconifier');
774                                action_spip_image_ajouter_dist(
775                                        type_du_logo('id_auteur').'on'.$user['id_auteur'], false, false
776                                );
777                                // indiquer qu'on doit recalculer les images
778                                $GLOBALS['var_images'] = true;
779                        }
780                        /**
781                         * On appelle le pipeline traiter de inscription3
782                         * On connait dorénavant l'id_auteur
783                         * Ce pipeline doit retourner un array avec les valeurs possibles suivantes :
784                         * - ne_pas_confirmer_par_mail boolean (permet de squeezer la notification)
785                         * - message_ok string (permet de modifier le message de retour du formulaire)
786                         * - editable boolean (permet de modifier le comportement d'affichage au retour)
787                         */
788                        $traiter_plugin = pipeline('i3_traiter_formulaire',
789                                array(
790                                        'args' => $args,
791                                        'data' => $flux['data']
792                                )
793                        );
794                        if(!$traiter_plugin['ne_pas_confirmer_par_mail']){
795                                if($mode == 'aconfirmer'){
796                                        $traiter_plugin['message_ok'] = _T('inscription3:form_retour_aconfirmer');
797                                        if ($notifications = charger_fonction('notifications', 'inc')) {
798                                                $notifications('i3_inscriptionauteur', $user['id_auteur'],
799                                                        array('statut' => '8aconfirmer')
800                                                );
801                                        }
802                                }else if($mode == 'inscription_pass'){
803                                        $traiter_plugin['message_ok'] = _T('inscription3:form_retour_inscription_pass');
804                                        if ($notifications = charger_fonction('notifications', 'inc')) {
805                                                $notifications('i3_inscriptionauteur', $user['id_auteur'],
806                                                        array('statut' => $val['statut'],'pass' => 'ok')
807                                                );
808                                        }
809                                        if($config_i3['auto_login'] == 'on'){
810                                                $auteur = sql_fetsel('*','spip_auteurs','id_auteur='.intval($user['id_auteur']));
811                                                include_spip('inc/auth');
812                                                auth_loger($auteur);
813                                                $traiter_plugin['message_ok'] = _T('inscription3:form_retour_inscription_pass_logue');
814                                        }
815                                }else{
816                                        $envoyer_mail = charger_fonction('envoyer_mail','inc');
817                                        if (function_exists('envoyer_inscription3')){
818                                                $mode = $config_i3['statut_nouveau'];
819                                                $f = 'envoyer_inscription3';
820                                                list($sujet,$msg,$from,$head) = $f($desc, $nom, $mode, $id);
821                                        }
822                                        if($desc){
823                                                if (!$envoyer_mail($mail, $sujet, $msg, $from, $head))
824                                                        $traiter_plugin['message_ok'] = _T('form_forum_probleme_mail');
825                                                else{
826                                                        $traiter_plugin['message_ok'] = _T('form_forum_identifiant_mail');
827                                                }
828                                        }else{
829                                                $traiter_plugin['message_ok'] = _T('form_forum_identifiant_mail');
830                                        }
831                                }
832                        }
833                        $flux['data']['editable'] = $traiter_plugin['editable'];
834                        $flux['data']['message_ok'] = $traiter_plugin['message_ok'];
835                        $flux['data']['redirect'] = $traiter_plugin['redirect'];
836                }
837        }
838        return $flux;
839}
840
841/**
842 * Insertion dans le pipeline recuperer_fond (SPIP)
843 * Insère des champs dans le formulaire d'inscription
844 * Ajoute un vérificateur de complexité de mot de passe sur les formulaires de mot de passe et d'édition d'auteur si besoin
845 *
846 * @param array $flux
847 * @return array
848 */
849function inscription3_recuperer_fond($flux){
850        if(in_array($flux['args']['fond'],array('formulaires/inscription','formulaires/login','formulaires/mot_de_passe','formulaires/editer_auteur'))){
851                if(!function_exists('lire_config'))
852                        include_spip('inc/config');
853                $config = lire_config('inscription3',array());
854                if ($flux['args']['fond']=='formulaires/inscription'){
855                        $insc = recuperer_fond('formulaires/inc-inscription-inscription3',$flux['data']['contexte']);
856                        $flux['data']['texte'] = preg_replace(",(<li [^>]*class=[\"']editer saisie_mail_inscription.*<\/li>),Uims","\\1".$insc,$flux['data']['texte'],1);
857                        if(($texte_inscription = $config['inscription_texte']) && ($texte_inscription != 'origine')){
858                                switch($texte_inscription){
859                                        case 'aucun' :
860                                                $flux['data']['texte'] = preg_replace(",<p [^>]*class=[\"']explication.*<\/p>,Uims",'',$flux['data']['texte'],1);
861                                                break;
862                                        case 'libre' :
863                                                $texte = PtoBR(propre($config['inscription_texte_libre']));
864                                                $flux['data']['texte'] = preg_replace(",(<p class=[\"']explication mode[\"']>)(.*)(<\/p>),Uims","\\1".$texte."\\3",$flux['data']['texte'],1);
865                                                break;
866                                }
867                        }
868                }
869                if ($flux['args']['fond']=='formulaires/login'){
870                        if(($type_affordance = $config['affordance_form']) && ($type_affordance != 'login')){
871                                switch($type_affordance){
872                                        case 'email' :
873                                                $label = _T('inscription3:votre_mail');
874                                                break;
875                                        case 'login_et_email' :
876                                                $label = _T('inscription3:votre_login_mail');
877                                                break;
878                                        case 'libre' :
879                                                $label = $config['inscription3/affordance_form_libre'] ? $config['inscription3/affordance_form_libre'] : _T('login_login2');
880                                                break;
881                                }
882                                if($label)
883                                        $flux['data']['texte'] = preg_replace(",(<label.*for=\"var_login\">)(.*)(<\/label>),Uims","\\1".$label."\\3",$flux['data']['texte'],1);
884                        }
885                }
886                /**
887                 * On ajoute un vérificateur de complexité de mot de passe
888                 */
889                if(($config['inscription3/password_complexite'] == 'on') && in_array($flux['args']['fond'],array('formulaires/mot_de_passe','formulaires/editer_auteur'))){
890                        $js = recuperer_fond('formulaires/inc-js_pass_verification',$flux['data']['contexte']);
891                        $flux['data']['texte'] = preg_replace(",(<\/form>)(.*),Uims","\\1".$js."\\2",$flux['data']['texte'],1);
892                }
893        }
894        return $flux;
895}
896
897/**
898 * Insertion dans le pipeline editer_contenu_objet (SPIP)
899 * Enlève les champs dans le formulaire d'édition d'auteur pour le profil utilisateur
900 * comme il est configuré dans inscription3
901 *
902 * @param array $flux
903 * @return array
904 */
905function inscription3_editer_contenu_objet($flux){
906        $args = $flux['args'];
907        $type = $args['type'];
908        if ($type == 'auteur' && intval($args['id']) > 0 && !test_espace_prive()){
909                if(!function_exists('lire_config'))
910                        include_spip('inc/config');
911                $config = lire_config('inscription3',array());
912                $champs_spip = array('nom','email','bio','pgp','url_site','nom_site','login','pass');
913                $champs_vires = array();
914                $inserer_saisie = '';
915                foreach($champs_spip as $champ){
916                        if($config[$champ.'_fiche_mod'] != 'on'){
917                                if($champ == 'login')
918                                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_new_($champ).*<\/li>),Uims","",$flux['data'],1);
919                                else if($champ == 'pass'){
920                                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_new_($champ).*<\/li>),Uims","",$flux['data'],1);
921                                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_new_($champ)2.*<\/li>),Uims","",$flux['data'],1);
922                                }else
923                                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_($champ).*<\/li>),Uims","",$flux['data'],1);
924                                $champs_vires[] = $champ;
925                                if(in_array($champ, array('nom','email')))
926                                        $inserer_saisie .= "<input type='hidden' name='$champ' value='".$flux['args']['contexte'][$champ]."' />\n";
927                        }
928                        /**
929                         * On vire le champs création du formulaire (ne doit pas être modifié manuellement)
930                         * Si on n'a pas ce champs rempli, on utilise la date actuelle pour le remplir
931                         * Logiquement ce champs est rempli automatiquement via pre_insertion pour tous les auteurs
932                         */
933                        if($config['creation'] == 'on'){
934                                $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_creation.*<\/li>),Uims","",$flux['data'],1);
935                                if($flux['args']['contexte']['creation'] == '0000-00-00 00:00:00')
936                                        $flux['args']['contexte']['creation'] = date('Y-m-d H:i:s');
937                                $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_cextra_creation.*<\/li>),Uims","",$flux['data'],1);
938                                $inserer_saisie .= "<input type='hidden' name='creation' value='".$flux['args']['contexte']['creation']."' />\n";
939                        }
940                }
941                if(!test_espace_prive() && $config['logo_fiche_mod'] == 'on'){
942                        $flux['data'] = preg_replace(',<(form.*[^>])>,Uims','<\\1 enctype=\'multipart/form-data\'>',$flux['data'],1);
943                        $saisie_logo = recuperer_fond('formulaires/inscription_logo',$flux['args']['contexte']);
944                        $flux['data'] = preg_replace('%(<!--extra-->)%is', '<ul class="champs_extras inscription_logo">'.$saisie_logo.'</ul>'."\n".'$1', $flux['data']);
945                }
946                if(in_array('url_site',$champs_vires) && in_array('nom_site',$champs_vires))
947                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer_liens.*<\/li>),Uims","",$flux['data'],1);
948                if(in_array('pass',$champs_vires) && in_array('login',$champs_vires))
949                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer_identification.*<\/li>),Uims","",$flux['data'],1);
950                if(strlen($inserer_saisie))
951                        $flux['data'] = preg_replace('%(<!-- controles md5 -->)%is',$inserer_saisie."\n".'$1', $flux['data']);
952        }
953        return $flux;
954}
955
956/**
957 * Insertion dans le pipeline "notifications_destinataires" (SPIP)
958 *
959 * En fonction du type de notification, rempli un tableau d'adresses emails
960 *
961 * @param array $flux Le contexte du pipeline
962 * @return array
963 */
964function inscription3_notifications_destinataires($flux){
965        $quoi = $flux['args']['quoi'];
966        $options = $flux['args']['options'];
967
968        /**
969         * Cas de la validation ou invalidation d'un compte d'un utilisateur
970         * Cas également de l'inscription d'un auteur
971         * Envoi à l'utilisateur ($options['type'] == 'user')
972         */
973        if (($quoi=='instituerauteur'
974                AND $options['statut_ancien'] == '8aconfirmer'
975                AND $options['type'] == 'user') OR
976                ($quoi=='i3_inscriptionauteur'
977                AND $options['type'] == 'user')){
978
979                $id_auteur = $flux['args']['id'];
980                include_spip('base/abstract_sql');
981                $mail = sql_getfetsel("email", "spip_auteurs", "id_auteur=".intval($id_auteur));
982                $flux['data'][] = $mail;
983        }
984        /**
985         * Cas de la validation ou invalidation d'un compte d'un utilisateur
986         * Envoi aux administrateurs ($options['type'] == 'admin')
987         */
988        else if(($quoi=='instituerauteur'
989                AND $options['statut_ancien'] == '8aconfirmer'
990                AND $options['type'] == 'admin') OR
991                ($quoi=='i3_inscriptionauteur'
992                AND $options['type'] == 'admin')){
993                        /**
994                         * Aller chercher dans la conf les admins à notifier si configuré
995                         */
996                        if(is_array(lire_config('inscription3/admin_notifications'))) {
997                                $id_admins = lire_config('inscription3/admin_notifications');
998                                $admins = sql_allfetsel('email','spip_auteurs','statut="0minirezo" and ' . sql_in('id_auteur', $id_admins));
999                        } else
1000                                $admins = sql_allfetsel('email','spip_auteurs','statut="0minirezo" and webmestre="oui"');
1001
1002                foreach ($admins as $key => $qui) {
1003                        $flux['data'][] = $qui['email'];
1004                 }
1005        }
1006        return $flux;
1007}
1008
1009/**
1010 * Insertion dans le pipeline taches_generales_cron (SPIP)
1011 *
1012 * Vérifie la présence à intervalle régulier d'utilisateurs à valider ou invalider et notifie les admins
1013 *
1014 * @param array $taches_generales Un array des tâches du cron de SPIP
1015 * @return L'array des taches complété
1016 */
1017function inscription3_taches_generales_cron($taches_generales){
1018        $taches_generales['inscription3_taches_generales'] = 24*60*60;
1019        return $taches_generales;
1020}
1021
1022/**
1023 * Insertion dans le pipeline pre_insertion (SPIP)
1024 *
1025 * Insérer la date d'inscription à la création de l'auteur
1026 * - la date d'inscription ne se met qu'à ce moment là
1027 *
1028 * @param array $flux Le contexte du pipeline
1029 * @return array
1030 */
1031function inscription3_pre_insertion($flux){
1032        include_spip('inc/config');
1033        if (lire_config('inscription3/creation') == 'on' && $flux['args']['table']=='spip_auteurs'){
1034                $flux['data']['creation'] = date('Y-m-d H:i:s');
1035        }
1036        return $flux;
1037}
1038
1039/**
1040 * Insertion dans le pipeline openid_recuperer_identite (OpenID)
1041 * On décrypte les informations fournies par OpenID pour les insérer dans notre formulaire
1042 *
1043 * @param $flux array
1044 *      Le contexte du pipeline
1045 *      Les informations fournies par le compte openid de la personne souhaitant s'inscrire sont dans $flux['args']
1046 * @return $flux
1047 *      Le contexte du pipeline décrypté, on place dans $flux['data'] les informations qui nous intéresse
1048 */
1049function inscription3_openid_recuperer_identite($flux){
1050        if(isset($flux['args']['dob']))
1051                $flux['data']['naissance'] = $flux['args']['dob'];
1052
1053        if(isset($flux['args']['country'])){
1054                $id_pays = sql_getfetsel('id_pays','spip_geo_pays','code_iso='.sql_quote($flux['args']['country']));
1055                $flux['data']['pays'] = $id_pays;
1056        }
1057        if(isset($flux['args']['postcode']))
1058                $flux['data']['code_postal'] = $flux['args']['postcode'];
1059
1060        if(isset($flux['args']['gender']))
1061                $flux['data']['sexe'] = $flux['args']['gender'];
1062
1063        if(isset($flux['args']['fullname'])){
1064                $noms = explode(' ',$flux['args']['fullname']);
1065                $flux['data']['prenom'] = $noms[0];
1066                array_shift($noms);
1067                $flux['data']['nom_famille'] = implode(' ',$noms);
1068        }
1069        return $flux;
1070}
1071
1072/**
1073 * Insertion dans le pipeline openid_inscrire_redirect (OpenID)
1074 */
1075function inscription3_openid_inscrire_redirect($flux){
1076
1077        $auteur = $flux['args']['infos_auteur'];
1078
1079        $url = $flux['args']['url'];
1080
1081        $url = parametre_url($url,'code_postal',$auteur['code_postal']);
1082        $url = parametre_url($url,'pays',$auteur['pays']);
1083        $url = parametre_url($url,'naissance',$auteur['naissance']);
1084        $url = parametre_url($url,'sexe',$auteur['sexe']);
1085        $url = parametre_url($url,'login',$auteur['login']);
1086        $url = parametre_url($url,'nom_famille',$auteur['nom_famille']);
1087        $url = parametre_url($url,'prenom',$auteur['prenom']);
1088        $flux['data'] = $url;
1089        return $flux;
1090}
1091
1092/**
1093 * Insertion dans le pipeline post_edition (SPIP)
1094 *
1095 * Notifier les admins et les users quand ils passent de 8aconfirmer à un statut valide
1096 *
1097 * @param array $flux
1098 *              Le contexte du pipeline
1099 * @return array $flux
1100 *              Le contexte du pipeline modifié
1101 */
1102function inscription3_post_edition($flux) {
1103        if($flux['args']['action'] == 'instituer'
1104                &&  $flux['args']['table'] == 'spip_auteurs'
1105                && $flux['args']['statut_ancien'] == '8aconfirmer') {
1106
1107                if ($notifications = charger_fonction('notifications', 'inc')) {
1108                        $notifications('i3_inscriptionauteur', $flux['args']['id_objet'],
1109                                array('statut_ancien' => '8aconfirmer', 'statut_nouveau' => $flux['data']['statut'])
1110                        );
1111                }
1112        }
1113        return $flux;
1114}
1115?>
Note: See TracBrowser for help on using the repository browser.