Ignore:
Timestamp:
May 22, 2011, 2:26:14 PM (10 years ago)
Author:
jeannolapin@…
Message:

Associaspip Interface avec le plugin Coordonnées pour gérer les adresses, mails (autre que celui de la table spip_auteurs) et télephones.
Au moment de l'upgrade, la fonction de MaJ demande a l'administrateur ce qu'il veut faire de ses données(éliminer ou transferer vers les tables de coordonnées). Il est tout de meme recommandé de faire une sauvegarde de la base avant d'effectuer cette mise a jour.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/Association/Associaspip/base/association_gestion.php

    r47844 r48001  
    4141  // Compatibilite: le nom de la meta donnant le numero de version
    4242  // n'etait pas std puis est parti dans une autre table puis encore une autre
    43 
    4443        if (!isset($GLOBALS['association_metas']['base_version'])) {
    4544                lire_metas('asso_metas');
     
    283282
    284283$GLOBALS['association_maj'][47731] = array(array('association_maj_47731'));
     284
     285/* mise a jour integrant l'utilisation du plugin Coordonnees */
     286function association_maj_48001()
     287{
     288        global $association_tables_principales;
     289
     290        $effectuer_maj = false;
     291
     292        /* cette partie du code s'execute au premier chargement, on n'a pas encore interroge l'utilisateur sur ce qu'il veut faire de ses donnees si il en a  ou il n'a pas voulu faire la maj */
     293        if (!_request('valider_association_maj_coordonnees')) {
     294                /* on commence par verifier si des informations de la table spip_asso_membres sont potentiellement transferable vers les tables de coordonnees */
     295                $presence_donnees = sql_countsel('spip_asso_membres', "adresse <> '' OR mobile <> '' OR code_postal <> '' OR ville <> '' OR telephone <> ''");
     296
     297                /* si on n'a pas de donnees a sauvegarder, on fait la mise a jour sans poser de question */
     298                if (!$presence_donnees) {
     299                        $effectuer_maj = true;
     300                } else { /* on a des donnees, demander a l'utilisateur ce qu'il veut en faire */
     301                        echo '<fieldset><p>'._T('asso:maj_coordonnees_intro').'</p>';
     302                        echo '<form method="post">';
     303                        /* on commence par determiner si le plugin Coordonnees est installe */
     304                        include_spip('inc/plugin');
     305                        $liste_plugins = liste_plugin_actifs();
     306                        $plugin_coordonnees_actif = isset($liste_plugins['COORDONNEES']);
     307
     308                        if (!$plugin_coordonnees_actif) {/* Le plugin coordonnees n'est pas actif */
     309                                echo '<p>'._T('asso:maj_coordonnees_plugin_inactif').'</p>';
     310                        } else { /* le plugin coordonnees est actif */
     311                                echo '<input type="radio" name="association_maj_coordonnees_traitement_data" value="ignorer">'._T('asso:maj_coordonnees_ignorer').'</input><br/>';
     312                                echo '<input type="radio" name="association_maj_coordonnees_traitement_data" value="merge" checked="checked">'._T('asso:maj_coordonnees_merge').'</input>';
     313                        }
     314                        echo '<p><input type="submit" name="valider_association_maj_coordonnees" value="'._T('asso:effectuer_la_maj').'"/></p>';
     315                        echo '</form>';
     316                        echo '<p>'._T('asso:maj_coordonnees_notes').'</p></fieldset>';
     317                }
     318        } else { /* l'utilisateur veut effectuer la maj, on controlle si il y a des precision quand a l'ecrasement de donnees existentes */
     319                        $choix_donnees = _request('association_maj_coordonnees_traitement_data');
     320                        if ($choix_donnees == "merge") { /* on integre les donnees d'association dans Coordonnees */
     321                                include_spip('action/editer_numero');
     322                                include_spip('action/editer_adresse');
     323                                $nbr_adresses = 0;
     324                                $nbr_numeros = 0;
     325
     326                                set_request("objet", "auteur"); /* parceque les fonction insert_numero et insert_adresse de Coordonnees recupere par un request cette valeur pour l'insertion dans la table de liens */
     327                               
     328                                /* On recupere toutes les coordonnees */
     329                                $coordonnees_membres = sql_select('id_auteur, adresse, code_postal, ville, telephone, mobile', 'spip_asso_membres', "adresse <> '' OR mobile <> '' OR code_postal <> '' OR ville <> '' OR telephone <> ''");
     330                                while ($data = sql_fetch($coordonnees_membres)) {
     331                                        set_request("id_objet", $data['id_auteur']); /* parceque les fonction insert_numero et insert_adresse de Coordonnees recupere par un request cette valeur pour l'insertion dans la table de liens */
     332
     333                                        /* si on a une adresse, meme partielle */
     334                                        if (($data['adresse'] != '') or ($data['code_postal'] != '') or ($data['ville'] != '')) {
     335                                                $id_adresse = insert_adresse();
     336                                                if ($id_adresse) revisions_adresses($id_adresse, array("voie" => $data['adresse'], "code_postal" => $data['code_postal'], "ville" => $data['ville']));
     337                                                $nbr_adresses++;
     338                                               
     339                                        }
     340
     341                                        /* si on a un numero de telephone */
     342                                        if ($data['telephone'] != '') {
     343                                                $id_numero = insert_numero();
     344                                                if ($id_numero) revisions_numeros($id_numero, array("titre" => "telephone", "numero" => $data['telephone']));
     345                                                $nbr_numeros++;
     346                                        }
     347
     348                                        /* si on a un numero de mobile */
     349                                        if ($data['mobile'] != '') {
     350                                                $id_numero = insert_numero();
     351                                                if ($id_numero) revisions_numeros($id_numero, array("titre" => "mobile", "numero" => $data['mobile']));
     352                                                $nbr_numeros++;
     353                                        }
     354                                }
     355                                echo "<fieldset><p>".$nbr_adresses._T('asso:maj_coordonnees_adresses_inserees').'<br/>'.$nbr_numeros._T('asso:maj_coordonnees_numeros_inseres')."</p></fieldset>";
     356                        }
     357
     358                        $effectuer_maj = true;
     359        }
     360
     361        /* on effectue si besoin la mise a jour */
     362        if ($effectuer_maj) {
     363                /* on supprime les champs de la table spip_asso_membres, ils ont deja ete sauvegarde dans les tables de Coordonnees si besoin */
     364                sql_alter("TABLE spip_asso_membres DROP telephone");
     365                sql_alter("TABLE spip_asso_membres DROP mobile");
     366                sql_alter("TABLE spip_asso_membres DROP adresse");
     367                sql_alter("TABLE spip_asso_membres DROP code_postal");
     368                sql_alter("TABLE spip_asso_membres DROP ville");
     369                sql_alter("TABLE spip_asso_membres DROP email");
     370        } else { /* la mise a jour n'est pas effectuee : on le signale dans les maj_erreur pour y revenir au prochain chargement de la page de gestion des plugins */
     371                if (!$GLOBALS['association_maj_erreur']) $GLOBALS['association_maj_erreur'] = 48001;
     372        }
     373}
     374
     375$GLOBALS['association_maj'][48001] = array(array('association_maj_48001'));
    285376?>
Note: See TracChangeset for help on using the changeset viewer.