source: spip-zone/_plugins_/Association/Associaspip/inc/post_edition.php @ 47478

Last change on this file since 47478 was 47478, checked in by jeannolapin@…, 10 years ago

Associaspip Gestion des membres: choisir le format d'interpretation du nom de l'auteur spip->nom et prenom quand on integre un auteur spip dans la table des membres + un oubli dans la gestion optionnelle des champs civilite et prenom.

File size: 3.8 KB
Line 
1<?php
2/***************************************************************************
3 *  Associaspip, extension de SPIP pour gestion d'associations             *
4 *                                                                         *
5 *  Copyright (c) 2007 Bernard Blazin & Francois de Montlivault (V1)       *
6 *  Copyright (c) 2010-2011 Emmanuel Saint-James & Jeannot Lapin (V2)       *
7 *                                                                         *
8 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
9 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
10\***************************************************************************/
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14function association_post_edition($flux){
15        $id = $flux['args']['id_objet'];
16        if ($id
17        AND $flux['args']['table']=='spip_auteurs') {
18                update_spip_asso_membre($id);
19        }
20}
21
22function update_spip_asso_membre($id_auteur)
23{
24        $auteur = sql_fetsel('statut, nom, bio', 'spip_auteurs', "id_auteur=$id_auteur");
25
26        if ($auteur['statut'] == '5poubelle') { /* auteur a la poubelle: on le met aussi a la poubelle dans asso_membres si il est present dans la table */
27                if (sql_getfetsel('id_auteur', 'spip_asso_membres', "id_auteur=$id_auteur")) {
28                        sql_updateq('spip_asso_membres', array('statut_interne' => 'sorti'), "id_auteur=$id_auteur");
29                }
30                return; 
31        }
32
33        /* on recupere dans la bio les champs fonction, telephone, mobile, adresse, code postal et ville: 1 par ligne (sauf code postal et ville) */   
34        $bio = $auteur['bio'];
35        if (preg_match_all('/(.+)$/m', $bio, $r)
36        AND preg_match('/^\s*(\d{5})\s+(.*)/', $r[0][4], $m))
37              $modif = array(
38                'fonction' => trim($r[0][0]),
39                'telephone' => telephone_std($r[0][1]),
40                'mobile' => telephone_std($r[0][2]),
41                'adresse' => trim($r[0][3]),
42                'code_postal' => $m[1],
43                'ville' => trim($m[2])
44                             );
45        else $modif = array();
46
47        /* on recupere les noms et prenoms dans le champ nom de l'auteur SPIP */
48        $nom = $auteur['nom'];
49        if ($nom) {
50                /* selection du format d'import du champ non */
51                if ($GLOBALS['association_metas']['import_nom_auteur'] == "prenom_nom") {
52                        list($prenom, $nom) = preg_split('/\s+/', $nom, 2);
53                        if (!$nom) {/* il n'y avait qu'une seule chaine -> on la met dans le nom et le prenom reste vide */
54                                $nom = $prenom;
55                                $prenom = '';
56                        }
57                } elseif ($GLOBALS['association_metas']['import_nom_auteur'] == "nom") {
58                        $prenom = '';
59                } else { // defaut: format nom prenom
60                        list($nom, $prenom) = preg_split('/\s+/', $nom, 2); /* il faudrait aussi gerer le cas ou le nom de famille contient un espace */
61                }
62        }
63        else {$nom = _T('asso:activite_entete_adherent').' '.$id_auteur; $prenom = '';} /* si il est vide, le nom sera Adherents XX */
64        $modif['nom_famille'] = $nom;
65        $modif['prenom'] = $prenom;
66
67        /* si l'auteur est deja present dans la base: on ne modifie pas les noms/prenoms/fonction [temporaire en attendant l'integration de Coordonnees] */
68        $membre = sql_fetsel('id_auteur,statut_interne', 'spip_asso_membres', "id_auteur=$id_auteur");
69        if ($membre['id_auteur']) {
70                unset($modif['fonction']);
71                unset($modif['nom_famille']);
72                unset($modif['prenom']);
73                if ($membre['statut_interne'] == 'sorti') $modif['statut_interne'] = 'prospect'; /* si un auteur est edite mais correspond a un membre sorti, on le repasse en prospect */
74                sql_updateq('spip_asso_membres', $modif, "id_auteur=$id_auteur");
75        } else { /* sinon on ajoute avec comme statut par defaut prospect */
76          $modif['statut_interne'] = 'prospect';
77          $modif['id_auteur'] = $id_auteur;
78          sql_insertq('spip_asso_membres', $modif);
79        }
80}
81
82function telephone_std($num)
83{
84        $num = preg_replace('/\D/', '', $num);
85        if ($num AND strlen($num) < 10) $num = '0'.$num;
86        $num = preg_replace('/(\d\d)/', '\1 ', $num);
87        return rtrim($num);
88}
89?>
Note: See TracBrowser for help on using the repository browser.