source: spip-zone/_plugins_/_dev_/acces_groupes/maj_tables.php @ 5862

Last change on this file since 5862 was 5862, checked in by cy_altern@…, 15 years ago

début du filtrage complet de l'espace privé par surcharge des requêtes SQL : plus de rubriques restreintes *presque partout*, reste les articles, les sites et les forums...

File size: 11.0 KB
Line 
1<?php
2// patch ACCESGROUPES pour passer de la version 0.61 ou 0.7 à la version 1.0
3
4// le nécessaire pour récupérer les messages dans le fichier de langue fr
5//$GLOBALS = array();
6$GLOBALS['idx_lang'] = 'fr';
7include('lang/accesgroupes_fr.php');
8$Tchaines = $GLOBALS['fr'];
9
10// fct pour mimer la fct de traduction _T() de spip
11function _T($ch) {
12                                 global $Tchaines;
13                                 if (array_key_exists($ch, $Tchaines)) {
14                                                $retour = $Tchaines[$ch];
15                                 }
16                                 else {
17                                                        $retour = str_replace('_', ' ', $ch);
18                                 }
19                                 return $retour;
20}
21
22$msg_text = '';
23$alert = 0;
24// debut page
25echo '<html><head><title>'._T('module_titre').'</title><style type="text/css">body {font-family: Arial, Helvetica, sans-serif;} a {color: #000; font-weight: bold;} a:hover {background-color: #ccc;}</style></head><body>';
26echo '<div style="width: 100%; text-align: center;"><h2>'._T('titre_patch').'</h2></div>';
27echo '<p>'._T('info_patch').'</p><br>';
28echo '<div style="width: 50%; margin-left: 20%; background-color: #eee; border: solid 1px #ccc; padding: 20px;">';
29
30// lancement du patch si paramètres connexion MySQL + préfixe tables spip envoyés par le formulaire d'initialisation
31if (isset($_POST['lance_maj']) AND $_POST['host'] != '' AND $_POST['user'] != '' AND isset($_POST['pass']) AND $_POST['base'] != '' AND $_POST['prefixe'] != '') {
32  // connexion MySQL
33    $host = $_POST['host'];
34                $user = $_POST['user'];
35                $pass = $_POST['pass'];
36                $base = $_POST['base'];                                                 
37                $prefixe = $_POST['prefixe'];
38                $db = mysql_connect($host, $user, $pass); 
39                mysql_select_db($base,$db);
40               
41        // les noms des tables de la v0.61
42                $prefix_tables_SPIP = $prefixe; 
43                $prefix_tables_jpk = $prefixe."_jpk";
44                $Tjpk_groupes = $prefix_tables_jpk."_groupes";
45                $Tjpk_groupes_auteurs = $prefix_tables_jpk."_groupes_auteurs";
46                $Tjpk_groupes_acces = $prefix_tables_jpk."_groupes_acces";
47               
48        // les noms des tables de la v1.0
49                $Taccesgroupes_groupes = $prefixe.'_accesgroupes_groupes';
50                $Taccesgroupes_acces = $prefixe.'_accesgroupes_acces';
51                $Taccesgroupes_auteurs = $prefixe.'_accesgroupes_auteurs';
52               
53// existe t'il des tables version 0.6 ?
54                $sql6880 = "SHOW TABLES LIKE '".$prefix_tables_SPIP."_jpk_groupes'";
55                @$result6880 = mysql_query($sql6880);
56
57  // si pas de tables v0.6
58                if (! @$data6880 =  mysql_num_rows($result6880) AND mysql_num_rows($result6880) < 1) {
59                          $sql6881 = "SHOW TABLES LIKE '".$Taccesgroupes_auteurs."'";
60                                @$result6881 = mysql_query($sql6881);
61                        // existe t'il des tables version 0.7 ?
62                                if (@$data6881 =  mysql_num_rows($result6881) AND mysql_num_rows($result6881) > 0) {
63                // patch pour passer de la v0.7 à la v1.0 : une seule modif dans la table _accesgroupes_auteurs
64                          mysql_query ("ALTER TABLE ".$Taccesgroupes_auteurs.
65                                                                                  CHANGE dde_acces dde_acces BIGINT( 21 ) DEFAULT '0' NOT NULL");
66                                if (mysql_error() != '') {
67                                         $alerte = 1;
68                                         $msg_text .= '<br>'._T('erreur_patch0.7_1.0');
69                                }
70                                else {
71                                                 $msg_text .= '<br>'._T('OK_patch1.0');
72                                }
73                                }  // fin patch pour v0.7
74                }   
75                else {  // si il existe des tables v0.6, lancement du patch pour passer de v0.61 à v1.0
76    // étape 1 renommer les tables prefixspip_jpk_xxx en prefixspip_accesgroupe_groupes, prefixspip_accesgroupe_acces, prefixspip_accesgroupe_auteurs         
77                 mysql_query("ALTER TABLE ".$prefix_tables_SPIP."_jpk_groupes RENAME ".$Taccesgroupes_groupes);
78                 mysql_query("ALTER TABLE ".$prefix_tables_SPIP."_jpk_groupes_acces RENAME ".$Taccesgroupes_acces);
79                 mysql_query("ALTER TABLE ".$prefix_tables_SPIP."_jpk_groupes_auteurs RENAME ".$Taccesgroupes_auteurs);         
80                 if (mysql_error() != '') {
81                                $alerte = 1;
82                                $msg_text .= '<br>'._T('erreur_patch0.7_etape1');
83                 }
84   
85    // étape 2 : ajout des champs supplémentaires
86        $sql701 = "SHOW COLUMNS FROM $Taccesgroupes_acces";
87                $result701 = mysql_query($sql701);
88        $col_names = array();
89        if ($sql701) {
90                        while ($row701 = mysql_fetch_array($result701)) {
91                                                $col_names[]=$row701[0];
92                        }
93        }
94        if (!in_array('prive_public', $col_names)) {
95                  mysql_query("ALTER TABLE $Taccesgroupes_acces ADD prive_public smallint(6) NOT NULL");
96                  if (mysql_error() != '') { 
97                                 $alerte = 1;
98                                         $msg_text .= '<br>'._T('erreur_patch0.7_etape2');
99                        }
100        }
101               
102        $sql702 = "SHOW COLUMNS FROM $Taccesgroupes_groupes";
103                $result702 = mysql_query($sql702);
104        $col_names = array();
105        if ($sql702) {
106                        while ($row702 = mysql_fetch_array($result702)) {
107                                                $col_names[]=$row702[0];
108                        }
109        }
110        if (!in_array('demande_acces', $col_names)) {
111                  mysql_query("ALTER TABLE $Taccesgroupes_groupes ADD demande_acces tinyint(4) NOT NULL default '0'");
112                  if (mysql_error() != '') { 
113                                 $alerte = 1;
114                                         $msg_text .= '<br>'._T('erreur_patch0.7_etape2');
115                        }
116        }
117               
118    // étape 3 transformation des champs intitulés id_groupe en id_grpacces et du champ dde_acces de _accesgroupes_auteurs
119          if (!in_array('id_grpacces', $col_names)) {
120              mysql_query("ALTER TABLE $Taccesgroupes_groupes CHANGE id_groupe id_grpacces BIGINT( 20 ) NOT NULL AUTO_INCREMENT ");
121                mysql_query("ALTER TABLE $Taccesgroupes_acces CHANGE id_groupe id_grpacces BIGINT( 21 ) DEFAULT '0' NOT NULL ");
122                mysql_query("ALTER TABLE $Taccesgroupes_auteurs CHANGE id_groupe id_grpacces BIGINT( 21 ) DEFAULT '0' NOT NULL ");
123                                                mysql_query ("ALTER TABLE ".$prefixe."_accesgroupes_auteurs CHANGE dde_acces dde_acces BIGINT( 21 ) DEFAULT '0' NOT NULL");   
124                if (mysql_error() != '') {
125                 $alerte = 1;
126                 $msg_text .= '<br>'._T('erreur_patch0.7_etape3');
127                                         $msg_text .= mysql_error();
128                }
129          }
130                                if ($msg_text == '') {
131                                         $msg_text .= '<br>'._T('OK_patch1.0');
132                                }
133                }  // fin patch pour v0.6
134                $couleur = ($alert == 1 ? '#f00' : '#393');             
135                echo '<p style="color: '.$couleur.'; font-weight: bold;">';
136                echo $msg_text;
137                echo '</p>';
138
139} 
140// fin patch modifiant les tables
141// si pas de données envoyées par formulaire : afficher le formulaire
142else { 
143                 echo "<form action=\"".$_SERVER['PHP_SELF']."\" name=\"form_init\" method=\"post\">";
144                 echo "<h3 style=\"margin: 0px 50px;\" >"._T('titre_formulaire_patch')."</h3><br>";
145                 echo "\r\n"._T('serveur_SQL')." : <input type=\"text\" name=\"host\" value=\"localhost\"><br>";
146                 echo "\r\n"._T('user_SQL')." : <input type=\"text\" name=\"user\" value=\"\"><br>";
147                 echo "\r\n"._T('pass_SQL')." : <input type=\"password\" name=\"pass\" value=\"localhost\"><br>";
148                 echo "\r\n"._T('base_SQL')." : <input type=\"text\" name=\"base\" value=\"\"><br>";
149                 echo "\r\n"._T('prefixe_tables')." : <input type=\"text\" name=\"prefixe\" value=\"spip\"><br>";
150                 
151                                         
152                 echo "\r\n<br><input type=\"submit\" name=\"lance_maj\" value=\""._T('lancer_patch')."\">";
153                 echo "</form>";
154}
155
156// fin page
157echo '</div></body></html>';
158
159
160// OLD V 0.7
161/*
162// existe t'il des tables version 0.6 ?
163                $sql6880 = "SHOW TABLES LIKE '".$prefix_tables_SPIP."_jpk_groupes'";
164                @$result6880 = mysql_query($sql6880);
165// si pas de tables v0.6, créer les tables
166
167                if (! @$data6880 =  spip_num_rows($result6880) AND spip_num_rows($result6880) < 1) {
168                $sql6881 = "SHOW TABLES LIKE '$Tjpk_groupes'";
169                @$result6881 = mysql_query($sql6881);
170        if (! @$data6881 =  spip_num_rows($result6881) AND spip_num_rows($result6881) < 1) {
171    // création de la table si elle n'existe pas
172                         $sql_create1 = "CREATE TABLE $Tjpk_groupes (
173                                    id_grpacces bigint(20) NOT NULL auto_increment,
174                                    nom varchar(30) NOT NULL default '',
175                                    description varchar(250) default NULL,
176                                    actif smallint(1) NOT NULL default '0',
177                                    proprio bigint(21) NOT NULL default '0',
178                                                                                                                                demande_acces tinyint(4) NOT NULL default '0',
179                            PRIMARY KEY  (id_grpacces),
180                            UNIQUE KEY nom (nom) )";
181                         @mysql_query($sql_create1);
182                         if (mysql_error() != '') {
183                                                $msg_text .= "<br />".mysql_error()." "._T('creation_table')." ".$Tjpk_groupes."\r\n";
184                                                $alerte = 1;
185                         }
186                         else {
187                                         $msg_text .= "<br />"._T('creation_table')." ".$Tjpk_groupes."\r\n";
188                         }
189                }
190               
191                $sql6882 = "SHOW TABLES LIKE '$Tjpk_groupes_auteurs'";
192                $result6882 = mysql_query($sql6882);
193        if (! @$data6882 =  spip_num_rows($result6882) AND spip_num_rows($result6882) < 1) {
194    // création de la table si elle n'existe pas
195                         $sql_create2 = "CREATE TABLE $Tjpk_groupes_auteurs (
196                                id_grpacces bigint(21) NOT NULL default '0',
197                                id_auteur bigint(21) NOT NULL default '0',
198                                id_ss_groupe bigint(21) NOT NULL default '0',
199                                sp_statut varchar(255) NOT NULL default '',
200                                dde_acces smallint(1) NOT NULL default '1',
201                                proprio bigint(21) NOT NULL default '0',
202                             UNIQUE KEY id_grp (id_grpacces,id_auteur,id_ss_groupe,sp_statut) )";
203                         @mysql_query($sql_create2);
204                         if (mysql_error() != '') {
205                                         $msg_text .= "<br />".mysql_error()."  "._T('creation_table')." ".$Tjpk_groupes_auteurs."\r\n";
206                                         $alerte = 1;
207                         }
208                         else {
209                                         $msg_text .= "<br />"._T('creation_table')." ".$Tjpk_groupes_auteurs."\r\n";
210                         }
211                }
212               
213               
214                $sql6883 = "SHOW TABLES LIKE '$Tjpk_groupes_acces'";
215                $result6883 = mysql_query($sql6883);
216        if (! @$data6883 =  spip_num_rows($result6883) AND spip_num_rows($result6883) < 1) {
217    // création de la table si elle n'existe pas
218                         $sql_create3 ="CREATE TABLE $Tjpk_groupes_acces (
219                                id_grpacces bigint(21) NOT NULL default '0',
220                                id_rubrique bigint(21) NOT NULL default '0',
221                                id_article bigint(21) default NULL,
222                                dtdb date default NULL,
223                                dtfn date default NULL,
224                                proprio bigint(21) NOT NULL default '0',
225                                                                                                                prive_public SMALLINT(6) NOT NULL default '0',
226                                                                                                               
227                              KEY id_grpacces (id_grpacces),
228                              KEY id_rubrique (id_rubrique),
229                              KEY id_article (id_article) )";
230                        @mysql_query($sql_create3);
231                        if (mysql_error() != '' ) {
232                                                $msg_text .= "<br />".mysql_error()." "._T('creation_table')." ".$Tjpk_groupes_acces."\r\n";
233                                                $alerte = 1;
234                         }
235                         else {
236                                         $msg_text .= "<br />"._T('creation_table')." ".$Tjpk_groupes_acces."\r\n";
237                         }
238                }
239                }
240                else {
241               
242          }       
243*/
244?>
Note: See TracBrowser for help on using the repository browser.