Changeset 27016 in spip-zone


Ignore:
Timestamp:
Mar 2, 2009, 10:16:13 PM (11 years ago)
Author:
kent1@…
Message:

On refait d'une manière plus clean ce que l'on a fait hier dans la nuit ...

Donc dorénavant on passe par un plugin pour déclarer les champs qui ne doivent pas être créés dans la table spip_auteurs_elargis (merci Cerdic).

Donc un sous plugin pourra ajouter des champs dans ce pipeline de la sorte :

function monprefix_I2_exceptions_des_champs_auteurs_elargis($array){

liste des champs pour lesquels on ne doit pas créer de champs dans la table spip_auteurs_elargis


$array[] = 'ssdomaine';
$array[] = 'reflet_texte_utilisation';


return $array;

}

Voila pour cette partie.

On vire la table spip_societes qui deviendra plus tard un sous plugin, ceux qui l'utilisent NE DOIVENT DONC PAS METTRE A JOUR

On mets un peu plus de vérifications sur la validité de la meta pour éviter des erreurs sur le foreach.

S'il y a une erreur de la sorte, lorsque vous visiterez la page ?exec=admin-plugin, votre configuration d'inscripion2 devrait être automatiquement effacée et regénérée avec celle par défaut...

Vous devez donc refaire cette configuration.

