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

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

Bien vérifier le logo avant de le mettre en ligne

Version 3.5.9

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($source['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                                action_spip_image_ajouter_dist(
598                                        type_du_logo('id_auteur').'on'.$id_auteur, false, false
599                                );
600                                // indiquer qu'on doit recalculer les images
601                                $GLOBALS['var_images'] = true;
602                        }
603                }
604                else if(_request('supprimer_logo') && _request('supprimer_logo') == 'on'){
605                        $id_auteur = $flux['data']['id_auteur'];
606                        if(intval($id_auteur) > 0){
607                                $chercher_logo = charger_fonction('chercher_logo', 'inc');
608                               
609                                // supprimer l'ancien logo s'il existe
610                                if ($on = $chercher_logo($id_auteur, 'id_auteur', 'on')) spip_unlink($on[0]);
611                        }
612                }
613        }
614        if ($flux['args']['form']=='inscription'){
615                if(!function_exists('lire_config'))
616                        include_spip('inc/config');
617                $config_i3 = lire_config('inscription3',array());
618                include_spip('inscription3_fonctions');
619
620                $data = array();
621                /**
622                 * Les valeurs "normales" du formulaire d'inscription
623                 * qui nous permettront de retrouver l'id_auteur
624                 */
625                $nom = _request('nom_inscription');
626                $mail = _request('mail_inscription');
627
628                /**
629                 * A ce moment là SPIP a déjà créé l'auteur et lui a déjà donné un login et pass
630                 */
631                $user = sql_fetsel('*','spip_auteurs','email='.sql_quote($mail));
632
633                /**
634                 * Si l'on demande le passe dans le formulaire
635                 * On a un mode avec pass fourni
636                 * Sinon un mode simple
637                 */
638                if(($config_i3['pass'] == 'on') && (strlen(_request('pass'))))
639                        $mode = 'inscription_pass';
640                else
641                        $mode = 'inscription';
642
643                /**
644                 * Generer la liste des champs a traiter
645                 * champ => valeur formulaire
646                 */
647                $chercher_champs = charger_fonction('inscription3_champs_formulaire','inc');
648                $champs = $chercher_champs(null,'inscription');
649
650                foreach($champs as $clef => $valeur) {
651                        $valeurs[$valeur] = _request($valeur);
652                        if (is_array($valeurs[$valeur]))
653                                $valeurs[$valeur] = implode(',',$valeurs[$valeur]);
654
655                        $valeurs[$valeur] = trim($valeurs[$valeur]);
656                        if($valeur == 'naissance'){
657                                $annee = trim(_request('naissance_annee'));
658                                $mois = _request('naissance_mois');
659                                $jour = _request('naissance_jour');
660                                $valeurs[$valeur] = sql_format_date($annee,$mois,$jour);
661                        }
662                }
663                // Definir le login s'il a besoin de l'etre
664                // NOM et LOGIN sont des champs obligatoires donc a la creation il ne doivent pas etre vide
665                // Apres on s'en fiche s'il n'est pas dans le formulaire
666                if(!$valeurs['login'] && !$nom){
667                        if($valeurs['nom_famille']||$valeurs['prenom'])
668                                $valeurs['nom'] = trim($valeurs['prenom'].' '.$valeurs['nom_famille']);
669                        else
670                                $valeurs['nom'] = strtolower(translitteration(preg_replace('/@.*/', '', $mail)));
671                }else
672                        $valeurs['nom'] = $nom;
673
674                $valeurs['email'] = $mail;
675                if(!$valeurs['login']){
676                        if($user['login'])
677                                $valeurs['login'] = $user['login'];
678                }
679
680                $trouver_table = charger_fonction('trouver_table','base');
681
682                //genere le tableau des valeurs a mettre a jour pour spip_auteurs
683                //toutes les clefs qu'inscription3 peut mettre a jour
684                $clefs = $trouver_table('auteurs');
685                $clefs = $clefs['field'];
686
687                //extrait uniquement les donnees qui ont ete proposees a la modification
688                $val = array_intersect_key($valeurs,$clefs);
689
690                /**
691                 * Si on demande le pass dans le formulaire
692                 * Le compte est automatiquement activé
693                 */
694                if($mode == 'inscription_pass'){
695                        if (strlen(_request('password')) != 0)
696                                $new_pass = _request('password');
697                        elseif($mode == 'inscription_pass')
698                                $new_pass = _request('pass');
699
700                        if (strlen($new_pass)>0) {
701                                include_spip('inc/acces');
702                                include_spip('auth/sha256.inc');
703                                $val['htpass'] = generer_htpass($new_pass);
704                                $val['alea_actuel']  = creer_uniqid();
705                                $val['alea_futur'] = creer_uniqid();
706                                $val['pass'] = _nano_sha256($val['alea_actuel'].$new_pass);
707                                $val['htpass'] = $htpass;
708                                $val['low_sec'] = '';
709                        }
710                        $val['statut'] = (strlen($flux['args']['args'][0]) > 1) ? $flux['args']['args'][0] : ($config_i3['statut_nouveau'] ? $config_i3['statut_nouveau'] : '6forum');
711
712                }
713
714                /**
715                 * On met le compte en "à confirmer" si on a configuré les choses comme cela
716                 * 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
717                 * Sinon si on a la bio dans le formulaire et qu'on la reçoit, on met directement un statut à
718                 * l'auteur, sinon on laisse l'ancien (nouveau normalement)
719                 */
720                if($config_i3['valider_comptes'] == 'on'){
721                        $mode = 'aconfirmer';
722                        if(!$val['bio'])
723                                $val['bio'] = '';
724                        $val['statut'] = '8aconfirmer';
725                }
726                /**
727                 * Si on a le champ bio dans le formulaire on force le statut
728                 */
729                else if(_request('bio'))
730                        $val['statut'] = (strlen($flux['args']['args'][0]) > 1) ? $flux['args']['args'][0] : ($config_i3['statut_nouveau'] ? $config_i3['statut_nouveau'] : '6forum');
731
732                if(strlen($val['pass']) == 0)
733                        unset($val['pass']);
734
735                if (function_exists('test_inscription'))
736                        $f = 'test_inscription';
737                else $f = 'test_inscription_dist';
738
739                $desc = $f($user['bio'], $mail, $valeurs['nom'], $user['id_auteur']);
740
741                if (is_array($desc) AND $mail = $desc['email']){
742                        /**
743                         * On recrée le pass pour être sûr d'avoir le bon
744                         */
745                        $desc['pass'] = creer_pass_pour_auteur($user['id_auteur']);
746                        $desc['login'] = $val['login'];
747
748                        /**
749                         * Mise à jour des infos
750                         */
751                        sql_updateq(
752                                "spip_auteurs",
753                                $val,
754                                'id_auteur = '.$user['id_auteur']
755                        );
756
757                        $args = array_merge($flux['args'],array(
758                                'id_auteur' => $user['id_auteur'],
759                                'champs' => $valeurs
760                        ));
761
762                        /**
763                         * Prise en charge du logo
764                         */
765                        if(isset($_FILES['logo']) && ($_FILES['logo']['error'] == 0)){
766                                $chercher_logo = charger_fonction('chercher_logo', 'inc');
767
768                                // supprimer l'ancien logo
769                                if ($on = $chercher_logo($id_auteur, 'id_auteur', 'on')) @unlink($on[0]);
770
771                                // ajouter le nouveau
772                                include_spip('action/iconifier');
773                                action_spip_image_ajouter_dist(
774                                        type_du_logo('id_auteur').'on'.$user['id_auteur'], false, false
775                                );
776                                // indiquer qu'on doit recalculer les images
777                                $GLOBALS['var_images'] = true;
778                        }
779                        /**
780                         * On appelle le pipeline traiter de inscription3
781                         * On connait dorénavant l'id_auteur
782                         * Ce pipeline doit retourner un array avec les valeurs possibles suivantes :
783                         * - ne_pas_confirmer_par_mail boolean (permet de squeezer la notification)
784                         * - message_ok string (permet de modifier le message de retour du formulaire)
785                         * - editable boolean (permet de modifier le comportement d'affichage au retour)
786                         */
787                        $traiter_plugin = pipeline('i3_traiter_formulaire',
788                                array(
789                                        'args' => $args,
790                                        'data' => $flux['data']
791                                )
792                        );
793                        if(!$traiter_plugin['ne_pas_confirmer_par_mail']){
794                                if($mode == 'aconfirmer'){
795                                        $traiter_plugin['message_ok'] = _T('inscription3:form_retour_aconfirmer');
796                                        if ($notifications = charger_fonction('notifications', 'inc')) {
797                                                $notifications('i3_inscriptionauteur', $user['id_auteur'],
798                                                        array('statut' => '8aconfirmer')
799                                                );
800                                        }
801                                }else if($mode == 'inscription_pass'){
802                                        $traiter_plugin['message_ok'] = _T('inscription3:form_retour_inscription_pass');
803                                        if ($notifications = charger_fonction('notifications', 'inc')) {
804                                                $notifications('i3_inscriptionauteur', $user['id_auteur'],
805                                                        array('statut' => $val['statut'],'pass' => 'ok')
806                                                );
807                                        }
808                                        if($config_i3['auto_login'] == 'on'){
809                                                $auteur = sql_fetsel('*','spip_auteurs','id_auteur='.intval($user['id_auteur']));
810                                                include_spip('inc/auth');
811                                                auth_loger($auteur);
812                                                $traiter_plugin['message_ok'] = _T('inscription3:form_retour_inscription_pass_logue');
813                                        }
814                                }else{
815                                        $envoyer_mail = charger_fonction('envoyer_mail','inc');
816                                        if (function_exists('envoyer_inscription3')){
817                                                $mode = $config_i3['statut_nouveau'];
818                                                $f = 'envoyer_inscription3';
819                                                list($sujet,$msg,$from,$head) = $f($desc, $nom, $mode, $id);
820                                        }
821                                        if($desc){
822                                                if (!$envoyer_mail($mail, $sujet, $msg, $from, $head))
823                                                        $traiter_plugin['message_ok'] = _T('form_forum_probleme_mail');
824                                                else{
825                                                        $traiter_plugin['message_ok'] = _T('form_forum_identifiant_mail');
826                                                }
827                                        }else{
828                                                $traiter_plugin['message_ok'] = _T('form_forum_identifiant_mail');
829                                        }
830                                }
831                        }
832                        $flux['data']['editable'] = $traiter_plugin['editable'];
833                        $flux['data']['message_ok'] = $traiter_plugin['message_ok'];
834                        $flux['data']['redirect'] = $traiter_plugin['redirect'];
835                }
836        }
837        return $flux;
838}
839
840/**
841 * Insertion dans le pipeline recuperer_fond (SPIP)
842 * Insère des champs dans le formulaire d'inscription
843 * Ajoute un vérificateur de complexité de mot de passe sur les formulaires de mot de passe et d'édition d'auteur si besoin
844 *
845 * @param array $flux
846 * @return array
847 */
848function inscription3_recuperer_fond($flux){
849        if(in_array($flux['args']['fond'],array('formulaires/inscription','formulaires/login','formulaires/mot_de_passe','formulaires/editer_auteur'))){
850                if(!function_exists('lire_config'))
851                        include_spip('inc/config');
852                $config = lire_config('inscription3',array());
853                if ($flux['args']['fond']=='formulaires/inscription'){
854                        $insc = recuperer_fond('formulaires/inc-inscription-inscription3',$flux['data']['contexte']);
855                        $flux['data']['texte'] = preg_replace(",(<li [^>]*class=[\"']editer saisie_mail_inscription.*<\/li>),Uims","\\1".$insc,$flux['data']['texte'],1);
856                        if(($texte_inscription = $config['inscription_texte']) && ($texte_inscription != 'origine')){
857                                switch($texte_inscription){
858                                        case 'aucun' :
859                                                $flux['data']['texte'] = preg_replace(",<p [^>]*class=[\"']explication.*<\/p>,Uims",'',$flux['data']['texte'],1);
860                                                break;
861                                        case 'libre' :
862                                                $texte = PtoBR(propre($config['inscription_texte_libre']));
863                                                $flux['data']['texte'] = preg_replace(",(<p class=[\"']explication mode[\"']>)(.*)(<\/p>),Uims","\\1".$texte."\\3",$flux['data']['texte'],1);
864                                                break;
865                                }
866                        }
867                }
868                if ($flux['args']['fond']=='formulaires/login'){
869                        if(($type_affordance = $config['affordance_form']) && ($type_affordance != 'login')){
870                                switch($type_affordance){
871                                        case 'email' :
872                                                $label = _T('inscription3:votre_mail');
873                                                break;
874                                        case 'login_et_email' :
875                                                $label = _T('inscription3:votre_login_mail');
876                                                break;
877                                        case 'libre' :
878                                                $label = $config['inscription3/affordance_form_libre'] ? $config['inscription3/affordance_form_libre'] : _T('login_login2');
879                                                break;
880                                }
881                                if($label)
882                                        $flux['data']['texte'] = preg_replace(",(<label.*for=\"var_login\">)(.*)(<\/label>),Uims","\\1".$label."\\3",$flux['data']['texte'],1);
883                        }
884                }
885                /**
886                 * On ajoute un vérificateur de complexité de mot de passe
887                 */
888                if(($config['inscription3/password_complexite'] == 'on') && in_array($flux['args']['fond'],array('formulaires/mot_de_passe','formulaires/editer_auteur'))){
889                        $js = recuperer_fond('formulaires/inc-js_pass_verification',$flux['data']['contexte']);
890                        $flux['data']['texte'] = preg_replace(",(<\/form>)(.*),Uims","\\1".$js."\\2",$flux['data']['texte'],1);
891                }
892        }
893        return $flux;
894}
895
896/**
897 * Insertion dans le pipeline editer_contenu_objet (SPIP)
898 * Enlève les champs dans le formulaire d'édition d'auteur pour le profil utilisateur
899 * comme il est configuré dans inscription3
900 *
901 * @param array $flux
902 * @return array
903 */
904function inscription3_editer_contenu_objet($flux){
905        $args = $flux['args'];
906        $type = $args['type'];
907        if ($type == 'auteur' && intval($args['id']) > 0 && !test_espace_prive()){
908                if(!function_exists('lire_config'))
909                        include_spip('inc/config');
910                $config = lire_config('inscription3',array());
911                $champs_spip = array('nom','email','bio','pgp','url_site','nom_site','login','pass');
912                $champs_vires = array();
913                $inserer_saisie = '';
914                foreach($champs_spip as $champ){
915                        if($config[$champ.'_fiche_mod'] != 'on'){
916                                if($champ == 'login')
917                                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_new_($champ).*<\/li>),Uims","",$flux['data'],1);
918                                else if($champ == 'pass'){
919                                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_new_($champ).*<\/li>),Uims","",$flux['data'],1);
920                                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_new_($champ)2.*<\/li>),Uims","",$flux['data'],1);
921                                }else
922                                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_($champ).*<\/li>),Uims","",$flux['data'],1);
923                                $champs_vires[] = $champ;
924                                if(in_array($champ, array('nom','email')))
925                                        $inserer_saisie .= "<input type='hidden' name='$champ' value='".$flux['args']['contexte'][$champ]."' />\n";
926                        }
927                        /**
928                         * On vire le champs création du formulaire (ne doit pas être modifié manuellement)
929                         * Si on n'a pas ce champs rempli, on utilise la date actuelle pour le remplir
930                         * Logiquement ce champs est rempli automatiquement via pre_insertion pour tous les auteurs
931                         */
932                        if($config['creation'] == 'on'){
933                                $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_creation.*<\/li>),Uims","",$flux['data'],1);
934                                if($flux['args']['contexte']['creation'] == '0000-00-00 00:00:00')
935                                        $flux['args']['contexte']['creation'] = date('Y-m-d H:i:s');
936                                $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer editer_cextra_creation.*<\/li>),Uims","",$flux['data'],1);
937                                $inserer_saisie .= "<input type='hidden' name='creation' value='".$flux['args']['contexte']['creation']."' />\n";
938                        }
939                }
940                if(!test_espace_prive() && $config['logo_fiche_mod'] == 'on'){
941                        $flux['data'] = preg_replace(',<(form.*[^>])>,Uims','<\\1 enctype=\'multipart/form-data\'>',$flux['data'],1);
942                        $saisie_logo = recuperer_fond('formulaires/inscription_logo',$flux['args']['contexte']);
943                        $flux['data'] = preg_replace('%(<!--extra-->)%is', '<ul class="champs_extras inscription_logo">'.$saisie_logo.'</ul>'."\n".'$1', $flux['data']);
944                }
945                if(in_array('url_site',$champs_vires) && in_array('nom_site',$champs_vires))
946                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer_liens.*<\/li>),Uims","",$flux['data'],1);
947                if(in_array('pass',$champs_vires) && in_array('login',$champs_vires))
948                        $flux['data'] = preg_replace(",(<li [^>]*class=[\"']editer_identification.*<\/li>),Uims","",$flux['data'],1);
949                if(strlen($inserer_saisie))
950                        $flux['data'] = preg_replace('%(<!-- controles md5 -->)%is',$inserer_saisie."\n".'$1', $flux['data']);
951        }
952        return $flux;
953}
954
955/**
956 * Insertion dans le pipeline "notifications_destinataires" (SPIP)
957 *
958 * En fonction du type de notification, rempli un tableau d'adresses emails
959 *
960 * @param array $flux Le contexte du pipeline
961 * @return array
962 */
963function inscription3_notifications_destinataires($flux){
964        $quoi = $flux['args']['quoi'];
965        $options = $flux['args']['options'];
966
967        /**
968         * Cas de la validation ou invalidation d'un compte d'un utilisateur
969         * Cas également de l'inscription d'un auteur
970         * Envoi à l'utilisateur ($options['type'] == 'user')
971         */
972        if (($quoi=='instituerauteur'
973                AND $options['statut_ancien'] == '8aconfirmer'
974                AND $options['type'] == 'user') OR
975                ($quoi=='i3_inscriptionauteur'
976                AND $options['type'] == 'user')){
977
978                $id_auteur = $flux['args']['id'];
979                include_spip('base/abstract_sql');
980                $mail = sql_getfetsel("email", "spip_auteurs", "id_auteur=".intval($id_auteur));
981                $flux['data'][] = $mail;
982        }
983        /**
984         * Cas de la validation ou invalidation d'un compte d'un utilisateur
985         * Envoi aux administrateurs ($options['type'] == 'admin')
986         */
987        else if(($quoi=='instituerauteur'
988                AND $options['statut_ancien'] == '8aconfirmer'
989                AND $options['type'] == 'admin') OR
990                ($quoi=='i3_inscriptionauteur'
991                AND $options['type'] == 'admin')){
992                        /**
993                         * Aller chercher dans la conf les admins à notifier si configuré
994                         */
995                        if(is_array(lire_config('inscription3/admin_notifications'))) {
996                                $id_admins = lire_config('inscription3/admin_notifications');
997                                $admins = sql_allfetsel('email','spip_auteurs','statut="0minirezo" and ' . sql_in('id_auteur', $id_admins));
998                        } else
999                                $admins = sql_allfetsel('email','spip_auteurs','statut="0minirezo" and webmestre="oui"');
1000
1001                foreach ($admins as $key => $qui) {
1002                        $flux['data'][] = $qui['email'];
1003                 }
1004        }
1005        return $flux;
1006}
1007
1008/**
1009 * Insertion dans le pipeline taches_generales_cron (SPIP)
1010 *
1011 * Vérifie la présence à intervalle régulier d'utilisateurs à valider ou invalider et notifie les admins
1012 *
1013 * @param array $taches_generales Un array des tâches du cron de SPIP
1014 * @return L'array des taches complété
1015 */
1016function inscription3_taches_generales_cron($taches_generales){
1017        $taches_generales['inscription3_taches_generales'] = 24*60*60;
1018        return $taches_generales;
1019}
1020
1021/**
1022 * Insertion dans le pipeline pre_insertion (SPIP)
1023 *
1024 * Insérer la date d'inscription à la création de l'auteur
1025 * - la date d'inscription ne se met qu'à ce moment là
1026 *
1027 * @param array $flux Le contexte du pipeline
1028 * @return array
1029 */
1030function inscription3_pre_insertion($flux){
1031        include_spip('inc/config');
1032        if (lire_config('inscription3/creation') == 'on' && $flux['args']['table']=='spip_auteurs'){
1033                $flux['data']['creation'] = date('Y-m-d H:i:s');
1034        }
1035        return $flux;
1036}
1037
1038/**
1039 * Insertion dans le pipeline openid_recuperer_identite (OpenID)
1040 * On décrypte les informations fournies par OpenID pour les insérer dans notre formulaire
1041 *
1042 * @param $flux array
1043 *      Le contexte du pipeline
1044 *      Les informations fournies par le compte openid de la personne souhaitant s'inscrire sont dans $flux['args']
1045 * @return $flux
1046 *      Le contexte du pipeline décrypté, on place dans $flux['data'] les informations qui nous intéresse
1047 */
1048function inscription3_openid_recuperer_identite($flux){
1049        if(isset($flux['args']['dob']))
1050                $flux['data']['naissance'] = $flux['args']['dob'];
1051
1052        if(isset($flux['args']['country'])){
1053                $id_pays = sql_getfetsel('id_pays','spip_geo_pays','code_iso='.sql_quote($flux['args']['country']));
1054                $flux['data']['pays'] = $id_pays;
1055        }
1056        if(isset($flux['args']['postcode']))
1057                $flux['data']['code_postal'] = $flux['args']['postcode'];
1058
1059        if(isset($flux['args']['gender']))
1060                $flux['data']['sexe'] = $flux['args']['gender'];
1061
1062        if(isset($flux['args']['fullname'])){
1063                $noms = explode(' ',$flux['args']['fullname']);
1064                $flux['data']['prenom'] = $noms[0];
1065                array_shift($noms);
1066                $flux['data']['nom_famille'] = implode(' ',$noms);
1067        }
1068        return $flux;
1069}
1070
1071/**
1072 * Insertion dans le pipeline openid_inscrire_redirect (OpenID)
1073 */
1074function inscription3_openid_inscrire_redirect($flux){
1075
1076        $auteur = $flux['args']['infos_auteur'];
1077
1078        $url = $flux['args']['url'];
1079
1080        $url = parametre_url($url,'code_postal',$auteur['code_postal']);
1081        $url = parametre_url($url,'pays',$auteur['pays']);
1082        $url = parametre_url($url,'naissance',$auteur['naissance']);
1083        $url = parametre_url($url,'sexe',$auteur['sexe']);
1084        $url = parametre_url($url,'login',$auteur['login']);
1085        $url = parametre_url($url,'nom_famille',$auteur['nom_famille']);
1086        $url = parametre_url($url,'prenom',$auteur['prenom']);
1087        $flux['data'] = $url;
1088        return $flux;
1089}
1090
1091/**
1092 * Insertion dans le pipeline post_edition (SPIP)
1093 *
1094 * Notifier les admins et les users quand ils passent de 8aconfirmer à un statut valide
1095 *
1096 * @param array $flux
1097 *              Le contexte du pipeline
1098 * @return array $flux
1099 *              Le contexte du pipeline modifié
1100 */
1101function inscription3_post_edition($flux) {
1102        if($flux['args']['action'] == 'instituer'
1103                &&  $flux['args']['table'] == 'spip_auteurs'
1104                && $flux['args']['statut_ancien'] == '8aconfirmer') {
1105
1106                if ($notifications = charger_fonction('notifications', 'inc')) {
1107                        $notifications('i3_inscriptionauteur', $flux['args']['id_objet'],
1108                                array('statut_ancien' => '8aconfirmer', 'statut_nouveau' => $flux['data']['statut'])
1109                        );
1110                }
1111        }
1112        return $flux;
1113}
1114?>
Note: See TracBrowser for help on using the repository browser.