Changeset 112911 in spip-zone


Ignore:
Timestamp:
Dec 18, 2018, 9:13:51 PM (3 months ago)
Author:
maieul@…
Message:

Etape 2: séparer clairement l'id_auteur de la variable php d'identification + migrer les données et traitements existants

Location:
_plugins_/formidable/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formidable/trunk/base/formidable_tables.php

    r111856 r112911  
    133133                        'id_auteur' => 'bigint(21) NOT NULL default 0',
    134134                        'cookie' => "varchar(255) NOT NULL default ''",
     135                        'variable_php' => 'bigint(21) NOT NULL default 0',
    135136                        'statut' => "varchar(10) NOT NULL default ''",
    136137                        'maj' => 'timestamp'
     
    140141                        'KEY id_formulaire' => 'id_formulaire',
    141142                        'KEY id_auteur' => 'id_auteur',
    142                         'KEY cookie' => 'cookie'
     143                        'KEY cookie' => 'cookie',
     144                        'KEY variable_php' => 'variable_php',
    143145                ),
    144146                'join' => array(
  • _plugins_/formidable/trunk/formidable_administrations.php

    r112910 r112911  
    9191        $maj['0.10.0'] = array(
    9292                array('formidable_migrer_reglage_champ_unique')
     93        );
     94        $maj['0.11.0'] = array(
     95                array('formidable_migrer_anonymisation')
    9396        );
    9497        include_spip('base/upgrade');
     
    186189
    187190/**
    188  * Déplace les réglages sur les tests d'unicité depuis des colonnes vers des sous options du traitement "enregistrement"
     191 * Déplace les réglages sur les tests d'unicité depuis des colonnes vers des sous options du traitement "enregistrer"
    189192 *
    190193 *
     
    236239                                }
    237240                        }
     241        }
     242}
     243
     244/**
     245 * Convertit la config d'anonymisation des réponses des formulaires qui l'avaient activés.
     246 * Le but étant de séparer l'anonymisation et l'identification par valeur PHP.
     247 * C'est à dire, pour ces formulaires:
     248 * 1. Change le nom de la variable de config.
     249 * 2. Si jamais la identification était par id_auteur, la transforme en par valeur php.
     250 * 3. Conserve l'anonymat des réponses
     251 * Et aussi
     252 * 1. Avant toute chose, crée une colonne variable_php
     253 * 2. Migre, pour les formulaires concernées, id_auteur vers variable_php
     254 * @return void
     255 **/
     256function formidable_migrer_anonymisation() {
     257        sql_alter("TABLE spip_formulaires_reponses ADD column `variable_php` bigint(21) NOT NULL default 0 AFTER `cookie`");
     258        sql_alter("TABLE spip_formulaires_reponses ADD INDEX (variable_php)");
     259        $res = sql_select("id_formulaire, traitements", "spip_formulaires");
     260        while ($row = sql_fetch($res)) {
     261                $id_formulaire = $row["id_formulaire"];
     262                $traitements = unserialize($row["traitements"]);
     263                $enregistrement = isset($traitements["enregistrement"]) ? $traitements["enregistrement"] : array();
     264                // A-ton l'option d'anonymisation activée? alors on migre, sinon rien à changer
     265                if (isset($enregistrement['anonymiser']) and $enregistrement["anonymiser"] == "on") {
     266                        $enregistrement["variable_php"] = isset($enregistrement["anonymiser_variable"]) ? $enregistrement["anonymiser_variable"] : '';
     267                        unset($enregistrement["anonymiser_variable"]);
     268                        if (isset($enregistrement["identification"]) and $enregistrement["identification"] == "id_auteur") {
     269                                $enregistrement["identification"] = "variable_php";
     270                        }
     271                        // Mettre à jour le traitement
     272                        $traitements["enregistrement"] = $enregistrement;
     273                        $traitements = serialize($traitements);
     274                        sql_updateq("spip_formulaires", array("traitements" => $traitements), "id_formulaire=$id_formulaire");
     275                        // Mettre à jour les réponses
     276                        $res_reponse = sql_select("id_auteur,id_formulaires_reponse", "spip_formulaires_reponses", "id_formulaire=$id_formulaire");
     277                        while ($raw_reponse = sql_fetch($res_reponse)) {
     278                                $id_formulaires_reponse = $raw_reponse["id_formulaires_reponse"];
     279                                sql_updateq("spip_formulaires_reponses", array("variable_php"=>$raw_reponse["id_auteur"], "id_auteur" => 0), "id_formulaires_reponse=$id_formulaires_reponse");
     280                        }
     281                }
    238282        }
    239283}
  • _plugins_/formidable/trunk/paquet.xml

    r112893 r112911  
    66        compatibilite="[3.0.0;3.2.*]"
    77        logo="images/formidable-64.png"
    8         schema="0.10.0"
     8        schema="0.11.0"
    99        documentation="https://contrib.spip.net/Formidable-le-generateur-de-formulaires"
    1010>
Note: See TracChangeset for help on using the changeset viewer.