Location:
_plugins_/_test_/inscription2/inscription2_193
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_test_/inscription2/inscription2_193/base/inscription2.php

    r26990 r27016  
    44       
    55        //-- Table des tables ----------------------------------------------------
    6        
    76        $interface['table_des_tables']['auteurs_elargis']='auteurs_elargis';
    8         $interface['table_des_tables']['societes']='societes';
    97
    108        return $interface;
     
    1210
    1311function inscription2_declarer_tables_principales($tables_principales){
    14         global $exceptions_des_champs_auteurs_elargis;
     12        $exceptions_des_champs_auteurs_elargis = pipeline('I2_exceptions_des_champs_auteurs_elargis',array());
     13       
    1514        $spip_auteurs_elargis['id_auteur'] = "bigint(21) NOT NULL";
    1615               
    1716        if(function_exists('lire_config')){
     17                if(lire_config('inscription2') == ''){
     18                        spip_log('INSCRIPTION 2 : Reverifier les plugins');
     19                        include_spip('inc/plugin');
     20                        installe_plugins();
     21                }
    1822                foreach(lire_config('inscription2',array()) as $cle => $val) {
    1923                        $cle = ereg_replace("_(obligatoire|fiche|table).*", "", $cle);
     
    3842                'field' => &$spip_auteurs_elargis,
    3943                'key' => &$spip_auteurs_elargis_key);
    40                 //'join' => &$spip_auteurs_elargis_join
    4144               
    4245        $spip_geo_pays['id_pays'] = "SMALLINT NOT NULL";
     
    4851                'key' => &$spip_geo_pays_key);
    4952       
    50         $spip_societes['id_societe'] = "BIGINT(21) NOT NULL";
    51         $spip_societes['nom'] = "VARCHAR(255) NOT NULL";
    52         $spip_societes['secteur'] = "VARCHAR(255) NOT NULL";
    53         $spip_societes['adresse'] = "TEXT NOT NULL";
    54         $spip_societes['code_postal'] = "VARCHAR(255) NOT NULL";
    55         $spip_societes['ville'] = "VARCHAR(255) NOT NULL";
    56         $spip_societes['id_pays'] = "SMALLINT NOT NULL";
    57         $spip_societes['telephone'] = "VARCHAR(255) NOT NULL";
    58         $spip_societes['fax'] = "VARCHAR(255) NOT NULL";
    59        
    60         $spip_societes_key = array('PRIMARY KEY' => 'id_societe', 'KEY id_pays' => 'id_pays');
    61        
    62         $tables_principales['spip_societes'] = array(
    63                 'field' => &$spip_societes,
    64                 'key' => &$spip_societes_key);
    65        
    6653        return $tables_principales;
    6754}
  • _plugins_/_test_/inscription2/inscription2_193/base/inscription2_installer.php

    r26990 r27016  
    33$GLOBALS['inscription2_version'] = 0.65;
    44
    5 function inscription2_upgrade(){
    6         global $exceptions_des_champs_auteurs_elargis;
    7     include_spip('cfg_options');
     5        function inscription2_upgrade(){
     6                spip_log('INSCRIPTION 2 : installation','inscription2');
     7                $exceptions_des_champs_auteurs_elargis = pipeline('I2_exceptions_des_champs_auteurs_elargis',array());
     8            include_spip('cfg_options');
     9           
     10                //On force le fait d accepter les visiteurs
     11                $accepter_visiteurs = $GLOBALS['meta']['accepter_visiteurs'];
     12                if($accepter_visiteurs != 'oui'){
     13                        ecrire_meta("accepter_visiteurs", "oui");
     14                }
     15               
     16                $version_base = $GLOBALS['inscription2_version'];
     17                $current_version = 0.0;
    818       
    9         //On force le fait d accepter les visiteurs
    10         $accepter_visiteurs = $GLOBALS['meta']['accepter_visiteurs'];
    11         if($accepter_visiteurs != 'oui'){
    12                 ecrire_meta("accepter_visiteurs", "oui");
    13         }
    14        
    15         $version_base = $GLOBALS['inscription2_version'];
    16         $current_version = 0.0;
    17 
    18         //insertion des infos par defaut
    19         $lala = $GLOBALS['meta']['inscription2'];
    20        
    21     //Certaines montées de version ont oublié de corriger la meta de I2
    22     //si ce n'est pas un array alors il faut reconfigurer la meta
    23         if (!is_array($lala)) {
    24             unset($lala);
    25             $GLOBALS['meta']['inscription2_version']=0.0;
    26         }
    27 
    28        
    29         // Si la version installee est la derniere en date, on ne fait rien
    30         if ( (isset($GLOBALS['meta']['inscription2_version']) )
    31                 && (($current_version = $GLOBALS['meta']['inscription2_version'])==$version_base))
    32         return;
    33        
    34                        
    35         //Si c est une nouvelle installation toute fraiche
    36         if ($current_version==0.0){
    37                 //inclusion des fonctions pour les requetes sql
    38                 include_spip('base/abstract_sql');
     19                //insertion des infos par defaut
     20                $inscription2_meta = $GLOBALS['meta']['inscription2'];
    3921               
    40                 ecrire_config(
    41                         'inscription2',
    42                                 array(
    43                                 'id_societe' => NULL,
    44                                 'id_societe_obligatoire' => NULL,
    45                                 'id_societe_fiche_mod' => NULL,
    46                                 'id_societe_fiche' => NULL,
    47                                 'id_societe_table' => NULL
    48                         )
    49                 );
    50                                
    51                 $spip_societes['id_societe'] = "BIGINT(21) NOT NULL";
    52                 $spip_societes['nom'] = "VARCHAR(255) NOT NULL";
    53                 $spip_societes['secteur'] = "VARCHAR(255) NOT NULL";
    54                 $spip_societes['adresse'] = "TEXT NOT NULL";
    55                 $spip_societes['code_postal'] = "VARCHAR(255) NOT NULL";
    56                 $spip_societes['ville'] = "VARCHAR(255) NOT NULL";
    57                 $spip_societes['id_pays'] = "SMALLINT NOT NULL";
    58                 $spip_societes['telephone'] = "VARCHAR(255) NOT NULL";
    59                 $spip_societes['fax'] = "VARCHAR(255) NOT NULL";
    60        
    61                 $spip_societes_key = array('PRIMARY KEY' => 'id_societe', 'KEY id_pays' => 'id_pays');
    62                
    63                 sql_create('spip_societes', $spip_societes, $spip_societes_key,true);
    64                
    65 
    66                 //definition de la table cible
    67                 $table_nom = "spip_auteurs_elargis";
    68        
    69                 //ajout des index
    70                 $desc = sql_showtable($table_nom,'', false);
    71                
    72                 if(isset($desc['field']) and $desc['key']['PRIMARY KEY']!='id_auteur'){
    73                         if(!isset($desc['field']['id_auteur'])){
    74                                 spip_query("ALTER TABLE ".$table_nom." ADD id_auteur INT NOT NULL PRIMARY KEY");
    75                         }
    76                         spip_query("ALTER TABLE $table_nom DROP id, DROP INDEX id_auteur, ADD PRIMARY KEY (id_auteur)");
    77                 }else{
    78                         sql_create($table_nom,array("id_auteur"=> "bigint(21) NOT NULL default '0'"), array('PRIMARY KEY' => "id_auteur"));
    79                 }
    80 
    81                 if(!$lala){
    82                 ecrire_meta(
    83                         'inscription2',
    84                                 serialize(array(
    85                                         'nom' => 'on',
    86                                         'nom_obligatoire' => 'on',
    87                                         'nom_fiche_mod' => 'on',
    88                                         'nom_fiche' => NULL,
    89                                         'nom_table' => NULL,
    90                                         'email' => 'on',
    91                                         'email_obligatoire' => 'on',
    92                                         'email_fiche_mod' => NULL,
    93                                         'email_fiche' => NULL,
    94                                         'email_table' => NULL,
    95                                         'nom_famille' => 'on',
    96                                         'nom_famille_obligatoire' => NULL,
    97                                         'nom_famille_fiche_mod' => NULL,
    98                                         'nom_famille_fiche' => NULL,
    99                                         'nom_famille_table' => 'on',
    100                                         'prenom' => 'on',
    101                                         'prenom_obligatoire' => NULL,
    102                                         'prenom_fiche_mod' => NULL,
    103                                         'prenom_fiche' => NULL,
    104                                         'prenom_table' => 'on',
    105                                         'login' => 'on',
    106                                         'login_obligatoire' => NULL,
    107                                         'login_fiche_mod' => 'on',
    108                                         'login_fiche' => NULL,
    109                                         'login_table' => NULL,
    110                                         'naissance' => NULL,
    111                                         'naissance_obligatoire' => NULL,
    112                                         'naissance_fiche_mod' => NULL,
    113                                         'naissance_fiche' => NULL,
    114                                         'naissance_table' => NULL,
    115                                         'sexe' => NULL,
    116                                         'sexe_obligatoire' => NULL,
    117                                         'sexe_fiche_mod' => NULL,
    118                                         'sexe_fiche' => NULL,
    119                                         'sexe_table' => NULL,
    120                                         'adresse' => 'on',
    121                                         'adresse_obligatoire' => NULL,
    122                                         'adresse_fiche_mod' => 'on',
    123                                         'adresse_fiche' => NULL,
    124                                         'adresse_table' => NULL,
    125                                         'code_postal' => 'on',
    126                                         'code_postal_obligatoire' => NULL,
    127                                         'code_postal_fiche_mod' => 'on',
    128                                         'code_postal_fiche' => NULL,
    129                                         'code_postal_table' => NULL,
    130                                         'ville' => 'on',
    131                                         'ville_obligatoire'  => NULL,
    132                                         'ville_fiche_mod' => 'on',
    133                                         'ville_fiche' => NULL,
    134                                         'ville_table' => 'on',
    135                                         'pays' => NULL,
    136                                         'pays_obligatoire' => NULL,
    137                                         'pays_fiche_mod' => NULL,
    138                                         'pays_fiche' => NULL,
    139                                         'pays_table' => NULL,
    140                                         'telephone' => 'on',
    141                                         'telephone_obligatoire' => NULL,
    142                                         'telephone_fiche_mod' => 'on',
    143                                         'telephone_fiche' => NULL,
    144                                         'telephone_table' => NULL,
    145                                         'fax' => NULL,
    146                                         'fax_obligatoire' => NULL,
    147                                         'fax_fiche_mod' => NULL,
    148                                         'fax_fiche' => NULL,
    149                                         'fax_table' => NULL,
    150                                         'mobile' => NULL,
    151                                         'mobile_obligatoire' => NULL,
    152                                         'mobile_fiche_mod' => NULL,
    153                                         'mobile_fiche' => NULL,
    154                                         'mobile_table' => NULL,
    155                                         'commentaire' => 'on',
    156                                         'commentaire_obligatoire' => NULL,
    157                                         'commentaire_fiche_mod' => NULL,
    158                                         'commentaire_fiche' => NULL,
    159                                         'commentaire_table' => NULL,
    160                                         'profession' => NULL,
    161                                         'profession_obligatoire' => NULL,
    162                                         'profession_fiche_mod' => NULL,
    163                                         'profession_fiche' => NULL,
    164                                         'profession_table' => NULL,
    165                                         'societe' => NULL,
    166                                         'societe_obligatoire' => NULL,
    167                                         'societe_fiche_mod' => NULL,
    168                                         'societe_fiche' => NULL,
    169                                         'societe_table' => NULL,
    170                                         'url_societe' => NULL,
    171                                         'url_societe_obligatoire' => NULL,
    172                                         'url_societe_fiche_mod' => NULL,
    173                                         'url_societe_fiche' => NULL,
    174                                         'url_societe_table' => NULL,
    175                                         'secteur' => NULL,
    176                                         'secteur_obligatoire' => NULL,
    177                                         'secteur_fiche_mod' => NULL,
    178                                         'secteur_fiche' => NULL,
    179                                         'secteur_table' => NULL,
    180                                         'fonction' => NULL,
    181                                         'fonction_obligatoire' => NULL,
    182                                         'fonction_fiche_mod' => NULL,
    183                                         'fonction_fiche' => NULL,
    184                                         'fonction_table' => NULL,
    185                                         'adresse_pro' => NULL,
    186                                         'adresse_pro_obligatoire' => NULL,
    187                                         'adresse_pro_fiche_mod' => NULL,
    188                                         'adresse_pro_fiche' => NULL,
    189                                         'adresse_pro_table' => NULL,
    190                                         'code_postal_pro' => NULL,
    191                                         'code_postal_pro_obligatoire' => NULL,
    192                                         'code_postal_pro_fiche_mod' => NULL,
    193                                         'code_postal_pro_fiche' => NULL,
    194                                         'code_postal_pro_table' => NULL,
    195                                         'ville_pro' => NULL,
    196                                         'ville_pro_obligatoire' => NULL,
    197                                         'ville_pro_fiche_mod' => NULL,
    198                                         'ville_pro_fiche' => NULL,
    199                                         'ville_pro_table' => NULL,
    200                                         'pays_pro' => NULL,
    201                                         'pays_pro_obligatoire' => NULL,
    202                                         'pays_pro_fiche_mod' => NULL,
    203                                         'pays_pro_fiche' => NULL,
    204                                         'pays_pro_table' => NULL,
    205                                         'telephone_pro' => NULL,
    206                                         'telephone_pro_obligatoire' => NULL,
    207                                         'telephone_pro_fiche_mod' => NULL,
    208                                         'telephone_pro_fiche' => NULL,
    209                                         'telephone_pro_table' => NULL,
    210                                         'fax_pro' => NULL,
    211                                         'fax_pro_obligatoire' => NULL,
    212                                         'fax_pro_fiche_mod' => NULL,
    213                                         'fax_pro_fiche' => NULL,
    214                                         'fax_pro_table' => NULL,
    215                                         'mobile_pro' => NULL,
    216                                         'mobille_pro_obligatoire' => NULL,
    217                                         'mobile_pro_fiche_mod' => NULL,
    218                                         'mobile_pro_fiche' => NULL,
    219                                         'mobile_pro_table' => NULL,
    220                                         'publication' => NULL,
    221                                         'domaines' => NULL,
    222                                         'divers' => NULL,
    223                                         'statut_nouveau' => '6forum',
    224                                         'creation' => NULL,
    225                                         'statut_int' => NULL,
    226                                         'statut_interne' => ''
    227                         ))
    228                 );
     22            //Certaines montées de version ont oublié de corriger la meta de I2
     23            //si ce n'est pas un array alors il faut reconfigurer la meta
     24                if (!is_array(unserialize($inscription2_meta))) {
     25                        spip_log("INSCRIPTION 2 : effacer la meta inscription2 et relancer l'install","inscription2");
     26                        echo "La configuration du plugin Inscription 2 a &eacute;t&eacute; effac&eacute;e.<br />";
     27                    effacer_meta('inscription2');
     28                    $GLOBALS['meta']['inscription2_version']=0.0;
    22929                }
    23030       
    231                 //ajouts des differents champs ecris dans les metas
    232                 if (is_array(lire_config('inscription2'))){
    233                         foreach(lire_config('inscription2',array()) as $cle => $val) {
    234                                 $cle = ereg_replace("_(obligatoire|fiche|table).*$","", $cle);
    235                                 if($val!='' and !isset($desc['field'][$cle]) and $cle == 'naissance'){
    236                                         spip_query("ALTER TABLE ".$table_nom." ADD ".$cle." DATE DEFAULT '0000-00-00' NOT NULL");
    237                                         $desc['field'][$cle] = "DATE DEFAULT '0000-00-00' NOT NULL";
    238                                 }elseif($val!='' and !isset($desc['field'][$cle]) and $cle == 'validite'){
    239                                         spip_query("ALTER TABLE ".$table_nom." ADD ".$cle." datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
    240                                         $desc['field'][$cle] = "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL";
    241                                 }elseif($val!='' and !isset($desc['field'][$cle]) and $cle == 'pays'){
    242                                         spip_query("ALTER TABLE ".$table_nom." ADD ".$cle." int NOT NULL");
    243                                         $desc['field'][$cle] = " int NOT NULL";
    244                                 }elseif($val!='' and !isset($desc['field'][$cle]) and !in_array($cle,$exceptions_des_champs_auteurs_elargis)){
    245                                         spip_query("ALTER TABLE ".$table_nom." ADD ".$cle." text NOT NULL");
    246                                         $desc['field'][$cle] = " text NOT NULL ";
    247                                 }
     31                // Si la version installee est la derniere en date, on ne fait rien
     32                if ( (isset($GLOBALS['meta']['inscription2_version']) )
     33                        && (($current_version = $GLOBALS['meta']['inscription2_version'])==$version_base))
     34                return;
     35                       
     36                //Si c est une nouvelle installation toute fraiche
     37                if ($current_version==0.0){
     38                        //inclusion des fonctions pour les requetes sql
     39                        include_spip('base/abstract_sql');
     40                       
     41                        // à passer en sous plugin
     42       
     43                        if(!$inscription2_meta){
     44                        ecrire_meta(
     45                                'inscription2',
     46                                        serialize(array(
     47                                                'nom' => 'on',
     48                                                'nom_obligatoire' => 'on',
     49                                                'nom_fiche_mod' => 'on',
     50                                                'email' => 'on',
     51                                                'email_obligatoire' => 'on',
     52                                                'nom_famille' => 'on',
     53                                                'nom_famille_table' => 'on',
     54                                                'prenom' => 'on',
     55                                                'prenom_table' => 'on',
     56                                                'login' => 'on',
     57                                                'login_fiche_mod' => 'on',
     58                                                'adresse' => 'on',
     59                                                'adresse_fiche_mod' => 'on',
     60                                                'code_postal' => 'on',
     61                                                'code_postal_fiche_mod' => 'on',
     62                                                'ville' => 'on',
     63                                                'ville_fiche_mod' => 'on',
     64                                                'ville_table' => 'on',
     65                                                'telephone' => 'on',
     66                                                'telephone_fiche_mod' => 'on',
     67                                                'statut_nouveau' => '6forum',
     68                                                'statut_interne' => ''
     69                                ))
     70                        );
    24871                        }
    249                 }
    250 
    251                 //Si spip_listes est installe
    252                 if($GLOBALS['meta']['spiplistes_version'] and !isset($desc['field']['spip_listes_format']))
    253                         spip_query("ALTER TABLE `".$table_nom."` ADD `spip_listes_format` VARCHAR(8)");
    254        
    255                 //inserer les auteurs qui existent deja dans la table spip_auteurs en non pas dans la table elargis
    256                 $s = sql_select("a.id_auteur","spip_auteurs a left join spip_auteurs_elargis b on a.id_auteur=b.id_auteur","b.id_auteur is null");
    257                 while($q = sql_fetch($s))
    258                         $a[] = $q['id_auteur'];
    259                 if($a){
    260                         $a = join('), (', $a);
    261                         spip_query("insert into spip_auteurs_elargis (id_auteur) values (".$a.")");
     72                       
     73                        // Creation de la table et des champs
     74                        $verifier_tables = charger_fonction('inscription2_verifier_tables','inc');
     75                        $verifier_tables();
     76               
     77                        //inserer les auteurs qui existent deja dans la table spip_auteurs en non pas dans la table elargis
     78                        $s = sql_select("a.id_auteur","spip_auteurs a left join spip_auteurs_elargis b on a.id_auteur=b.id_auteur","b.id_auteur is null");
     79                        while($q = sql_fetch($s)){
     80                                sql_insertq("spip_auteurs_elargis",array('id_auteur' => $q['id_auteur']));
     81                        }
     82               
     83                        //les pays
     84                        include(_DIR_PLUGIN_INSCRIPTION2."/inc/pays.php");
     85                        $descpays = sql_showtable('spip_pays', '', false);
     86                        if(isset($descpays['field'])){
     87                                sql_drop_table("spip_pays");
     88                        }
     89                        sql_create("spip_geo_pays",
     90                                array("id_pays"=> "SMALLINT NOT NULL AUTO_INCREMENT","pays"=>"varchar(255) NOT NULL"),
     91                                array('PRIMARY KEY' => "id_pays")
     92                        );
     93                        sql_insertq("spip_geo_pays",array("pays" => $liste_pays));
     94                        echo "Inscription2 installe @ ".$version_base;
     95                        ecrire_meta('inscription2_version',$current_version=$version_base);
    26296                }
    26397       
    264                 //les pays
    265                 include(_DIR_PLUGIN_INSCRIPTION2."/inc/pays.php");
    266                 $descpays = sql_showtable('spip_pays', '', false);
    267                 if(isset($descpays['field'])){
    268                         sql_drop_table("spip_pays");
     98                // Si la version installee est inferieur a O.6 on fait l homogeneisation avec spip_geo
     99                if ($current_version<0.6){
     100                        include_spip('base/abstract_sql');
     101                        include(_DIR_PLUGIN_INSCRIPTION2."/inc/pays.php");
     102                        $table_pays = "spip_geo_pays";
     103                        $descpays = sql_showtable($table_pays, '', false);
     104                       
     105                        $descpays_old = sql_showtable('spip_pays', '', false);
     106                        if(isset($descpays_old['field'])){
     107                                sql_drop_table("spip_pays");
     108                        }
     109                       
     110                        if(!isset($descpays['field']['pays'])){
     111                                spip_query("CREATE TABLE spip_geo_pays (id_pays SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, nom varchar(255) NOT NULL );");
     112                                spip_query("INSERT INTO spip_geo_pays (nom) VALUES (\"".join('"), ("',$liste_pays)."\")");
     113                        }
     114                       
     115                        echo "Inscription2 update @ 0.6<br/>Spip_pays devient spip_geo_pays homogeneite avec spip_geo";
     116                        ecrire_meta('inscription2_version',$current_version=0.6);
    269117                }
    270                 spip_query("CREATE TABLE spip_geo_pays (id_pays SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, pays varchar(255) NOT NULL );");
    271                 spip_query("INSERT INTO spip_geo_pays (pays) VALUES (\"".join('"), ("',$liste_pays)."\")");
    272                 echo "Inscription2 installe @ ".$version_base;
    273                 ecrire_meta('inscription2_version',$current_version=$version_base);
     118                        // Si la version installee est inferieur a 0.6 on fait l homogeneisation avec spip_geo
     119                if ($current_version<0.61){
     120                        include_spip('base/abstract_sql');
     121                        $table_pays = "spip_geo_pays";
     122                        $descpays = sql_showtable($table_pays, '', false);
     123                       
     124                        if((isset($descpays['field']['nom'])) && (!isset($descpays['field']['pays']))){
     125                                sql_alter("TABLE spip_geo_pays CHANGE nom pays varchar(255) NOT NULL");
     126                        }
     127                       
     128                        echo "Inscription2 update @ 0.61<br/>On retablit le champs pays sur la table pays et pas nom";
     129                        ecrire_meta('inscription2_version',$current_version=0.61);
     130                }
     131                if ($current_version<0.63){
     132                        include_spip('base/abstract_sql');
     133                        // Suppression du champs id et on remet la primary key sur id_auteur...
     134                        sql_alter("TABLE spip_auteurs_elargis DROP id, DROP INDEX id_auteur, ADD PRIMARY KEY (id_auteur)");
     135                        echo "Inscription2 update @ 0.63<br />On supprime le champs id pour privilegier id_auteur";
     136                        ecrire_meta('inscription2_version',$current_version=0.63);
     137                }
     138                if ($current_version<0.65){
     139                        ecrire_meta('inscription2_version',$current_version=0.65);
     140                }
     141                ecrire_metas();
    274142        }
    275 
    276         // Si la version installee est inferieur a O.6 on fait l homogeneisation avec spip_geo
    277         if ($current_version<0.6){
    278                 include_spip('base/abstract_sql');
    279                 include(_DIR_PLUGIN_INSCRIPTION2."/inc/pays.php");
    280                 $table_pays = "spip_geo_pays";
    281                 $descpays = sql_showtable($table_pays, '', false);
    282                
    283                 $descpays_old = sql_showtable('spip_pays', '', false);
    284                 if(isset($descpays_old['field'])){
    285                         sql_drop_table("spip_pays");
    286                 }
    287                
    288                 if(!isset($descpays['field']['pays'])){
    289                         spip_query("CREATE TABLE spip_geo_pays (id_pays SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, nom varchar(255) NOT NULL );");
    290                         spip_query("INSERT INTO spip_geo_pays (nom) VALUES (\"".join('"), ("',$liste_pays)."\")");
    291                 }
    292                
    293                 echo "Inscription2 update @ 0.6<br/>Spip_pays devient spip_geo_pays homogeneite avec spip_geo";
    294                 ecrire_meta('inscription2_version',$current_version=0.6);
    295         }
    296                 // Si la version installee est inferieur a 0.6 on fait l homogeneisation avec spip_geo
    297         if ($current_version<0.61){
    298                 include_spip('base/abstract_sql');
    299                 $table_pays = "spip_geo_pays";
    300                 $descpays = sql_showtable($table_pays, '', false);
    301                
    302                 if((isset($descpays['field']['nom'])) && (!isset($descpays['field']['pays']))){
    303                         spip_query("ALTER TABLE spip_geo_pays CHANGE nom pays varchar(255) NOT NULL");
    304                 }
    305                
    306                 echo "Inscription2 update @ 0.61<br/>On retablit le champs pays sur la table pays et pas nom";
    307                 ecrire_meta('inscription2_version',$current_version=0.61);
    308         }
    309 
    310         if ($current_version<0.62){
    311                 include_spip('base/abstract_sql');
    312                
    313                 ecrire_config(
    314                         'inscription2',
    315                         array(
    316                                 'id_societe' => NULL,
    317                                 'id_societe_obligatoire' => NULL,
    318                                 'id_societe_fiche_mod' => NULL,
    319                                 'id_societe_fiche' => NULL,
    320                                 'id_societe_table' => NULL
    321                         )
    322                 );
    323                
    324                 $spip_societes['id_societe'] = "bigint(21) NOT NULL";
    325                 $spip_societes['nom'] = "text NOT NULL";
    326                 $spip_societes['secteur'] = "text NOT NULL";
    327                 $spip_societes['adresse'] = "text NOT NULL";
    328                 $spip_societes['code_postal'] = "text NOT NULL";
    329                 $spip_societes['ville'] = "text NOT NULL";
    330                 $spip_societes['id_pays'] = "bigint(21) NOT NULL";
    331                 $spip_societes['telephone'] = "text NOT NULL";
    332                
    333                 $spip_societes_key = array('PRIMARY KEY' => 'id_societe', 'KEY id_pays' => 'id_pays');
    334                
    335                 sql_create('spip_societes', $spip_societes, $spip_societes_key,true);
    336                
    337                 echo "Inscription2 update @ 0.62<br/>On gere les societes aussi dans une table";
    338                 ecrire_meta('inscription2_version',$current_version=0.62);
    339         }
    340         if ($current_version<0.63){
    341                 include_spip('base/abstract_sql');
    342                 // Suppression du champs id et on remet la primary key sur id_auteur...
    343                 spip_query("ALTER TABLE spip_auteurs_elargis DROP id, DROP INDEX id_auteur, ADD PRIMARY KEY (id_auteur)");
    344                 echo "Inscription2 update @ 0.63<br />On supprime le champs id pour privilegier id_auteur";
    345                 ecrire_meta('inscription2_version',$current_version=0.63);
    346         }
    347        
    348         if (version_compare($GLOBALS['spip_version_code'],'1.9300','<')) ecrire_metas();
    349 }
    350143
    351144        //supprime les donnees depuis la table spip_auteurs_elargis
    352145        function inscription2_vider_tables() {
     146                $exceptions_des_champs_auteurs_elargis = pipeline('I2_exceptions_des_champs_auteurs_elargis',array());
     147        include_spip('cfg_options');
    353148                include_spip('base/abstract_sql');
     149               
    354150                //supprime la table spip_auteurs_elargis
    355                 foreach(lire_config('inscription2',array()) as $cle => $val){
    356                         $cle = ereg_replace("_(obligatoire|fiche|table).*", "", $cle);
     151                if (is_array(lire_config('inscription2'))){
     152                        $clef_passee = array();
    357153                        $desc = sql_showtable('spip_auteurs_elargis','', '', true);
    358                         if(isset($desc['field'][$cle]) and $cle != 'id_auteur' and $cle != 'spip_listes_format'){
    359                                 spip_log("suppression de $cle");
    360                                 $a = spip_query('ALTER TABLE spip_auteurs_elargis DROP COLUMN '.$cle);
    361                                 $desc['field'][$cle]='';
     154                        foreach(lire_config('inscription2',array()) as $cle => $val){
     155                                $cle = ereg_replace("_(obligatoire|fiche|table).*", "", $cle);
     156                                if(!in_array($cle,$clef_passee)){
     157                                        if(isset($desc['field'][$cle]) and !in_array($cle,$exceptions_des_champs_auteurs_elargis)){
     158                                                spip_log("INSCRIPTION 2 : suppression de $cle","inscription2");
     159                                                $a = sql_alter('TABLE spip_auteurs_elargis DROP COLUMN '.$cle);
     160                                                $desc['field'][$cle]='';
     161                                        }
     162                                        $clef_passee[] = $cle;
     163                                }
    362164                        }
    363165                }
     
    367169                if(!lire_config('spip_geo_base_version')){
    368170                        sql_drop_table('spip_geo_pays');
    369                         spip_log("suppression de la table spip_geo");
     171                        spip_log("INSCRIPTION 2 : suppression de la table spip_geo");
    370172                }
    371173                effacer_meta('inscription2');
     
    378180                switch ($action){
    379181                        case 'test':
     182                                if (!is_array(unserialize($GLOBALS['meta']['inscription2'])) OR !$GLOBALS['meta']['inscription2'] OR ($GLOBALS['meta']['inscription2']=='')){
     183                                        // Si cette meta n'est pas un array ... vaut mieux relancer l'ensemble du processus d'install
     184                                        return false;
     185                                }
    380186                                return (isset($GLOBALS['meta']['inscription2_version']) AND ($GLOBALS['meta']['inscription2_version']>=$version_base));
    381187                                break;
  • _plugins_/_test_/inscription2/inscription2_193/inc/inscription2_verifier_tables.php

    r26990 r27016  
    11<?php
    22function inc_inscription2_verifier_tables_dist(){
    3         global $exceptions_des_champs_auteurs_elargis;
    4         spip_log('verification des tables pour inscription2','inscription2');
     3        $exceptions_des_champs_auteurs_elargis = pipeline('I2_exceptions_des_champs_auteurs_elargis',array());
     4        spip_log('INCRIPTION 2 : verification des tables','inscription2');
    55       
    66        //definition de la table cible
    77        $table_nom = "spip_auteurs_elargis";
    8         $desc = sql_showtable($table_nom, true, '');
    9         if(!$desc){
     8        $desc = sql_showtable($table_nom,'', false);
     9               
     10        if(isset($desc['field']) and $desc['key']['PRIMARY KEY']!='id_auteur'){
     11                if(!isset($desc['field']['id_auteur'])){
     12                        sql_alter("TABLE ".$table_nom." ADD id_auteur INT NOT NULL PRIMARY KEY");
     13                }
     14                sql_alter("TABLE ".$table_nom." DROP id, DROP INDEX id_auteur, ADD PRIMARY KEY (id_auteur)");
     15        }else if(!$desc){
    1016                sql_create($table_nom,
    11                         array('id_auteur'=> 'bigint NOT NULL'),
    12                         array('KEY' => 'id_auteur')
     17                        array("id_auteur"=> "bigint(21) NOT NULL default '0'"),
     18                        array('PRIMARY KEY' => "id_auteur")
    1319                );
    1420        }
    15         foreach(lire_config('inscription2',array()) as $clef => $val) {
    16                 $cle = ereg_replace("_(obligatoire|fiche|table).*", "", $clef);
    17                 if(!in_array($cle,$exceptions_des_champs_auteurs_elargis) and !ereg("^(categories|zone|newsletter).*$", $cle) ){
    18                         if($cle == 'naissance' and !isset($desc['field'][$cle]) and _request($clef)!=''){
    19                                 sql_alter("TABLE ".$table_nom." ADD ".$cle." DATE DEFAULT '0000-00-00' NOT NULL");
    20                                 $desc['field'][$cle] = "DATE DEFAULT '0000-00-00' NOT NULL";
    21                         }elseif(_request($clef)!='' and !isset($desc['field'][$cle]) and $cle == 'validite'){
    22                                 sql_alter("TABLE ".$table_nom." ADD ".$cle." datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
    23                                 $desc['field'][$cle] = "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL";
    24                         }elseif(_request($clef)!='' and !isset($desc['field'][$cle]) and $cle == 'pays'){
    25                                 sql_alter("TABLE ".$table_nom." ADD ".$cle." int NOT NULL");
    26                                 $desc['field'][$cle] = " int NOT NULL";
    27                         }elseif(!isset($desc['field'][$cle]) and _request($clef)!=''){
    28                                 sql_alter("TABLE ".$table_nom." ADD ".$cle." text NOT NULL");
    29                                 $desc['field'][$cle] = "text NOT NULL";
     21       
     22        if (is_array(lire_config('inscription2'))){
     23                $clef_passee = array();
     24                foreach(lire_config('inscription2',array()) as $clef => $val) {
     25                        $cle = ereg_replace("_(obligatoire|fiche|table).*", "", $clef);
     26                        if(!in_array($cle,$clef_passee)){
     27                                if(!in_array($cle,$exceptions_des_champs_auteurs_elargis) and !ereg("^(categories|zone|newsletter).*$", $cle) ){
     28                                        if($cle == 'naissance' and !isset($desc['field'][$cle]) and _request($clef)!=''){
     29                                                sql_alter("TABLE ".$table_nom." ADD ".$cle." DATE DEFAULT '0000-00-00' NOT NULL");
     30                                                $desc['field'][$cle] = "DATE DEFAULT '0000-00-00' NOT NULL";
     31                                        }elseif(_request($clef)!='' and !isset($desc['field'][$cle]) and $cle == 'validite'){
     32                                                sql_alter("TABLE ".$table_nom." ADD ".$cle." datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
     33                                                $desc['field'][$cle] = "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL";
     34                                        }elseif(_request($clef)!='' and !isset($desc['field'][$cle]) and $cle == 'pays'){
     35                                                sql_alter("TABLE ".$table_nom." ADD ".$cle." int NOT NULL");
     36                                                $desc['field'][$cle] = " int NOT NULL";
     37                                        }elseif(!isset($desc['field'][$cle]) and _request($clef)!=''){
     38                                                sql_alter("TABLE ".$table_nom." ADD ".$cle." text NOT NULL");
     39                                                $desc['field'][$cle] = "text NOT NULL";
     40                                        }
     41                                }
     42                                if(in_array($cle,$exceptions_des_champs_auteurs_elargis)){
     43                                        spip_log("INSCRIPTION 2 : le champs $cle est dans les exception de creation de champs...",'inscription2');
     44                                }
     45                                $clef_passee[] = $cle;
    3046                        }
    3147                }
    32                 if(in_array($cle,$exceptions_des_champs_auteurs_elargis)){
    33                         spip_log("le champs $cle est dans les exception de creation de champs....");
    34                 }
    3548        }
    36         $listes = lire_config('plugin/SPIPLISTES');
    37         if($listes and !isset($desc['field']['spip_listes_format']))
    38         sql_alter("TABLE `".$table_nom."` ADD `spip_listes_format` VARCHAR( 8 ) DEFAULT 'non' NOT NULL");
     49       
     50        if($GLOBALS['meta']['spiplistes_version'] and !isset($desc['field']['spip_listes_format']))
     51                sql_alter("TABLE `".$table_nom."` ADD `spip_listes_format` VARCHAR(8) DEFAULT 'non' NOT NULL");
    3952}
    4053?>
  • _plugins_/_test_/inscription2/inscription2_193/inscription2_mes_options.php

    r26990 r27016  
    33include_spip('base/abstract_sql');
    44
    5 // liste des champs pour lesquels on ne doit pas créer de champs dans la table spip_auteurs_elargis
    6 
    7 // Principalement les champs déjà présents dans spip_auteurs
    8 $exceptions_des_champs_auteurs_elargis[] = 'bio';
    9 $exceptions_des_champs_auteurs_elargis[] = 'nom';
    10 $exceptions_des_champs_auteurs_elargis[] = 'pass';
    11 $exceptions_des_champs_auteurs_elargis[] = 'login';
    12 $exceptions_des_champs_auteurs_elargis[] = 'email';
    13 $exceptions_des_champs_auteurs_elargis[] = 'statut';
    14 $exceptions_des_champs_auteurs_elargis[] = 'gpg';
    15 
    16 // Des choses spécifiques à inscription2
    17 $exceptions_des_champs_auteurs_elargis[] = 'username';
    18 $exceptions_des_champs_auteurs_elargis[] = 'statut_nouveau';
    19 $exceptions_des_champs_auteurs_elargis[] = 'statut_int';
    20 $exceptions_des_champs_auteurs_elargis[] = 'accesrestreint';
    21 $exceptions_des_champs_auteurs_elargis[] = 'password';
     5$GLOBALS['spip_pipeline']['I2_exceptions_des_champs_auteurs_elargis'] = '';
    226
    237//
     
    8771        }
    8872}
    89 
    90 //$plop = sql_showtable('spip_auteurs_elargis');
    91 //var_dump($plop['field']);
    9273?>
  • _plugins_/_test_/inscription2/inscription2_193/inscription2_pipelines.php

    r26744 r27016  
    7272                                )
    7373                        );
    74                
    7574                        $echec = $echec ? '&echec=' . join('@@@', $echec) : '';
    7675        }
    7776        return $flux;
    78 }       
     77}
     78
     79function inscription2_I2_exceptions_des_champs_auteurs_elargis($array){
     80        // liste des champs pour lesquels on ne doit pas créer de champs dans la table spip_auteurs_elargis
     81       
     82        // Principalement les champs déjà présents dans spip_auteurs
     83        $array[] = 'id_auteur';
     84        $array[] = 'bio';
     85        $array[] = 'nom';
     86        $array[] = 'pass';
     87        $array[] = 'login';
     88        $array[] = 'email';
     89        $array[] = 'statut';
     90        $array[] = 'gpg';
     91       
     92        // Des choses spécifiques à inscription2
     93        $array[] = 'username';
     94        $array[] = 'statut_nouveau';
     95        $array[] = 'statut_int';
     96        $array[] = 'accesrestreint';
     97        $array[] = 'password';
     98        return $array;
     99}
    79100?>
  • _plugins_/_test_/inscription2/inscription2_193/plugin.xml

    r26695 r27016  
    3636        </pipeline>
    3737        <pipeline>
     38                <nom>I2_exceptions_des_champs_auteurs_elargis</nom>
     39                <inclure>inscription2_pipelines.php</inclure>
     40        </pipeline>
     41        <pipeline>
    3842                <nom>ajouter_boutons</nom>
    3943                <action>ajouter_boutons</action>
Note: See TracChangeset for help on using the changeset viewer.