Completed
Push — spip-3.0 ( 77f3d0...1797f4 )
by cam
17:20 queued 08:11
created
ecrire/req/sqlite_generique.php 4 patches
Doc Comments   +30 added lines, -7 removed lines patch added patch discarded remove patch
@@ -854,6 +854,10 @@  discard block
 block discarded – undo
854 854
 
855 855
 
856 856
 // http://doc.spip.org/@spip_sqlite_insert
857
+/**
858
+ * @param string $champs
859
+ * @param string $valeurs
860
+ */
857 861
 function spip_sqlite_insert($table, $champs, $valeurs, $desc = '', $serveur = '', $requeter = true){
858 862
 
859 863
 	$query = "INSERT INTO $table ".($champs ? "$champs VALUES $valeurs" : "DEFAULT VALUES");
@@ -1136,8 +1140,6 @@  discard block
 block discarded – undo
1136 1140
 /**
1137 1141
  * Selectionne un fichier de base de donnees
1138 1142
  *
1139
- * @param string $nom
1140
- * 		Nom de la base a utiliser
1141 1143
  * @param string $serveur
1142 1144
  * 		Nom du connecteur
1143 1145
  * @param bool $requeter
@@ -1476,7 +1478,7 @@  discard block
 block discarded – undo
1476 1478
  * renvoie grosso modo "$expression join($join, $v)"
1477 1479
  * http://doc.spip.org/@_sqlite_calculer_expression
1478 1480
  *
1479
- * @param  $expression
1481
+ * @param  string $expression
1480 1482
  * @param  $v
1481 1483
  * @param string $join
1482 1484
  * @return string
@@ -1502,7 +1504,7 @@  discard block
 block discarded – undo
1502 1504
  * pour conversion 0+x ? (pas la peine en sqlite)
1503 1505
  * http://doc.spip.org/@_sqlite_calculer_order
1504 1506
  *
1505
- * @param  $orderby
1507
+ * @param  string $orderby
1506 1508
  * @return string
1507 1509
  */
1508 1510
 function _sqlite_calculer_order($orderby){
@@ -1611,7 +1613,6 @@  discard block
 block discarded – undo
1611 1613
  * http://doc.spip.org/@_sqlite_modifier_table
1612 1614
  *
1613 1615
  * @param string/array $table : nom_table, array(nom_table=>nom_futur)
1614
- * @param string/array $col : nom_colonne, array(nom_colonne=>nom_futur)
1615 1616
  * @param array $opt : options comme les tables spip, qui sera merge a la table creee : array('field'=>array('nom'=>'syntaxe', ...), 'key'=>array('KEY nom'=>'colonne', ...))
1616 1617
  * @param string $serveur : nom de la connexion sql en cours
1617 1618
  *
@@ -2062,32 +2063,50 @@  discard block
 block discarded – undo
2062 2063
 		return spip_sqlite::$requeteurs[$serveur];
2063 2064
 	}
2064 2065
 
2066
+	/**
2067
+	 * @param string $serveur
2068
+	 */
2065 2069
 	static function traduire_requete($query, $serveur){
2066 2070
 		$requeteur = spip_sqlite::requeteur($serveur);
2067 2071
 		$traducteur = new sqlite_traducteur($query, $requeteur->prefixe,$requeteur->sqlite_version);
2068 2072
 		return $traducteur->traduire_requete();
2069 2073
 	}
2070 2074
 
2075
+	/**
2076
+	 * @param string $serveur
2077
+	 */
2071 2078
 	static function demarrer_transaction($serveur){
2072 2079
 		spip_sqlite::executer_requete("BEGIN TRANSACTION",$serveur);
2073 2080
 		spip_sqlite::$transaction_en_cours[$serveur] = true;
2074 2081
 	}
2075 2082
 
2083
+	/**
2084
+	 * @param boolean $tracer
2085
+	 */
2076 2086
 	static function executer_requete($query, $serveur, $tracer=null){
2077 2087
 		$requeteur = spip_sqlite::requeteur($serveur);
2078 2088
 		return $requeteur->executer_requete($query, $tracer);
2079 2089
 	}
2080 2090
 
2091
+	/**
2092
+	 * @param string $serveur
2093
+	 */
2081 2094
 	static function last_insert_id($serveur){
2082 2095
 		$requeteur = spip_sqlite::requeteur($serveur);
2083 2096
 		return $requeteur->last_insert_id($serveur);
2084 2097
 	}
2085 2098
 
2099
+	/**
2100
+	 * @param string $serveur
2101
+	 */
2086 2102
 	static function annuler_transaction($serveur){
2087 2103
 		spip_sqlite::executer_requete("ROLLBACK",$serveur);
2088 2104
 		spip_sqlite::$transaction_en_cours[$serveur] = false;
2089 2105
 	}
2090 2106
 
2107
+	/**
2108
+	 * @param string $serveur
2109
+	 */
2091 2110
 	static function finir_transaction($serveur){
2092 2111
 		// si pas de transaction en cours, ne rien faire et le dire
2093 2112
 		if (!isset (spip_sqlite::$transaction_en_cours[$serveur])
@@ -2123,7 +2142,7 @@  discard block
 block discarded – undo
2123 2142
 	 *
2124 2143
 	 * @param  $query
2125 2144
 	 * @param string $serveur
2126
-	 * @return bool
2145
+	 * @return false|null
2127 2146
 	 */
2128 2147
 	function sqlite_requeteur($serveur = ''){
2129 2148
 		_sqlite_init();
@@ -2229,6 +2248,10 @@  discard block
 block discarded – undo
2229 2248
 	// Pour les corrections a effectuer sur les requetes :
2230 2249
 	var $textes = array(); // array(code=>'texte') trouvé
2231 2250
 
2251
+	/**
2252
+	 * @param string $prefixe
2253
+	 * @param string $sqlite_version
2254
+	 */
2232 2255
 	function sqlite_traducteur($query, $prefixe, $sqlite_version){
2233 2256
 		$this->query = $query;
2234 2257
 		$this->prefixe = $prefixe;
@@ -2242,7 +2265,7 @@  discard block
 block discarded – undo
2242 2265
 	 * la fonction affecte $this->query
2243 2266
 	 * http://doc.spip.org/@traduire_requete
2244 2267
 	 *
2245
-	 * @return void
2268
+	 * @return string
2246 2269
 	 */
2247 2270
 	function traduire_requete(){
2248 2271
 		//
Please login to merge, or discard this patch.
Indentation   +1699 added lines, -1699 removed lines patch added patch discarded remove patch
@@ -30,95 +30,95 @@  discard block
 block discarded – undo
30 30
  */
31 31
 // http://doc.spip.org/@req_sqlite_dist
32 32
 function req_sqlite_dist($addr, $port, $login, $pass, $db = '', $prefixe = '', $sqlite_version = ''){
33
-	static $last_connect = array();
34
-
35
-	// si provient de selectdb
36
-	// un code pour etre sur que l'on vient de select_db()
37
-	if (strpos($db, $code = '@selectdb@')!==false){
38
-		foreach (array('addr', 'port', 'login', 'pass', 'prefixe') as $a){
39
-			$$a = $last_connect[$a];
40
-		}
41
-		$db = str_replace($code, '', $db);
42
-	}
43
-
44
-	/*
33
+    static $last_connect = array();
34
+
35
+    // si provient de selectdb
36
+    // un code pour etre sur que l'on vient de select_db()
37
+    if (strpos($db, $code = '@selectdb@')!==false){
38
+        foreach (array('addr', 'port', 'login', 'pass', 'prefixe') as $a){
39
+            $$a = $last_connect[$a];
40
+        }
41
+        $db = str_replace($code, '', $db);
42
+    }
43
+
44
+    /*
45 45
 	 * En sqlite, seule l'adresse du fichier est importante.
46 46
 	 * Ce sera $db le nom,
47 47
 	 * le path est $addr
48 48
 	 * (_DIR_DB si $addr est vide)
49 49
 	 */
50
-	_sqlite_init();
51
-
52
-	// determiner le dossier de la base : $addr ou _DIR_DB
53
-	$f = _DIR_DB;
54
-	if ($addr AND strpos($addr, '/')!==false)
55
-		$f = rtrim($addr, '/').'/';
56
-
57
-	// un nom de base demande et impossible d'obtenir la base, on s'en va :
58
-	// il faut que la base existe ou que le repertoire parent soit writable
59
-	if ($db AND !is_file($f .= $db.'.sqlite') AND !is_writable(dirname($f))){
60
-		spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.'._LOG_HS);
61
-		return false;
62
-	}
63
-
64
-	// charger les modules sqlite au besoin
65
-	if (!_sqlite_charger_version($sqlite_version)){
66
-		spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.'._LOG_HS);
67
-		return false;
68
-	}
69
-
70
-	// chargement des constantes
71
-	// il ne faut pas definir les constantes avant d'avoir charge les modules sqlite
72
-	$define = "spip_sqlite".$sqlite_version."_constantes";
73
-	$define();
74
-
75
-	$ok = false;
76
-	if (!$db){
77
-		// si pas de db ->
78
-		// base temporaire tant qu'on ne connait pas son vrai nom
79
-		// pour tester la connexion
80
-		$db = "_sqlite".$sqlite_version."_install";
81
-		$tmp = _DIR_DB.$db.".sqlite";
82
-		if ($sqlite_version==3){
83
-			$ok = $link = new PDO("sqlite:$tmp");
84
-		} else {
85
-			$ok = $link = sqlite_open($tmp, _SQLITE_CHMOD, $err);
86
-		}
87
-	} else {
88
-		// Ouvrir (eventuellement creer la base)
89
-		// si pas de version fourni, on essaie la 3, sinon la 2
90
-		if ($sqlite_version==3){
91
-			$ok = $link = new PDO("sqlite:$f");
92
-		} else {
93
-			$ok = $link = sqlite_open($f, _SQLITE_CHMOD, $err);
94
-		}
95
-	}
96
-
97
-	if (!$ok){
98
-		$e = sqlite_last_error($db);
99
-		spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.'._LOG_HS);
100
-		return false;
101
-	}
102
-
103
-	if ($link){
104
-		$last_connect = array(
105
-			'addr' => $addr,
106
-			'port' => $port,
107
-			'login' => $login,
108
-			'pass' => $pass,
109
-			'db' => $db,
110
-			'prefixe' => $prefixe,
111
-		);
112
-		// etre sur qu'on definit bien les fonctions a chaque nouvelle connexion
113
-		include_spip('req/sqlite_fonctions');
114
-		_sqlite_init_functions($link);
115
-	}
116
-
117
-	return array(
118
-		'db' => $db,
119
-		'prefixe' => $prefixe ? $prefixe : $db,
120
-		'link' => $link,
121
-	);
50
+    _sqlite_init();
51
+
52
+    // determiner le dossier de la base : $addr ou _DIR_DB
53
+    $f = _DIR_DB;
54
+    if ($addr AND strpos($addr, '/')!==false)
55
+        $f = rtrim($addr, '/').'/';
56
+
57
+    // un nom de base demande et impossible d'obtenir la base, on s'en va :
58
+    // il faut que la base existe ou que le repertoire parent soit writable
59
+    if ($db AND !is_file($f .= $db.'.sqlite') AND !is_writable(dirname($f))){
60
+        spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.'._LOG_HS);
61
+        return false;
62
+    }
63
+
64
+    // charger les modules sqlite au besoin
65
+    if (!_sqlite_charger_version($sqlite_version)){
66
+        spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.'._LOG_HS);
67
+        return false;
68
+    }
69
+
70
+    // chargement des constantes
71
+    // il ne faut pas definir les constantes avant d'avoir charge les modules sqlite
72
+    $define = "spip_sqlite".$sqlite_version."_constantes";
73
+    $define();
74
+
75
+    $ok = false;
76
+    if (!$db){
77
+        // si pas de db ->
78
+        // base temporaire tant qu'on ne connait pas son vrai nom
79
+        // pour tester la connexion
80
+        $db = "_sqlite".$sqlite_version."_install";
81
+        $tmp = _DIR_DB.$db.".sqlite";
82
+        if ($sqlite_version==3){
83
+            $ok = $link = new PDO("sqlite:$tmp");
84
+        } else {
85
+            $ok = $link = sqlite_open($tmp, _SQLITE_CHMOD, $err);
86
+        }
87
+    } else {
88
+        // Ouvrir (eventuellement creer la base)
89
+        // si pas de version fourni, on essaie la 3, sinon la 2
90
+        if ($sqlite_version==3){
91
+            $ok = $link = new PDO("sqlite:$f");
92
+        } else {
93
+            $ok = $link = sqlite_open($f, _SQLITE_CHMOD, $err);
94
+        }
95
+    }
96
+
97
+    if (!$ok){
98
+        $e = sqlite_last_error($db);
99
+        spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.'._LOG_HS);
100
+        return false;
101
+    }
102
+
103
+    if ($link){
104
+        $last_connect = array(
105
+            'addr' => $addr,
106
+            'port' => $port,
107
+            'login' => $login,
108
+            'pass' => $pass,
109
+            'db' => $db,
110
+            'prefixe' => $prefixe,
111
+        );
112
+        // etre sur qu'on definit bien les fonctions a chaque nouvelle connexion
113
+        include_spip('req/sqlite_fonctions');
114
+        _sqlite_init_functions($link);
115
+    }
116
+
117
+    return array(
118
+        'db' => $db,
119
+        'prefixe' => $prefixe ? $prefixe : $db,
120
+        'link' => $link,
121
+    );
122 122
 }
123 123
 
124 124
 
@@ -137,11 +137,11 @@  discard block
 block discarded – undo
137 137
  * 		Resultat de la requete
138 138
  */
139 139
 function spip_sqlite_query($query, $serveur = '', $requeter = true){
140
-	#spip_log("spip_sqlite_query() > $query",'sqlite.'._LOG_DEBUG);
141
-	#_sqlite_init(); // fait la premiere fois dans spip_sqlite
142
-	$query = spip_sqlite::traduire_requete($query, $serveur);
143
-	if (!$requeter) return $query;
144
-	return spip_sqlite::executer_requete($query, $serveur);
140
+    #spip_log("spip_sqlite_query() > $query",'sqlite.'._LOG_DEBUG);
141
+    #_sqlite_init(); // fait la premiere fois dans spip_sqlite
142
+    $query = spip_sqlite::traduire_requete($query, $serveur);
143
+    if (!$requeter) return $query;
144
+    return spip_sqlite::executer_requete($query, $serveur);
145 145
 }
146 146
 
147 147
 
@@ -150,11 +150,11 @@  discard block
 block discarded – undo
150 150
 // http://doc.spip.org/@spip_sqlite_alter
151 151
 function spip_sqlite_alter($query, $serveur = '', $requeter = true){
152 152
 
153
-	$query = spip_sqlite_query("ALTER $query", $serveur, false);
154
-	// traduire la requete pour recuperer les bons noms de table
155
-	$query = spip_sqlite::traduire_requete($query, $serveur);
153
+    $query = spip_sqlite_query("ALTER $query", $serveur, false);
154
+    // traduire la requete pour recuperer les bons noms de table
155
+    $query = spip_sqlite::traduire_requete($query, $serveur);
156 156
 
157
-	/*
157
+    /*
158 158
 		 * la il faut faire les transformations
159 159
 		 * si ALTER TABLE x (DROP|CHANGE) y
160 160
 		 *
@@ -163,230 +163,230 @@  discard block
 block discarded – undo
163 163
 		 * 3) faire chaque requete independemment
164 164
 		 */
165 165
 
166
-	// 1
167
-	if (preg_match("/\s*(ALTER(\s*IGNORE)?\s*TABLE\s*([^\s]*))\s*(.*)?/is", $query, $regs)){
168
-		$debut = $regs[1];
169
-		$table = $regs[3];
170
-		$suite = $regs[4];
171
-	} else {
172
-		spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.'._LOG_ERREUR);
173
-		return false;
174
-	}
175
-
176
-	// 2
177
-	// il faudrait une regexp pour eviter de spliter ADD PRIMARY KEY (colA, colB)
178
-	// tout en cassant "ADD PRIMARY KEY (colA, colB), ADD INDEX (chose)"... en deux
179
-	// ou revoir l'api de sql_alter en creant un 
180
-	// sql_alter_table($table,array($actions));
181
-	$todo = explode(',', $suite);
182
-
183
-	// on remet les morceaux dechires ensembles... que c'est laid !
184
-	$todo2 = array();
185
-	$i = 0;
186
-	$ouverte = false;
187
-	while ($do = array_shift($todo)){
188
-		$todo2[$i] = isset($todo2[$i]) ? $todo2[$i].",".$do : $do;
189
-		$o = (false!==strpos($do, "("));
190
-		$f = (false!==strpos($do, ")"));
191
-		if ($o AND !$f) $ouverte = true;
192
-		elseif ($f) $ouverte = false;
193
-		if (!$ouverte) $i++;
194
-	}
195
-
196
-	// 3	
197
-	$resultats = array();
198
-	foreach ($todo2 as $do){
199
-		$do = trim($do);
200
-		if (!preg_match('/(DROP PRIMARY KEY|DROP KEY|DROP INDEX|DROP COLUMN|DROP'
201
-		                .'|CHANGE COLUMN|CHANGE|MODIFY|RENAME TO|RENAME'
202
-		                .'|ADD PRIMARY KEY|ADD KEY|ADD INDEX|ADD UNIQUE KEY|ADD UNIQUE'
203
-		                .'|ADD COLUMN|ADD'
204
-		                .')\s*([^\s]*)\s*(.*)?/i', $do, $matches)){
205
-			spip_log("SQLite : Probleme de ALTER TABLE, utilisation non reconnue dans : $do \n(requete d'origine : $query)", 'sqlite.'._LOG_ERREUR);
206
-			return false;
207
-		}
208
-
209
-		$cle = strtoupper($matches[1]);
210
-		$colonne_origine = $matches[2];
211
-		$colonne_destination = '';
212
-
213
-		$def = $matches[3];
214
-
215
-		// eluder une eventuelle clause before|after|first inutilisable
216
-		$defr = rtrim(preg_replace('/(BEFORE|AFTER|FIRST)(.*)$/is', '', $def));
217
-		$defo = $defr; // garder la def d'origine pour certains cas
218
-		// remplacer les definitions venant de mysql
219
-		$defr = _sqlite_remplacements_definitions_table($defr);
220
-
221
-		// reinjecter dans le do
222
-		$do = str_replace($def, $defr, $do);
223
-		$def = $defr;
224
-
225
-		switch ($cle) {
226
-			// suppression d'un index
227
-			case 'DROP KEY':
228
-			case 'DROP INDEX':
229
-				$nom_index = $colonne_origine;
230
-				spip_sqlite_drop_index($nom_index, $table, $serveur);
231
-				break;
232
-
233
-			// suppression d'une pk
234
-			case 'DROP PRIMARY KEY':
235
-				if (!_sqlite_modifier_table(
236
-					$table,
237
-					$colonne_origine,
238
-					array('key' => array('PRIMARY KEY' => '')),
239
-					$serveur)){
240
-					return false;
241
-				}
242
-				break;
243
-			// suppression d'une colonne
244
-			case 'DROP COLUMN':
245
-			case 'DROP':
246
-				if (!_sqlite_modifier_table(
247
-					$table,
248
-					array($colonne_origine => ""),
249
-					'',
250
-					$serveur)){
251
-					return false;
252
-				}
253
-				break;
254
-
255
-			case 'CHANGE COLUMN':
256
-			case 'CHANGE':
257
-				// recuperer le nom de la future colonne
258
-			  // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation
259
-			  // en tenant compte de la cle primaire (ce qui est mieux)
260
-				$def = trim($defo);
261
-				$colonne_destination = substr($def, 0, strpos($def, ' '));
262
-				$def = substr($def, strlen($colonne_destination)+1);
263
-
264
-				if (!_sqlite_modifier_table(
265
-					$table,
266
-					array($colonne_origine => $colonne_destination),
267
-					array('field' => array($colonne_destination => $def)),
268
-					$serveur)){
269
-					return false;
270
-				}
271
-				break;
272
-
273
-			case 'MODIFY':
274
-			  // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation
275
-			  // en tenant compte de la cle primaire (ce qui est mieux)
276
-				if (!_sqlite_modifier_table(
277
-					$table,
278
-					$colonne_origine,
279
-					array('field' => array($colonne_origine => $defo)),
280
-					$serveur)){
281
-					return false;
282
-				}
283
-				break;
284
-
285
-			// pas geres en sqlite2
286
-			case 'RENAME':
287
-				$do = "RENAME TO".substr($do, 6);
288
-			case 'RENAME TO':
289
-				if (_sqlite_is_version(3, '', $serveur)){
290
-					if (!spip_sqlite::executer_requete("$debut $do", $serveur)){
291
-						spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.'._LOG_ERREUR);
292
-						return false;
293
-					}
294
-					// artillerie lourde pour sqlite2 !
295
-				} else {
296
-					$table_dest = trim(substr($do, 9));
297
-					if (!_sqlite_modifier_table(array($table => $table_dest), '', '', $serveur)){
298
-						spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.'._LOG_ERREUR);
299
-						return false;
300
-					}
301
-				}
302
-				break;
303
-
304
-			// ajout d'une pk
305
-			case 'ADD PRIMARY KEY':
306
-				$pk = trim(substr($do, 16));
307
-				$pk = ($pk[0]=='(') ? substr($pk, 1, -1) : $pk;
308
-				if (!_sqlite_modifier_table(
309
-					$table,
310
-					$colonne_origine,
311
-					array('key' => array('PRIMARY KEY' => $pk)),
312
-					$serveur)){
313
-					return false;
314
-				}
315
-				break;
316
-			// ajout d'un index
317
-			case 'ADD UNIQUE KEY':
318
-			case 'ADD UNIQUE':
319
-				$unique=true;
320
-			case 'ADD INDEX':
321
-			case 'ADD KEY':
322
-				// peut etre "(colonne)" ou "nom_index (colonnes)"
323
-				// bug potentiel si qqn met "(colonne, colonne)"
324
-				//
325
-				// nom_index (colonnes)
326
-				if ($def){
327
-					$colonnes = substr($def, 1, -1);
328
-					$nom_index = $colonne_origine;
329
-				}
330
-				else {
331
-					// (colonne)
332
-					if ($colonne_origine[0]=="("){
333
-						$colonnes = substr($colonne_origine, 1, -1);
334
-						if (false!==strpos(",", $colonnes)){
335
-							spip_log(_LOG_GRAVITE_ERREUR, "SQLite : Erreur, impossible de creer un index sur plusieurs colonnes"
336
-							                              ." sans qu'il ait de nom ($table, ($colonnes))", 'sqlite');
337
-							break;
338
-						} else {
339
-							$nom_index = $colonnes;
340
-						}
341
-					}
342
-						// nom_index
343
-					else {
344
-						$nom_index = $colonnes = $colonne_origine;
345
-					}
346
-				}
347
-				spip_sqlite_create_index($nom_index, $table, $colonnes, $unique, $serveur);
348
-				break;
349
-
350
-			// pas geres en sqlite2
351
-			case 'ADD COLUMN':
352
-				$do = "ADD".substr($do, 10);
353
-			case 'ADD':
354
-			default:
355
-				if (_sqlite_is_version(3, '', $serveur) AND !preg_match(',primary\s+key,i',$do)){
356
-					if (!spip_sqlite::executer_requete("$debut $do", $serveur)){
357
-						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR);
358
-						return false;
359
-					}
360
-					break;
361
-
362
-				}
363
-				// artillerie lourde pour sqlite2 !
364
-				// ou si la colonne est aussi primary key
365
-				// cas du add id_truc int primary key
366
-				// ajout d'une colonne qui passe en primary key directe
367
-				else {
368
-					$def = trim(substr($do, 3));
369
-					$colonne_ajoutee = substr($def, 0, strpos($def, ' '));
370
-					$def = substr($def, strlen($colonne_ajoutee)+1);
371
-					$opts = array();
372
-					if (preg_match(',primary\s+key,i',$def)){
373
-						$opts['key'] = array('PRIMARY KEY' => $colonne_ajoutee);
374
-						$def = preg_replace(',primary\s+key,i','',$def);
375
-					}
376
-					$opts['field'] = array($colonne_ajoutee => $def);
377
-					if (!_sqlite_modifier_table($table, array($colonne_ajoutee), $opts, $serveur)){
378
-						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR);
379
-						return false;
380
-					}
381
-				}
382
-				break;
383
-		}
384
-		// tout est bon, ouf !
385
-		spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.'._LOG_INFO);
386
-	}
387
-
388
-	spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.'._LOG_INFO);
389
-	return true;
166
+    // 1
167
+    if (preg_match("/\s*(ALTER(\s*IGNORE)?\s*TABLE\s*([^\s]*))\s*(.*)?/is", $query, $regs)){
168
+        $debut = $regs[1];
169
+        $table = $regs[3];
170
+        $suite = $regs[4];
171
+    } else {
172
+        spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.'._LOG_ERREUR);
173
+        return false;
174
+    }
175
+
176
+    // 2
177
+    // il faudrait une regexp pour eviter de spliter ADD PRIMARY KEY (colA, colB)
178
+    // tout en cassant "ADD PRIMARY KEY (colA, colB), ADD INDEX (chose)"... en deux
179
+    // ou revoir l'api de sql_alter en creant un 
180
+    // sql_alter_table($table,array($actions));
181
+    $todo = explode(',', $suite);
182
+
183
+    // on remet les morceaux dechires ensembles... que c'est laid !
184
+    $todo2 = array();
185
+    $i = 0;
186
+    $ouverte = false;
187
+    while ($do = array_shift($todo)){
188
+        $todo2[$i] = isset($todo2[$i]) ? $todo2[$i].",".$do : $do;
189
+        $o = (false!==strpos($do, "("));
190
+        $f = (false!==strpos($do, ")"));
191
+        if ($o AND !$f) $ouverte = true;
192
+        elseif ($f) $ouverte = false;
193
+        if (!$ouverte) $i++;
194
+    }
195
+
196
+    // 3	
197
+    $resultats = array();
198
+    foreach ($todo2 as $do){
199
+        $do = trim($do);
200
+        if (!preg_match('/(DROP PRIMARY KEY|DROP KEY|DROP INDEX|DROP COLUMN|DROP'
201
+                        .'|CHANGE COLUMN|CHANGE|MODIFY|RENAME TO|RENAME'
202
+                        .'|ADD PRIMARY KEY|ADD KEY|ADD INDEX|ADD UNIQUE KEY|ADD UNIQUE'
203
+                        .'|ADD COLUMN|ADD'
204
+                        .')\s*([^\s]*)\s*(.*)?/i', $do, $matches)){
205
+            spip_log("SQLite : Probleme de ALTER TABLE, utilisation non reconnue dans : $do \n(requete d'origine : $query)", 'sqlite.'._LOG_ERREUR);
206
+            return false;
207
+        }
208
+
209
+        $cle = strtoupper($matches[1]);
210
+        $colonne_origine = $matches[2];
211
+        $colonne_destination = '';
212
+
213
+        $def = $matches[3];
214
+
215
+        // eluder une eventuelle clause before|after|first inutilisable
216
+        $defr = rtrim(preg_replace('/(BEFORE|AFTER|FIRST)(.*)$/is', '', $def));
217
+        $defo = $defr; // garder la def d'origine pour certains cas
218
+        // remplacer les definitions venant de mysql
219
+        $defr = _sqlite_remplacements_definitions_table($defr);
220
+
221
+        // reinjecter dans le do
222
+        $do = str_replace($def, $defr, $do);
223
+        $def = $defr;
224
+
225
+        switch ($cle) {
226
+            // suppression d'un index
227
+            case 'DROP KEY':
228
+            case 'DROP INDEX':
229
+                $nom_index = $colonne_origine;
230
+                spip_sqlite_drop_index($nom_index, $table, $serveur);
231
+                break;
232
+
233
+            // suppression d'une pk
234
+            case 'DROP PRIMARY KEY':
235
+                if (!_sqlite_modifier_table(
236
+                    $table,
237
+                    $colonne_origine,
238
+                    array('key' => array('PRIMARY KEY' => '')),
239
+                    $serveur)){
240
+                    return false;
241
+                }
242
+                break;
243
+            // suppression d'une colonne
244
+            case 'DROP COLUMN':
245
+            case 'DROP':
246
+                if (!_sqlite_modifier_table(
247
+                    $table,
248
+                    array($colonne_origine => ""),
249
+                    '',
250
+                    $serveur)){
251
+                    return false;
252
+                }
253
+                break;
254
+
255
+            case 'CHANGE COLUMN':
256
+            case 'CHANGE':
257
+                // recuperer le nom de la future colonne
258
+              // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation
259
+              // en tenant compte de la cle primaire (ce qui est mieux)
260
+                $def = trim($defo);
261
+                $colonne_destination = substr($def, 0, strpos($def, ' '));
262
+                $def = substr($def, strlen($colonne_destination)+1);
263
+
264
+                if (!_sqlite_modifier_table(
265
+                    $table,
266
+                    array($colonne_origine => $colonne_destination),
267
+                    array('field' => array($colonne_destination => $def)),
268
+                    $serveur)){
269
+                    return false;
270
+                }
271
+                break;
272
+
273
+            case 'MODIFY':
274
+              // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation
275
+              // en tenant compte de la cle primaire (ce qui est mieux)
276
+                if (!_sqlite_modifier_table(
277
+                    $table,
278
+                    $colonne_origine,
279
+                    array('field' => array($colonne_origine => $defo)),
280
+                    $serveur)){
281
+                    return false;
282
+                }
283
+                break;
284
+
285
+            // pas geres en sqlite2
286
+            case 'RENAME':
287
+                $do = "RENAME TO".substr($do, 6);
288
+            case 'RENAME TO':
289
+                if (_sqlite_is_version(3, '', $serveur)){
290
+                    if (!spip_sqlite::executer_requete("$debut $do", $serveur)){
291
+                        spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.'._LOG_ERREUR);
292
+                        return false;
293
+                    }
294
+                    // artillerie lourde pour sqlite2 !
295
+                } else {
296
+                    $table_dest = trim(substr($do, 9));
297
+                    if (!_sqlite_modifier_table(array($table => $table_dest), '', '', $serveur)){
298
+                        spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.'._LOG_ERREUR);
299
+                        return false;
300
+                    }
301
+                }
302
+                break;
303
+
304
+            // ajout d'une pk
305
+            case 'ADD PRIMARY KEY':
306
+                $pk = trim(substr($do, 16));
307
+                $pk = ($pk[0]=='(') ? substr($pk, 1, -1) : $pk;
308
+                if (!_sqlite_modifier_table(
309
+                    $table,
310
+                    $colonne_origine,
311
+                    array('key' => array('PRIMARY KEY' => $pk)),
312
+                    $serveur)){
313
+                    return false;
314
+                }
315
+                break;
316
+            // ajout d'un index
317
+            case 'ADD UNIQUE KEY':
318
+            case 'ADD UNIQUE':
319
+                $unique=true;
320
+            case 'ADD INDEX':
321
+            case 'ADD KEY':
322
+                // peut etre "(colonne)" ou "nom_index (colonnes)"
323
+                // bug potentiel si qqn met "(colonne, colonne)"
324
+                //
325
+                // nom_index (colonnes)
326
+                if ($def){
327
+                    $colonnes = substr($def, 1, -1);
328
+                    $nom_index = $colonne_origine;
329
+                }
330
+                else {
331
+                    // (colonne)
332
+                    if ($colonne_origine[0]=="("){
333
+                        $colonnes = substr($colonne_origine, 1, -1);
334
+                        if (false!==strpos(",", $colonnes)){
335
+                            spip_log(_LOG_GRAVITE_ERREUR, "SQLite : Erreur, impossible de creer un index sur plusieurs colonnes"
336
+                                                            ." sans qu'il ait de nom ($table, ($colonnes))", 'sqlite');
337
+                            break;
338
+                        } else {
339
+                            $nom_index = $colonnes;
340
+                        }
341
+                    }
342
+                        // nom_index
343
+                    else {
344
+                        $nom_index = $colonnes = $colonne_origine;
345
+                    }
346
+                }
347
+                spip_sqlite_create_index($nom_index, $table, $colonnes, $unique, $serveur);
348
+                break;
349
+
350
+            // pas geres en sqlite2
351
+            case 'ADD COLUMN':
352
+                $do = "ADD".substr($do, 10);
353
+            case 'ADD':
354
+            default:
355
+                if (_sqlite_is_version(3, '', $serveur) AND !preg_match(',primary\s+key,i',$do)){
356
+                    if (!spip_sqlite::executer_requete("$debut $do", $serveur)){
357
+                        spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR);
358
+                        return false;
359
+                    }
360
+                    break;
361
+
362
+                }
363
+                // artillerie lourde pour sqlite2 !
364
+                // ou si la colonne est aussi primary key
365
+                // cas du add id_truc int primary key
366
+                // ajout d'une colonne qui passe en primary key directe
367
+                else {
368
+                    $def = trim(substr($do, 3));
369
+                    $colonne_ajoutee = substr($def, 0, strpos($def, ' '));
370
+                    $def = substr($def, strlen($colonne_ajoutee)+1);
371
+                    $opts = array();
372
+                    if (preg_match(',primary\s+key,i',$def)){
373
+                        $opts['key'] = array('PRIMARY KEY' => $colonne_ajoutee);
374
+                        $def = preg_replace(',primary\s+key,i','',$def);
375
+                    }
376
+                    $opts['field'] = array($colonne_ajoutee => $def);
377
+                    if (!_sqlite_modifier_table($table, array($colonne_ajoutee), $opts, $serveur)){
378
+                        spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR);
379
+                        return false;
380
+                    }
381
+                }
382
+                break;
383
+        }
384
+        // tout est bon, ouf !
385
+        spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.'._LOG_INFO);
386
+    }
387
+
388
+    spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.'._LOG_INFO);
389
+    return true;
390 390
 }
391 391
 
392 392
 
@@ -404,25 +404,25 @@  discard block
 block discarded – undo
404 404
  * @return bool|SQLiteResult|string
405 405
  */
406 406
 function spip_sqlite_create($nom, $champs, $cles, $autoinc = false, $temporary = false, $serveur = '', $requeter = true){
407
-	$query = _sqlite_requete_create($nom, $champs, $cles, $autoinc, $temporary, $ifnotexists = true, $serveur, $requeter);
408
-	if (!$query) return false;
409
-	$res = spip_sqlite_query($query, $serveur, $requeter);
410
-
411
-	// SQLite ne cree pas les KEY sur les requetes CREATE TABLE
412
-	// il faut donc les faire creer ensuite
413
-	if (!$requeter) return $res;
414
-
415
-	$ok = $res ? true : false;
416
-	if ($ok){
417
-		foreach ($cles as $k => $v){
418
-			if (preg_match(',^(KEY|UNIQUE)\s,i',$k,$m)){
419
-				$index = trim(substr($k,strlen($m[1])));
420
-				$unique = (strlen($m[1])>3);
421
-				$ok &= spip_sqlite_create_index($index, $nom, $v, $unique, $serveur);
422
-			}
423
-		}
424
-	}
425
-	return $ok ? true : false;
407
+    $query = _sqlite_requete_create($nom, $champs, $cles, $autoinc, $temporary, $ifnotexists = true, $serveur, $requeter);
408
+    if (!$query) return false;
409
+    $res = spip_sqlite_query($query, $serveur, $requeter);
410
+
411
+    // SQLite ne cree pas les KEY sur les requetes CREATE TABLE
412
+    // il faut donc les faire creer ensuite
413
+    if (!$requeter) return $res;
414
+
415
+    $ok = $res ? true : false;
416
+    if ($ok){
417
+        foreach ($cles as $k => $v){
418
+            if (preg_match(',^(KEY|UNIQUE)\s,i',$k,$m)){
419
+                $index = trim(substr($k,strlen($m[1])));
420
+                $unique = (strlen($m[1])>3);
421
+                $ok &= spip_sqlite_create_index($index, $nom, $v, $unique, $serveur);
422
+            }
423
+        }
424
+    }
425
+    return $ok ? true : false;
426 426
 }
427 427
 
428 428
 /**
@@ -435,20 +435,20 @@  discard block
 block discarded – undo
435 435
  * @return bool true si la base est creee.
436 436
  **/
437 437
 function spip_sqlite_create_base($nom, $serveur = '', $option = true){
438
-	$f = $nom.'.sqlite';
439
-	if (strpos($nom, "/")===false)
440
-		$f = _DIR_DB.$f;
441
-	if (_sqlite_is_version(2, '', $serveur)){
442
-		$ok = sqlite_open($f, _SQLITE_CHMOD, $err);
443
-	} else {
444
-		$ok = new PDO("sqlite:$f");
445
-	}
446
-	if ($ok){
447
-		unset($ok);
448
-		return true;
449
-	}
450
-	unset($ok);
451
-	return false;
438
+    $f = $nom.'.sqlite';
439
+    if (strpos($nom, "/")===false)
440
+        $f = _DIR_DB.$f;
441
+    if (_sqlite_is_version(2, '', $serveur)){
442
+        $ok = sqlite_open($f, _SQLITE_CHMOD, $err);
443
+    } else {
444
+        $ok = new PDO("sqlite:$f");
445
+    }
446
+    if ($ok){
447
+        unset($ok);
448
+        return true;
449
+    }
450
+    unset($ok);
451
+    return false;
452 452
 }
453 453
 
454 454
 
@@ -472,15 +472,15 @@  discard block
 block discarded – undo
472 472
  * 		- string texte de la requete si $requeter vaut false
473 473
  */
474 474
 function spip_sqlite_create_view($nom, $query_select, $serveur = '', $requeter = true){
475
-	if (!$query_select) return false;
476
-	// vue deja presente
477
-	if (sql_showtable($nom, false, $serveur)){
478
-		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", 'sqlite.'._LOG_ERREUR);
479
-		return false;
480
-	}
481
-
482
-	$query = "CREATE VIEW $nom AS ".$query_select;
483
-	return spip_sqlite_query($query, $serveur, $requeter);
475
+    if (!$query_select) return false;
476
+    // vue deja presente
477
+    if (sql_showtable($nom, false, $serveur)){
478
+        spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", 'sqlite.'._LOG_ERREUR);
479
+        return false;
480
+    }
481
+
482
+    $query = "CREATE VIEW $nom AS ".$query_select;
483
+    return spip_sqlite_query($query, $serveur, $requeter);
484 484
 }
485 485
 
486 486
 /**
@@ -495,41 +495,41 @@  discard block
 block discarded – undo
495 495
  * @return bool ou requete
496 496
  */
497 497
 function spip_sqlite_create_index($nom, $table, $champs, $unique='', $serveur = '', $requeter = true){
498
-	if (!($nom OR $table OR $champs)){
499
-		spip_log("Champ manquant pour creer un index sqlite ($nom, $table, (".join(',', $champs)."))", 'sqlite.'._LOG_ERREUR);
500
-		return false;
501
-	}
502
-
503
-	// SQLite ne differentie pas noms des index en fonction des tables
504
-	// il faut donc creer des noms uniques d'index pour une base sqlite
505
-	$nom = $table.'_'.$nom;
506
-	// enlever d'eventuelles parentheses deja presentes sur champs
507
-	if (!is_array($champs)){
508
-		if ($champs[0]=="(") $champs = substr($champs, 1, -1);
509
-		$champs = array($champs);
510
-		// supprimer l'info de longueur d'index mysql en fin de champ
511
-		$champs = preg_replace(",\(\d+\)$,","",$champs);
512
-	}
513
-
514
-	$ifnotexists = "";
515
-	$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur);
516
-	if (!function_exists('spip_version_compare')) include_spip('plugins/installer');
517
-
518
-	if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) {
519
-		$ifnotexists = ' IF NOT EXISTS';
520
-	} else {
521
-		/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
522
-		$a = spip_sqlite_showtable($table, $serveur);
523
-		if (isset($a['key']['KEY '.$nom])) return true;
524
-	}
525
-
526
-	$query = "CREATE ".($unique?"UNIQUE ":"")."INDEX$ifnotexists $nom ON $table (".join(',', $champs).")";
527
-	$res = spip_sqlite_query($query, $serveur, $requeter);
528
-	if (!$requeter) return $res;
529
-	if ($res)
530
-		return true;
531
-	else
532
-		return false;
498
+    if (!($nom OR $table OR $champs)){
499
+        spip_log("Champ manquant pour creer un index sqlite ($nom, $table, (".join(',', $champs)."))", 'sqlite.'._LOG_ERREUR);
500
+        return false;
501
+    }
502
+
503
+    // SQLite ne differentie pas noms des index en fonction des tables
504
+    // il faut donc creer des noms uniques d'index pour une base sqlite
505
+    $nom = $table.'_'.$nom;
506
+    // enlever d'eventuelles parentheses deja presentes sur champs
507
+    if (!is_array($champs)){
508
+        if ($champs[0]=="(") $champs = substr($champs, 1, -1);
509
+        $champs = array($champs);
510
+        // supprimer l'info de longueur d'index mysql en fin de champ
511
+        $champs = preg_replace(",\(\d+\)$,","",$champs);
512
+    }
513
+
514
+    $ifnotexists = "";
515
+    $version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur);
516
+    if (!function_exists('spip_version_compare')) include_spip('plugins/installer');
517
+
518
+    if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) {
519
+        $ifnotexists = ' IF NOT EXISTS';
520
+    } else {
521
+        /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
522
+        $a = spip_sqlite_showtable($table, $serveur);
523
+        if (isset($a['key']['KEY '.$nom])) return true;
524
+    }
525
+
526
+    $query = "CREATE ".($unique?"UNIQUE ":"")."INDEX$ifnotexists $nom ON $table (".join(',', $champs).")";
527
+    $res = spip_sqlite_query($query, $serveur, $requeter);
528
+    if (!$requeter) return $res;
529
+    if ($res)
530
+        return true;
531
+    else
532
+        return false;
533 533
 }
534 534
 
535 535
 /**
@@ -544,90 +544,90 @@  discard block
 block discarded – undo
544 544
  * @return int
545 545
  */
546 546
 function spip_sqlite_count($r, $serveur = '', $requeter = true){
547
-	if (!$r) return 0;
548
-
549
-	if (_sqlite_is_version(3, '', $serveur)){
550
-		// select ou autre (insert, update,...) ?
551
-
552
-		// (link,requete) a compter
553
-		if (is_array($r->spipSqliteRowCount)){
554
-			list($link,$query) = $r->spipSqliteRowCount;
555
-			// amelioration possible a tester intensivement : pas de order by pour compter !
556
-			// $query = preg_replace(",ORDER BY .+(LIMIT\s|HAVING\s|GROUP BY\s|$),Uims","\\1",$query);
557
-			$query = "SELECT count(*) as zzzzsqlitecount FROM ($query)";
558
-			$l = $link->query($query);
559
-			$i = 0;
560
-			if ($l AND $z = $l->fetch())
561
-				$i = $z['zzzzsqlitecount'];
562
-			$r->spipSqliteRowCount = $i;
563
-		}
564
-		if (isset($r->spipSqliteRowCount)){
565
-			// Ce compte est faux s'il y a des limit dans la requete :(
566
-			// il retourne le nombre d'enregistrements sans le limit
567
-			return $r->spipSqliteRowCount;
568
-		} else {
569
-			return $r->rowCount();
570
-		}
571
-	} else {
572
-		return sqlite_num_rows($r);
573
-	}
547
+    if (!$r) return 0;
548
+
549
+    if (_sqlite_is_version(3, '', $serveur)){
550
+        // select ou autre (insert, update,...) ?
551
+
552
+        // (link,requete) a compter
553
+        if (is_array($r->spipSqliteRowCount)){
554
+            list($link,$query) = $r->spipSqliteRowCount;
555
+            // amelioration possible a tester intensivement : pas de order by pour compter !
556
+            // $query = preg_replace(",ORDER BY .+(LIMIT\s|HAVING\s|GROUP BY\s|$),Uims","\\1",$query);
557
+            $query = "SELECT count(*) as zzzzsqlitecount FROM ($query)";
558
+            $l = $link->query($query);
559
+            $i = 0;
560
+            if ($l AND $z = $l->fetch())
561
+                $i = $z['zzzzsqlitecount'];
562
+            $r->spipSqliteRowCount = $i;
563
+        }
564
+        if (isset($r->spipSqliteRowCount)){
565
+            // Ce compte est faux s'il y a des limit dans la requete :(
566
+            // il retourne le nombre d'enregistrements sans le limit
567
+            return $r->spipSqliteRowCount;
568
+        } else {
569
+            return $r->rowCount();
570
+        }
571
+    } else {
572
+        return sqlite_num_rows($r);
573
+    }
574 574
 }
575 575
 
576 576
 
577 577
 // http://doc.spip.org/@spip_sqlite_countsel
578 578
 function spip_sqlite_countsel($from = array(), $where = array(), $groupby = '', $having = array(), $serveur = '', $requeter = true){
579
-	$c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby)));
580
-	$r = spip_sqlite_select("COUNT($c)", $from, $where, '', '', '',
581
-	                        $having, $serveur, $requeter);
582
-	if ((is_resource($r) or is_object($r)) && $requeter){ // ressource : sqlite2, object : sqlite3
583
-		if (_sqlite_is_version(3, '', $serveur)){
584
-			list($r) = spip_sqlite_fetch($r, SPIP_SQLITE3_NUM, $serveur);
585
-		} else {
586
-			list($r) = spip_sqlite_fetch($r, SPIP_SQLITE2_NUM, $serveur);
587
-		}
588
-
589
-	}
590
-	return $r;
579
+    $c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby)));
580
+    $r = spip_sqlite_select("COUNT($c)", $from, $where, '', '', '',
581
+                            $having, $serveur, $requeter);
582
+    if ((is_resource($r) or is_object($r)) && $requeter){ // ressource : sqlite2, object : sqlite3
583
+        if (_sqlite_is_version(3, '', $serveur)){
584
+            list($r) = spip_sqlite_fetch($r, SPIP_SQLITE3_NUM, $serveur);
585
+        } else {
586
+            list($r) = spip_sqlite_fetch($r, SPIP_SQLITE2_NUM, $serveur);
587
+        }
588
+
589
+    }
590
+    return $r;
591 591
 }
592 592
 
593 593
 
594 594
 // http://doc.spip.org/@spip_sqlite_delete
595 595
 function spip_sqlite_delete($table, $where = '', $serveur = '', $requeter = true){
596
-	$res = spip_sqlite_query(
597
-		_sqlite_calculer_expression('DELETE FROM', $table, ',')
598
-		._sqlite_calculer_expression('WHERE', $where),
599
-		$serveur, $requeter);
600
-
601
-	// renvoyer la requete inerte si demandee
602
-	if (!$requeter) return $res;
603
-
604
-	if ($res){
605
-		$link = _sqlite_link($serveur);
606
-		if (_sqlite_is_version(3, $link)){
607
-			return $res->rowCount();
608
-		} else {
609
-			return sqlite_changes($link);
610
-		}
611
-	}
612
-	else
613
-		return false;
596
+    $res = spip_sqlite_query(
597
+        _sqlite_calculer_expression('DELETE FROM', $table, ',')
598
+        ._sqlite_calculer_expression('WHERE', $where),
599
+        $serveur, $requeter);
600
+
601
+    // renvoyer la requete inerte si demandee
602
+    if (!$requeter) return $res;
603
+
604
+    if ($res){
605
+        $link = _sqlite_link($serveur);
606
+        if (_sqlite_is_version(3, $link)){
607
+            return $res->rowCount();
608
+        } else {
609
+            return sqlite_changes($link);
610
+        }
611
+    }
612
+    else
613
+        return false;
614 614
 }
615 615
 
616 616
 
617 617
 // http://doc.spip.org/@spip_sqlite_drop_table
618 618
 function spip_sqlite_drop_table($table, $exist = '', $serveur = '', $requeter = true){
619
-	if ($exist) $exist = " IF EXISTS";
620
-
621
-	/* simuler le IF EXISTS - version 2 */
622
-	if ($exist && _sqlite_is_version(2, '', $serveur)){
623
-		$a = spip_sqlite_showtable($table, $serveur);
624
-		if (!$a) return true;
625
-		$exist = '';
626
-	}
627
-	if (spip_sqlite_query("DROP TABLE$exist $table", $serveur, $requeter))
628
-		return true;
629
-	else
630
-		return false;
619
+    if ($exist) $exist = " IF EXISTS";
620
+
621
+    /* simuler le IF EXISTS - version 2 */
622
+    if ($exist && _sqlite_is_version(2, '', $serveur)){
623
+        $a = spip_sqlite_showtable($table, $serveur);
624
+        if (!$a) return true;
625
+        $exist = '';
626
+    }
627
+    if (spip_sqlite_query("DROP TABLE$exist $table", $serveur, $requeter))
628
+        return true;
629
+    else
630
+        return false;
631 631
 }
632 632
 
633 633
 /**
@@ -641,16 +641,16 @@  discard block
 block discarded – undo
641 641
  * @return bool|SQLiteResult|string
642 642
  */
643 643
 function spip_sqlite_drop_view($view, $exist = '', $serveur = '', $requeter = true){
644
-	if ($exist) $exist = " IF EXISTS";
644
+    if ($exist) $exist = " IF EXISTS";
645 645
 
646
-	/* simuler le IF EXISTS - version 2 */
647
-	if ($exist && _sqlite_is_version(2, '', $serveur)){
648
-		$a = spip_sqlite_showtable($view, $serveur);
649
-		if (!$a) return true;
650
-		$exist = '';
651
-	}
646
+    /* simuler le IF EXISTS - version 2 */
647
+    if ($exist && _sqlite_is_version(2, '', $serveur)){
648
+        $a = spip_sqlite_showtable($view, $serveur);
649
+        if (!$a) return true;
650
+        $exist = '';
651
+    }
652 652
 
653
-	return spip_sqlite_query("DROP VIEW$exist $view", $serveur, $requeter);
653
+    return spip_sqlite_query("DROP VIEW$exist $view", $serveur, $requeter);
654 654
 }
655 655
 
656 656
 /**
@@ -664,25 +664,25 @@  discard block
 block discarded – undo
664 664
  * @return bool ou requete
665 665
  */
666 666
 function spip_sqlite_drop_index($nom, $table, $serveur = '', $requeter = true){
667
-	if (!($nom OR $table)){
668
-		spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.'._LOG_ERREUR);
669
-		return false;
670
-	}
671
-
672
-	// SQLite ne differentie pas noms des index en fonction des tables
673
-	// il faut donc creer des noms uniques d'index pour une base sqlite
674
-	$index = $table.'_'.$nom;
675
-	$exist = " IF EXISTS";
676
-
677
-	/* simuler le IF EXISTS - version 2 */
678
-	if (_sqlite_is_version(2, '', $serveur)){
679
-		$a = spip_sqlite_showtable($table, $serveur);
680
-		if (!isset($a['key']['KEY '.$nom])) return true;
681
-		$exist = '';
682
-	}
683
-
684
-	$query = "DROP INDEX$exist $index";
685
-	return spip_sqlite_query($query, $serveur, $requeter);
667
+    if (!($nom OR $table)){
668
+        spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.'._LOG_ERREUR);
669
+        return false;
670
+    }
671
+
672
+    // SQLite ne differentie pas noms des index en fonction des tables
673
+    // il faut donc creer des noms uniques d'index pour une base sqlite
674
+    $index = $table.'_'.$nom;
675
+    $exist = " IF EXISTS";
676
+
677
+    /* simuler le IF EXISTS - version 2 */
678
+    if (_sqlite_is_version(2, '', $serveur)){
679
+        $a = spip_sqlite_showtable($table, $serveur);
680
+        if (!isset($a['key']['KEY '.$nom])) return true;
681
+        $exist = '';
682
+    }
683
+
684
+    $query = "DROP INDEX$exist $index";
685
+    return spip_sqlite_query($query, $serveur, $requeter);
686 686
 }
687 687
 
688 688
 /**
@@ -694,11 +694,11 @@  discard block
 block discarded – undo
694 694
  * 		erreur eventuelle
695 695
  **/
696 696
 function spip_sqlite_error($query = '', $serveur = ''){
697
-	$link = _sqlite_link($serveur);
697
+    $link = _sqlite_link($serveur);
698 698
 
699
-	if (_sqlite_is_version(3, $link)){
700
-		$errs = $link->errorInfo();
701
-		/*
699
+    if (_sqlite_is_version(3, $link)){
700
+        $errs = $link->errorInfo();
701
+        /*
702 702
 			$errs[0]
703 703
 				numero SQLState ('HY000' souvent lors d'une erreur)
704 704
 				http://www.easysoft.com/developer/interfaces/odbc/sqlstate_status_return_codes.html
@@ -708,17 +708,17 @@  discard block
 block discarded – undo
708 708
 			$errs[2]
709 709
 				Le texte du message d'erreur
710 710
 		*/
711
-		$s = '';
712
-		if (ltrim($errs[0],'0')) { // 00000 si pas d'erreur
713
-			$s = "$errs[2]";
714
-		}
715
-	} elseif ($link) {
716
-		$s = sqlite_error_string(sqlite_last_error($link));
717
-	} else {
718
-		$s = ": aucune ressource sqlite (link)";
719
-	}
720
-	if ($s) spip_log("$s - $query", 'sqlite.'._LOG_ERREUR);
721
-	return $s;
711
+        $s = '';
712
+        if (ltrim($errs[0],'0')) { // 00000 si pas d'erreur
713
+            $s = "$errs[2]";
714
+        }
715
+    } elseif ($link) {
716
+        $s = sqlite_error_string(sqlite_last_error($link));
717
+    } else {
718
+        $s = ": aucune ressource sqlite (link)";
719
+    }
720
+    if ($s) spip_log("$s - $query", 'sqlite.'._LOG_ERREUR);
721
+    return $s;
722 722
 }
723 723
 
724 724
 /**
@@ -735,222 +735,222 @@  discard block
 block discarded – undo
735 735
  * 		'HY000/1' : numéro de l'erreur SQLState / numéro d'erreur interne SQLite (en sqlite 3)
736 736
  **/
737 737
 function spip_sqlite_errno($serveur = ''){
738
-	$link = _sqlite_link($serveur);
738
+    $link = _sqlite_link($serveur);
739 739
 
740
-	if (_sqlite_is_version(3, $link)){
741
-		$t = $link->errorInfo();
742
-		$s = ltrim($t[0],'0'); // 00000 si pas d'erreur
743
-		if ($s) $s .= ' / ' . $t[1]; // ajoute l'erreur du moteur SQLite
744
-	} elseif ($link) {
745
-		$s = sqlite_last_error($link);
746
-	} else {
747
-		$s = ": aucune ressource sqlite (link)";
748
-	}
740
+    if (_sqlite_is_version(3, $link)){
741
+        $t = $link->errorInfo();
742
+        $s = ltrim($t[0],'0'); // 00000 si pas d'erreur
743
+        if ($s) $s .= ' / ' . $t[1]; // ajoute l'erreur du moteur SQLite
744
+    } elseif ($link) {
745
+        $s = sqlite_last_error($link);
746
+    } else {
747
+        $s = ": aucune ressource sqlite (link)";
748
+    }
749 749
 
750
-	if ($s) spip_log("Erreur sqlite $s", 'sqlite.'._LOG_ERREUR);
750
+    if ($s) spip_log("Erreur sqlite $s", 'sqlite.'._LOG_ERREUR);
751 751
 
752
-	return $s ? $s : 0;
752
+    return $s ? $s : 0;
753 753
 }
754 754
 
755 755
 
756 756
 // http://doc.spip.org/@spip_sqlite_explain
757 757
 function spip_sqlite_explain($query, $serveur = '', $requeter = true){
758
-	if (strpos(ltrim($query), 'SELECT')!==0) return array();
758
+    if (strpos(ltrim($query), 'SELECT')!==0) return array();
759 759
 
760
-	$query = spip_sqlite::traduire_requete($query, $serveur);
761
-	$query = 'EXPLAIN '.$query;
762
-	if (!$requeter) return $query;
763
-	// on ne trace pas ces requetes, sinon on obtient un tracage sans fin...
764
-	$r = spip_sqlite::executer_requete($query, $serveur, false);
760
+    $query = spip_sqlite::traduire_requete($query, $serveur);
761
+    $query = 'EXPLAIN '.$query;
762
+    if (!$requeter) return $query;
763
+    // on ne trace pas ces requetes, sinon on obtient un tracage sans fin...
764
+    $r = spip_sqlite::executer_requete($query, $serveur, false);
765 765
 
766
-	return $r ? spip_sqlite_fetch($r, null, $serveur) : false; // hum ? etrange ca... a verifier
766
+    return $r ? spip_sqlite_fetch($r, null, $serveur) : false; // hum ? etrange ca... a verifier
767 767
 }
768 768
 
769 769
 
770 770
 // http://doc.spip.org/@spip_sqlite_fetch
771 771
 function spip_sqlite_fetch($r, $t = '', $serveur = '', $requeter = true){
772 772
 
773
-	$link = _sqlite_link($serveur);
774
-	$is_v3 = _sqlite_is_version(3, $link);
775
-	if (!$t)
776
-		$t = ($is_v3 ? SPIP_SQLITE3_ASSOC : SPIP_SQLITE2_ASSOC);
777
-
778
-	$retour = false;
779
-	if ($r)
780
-		$retour = ($is_v3 ? $r->fetch($t) : sqlite_fetch_array($r, $t));
781
-
782
-	// les version 2 et 3 parfois renvoie des 'table.titre' au lieu de 'titre' tout court ! pff !
783
-	// suppression de 'table.' pour toutes les cles (c'est un peu violent !)
784
-	// c'est couteux : on ne verifie que la premiere ligne pour voir si on le fait ou non
785
-	if ($retour
786
-	  AND strpos(implode('',array_keys($retour)),'.')!==false){
787
-		foreach ($retour as $cle => $val){
788
-			if (($pos = strpos($cle, '.'))!==false){
789
-				$retour[substr($cle, $pos+1)] = &$retour[$cle];
790
-				unset($retour[$cle]);
791
-			}
792
-		}
793
-	}
794
-
795
-	return $retour;
773
+    $link = _sqlite_link($serveur);
774
+    $is_v3 = _sqlite_is_version(3, $link);
775
+    if (!$t)
776
+        $t = ($is_v3 ? SPIP_SQLITE3_ASSOC : SPIP_SQLITE2_ASSOC);
777
+
778
+    $retour = false;
779
+    if ($r)
780
+        $retour = ($is_v3 ? $r->fetch($t) : sqlite_fetch_array($r, $t));
781
+
782
+    // les version 2 et 3 parfois renvoie des 'table.titre' au lieu de 'titre' tout court ! pff !
783
+    // suppression de 'table.' pour toutes les cles (c'est un peu violent !)
784
+    // c'est couteux : on ne verifie que la premiere ligne pour voir si on le fait ou non
785
+    if ($retour
786
+      AND strpos(implode('',array_keys($retour)),'.')!==false){
787
+        foreach ($retour as $cle => $val){
788
+            if (($pos = strpos($cle, '.'))!==false){
789
+                $retour[substr($cle, $pos+1)] = &$retour[$cle];
790
+                unset($retour[$cle]);
791
+            }
792
+        }
793
+    }
794
+
795
+    return $retour;
796 796
 }
797 797
 
798 798
 
799 799
 function spip_sqlite_seek($r, $row_number, $serveur = '', $requeter = true){
800
-	if ($r){
801
-		$link = _sqlite_link($serveur);
802
-		if (_sqlite_is_version(3, $link)){
803
-			// encore un truc de bien fichu : PDO ne PEUT PAS faire de seek ou de rewind...
804
-			// je me demande si pour sqlite 3 il ne faudrait pas mieux utiliser
805
-			// les nouvelles fonctions sqlite3_xx (mais encore moins presentes...)
806
-			return false;
807
-		}
808
-		else {
809
-			return sqlite_seek($r, $row_number);
810
-		}
811
-	}
800
+    if ($r){
801
+        $link = _sqlite_link($serveur);
802
+        if (_sqlite_is_version(3, $link)){
803
+            // encore un truc de bien fichu : PDO ne PEUT PAS faire de seek ou de rewind...
804
+            // je me demande si pour sqlite 3 il ne faudrait pas mieux utiliser
805
+            // les nouvelles fonctions sqlite3_xx (mais encore moins presentes...)
806
+            return false;
807
+        }
808
+        else {
809
+            return sqlite_seek($r, $row_number);
810
+        }
811
+    }
812 812
 }
813 813
 
814 814
 
815 815
 // http://doc.spip.org/@spip_sqlite_free
816 816
 function spip_sqlite_free(&$r, $serveur = '', $requeter = true){
817
-	unset($r);
818
-	return true;
819
-	//return sqlite_free_result($r);
817
+    unset($r);
818
+    return true;
819
+    //return sqlite_free_result($r);
820 820
 }
821 821
 
822 822
 
823 823
 // http://doc.spip.org/@spip_sqlite_get_charset
824 824
 function spip_sqlite_get_charset($charset = array(), $serveur = '', $requeter = true){
825
-	//$c = !$charset ? '' : (" LIKE "._q($charset['charset']));
826
-	//return spip_sqlite_fetch(sqlite_query(_sqlite_link($serveur), "SHOW CHARACTER SET$c"), NULL, $serveur);
825
+    //$c = !$charset ? '' : (" LIKE "._q($charset['charset']));
826
+    //return spip_sqlite_fetch(sqlite_query(_sqlite_link($serveur), "SHOW CHARACTER SET$c"), NULL, $serveur);
827 827
 }
828 828
 
829 829
 
830 830
 // http://doc.spip.org/@spip_sqlite_hex
831 831
 function spip_sqlite_hex($v){
832
-	return hexdec($v);
832
+    return hexdec($v);
833 833
 }
834 834
 
835 835
 
836 836
 // http://doc.spip.org/@spip_sqlite_in
837 837
 function spip_sqlite_in($val, $valeurs, $not = '', $serveur = '', $requeter = true){
838
-	$n = $i = 0;
839
-	$in_sql = "";
840
-	while ($n = strpos($valeurs, ',', $n+1)){
841
-		if ((++$i)>=255){
842
-			$in_sql .= "($val $not IN (".
843
-			           substr($valeurs, 0, $n).
844
-			           "))\n".
845
-			           ($not ? "AND\t" : "OR\t");
846
-			$valeurs = substr($valeurs, $n+1);
847
-			$i = $n = 0;
848
-		}
849
-	}
850
-	$in_sql .= "($val $not IN ($valeurs))";
851
-
852
-	return "($in_sql)";
838
+    $n = $i = 0;
839
+    $in_sql = "";
840
+    while ($n = strpos($valeurs, ',', $n+1)){
841
+        if ((++$i)>=255){
842
+            $in_sql .= "($val $not IN (".
843
+                        substr($valeurs, 0, $n).
844
+                        "))\n".
845
+                        ($not ? "AND\t" : "OR\t");
846
+            $valeurs = substr($valeurs, $n+1);
847
+            $i = $n = 0;
848
+        }
849
+    }
850
+    $in_sql .= "($val $not IN ($valeurs))";
851
+
852
+    return "($in_sql)";
853 853
 }
854 854
 
855 855
 
856 856
 // http://doc.spip.org/@spip_sqlite_insert
857 857
 function spip_sqlite_insert($table, $champs, $valeurs, $desc = '', $serveur = '', $requeter = true){
858 858
 
859
-	$query = "INSERT INTO $table ".($champs ? "$champs VALUES $valeurs" : "DEFAULT VALUES");
860
-	if ($r = spip_sqlite_query($query, $serveur, $requeter)){
861
-		if (!$requeter) return $r;
862
-		$nb = spip_sqlite::last_insert_id($serveur);
863
-	}
864
-	else
865
-		$nb = 0;
859
+    $query = "INSERT INTO $table ".($champs ? "$champs VALUES $valeurs" : "DEFAULT VALUES");
860
+    if ($r = spip_sqlite_query($query, $serveur, $requeter)){
861
+        if (!$requeter) return $r;
862
+        $nb = spip_sqlite::last_insert_id($serveur);
863
+    }
864
+    else
865
+        $nb = 0;
866 866
 
867
-	$err = spip_sqlite_error($query, $serveur);
868
-	// cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
869
-	return isset($_GET['var_profile']) ? $r : $nb;
867
+    $err = spip_sqlite_error($query, $serveur);
868
+    // cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
869
+    return isset($_GET['var_profile']) ? $r : $nb;
870 870
 
871 871
 }
872 872
 
873 873
 
874 874
 // http://doc.spip.org/@spip_sqlite_insertq
875 875
 function spip_sqlite_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true){
876
-	if (!$desc) $desc = description_table($table, $serveur);
877
-	if (!$desc) die("$table insertion sans description");
878
-	$fields = isset($desc['field']) ? $desc['field'] : array();
876
+    if (!$desc) $desc = description_table($table, $serveur);
877
+    if (!$desc) die("$table insertion sans description");
878
+    $fields = isset($desc['field']) ? $desc['field'] : array();
879 879
 
880
-	foreach ($couples as $champ => $val){
881
-		$couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
882
-	}
880
+    foreach ($couples as $champ => $val){
881
+        $couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
882
+    }
883 883
 
884
-	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
885
-	$couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
884
+    // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
885
+    $couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
886 886
 
887
-	$cles = $valeurs = "";
888
-	if (count($couples)){
889
-		$cles = "(".join(',', array_keys($couples)).")";
890
-		$valeurs = "(".join(',', $couples).")";
891
-	}
887
+    $cles = $valeurs = "";
888
+    if (count($couples)){
889
+        $cles = "(".join(',', array_keys($couples)).")";
890
+        $valeurs = "(".join(',', $couples).")";
891
+    }
892 892
 
893
-	return spip_sqlite_insert($table, $cles, $valeurs, $desc, $serveur, $requeter);
893
+    return spip_sqlite_insert($table, $cles, $valeurs, $desc, $serveur, $requeter);
894 894
 }
895 895
 
896 896
 
897 897
 // http://doc.spip.org/@spip_sqlite_insertq_multi
898 898
 function spip_sqlite_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true){
899
-	if (!$desc) $desc = description_table($table, $serveur);
900
-	if (!$desc) die("$table insertion sans description");
901
-	if (!isset($desc['field']))
902
-		$desc['field'] = array();
903
-
904
-	// recuperer les champs 'timestamp' pour mise a jour auto de ceux-ci
905
-	$maj = _sqlite_ajouter_champs_timestamp($table, array(), $desc, $serveur);
906
-
907
-	// seul le nom de la table est a traduire ici :
908
-	// le faire une seule fois au debut
909
-	$query_start = "INSERT INTO $table ";
910
-	$query_start = spip_sqlite::traduire_requete($query_start,$serveur);
911
-
912
-	// ouvrir une transaction
913
-	if ($requeter)
914
-		spip_sqlite::demarrer_transaction($serveur);
915
-
916
-	while ($couples = array_shift($tab_couples)){
917
-		foreach ($couples as $champ => $val){
918
-			$couples[$champ] = _sqlite_calculer_cite($val, $desc['field'][$champ]);
919
-		}
920
-
921
-		// inserer les champs timestamp par defaut
922
-		$couples = array_merge($maj,$couples);
923
-
924
-		$champs = $valeurs = "";
925
-		if (count($couples)){
926
-			$champs = "(".join(',', array_keys($couples)).")";
927
-			$valeurs = "(".join(',', $couples).")";
928
-			$query = $query_start."$champs VALUES $valeurs";
929
-		}
930
-		else
931
-			$query = $query_start."DEFAULT VALUES";
899
+    if (!$desc) $desc = description_table($table, $serveur);
900
+    if (!$desc) die("$table insertion sans description");
901
+    if (!isset($desc['field']))
902
+        $desc['field'] = array();
903
+
904
+    // recuperer les champs 'timestamp' pour mise a jour auto de ceux-ci
905
+    $maj = _sqlite_ajouter_champs_timestamp($table, array(), $desc, $serveur);
906
+
907
+    // seul le nom de la table est a traduire ici :
908
+    // le faire une seule fois au debut
909
+    $query_start = "INSERT INTO $table ";
910
+    $query_start = spip_sqlite::traduire_requete($query_start,$serveur);
911
+
912
+    // ouvrir une transaction
913
+    if ($requeter)
914
+        spip_sqlite::demarrer_transaction($serveur);
915
+
916
+    while ($couples = array_shift($tab_couples)){
917
+        foreach ($couples as $champ => $val){
918
+            $couples[$champ] = _sqlite_calculer_cite($val, $desc['field'][$champ]);
919
+        }
920
+
921
+        // inserer les champs timestamp par defaut
922
+        $couples = array_merge($maj,$couples);
923
+
924
+        $champs = $valeurs = "";
925
+        if (count($couples)){
926
+            $champs = "(".join(',', array_keys($couples)).")";
927
+            $valeurs = "(".join(',', $couples).")";
928
+            $query = $query_start."$champs VALUES $valeurs";
929
+        }
930
+        else
931
+            $query = $query_start."DEFAULT VALUES";
932 932
 		
933
-		if ($requeter)
934
-			$retour = spip_sqlite::executer_requete($query,$serveur);
935
-
936
-		// sur le dernier couple uniquement
937
-		if (!count($tab_couples)){
938
-			$nb = 0;
939
-			if ($requeter)
940
-				$nb = spip_sqlite::last_insert_id($serveur);
941
-			else
942
-				return $query;
943
-		}
944
-
945
-		$err = spip_sqlite_error($query, $serveur);
946
-	}
947
-
948
-	if ($requeter)
949
-		spip_sqlite::finir_transaction($serveur);
950
-
951
-	// renvoie le dernier id d'autoincrement ajoute
952
-	// cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
953
-	return isset($_GET['var_profile']) ? $retour : $nb;
933
+        if ($requeter)
934
+            $retour = spip_sqlite::executer_requete($query,$serveur);
935
+
936
+        // sur le dernier couple uniquement
937
+        if (!count($tab_couples)){
938
+            $nb = 0;
939
+            if ($requeter)
940
+                $nb = spip_sqlite::last_insert_id($serveur);
941
+            else
942
+                return $query;
943
+        }
944
+
945
+        $err = spip_sqlite_error($query, $serveur);
946
+    }
947
+
948
+    if ($requeter)
949
+        spip_sqlite::finir_transaction($serveur);
950
+
951
+    // renvoie le dernier id d'autoincrement ajoute
952
+    // cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
953
+    return isset($_GET['var_profile']) ? $retour : $nb;
954 954
 }
955 955
 
956 956
 
@@ -961,7 +961,7 @@  discard block
 block discarded – undo
961 961
  * @return bool true / false
962 962
 **/
963 963
 function spip_sqlite_preferer_transaction($serveur = '', $requeter = true) {
964
-	return true;
964
+    return true;
965 965
 }
966 966
 
967 967
 /**
@@ -971,9 +971,9 @@  discard block
 block discarded – undo
971 971
  *
972 972
 **/
973 973
 function spip_sqlite_demarrer_transaction($serveur = '', $requeter = true) {
974
-	if (!$requeter) return "BEGIN TRANSACTION";
975
-	spip_sqlite::demarrer_transaction($serveur);
976
-	return true;
974
+    if (!$requeter) return "BEGIN TRANSACTION";
975
+    spip_sqlite::demarrer_transaction($serveur);
976
+    return true;
977 977
 }
978 978
 
979 979
 /**
@@ -981,40 +981,40 @@  discard block
 block discarded – undo
981 981
  *
982 982
 **/
983 983
 function spip_sqlite_terminer_transaction($serveur = '', $requeter = true) {
984
-	if (!$requeter) return "COMMIT";
985
-	spip_sqlite::finir_transaction($serveur);
986
-	return true;
984
+    if (!$requeter) return "COMMIT";
985
+    spip_sqlite::finir_transaction($serveur);
986
+    return true;
987 987
 }
988 988
 
989 989
 
990 990
 // http://doc.spip.org/@spip_sqlite_listdbs
991 991
 function spip_sqlite_listdbs($serveur = '', $requeter = true){
992
-	_sqlite_init();
992
+    _sqlite_init();
993 993
 
994
-	if (!is_dir($d = substr(_DIR_DB, 0, -1))){
995
-		return array();
996
-	}
994
+    if (!is_dir($d = substr(_DIR_DB, 0, -1))){
995
+        return array();
996
+    }
997 997
 
998
-	include_spip('inc/flock');
999
-	$bases = preg_files($d, $pattern = '(.*)\.sqlite$');
1000
-	$bds = array();
998
+    include_spip('inc/flock');
999
+    $bases = preg_files($d, $pattern = '(.*)\.sqlite$');
1000
+    $bds = array();
1001 1001
 
1002
-	foreach ($bases as $b){
1003
-		// pas de bases commencant pas sqlite 
1004
-		// (on s'en sert pour l'installation pour simuler la presence d'un serveur)
1005
-		// les bases sont de la forme _sqliteX_tmp_spip_install.sqlite
1006
-		if (strpos($b, '_sqlite')) continue;
1007
-		$bds[] = preg_replace(";.*/$pattern;iS", '$1', $b);
1008
-	}
1002
+    foreach ($bases as $b){
1003
+        // pas de bases commencant pas sqlite 
1004
+        // (on s'en sert pour l'installation pour simuler la presence d'un serveur)
1005
+        // les bases sont de la forme _sqliteX_tmp_spip_install.sqlite
1006
+        if (strpos($b, '_sqlite')) continue;
1007
+        $bds[] = preg_replace(";.*/$pattern;iS", '$1', $b);
1008
+    }
1009 1009
 
1010
-	return $bds;
1010
+    return $bds;
1011 1011
 }
1012 1012
 
1013 1013
 
1014 1014
 // http://doc.spip.org/@spip_sqlite_multi
1015 1015
 function spip_sqlite_multi($objet, $lang){
1016
-	$r = "EXTRAIRE_MULTI(" . $objet . ", '" . $lang . "') AS multi";
1017
-	return $r;
1016
+    $r = "EXTRAIRE_MULTI(" . $objet . ", '" . $lang . "') AS multi";
1017
+    return $r;
1018 1018
 }
1019 1019
 
1020 1020
 
@@ -1030,14 +1030,14 @@  discard block
 block discarded – undo
1030 1030
  **/
1031 1031
 // http://doc.spip.org/@spip_sqlite_optimize
1032 1032
 function spip_sqlite_optimize($table, $serveur = '', $requeter = true){
1033
-	static $do = false;
1034
-	if ($requeter and $do){
1035
-		return true;
1036
-	}
1037
-	if ($requeter){
1038
-		$do = true;
1039
-	}
1040
-	return spip_sqlite_query("VACUUM", $serveur, $requeter);
1033
+    static $do = false;
1034
+    if ($requeter and $do){
1035
+        return true;
1036
+    }
1037
+    if ($requeter){
1038
+        $do = true;
1039
+    }
1040
+    return spip_sqlite_query("VACUUM", $serveur, $requeter);
1041 1041
 }
1042 1042
 
1043 1043
 
@@ -1051,12 +1051,12 @@  discard block
 block discarded – undo
1051 1051
  * @return string|number
1052 1052
  */
1053 1053
 function spip_sqlite_quote($v, $type = ''){
1054
-		if (!is_array($v))
1055
-			return _sqlite_calculer_cite($v,$type);
1056
-		// si c'est un tableau, le parcourir en propageant le type
1057
-		foreach($v as $k=>$r)
1058
-			$v[$k] = spip_sqlite_quote($r, $type);
1059
-		return join(",", $v);
1054
+        if (!is_array($v))
1055
+            return _sqlite_calculer_cite($v,$type);
1056
+        // si c'est un tableau, le parcourir en propageant le type
1057
+        foreach($v as $k=>$r)
1058
+            $v[$k] = spip_sqlite_quote($r, $type);
1059
+        return join(",", $v);
1060 1060
 }
1061 1061
 
1062 1062
 
@@ -1069,67 +1069,67 @@  discard block
 block discarded – undo
1069 1069
  * @return string expression SQL
1070 1070
  **/
1071 1071
 function spip_sqlite_date_proche($champ, $interval, $unite){
1072
-	$op = (($interval <= 0) ? '>' : '<');
1073
-	return "($champ $op datetime('".date("Y-m-d H:i:s")."', '$interval $unite'))";
1072
+    $op = (($interval <= 0) ? '>' : '<');
1073
+    return "($champ $op datetime('".date("Y-m-d H:i:s")."', '$interval $unite'))";
1074 1074
 }
1075 1075
 
1076 1076
 
1077 1077
 // http://doc.spip.org/@spip_sqlite_replace
1078 1078
 function spip_sqlite_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true){
1079
-	if (!$desc) $desc = description_table($table, $serveur);
1080
-	if (!$desc) die("$table insertion sans description");
1081
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1079
+    if (!$desc) $desc = description_table($table, $serveur);
1080
+    if (!$desc) die("$table insertion sans description");
1081
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1082 1082
 
1083
-	foreach ($couples as $champ => $val){
1084
-		$couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
1085
-	}
1083
+    foreach ($couples as $champ => $val){
1084
+        $couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
1085
+    }
1086 1086
 
1087
-	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1088
-	$couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
1087
+    // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1088
+    $couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
1089 1089
 
1090
-	return spip_sqlite_query("REPLACE INTO $table (".join(',', array_keys($couples)).') VALUES ('.join(',', $couples).')', $serveur);
1090
+    return spip_sqlite_query("REPLACE INTO $table (".join(',', array_keys($couples)).') VALUES ('.join(',', $couples).')', $serveur);
1091 1091
 }
1092 1092
 
1093 1093
 
1094 1094
 // http://doc.spip.org/@spip_sqlite_replace_multi
1095 1095
 function spip_sqlite_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true){
1096 1096
 
1097
-	// boucler pour trainter chaque requete independemment
1098
-	foreach ($tab_couples as $couples){
1099
-		$retour = spip_sqlite_replace($table, $couples, $desc, $serveur, $requeter);
1100
-	}
1101
-	// renvoie le dernier id	
1102
-	return $retour;
1097
+    // boucler pour trainter chaque requete independemment
1098
+    foreach ($tab_couples as $couples){
1099
+        $retour = spip_sqlite_replace($table, $couples, $desc, $serveur, $requeter);
1100
+    }
1101
+    // renvoie le dernier id	
1102
+    return $retour;
1103 1103
 }
1104 1104
 
1105 1105
 
1106 1106
 // http://doc.spip.org/@spip_sqlite_select
1107 1107
 function spip_sqlite_select($select, $from, $where = '', $groupby = '', $orderby = '', $limit = '', $having = '', $serveur = '', $requeter = true){
1108 1108
 
1109
-	// version() n'est pas connu de sqlite
1110
-	$select = str_replace('version()', 'sqlite_version()', $select);
1111
-
1112
-	// recomposer from
1113
-	$from = (!is_array($from) ? $from : _sqlite_calculer_select_as($from));
1114
-
1115
-	$query =
1116
-		_sqlite_calculer_expression('SELECT', $select, ', ')
1117
-		._sqlite_calculer_expression('FROM', $from, ', ')
1118
-		._sqlite_calculer_expression('WHERE', $where)
1119
-		._sqlite_calculer_expression('GROUP BY', $groupby, ',')
1120
-		._sqlite_calculer_expression('HAVING', $having)
1121
-		.($orderby ? ("\nORDER BY "._sqlite_calculer_order($orderby)) : '')
1122
-		.($limit ? "\nLIMIT $limit" : '');
1123
-
1124
-	// dans un select, on doit renvoyer la requête en cas d'erreur
1125
-	$res = spip_sqlite_query($query, $serveur, $requeter);
1126
-	// texte de la requete demande ?
1127
-	if (!$requeter) return $res;
1128
-	// erreur survenue ?
1129
-	if ($res === false) {
1130
-		return spip_sqlite::traduire_requete($query, $serveur);
1131
-	}
1132
-	return $res;
1109
+    // version() n'est pas connu de sqlite
1110
+    $select = str_replace('version()', 'sqlite_version()', $select);
1111
+
1112
+    // recomposer from
1113
+    $from = (!is_array($from) ? $from : _sqlite_calculer_select_as($from));
1114
+
1115
+    $query =
1116
+        _sqlite_calculer_expression('SELECT', $select, ', ')
1117
+        ._sqlite_calculer_expression('FROM', $from, ', ')
1118
+        ._sqlite_calculer_expression('WHERE', $where)
1119
+        ._sqlite_calculer_expression('GROUP BY', $groupby, ',')
1120
+        ._sqlite_calculer_expression('HAVING', $having)
1121
+        .($orderby ? ("\nORDER BY "._sqlite_calculer_order($orderby)) : '')
1122
+        .($limit ? "\nLIMIT $limit" : '');
1123
+
1124
+    // dans un select, on doit renvoyer la requête en cas d'erreur
1125
+    $res = spip_sqlite_query($query, $serveur, $requeter);
1126
+    // texte de la requete demande ?
1127
+    if (!$requeter) return $res;
1128
+    // erreur survenue ?
1129
+    if ($res === false) {
1130
+        return spip_sqlite::traduire_requete($query, $serveur);
1131
+    }
1132
+    return $res;
1133 1133
 }
1134 1134
 
1135 1135
 
@@ -1148,35 +1148,35 @@  discard block
 block discarded – undo
1148 1148
  * 		False en cas d'erreur.
1149 1149
 **/
1150 1150
 function spip_sqlite_selectdb($db, $serveur = '', $requeter = true){
1151
-	_sqlite_init();
1152
-
1153
-	// interdire la creation d'une nouvelle base, 
1154
-	// sauf si on est dans l'installation
1155
-	if (!is_file($f = _DIR_DB.$db.'.sqlite')
1156
-	    && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)){
1157
-		spip_log("Il est interdit de creer la base $db", 'sqlite.'._LOG_HS);
1158
-		return false;
1159
-	}
1160
-
1161
-	// se connecter a la base indiquee
1162
-	// avec les identifiants connus
1163
-	$index = $serveur ? $serveur : 0;
1164
-
1165
-	if ($link = spip_connect_db('', '', '', '', '@selectdb@'.$db, $serveur, '', '')){
1166
-		if (($db==$link['db']) && $GLOBALS['connexions'][$index] = $link)
1167
-			return $db;
1168
-	} else {
1169
-		spip_log("Impossible de selectionner la base $db", 'sqlite.'._LOG_HS);
1170
-		return false;
1171
-	}
1151
+    _sqlite_init();
1152
+
1153
+    // interdire la creation d'une nouvelle base, 
1154
+    // sauf si on est dans l'installation
1155
+    if (!is_file($f = _DIR_DB.$db.'.sqlite')
1156
+        && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)){
1157
+        spip_log("Il est interdit de creer la base $db", 'sqlite.'._LOG_HS);
1158
+        return false;
1159
+    }
1160
+
1161
+    // se connecter a la base indiquee
1162
+    // avec les identifiants connus
1163
+    $index = $serveur ? $serveur : 0;
1164
+
1165
+    if ($link = spip_connect_db('', '', '', '', '@selectdb@'.$db, $serveur, '', '')){
1166
+        if (($db==$link['db']) && $GLOBALS['connexions'][$index] = $link)
1167
+            return $db;
1168
+    } else {
1169
+        spip_log("Impossible de selectionner la base $db", 'sqlite.'._LOG_HS);
1170
+        return false;
1171
+    }
1172 1172
 
1173 1173
 }
1174 1174
 
1175 1175
 
1176 1176
 // http://doc.spip.org/@spip_sqlite_set_charset
1177 1177
 function spip_sqlite_set_charset($charset, $serveur = '', $requeter = true){
1178
-	# spip_log("Gestion charset sql a ecrire : "."SET NAMES "._q($charset), 'sqlite.'._LOG_ERREUR);
1179
-	# return spip_sqlite_query("SET NAMES ". spip_sqlite_quote($charset), $serveur); //<-- Passe pas !
1178
+    # spip_log("Gestion charset sql a ecrire : "."SET NAMES "._q($charset), 'sqlite.'._LOG_ERREUR);
1179
+    # return spip_sqlite_query("SET NAMES ". spip_sqlite_quote($charset), $serveur); //<-- Passe pas !
1180 1180
 }
1181 1181
 
1182 1182
 
@@ -1194,169 +1194,169 @@  discard block
 block discarded – undo
1194 1194
  *     Ressource à utiliser avec sql_fetch()
1195 1195
 **/
1196 1196
 function spip_sqlite_showbase($match, $serveur = '', $requeter = true){
1197
-	// type est le type d'entrée : table / index / view
1198
-	// on ne retourne que les tables (?) et non les vues...
1199
-	# ESCAPE non supporte par les versions sqlite <3
1200
-	#	return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name LIKE "._q($match)." ESCAPE '\'", $serveur, $requeter);
1201
-	$match = preg_quote($match);
1202
-	$match = str_replace("\\\_", "[[TIRETBAS]]", $match);
1203
-	$match = str_replace("\\\%", "[[POURCENT]]", $match);
1204
-	$match = str_replace("_", ".", $match);
1205
-	$match = str_replace("%", ".*", $match);
1206
-	$match = str_replace("[[TIRETBAS]]", "_", $match);
1207
-	$match = str_replace("[[POURCENT]]", "%", $match);
1208
-	$match = "^$match$";
1209
-	return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP "._q($match), $serveur, $requeter);
1197
+    // type est le type d'entrée : table / index / view
1198
+    // on ne retourne que les tables (?) et non les vues...
1199
+    # ESCAPE non supporte par les versions sqlite <3
1200
+    #	return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name LIKE "._q($match)." ESCAPE '\'", $serveur, $requeter);
1201
+    $match = preg_quote($match);
1202
+    $match = str_replace("\\\_", "[[TIRETBAS]]", $match);
1203
+    $match = str_replace("\\\%", "[[POURCENT]]", $match);
1204
+    $match = str_replace("_", ".", $match);
1205
+    $match = str_replace("%", ".*", $match);
1206
+    $match = str_replace("[[TIRETBAS]]", "_", $match);
1207
+    $match = str_replace("[[POURCENT]]", "%", $match);
1208
+    $match = "^$match$";
1209
+    return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP "._q($match), $serveur, $requeter);
1210 1210
 }
1211 1211
 
1212 1212
 define('_SQLITE_RE_SHOW_TABLE', '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/');
1213 1213
 // http://doc.spip.org/@spip_sqlite_showtable
1214 1214
 function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
1215
-	$query =
1216
-		'SELECT sql, type FROM'
1217
-		.' (SELECT * FROM sqlite_master UNION ALL'
1218
-		.' SELECT * FROM sqlite_temp_master)'
1219
-		." WHERE tbl_name LIKE '$nom_table'"
1220
-		." AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'"
1221
-		.' ORDER BY substr(type,2,1), name';
1222
-
1223
-	$a = spip_sqlite_query($query, $serveur, $requeter);
1224
-	if (!$a) return "";
1225
-	if (!$requeter) return $a;
1226
-	if (!($a = spip_sqlite_fetch($a, null, $serveur))) return "";
1227
-	$vue = ($a['type']=='view'); // table | vue
1228
-
1229
-	// c'est une table
1230
-	// il faut parser le create
1231
-	if (!$vue){
1232
-		if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)){
1233
-			return "";
1234
-		} else {
1235
-			$desc = $r[1];
1236
-			// extraction d'une KEY éventuelle en prenant garde de ne pas
1237
-			// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
1238
-			if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)){
1239
-				$namedkeys = $r[2];
1240
-				$desc = $r[1];
1241
-			}
1242
-			else
1243
-				$namedkeys = "";
1244
-
1245
-			$fields = array();
1246
-			$keys   = array();
1247
-
1248
-			// enlever les contenus des valeurs DEFAULT 'xxx' qui pourraient perturber
1249
-			// par exemple s'il contiennent une virgule.
1250
-			// /!\ cela peut aussi echapper le nom des champs si la table a eu des operations avec SQLite Manager !
1251
-			list($desc, $echaps) = query_echappe_textes($desc);
1252
-
1253
-			// separer toutes les descriptions de champs, separes par des virgules
1254
-			# /!\ explode peut exploser aussi DECIMAL(10,2) !
1255
-			$k_precedent = null;
1256
-			foreach (explode(",", $desc) as $v){
1257
-
1258
-				preg_match("/^\s*([^\s]+)\s+(.*)/", $v, $r);
1259
-				// Les cles de champs peuvent etre entourees
1260
-				// de guillements doubles " , simples ', graves ` ou de crochets [ ],  ou rien.
1261
-				// http://www.sqlite.org/lang_keywords.html
1262
-				$k = strtolower(query_reinjecte_textes($r[1], $echaps)); // champ, "champ", [champ]...
1263
-				if ($char = strpbrk($k[0], '\'"[`')) {
1264
-					$k = trim($k, $char);
1265
-					if ($char == '[') $k = rtrim($k, ']');
1266
-				}
1267
-				$def = query_reinjecte_textes($r[2], $echaps); // valeur du champ
1268
-
1269
-				# rustine pour DECIMAL(10,2)
1270
-				if (false !== strpos($k, ')')) {
1271
-					$fields[$k_precedent] .= ',' . $k . ' ' . $def;
1272
-					continue;
1273
-				}
1215
+    $query =
1216
+        'SELECT sql, type FROM'
1217
+        .' (SELECT * FROM sqlite_master UNION ALL'
1218
+        .' SELECT * FROM sqlite_temp_master)'
1219
+        ." WHERE tbl_name LIKE '$nom_table'"
1220
+        ." AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'"
1221
+        .' ORDER BY substr(type,2,1), name';
1222
+
1223
+    $a = spip_sqlite_query($query, $serveur, $requeter);
1224
+    if (!$a) return "";
1225
+    if (!$requeter) return $a;
1226
+    if (!($a = spip_sqlite_fetch($a, null, $serveur))) return "";
1227
+    $vue = ($a['type']=='view'); // table | vue
1228
+
1229
+    // c'est une table
1230
+    // il faut parser le create
1231
+    if (!$vue){
1232
+        if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)){
1233
+            return "";
1234
+        } else {
1235
+            $desc = $r[1];
1236
+            // extraction d'une KEY éventuelle en prenant garde de ne pas
1237
+            // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
1238
+            if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)){
1239
+                $namedkeys = $r[2];
1240
+                $desc = $r[1];
1241
+            }
1242
+            else
1243
+                $namedkeys = "";
1244
+
1245
+            $fields = array();
1246
+            $keys   = array();
1247
+
1248
+            // enlever les contenus des valeurs DEFAULT 'xxx' qui pourraient perturber
1249
+            // par exemple s'il contiennent une virgule.
1250
+            // /!\ cela peut aussi echapper le nom des champs si la table a eu des operations avec SQLite Manager !
1251
+            list($desc, $echaps) = query_echappe_textes($desc);
1252
+
1253
+            // separer toutes les descriptions de champs, separes par des virgules
1254
+            # /!\ explode peut exploser aussi DECIMAL(10,2) !
1255
+            $k_precedent = null;
1256
+            foreach (explode(",", $desc) as $v){
1257
+
1258
+                preg_match("/^\s*([^\s]+)\s+(.*)/", $v, $r);
1259
+                // Les cles de champs peuvent etre entourees
1260
+                // de guillements doubles " , simples ', graves ` ou de crochets [ ],  ou rien.
1261
+                // http://www.sqlite.org/lang_keywords.html
1262
+                $k = strtolower(query_reinjecte_textes($r[1], $echaps)); // champ, "champ", [champ]...
1263
+                if ($char = strpbrk($k[0], '\'"[`')) {
1264
+                    $k = trim($k, $char);
1265
+                    if ($char == '[') $k = rtrim($k, ']');
1266
+                }
1267
+                $def = query_reinjecte_textes($r[2], $echaps); // valeur du champ
1268
+
1269
+                # rustine pour DECIMAL(10,2)
1270
+                if (false !== strpos($k, ')')) {
1271
+                    $fields[$k_precedent] .= ',' . $k . ' ' . $def;
1272
+                    continue;
1273
+                }
1274 1274
 				
1275
-				$fields[$k] = $def;
1276
-				$k_precedent = $k;
1275
+                $fields[$k] = $def;
1276
+                $k_precedent = $k;
1277 1277
 				
1278
-				// la primary key peut etre dans une des descriptions de champs
1279
-				// et non en fin de table, cas encore decouvert avec Sqlite Manager
1280
-				if (stripos($r[2], 'PRIMARY KEY') !== false) {
1281
-					$keys['PRIMARY KEY'] = $k;
1282
-				}
1283
-			}
1284
-			// key inclues dans la requete
1285
-			foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
1286
-				if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
1287
-					$k = str_replace("`", '', trim($r[1]));
1288
-					$t = trim(strtolower(str_replace("`", '', $r[2])), '"');
1289
-					if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
1290
-				}
1291
-			}
1292
-			// sinon ajouter les key index
1293
-			$query =
1294
-				'SELECT name,sql FROM'
1295
-				.' (SELECT * FROM sqlite_master UNION ALL'
1296
-				.' SELECT * FROM sqlite_temp_master)'
1297
-				." WHERE tbl_name LIKE '$nom_table'"
1298
-				." AND type='index' AND name NOT LIKE 'sqlite_%'"
1299
-				.'ORDER BY substr(type,2,1), name';
1300
-			$a = spip_sqlite_query($query, $serveur, $requeter);
1301
-			while ($r = spip_sqlite_fetch($a, null, $serveur)){
1302
-				$key = str_replace($nom_table.'_', '', $r['name']); // enlever le nom de la table ajoute a l'index
1303
-				$colonnes = preg_replace(',.*\((.*)\).*,', '$1', $r['sql']);
1304
-				$keys['KEY '.$key] = $colonnes;
1305
-			}
1306
-		}
1307
-	}
1308
-	// c'est une vue, on liste les champs disponibles simplement
1309
-	else {
1310
-		if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)){ // limit 1
1311
-			$fields = array();
1312
-			foreach ($res as $c => $v) $fields[$c] = '';
1313
-			$keys = array();
1314
-		} else {
1315
-			return "";
1316
-		}
1317
-	}
1318
-	return array('field' => $fields, 'key' => $keys);
1278
+                // la primary key peut etre dans une des descriptions de champs
1279
+                // et non en fin de table, cas encore decouvert avec Sqlite Manager
1280
+                if (stripos($r[2], 'PRIMARY KEY') !== false) {
1281
+                    $keys['PRIMARY KEY'] = $k;
1282
+                }
1283
+            }
1284
+            // key inclues dans la requete
1285
+            foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
1286
+                if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
1287
+                    $k = str_replace("`", '', trim($r[1]));
1288
+                    $t = trim(strtolower(str_replace("`", '', $r[2])), '"');
1289
+                    if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
1290
+                }
1291
+            }
1292
+            // sinon ajouter les key index
1293
+            $query =
1294
+                'SELECT name,sql FROM'
1295
+                .' (SELECT * FROM sqlite_master UNION ALL'
1296
+                .' SELECT * FROM sqlite_temp_master)'
1297
+                ." WHERE tbl_name LIKE '$nom_table'"
1298
+                ." AND type='index' AND name NOT LIKE 'sqlite_%'"
1299
+                .'ORDER BY substr(type,2,1), name';
1300
+            $a = spip_sqlite_query($query, $serveur, $requeter);
1301
+            while ($r = spip_sqlite_fetch($a, null, $serveur)){
1302
+                $key = str_replace($nom_table.'_', '', $r['name']); // enlever le nom de la table ajoute a l'index
1303
+                $colonnes = preg_replace(',.*\((.*)\).*,', '$1', $r['sql']);
1304
+                $keys['KEY '.$key] = $colonnes;
1305
+            }
1306
+        }
1307
+    }
1308
+    // c'est une vue, on liste les champs disponibles simplement
1309
+    else {
1310
+        if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)){ // limit 1
1311
+            $fields = array();
1312
+            foreach ($res as $c => $v) $fields[$c] = '';
1313
+            $keys = array();
1314
+        } else {
1315
+            return "";
1316
+        }
1317
+    }
1318
+    return array('field' => $fields, 'key' => $keys);
1319 1319
 
1320 1320
 }
1321 1321
 
1322 1322
 
1323 1323
 // http://doc.spip.org/@spip_sqlite_update
1324 1324
 function spip_sqlite_update($table, $champs, $where = '', $desc = '', $serveur = '', $requeter = true){
1325
-	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1326
-	$champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1327
-
1328
-	$set = array();
1329
-	foreach ($champs as $champ => $val)
1330
-		$set[] = $champ."=$val";
1331
-	if (!empty($set))
1332
-		return spip_sqlite_query(
1333
-			_sqlite_calculer_expression('UPDATE', $table, ',')
1334
-			._sqlite_calculer_expression('SET', $set, ',')
1335
-			._sqlite_calculer_expression('WHERE', $where),
1336
-			$serveur, $requeter);
1325
+    // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1326
+    $champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1327
+
1328
+    $set = array();
1329
+    foreach ($champs as $champ => $val)
1330
+        $set[] = $champ."=$val";
1331
+    if (!empty($set))
1332
+        return spip_sqlite_query(
1333
+            _sqlite_calculer_expression('UPDATE', $table, ',')
1334
+            ._sqlite_calculer_expression('SET', $set, ',')
1335
+            ._sqlite_calculer_expression('WHERE', $where),
1336
+            $serveur, $requeter);
1337 1337
 }
1338 1338
 
1339 1339
 
1340 1340
 // http://doc.spip.org/@spip_sqlite_updateq
1341 1341
 function spip_sqlite_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true){
1342 1342
 
1343
-	if (!$champs) return;
1344
-	if (!$desc) $desc = description_table($table, $serveur);
1345
-	if (!$desc) die("$table insertion sans description");
1346
-	$fields = $desc['field'];
1347
-
1348
-	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1349
-	$champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1350
-
1351
-	$set = array();
1352
-	foreach ($champs as $champ => $val){
1353
-		$set[] = $champ.'='._sqlite_calculer_cite($val, $fields[$champ]);
1354
-	}
1355
-	return spip_sqlite_query(
1356
-		_sqlite_calculer_expression('UPDATE', $table, ',')
1357
-		._sqlite_calculer_expression('SET', $set, ',')
1358
-		._sqlite_calculer_expression('WHERE', $where),
1359
-		$serveur, $requeter);
1343
+    if (!$champs) return;
1344
+    if (!$desc) $desc = description_table($table, $serveur);
1345
+    if (!$desc) die("$table insertion sans description");
1346
+    $fields = $desc['field'];
1347
+
1348
+    // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1349
+    $champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1350
+
1351
+    $set = array();
1352
+    foreach ($champs as $champ => $val){
1353
+        $set[] = $champ.'='._sqlite_calculer_cite($val, $fields[$champ]);
1354
+    }
1355
+    return spip_sqlite_query(
1356
+        _sqlite_calculer_expression('UPDATE', $table, ',')
1357
+        ._sqlite_calculer_expression('SET', $set, ',')
1358
+        ._sqlite_calculer_expression('WHERE', $where),
1359
+        $serveur, $requeter);
1360 1360
 }
1361 1361
 
1362 1362
 
@@ -1375,13 +1375,13 @@  discard block
 block discarded – undo
1375 1375
  * @return void
1376 1376
  */
1377 1377
 function _sqlite_init(){
1378
-	if (!defined('_DIR_DB')) define('_DIR_DB', _DIR_ETC.'bases/');
1379
-	if (!defined('_SQLITE_CHMOD')) define('_SQLITE_CHMOD', _SPIP_CHMOD);
1378
+    if (!defined('_DIR_DB')) define('_DIR_DB', _DIR_ETC.'bases/');
1379
+    if (!defined('_SQLITE_CHMOD')) define('_SQLITE_CHMOD', _SPIP_CHMOD);
1380 1380
 
1381
-	if (!is_dir($d = _DIR_DB)){
1382
-		include_spip('inc/flock');
1383
-		sous_repertoire($d);
1384
-	}
1381
+    if (!is_dir($d = _DIR_DB)){
1382
+        include_spip('inc/flock');
1383
+        sous_repertoire($d);
1384
+    }
1385 1385
 }
1386 1386
 
1387 1387
 
@@ -1396,16 +1396,16 @@  discard block
 block discarded – undo
1396 1396
  * @return bool|int
1397 1397
  */
1398 1398
 function _sqlite_is_version($version = '', $link = '', $serveur = '', $requeter = true){
1399
-	if ($link==='') $link = _sqlite_link($serveur);
1400
-	if (!$link) return false;
1401
-	if ($link instanceof PDO){
1402
-		$v = 3;
1403
-	} else {
1404
-		$v = 2;
1405
-	}
1406
-
1407
-	if (!$version) return $v;
1408
-	return ($version==$v);
1399
+    if ($link==='') $link = _sqlite_link($serveur);
1400
+    if (!$link) return false;
1401
+    if ($link instanceof PDO){
1402
+        $v = 3;
1403
+    } else {
1404
+        $v = 2;
1405
+    }
1406
+
1407
+    if (!$version) return $v;
1408
+    return ($version==$v);
1409 1409
 }
1410 1410
 
1411 1411
 
@@ -1417,8 +1417,8 @@  discard block
 block discarded – undo
1417 1417
  * @return
1418 1418
  */
1419 1419
 function _sqlite_link($serveur = ''){
1420
-	$link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1421
-	return $link;
1420
+    $link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1421
+    return $link;
1422 1422
 }
1423 1423
 
1424 1424
 
@@ -1434,41 +1434,41 @@  discard block
 block discarded – undo
1434 1434
  * @return string|array|number
1435 1435
  */
1436 1436
 function _sqlite_calculer_cite($v, $type){
1437
-	if ($type){
1438
-		if(is_null($v)
1439
-			AND stripos($type,"NOT NULL")===false) return 'NULL'; // null php se traduit en NULL SQL
1440
-
1441
-		if (sql_test_date($type) AND preg_match('/^\w+\(/', $v))
1442
-			return $v;
1443
-		if (sql_test_int($type)){
1444
-			if (is_numeric($v))
1445
-				return $v;
1446
-			elseif (ctype_xdigit(substr($v, 2)) AND strncmp($v, '0x', 2)==0)
1447
-				return hexdec(substr($v, 2));
1448
-			else
1449
-				return intval($v);
1450
-		}
1451
-	}
1452
-	else {
1453
-		// si on ne connait pas le type on le deduit de $v autant que possible
1454
-		if (is_numeric($v))
1455
-			return strval($v);
1456
-	}
1457
-
1458
-	if (function_exists('sqlite_escape_string')){
1459
-		return "'".sqlite_escape_string($v)."'";
1460
-	}
1461
-
1462
-	// trouver un link sqlite3 pour faire l'echappement
1463
-	foreach ($GLOBALS['connexions'] as $s){
1464
-		if (_sqlite_is_version(3, $l = $s['link'])){
1465
-			return $l->quote($v);
1466
-		}
1467
-	}
1468
-
1469
-	// echapper les ' en ''
1470
-	spip_log("Pas de methode sqlite_escape_string ni ->quote pour echapper","sqlite."._LOG_INFO_IMPORTANTE);
1471
-	return  ("'" . str_replace("'","''",$v) . "'");
1437
+    if ($type){
1438
+        if(is_null($v)
1439
+            AND stripos($type,"NOT NULL")===false) return 'NULL'; // null php se traduit en NULL SQL
1440
+
1441
+        if (sql_test_date($type) AND preg_match('/^\w+\(/', $v))
1442
+            return $v;
1443
+        if (sql_test_int($type)){
1444
+            if (is_numeric($v))
1445
+                return $v;
1446
+            elseif (ctype_xdigit(substr($v, 2)) AND strncmp($v, '0x', 2)==0)
1447
+                return hexdec(substr($v, 2));
1448
+            else
1449
+                return intval($v);
1450
+        }
1451
+    }
1452
+    else {
1453
+        // si on ne connait pas le type on le deduit de $v autant que possible
1454
+        if (is_numeric($v))
1455
+            return strval($v);
1456
+    }
1457
+
1458
+    if (function_exists('sqlite_escape_string')){
1459
+        return "'".sqlite_escape_string($v)."'";
1460
+    }
1461
+
1462
+    // trouver un link sqlite3 pour faire l'echappement
1463
+    foreach ($GLOBALS['connexions'] as $s){
1464
+        if (_sqlite_is_version(3, $l = $s['link'])){
1465
+            return $l->quote($v);
1466
+        }
1467
+    }
1468
+
1469
+    // echapper les ' en ''
1470
+    spip_log("Pas de methode sqlite_escape_string ni ->quote pour echapper","sqlite."._LOG_INFO_IMPORTANTE);
1471
+    return  ("'" . str_replace("'","''",$v) . "'");
1472 1472
 }
1473 1473
 
1474 1474
 
@@ -1482,19 +1482,19 @@  discard block
 block discarded – undo
1482 1482
  * @return string
1483 1483
  */
1484 1484
 function _sqlite_calculer_expression($expression, $v, $join = 'AND'){
1485
-	if (empty($v))
1486
-		return '';
1487
-
1488
-	$exp = "\n$expression ";
1489
-
1490
-	if (!is_array($v)){
1491
-		return $exp.$v;
1492
-	} else {
1493
-		if (strtoupper($join)==='AND')
1494
-			return $exp.join("\n\t$join ", array_map('_sqlite_calculer_where', $v));
1495
-		else
1496
-			return $exp.join($join, $v);
1497
-	}
1485
+    if (empty($v))
1486
+        return '';
1487
+
1488
+    $exp = "\n$expression ";
1489
+
1490
+    if (!is_array($v)){
1491
+        return $exp.$v;
1492
+    } else {
1493
+        if (strtoupper($join)==='AND')
1494
+            return $exp.join("\n\t$join ", array_map('_sqlite_calculer_where', $v));
1495
+        else
1496
+            return $exp.join($join, $v);
1497
+    }
1498 1498
 }
1499 1499
 
1500 1500
 
@@ -1506,31 +1506,31 @@  discard block
 block discarded – undo
1506 1506
  * @return string
1507 1507
  */
1508 1508
 function _sqlite_calculer_order($orderby){
1509
-	return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
1509
+    return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
1510 1510
 }
1511 1511
 
1512 1512
 
1513 1513
 // renvoie des 'nom AS alias' 
1514 1514
 // http://doc.spip.org/@_sqlite_calculer_select_as
1515 1515
 function _sqlite_calculer_select_as($args){
1516
-	$res = '';
1517
-	foreach ($args as $k => $v){
1518
-		if (substr($k, -1)=='@'){
1519
-			// c'est une jointure qui se refere au from precedent
1520
-			// pas de virgule
1521
-			$res .= '  '.$v;
1522
-		}
1523
-		else {
1524
-			if (!is_numeric($k)){
1525
-				$p = strpos($v, " ");
1526
-				if ($p)
1527
-					$v = substr($v, 0, $p)." AS '$k'".substr($v, $p);
1528
-				else $v .= " AS '$k'";
1529
-			}
1530
-			$res .= ', '.$v;
1531
-		}
1532
-	}
1533
-	return substr($res, 2);
1516
+    $res = '';
1517
+    foreach ($args as $k => $v){
1518
+        if (substr($k, -1)=='@'){
1519
+            // c'est une jointure qui se refere au from precedent
1520
+            // pas de virgule
1521
+            $res .= '  '.$v;
1522
+        }
1523
+        else {
1524
+            if (!is_numeric($k)){
1525
+                $p = strpos($v, " ");
1526
+                if ($p)
1527
+                    $v = substr($v, 0, $p)." AS '$k'".substr($v, $p);
1528
+                else $v .= " AS '$k'";
1529
+            }
1530
+            $res .= ', '.$v;
1531
+        }
1532
+    }
1533
+    return substr($res, 2);
1534 1534
 }
1535 1535
 
1536 1536
 
@@ -1542,23 +1542,23 @@  discard block
 block discarded – undo
1542 1542
  * @return array|mixed|string
1543 1543
  */
1544 1544
 function _sqlite_calculer_where($v){
1545
-	if (!is_array($v))
1546
-		return $v;
1547
-
1548
-	$op = array_shift($v);
1549
-	if (!($n = count($v)))
1550
-		return $op;
1551
-	else {
1552
-		$arg = _sqlite_calculer_where(array_shift($v));
1553
-		if ($n==1){
1554
-			return "$op($arg)";
1555
-		} else {
1556
-			$arg2 = _sqlite_calculer_where(array_shift($v));
1557
-			if ($n==2){
1558
-				return "($arg $op $arg2)";
1559
-			} else return "($arg $op ($arg2) : $v[0])";
1560
-		}
1561
-	}
1545
+    if (!is_array($v))
1546
+        return $v;
1547
+
1548
+    $op = array_shift($v);
1549
+    if (!($n = count($v)))
1550
+        return $op;
1551
+    else {
1552
+        $arg = _sqlite_calculer_where(array_shift($v));
1553
+        if ($n==1){
1554
+            return "$op($arg)";
1555
+        } else {
1556
+            $arg2 = _sqlite_calculer_where(array_shift($v));
1557
+            if ($n==2){
1558
+                return "($arg $op $arg2)";
1559
+            } else return "($arg $op ($arg2) : $v[0])";
1560
+        }
1561
+    }
1562 1562
 }
1563 1563
 
1564 1564
 
@@ -1573,23 +1573,23 @@  discard block
 block discarded – undo
1573 1573
  * @return array|bool
1574 1574
  */
1575 1575
 function _sqlite_charger_version($version = ''){
1576
-	$versions = array();
1577
-
1578
-	// version 2
1579
-	if (!$version || $version==2){
1580
-		if (charger_php_extension('sqlite')){
1581
-			$versions[] = 2;
1582
-		}
1583
-	}
1584
-
1585
-	// version 3
1586
-	if (!$version || $version==3){
1587
-		if (charger_php_extension('pdo') && charger_php_extension('pdo_sqlite')){
1588
-			$versions[] = 3;
1589
-		}
1590
-	}
1591
-	if ($version) return in_array($version, $versions);
1592
-	return $versions;
1576
+    $versions = array();
1577
+
1578
+    // version 2
1579
+    if (!$version || $version==2){
1580
+        if (charger_php_extension('sqlite')){
1581
+            $versions[] = 2;
1582
+        }
1583
+    }
1584
+
1585
+    // version 3
1586
+    if (!$version || $version==3){
1587
+        if (charger_php_extension('pdo') && charger_php_extension('pdo_sqlite')){
1588
+            $versions[] = 3;
1589
+        }
1590
+    }
1591
+    if ($version) return in_array($version, $versions);
1592
+    return $versions;
1593 1593
 }
1594 1594
 
1595 1595
 
@@ -1618,151 +1618,151 @@  discard block
 block discarded – undo
1618 1618
  */
1619 1619
 function _sqlite_modifier_table($table, $colonne, $opt = array(), $serveur = ''){
1620 1620
 
1621
-	if (is_array($table)){
1622
-		reset($table);
1623
-		list($table_origine,$table_destination) = each($table);
1624
-	} else {
1625
-		$table_origine = $table_destination = $table;
1626
-	}
1627
-	// ne prend actuellement qu'un changement
1628
-	// mais pourra etre adapte pour changer plus qu'une colonne a la fois
1629
-	if (is_array($colonne)){
1630
-		reset($colonne);
1631
-		list($colonne_origine,$colonne_destination) = each($colonne);
1632
-	} else {
1633
-		$colonne_origine = $colonne_destination = $colonne;
1634
-	}
1635
-	if (!isset($opt['field'])) $opt['field'] = array();
1636
-	if (!isset($opt['key'])) $opt['key'] = array();
1637
-
1638
-	// si les noms de tables sont differents, pas besoin de table temporaire
1639
-	// on prendra directement le nom de la future table
1640
-	$meme_table = ($table_origine==$table_destination);
1641
-
1642
-	$def_origine = sql_showtable($table_origine, false, $serveur);
1643
-	if (!$def_origine OR !isset($def_origine['field'])){
1644
-		spip_log("Alter table impossible sur $table_origine : table non trouvee",'sqlite'._LOG_ERREUR);
1645
-		return false;
1646
-	}
1647
-
1648
-
1649
-	$table_tmp = $table_origine.'_tmp';
1650
-
1651
-	// 1) creer une table temporaire avec les modifications	
1652
-	// - DROP : suppression de la colonne
1653
-	// - CHANGE : modification de la colonne
1654
-	// (foreach pour conserver l'ordre des champs)
1655
-
1656
-	// field 
1657
-	$fields = array();
1658
-	// pour le INSERT INTO plus loin
1659
-	// stocker la correspondance nouvelles->anciennes colonnes
1660
-	$fields_correspondances = array();
1661
-	foreach ($def_origine['field'] as $c => $d){
1662
-
1663
-		if ($colonne_origine && ($c==$colonne_origine)){
1664
-			// si pas DROP
1665
-			if ($colonne_destination){
1666
-				$fields[$colonne_destination] = $opt['field'][$colonne_destination];
1667
-				$fields_correspondances[$colonne_destination] = $c;
1668
-			}
1669
-		} else {
1670
-			$fields[$c] = $d;
1671
-			$fields_correspondances[$c] = $c;
1672
-		}
1673
-	}
1674
-	// cas de ADD sqlite2 (ajout du champ en fin de table):
1675
-	if (!$colonne_origine && $colonne_destination){
1676
-		$fields[$colonne_destination] = $opt['field'][$colonne_destination];
1677
-	}
1678
-
1679
-	// key...
1680
-	$keys = array();
1681
-	foreach ($def_origine['key'] as $c => $d){
1682
-		$c = str_replace($colonne_origine, $colonne_destination, $c);
1683
-		$d = str_replace($colonne_origine, $colonne_destination, $d);
1684
-		// seulement si on ne supprime pas la colonne !
1685
-		if ($d)
1686
-			$keys[$c] = $d;
1687
-	}
1688
-
1689
-	// autres keys, on merge
1690
-	$keys = array_merge($keys, $opt['key']);
1691
-	$queries = array();
1692
-
1693
-	// copier dans destination (si differente de origine), sinon tmp
1694
-	$table_copie = ($meme_table) ? $table_tmp : $table_destination;
1695
-	$autoinc = (isset($keys['PRIMARY KEY'])
1696
-					AND stripos($keys['PRIMARY KEY'],',')===false
1697
-					AND stripos($fields[$keys['PRIMARY KEY']],'default')===false);
1698
-
1699
-	if ($q = _sqlite_requete_create(
1700
-		$table_copie,
1701
-		$fields,
1702
-		$keys,
1703
-		$autoinc,
1704
-		$temporary = false,
1705
-		$ifnotexists = true,
1706
-		$serveur)){
1707
-		$queries[] = $q;
1708
-	}
1709
-
1710
-
1711
-	// 2) y copier les champs qui vont bien
1712
-	$champs_dest = join(', ', array_keys($fields_correspondances));
1713
-	$champs_ori = join(', ', $fields_correspondances);
1714
-	$queries[] = "INSERT INTO $table_copie ($champs_dest) SELECT $champs_ori FROM $table_origine";
1715
-
1716
-	// 3) supprimer la table d'origine
1717
-	$queries[] = "DROP TABLE $table_origine";
1718
-
1719
-	// 4) renommer la table temporaire 
1720
-	// avec le nom de la table destination
1721
-	// si necessaire
1722
-	if ($meme_table){
1723
-		if (_sqlite_is_version(3, '', $serveur)){
1724
-			$queries[] = "ALTER TABLE $table_copie RENAME TO $table_destination";
1725
-		} else {
1726
-			$queries[] = _sqlite_requete_create(
1727
-				$table_destination,
1728
-				$fields,
1729
-				$keys,
1730
-				$autoinc,
1731
-				$temporary = false,
1732
-				$ifnotexists = false, // la table existe puisqu'on est dans une transaction
1733
-				$serveur);
1734
-			$queries[] = "INSERT INTO $table_destination SELECT * FROM $table_copie";
1735
-			$queries[] = "DROP TABLE $table_copie";
1736
-		}
1737
-	}
1738
-
1739
-	// 5) remettre les index !
1740
-	foreach ($keys as $k => $v){
1741
-		if ($k=='PRIMARY KEY'){
1742
-		}
1743
-		else {
1744
-			// enlever KEY
1745
-			$k = substr($k, 4);
1746
-			$queries[] = "CREATE INDEX $table_destination"."_$k ON $table_destination ($v)";
1747
-		}
1748
-	}
1749
-
1750
-
1751
-	if (count($queries)){
1752
-		spip_sqlite::demarrer_transaction($serveur);
1753
-		// il faut les faire une par une car $query = join('; ', $queries).";"; ne fonctionne pas
1754
-		foreach ($queries as $q){
1755
-			if (!spip_sqlite::executer_requete($q, $serveur)){
1756
-				spip_log(_LOG_GRAVITE_ERREUR, "SQLite : ALTER TABLE table :"
1757
-																			." Erreur a l'execution de la requete : $q", 'sqlite');
1758
-				spip_sqlite::annuler_transaction($serveur);
1759
-				return false;
1760
-			}
1761
-		}
1762
-		spip_sqlite::finir_transaction($serveur);
1763
-	}
1764
-
1765
-	return true;
1621
+    if (is_array($table)){
1622
+        reset($table);
1623
+        list($table_origine,$table_destination) = each($table);
1624
+    } else {
1625
+        $table_origine = $table_destination = $table;
1626
+    }
1627
+    // ne prend actuellement qu'un changement
1628
+    // mais pourra etre adapte pour changer plus qu'une colonne a la fois
1629
+    if (is_array($colonne)){
1630
+        reset($colonne);
1631
+        list($colonne_origine,$colonne_destination) = each($colonne);
1632
+    } else {
1633
+        $colonne_origine = $colonne_destination = $colonne;
1634
+    }
1635
+    if (!isset($opt['field'])) $opt['field'] = array();
1636
+    if (!isset($opt['key'])) $opt['key'] = array();
1637
+
1638
+    // si les noms de tables sont differents, pas besoin de table temporaire
1639
+    // on prendra directement le nom de la future table
1640
+    $meme_table = ($table_origine==$table_destination);
1641
+
1642
+    $def_origine = sql_showtable($table_origine, false, $serveur);
1643
+    if (!$def_origine OR !isset($def_origine['field'])){
1644
+        spip_log("Alter table impossible sur $table_origine : table non trouvee",'sqlite'._LOG_ERREUR);
1645
+        return false;
1646
+    }
1647
+
1648
+
1649
+    $table_tmp = $table_origine.'_tmp';
1650
+
1651
+    // 1) creer une table temporaire avec les modifications	
1652
+    // - DROP : suppression de la colonne
1653
+    // - CHANGE : modification de la colonne
1654
+    // (foreach pour conserver l'ordre des champs)
1655
+
1656
+    // field 
1657
+    $fields = array();
1658
+    // pour le INSERT INTO plus loin
1659
+    // stocker la correspondance nouvelles->anciennes colonnes
1660
+    $fields_correspondances = array();
1661
+    foreach ($def_origine['field'] as $c => $d){
1662
+
1663
+        if ($colonne_origine && ($c==$colonne_origine)){
1664
+            // si pas DROP
1665
+            if ($colonne_destination){
1666
+                $fields[$colonne_destination] = $opt['field'][$colonne_destination];
1667
+                $fields_correspondances[$colonne_destination] = $c;
1668
+            }
1669
+        } else {
1670
+            $fields[$c] = $d;
1671
+            $fields_correspondances[$c] = $c;
1672
+        }
1673
+    }
1674
+    // cas de ADD sqlite2 (ajout du champ en fin de table):
1675
+    if (!$colonne_origine && $colonne_destination){
1676
+        $fields[$colonne_destination] = $opt['field'][$colonne_destination];
1677
+    }
1678
+
1679
+    // key...
1680
+    $keys = array();
1681
+    foreach ($def_origine['key'] as $c => $d){
1682
+        $c = str_replace($colonne_origine, $colonne_destination, $c);
1683
+        $d = str_replace($colonne_origine, $colonne_destination, $d);
1684
+        // seulement si on ne supprime pas la colonne !
1685
+        if ($d)
1686
+            $keys[$c] = $d;
1687
+    }
1688
+
1689
+    // autres keys, on merge
1690
+    $keys = array_merge($keys, $opt['key']);
1691
+    $queries = array();
1692
+
1693
+    // copier dans destination (si differente de origine), sinon tmp
1694
+    $table_copie = ($meme_table) ? $table_tmp : $table_destination;
1695
+    $autoinc = (isset($keys['PRIMARY KEY'])
1696
+                    AND stripos($keys['PRIMARY KEY'],',')===false
1697
+                    AND stripos($fields[$keys['PRIMARY KEY']],'default')===false);
1698
+
1699
+    if ($q = _sqlite_requete_create(
1700
+        $table_copie,
1701
+        $fields,
1702
+        $keys,
1703
+        $autoinc,
1704
+        $temporary = false,
1705
+        $ifnotexists = true,
1706
+        $serveur)){
1707
+        $queries[] = $q;
1708
+    }
1709
+
1710
+
1711
+    // 2) y copier les champs qui vont bien
1712
+    $champs_dest = join(', ', array_keys($fields_correspondances));
1713
+    $champs_ori = join(', ', $fields_correspondances);
1714
+    $queries[] = "INSERT INTO $table_copie ($champs_dest) SELECT $champs_ori FROM $table_origine";
1715
+
1716
+    // 3) supprimer la table d'origine
1717
+    $queries[] = "DROP TABLE $table_origine";
1718
+
1719
+    // 4) renommer la table temporaire 
1720
+    // avec le nom de la table destination
1721
+    // si necessaire
1722
+    if ($meme_table){
1723
+        if (_sqlite_is_version(3, '', $serveur)){
1724
+            $queries[] = "ALTER TABLE $table_copie RENAME TO $table_destination";
1725
+        } else {
1726
+            $queries[] = _sqlite_requete_create(
1727
+                $table_destination,
1728
+                $fields,
1729
+                $keys,
1730
+                $autoinc,
1731
+                $temporary = false,
1732
+                $ifnotexists = false, // la table existe puisqu'on est dans une transaction
1733
+                $serveur);
1734
+            $queries[] = "INSERT INTO $table_destination SELECT * FROM $table_copie";
1735
+            $queries[] = "DROP TABLE $table_copie";
1736
+        }
1737
+    }
1738
+
1739
+    // 5) remettre les index !
1740
+    foreach ($keys as $k => $v){
1741
+        if ($k=='PRIMARY KEY'){
1742
+        }
1743
+        else {
1744
+            // enlever KEY
1745
+            $k = substr($k, 4);
1746
+            $queries[] = "CREATE INDEX $table_destination"."_$k ON $table_destination ($v)";
1747
+        }
1748
+    }
1749
+
1750
+
1751
+    if (count($queries)){
1752
+        spip_sqlite::demarrer_transaction($serveur);
1753
+        // il faut les faire une par une car $query = join('; ', $queries).";"; ne fonctionne pas
1754
+        foreach ($queries as $q){
1755
+            if (!spip_sqlite::executer_requete($q, $serveur)){
1756
+                spip_log(_LOG_GRAVITE_ERREUR, "SQLite : ALTER TABLE table :"
1757
+                                                                            ." Erreur a l'execution de la requete : $q", 'sqlite');
1758
+                spip_sqlite::annuler_transaction($serveur);
1759
+                return false;
1760
+            }
1761
+        }
1762
+        spip_sqlite::finir_transaction($serveur);
1763
+    }
1764
+
1765
+    return true;
1766 1766
 }
1767 1767
 
1768 1768
 
@@ -1773,59 +1773,59 @@  discard block
 block discarded – undo
1773 1773
  * @return array
1774 1774
  */
1775 1775
 function _sqlite_ref_fonctions(){
1776
-	$fonctions = array(
1777
-		'alter' => 'spip_sqlite_alter',
1778
-		'count' => 'spip_sqlite_count',
1779
-		'countsel' => 'spip_sqlite_countsel',
1780
-		'create' => 'spip_sqlite_create',
1781
-		'create_base' => 'spip_sqlite_create_base',
1782
-		'create_view' => 'spip_sqlite_create_view',
1783
-		'date_proche' => 'spip_sqlite_date_proche',
1784
-		'delete' => 'spip_sqlite_delete',
1785
-		'drop_table' => 'spip_sqlite_drop_table',
1786
-		'drop_view' => 'spip_sqlite_drop_view',
1787
-		'errno' => 'spip_sqlite_errno',
1788
-		'error' => 'spip_sqlite_error',
1789
-		'explain' => 'spip_sqlite_explain',
1790
-		'fetch' => 'spip_sqlite_fetch',
1791
-		'seek' => 'spip_sqlite_seek',
1792
-		'free' => 'spip_sqlite_free',
1793
-		'hex' => 'spip_sqlite_hex',
1794
-		'in' => 'spip_sqlite_in',
1795
-		'insert' => 'spip_sqlite_insert',
1796
-		'insertq' => 'spip_sqlite_insertq',
1797
-		'insertq_multi' => 'spip_sqlite_insertq_multi',
1798
-		'listdbs' => 'spip_sqlite_listdbs',
1799
-		'multi' => 'spip_sqlite_multi',
1800
-		'optimize' => 'spip_sqlite_optimize',
1801
-		'query' => 'spip_sqlite_query',
1802
-		'quote' => 'spip_sqlite_quote',
1803
-		'replace' => 'spip_sqlite_replace',
1804
-		'replace_multi' => 'spip_sqlite_replace_multi',
1805
-		'select' => 'spip_sqlite_select',
1806
-		'selectdb' => 'spip_sqlite_selectdb',
1807
-		'set_charset' => 'spip_sqlite_set_charset',
1808
-		'get_charset' => 'spip_sqlite_get_charset',
1809
-		'showbase' => 'spip_sqlite_showbase',
1810
-		'showtable' => 'spip_sqlite_showtable',
1811
-		'update' => 'spip_sqlite_update',
1812
-		'updateq' => 'spip_sqlite_updateq',
1813
-		'preferer_transaction' => 'spip_sqlite_preferer_transaction',
1814
-		'demarrer_transaction' => 'spip_sqlite_demarrer_transaction',
1815
-		'terminer_transaction' => 'spip_sqlite_terminer_transaction',
1816
-	);
1817
-
1818
-	// association de chaque nom http d'un charset aux couples sqlite 
1819
-	// SQLite supporte utf-8 et utf-16 uniquement.
1820
-	$charsets = array(
1821
-		'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci'),
1822
-		//'utf-16be'=>array('charset'=>'utf16be','collation'=>'UTF-16BE'),// aucune idee de quoi il faut remplir dans es champs la
1823
-		//'utf-16le'=>array('charset'=>'utf16le','collation'=>'UTF-16LE')
1824
-	);
1825
-
1826
-	$fonctions['charsets'] = $charsets;
1827
-
1828
-	return $fonctions;
1776
+    $fonctions = array(
1777
+        'alter' => 'spip_sqlite_alter',
1778
+        'count' => 'spip_sqlite_count',
1779
+        'countsel' => 'spip_sqlite_countsel',
1780
+        'create' => 'spip_sqlite_create',
1781
+        'create_base' => 'spip_sqlite_create_base',
1782
+        'create_view' => 'spip_sqlite_create_view',
1783
+        'date_proche' => 'spip_sqlite_date_proche',
1784
+        'delete' => 'spip_sqlite_delete',
1785
+        'drop_table' => 'spip_sqlite_drop_table',
1786
+        'drop_view' => 'spip_sqlite_drop_view',
1787
+        'errno' => 'spip_sqlite_errno',
1788
+        'error' => 'spip_sqlite_error',
1789
+        'explain' => 'spip_sqlite_explain',
1790
+        'fetch' => 'spip_sqlite_fetch',
1791
+        'seek' => 'spip_sqlite_seek',
1792
+        'free' => 'spip_sqlite_free',
1793
+        'hex' => 'spip_sqlite_hex',
1794
+        'in' => 'spip_sqlite_in',
1795
+        'insert' => 'spip_sqlite_insert',
1796
+        'insertq' => 'spip_sqlite_insertq',
1797
+        'insertq_multi' => 'spip_sqlite_insertq_multi',
1798
+        'listdbs' => 'spip_sqlite_listdbs',
1799
+        'multi' => 'spip_sqlite_multi',
1800
+        'optimize' => 'spip_sqlite_optimize',
1801
+        'query' => 'spip_sqlite_query',
1802
+        'quote' => 'spip_sqlite_quote',
1803
+        'replace' => 'spip_sqlite_replace',
1804
+        'replace_multi' => 'spip_sqlite_replace_multi',
1805
+        'select' => 'spip_sqlite_select',
1806
+        'selectdb' => 'spip_sqlite_selectdb',
1807
+        'set_charset' => 'spip_sqlite_set_charset',
1808
+        'get_charset' => 'spip_sqlite_get_charset',
1809
+        'showbase' => 'spip_sqlite_showbase',
1810
+        'showtable' => 'spip_sqlite_showtable',
1811
+        'update' => 'spip_sqlite_update',
1812
+        'updateq' => 'spip_sqlite_updateq',
1813
+        'preferer_transaction' => 'spip_sqlite_preferer_transaction',
1814
+        'demarrer_transaction' => 'spip_sqlite_demarrer_transaction',
1815
+        'terminer_transaction' => 'spip_sqlite_terminer_transaction',
1816
+    );
1817
+
1818
+    // association de chaque nom http d'un charset aux couples sqlite 
1819
+    // SQLite supporte utf-8 et utf-16 uniquement.
1820
+    $charsets = array(
1821
+        'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci'),
1822
+        //'utf-16be'=>array('charset'=>'utf16be','collation'=>'UTF-16BE'),// aucune idee de quoi il faut remplir dans es champs la
1823
+        //'utf-16le'=>array('charset'=>'utf16le','collation'=>'UTF-16LE')
1824
+    );
1825
+
1826
+    $fonctions['charsets'] = $charsets;
1827
+
1828
+    return $fonctions;
1829 1829
 }
1830 1830
 
1831 1831
 
@@ -1838,55 +1838,55 @@  discard block
 block discarded – undo
1838 1838
  * @return mixed
1839 1839
  */
1840 1840
 function _sqlite_remplacements_definitions_table($query, $autoinc = false){
1841
-	// quelques remplacements
1842
-	$num = "(\s*\([0-9]*\))?";
1843
-	$enum = "(\s*\([^\)]*\))?";
1844
-
1845
-	$remplace = array(
1846
-		'/enum'.$enum.'/is' => 'VARCHAR(255)',
1847
-		'/COLLATE \w+_bin/is' => 'COLLATE BINARY',
1848
-		'/COLLATE \w+_ci/is' => 'COLLATE NOCASE',
1849
-		'/auto_increment/is' => '',
1850
-		'/(timestamp .* )ON .*$/is' => '\\1',
1851
-		'/character set \w+/is' => '',
1852
-		'/((big|small|medium|tiny)?int(eger)?)'.$num.'\s*unsigned/is' => '\\1 UNSIGNED',
1853
-		'/(text\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
1854
-		'/((char|varchar)'.$num.'\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
1855
-		'/(datetime\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00 00:00:00'",
1856
-		'/(date\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00'",
1857
-	);
1858
-
1859
-	// pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY
1860
-	$remplace_autocinc = array(
1861
-		'/(big|small|medium|tiny)?int(eger)?'.$num.'/is' => 'INTEGER'
1862
-	);
1863
-	// pour les int non autoincrement, il faut un DEFAULT
1864
-	$remplace_nonautocinc = array(
1865
-		'/((big|small|medium|tiny)?int(eger)?'.$num.'\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0",
1866
-	);
1867
-
1868
-	if (is_string($query)){
1869
-		$query = preg_replace(array_keys($remplace), $remplace, $query);
1870
-		if ($autoinc OR preg_match(',AUTO_INCREMENT,is',$query))
1871
-			$query = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query);
1872
-		else{
1873
-			$query = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query);
1874
-			$query = _sqlite_collate_ci($query);
1875
-		}
1876
-	}
1877
-	elseif(is_array($query)){
1878
-		foreach($query as $k=>$q) {
1879
-			$ai = ($autoinc?$k==$autoinc:preg_match(',AUTO_INCREMENT,is',$q));
1880
-			$query[$k] = preg_replace(array_keys($remplace), $remplace, $query[$k]);
1881
-			if ($ai)
1882
-				$query[$k] = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query[$k]);
1883
-			else{
1884
-				$query[$k] = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query[$k]);
1885
-				$query[$k] = _sqlite_collate_ci($query[$k]);
1886
-			}
1887
-		}
1888
-	}
1889
-	return $query;
1841
+    // quelques remplacements
1842
+    $num = "(\s*\([0-9]*\))?";
1843
+    $enum = "(\s*\([^\)]*\))?";
1844
+
1845
+    $remplace = array(
1846
+        '/enum'.$enum.'/is' => 'VARCHAR(255)',
1847
+        '/COLLATE \w+_bin/is' => 'COLLATE BINARY',
1848
+        '/COLLATE \w+_ci/is' => 'COLLATE NOCASE',
1849
+        '/auto_increment/is' => '',
1850
+        '/(timestamp .* )ON .*$/is' => '\\1',
1851
+        '/character set \w+/is' => '',
1852
+        '/((big|small|medium|tiny)?int(eger)?)'.$num.'\s*unsigned/is' => '\\1 UNSIGNED',
1853
+        '/(text\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
1854
+        '/((char|varchar)'.$num.'\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
1855
+        '/(datetime\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00 00:00:00'",
1856
+        '/(date\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00'",
1857
+    );
1858
+
1859
+    // pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY
1860
+    $remplace_autocinc = array(
1861
+        '/(big|small|medium|tiny)?int(eger)?'.$num.'/is' => 'INTEGER'
1862
+    );
1863
+    // pour les int non autoincrement, il faut un DEFAULT
1864
+    $remplace_nonautocinc = array(
1865
+        '/((big|small|medium|tiny)?int(eger)?'.$num.'\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0",
1866
+    );
1867
+
1868
+    if (is_string($query)){
1869
+        $query = preg_replace(array_keys($remplace), $remplace, $query);
1870
+        if ($autoinc OR preg_match(',AUTO_INCREMENT,is',$query))
1871
+            $query = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query);
1872
+        else{
1873
+            $query = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query);
1874
+            $query = _sqlite_collate_ci($query);
1875
+        }
1876
+    }
1877
+    elseif(is_array($query)){
1878
+        foreach($query as $k=>$q) {
1879
+            $ai = ($autoinc?$k==$autoinc:preg_match(',AUTO_INCREMENT,is',$q));
1880
+            $query[$k] = preg_replace(array_keys($remplace), $remplace, $query[$k]);
1881
+            if ($ai)
1882
+                $query[$k] = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query[$k]);
1883
+            else{
1884
+                $query[$k] = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query[$k]);
1885
+                $query[$k] = _sqlite_collate_ci($query[$k]);
1886
+            }
1887
+        }
1888
+    }
1889
+    return $query;
1890 1890
 }
1891 1891
 
1892 1892
 /**
@@ -1896,14 +1896,14 @@  discard block
 block discarded – undo
1896 1896
  * @return string
1897 1897
  */
1898 1898
 function _sqlite_collate_ci($champ){
1899
-	if (stripos($champ,"COLLATE")!==false)
1900
-		return $champ;
1901
-	if (stripos($champ,"BINARY")!==false)
1902
-		return str_ireplace("BINARY","COLLATE BINARY",$champ);
1903
-	if (preg_match(",^(char|varchar|(long|small|medium|tiny)?text),i",$champ))
1904
-		return $champ . " COLLATE NOCASE";
1905
-
1906
-	return $champ;
1899
+    if (stripos($champ,"COLLATE")!==false)
1900
+        return $champ;
1901
+    if (stripos($champ,"BINARY")!==false)
1902
+        return str_ireplace("BINARY","COLLATE BINARY",$champ);
1903
+    if (preg_match(",^(char|varchar|(long|small|medium|tiny)?text),i",$champ))
1904
+        return $champ . " COLLATE NOCASE";
1905
+
1906
+    return $champ;
1907 1907
 }
1908 1908
 
1909 1909
 
@@ -1924,61 +1924,61 @@  discard block
 block discarded – undo
1924 1924
  * @return bool|string
1925 1925
  */
1926 1926
 function _sqlite_requete_create($nom, $champs, $cles, $autoinc = false, $temporary = false, $_ifnotexists = true, $serveur = '', $requeter = true){
1927
-	$query = $keys = $s = $p = '';
1928
-
1929
-	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
1930
-	// sans les renseigner (laisse le compilo recuperer la description)
1931
-	if (!is_array($champs) || !is_array($cles))
1932
-		return;
1933
-
1934
-	// sqlite ne gere pas KEY tout court dans une requete CREATE TABLE
1935
-	// il faut passer par des create index
1936
-	// Il gere par contre primary key !
1937
-	// Soit la PK est definie dans les cles, soit dans un champs
1938
-	$c = ""; // le champ de cle primaire
1939
-	if (!isset($cles[$pk = "PRIMARY KEY"]) OR !$c = $cles[$pk]){
1940
-		foreach ($champs as $k => $v){
1941
-			if (false!==stripos($v, $pk)){
1942
-				$c = $k;
1943
-				// on n'en a plus besoin dans field, vu que defini dans key
1944
-				$champs[$k] = preg_replace("/$pk/is", '', $champs[$k]);
1945
-				break;
1946
-			}
1947
-		}
1948
-	}
1949
-	if ($c) $keys = "\n\t\t$pk ($c)";
1950
-	// Pas de DEFAULT 0 sur les cles primaires en auto-increment
1951
-	if (isset($champs[$c])
1952
-		AND stripos($champs[$c],"default 0")!==false){
1953
-		$champs[$c] = trim(str_ireplace("default 0","",$champs[$c]));
1954
-	}
1955
-
1956
-	$champs = _sqlite_remplacements_definitions_table($champs, $autoinc?$c:false);
1957
-	foreach ($champs as $k => $v){
1958
-		$query .= "$s\n\t\t$k $v";
1959
-		$s = ",";
1960
-	}
1961
-
1962
-	$ifnotexists = "";
1963
-	if ($_ifnotexists){
1964
-
1965
-		$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur);
1966
-		if (!function_exists('spip_version_compare')) include_spip('plugins/installer');
1967
-
1968
-		if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) {
1969
-			$ifnotexists = ' IF NOT EXISTS';
1970
-		} else {
1971
-			/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
1972
-			$a = spip_sqlite_showtable($table, $serveur);
1973
-			if (isset($a['key']['KEY '.$nom])) return true;
1974
-		}
1975
-
1976
-	}
1977
-
1978
-	$temporary = $temporary ? ' TEMPORARY' : '';
1979
-	$q = "CREATE$temporary TABLE$ifnotexists $nom ($query".($keys ? ",$keys" : '').")\n";
1980
-
1981
-	return $q;
1927
+    $query = $keys = $s = $p = '';
1928
+
1929
+    // certains plugins declarent les tables  (permet leur inclusion dans le dump)
1930
+    // sans les renseigner (laisse le compilo recuperer la description)
1931
+    if (!is_array($champs) || !is_array($cles))
1932
+        return;
1933
+
1934
+    // sqlite ne gere pas KEY tout court dans une requete CREATE TABLE
1935
+    // il faut passer par des create index
1936
+    // Il gere par contre primary key !
1937
+    // Soit la PK est definie dans les cles, soit dans un champs
1938
+    $c = ""; // le champ de cle primaire
1939
+    if (!isset($cles[$pk = "PRIMARY KEY"]) OR !$c = $cles[$pk]){
1940
+        foreach ($champs as $k => $v){
1941
+            if (false!==stripos($v, $pk)){
1942
+                $c = $k;
1943
+                // on n'en a plus besoin dans field, vu que defini dans key
1944
+                $champs[$k] = preg_replace("/$pk/is", '', $champs[$k]);
1945
+                break;
1946
+            }
1947
+        }
1948
+    }
1949
+    if ($c) $keys = "\n\t\t$pk ($c)";
1950
+    // Pas de DEFAULT 0 sur les cles primaires en auto-increment
1951
+    if (isset($champs[$c])
1952
+        AND stripos($champs[$c],"default 0")!==false){
1953
+        $champs[$c] = trim(str_ireplace("default 0","",$champs[$c]));
1954
+    }
1955
+
1956
+    $champs = _sqlite_remplacements_definitions_table($champs, $autoinc?$c:false);
1957
+    foreach ($champs as $k => $v){
1958
+        $query .= "$s\n\t\t$k $v";
1959
+        $s = ",";
1960
+    }
1961
+
1962
+    $ifnotexists = "";
1963
+    if ($_ifnotexists){
1964
+
1965
+        $version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur);
1966
+        if (!function_exists('spip_version_compare')) include_spip('plugins/installer');
1967
+
1968
+        if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) {
1969
+            $ifnotexists = ' IF NOT EXISTS';
1970
+        } else {
1971
+            /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
1972
+            $a = spip_sqlite_showtable($table, $serveur);
1973
+            if (isset($a['key']['KEY '.$nom])) return true;
1974
+        }
1975
+
1976
+    }
1977
+
1978
+    $temporary = $temporary ? ' TEMPORARY' : '';
1979
+    $q = "CREATE$temporary TABLE$ifnotexists $nom ($query".($keys ? ",$keys" : '').")\n";
1980
+
1981
+    return $q;
1982 1982
 }
1983 1983
 
1984 1984
 
@@ -1999,31 +1999,31 @@  discard block
 block discarded – undo
1999 1999
  * @return
2000 2000
  */
2001 2001
 function _sqlite_ajouter_champs_timestamp($table, $couples, $desc = '', $serveur = ''){
2002
-	static $tables = array();
2003
-
2004
-	if (!isset($tables[$table])){
2005
-
2006
-		if (!$desc){
2007
-			$trouver_table = charger_fonction('trouver_table', 'base');
2008
-			$desc = $trouver_table($table, $serveur);
2009
-			// si pas de description, on ne fait rien, ou on die() ?
2010
-			if (!$desc) return $couples;
2011
-		}
2012
-
2013
-		// recherche des champs avec simplement 'TIMESTAMP'
2014
-		// cependant, il faudra peut etre etendre
2015
-		// avec la gestion de DEFAULT et ON UPDATE
2016
-		// mais ceux-ci ne sont pas utilises dans le core
2017
-		$tables[$table] = array();
2018
-
2019
-		foreach ($desc['field'] as $k => $v){
2020
-			if (strpos(strtolower(ltrim($v)), 'timestamp')===0)
2021
-				$tables[$table][$k] = "datetime('now')";
2022
-		}
2023
-	}
2024
-
2025
-	// ajout des champs type 'timestamp' absents
2026
-	return array_merge($tables[$table],$couples);
2002
+    static $tables = array();
2003
+
2004
+    if (!isset($tables[$table])){
2005
+
2006
+        if (!$desc){
2007
+            $trouver_table = charger_fonction('trouver_table', 'base');
2008
+            $desc = $trouver_table($table, $serveur);
2009
+            // si pas de description, on ne fait rien, ou on die() ?
2010
+            if (!$desc) return $couples;
2011
+        }
2012
+
2013
+        // recherche des champs avec simplement 'TIMESTAMP'
2014
+        // cependant, il faudra peut etre etendre
2015
+        // avec la gestion de DEFAULT et ON UPDATE
2016
+        // mais ceux-ci ne sont pas utilises dans le core
2017
+        $tables[$table] = array();
2018
+
2019
+        foreach ($desc['field'] as $k => $v){
2020
+            if (strpos(strtolower(ltrim($v)), 'timestamp')===0)
2021
+                $tables[$table][$k] = "datetime('now')";
2022
+        }
2023
+    }
2024
+
2025
+    // ajout des champs type 'timestamp' absents
2026
+    return array_merge($tables[$table],$couples);
2027 2027
 }
2028 2028
 
2029 2029
 
@@ -2035,69 +2035,69 @@  discard block
 block discarded – undo
2035 2035
  * @return array|bool
2036 2036
  */
2037 2037
 function spip_versions_sqlite(){
2038
-	return _sqlite_charger_version();
2038
+    return _sqlite_charger_version();
2039 2039
 }
2040 2040
 
2041 2041
 
2042 2042
 class spip_sqlite {
2043
-	static $requeteurs = array();
2044
-	static $transaction_en_cours = array();
2045
-
2046
-	function spip_sqlite(){}
2047
-
2048
-	/**
2049
-	 * Retourne une unique instance du requêteur
2050
-	 *
2051
-	 * Retourne une instance unique du requêteur pour une connexion SQLite
2052
-	 * donnée
2053
-	 *
2054
-	 * @param string $serveur
2055
-	 * 		Nom du connecteur
2056
-	 * @return sqlite_requeteur
2057
-	 * 		Instance unique du requêteur
2058
-	**/
2059
-	static function requeteur($serveur){
2060
-		if (!isset(spip_sqlite::$requeteurs[$serveur]))
2061
-			spip_sqlite::$requeteurs[$serveur] = new sqlite_requeteur($serveur);
2062
-		return spip_sqlite::$requeteurs[$serveur];
2063
-	}
2064
-
2065
-	static function traduire_requete($query, $serveur){
2066
-		$requeteur = spip_sqlite::requeteur($serveur);
2067
-		$traducteur = new sqlite_traducteur($query, $requeteur->prefixe,$requeteur->sqlite_version);
2068
-		return $traducteur->traduire_requete();
2069
-	}
2070
-
2071
-	static function demarrer_transaction($serveur){
2072
-		spip_sqlite::executer_requete("BEGIN TRANSACTION",$serveur);
2073
-		spip_sqlite::$transaction_en_cours[$serveur] = true;
2074
-	}
2075
-
2076
-	static function executer_requete($query, $serveur, $tracer=null){
2077
-		$requeteur = spip_sqlite::requeteur($serveur);
2078
-		return $requeteur->executer_requete($query, $tracer);
2079
-	}
2080
-
2081
-	static function last_insert_id($serveur){
2082
-		$requeteur = spip_sqlite::requeteur($serveur);
2083
-		return $requeteur->last_insert_id($serveur);
2084
-	}
2085
-
2086
-	static function annuler_transaction($serveur){
2087
-		spip_sqlite::executer_requete("ROLLBACK",$serveur);
2088
-		spip_sqlite::$transaction_en_cours[$serveur] = false;
2089
-	}
2090
-
2091
-	static function finir_transaction($serveur){
2092
-		// si pas de transaction en cours, ne rien faire et le dire
2093
-		if (!isset (spip_sqlite::$transaction_en_cours[$serveur])
2094
-		  OR spip_sqlite::$transaction_en_cours[$serveur]==false)
2095
-			return false;
2096
-		// sinon fermer la transaction et retourner true
2097
-		spip_sqlite::executer_requete("COMMIT",$serveur);
2098
-		spip_sqlite::$transaction_en_cours[$serveur] = false;
2099
-		return true;
2100
-	}
2043
+    static $requeteurs = array();
2044
+    static $transaction_en_cours = array();
2045
+
2046
+    function spip_sqlite(){}
2047
+
2048
+    /**
2049
+     * Retourne une unique instance du requêteur
2050
+     *
2051
+     * Retourne une instance unique du requêteur pour une connexion SQLite
2052
+     * donnée
2053
+     *
2054
+     * @param string $serveur
2055
+     * 		Nom du connecteur
2056
+     * @return sqlite_requeteur
2057
+     * 		Instance unique du requêteur
2058
+     **/
2059
+    static function requeteur($serveur){
2060
+        if (!isset(spip_sqlite::$requeteurs[$serveur]))
2061
+            spip_sqlite::$requeteurs[$serveur] = new sqlite_requeteur($serveur);
2062
+        return spip_sqlite::$requeteurs[$serveur];
2063
+    }
2064
+
2065
+    static function traduire_requete($query, $serveur){
2066
+        $requeteur = spip_sqlite::requeteur($serveur);
2067
+        $traducteur = new sqlite_traducteur($query, $requeteur->prefixe,$requeteur->sqlite_version);
2068
+        return $traducteur->traduire_requete();
2069
+    }
2070
+
2071
+    static function demarrer_transaction($serveur){
2072
+        spip_sqlite::executer_requete("BEGIN TRANSACTION",$serveur);
2073
+        spip_sqlite::$transaction_en_cours[$serveur] = true;
2074
+    }
2075
+
2076
+    static function executer_requete($query, $serveur, $tracer=null){
2077
+        $requeteur = spip_sqlite::requeteur($serveur);
2078
+        return $requeteur->executer_requete($query, $tracer);
2079
+    }
2080
+
2081
+    static function last_insert_id($serveur){
2082
+        $requeteur = spip_sqlite::requeteur($serveur);
2083
+        return $requeteur->last_insert_id($serveur);
2084
+    }
2085
+
2086
+    static function annuler_transaction($serveur){
2087
+        spip_sqlite::executer_requete("ROLLBACK",$serveur);
2088
+        spip_sqlite::$transaction_en_cours[$serveur] = false;
2089
+    }
2090
+
2091
+    static function finir_transaction($serveur){
2092
+        // si pas de transaction en cours, ne rien faire et le dire
2093
+        if (!isset (spip_sqlite::$transaction_en_cours[$serveur])
2094
+          OR spip_sqlite::$transaction_en_cours[$serveur]==false)
2095
+            return false;
2096
+        // sinon fermer la transaction et retourner true
2097
+        spip_sqlite::executer_requete("COMMIT",$serveur);
2098
+        spip_sqlite::$transaction_en_cours[$serveur] = false;
2099
+        return true;
2100
+    }
2101 2101
 }
2102 2102
 
2103 2103
 /*
@@ -2108,111 +2108,111 @@  discard block
 block discarded – undo
2108 2108
  * 
2109 2109
  */
2110 2110
 class sqlite_requeteur {
2111
-	var $query = ''; // la requete
2112
-	var $serveur = ''; // le serveur
2113
-	var $link = ''; // le link (ressource) sqlite
2114
-	var $prefixe = ''; // le prefixe des tables
2115
-	var $db = ''; // le nom de la base 
2116
-	var $tracer = false; // doit-on tracer les requetes (var_profile)
2117
-
2118
-	var $sqlite_version = ''; // Version de sqlite (2 ou 3)
2119
-
2120
-	/**
2121
-	 * constructeur
2122
-	 * http://doc.spip.org/@sqlite_traiter_requete
2123
-	 *
2124
-	 * @param  $query
2125
-	 * @param string $serveur
2126
-	 * @return bool
2127
-	 */
2128
-	function sqlite_requeteur($serveur = ''){
2129
-		_sqlite_init();
2130
-		$this->serveur = strtolower($serveur);
2131
-
2132
-		if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)){
2133
-			spip_log("Aucune connexion sqlite (link)", 'sqlite.'._LOG_ERREUR);
2134
-			return false;
2135
-		}
2136
-
2137
-		$this->sqlite_version = _sqlite_is_version('', $this->link);
2138
-
2139
-		$this->prefixe = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['prefixe'];
2140
-		$this->db = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['db'];
2141
-
2142
-		// tracage des requetes ?
2143
-		$this->tracer = (isset($_GET['var_profile']) && $_GET['var_profile']);
2144
-	}
2145
-
2146
-	/**
2147
-	 * lancer la requete $query,
2148
-	 * faire le tracage si demande
2149
-	 * http://doc.spip.org/@executer_requete
2150
-	 *
2151
-	 * @return bool|SQLiteResult
2152
-	 */
2153
-	function executer_requete($query, $tracer=null){
2154
-		if (is_null($tracer))
2155
-			$tracer = $this->tracer;
2156
-		$err = "";
2157
-		$t = 0;
2158
-		if ($tracer){
2159
-			include_spip('public/tracer');
2160
-			$t = trace_query_start();
2161
-		}
2111
+    var $query = ''; // la requete
2112
+    var $serveur = ''; // le serveur
2113
+    var $link = ''; // le link (ressource) sqlite
2114
+    var $prefixe = ''; // le prefixe des tables
2115
+    var $db = ''; // le nom de la base 
2116
+    var $tracer = false; // doit-on tracer les requetes (var_profile)
2117
+
2118
+    var $sqlite_version = ''; // Version de sqlite (2 ou 3)
2119
+
2120
+    /**
2121
+     * constructeur
2122
+     * http://doc.spip.org/@sqlite_traiter_requete
2123
+     *
2124
+     * @param  $query
2125
+     * @param string $serveur
2126
+     * @return bool
2127
+     */
2128
+    function sqlite_requeteur($serveur = ''){
2129
+        _sqlite_init();
2130
+        $this->serveur = strtolower($serveur);
2131
+
2132
+        if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)){
2133
+            spip_log("Aucune connexion sqlite (link)", 'sqlite.'._LOG_ERREUR);
2134
+            return false;
2135
+        }
2136
+
2137
+        $this->sqlite_version = _sqlite_is_version('', $this->link);
2138
+
2139
+        $this->prefixe = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['prefixe'];
2140
+        $this->db = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['db'];
2141
+
2142
+        // tracage des requetes ?
2143
+        $this->tracer = (isset($_GET['var_profile']) && $_GET['var_profile']);
2144
+    }
2145
+
2146
+    /**
2147
+     * lancer la requete $query,
2148
+     * faire le tracage si demande
2149
+     * http://doc.spip.org/@executer_requete
2150
+     *
2151
+     * @return bool|SQLiteResult
2152
+     */
2153
+    function executer_requete($query, $tracer=null){
2154
+        if (is_null($tracer))
2155
+            $tracer = $this->tracer;
2156
+        $err = "";
2157
+        $t = 0;
2158
+        if ($tracer){
2159
+            include_spip('public/tracer');
2160
+            $t = trace_query_start();
2161
+        }
2162 2162
 		
2163
-		# spip_log("requete: $this->serveur >> $query",'sqlite.'._LOG_DEBUG); // boum ? pourquoi ?
2164
-		if ($this->link){
2165
-			// memoriser la derniere erreur PHP vue
2166
-			$e = (function_exists('error_get_last')?error_get_last():"");
2167
-			// sauver la derniere requete
2168
-			$GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['last'] = $query;
2169
-
2170
-			if ($this->sqlite_version==3){
2171
-				$r = $this->link->query($query);
2172
-				// sauvegarde de la requete (elle y est deja dans $r->queryString)
2173
-				# $r->spipQueryString = $query;
2174
-
2175
-				// comptage : oblige de compter le nombre d'entrees retournees 
2176
-				// par une requete SELECT
2177
-				// aucune autre solution ne donne le nombre attendu :( !
2178
-				// particulierement s'il y a des LIMIT dans la requete.
2179
-				if (strtoupper(substr(ltrim($query), 0, 6))=='SELECT'){
2180
-					if ($r){
2181
-						// noter le link et la query pour faire le comptage *si* on en a besoin
2182
-						$r->spipSqliteRowCount = array($this->link,$query);
2183
-					}
2184
-					elseif ($r instanceof PDOStatement) {
2185
-						$r->spipSqliteRowCount = 0;
2186
-					}
2187
-				}
2188
-			}
2189
-			else {
2190
-				$r = sqlite_query($this->link, $query);
2191
-			}
2192
-
2193
-			// loger les warnings/erreurs eventuels de sqlite remontant dans PHP
2194
-			if ($err = (function_exists('error_get_last')?error_get_last():"") AND $err!=$e){
2195
-				$err = strip_tags($err['message'])." in ".$err['file']." line ".$err['line'];
2196
-				spip_log("$err - ".$query, 'sqlite.'._LOG_ERREUR);
2197
-			}
2198
-			else $err = "";
2199
-
2200
-		}
2201
-		else {
2202
-			$r = false;
2203
-		}
2204
-
2205
-		if (spip_sqlite_errno($this->serveur))
2206
-			$err .= spip_sqlite_error($query, $this->serveur);
2207
-		return $t ? trace_query_end($query, $t, $r, $err, $this->serveur) : $r;
2208
-	}
2209
-
2210
-	function last_insert_id(){
2211
-		if ($this->sqlite_version==3)
2212
-			return $this->link->lastInsertId();
2213
-		else
2214
-			return sqlite_last_insert_rowid($this->link);
2215
-	}
2163
+        # spip_log("requete: $this->serveur >> $query",'sqlite.'._LOG_DEBUG); // boum ? pourquoi ?
2164
+        if ($this->link){
2165
+            // memoriser la derniere erreur PHP vue
2166
+            $e = (function_exists('error_get_last')?error_get_last():"");
2167
+            // sauver la derniere requete
2168
+            $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['last'] = $query;
2169
+
2170
+            if ($this->sqlite_version==3){
2171
+                $r = $this->link->query($query);
2172
+                // sauvegarde de la requete (elle y est deja dans $r->queryString)
2173
+                # $r->spipQueryString = $query;
2174
+
2175
+                // comptage : oblige de compter le nombre d'entrees retournees 
2176
+                // par une requete SELECT
2177
+                // aucune autre solution ne donne le nombre attendu :( !
2178
+                // particulierement s'il y a des LIMIT dans la requete.
2179
+                if (strtoupper(substr(ltrim($query), 0, 6))=='SELECT'){
2180
+                    if ($r){
2181
+                        // noter le link et la query pour faire le comptage *si* on en a besoin
2182
+                        $r->spipSqliteRowCount = array($this->link,$query);
2183
+                    }
2184
+                    elseif ($r instanceof PDOStatement) {
2185
+                        $r->spipSqliteRowCount = 0;
2186
+                    }
2187
+                }
2188
+            }
2189
+            else {
2190
+                $r = sqlite_query($this->link, $query);
2191
+            }
2192
+
2193
+            // loger les warnings/erreurs eventuels de sqlite remontant dans PHP
2194
+            if ($err = (function_exists('error_get_last')?error_get_last():"") AND $err!=$e){
2195
+                $err = strip_tags($err['message'])." in ".$err['file']." line ".$err['line'];
2196
+                spip_log("$err - ".$query, 'sqlite.'._LOG_ERREUR);
2197
+            }
2198
+            else $err = "";
2199
+
2200
+        }
2201
+        else {
2202
+            $r = false;
2203
+        }
2204
+
2205
+        if (spip_sqlite_errno($this->serveur))
2206
+            $err .= spip_sqlite_error($query, $this->serveur);
2207
+        return $t ? trace_query_end($query, $t, $r, $err, $this->serveur) : $r;
2208
+    }
2209
+
2210
+    function last_insert_id(){
2211
+        if ($this->sqlite_version==3)
2212
+            return $this->link->lastInsertId();
2213
+        else
2214
+            return sqlite_last_insert_rowid($this->link);
2215
+    }
2216 2216
 }
2217 2217
 
2218 2218
 
@@ -2222,185 +2222,185 @@  discard block
 block discarded – undo
2222 2222
  * (fonction pour proteger les textes)
2223 2223
  */
2224 2224
 class sqlite_traducteur {
2225
-	var $query = '';
2226
-	var $prefixe = ''; // le prefixe des tables
2227
-	var $sqlite_version = ''; // Version de sqlite (2 ou 3)
2225
+    var $query = '';
2226
+    var $prefixe = ''; // le prefixe des tables
2227
+    var $sqlite_version = ''; // Version de sqlite (2 ou 3)
2228 2228
 	
2229
-	// Pour les corrections a effectuer sur les requetes :
2230
-	var $textes = array(); // array(code=>'texte') trouvé
2231
-
2232
-	function sqlite_traducteur($query, $prefixe, $sqlite_version){
2233
-		$this->query = $query;
2234
-		$this->prefixe = $prefixe;
2235
-		$this->sqlite_version = $sqlite_version;
2236
-	}
2237
-
2238
-	/**
2239
-	 * transformer la requete pour sqlite
2240
-	 * enleve les textes, transforme la requete pour quelle soit
2241
-	 * bien interpretee par sqlite, puis remet les textes
2242
-	 * la fonction affecte $this->query
2243
-	 * http://doc.spip.org/@traduire_requete
2244
-	 *
2245
-	 * @return void
2246
-	 */
2247
-	function traduire_requete(){
2248
-		//
2249
-		// 1) Protection des textes en les remplacant par des codes
2250
-		//
2251
-		// enlever les 'textes' et initialiser avec
2252
-		list($this->query, $textes) = query_echappe_textes($this->query);
2253
-
2254
-		//
2255
-		// 2) Corrections de la requete
2256
-		//
2257
-		// Correction Create Database
2258
-		// Create Database -> requete ignoree
2259
-		if (strpos($this->query, 'CREATE DATABASE')===0){
2260
-			spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.'._LOG_AVERTISSEMENT);
2261
-			$this->query = "SELECT 1";
2262
-		}
2263
-
2264
-		// Correction Insert Ignore
2265
-		// INSERT IGNORE -> insert (tout court et pas 'insert or replace')
2266
-		if (strpos($this->query, 'INSERT IGNORE')===0){
2267
-			spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.'._LOG_DEBUG);
2268
-			$this->query = 'INSERT '.substr($this->query, '13');
2269
-		}
2270
-
2271
-		// Correction des dates avec INTERVAL
2272
-		// utiliser sql_date_proche() de preference
2273
-		if (strpos($this->query, 'INTERVAL')!==false){
2274
-			$this->query = preg_replace_callback("/DATE_(ADD|SUB)(.*)INTERVAL\s+(\d+)\s+([a-zA-Z]+)\)/U",
2275
-			                                     array(&$this, '_remplacerDateParTime'),
2276
-			                                     $this->query);
2277
-		}
2278
-
2279
-		if (strpos($this->query, 'LEFT(')!==false){
2280
-			$this->query = str_replace('LEFT(','_LEFT(',$this->query);
2281
-		}
2282
-
2283
-		if (strpos($this->query, 'TIMESTAMPDIFF(')!==false){
2284
-			$this->query = preg_replace('/TIMESTAMPDIFF\(\s*([^,]*)\s*,/Uims',"TIMESTAMPDIFF('\\1',",$this->query);
2285
-		}
2286
-
2287
-
2288
-		// Correction Using
2289
-		// USING (non reconnu en sqlite2)
2290
-		// problematique car la jointure ne se fait pas du coup.
2291
-		if (($this->sqlite_version==2) && (strpos($this->query, "USING")!==false)){
2292
-			spip_log("'USING (champ)' n'est pas reconnu en SQLite 2. Utilisez 'ON table1.champ = table2.champ'", 'sqlite.'._LOG_ERREUR);
2293
-			$this->query = preg_replace('/USING\s*\([^\)]*\)/', '', $this->query);
2294
-		}
2295
-
2296
-		// Correction Field
2297
-		// remplace FIELD(table,i,j,k...) par CASE WHEN table=i THEN n ... ELSE 0 END
2298
-		if (strpos($this->query, 'FIELD')!==false){
2299
-			$this->query = preg_replace_callback('/FIELD\s*\(([^\)]*)\)/',
2300
-			                                     array(&$this, '_remplacerFieldParCase'),
2301
-			                                     $this->query);
2302
-		}
2303
-
2304
-		// Correction des noms de tables FROM
2305
-		// mettre les bons noms de table dans from, update, insert, replace...
2306
-		if (preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/iS', $this->query, $regs)){
2307
-			$suite = strstr($this->query, $regs[0]);
2308
-			$this->query = substr($this->query, 0, -strlen($suite));
2309
-		}
2310
-		else
2311
-			$suite = '';
2312
-		$pref = ($this->prefixe) ? $this->prefixe."_" : "";
2313
-		$this->query = preg_replace('/([,\s])spip_/S', '\1'.$pref, $this->query).$suite;
2314
-
2315
-		// Correction zero AS x
2316
-		// pg n'aime pas 0+x AS alias, sqlite, dans le meme style, 
2317
-		// n'apprecie pas du tout SELECT 0 as x ... ORDER BY x
2318
-		// il dit que x ne doit pas être un integer dans le order by !
2319
-		// on remplace du coup x par vide() dans ce cas uniquement
2320
-		//
2321
-		// rien que pour public/vertebrer.php ?
2322
-		if ((strpos($this->query, "0 AS")!==false)){
2323
-			// on ne remplace que dans ORDER BY ou GROUP BY
2324
-			if (preg_match('/\s(ORDER|GROUP) BY\s/i', $this->query, $regs)){
2325
-				$suite = strstr($this->query, $regs[0]);
2326
-				$this->query = substr($this->query, 0, -strlen($suite));
2327
-
2328
-				// on cherche les noms des x dans 0 AS x
2329
-				// on remplace dans $suite le nom par vide()
2330
-				preg_match_all('/\b0 AS\s*([^\s,]+)/', $this->query, $matches, PREG_PATTERN_ORDER);
2331
-				foreach ($matches[1] as $m){
2332
-					$suite = str_replace($m, 'VIDE()', $suite);
2333
-				}
2334
-				$this->query .= $suite;
2335
-			}
2336
-		}
2337
-
2338
-		// Correction possible des divisions entieres
2339
-		// Le standard SQL (lequel? ou?) semble indiquer que
2340
-		// a/b=c doit donner c entier si a et b sont entiers 4/3=1.
2341
-		// C'est ce que retournent effectivement SQL Server et SQLite
2342
-		// Ce n'est pas ce qu'applique MySQL qui retourne un reel : 4/3=1.333...
2343
-		// 
2344
-		// On peut forcer la conversion en multipliant par 1.0 avant la division
2345
-		// /!\ SQLite 3.5.9 Debian/Ubuntu est victime d'un bug en plus ! 
2346
-		// cf. https://bugs.launchpad.net/ubuntu/+source/sqlite3/+bug/254228
2347
-		//     http://www.sqlite.org/cvstrac/tktview?tn=3202
2348
-		// (4*1.0/3) n'est pas rendu dans ce cas !
2349
-		# $this->query = str_replace('/','* 1.00 / ',$this->query);
2350
-
2351
-
2352
-		// Correction critere REGEXP, non reconnu en sqlite2
2353
-		if (($this->sqlite_version==2) && (strpos($this->query, 'REGEXP')!==false)){
2354
-			$this->query = preg_replace('/([^\s\(]*)(\s*)REGEXP(\s*)([^\s\)]*)/', 'REGEXP($4, $1)', $this->query);
2355
-		}
2356
-
2357
-		//
2358
-		// 3) Remise en place des textes d'origine
2359
-		//
2360
-		// Correction Antiquotes et echappements
2361
-		// ` => rien
2362
-		if (strpos($this->query,'`')!==false)
2363
-			$this->query = str_replace('`','', $this->query);
2364
-
2365
-		$this->query = query_reinjecte_textes($this->query, $textes);
2366
-
2367
-		return $this->query;
2368
-	}
2369
-
2370
-
2371
-	/**
2372
-	 * les callbacks
2373
-	 * remplacer DATE_ / INTERVAL par DATE...strtotime
2374
-	 * http://doc.spip.org/@_remplacerDateParTime
2375
-	 *
2376
-	 * @param  $matches
2377
-	 * @return string
2378
-	 */
2379
-	function _remplacerDateParTime($matches){
2380
-		$op = strtoupper($matches[1]=='ADD') ? '+' : '-';
2381
-		return "datetime$matches[2] '$op$matches[3] $matches[4]')";
2382
-	}
2383
-
2384
-	/**
2385
-	 * callback ou l'on remplace FIELD(table,i,j,k...) par CASE WHEN table=i THEN n ... ELSE 0 END
2386
-	 * http://doc.spip.org/@_remplacerFieldParCase
2387
-	 *
2388
-	 * @param  $matches
2389
-	 * @return string
2390
-	 */
2391
-	function _remplacerFieldParCase($matches){
2392
-		$fields = substr($matches[0], 6, -1); // ne recuperer que l'interieur X de field(X)
2393
-		$t = explode(',', $fields);
2394
-		$index = array_shift($t);
2395
-
2396
-		$res = '';
2397
-		$n = 0;
2398
-		foreach ($t as $v){
2399
-			$n++;
2400
-			$res .= "\nWHEN $index=$v THEN $n";
2401
-		}
2402
-		return "CASE $res ELSE 0 END ";
2403
-	}
2229
+    // Pour les corrections a effectuer sur les requetes :
2230
+    var $textes = array(); // array(code=>'texte') trouvé
2231
+
2232
+    function sqlite_traducteur($query, $prefixe, $sqlite_version){
2233
+        $this->query = $query;
2234
+        $this->prefixe = $prefixe;
2235
+        $this->sqlite_version = $sqlite_version;
2236
+    }
2237
+
2238
+    /**
2239
+     * transformer la requete pour sqlite
2240
+     * enleve les textes, transforme la requete pour quelle soit
2241
+     * bien interpretee par sqlite, puis remet les textes
2242
+     * la fonction affecte $this->query
2243
+     * http://doc.spip.org/@traduire_requete
2244
+     *
2245
+     * @return void
2246
+     */
2247
+    function traduire_requete(){
2248
+        //
2249
+        // 1) Protection des textes en les remplacant par des codes
2250
+        //
2251
+        // enlever les 'textes' et initialiser avec
2252
+        list($this->query, $textes) = query_echappe_textes($this->query);
2253
+
2254
+        //
2255
+        // 2) Corrections de la requete
2256
+        //
2257
+        // Correction Create Database
2258
+        // Create Database -> requete ignoree
2259
+        if (strpos($this->query, 'CREATE DATABASE')===0){
2260
+            spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.'._LOG_AVERTISSEMENT);
2261
+            $this->query = "SELECT 1";
2262
+        }
2263
+
2264
+        // Correction Insert Ignore
2265
+        // INSERT IGNORE -> insert (tout court et pas 'insert or replace')
2266
+        if (strpos($this->query, 'INSERT IGNORE')===0){
2267
+            spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.'._LOG_DEBUG);
2268
+            $this->query = 'INSERT '.substr($this->query, '13');
2269
+        }
2270
+
2271
+        // Correction des dates avec INTERVAL
2272
+        // utiliser sql_date_proche() de preference
2273
+        if (strpos($this->query, 'INTERVAL')!==false){
2274
+            $this->query = preg_replace_callback("/DATE_(ADD|SUB)(.*)INTERVAL\s+(\d+)\s+([a-zA-Z]+)\)/U",
2275
+                                                    array(&$this, '_remplacerDateParTime'),
2276
+                                                    $this->query);
2277
+        }
2278
+
2279
+        if (strpos($this->query, 'LEFT(')!==false){
2280
+            $this->query = str_replace('LEFT(','_LEFT(',$this->query);
2281
+        }
2282
+
2283
+        if (strpos($this->query, 'TIMESTAMPDIFF(')!==false){
2284
+            $this->query = preg_replace('/TIMESTAMPDIFF\(\s*([^,]*)\s*,/Uims',"TIMESTAMPDIFF('\\1',",$this->query);
2285
+        }
2286
+
2287
+
2288
+        // Correction Using
2289
+        // USING (non reconnu en sqlite2)
2290
+        // problematique car la jointure ne se fait pas du coup.
2291
+        if (($this->sqlite_version==2) && (strpos($this->query, "USING")!==false)){
2292
+            spip_log("'USING (champ)' n'est pas reconnu en SQLite 2. Utilisez 'ON table1.champ = table2.champ'", 'sqlite.'._LOG_ERREUR);
2293
+            $this->query = preg_replace('/USING\s*\([^\)]*\)/', '', $this->query);
2294
+        }
2295
+
2296
+        // Correction Field
2297
+        // remplace FIELD(table,i,j,k...) par CASE WHEN table=i THEN n ... ELSE 0 END
2298
+        if (strpos($this->query, 'FIELD')!==false){
2299
+            $this->query = preg_replace_callback('/FIELD\s*\(([^\)]*)\)/',
2300
+                                                    array(&$this, '_remplacerFieldParCase'),
2301
+                                                    $this->query);
2302
+        }
2303
+
2304
+        // Correction des noms de tables FROM
2305
+        // mettre les bons noms de table dans from, update, insert, replace...
2306
+        if (preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/iS', $this->query, $regs)){
2307
+            $suite = strstr($this->query, $regs[0]);
2308
+            $this->query = substr($this->query, 0, -strlen($suite));
2309
+        }
2310
+        else
2311
+            $suite = '';
2312
+        $pref = ($this->prefixe) ? $this->prefixe."_" : "";
2313
+        $this->query = preg_replace('/([,\s])spip_/S', '\1'.$pref, $this->query).$suite;
2314
+
2315
+        // Correction zero AS x
2316
+        // pg n'aime pas 0+x AS alias, sqlite, dans le meme style, 
2317
+        // n'apprecie pas du tout SELECT 0 as x ... ORDER BY x
2318
+        // il dit que x ne doit pas être un integer dans le order by !
2319
+        // on remplace du coup x par vide() dans ce cas uniquement
2320
+        //
2321
+        // rien que pour public/vertebrer.php ?
2322
+        if ((strpos($this->query, "0 AS")!==false)){
2323
+            // on ne remplace que dans ORDER BY ou GROUP BY
2324
+            if (preg_match('/\s(ORDER|GROUP) BY\s/i', $this->query, $regs)){
2325
+                $suite = strstr($this->query, $regs[0]);
2326
+                $this->query = substr($this->query, 0, -strlen($suite));
2327
+
2328
+                // on cherche les noms des x dans 0 AS x
2329
+                // on remplace dans $suite le nom par vide()
2330
+                preg_match_all('/\b0 AS\s*([^\s,]+)/', $this->query, $matches, PREG_PATTERN_ORDER);
2331
+                foreach ($matches[1] as $m){
2332
+                    $suite = str_replace($m, 'VIDE()', $suite);
2333
+                }
2334
+                $this->query .= $suite;
2335
+            }
2336
+        }
2337
+
2338
+        // Correction possible des divisions entieres
2339
+        // Le standard SQL (lequel? ou?) semble indiquer que
2340
+        // a/b=c doit donner c entier si a et b sont entiers 4/3=1.
2341
+        // C'est ce que retournent effectivement SQL Server et SQLite
2342
+        // Ce n'est pas ce qu'applique MySQL qui retourne un reel : 4/3=1.333...
2343
+        // 
2344
+        // On peut forcer la conversion en multipliant par 1.0 avant la division
2345
+        // /!\ SQLite 3.5.9 Debian/Ubuntu est victime d'un bug en plus ! 
2346
+        // cf. https://bugs.launchpad.net/ubuntu/+source/sqlite3/+bug/254228
2347
+        //     http://www.sqlite.org/cvstrac/tktview?tn=3202
2348
+        // (4*1.0/3) n'est pas rendu dans ce cas !
2349
+        # $this->query = str_replace('/','* 1.00 / ',$this->query);
2350
+
2351
+
2352
+        // Correction critere REGEXP, non reconnu en sqlite2
2353
+        if (($this->sqlite_version==2) && (strpos($this->query, 'REGEXP')!==false)){
2354
+            $this->query = preg_replace('/([^\s\(]*)(\s*)REGEXP(\s*)([^\s\)]*)/', 'REGEXP($4, $1)', $this->query);
2355
+        }
2356
+
2357
+        //
2358
+        // 3) Remise en place des textes d'origine
2359
+        //
2360
+        // Correction Antiquotes et echappements
2361
+        // ` => rien
2362
+        if (strpos($this->query,'`')!==false)
2363
+            $this->query = str_replace('`','', $this->query);
2364
+
2365
+        $this->query = query_reinjecte_textes($this->query, $textes);
2366
+
2367
+        return $this->query;
2368
+    }
2369
+
2370
+
2371
+    /**
2372
+     * les callbacks
2373
+     * remplacer DATE_ / INTERVAL par DATE...strtotime
2374
+     * http://doc.spip.org/@_remplacerDateParTime
2375
+     *
2376
+     * @param  $matches
2377
+     * @return string
2378
+     */
2379
+    function _remplacerDateParTime($matches){
2380
+        $op = strtoupper($matches[1]=='ADD') ? '+' : '-';
2381
+        return "datetime$matches[2] '$op$matches[3] $matches[4]')";
2382
+    }
2383
+
2384
+    /**
2385
+     * callback ou l'on remplace FIELD(table,i,j,k...) par CASE WHEN table=i THEN n ... ELSE 0 END
2386
+     * http://doc.spip.org/@_remplacerFieldParCase
2387
+     *
2388
+     * @param  $matches
2389
+     * @return string
2390
+     */
2391
+    function _remplacerFieldParCase($matches){
2392
+        $fields = substr($matches[0], 6, -1); // ne recuperer que l'interieur X de field(X)
2393
+        $t = explode(',', $fields);
2394
+        $index = array_shift($t);
2395
+
2396
+        $res = '';
2397
+        $n = 0;
2398
+        foreach ($t as $v){
2399
+            $n++;
2400
+            $res .= "\nWHEN $index=$v THEN $n";
2401
+        }
2402
+        return "CASE $res ELSE 0 END ";
2403
+    }
2404 2404
 
2405 2405
 }
2406 2406
 
Please login to merge, or discard this patch.
Spacing   +289 added lines, -289 removed lines patch added patch discarded remove patch
@@ -29,13 +29,13 @@  discard block
 block discarded – undo
29 29
  * 
30 30
  */
31 31
 // http://doc.spip.org/@req_sqlite_dist
32
-function req_sqlite_dist($addr, $port, $login, $pass, $db = '', $prefixe = '', $sqlite_version = ''){
32
+function req_sqlite_dist($addr, $port, $login, $pass, $db = '', $prefixe = '', $sqlite_version = '') {
33 33
 	static $last_connect = array();
34 34
 
35 35
 	// si provient de selectdb
36 36
 	// un code pour etre sur que l'on vient de select_db()
37
-	if (strpos($db, $code = '@selectdb@')!==false){
38
-		foreach (array('addr', 'port', 'login', 'pass', 'prefixe') as $a){
37
+	if (strpos($db, $code = '@selectdb@') !== false) {
38
+		foreach (array('addr', 'port', 'login', 'pass', 'prefixe') as $a) {
39 39
 			$$a = $last_connect[$a];
40 40
 		}
41 41
 		$db = str_replace($code, '', $db);
@@ -51,18 +51,18 @@  discard block
 block discarded – undo
51 51
 
52 52
 	// determiner le dossier de la base : $addr ou _DIR_DB
53 53
 	$f = _DIR_DB;
54
-	if ($addr AND strpos($addr, '/')!==false)
54
+	if ($addr AND strpos($addr, '/') !== false)
55 55
 		$f = rtrim($addr, '/').'/';
56 56
 
57 57
 	// un nom de base demande et impossible d'obtenir la base, on s'en va :
58 58
 	// il faut que la base existe ou que le repertoire parent soit writable
59
-	if ($db AND !is_file($f .= $db.'.sqlite') AND !is_writable(dirname($f))){
59
+	if ($db AND !is_file($f .= $db.'.sqlite') AND !is_writable(dirname($f))) {
60 60
 		spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.'._LOG_HS);
61 61
 		return false;
62 62
 	}
63 63
 
64 64
 	// charger les modules sqlite au besoin
65
-	if (!_sqlite_charger_version($sqlite_version)){
65
+	if (!_sqlite_charger_version($sqlite_version)) {
66 66
 		spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.'._LOG_HS);
67 67
 		return false;
68 68
 	}
@@ -73,13 +73,13 @@  discard block
 block discarded – undo
73 73
 	$define();
74 74
 
75 75
 	$ok = false;
76
-	if (!$db){
76
+	if (!$db) {
77 77
 		// si pas de db ->
78 78
 		// base temporaire tant qu'on ne connait pas son vrai nom
79 79
 		// pour tester la connexion
80 80
 		$db = "_sqlite".$sqlite_version."_install";
81 81
 		$tmp = _DIR_DB.$db.".sqlite";
82
-		if ($sqlite_version==3){
82
+		if ($sqlite_version == 3) {
83 83
 			$ok = $link = new PDO("sqlite:$tmp");
84 84
 		} else {
85 85
 			$ok = $link = sqlite_open($tmp, _SQLITE_CHMOD, $err);
@@ -87,20 +87,20 @@  discard block
 block discarded – undo
87 87
 	} else {
88 88
 		// Ouvrir (eventuellement creer la base)
89 89
 		// si pas de version fourni, on essaie la 3, sinon la 2
90
-		if ($sqlite_version==3){
90
+		if ($sqlite_version == 3) {
91 91
 			$ok = $link = new PDO("sqlite:$f");
92 92
 		} else {
93 93
 			$ok = $link = sqlite_open($f, _SQLITE_CHMOD, $err);
94 94
 		}
95 95
 	}
96 96
 
97
-	if (!$ok){
97
+	if (!$ok) {
98 98
 		$e = sqlite_last_error($db);
99 99
 		spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.'._LOG_HS);
100 100
 		return false;
101 101
 	}
102 102
 
103
-	if ($link){
103
+	if ($link) {
104 104
 		$last_connect = array(
105 105
 			'addr' => $addr,
106 106
 			'port' => $port,
@@ -136,7 +136,7 @@  discard block
 block discarded – undo
136 136
  * @return bool|SQLiteResult|string
137 137
  * 		Resultat de la requete
138 138
  */
139
-function spip_sqlite_query($query, $serveur = '', $requeter = true){
139
+function spip_sqlite_query($query, $serveur = '', $requeter = true) {
140 140
 	#spip_log("spip_sqlite_query() > $query",'sqlite.'._LOG_DEBUG);
141 141
 	#_sqlite_init(); // fait la premiere fois dans spip_sqlite
142 142
 	$query = spip_sqlite::traduire_requete($query, $serveur);
@@ -148,7 +148,7 @@  discard block
 block discarded – undo
148 148
 /* ordre alphabetique pour les autres */
149 149
 
150 150
 // http://doc.spip.org/@spip_sqlite_alter
151
-function spip_sqlite_alter($query, $serveur = '', $requeter = true){
151
+function spip_sqlite_alter($query, $serveur = '', $requeter = true) {
152 152
 
153 153
 	$query = spip_sqlite_query("ALTER $query", $serveur, false);
154 154
 	// traduire la requete pour recuperer les bons noms de table
@@ -164,7 +164,7 @@  discard block
 block discarded – undo
164 164
 		 */
165 165
 
166 166
 	// 1
167
-	if (preg_match("/\s*(ALTER(\s*IGNORE)?\s*TABLE\s*([^\s]*))\s*(.*)?/is", $query, $regs)){
167
+	if (preg_match("/\s*(ALTER(\s*IGNORE)?\s*TABLE\s*([^\s]*))\s*(.*)?/is", $query, $regs)) {
168 168
 		$debut = $regs[1];
169 169
 		$table = $regs[3];
170 170
 		$suite = $regs[4];
@@ -184,10 +184,10 @@  discard block
 block discarded – undo
184 184
 	$todo2 = array();
185 185
 	$i = 0;
186 186
 	$ouverte = false;
187
-	while ($do = array_shift($todo)){
187
+	while ($do = array_shift($todo)) {
188 188
 		$todo2[$i] = isset($todo2[$i]) ? $todo2[$i].",".$do : $do;
189
-		$o = (false!==strpos($do, "("));
190
-		$f = (false!==strpos($do, ")"));
189
+		$o = (false !== strpos($do, "("));
190
+		$f = (false !== strpos($do, ")"));
191 191
 		if ($o AND !$f) $ouverte = true;
192 192
 		elseif ($f) $ouverte = false;
193 193
 		if (!$ouverte) $i++;
@@ -195,13 +195,13 @@  discard block
 block discarded – undo
195 195
 
196 196
 	// 3	
197 197
 	$resultats = array();
198
-	foreach ($todo2 as $do){
198
+	foreach ($todo2 as $do) {
199 199
 		$do = trim($do);
200 200
 		if (!preg_match('/(DROP PRIMARY KEY|DROP KEY|DROP INDEX|DROP COLUMN|DROP'
201 201
 		                .'|CHANGE COLUMN|CHANGE|MODIFY|RENAME TO|RENAME'
202 202
 		                .'|ADD PRIMARY KEY|ADD KEY|ADD INDEX|ADD UNIQUE KEY|ADD UNIQUE'
203 203
 		                .'|ADD COLUMN|ADD'
204
-		                .')\s*([^\s]*)\s*(.*)?/i', $do, $matches)){
204
+		                .')\s*([^\s]*)\s*(.*)?/i', $do, $matches)) {
205 205
 			spip_log("SQLite : Probleme de ALTER TABLE, utilisation non reconnue dans : $do \n(requete d'origine : $query)", 'sqlite.'._LOG_ERREUR);
206 206
 			return false;
207 207
 		}
@@ -236,7 +236,7 @@  discard block
 block discarded – undo
236 236
 					$table,
237 237
 					$colonne_origine,
238 238
 					array('key' => array('PRIMARY KEY' => '')),
239
-					$serveur)){
239
+					$serveur)) {
240 240
 					return false;
241 241
 				}
242 242
 				break;
@@ -247,7 +247,7 @@  discard block
 block discarded – undo
247 247
 					$table,
248 248
 					array($colonne_origine => ""),
249 249
 					'',
250
-					$serveur)){
250
+					$serveur)) {
251 251
 					return false;
252 252
 				}
253 253
 				break;
@@ -259,13 +259,13 @@  discard block
 block discarded – undo
259 259
 			  // en tenant compte de la cle primaire (ce qui est mieux)
260 260
 				$def = trim($defo);
261 261
 				$colonne_destination = substr($def, 0, strpos($def, ' '));
262
-				$def = substr($def, strlen($colonne_destination)+1);
262
+				$def = substr($def, strlen($colonne_destination) + 1);
263 263
 
264 264
 				if (!_sqlite_modifier_table(
265 265
 					$table,
266 266
 					array($colonne_origine => $colonne_destination),
267 267
 					array('field' => array($colonne_destination => $def)),
268
-					$serveur)){
268
+					$serveur)) {
269 269
 					return false;
270 270
 				}
271 271
 				break;
@@ -277,7 +277,7 @@  discard block
 block discarded – undo
277 277
 					$table,
278 278
 					$colonne_origine,
279 279
 					array('field' => array($colonne_origine => $defo)),
280
-					$serveur)){
280
+					$serveur)) {
281 281
 					return false;
282 282
 				}
283 283
 				break;
@@ -286,15 +286,15 @@  discard block
 block discarded – undo
286 286
 			case 'RENAME':
287 287
 				$do = "RENAME TO".substr($do, 6);
288 288
 			case 'RENAME TO':
289
-				if (_sqlite_is_version(3, '', $serveur)){
290
-					if (!spip_sqlite::executer_requete("$debut $do", $serveur)){
289
+				if (_sqlite_is_version(3, '', $serveur)) {
290
+					if (!spip_sqlite::executer_requete("$debut $do", $serveur)) {
291 291
 						spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.'._LOG_ERREUR);
292 292
 						return false;
293 293
 					}
294 294
 					// artillerie lourde pour sqlite2 !
295 295
 				} else {
296 296
 					$table_dest = trim(substr($do, 9));
297
-					if (!_sqlite_modifier_table(array($table => $table_dest), '', '', $serveur)){
297
+					if (!_sqlite_modifier_table(array($table => $table_dest), '', '', $serveur)) {
298 298
 						spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.'._LOG_ERREUR);
299 299
 						return false;
300 300
 					}
@@ -304,34 +304,34 @@  discard block
 block discarded – undo
304 304
 			// ajout d'une pk
305 305
 			case 'ADD PRIMARY KEY':
306 306
 				$pk = trim(substr($do, 16));
307
-				$pk = ($pk[0]=='(') ? substr($pk, 1, -1) : $pk;
307
+				$pk = ($pk[0] == '(') ? substr($pk, 1, -1) : $pk;
308 308
 				if (!_sqlite_modifier_table(
309 309
 					$table,
310 310
 					$colonne_origine,
311 311
 					array('key' => array('PRIMARY KEY' => $pk)),
312
-					$serveur)){
312
+					$serveur)) {
313 313
 					return false;
314 314
 				}
315 315
 				break;
316 316
 			// ajout d'un index
317 317
 			case 'ADD UNIQUE KEY':
318 318
 			case 'ADD UNIQUE':
319
-				$unique=true;
319
+				$unique = true;
320 320
 			case 'ADD INDEX':
321 321
 			case 'ADD KEY':
322 322
 				// peut etre "(colonne)" ou "nom_index (colonnes)"
323 323
 				// bug potentiel si qqn met "(colonne, colonne)"
324 324
 				//
325 325
 				// nom_index (colonnes)
326
-				if ($def){
326
+				if ($def) {
327 327
 					$colonnes = substr($def, 1, -1);
328 328
 					$nom_index = $colonne_origine;
329 329
 				}
330 330
 				else {
331 331
 					// (colonne)
332
-					if ($colonne_origine[0]=="("){
332
+					if ($colonne_origine[0] == "(") {
333 333
 						$colonnes = substr($colonne_origine, 1, -1);
334
-						if (false!==strpos(",", $colonnes)){
334
+						if (false !== strpos(",", $colonnes)) {
335 335
 							spip_log(_LOG_GRAVITE_ERREUR, "SQLite : Erreur, impossible de creer un index sur plusieurs colonnes"
336 336
 							                              ." sans qu'il ait de nom ($table, ($colonnes))", 'sqlite');
337 337
 							break;
@@ -352,8 +352,8 @@  discard block
 block discarded – undo
352 352
 				$do = "ADD".substr($do, 10);
353 353
 			case 'ADD':
354 354
 			default:
355
-				if (_sqlite_is_version(3, '', $serveur) AND !preg_match(',primary\s+key,i',$do)){
356
-					if (!spip_sqlite::executer_requete("$debut $do", $serveur)){
355
+				if (_sqlite_is_version(3, '', $serveur) AND !preg_match(',primary\s+key,i', $do)) {
356
+					if (!spip_sqlite::executer_requete("$debut $do", $serveur)) {
357 357
 						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR);
358 358
 						return false;
359 359
 					}
@@ -367,14 +367,14 @@  discard block
 block discarded – undo
367 367
 				else {
368 368
 					$def = trim(substr($do, 3));
369 369
 					$colonne_ajoutee = substr($def, 0, strpos($def, ' '));
370
-					$def = substr($def, strlen($colonne_ajoutee)+1);
370
+					$def = substr($def, strlen($colonne_ajoutee) + 1);
371 371
 					$opts = array();
372
-					if (preg_match(',primary\s+key,i',$def)){
372
+					if (preg_match(',primary\s+key,i', $def)) {
373 373
 						$opts['key'] = array('PRIMARY KEY' => $colonne_ajoutee);
374
-						$def = preg_replace(',primary\s+key,i','',$def);
374
+						$def = preg_replace(',primary\s+key,i', '', $def);
375 375
 					}
376 376
 					$opts['field'] = array($colonne_ajoutee => $def);
377
-					if (!_sqlite_modifier_table($table, array($colonne_ajoutee), $opts, $serveur)){
377
+					if (!_sqlite_modifier_table($table, array($colonne_ajoutee), $opts, $serveur)) {
378 378
 						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR);
379 379
 						return false;
380 380
 					}
@@ -403,7 +403,7 @@  discard block
 block discarded – undo
403 403
  * @param bool $requeter
404 404
  * @return bool|SQLiteResult|string
405 405
  */
406
-function spip_sqlite_create($nom, $champs, $cles, $autoinc = false, $temporary = false, $serveur = '', $requeter = true){
406
+function spip_sqlite_create($nom, $champs, $cles, $autoinc = false, $temporary = false, $serveur = '', $requeter = true) {
407 407
 	$query = _sqlite_requete_create($nom, $champs, $cles, $autoinc, $temporary, $ifnotexists = true, $serveur, $requeter);
408 408
 	if (!$query) return false;
409 409
 	$res = spip_sqlite_query($query, $serveur, $requeter);
@@ -413,11 +413,11 @@  discard block
 block discarded – undo
413 413
 	if (!$requeter) return $res;
414 414
 
415 415
 	$ok = $res ? true : false;
416
-	if ($ok){
417
-		foreach ($cles as $k => $v){
418
-			if (preg_match(',^(KEY|UNIQUE)\s,i',$k,$m)){
419
-				$index = trim(substr($k,strlen($m[1])));
420
-				$unique = (strlen($m[1])>3);
416
+	if ($ok) {
417
+		foreach ($cles as $k => $v) {
418
+			if (preg_match(',^(KEY|UNIQUE)\s,i', $k, $m)) {
419
+				$index = trim(substr($k, strlen($m[1])));
420
+				$unique = (strlen($m[1]) > 3);
421 421
 				$ok &= spip_sqlite_create_index($index, $nom, $v, $unique, $serveur);
422 422
 			}
423 423
 		}
@@ -434,16 +434,16 @@  discard block
 block discarded – undo
434 434
  *
435 435
  * @return bool true si la base est creee.
436 436
  **/
437
-function spip_sqlite_create_base($nom, $serveur = '', $option = true){
437
+function spip_sqlite_create_base($nom, $serveur = '', $option = true) {
438 438
 	$f = $nom.'.sqlite';
439
-	if (strpos($nom, "/")===false)
439
+	if (strpos($nom, "/") === false)
440 440
 		$f = _DIR_DB.$f;
441
-	if (_sqlite_is_version(2, '', $serveur)){
441
+	if (_sqlite_is_version(2, '', $serveur)) {
442 442
 		$ok = sqlite_open($f, _SQLITE_CHMOD, $err);
443 443
 	} else {
444 444
 		$ok = new PDO("sqlite:$f");
445 445
 	}
446
-	if ($ok){
446
+	if ($ok) {
447 447
 		unset($ok);
448 448
 		return true;
449 449
 	}
@@ -471,10 +471,10 @@  discard block
 block discarded – undo
471 471
  * 		- false si erreur ou si la vue existe deja
472 472
  * 		- string texte de la requete si $requeter vaut false
473 473
  */
474
-function spip_sqlite_create_view($nom, $query_select, $serveur = '', $requeter = true){
474
+function spip_sqlite_create_view($nom, $query_select, $serveur = '', $requeter = true) {
475 475
 	if (!$query_select) return false;
476 476
 	// vue deja presente
477
-	if (sql_showtable($nom, false, $serveur)){
477
+	if (sql_showtable($nom, false, $serveur)) {
478 478
 		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", 'sqlite.'._LOG_ERREUR);
479 479
 		return false;
480 480
 	}
@@ -494,8 +494,8 @@  discard block
 block discarded – undo
494 494
  *
495 495
  * @return bool ou requete
496 496
  */
497
-function spip_sqlite_create_index($nom, $table, $champs, $unique='', $serveur = '', $requeter = true){
498
-	if (!($nom OR $table OR $champs)){
497
+function spip_sqlite_create_index($nom, $table, $champs, $unique = '', $serveur = '', $requeter = true) {
498
+	if (!($nom OR $table OR $champs)) {
499 499
 		spip_log("Champ manquant pour creer un index sqlite ($nom, $table, (".join(',', $champs)."))", 'sqlite.'._LOG_ERREUR);
500 500
 		return false;
501 501
 	}
@@ -504,18 +504,18 @@  discard block
 block discarded – undo
504 504
 	// il faut donc creer des noms uniques d'index pour une base sqlite
505 505
 	$nom = $table.'_'.$nom;
506 506
 	// enlever d'eventuelles parentheses deja presentes sur champs
507
-	if (!is_array($champs)){
508
-		if ($champs[0]=="(") $champs = substr($champs, 1, -1);
507
+	if (!is_array($champs)) {
508
+		if ($champs[0] == "(") $champs = substr($champs, 1, -1);
509 509
 		$champs = array($champs);
510 510
 		// supprimer l'info de longueur d'index mysql en fin de champ
511
-		$champs = preg_replace(",\(\d+\)$,","",$champs);
511
+		$champs = preg_replace(",\(\d+\)$,", "", $champs);
512 512
 	}
513 513
 
514 514
 	$ifnotexists = "";
515
-	$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur);
515
+	$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version", $serveur), '', $serveur);
516 516
 	if (!function_exists('spip_version_compare')) include_spip('plugins/installer');
517 517
 
518
-	if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) {
518
+	if ($version AND spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) {
519 519
 		$ifnotexists = ' IF NOT EXISTS';
520 520
 	} else {
521 521
 		/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
@@ -523,7 +523,7 @@  discard block
 block discarded – undo
523 523
 		if (isset($a['key']['KEY '.$nom])) return true;
524 524
 	}
525 525
 
526
-	$query = "CREATE ".($unique?"UNIQUE ":"")."INDEX$ifnotexists $nom ON $table (".join(',', $champs).")";
526
+	$query = "CREATE ".($unique ? "UNIQUE " : "")."INDEX$ifnotexists $nom ON $table (".join(',', $champs).")";
527 527
 	$res = spip_sqlite_query($query, $serveur, $requeter);
528 528
 	if (!$requeter) return $res;
529 529
 	if ($res)
@@ -543,15 +543,15 @@  discard block
 block discarded – undo
543 543
  * @param bool $requeter
544 544
  * @return int
545 545
  */
546
-function spip_sqlite_count($r, $serveur = '', $requeter = true){
546
+function spip_sqlite_count($r, $serveur = '', $requeter = true) {
547 547
 	if (!$r) return 0;
548 548
 
549
-	if (_sqlite_is_version(3, '', $serveur)){
549
+	if (_sqlite_is_version(3, '', $serveur)) {
550 550
 		// select ou autre (insert, update,...) ?
551 551
 
552 552
 		// (link,requete) a compter
553
-		if (is_array($r->spipSqliteRowCount)){
554
-			list($link,$query) = $r->spipSqliteRowCount;
553
+		if (is_array($r->spipSqliteRowCount)) {
554
+			list($link, $query) = $r->spipSqliteRowCount;
555 555
 			// amelioration possible a tester intensivement : pas de order by pour compter !
556 556
 			// $query = preg_replace(",ORDER BY .+(LIMIT\s|HAVING\s|GROUP BY\s|$),Uims","\\1",$query);
557 557
 			$query = "SELECT count(*) as zzzzsqlitecount FROM ($query)";
@@ -561,7 +561,7 @@  discard block
 block discarded – undo
561 561
 				$i = $z['zzzzsqlitecount'];
562 562
 			$r->spipSqliteRowCount = $i;
563 563
 		}
564
-		if (isset($r->spipSqliteRowCount)){
564
+		if (isset($r->spipSqliteRowCount)) {
565 565
 			// Ce compte est faux s'il y a des limit dans la requete :(
566 566
 			// il retourne le nombre d'enregistrements sans le limit
567 567
 			return $r->spipSqliteRowCount;
@@ -575,12 +575,12 @@  discard block
 block discarded – undo
575 575
 
576 576
 
577 577
 // http://doc.spip.org/@spip_sqlite_countsel
578
-function spip_sqlite_countsel($from = array(), $where = array(), $groupby = '', $having = array(), $serveur = '', $requeter = true){
578
+function spip_sqlite_countsel($from = array(), $where = array(), $groupby = '', $having = array(), $serveur = '', $requeter = true) {
579 579
 	$c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby)));
580 580
 	$r = spip_sqlite_select("COUNT($c)", $from, $where, '', '', '',
581 581
 	                        $having, $serveur, $requeter);
582
-	if ((is_resource($r) or is_object($r)) && $requeter){ // ressource : sqlite2, object : sqlite3
583
-		if (_sqlite_is_version(3, '', $serveur)){
582
+	if ((is_resource($r) or is_object($r)) && $requeter) { // ressource : sqlite2, object : sqlite3
583
+		if (_sqlite_is_version(3, '', $serveur)) {
584 584
 			list($r) = spip_sqlite_fetch($r, SPIP_SQLITE3_NUM, $serveur);
585 585
 		} else {
586 586
 			list($r) = spip_sqlite_fetch($r, SPIP_SQLITE2_NUM, $serveur);
@@ -592,7 +592,7 @@  discard block
 block discarded – undo
592 592
 
593 593
 
594 594
 // http://doc.spip.org/@spip_sqlite_delete
595
-function spip_sqlite_delete($table, $where = '', $serveur = '', $requeter = true){
595
+function spip_sqlite_delete($table, $where = '', $serveur = '', $requeter = true) {
596 596
 	$res = spip_sqlite_query(
597 597
 		_sqlite_calculer_expression('DELETE FROM', $table, ',')
598 598
 		._sqlite_calculer_expression('WHERE', $where),
@@ -601,9 +601,9 @@  discard block
 block discarded – undo
601 601
 	// renvoyer la requete inerte si demandee
602 602
 	if (!$requeter) return $res;
603 603
 
604
-	if ($res){
604
+	if ($res) {
605 605
 		$link = _sqlite_link($serveur);
606
-		if (_sqlite_is_version(3, $link)){
606
+		if (_sqlite_is_version(3, $link)) {
607 607
 			return $res->rowCount();
608 608
 		} else {
609 609
 			return sqlite_changes($link);
@@ -615,11 +615,11 @@  discard block
 block discarded – undo
615 615
 
616 616
 
617 617
 // http://doc.spip.org/@spip_sqlite_drop_table
618
-function spip_sqlite_drop_table($table, $exist = '', $serveur = '', $requeter = true){
618
+function spip_sqlite_drop_table($table, $exist = '', $serveur = '', $requeter = true) {
619 619
 	if ($exist) $exist = " IF EXISTS";
620 620
 
621 621
 	/* simuler le IF EXISTS - version 2 */
622
-	if ($exist && _sqlite_is_version(2, '', $serveur)){
622
+	if ($exist && _sqlite_is_version(2, '', $serveur)) {
623 623
 		$a = spip_sqlite_showtable($table, $serveur);
624 624
 		if (!$a) return true;
625 625
 		$exist = '';
@@ -640,11 +640,11 @@  discard block
 block discarded – undo
640 640
  * @param bool $requeter
641 641
  * @return bool|SQLiteResult|string
642 642
  */
643
-function spip_sqlite_drop_view($view, $exist = '', $serveur = '', $requeter = true){
643
+function spip_sqlite_drop_view($view, $exist = '', $serveur = '', $requeter = true) {
644 644
 	if ($exist) $exist = " IF EXISTS";
645 645
 
646 646
 	/* simuler le IF EXISTS - version 2 */
647
-	if ($exist && _sqlite_is_version(2, '', $serveur)){
647
+	if ($exist && _sqlite_is_version(2, '', $serveur)) {
648 648
 		$a = spip_sqlite_showtable($view, $serveur);
649 649
 		if (!$a) return true;
650 650
 		$exist = '';
@@ -663,8 +663,8 @@  discard block
 block discarded – undo
663 663
  *
664 664
  * @return bool ou requete
665 665
  */
666
-function spip_sqlite_drop_index($nom, $table, $serveur = '', $requeter = true){
667
-	if (!($nom OR $table)){
666
+function spip_sqlite_drop_index($nom, $table, $serveur = '', $requeter = true) {
667
+	if (!($nom OR $table)) {
668 668
 		spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.'._LOG_ERREUR);
669 669
 		return false;
670 670
 	}
@@ -675,7 +675,7 @@  discard block
 block discarded – undo
675 675
 	$exist = " IF EXISTS";
676 676
 
677 677
 	/* simuler le IF EXISTS - version 2 */
678
-	if (_sqlite_is_version(2, '', $serveur)){
678
+	if (_sqlite_is_version(2, '', $serveur)) {
679 679
 		$a = spip_sqlite_showtable($table, $serveur);
680 680
 		if (!isset($a['key']['KEY '.$nom])) return true;
681 681
 		$exist = '';
@@ -693,10 +693,10 @@  discard block
 block discarded – undo
693 693
  * @return string
694 694
  * 		erreur eventuelle
695 695
  **/
696
-function spip_sqlite_error($query = '', $serveur = ''){
696
+function spip_sqlite_error($query = '', $serveur = '') {
697 697
 	$link = _sqlite_link($serveur);
698 698
 
699
-	if (_sqlite_is_version(3, $link)){
699
+	if (_sqlite_is_version(3, $link)) {
700 700
 		$errs = $link->errorInfo();
701 701
 		/*
702 702
 			$errs[0]
@@ -709,7 +709,7 @@  discard block
 block discarded – undo
709 709
 				Le texte du message d'erreur
710 710
 		*/
711 711
 		$s = '';
712
-		if (ltrim($errs[0],'0')) { // 00000 si pas d'erreur
712
+		if (ltrim($errs[0], '0')) { // 00000 si pas d'erreur
713 713
 			$s = "$errs[2]";
714 714
 		}
715 715
 	} elseif ($link) {
@@ -734,13 +734,13 @@  discard block
 block discarded – undo
734 734
  * 		1 ou autre erreur (en sqlite 2)
735 735
  * 		'HY000/1' : numéro de l'erreur SQLState / numéro d'erreur interne SQLite (en sqlite 3)
736 736
  **/
737
-function spip_sqlite_errno($serveur = ''){
737
+function spip_sqlite_errno($serveur = '') {
738 738
 	$link = _sqlite_link($serveur);
739 739
 
740
-	if (_sqlite_is_version(3, $link)){
740
+	if (_sqlite_is_version(3, $link)) {
741 741
 		$t = $link->errorInfo();
742
-		$s = ltrim($t[0],'0'); // 00000 si pas d'erreur
743
-		if ($s) $s .= ' / ' . $t[1]; // ajoute l'erreur du moteur SQLite
742
+		$s = ltrim($t[0], '0'); // 00000 si pas d'erreur
743
+		if ($s) $s .= ' / '.$t[1]; // ajoute l'erreur du moteur SQLite
744 744
 	} elseif ($link) {
745 745
 		$s = sqlite_last_error($link);
746 746
 	} else {
@@ -754,8 +754,8 @@  discard block
 block discarded – undo
754 754
 
755 755
 
756 756
 // http://doc.spip.org/@spip_sqlite_explain
757
-function spip_sqlite_explain($query, $serveur = '', $requeter = true){
758
-	if (strpos(ltrim($query), 'SELECT')!==0) return array();
757
+function spip_sqlite_explain($query, $serveur = '', $requeter = true) {
758
+	if (strpos(ltrim($query), 'SELECT') !== 0) return array();
759 759
 
760 760
 	$query = spip_sqlite::traduire_requete($query, $serveur);
761 761
 	$query = 'EXPLAIN '.$query;
@@ -768,7 +768,7 @@  discard block
 block discarded – undo
768 768
 
769 769
 
770 770
 // http://doc.spip.org/@spip_sqlite_fetch
771
-function spip_sqlite_fetch($r, $t = '', $serveur = '', $requeter = true){
771
+function spip_sqlite_fetch($r, $t = '', $serveur = '', $requeter = true) {
772 772
 
773 773
 	$link = _sqlite_link($serveur);
774 774
 	$is_v3 = _sqlite_is_version(3, $link);
@@ -783,10 +783,10 @@  discard block
 block discarded – undo
783 783
 	// suppression de 'table.' pour toutes les cles (c'est un peu violent !)
784 784
 	// c'est couteux : on ne verifie que la premiere ligne pour voir si on le fait ou non
785 785
 	if ($retour
786
-	  AND strpos(implode('',array_keys($retour)),'.')!==false){
787
-		foreach ($retour as $cle => $val){
788
-			if (($pos = strpos($cle, '.'))!==false){
789
-				$retour[substr($cle, $pos+1)] = &$retour[$cle];
786
+	  AND strpos(implode('', array_keys($retour)), '.') !== false) {
787
+		foreach ($retour as $cle => $val) {
788
+			if (($pos = strpos($cle, '.')) !== false) {
789
+				$retour[substr($cle, $pos + 1)] = &$retour[$cle];
790 790
 				unset($retour[$cle]);
791 791
 			}
792 792
 		}
@@ -796,10 +796,10 @@  discard block
 block discarded – undo
796 796
 }
797 797
 
798 798
 
799
-function spip_sqlite_seek($r, $row_number, $serveur = '', $requeter = true){
800
-	if ($r){
799
+function spip_sqlite_seek($r, $row_number, $serveur = '', $requeter = true) {
800
+	if ($r) {
801 801
 		$link = _sqlite_link($serveur);
802
-		if (_sqlite_is_version(3, $link)){
802
+		if (_sqlite_is_version(3, $link)) {
803 803
 			// encore un truc de bien fichu : PDO ne PEUT PAS faire de seek ou de rewind...
804 804
 			// je me demande si pour sqlite 3 il ne faudrait pas mieux utiliser
805 805
 			// les nouvelles fonctions sqlite3_xx (mais encore moins presentes...)
@@ -813,7 +813,7 @@  discard block
 block discarded – undo
813 813
 
814 814
 
815 815
 // http://doc.spip.org/@spip_sqlite_free
816
-function spip_sqlite_free(&$r, $serveur = '', $requeter = true){
816
+function spip_sqlite_free(&$r, $serveur = '', $requeter = true) {
817 817
 	unset($r);
818 818
 	return true;
819 819
 	//return sqlite_free_result($r);
@@ -821,29 +821,29 @@  discard block
 block discarded – undo
821 821
 
822 822
 
823 823
 // http://doc.spip.org/@spip_sqlite_get_charset
824
-function spip_sqlite_get_charset($charset = array(), $serveur = '', $requeter = true){
824
+function spip_sqlite_get_charset($charset = array(), $serveur = '', $requeter = true) {
825 825
 	//$c = !$charset ? '' : (" LIKE "._q($charset['charset']));
826 826
 	//return spip_sqlite_fetch(sqlite_query(_sqlite_link($serveur), "SHOW CHARACTER SET$c"), NULL, $serveur);
827 827
 }
828 828
 
829 829
 
830 830
 // http://doc.spip.org/@spip_sqlite_hex
831
-function spip_sqlite_hex($v){
831
+function spip_sqlite_hex($v) {
832 832
 	return hexdec($v);
833 833
 }
834 834
 
835 835
 
836 836
 // http://doc.spip.org/@spip_sqlite_in
837
-function spip_sqlite_in($val, $valeurs, $not = '', $serveur = '', $requeter = true){
837
+function spip_sqlite_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) {
838 838
 	$n = $i = 0;
839 839
 	$in_sql = "";
840
-	while ($n = strpos($valeurs, ',', $n+1)){
841
-		if ((++$i)>=255){
840
+	while ($n = strpos($valeurs, ',', $n + 1)) {
841
+		if ((++$i) >= 255) {
842 842
 			$in_sql .= "($val $not IN (".
843 843
 			           substr($valeurs, 0, $n).
844 844
 			           "))\n".
845 845
 			           ($not ? "AND\t" : "OR\t");
846
-			$valeurs = substr($valeurs, $n+1);
846
+			$valeurs = substr($valeurs, $n + 1);
847 847
 			$i = $n = 0;
848 848
 		}
849 849
 	}
@@ -854,10 +854,10 @@  discard block
 block discarded – undo
854 854
 
855 855
 
856 856
 // http://doc.spip.org/@spip_sqlite_insert
857
-function spip_sqlite_insert($table, $champs, $valeurs, $desc = '', $serveur = '', $requeter = true){
857
+function spip_sqlite_insert($table, $champs, $valeurs, $desc = '', $serveur = '', $requeter = true) {
858 858
 
859 859
 	$query = "INSERT INTO $table ".($champs ? "$champs VALUES $valeurs" : "DEFAULT VALUES");
860
-	if ($r = spip_sqlite_query($query, $serveur, $requeter)){
860
+	if ($r = spip_sqlite_query($query, $serveur, $requeter)) {
861 861
 		if (!$requeter) return $r;
862 862
 		$nb = spip_sqlite::last_insert_id($serveur);
863 863
 	}
@@ -872,12 +872,12 @@  discard block
 block discarded – undo
872 872
 
873 873
 
874 874
 // http://doc.spip.org/@spip_sqlite_insertq
875
-function spip_sqlite_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true){
875
+function spip_sqlite_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true) {
876 876
 	if (!$desc) $desc = description_table($table, $serveur);
877 877
 	if (!$desc) die("$table insertion sans description");
878 878
 	$fields = isset($desc['field']) ? $desc['field'] : array();
879 879
 
880
-	foreach ($couples as $champ => $val){
880
+	foreach ($couples as $champ => $val) {
881 881
 		$couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
882 882
 	}
883 883
 
@@ -885,7 +885,7 @@  discard block
 block discarded – undo
885 885
 	$couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
886 886
 
887 887
 	$cles = $valeurs = "";
888
-	if (count($couples)){
888
+	if (count($couples)) {
889 889
 		$cles = "(".join(',', array_keys($couples)).")";
890 890
 		$valeurs = "(".join(',', $couples).")";
891 891
 	}
@@ -895,7 +895,7 @@  discard block
 block discarded – undo
895 895
 
896 896
 
897 897
 // http://doc.spip.org/@spip_sqlite_insertq_multi
898
-function spip_sqlite_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true){
898
+function spip_sqlite_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true) {
899 899
 	if (!$desc) $desc = description_table($table, $serveur);
900 900
 	if (!$desc) die("$table insertion sans description");
901 901
 	if (!isset($desc['field']))
@@ -907,22 +907,22 @@  discard block
 block discarded – undo
907 907
 	// seul le nom de la table est a traduire ici :
908 908
 	// le faire une seule fois au debut
909 909
 	$query_start = "INSERT INTO $table ";
910
-	$query_start = spip_sqlite::traduire_requete($query_start,$serveur);
910
+	$query_start = spip_sqlite::traduire_requete($query_start, $serveur);
911 911
 
912 912
 	// ouvrir une transaction
913 913
 	if ($requeter)
914 914
 		spip_sqlite::demarrer_transaction($serveur);
915 915
 
916
-	while ($couples = array_shift($tab_couples)){
917
-		foreach ($couples as $champ => $val){
916
+	while ($couples = array_shift($tab_couples)) {
917
+		foreach ($couples as $champ => $val) {
918 918
 			$couples[$champ] = _sqlite_calculer_cite($val, $desc['field'][$champ]);
919 919
 		}
920 920
 
921 921
 		// inserer les champs timestamp par defaut
922
-		$couples = array_merge($maj,$couples);
922
+		$couples = array_merge($maj, $couples);
923 923
 
924 924
 		$champs = $valeurs = "";
925
-		if (count($couples)){
925
+		if (count($couples)) {
926 926
 			$champs = "(".join(',', array_keys($couples)).")";
927 927
 			$valeurs = "(".join(',', $couples).")";
928 928
 			$query = $query_start."$champs VALUES $valeurs";
@@ -931,10 +931,10 @@  discard block
 block discarded – undo
931 931
 			$query = $query_start."DEFAULT VALUES";
932 932
 		
933 933
 		if ($requeter)
934
-			$retour = spip_sqlite::executer_requete($query,$serveur);
934
+			$retour = spip_sqlite::executer_requete($query, $serveur);
935 935
 
936 936
 		// sur le dernier couple uniquement
937
-		if (!count($tab_couples)){
937
+		if (!count($tab_couples)) {
938 938
 			$nb = 0;
939 939
 			if ($requeter)
940 940
 				$nb = spip_sqlite::last_insert_id($serveur);
@@ -988,10 +988,10 @@  discard block
 block discarded – undo
988 988
 
989 989
 
990 990
 // http://doc.spip.org/@spip_sqlite_listdbs
991
-function spip_sqlite_listdbs($serveur = '', $requeter = true){
991
+function spip_sqlite_listdbs($serveur = '', $requeter = true) {
992 992
 	_sqlite_init();
993 993
 
994
-	if (!is_dir($d = substr(_DIR_DB, 0, -1))){
994
+	if (!is_dir($d = substr(_DIR_DB, 0, -1))) {
995 995
 		return array();
996 996
 	}
997 997
 
@@ -999,7 +999,7 @@  discard block
 block discarded – undo
999 999
 	$bases = preg_files($d, $pattern = '(.*)\.sqlite$');
1000 1000
 	$bds = array();
1001 1001
 
1002
-	foreach ($bases as $b){
1002
+	foreach ($bases as $b) {
1003 1003
 		// pas de bases commencant pas sqlite 
1004 1004
 		// (on s'en sert pour l'installation pour simuler la presence d'un serveur)
1005 1005
 		// les bases sont de la forme _sqliteX_tmp_spip_install.sqlite
@@ -1012,8 +1012,8 @@  discard block
 block discarded – undo
1012 1012
 
1013 1013
 
1014 1014
 // http://doc.spip.org/@spip_sqlite_multi
1015
-function spip_sqlite_multi($objet, $lang){
1016
-	$r = "EXTRAIRE_MULTI(" . $objet . ", '" . $lang . "') AS multi";
1015
+function spip_sqlite_multi($objet, $lang) {
1016
+	$r = "EXTRAIRE_MULTI(".$objet.", '".$lang."') AS multi";
1017 1017
 	return $r;
1018 1018
 }
1019 1019
 
@@ -1029,12 +1029,12 @@  discard block
 block discarded – undo
1029 1029
  * @return bool|string true / false / requete
1030 1030
  **/
1031 1031
 // http://doc.spip.org/@spip_sqlite_optimize
1032
-function spip_sqlite_optimize($table, $serveur = '', $requeter = true){
1032
+function spip_sqlite_optimize($table, $serveur = '', $requeter = true) {
1033 1033
 	static $do = false;
1034
-	if ($requeter and $do){
1034
+	if ($requeter and $do) {
1035 1035
 		return true;
1036 1036
 	}
1037
-	if ($requeter){
1037
+	if ($requeter) {
1038 1038
 		$do = true;
1039 1039
 	}
1040 1040
 	return spip_sqlite_query("VACUUM", $serveur, $requeter);
@@ -1050,11 +1050,11 @@  discard block
 block discarded – undo
1050 1050
  * @param string $type
1051 1051
  * @return string|number
1052 1052
  */
1053
-function spip_sqlite_quote($v, $type = ''){
1053
+function spip_sqlite_quote($v, $type = '') {
1054 1054
 		if (!is_array($v))
1055
-			return _sqlite_calculer_cite($v,$type);
1055
+			return _sqlite_calculer_cite($v, $type);
1056 1056
 		// si c'est un tableau, le parcourir en propageant le type
1057
-		foreach($v as $k=>$r)
1057
+		foreach ($v as $k=>$r)
1058 1058
 			$v[$k] = spip_sqlite_quote($r, $type);
1059 1059
 		return join(",", $v);
1060 1060
 }
@@ -1068,19 +1068,19 @@  discard block
 block discarded – undo
1068 1068
  * @param string $unite utite utilisee (DAY, MONTH, YEAR, ...)
1069 1069
  * @return string expression SQL
1070 1070
  **/
1071
-function spip_sqlite_date_proche($champ, $interval, $unite){
1071
+function spip_sqlite_date_proche($champ, $interval, $unite) {
1072 1072
 	$op = (($interval <= 0) ? '>' : '<');
1073 1073
 	return "($champ $op datetime('".date("Y-m-d H:i:s")."', '$interval $unite'))";
1074 1074
 }
1075 1075
 
1076 1076
 
1077 1077
 // http://doc.spip.org/@spip_sqlite_replace
1078
-function spip_sqlite_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true){
1078
+function spip_sqlite_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1079 1079
 	if (!$desc) $desc = description_table($table, $serveur);
1080 1080
 	if (!$desc) die("$table insertion sans description");
1081 1081
 	$fields = isset($desc['field']) ? $desc['field'] : array();
1082 1082
 
1083
-	foreach ($couples as $champ => $val){
1083
+	foreach ($couples as $champ => $val) {
1084 1084
 		$couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
1085 1085
 	}
1086 1086
 
@@ -1092,10 +1092,10 @@  discard block
 block discarded – undo
1092 1092
 
1093 1093
 
1094 1094
 // http://doc.spip.org/@spip_sqlite_replace_multi
1095
-function spip_sqlite_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true){
1095
+function spip_sqlite_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1096 1096
 
1097 1097
 	// boucler pour trainter chaque requete independemment
1098
-	foreach ($tab_couples as $couples){
1098
+	foreach ($tab_couples as $couples) {
1099 1099
 		$retour = spip_sqlite_replace($table, $couples, $desc, $serveur, $requeter);
1100 1100
 	}
1101 1101
 	// renvoie le dernier id	
@@ -1104,7 +1104,7 @@  discard block
 block discarded – undo
1104 1104
 
1105 1105
 
1106 1106
 // http://doc.spip.org/@spip_sqlite_select
1107
-function spip_sqlite_select($select, $from, $where = '', $groupby = '', $orderby = '', $limit = '', $having = '', $serveur = '', $requeter = true){
1107
+function spip_sqlite_select($select, $from, $where = '', $groupby = '', $orderby = '', $limit = '', $having = '', $serveur = '', $requeter = true) {
1108 1108
 
1109 1109
 	// version() n'est pas connu de sqlite
1110 1110
 	$select = str_replace('version()', 'sqlite_version()', $select);
@@ -1147,13 +1147,13 @@  discard block
 block discarded – undo
1147 1147
  * 		Nom de la base en cas de success.
1148 1148
  * 		False en cas d'erreur.
1149 1149
 **/
1150
-function spip_sqlite_selectdb($db, $serveur = '', $requeter = true){
1150
+function spip_sqlite_selectdb($db, $serveur = '', $requeter = true) {
1151 1151
 	_sqlite_init();
1152 1152
 
1153 1153
 	// interdire la creation d'une nouvelle base, 
1154 1154
 	// sauf si on est dans l'installation
1155 1155
 	if (!is_file($f = _DIR_DB.$db.'.sqlite')
1156
-	    && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)){
1156
+	    && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)) {
1157 1157
 		spip_log("Il est interdit de creer la base $db", 'sqlite.'._LOG_HS);
1158 1158
 		return false;
1159 1159
 	}
@@ -1162,8 +1162,8 @@  discard block
 block discarded – undo
1162 1162
 	// avec les identifiants connus
1163 1163
 	$index = $serveur ? $serveur : 0;
1164 1164
 
1165
-	if ($link = spip_connect_db('', '', '', '', '@selectdb@'.$db, $serveur, '', '')){
1166
-		if (($db==$link['db']) && $GLOBALS['connexions'][$index] = $link)
1165
+	if ($link = spip_connect_db('', '', '', '', '@selectdb@'.$db, $serveur, '', '')) {
1166
+		if (($db == $link['db']) && $GLOBALS['connexions'][$index] = $link)
1167 1167
 			return $db;
1168 1168
 	} else {
1169 1169
 		spip_log("Impossible de selectionner la base $db", 'sqlite.'._LOG_HS);
@@ -1174,7 +1174,7 @@  discard block
 block discarded – undo
1174 1174
 
1175 1175
 
1176 1176
 // http://doc.spip.org/@spip_sqlite_set_charset
1177
-function spip_sqlite_set_charset($charset, $serveur = '', $requeter = true){
1177
+function spip_sqlite_set_charset($charset, $serveur = '', $requeter = true) {
1178 1178
 	# spip_log("Gestion charset sql a ecrire : "."SET NAMES "._q($charset), 'sqlite.'._LOG_ERREUR);
1179 1179
 	# return spip_sqlite_query("SET NAMES ". spip_sqlite_quote($charset), $serveur); //<-- Passe pas !
1180 1180
 }
@@ -1193,7 +1193,7 @@  discard block
 block discarded – undo
1193 1193
  * @return ressource
1194 1194
  *     Ressource à utiliser avec sql_fetch()
1195 1195
 **/
1196
-function spip_sqlite_showbase($match, $serveur = '', $requeter = true){
1196
+function spip_sqlite_showbase($match, $serveur = '', $requeter = true) {
1197 1197
 	// type est le type d'entrée : table / index / view
1198 1198
 	// on ne retourne que les tables (?) et non les vues...
1199 1199
 	# ESCAPE non supporte par les versions sqlite <3
@@ -1211,7 +1211,7 @@  discard block
 block discarded – undo
1211 1211
 
1212 1212
 define('_SQLITE_RE_SHOW_TABLE', '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/');
1213 1213
 // http://doc.spip.org/@spip_sqlite_showtable
1214
-function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
1214
+function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true) {
1215 1215
 	$query =
1216 1216
 		'SELECT sql, type FROM'
1217 1217
 		.' (SELECT * FROM sqlite_master UNION ALL'
@@ -1224,18 +1224,18 @@  discard block
 block discarded – undo
1224 1224
 	if (!$a) return "";
1225 1225
 	if (!$requeter) return $a;
1226 1226
 	if (!($a = spip_sqlite_fetch($a, null, $serveur))) return "";
1227
-	$vue = ($a['type']=='view'); // table | vue
1227
+	$vue = ($a['type'] == 'view'); // table | vue
1228 1228
 
1229 1229
 	// c'est une table
1230 1230
 	// il faut parser le create
1231
-	if (!$vue){
1232
-		if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)){
1231
+	if (!$vue) {
1232
+		if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)) {
1233 1233
 			return "";
1234 1234
 		} else {
1235 1235
 			$desc = $r[1];
1236 1236
 			// extraction d'une KEY éventuelle en prenant garde de ne pas
1237 1237
 			// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
1238
-			if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)){
1238
+			if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
1239 1239
 				$namedkeys = $r[2];
1240 1240
 				$desc = $r[1];
1241 1241
 			}
@@ -1253,7 +1253,7 @@  discard block
 block discarded – undo
1253 1253
 			// separer toutes les descriptions de champs, separes par des virgules
1254 1254
 			# /!\ explode peut exploser aussi DECIMAL(10,2) !
1255 1255
 			$k_precedent = null;
1256
-			foreach (explode(",", $desc) as $v){
1256
+			foreach (explode(",", $desc) as $v) {
1257 1257
 
1258 1258
 				preg_match("/^\s*([^\s]+)\s+(.*)/", $v, $r);
1259 1259
 				// Les cles de champs peuvent etre entourees
@@ -1268,7 +1268,7 @@  discard block
 block discarded – undo
1268 1268
 
1269 1269
 				# rustine pour DECIMAL(10,2)
1270 1270
 				if (false !== strpos($k, ')')) {
1271
-					$fields[$k_precedent] .= ',' . $k . ' ' . $def;
1271
+					$fields[$k_precedent] .= ','.$k.' '.$def;
1272 1272
 					continue;
1273 1273
 				}
1274 1274
 				
@@ -1282,8 +1282,8 @@  discard block
 block discarded – undo
1282 1282
 				}
1283 1283
 			}
1284 1284
 			// key inclues dans la requete
1285
-			foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
1286
-				if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
1285
+			foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
1286
+				if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
1287 1287
 					$k = str_replace("`", '', trim($r[1]));
1288 1288
 					$t = trim(strtolower(str_replace("`", '', $r[2])), '"');
1289 1289
 					if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
@@ -1298,7 +1298,7 @@  discard block
 block discarded – undo
1298 1298
 				." AND type='index' AND name NOT LIKE 'sqlite_%'"
1299 1299
 				.'ORDER BY substr(type,2,1), name';
1300 1300
 			$a = spip_sqlite_query($query, $serveur, $requeter);
1301
-			while ($r = spip_sqlite_fetch($a, null, $serveur)){
1301
+			while ($r = spip_sqlite_fetch($a, null, $serveur)) {
1302 1302
 				$key = str_replace($nom_table.'_', '', $r['name']); // enlever le nom de la table ajoute a l'index
1303 1303
 				$colonnes = preg_replace(',.*\((.*)\).*,', '$1', $r['sql']);
1304 1304
 				$keys['KEY '.$key] = $colonnes;
@@ -1307,7 +1307,7 @@  discard block
 block discarded – undo
1307 1307
 	}
1308 1308
 	// c'est une vue, on liste les champs disponibles simplement
1309 1309
 	else {
1310
-		if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)){ // limit 1
1310
+		if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)) { // limit 1
1311 1311
 			$fields = array();
1312 1312
 			foreach ($res as $c => $v) $fields[$c] = '';
1313 1313
 			$keys = array();
@@ -1321,7 +1321,7 @@  discard block
 block discarded – undo
1321 1321
 
1322 1322
 
1323 1323
 // http://doc.spip.org/@spip_sqlite_update
1324
-function spip_sqlite_update($table, $champs, $where = '', $desc = '', $serveur = '', $requeter = true){
1324
+function spip_sqlite_update($table, $champs, $where = '', $desc = '', $serveur = '', $requeter = true) {
1325 1325
 	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1326 1326
 	$champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1327 1327
 
@@ -1338,7 +1338,7 @@  discard block
 block discarded – undo
1338 1338
 
1339 1339
 
1340 1340
 // http://doc.spip.org/@spip_sqlite_updateq
1341
-function spip_sqlite_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true){
1341
+function spip_sqlite_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1342 1342
 
1343 1343
 	if (!$champs) return;
1344 1344
 	if (!$desc) $desc = description_table($table, $serveur);
@@ -1349,7 +1349,7 @@  discard block
 block discarded – undo
1349 1349
 	$champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1350 1350
 
1351 1351
 	$set = array();
1352
-	foreach ($champs as $champ => $val){
1352
+	foreach ($champs as $champ => $val) {
1353 1353
 		$set[] = $champ.'='._sqlite_calculer_cite($val, $fields[$champ]);
1354 1354
 	}
1355 1355
 	return spip_sqlite_query(
@@ -1374,11 +1374,11 @@  discard block
 block discarded – undo
1374 1374
  *
1375 1375
  * @return void
1376 1376
  */
1377
-function _sqlite_init(){
1377
+function _sqlite_init() {
1378 1378
 	if (!defined('_DIR_DB')) define('_DIR_DB', _DIR_ETC.'bases/');
1379 1379
 	if (!defined('_SQLITE_CHMOD')) define('_SQLITE_CHMOD', _SPIP_CHMOD);
1380 1380
 
1381
-	if (!is_dir($d = _DIR_DB)){
1381
+	if (!is_dir($d = _DIR_DB)) {
1382 1382
 		include_spip('inc/flock');
1383 1383
 		sous_repertoire($d);
1384 1384
 	}
@@ -1395,17 +1395,17 @@  discard block
 block discarded – undo
1395 1395
  * @param bool $requeter
1396 1396
  * @return bool|int
1397 1397
  */
1398
-function _sqlite_is_version($version = '', $link = '', $serveur = '', $requeter = true){
1399
-	if ($link==='') $link = _sqlite_link($serveur);
1398
+function _sqlite_is_version($version = '', $link = '', $serveur = '', $requeter = true) {
1399
+	if ($link === '') $link = _sqlite_link($serveur);
1400 1400
 	if (!$link) return false;
1401
-	if ($link instanceof PDO){
1401
+	if ($link instanceof PDO) {
1402 1402
 		$v = 3;
1403 1403
 	} else {
1404 1404
 		$v = 2;
1405 1405
 	}
1406 1406
 
1407 1407
 	if (!$version) return $v;
1408
-	return ($version==$v);
1408
+	return ($version == $v);
1409 1409
 }
1410 1410
 
1411 1411
 
@@ -1416,7 +1416,7 @@  discard block
 block discarded – undo
1416 1416
  * @param string $serveur
1417 1417
  * @return
1418 1418
  */
1419
-function _sqlite_link($serveur = ''){
1419
+function _sqlite_link($serveur = '') {
1420 1420
 	$link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1421 1421
 	return $link;
1422 1422
 }
@@ -1433,17 +1433,17 @@  discard block
 block discarded – undo
1433 1433
  * @param string $type
1434 1434
  * @return string|array|number
1435 1435
  */
1436
-function _sqlite_calculer_cite($v, $type){
1437
-	if ($type){
1438
-		if(is_null($v)
1439
-			AND stripos($type,"NOT NULL")===false) return 'NULL'; // null php se traduit en NULL SQL
1436
+function _sqlite_calculer_cite($v, $type) {
1437
+	if ($type) {
1438
+		if (is_null($v)
1439
+			AND stripos($type, "NOT NULL") === false) return 'NULL'; // null php se traduit en NULL SQL
1440 1440
 
1441 1441
 		if (sql_test_date($type) AND preg_match('/^\w+\(/', $v))
1442 1442
 			return $v;
1443
-		if (sql_test_int($type)){
1443
+		if (sql_test_int($type)) {
1444 1444
 			if (is_numeric($v))
1445 1445
 				return $v;
1446
-			elseif (ctype_xdigit(substr($v, 2)) AND strncmp($v, '0x', 2)==0)
1446
+			elseif (ctype_xdigit(substr($v, 2)) AND strncmp($v, '0x', 2) == 0)
1447 1447
 				return hexdec(substr($v, 2));
1448 1448
 			else
1449 1449
 				return intval($v);
@@ -1455,20 +1455,20 @@  discard block
 block discarded – undo
1455 1455
 			return strval($v);
1456 1456
 	}
1457 1457
 
1458
-	if (function_exists('sqlite_escape_string')){
1458
+	if (function_exists('sqlite_escape_string')) {
1459 1459
 		return "'".sqlite_escape_string($v)."'";
1460 1460
 	}
1461 1461
 
1462 1462
 	// trouver un link sqlite3 pour faire l'echappement
1463
-	foreach ($GLOBALS['connexions'] as $s){
1464
-		if (_sqlite_is_version(3, $l = $s['link'])){
1463
+	foreach ($GLOBALS['connexions'] as $s) {
1464
+		if (_sqlite_is_version(3, $l = $s['link'])) {
1465 1465
 			return $l->quote($v);
1466 1466
 		}
1467 1467
 	}
1468 1468
 
1469 1469
 	// echapper les ' en ''
1470
-	spip_log("Pas de methode sqlite_escape_string ni ->quote pour echapper","sqlite."._LOG_INFO_IMPORTANTE);
1471
-	return  ("'" . str_replace("'","''",$v) . "'");
1470
+	spip_log("Pas de methode sqlite_escape_string ni ->quote pour echapper", "sqlite."._LOG_INFO_IMPORTANTE);
1471
+	return  ("'".str_replace("'", "''", $v)."'");
1472 1472
 }
1473 1473
 
1474 1474
 
@@ -1481,16 +1481,16 @@  discard block
 block discarded – undo
1481 1481
  * @param string $join
1482 1482
  * @return string
1483 1483
  */
1484
-function _sqlite_calculer_expression($expression, $v, $join = 'AND'){
1484
+function _sqlite_calculer_expression($expression, $v, $join = 'AND') {
1485 1485
 	if (empty($v))
1486 1486
 		return '';
1487 1487
 
1488 1488
 	$exp = "\n$expression ";
1489 1489
 
1490
-	if (!is_array($v)){
1490
+	if (!is_array($v)) {
1491 1491
 		return $exp.$v;
1492 1492
 	} else {
1493
-		if (strtoupper($join)==='AND')
1493
+		if (strtoupper($join) === 'AND')
1494 1494
 			return $exp.join("\n\t$join ", array_map('_sqlite_calculer_where', $v));
1495 1495
 		else
1496 1496
 			return $exp.join($join, $v);
@@ -1505,23 +1505,23 @@  discard block
 block discarded – undo
1505 1505
  * @param  $orderby
1506 1506
  * @return string
1507 1507
  */
1508
-function _sqlite_calculer_order($orderby){
1508
+function _sqlite_calculer_order($orderby) {
1509 1509
 	return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
1510 1510
 }
1511 1511
 
1512 1512
 
1513 1513
 // renvoie des 'nom AS alias' 
1514 1514
 // http://doc.spip.org/@_sqlite_calculer_select_as
1515
-function _sqlite_calculer_select_as($args){
1515
+function _sqlite_calculer_select_as($args) {
1516 1516
 	$res = '';
1517
-	foreach ($args as $k => $v){
1518
-		if (substr($k, -1)=='@'){
1517
+	foreach ($args as $k => $v) {
1518
+		if (substr($k, -1) == '@') {
1519 1519
 			// c'est une jointure qui se refere au from precedent
1520 1520
 			// pas de virgule
1521 1521
 			$res .= '  '.$v;
1522 1522
 		}
1523 1523
 		else {
1524
-			if (!is_numeric($k)){
1524
+			if (!is_numeric($k)) {
1525 1525
 				$p = strpos($v, " ");
1526 1526
 				if ($p)
1527 1527
 					$v = substr($v, 0, $p)." AS '$k'".substr($v, $p);
@@ -1541,7 +1541,7 @@  discard block
 block discarded – undo
1541 1541
  * @param  $v
1542 1542
  * @return array|mixed|string
1543 1543
  */
1544
-function _sqlite_calculer_where($v){
1544
+function _sqlite_calculer_where($v) {
1545 1545
 	if (!is_array($v))
1546 1546
 		return $v;
1547 1547
 
@@ -1550,11 +1550,11 @@  discard block
 block discarded – undo
1550 1550
 		return $op;
1551 1551
 	else {
1552 1552
 		$arg = _sqlite_calculer_where(array_shift($v));
1553
-		if ($n==1){
1553
+		if ($n == 1) {
1554 1554
 			return "$op($arg)";
1555 1555
 		} else {
1556 1556
 			$arg2 = _sqlite_calculer_where(array_shift($v));
1557
-			if ($n==2){
1557
+			if ($n == 2) {
1558 1558
 				return "($arg $op $arg2)";
1559 1559
 			} else return "($arg $op ($arg2) : $v[0])";
1560 1560
 		}
@@ -1572,19 +1572,19 @@  discard block
 block discarded – undo
1572 1572
  * @param string $version
1573 1573
  * @return array|bool
1574 1574
  */
1575
-function _sqlite_charger_version($version = ''){
1575
+function _sqlite_charger_version($version = '') {
1576 1576
 	$versions = array();
1577 1577
 
1578 1578
 	// version 2
1579
-	if (!$version || $version==2){
1580
-		if (charger_php_extension('sqlite')){
1579
+	if (!$version || $version == 2) {
1580
+		if (charger_php_extension('sqlite')) {
1581 1581
 			$versions[] = 2;
1582 1582
 		}
1583 1583
 	}
1584 1584
 
1585 1585
 	// version 3
1586
-	if (!$version || $version==3){
1587
-		if (charger_php_extension('pdo') && charger_php_extension('pdo_sqlite')){
1586
+	if (!$version || $version == 3) {
1587
+		if (charger_php_extension('pdo') && charger_php_extension('pdo_sqlite')) {
1588 1588
 			$versions[] = 3;
1589 1589
 		}
1590 1590
 	}
@@ -1616,19 +1616,19 @@  discard block
 block discarded – undo
1616 1616
  * @param string $serveur : nom de la connexion sql en cours
1617 1617
  *
1618 1618
  */
1619
-function _sqlite_modifier_table($table, $colonne, $opt = array(), $serveur = ''){
1619
+function _sqlite_modifier_table($table, $colonne, $opt = array(), $serveur = '') {
1620 1620
 
1621
-	if (is_array($table)){
1621
+	if (is_array($table)) {
1622 1622
 		reset($table);
1623
-		list($table_origine,$table_destination) = each($table);
1623
+		list($table_origine, $table_destination) = each($table);
1624 1624
 	} else {
1625 1625
 		$table_origine = $table_destination = $table;
1626 1626
 	}
1627 1627
 	// ne prend actuellement qu'un changement
1628 1628
 	// mais pourra etre adapte pour changer plus qu'une colonne a la fois
1629
-	if (is_array($colonne)){
1629
+	if (is_array($colonne)) {
1630 1630
 		reset($colonne);
1631
-		list($colonne_origine,$colonne_destination) = each($colonne);
1631
+		list($colonne_origine, $colonne_destination) = each($colonne);
1632 1632
 	} else {
1633 1633
 		$colonne_origine = $colonne_destination = $colonne;
1634 1634
 	}
@@ -1637,11 +1637,11 @@  discard block
 block discarded – undo
1637 1637
 
1638 1638
 	// si les noms de tables sont differents, pas besoin de table temporaire
1639 1639
 	// on prendra directement le nom de la future table
1640
-	$meme_table = ($table_origine==$table_destination);
1640
+	$meme_table = ($table_origine == $table_destination);
1641 1641
 
1642 1642
 	$def_origine = sql_showtable($table_origine, false, $serveur);
1643
-	if (!$def_origine OR !isset($def_origine['field'])){
1644
-		spip_log("Alter table impossible sur $table_origine : table non trouvee",'sqlite'._LOG_ERREUR);
1643
+	if (!$def_origine OR !isset($def_origine['field'])) {
1644
+		spip_log("Alter table impossible sur $table_origine : table non trouvee", 'sqlite'._LOG_ERREUR);
1645 1645
 		return false;
1646 1646
 	}
1647 1647
 
@@ -1658,11 +1658,11 @@  discard block
 block discarded – undo
1658 1658
 	// pour le INSERT INTO plus loin
1659 1659
 	// stocker la correspondance nouvelles->anciennes colonnes
1660 1660
 	$fields_correspondances = array();
1661
-	foreach ($def_origine['field'] as $c => $d){
1661
+	foreach ($def_origine['field'] as $c => $d) {
1662 1662
 
1663
-		if ($colonne_origine && ($c==$colonne_origine)){
1663
+		if ($colonne_origine && ($c == $colonne_origine)) {
1664 1664
 			// si pas DROP
1665
-			if ($colonne_destination){
1665
+			if ($colonne_destination) {
1666 1666
 				$fields[$colonne_destination] = $opt['field'][$colonne_destination];
1667 1667
 				$fields_correspondances[$colonne_destination] = $c;
1668 1668
 			}
@@ -1672,13 +1672,13 @@  discard block
 block discarded – undo
1672 1672
 		}
1673 1673
 	}
1674 1674
 	// cas de ADD sqlite2 (ajout du champ en fin de table):
1675
-	if (!$colonne_origine && $colonne_destination){
1675
+	if (!$colonne_origine && $colonne_destination) {
1676 1676
 		$fields[$colonne_destination] = $opt['field'][$colonne_destination];
1677 1677
 	}
1678 1678
 
1679 1679
 	// key...
1680 1680
 	$keys = array();
1681
-	foreach ($def_origine['key'] as $c => $d){
1681
+	foreach ($def_origine['key'] as $c => $d) {
1682 1682
 		$c = str_replace($colonne_origine, $colonne_destination, $c);
1683 1683
 		$d = str_replace($colonne_origine, $colonne_destination, $d);
1684 1684
 		// seulement si on ne supprime pas la colonne !
@@ -1693,8 +1693,8 @@  discard block
 block discarded – undo
1693 1693
 	// copier dans destination (si differente de origine), sinon tmp
1694 1694
 	$table_copie = ($meme_table) ? $table_tmp : $table_destination;
1695 1695
 	$autoinc = (isset($keys['PRIMARY KEY'])
1696
-					AND stripos($keys['PRIMARY KEY'],',')===false
1697
-					AND stripos($fields[$keys['PRIMARY KEY']],'default')===false);
1696
+					AND stripos($keys['PRIMARY KEY'], ',') === false
1697
+					AND stripos($fields[$keys['PRIMARY KEY']], 'default') === false);
1698 1698
 
1699 1699
 	if ($q = _sqlite_requete_create(
1700 1700
 		$table_copie,
@@ -1703,7 +1703,7 @@  discard block
 block discarded – undo
1703 1703
 		$autoinc,
1704 1704
 		$temporary = false,
1705 1705
 		$ifnotexists = true,
1706
-		$serveur)){
1706
+		$serveur)) {
1707 1707
 		$queries[] = $q;
1708 1708
 	}
1709 1709
 
@@ -1719,8 +1719,8 @@  discard block
 block discarded – undo
1719 1719
 	// 4) renommer la table temporaire 
1720 1720
 	// avec le nom de la table destination
1721 1721
 	// si necessaire
1722
-	if ($meme_table){
1723
-		if (_sqlite_is_version(3, '', $serveur)){
1722
+	if ($meme_table) {
1723
+		if (_sqlite_is_version(3, '', $serveur)) {
1724 1724
 			$queries[] = "ALTER TABLE $table_copie RENAME TO $table_destination";
1725 1725
 		} else {
1726 1726
 			$queries[] = _sqlite_requete_create(
@@ -1737,8 +1737,8 @@  discard block
 block discarded – undo
1737 1737
 	}
1738 1738
 
1739 1739
 	// 5) remettre les index !
1740
-	foreach ($keys as $k => $v){
1741
-		if ($k=='PRIMARY KEY'){
1740
+	foreach ($keys as $k => $v) {
1741
+		if ($k == 'PRIMARY KEY') {
1742 1742
 		}
1743 1743
 		else {
1744 1744
 			// enlever KEY
@@ -1748,11 +1748,11 @@  discard block
 block discarded – undo
1748 1748
 	}
1749 1749
 
1750 1750
 
1751
-	if (count($queries)){
1751
+	if (count($queries)) {
1752 1752
 		spip_sqlite::demarrer_transaction($serveur);
1753 1753
 		// il faut les faire une par une car $query = join('; ', $queries).";"; ne fonctionne pas
1754
-		foreach ($queries as $q){
1755
-			if (!spip_sqlite::executer_requete($q, $serveur)){
1754
+		foreach ($queries as $q) {
1755
+			if (!spip_sqlite::executer_requete($q, $serveur)) {
1756 1756
 				spip_log(_LOG_GRAVITE_ERREUR, "SQLite : ALTER TABLE table :"
1757 1757
 																			." Erreur a l'execution de la requete : $q", 'sqlite');
1758 1758
 				spip_sqlite::annuler_transaction($serveur);
@@ -1772,7 +1772,7 @@  discard block
 block discarded – undo
1772 1772
  *
1773 1773
  * @return array
1774 1774
  */
1775
-function _sqlite_ref_fonctions(){
1775
+function _sqlite_ref_fonctions() {
1776 1776
 	$fonctions = array(
1777 1777
 		'alter' => 'spip_sqlite_alter',
1778 1778
 		'count' => 'spip_sqlite_count',
@@ -1837,7 +1837,7 @@  discard block
 block discarded – undo
1837 1837
  * @param bool $autoinc
1838 1838
  * @return mixed
1839 1839
  */
1840
-function _sqlite_remplacements_definitions_table($query, $autoinc = false){
1840
+function _sqlite_remplacements_definitions_table($query, $autoinc = false) {
1841 1841
 	// quelques remplacements
1842 1842
 	$num = "(\s*\([0-9]*\))?";
1843 1843
 	$enum = "(\s*\([^\)]*\))?";
@@ -1865,22 +1865,22 @@  discard block
 block discarded – undo
1865 1865
 		'/((big|small|medium|tiny)?int(eger)?'.$num.'\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0",
1866 1866
 	);
1867 1867
 
1868
-	if (is_string($query)){
1868
+	if (is_string($query)) {
1869 1869
 		$query = preg_replace(array_keys($remplace), $remplace, $query);
1870
-		if ($autoinc OR preg_match(',AUTO_INCREMENT,is',$query))
1870
+		if ($autoinc OR preg_match(',AUTO_INCREMENT,is', $query))
1871 1871
 			$query = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query);
1872
-		else{
1872
+		else {
1873 1873
 			$query = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query);
1874 1874
 			$query = _sqlite_collate_ci($query);
1875 1875
 		}
1876 1876
 	}
1877
-	elseif(is_array($query)){
1878
-		foreach($query as $k=>$q) {
1879
-			$ai = ($autoinc?$k==$autoinc:preg_match(',AUTO_INCREMENT,is',$q));
1877
+	elseif (is_array($query)) {
1878
+		foreach ($query as $k=>$q) {
1879
+			$ai = ($autoinc ? $k == $autoinc : preg_match(',AUTO_INCREMENT,is', $q));
1880 1880
 			$query[$k] = preg_replace(array_keys($remplace), $remplace, $query[$k]);
1881 1881
 			if ($ai)
1882 1882
 				$query[$k] = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query[$k]);
1883
-			else{
1883
+			else {
1884 1884
 				$query[$k] = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query[$k]);
1885 1885
 				$query[$k] = _sqlite_collate_ci($query[$k]);
1886 1886
 			}
@@ -1895,13 +1895,13 @@  discard block
 block discarded – undo
1895 1895
  * @param string $champ
1896 1896
  * @return string
1897 1897
  */
1898
-function _sqlite_collate_ci($champ){
1899
-	if (stripos($champ,"COLLATE")!==false)
1898
+function _sqlite_collate_ci($champ) {
1899
+	if (stripos($champ, "COLLATE") !== false)
1900 1900
 		return $champ;
1901
-	if (stripos($champ,"BINARY")!==false)
1902
-		return str_ireplace("BINARY","COLLATE BINARY",$champ);
1903
-	if (preg_match(",^(char|varchar|(long|small|medium|tiny)?text),i",$champ))
1904
-		return $champ . " COLLATE NOCASE";
1901
+	if (stripos($champ, "BINARY") !== false)
1902
+		return str_ireplace("BINARY", "COLLATE BINARY", $champ);
1903
+	if (preg_match(",^(char|varchar|(long|small|medium|tiny)?text),i", $champ))
1904
+		return $champ." COLLATE NOCASE";
1905 1905
 
1906 1906
 	return $champ;
1907 1907
 }
@@ -1923,7 +1923,7 @@  discard block
 block discarded – undo
1923 1923
  * @param bool $requeter
1924 1924
  * @return bool|string
1925 1925
  */
1926
-function _sqlite_requete_create($nom, $champs, $cles, $autoinc = false, $temporary = false, $_ifnotexists = true, $serveur = '', $requeter = true){
1926
+function _sqlite_requete_create($nom, $champs, $cles, $autoinc = false, $temporary = false, $_ifnotexists = true, $serveur = '', $requeter = true) {
1927 1927
 	$query = $keys = $s = $p = '';
1928 1928
 
1929 1929
 	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
@@ -1936,9 +1936,9 @@  discard block
 block discarded – undo
1936 1936
 	// Il gere par contre primary key !
1937 1937
 	// Soit la PK est definie dans les cles, soit dans un champs
1938 1938
 	$c = ""; // le champ de cle primaire
1939
-	if (!isset($cles[$pk = "PRIMARY KEY"]) OR !$c = $cles[$pk]){
1940
-		foreach ($champs as $k => $v){
1941
-			if (false!==stripos($v, $pk)){
1939
+	if (!isset($cles[$pk = "PRIMARY KEY"]) OR !$c = $cles[$pk]) {
1940
+		foreach ($champs as $k => $v) {
1941
+			if (false !== stripos($v, $pk)) {
1942 1942
 				$c = $k;
1943 1943
 				// on n'en a plus besoin dans field, vu que defini dans key
1944 1944
 				$champs[$k] = preg_replace("/$pk/is", '', $champs[$k]);
@@ -1949,23 +1949,23 @@  discard block
 block discarded – undo
1949 1949
 	if ($c) $keys = "\n\t\t$pk ($c)";
1950 1950
 	// Pas de DEFAULT 0 sur les cles primaires en auto-increment
1951 1951
 	if (isset($champs[$c])
1952
-		AND stripos($champs[$c],"default 0")!==false){
1953
-		$champs[$c] = trim(str_ireplace("default 0","",$champs[$c]));
1952
+		AND stripos($champs[$c], "default 0") !== false) {
1953
+		$champs[$c] = trim(str_ireplace("default 0", "", $champs[$c]));
1954 1954
 	}
1955 1955
 
1956
-	$champs = _sqlite_remplacements_definitions_table($champs, $autoinc?$c:false);
1957
-	foreach ($champs as $k => $v){
1956
+	$champs = _sqlite_remplacements_definitions_table($champs, $autoinc ? $c : false);
1957
+	foreach ($champs as $k => $v) {
1958 1958
 		$query .= "$s\n\t\t$k $v";
1959 1959
 		$s = ",";
1960 1960
 	}
1961 1961
 
1962 1962
 	$ifnotexists = "";
1963
-	if ($_ifnotexists){
1963
+	if ($_ifnotexists) {
1964 1964
 
1965
-		$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur);
1965
+		$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version", $serveur), '', $serveur);
1966 1966
 		if (!function_exists('spip_version_compare')) include_spip('plugins/installer');
1967 1967
 
1968
-		if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) {
1968
+		if ($version AND spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) {
1969 1969
 			$ifnotexists = ' IF NOT EXISTS';
1970 1970
 		} else {
1971 1971
 			/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
@@ -1998,12 +1998,12 @@  discard block
 block discarded – undo
1998 1998
  * @param string $serveur
1999 1999
  * @return
2000 2000
  */
2001
-function _sqlite_ajouter_champs_timestamp($table, $couples, $desc = '', $serveur = ''){
2001
+function _sqlite_ajouter_champs_timestamp($table, $couples, $desc = '', $serveur = '') {
2002 2002
 	static $tables = array();
2003 2003
 
2004
-	if (!isset($tables[$table])){
2004
+	if (!isset($tables[$table])) {
2005 2005
 
2006
-		if (!$desc){
2006
+		if (!$desc) {
2007 2007
 			$trouver_table = charger_fonction('trouver_table', 'base');
2008 2008
 			$desc = $trouver_table($table, $serveur);
2009 2009
 			// si pas de description, on ne fait rien, ou on die() ?
@@ -2016,14 +2016,14 @@  discard block
 block discarded – undo
2016 2016
 		// mais ceux-ci ne sont pas utilises dans le core
2017 2017
 		$tables[$table] = array();
2018 2018
 
2019
-		foreach ($desc['field'] as $k => $v){
2020
-			if (strpos(strtolower(ltrim($v)), 'timestamp')===0)
2019
+		foreach ($desc['field'] as $k => $v) {
2020
+			if (strpos(strtolower(ltrim($v)), 'timestamp') === 0)
2021 2021
 				$tables[$table][$k] = "datetime('now')";
2022 2022
 		}
2023 2023
 	}
2024 2024
 
2025 2025
 	// ajout des champs type 'timestamp' absents
2026
-	return array_merge($tables[$table],$couples);
2026
+	return array_merge($tables[$table], $couples);
2027 2027
 }
2028 2028
 
2029 2029
 
@@ -2034,7 +2034,7 @@  discard block
 block discarded – undo
2034 2034
  *
2035 2035
  * @return array|bool
2036 2036
  */
2037
-function spip_versions_sqlite(){
2037
+function spip_versions_sqlite() {
2038 2038
 	return _sqlite_charger_version();
2039 2039
 }
2040 2040
 
@@ -2043,7 +2043,7 @@  discard block
 block discarded – undo
2043 2043
 	static $requeteurs = array();
2044 2044
 	static $transaction_en_cours = array();
2045 2045
 
2046
-	function spip_sqlite(){}
2046
+	function spip_sqlite() {}
2047 2047
 
2048 2048
 	/**
2049 2049
 	 * Retourne une unique instance du requêteur
@@ -2056,45 +2056,45 @@  discard block
 block discarded – undo
2056 2056
 	 * @return sqlite_requeteur
2057 2057
 	 * 		Instance unique du requêteur
2058 2058
 	**/
2059
-	static function requeteur($serveur){
2059
+	static function requeteur($serveur) {
2060 2060
 		if (!isset(spip_sqlite::$requeteurs[$serveur]))
2061 2061
 			spip_sqlite::$requeteurs[$serveur] = new sqlite_requeteur($serveur);
2062 2062
 		return spip_sqlite::$requeteurs[$serveur];
2063 2063
 	}
2064 2064
 
2065
-	static function traduire_requete($query, $serveur){
2065
+	static function traduire_requete($query, $serveur) {
2066 2066
 		$requeteur = spip_sqlite::requeteur($serveur);
2067
-		$traducteur = new sqlite_traducteur($query, $requeteur->prefixe,$requeteur->sqlite_version);
2067
+		$traducteur = new sqlite_traducteur($query, $requeteur->prefixe, $requeteur->sqlite_version);
2068 2068
 		return $traducteur->traduire_requete();
2069 2069
 	}
2070 2070
 
2071
-	static function demarrer_transaction($serveur){
2072
-		spip_sqlite::executer_requete("BEGIN TRANSACTION",$serveur);
2071
+	static function demarrer_transaction($serveur) {
2072
+		spip_sqlite::executer_requete("BEGIN TRANSACTION", $serveur);
2073 2073
 		spip_sqlite::$transaction_en_cours[$serveur] = true;
2074 2074
 	}
2075 2075
 
2076
-	static function executer_requete($query, $serveur, $tracer=null){
2076
+	static function executer_requete($query, $serveur, $tracer = null) {
2077 2077
 		$requeteur = spip_sqlite::requeteur($serveur);
2078 2078
 		return $requeteur->executer_requete($query, $tracer);
2079 2079
 	}
2080 2080
 
2081
-	static function last_insert_id($serveur){
2081
+	static function last_insert_id($serveur) {
2082 2082
 		$requeteur = spip_sqlite::requeteur($serveur);
2083 2083
 		return $requeteur->last_insert_id($serveur);
2084 2084
 	}
2085 2085
 
2086
-	static function annuler_transaction($serveur){
2087
-		spip_sqlite::executer_requete("ROLLBACK",$serveur);
2086
+	static function annuler_transaction($serveur) {
2087
+		spip_sqlite::executer_requete("ROLLBACK", $serveur);
2088 2088
 		spip_sqlite::$transaction_en_cours[$serveur] = false;
2089 2089
 	}
2090 2090
 
2091
-	static function finir_transaction($serveur){
2091
+	static function finir_transaction($serveur) {
2092 2092
 		// si pas de transaction en cours, ne rien faire et le dire
2093 2093
 		if (!isset (spip_sqlite::$transaction_en_cours[$serveur])
2094
-		  OR spip_sqlite::$transaction_en_cours[$serveur]==false)
2094
+		  OR spip_sqlite::$transaction_en_cours[$serveur] == false)
2095 2095
 			return false;
2096 2096
 		// sinon fermer la transaction et retourner true
2097
-		spip_sqlite::executer_requete("COMMIT",$serveur);
2097
+		spip_sqlite::executer_requete("COMMIT", $serveur);
2098 2098
 		spip_sqlite::$transaction_en_cours[$serveur] = false;
2099 2099
 		return true;
2100 2100
 	}
@@ -2125,11 +2125,11 @@  discard block
 block discarded – undo
2125 2125
 	 * @param string $serveur
2126 2126
 	 * @return bool
2127 2127
 	 */
2128
-	function sqlite_requeteur($serveur = ''){
2128
+	function sqlite_requeteur($serveur = '') {
2129 2129
 		_sqlite_init();
2130 2130
 		$this->serveur = strtolower($serveur);
2131 2131
 
2132
-		if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)){
2132
+		if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)) {
2133 2133
 			spip_log("Aucune connexion sqlite (link)", 'sqlite.'._LOG_ERREUR);
2134 2134
 			return false;
2135 2135
 		}
@@ -2150,24 +2150,24 @@  discard block
 block discarded – undo
2150 2150
 	 *
2151 2151
 	 * @return bool|SQLiteResult
2152 2152
 	 */
2153
-	function executer_requete($query, $tracer=null){
2153
+	function executer_requete($query, $tracer = null) {
2154 2154
 		if (is_null($tracer))
2155 2155
 			$tracer = $this->tracer;
2156 2156
 		$err = "";
2157 2157
 		$t = 0;
2158
-		if ($tracer){
2158
+		if ($tracer) {
2159 2159
 			include_spip('public/tracer');
2160 2160
 			$t = trace_query_start();
2161 2161
 		}
2162 2162
 		
2163 2163
 		# spip_log("requete: $this->serveur >> $query",'sqlite.'._LOG_DEBUG); // boum ? pourquoi ?
2164
-		if ($this->link){
2164
+		if ($this->link) {
2165 2165
 			// memoriser la derniere erreur PHP vue
2166
-			$e = (function_exists('error_get_last')?error_get_last():"");
2166
+			$e = (function_exists('error_get_last') ? error_get_last() : "");
2167 2167
 			// sauver la derniere requete
2168 2168
 			$GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['last'] = $query;
2169 2169
 
2170
-			if ($this->sqlite_version==3){
2170
+			if ($this->sqlite_version == 3) {
2171 2171
 				$r = $this->link->query($query);
2172 2172
 				// sauvegarde de la requete (elle y est deja dans $r->queryString)
2173 2173
 				# $r->spipQueryString = $query;
@@ -2176,10 +2176,10 @@  discard block
 block discarded – undo
2176 2176
 				// par une requete SELECT
2177 2177
 				// aucune autre solution ne donne le nombre attendu :( !
2178 2178
 				// particulierement s'il y a des LIMIT dans la requete.
2179
-				if (strtoupper(substr(ltrim($query), 0, 6))=='SELECT'){
2180
-					if ($r){
2179
+				if (strtoupper(substr(ltrim($query), 0, 6)) == 'SELECT') {
2180
+					if ($r) {
2181 2181
 						// noter le link et la query pour faire le comptage *si* on en a besoin
2182
-						$r->spipSqliteRowCount = array($this->link,$query);
2182
+						$r->spipSqliteRowCount = array($this->link, $query);
2183 2183
 					}
2184 2184
 					elseif ($r instanceof PDOStatement) {
2185 2185
 						$r->spipSqliteRowCount = 0;
@@ -2191,7 +2191,7 @@  discard block
 block discarded – undo
2191 2191
 			}
2192 2192
 
2193 2193
 			// loger les warnings/erreurs eventuels de sqlite remontant dans PHP
2194
-			if ($err = (function_exists('error_get_last')?error_get_last():"") AND $err!=$e){
2194
+			if ($err = (function_exists('error_get_last') ? error_get_last() : "") AND $err != $e) {
2195 2195
 				$err = strip_tags($err['message'])." in ".$err['file']." line ".$err['line'];
2196 2196
 				spip_log("$err - ".$query, 'sqlite.'._LOG_ERREUR);
2197 2197
 			}
@@ -2207,8 +2207,8 @@  discard block
 block discarded – undo
2207 2207
 		return $t ? trace_query_end($query, $t, $r, $err, $this->serveur) : $r;
2208 2208
 	}
2209 2209
 
2210
-	function last_insert_id(){
2211
-		if ($this->sqlite_version==3)
2210
+	function last_insert_id() {
2211
+		if ($this->sqlite_version == 3)
2212 2212
 			return $this->link->lastInsertId();
2213 2213
 		else
2214 2214
 			return sqlite_last_insert_rowid($this->link);
@@ -2229,7 +2229,7 @@  discard block
 block discarded – undo
2229 2229
 	// Pour les corrections a effectuer sur les requetes :
2230 2230
 	var $textes = array(); // array(code=>'texte') trouvé
2231 2231
 
2232
-	function sqlite_traducteur($query, $prefixe, $sqlite_version){
2232
+	function sqlite_traducteur($query, $prefixe, $sqlite_version) {
2233 2233
 		$this->query = $query;
2234 2234
 		$this->prefixe = $prefixe;
2235 2235
 		$this->sqlite_version = $sqlite_version;
@@ -2244,7 +2244,7 @@  discard block
 block discarded – undo
2244 2244
 	 *
2245 2245
 	 * @return void
2246 2246
 	 */
2247
-	function traduire_requete(){
2247
+	function traduire_requete() {
2248 2248
 		//
2249 2249
 		// 1) Protection des textes en les remplacant par des codes
2250 2250
 		//
@@ -2256,46 +2256,46 @@  discard block
 block discarded – undo
2256 2256
 		//
2257 2257
 		// Correction Create Database
2258 2258
 		// Create Database -> requete ignoree
2259
-		if (strpos($this->query, 'CREATE DATABASE')===0){
2259
+		if (strpos($this->query, 'CREATE DATABASE') === 0) {
2260 2260
 			spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.'._LOG_AVERTISSEMENT);
2261 2261
 			$this->query = "SELECT 1";
2262 2262
 		}
2263 2263
 
2264 2264
 		// Correction Insert Ignore
2265 2265
 		// INSERT IGNORE -> insert (tout court et pas 'insert or replace')
2266
-		if (strpos($this->query, 'INSERT IGNORE')===0){
2266
+		if (strpos($this->query, 'INSERT IGNORE') === 0) {
2267 2267
 			spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.'._LOG_DEBUG);
2268 2268
 			$this->query = 'INSERT '.substr($this->query, '13');
2269 2269
 		}
2270 2270
 
2271 2271
 		// Correction des dates avec INTERVAL
2272 2272
 		// utiliser sql_date_proche() de preference
2273
-		if (strpos($this->query, 'INTERVAL')!==false){
2273
+		if (strpos($this->query, 'INTERVAL') !== false) {
2274 2274
 			$this->query = preg_replace_callback("/DATE_(ADD|SUB)(.*)INTERVAL\s+(\d+)\s+([a-zA-Z]+)\)/U",
2275 2275
 			                                     array(&$this, '_remplacerDateParTime'),
2276 2276
 			                                     $this->query);
2277 2277
 		}
2278 2278
 
2279
-		if (strpos($this->query, 'LEFT(')!==false){
2280
-			$this->query = str_replace('LEFT(','_LEFT(',$this->query);
2279
+		if (strpos($this->query, 'LEFT(') !== false) {
2280
+			$this->query = str_replace('LEFT(', '_LEFT(', $this->query);
2281 2281
 		}
2282 2282
 
2283
-		if (strpos($this->query, 'TIMESTAMPDIFF(')!==false){
2284
-			$this->query = preg_replace('/TIMESTAMPDIFF\(\s*([^,]*)\s*,/Uims',"TIMESTAMPDIFF('\\1',",$this->query);
2283
+		if (strpos($this->query, 'TIMESTAMPDIFF(') !== false) {
2284
+			$this->query = preg_replace('/TIMESTAMPDIFF\(\s*([^,]*)\s*,/Uims', "TIMESTAMPDIFF('\\1',", $this->query);
2285 2285
 		}
2286 2286
 
2287 2287
 
2288 2288
 		// Correction Using
2289 2289
 		// USING (non reconnu en sqlite2)
2290 2290
 		// problematique car la jointure ne se fait pas du coup.
2291
-		if (($this->sqlite_version==2) && (strpos($this->query, "USING")!==false)){
2291
+		if (($this->sqlite_version == 2) && (strpos($this->query, "USING") !== false)) {
2292 2292
 			spip_log("'USING (champ)' n'est pas reconnu en SQLite 2. Utilisez 'ON table1.champ = table2.champ'", 'sqlite.'._LOG_ERREUR);
2293 2293
 			$this->query = preg_replace('/USING\s*\([^\)]*\)/', '', $this->query);
2294 2294
 		}
2295 2295
 
2296 2296
 		// Correction Field
2297 2297
 		// remplace FIELD(table,i,j,k...) par CASE WHEN table=i THEN n ... ELSE 0 END
2298
-		if (strpos($this->query, 'FIELD')!==false){
2298
+		if (strpos($this->query, 'FIELD') !== false) {
2299 2299
 			$this->query = preg_replace_callback('/FIELD\s*\(([^\)]*)\)/',
2300 2300
 			                                     array(&$this, '_remplacerFieldParCase'),
2301 2301
 			                                     $this->query);
@@ -2303,7 +2303,7 @@  discard block
 block discarded – undo
2303 2303
 
2304 2304
 		// Correction des noms de tables FROM
2305 2305
 		// mettre les bons noms de table dans from, update, insert, replace...
2306
-		if (preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/iS', $this->query, $regs)){
2306
+		if (preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/iS', $this->query, $regs)) {
2307 2307
 			$suite = strstr($this->query, $regs[0]);
2308 2308
 			$this->query = substr($this->query, 0, -strlen($suite));
2309 2309
 		}
@@ -2319,16 +2319,16 @@  discard block
 block discarded – undo
2319 2319
 		// on remplace du coup x par vide() dans ce cas uniquement
2320 2320
 		//
2321 2321
 		// rien que pour public/vertebrer.php ?
2322
-		if ((strpos($this->query, "0 AS")!==false)){
2322
+		if ((strpos($this->query, "0 AS") !== false)) {
2323 2323
 			// on ne remplace que dans ORDER BY ou GROUP BY
2324
-			if (preg_match('/\s(ORDER|GROUP) BY\s/i', $this->query, $regs)){
2324
+			if (preg_match('/\s(ORDER|GROUP) BY\s/i', $this->query, $regs)) {
2325 2325
 				$suite = strstr($this->query, $regs[0]);
2326 2326
 				$this->query = substr($this->query, 0, -strlen($suite));
2327 2327
 
2328 2328
 				// on cherche les noms des x dans 0 AS x
2329 2329
 				// on remplace dans $suite le nom par vide()
2330 2330
 				preg_match_all('/\b0 AS\s*([^\s,]+)/', $this->query, $matches, PREG_PATTERN_ORDER);
2331
-				foreach ($matches[1] as $m){
2331
+				foreach ($matches[1] as $m) {
2332 2332
 					$suite = str_replace($m, 'VIDE()', $suite);
2333 2333
 				}
2334 2334
 				$this->query .= $suite;
@@ -2350,7 +2350,7 @@  discard block
 block discarded – undo
2350 2350
 
2351 2351
 
2352 2352
 		// Correction critere REGEXP, non reconnu en sqlite2
2353
-		if (($this->sqlite_version==2) && (strpos($this->query, 'REGEXP')!==false)){
2353
+		if (($this->sqlite_version == 2) && (strpos($this->query, 'REGEXP') !== false)) {
2354 2354
 			$this->query = preg_replace('/([^\s\(]*)(\s*)REGEXP(\s*)([^\s\)]*)/', 'REGEXP($4, $1)', $this->query);
2355 2355
 		}
2356 2356
 
@@ -2359,8 +2359,8 @@  discard block
 block discarded – undo
2359 2359
 		//
2360 2360
 		// Correction Antiquotes et echappements
2361 2361
 		// ` => rien
2362
-		if (strpos($this->query,'`')!==false)
2363
-			$this->query = str_replace('`','', $this->query);
2362
+		if (strpos($this->query, '`') !== false)
2363
+			$this->query = str_replace('`', '', $this->query);
2364 2364
 
2365 2365
 		$this->query = query_reinjecte_textes($this->query, $textes);
2366 2366
 
@@ -2376,8 +2376,8 @@  discard block
 block discarded – undo
2376 2376
 	 * @param  $matches
2377 2377
 	 * @return string
2378 2378
 	 */
2379
-	function _remplacerDateParTime($matches){
2380
-		$op = strtoupper($matches[1]=='ADD') ? '+' : '-';
2379
+	function _remplacerDateParTime($matches) {
2380
+		$op = strtoupper($matches[1] == 'ADD') ? '+' : '-';
2381 2381
 		return "datetime$matches[2] '$op$matches[3] $matches[4]')";
2382 2382
 	}
2383 2383
 
@@ -2388,14 +2388,14 @@  discard block
 block discarded – undo
2388 2388
 	 * @param  $matches
2389 2389
 	 * @return string
2390 2390
 	 */
2391
-	function _remplacerFieldParCase($matches){
2391
+	function _remplacerFieldParCase($matches) {
2392 2392
 		$fields = substr($matches[0], 6, -1); // ne recuperer que l'interieur X de field(X)
2393 2393
 		$t = explode(',', $fields);
2394 2394
 		$index = array_shift($t);
2395 2395
 
2396 2396
 		$res = '';
2397 2397
 		$n = 0;
2398
-		foreach ($t as $v){
2398
+		foreach ($t as $v) {
2399 2399
 			$n++;
2400 2400
 			$res .= "\nWHEN $index=$v THEN $n";
2401 2401
 		}
Please login to merge, or discard this patch.
Braces   +335 added lines, -187 removed lines patch added patch discarded remove patch
@@ -17,7 +17,9 @@  discard block
 block discarded – undo
17 17
  * @package SPIP\SQL\SQLite
18 18
  */
19 19
  
20
-if (!defined('_ECRIRE_INC_VERSION')) return;
20
+if (!defined('_ECRIRE_INC_VERSION')) {
21
+    return;
22
+}
21 23
 
22 24
 // TODO: get/set_caracteres ?
23 25
 
@@ -51,8 +53,9 @@  discard block
 block discarded – undo
51 53
 
52 54
 	// determiner le dossier de la base : $addr ou _DIR_DB
53 55
 	$f = _DIR_DB;
54
-	if ($addr AND strpos($addr, '/')!==false)
55
-		$f = rtrim($addr, '/').'/';
56
+	if ($addr AND strpos($addr, '/')!==false) {
57
+			$f = rtrim($addr, '/').'/';
58
+	}
56 59
 
57 60
 	// un nom de base demande et impossible d'obtenir la base, on s'en va :
58 61
 	// il faut que la base existe ou que le repertoire parent soit writable
@@ -140,7 +143,9 @@  discard block
 block discarded – undo
140 143
 	#spip_log("spip_sqlite_query() > $query",'sqlite.'._LOG_DEBUG);
141 144
 	#_sqlite_init(); // fait la premiere fois dans spip_sqlite
142 145
 	$query = spip_sqlite::traduire_requete($query, $serveur);
143
-	if (!$requeter) return $query;
146
+	if (!$requeter) {
147
+	    return $query;
148
+	}
144 149
 	return spip_sqlite::executer_requete($query, $serveur);
145 150
 }
146 151
 
@@ -188,9 +193,14 @@  discard block
 block discarded – undo
188 193
 		$todo2[$i] = isset($todo2[$i]) ? $todo2[$i].",".$do : $do;
189 194
 		$o = (false!==strpos($do, "("));
190 195
 		$f = (false!==strpos($do, ")"));
191
-		if ($o AND !$f) $ouverte = true;
192
-		elseif ($f) $ouverte = false;
193
-		if (!$ouverte) $i++;
196
+		if ($o AND !$f) {
197
+		    $ouverte = true;
198
+		} elseif ($f) {
199
+		    $ouverte = false;
200
+		}
201
+		if (!$ouverte) {
202
+		    $i++;
203
+		}
194 204
 	}
195 205
 
196 206
 	// 3	
@@ -326,8 +336,7 @@  discard block
 block discarded – undo
326 336
 				if ($def){
327 337
 					$colonnes = substr($def, 1, -1);
328 338
 					$nom_index = $colonne_origine;
329
-				}
330
-				else {
339
+				} else {
331 340
 					// (colonne)
332 341
 					if ($colonne_origine[0]=="("){
333 342
 						$colonnes = substr($colonne_origine, 1, -1);
@@ -405,12 +414,16 @@  discard block
 block discarded – undo
405 414
  */
406 415
 function spip_sqlite_create($nom, $champs, $cles, $autoinc = false, $temporary = false, $serveur = '', $requeter = true){
407 416
 	$query = _sqlite_requete_create($nom, $champs, $cles, $autoinc, $temporary, $ifnotexists = true, $serveur, $requeter);
408
-	if (!$query) return false;
417
+	if (!$query) {
418
+	    return false;
419
+	}
409 420
 	$res = spip_sqlite_query($query, $serveur, $requeter);
410 421
 
411 422
 	// SQLite ne cree pas les KEY sur les requetes CREATE TABLE
412 423
 	// il faut donc les faire creer ensuite
413
-	if (!$requeter) return $res;
424
+	if (!$requeter) {
425
+	    return $res;
426
+	}
414 427
 
415 428
 	$ok = $res ? true : false;
416 429
 	if ($ok){
@@ -436,8 +449,9 @@  discard block
 block discarded – undo
436 449
  **/
437 450
 function spip_sqlite_create_base($nom, $serveur = '', $option = true){
438 451
 	$f = $nom.'.sqlite';
439
-	if (strpos($nom, "/")===false)
440
-		$f = _DIR_DB.$f;
452
+	if (strpos($nom, "/")===false) {
453
+			$f = _DIR_DB.$f;
454
+	}
441 455
 	if (_sqlite_is_version(2, '', $serveur)){
442 456
 		$ok = sqlite_open($f, _SQLITE_CHMOD, $err);
443 457
 	} else {
@@ -472,7 +486,9 @@  discard block
 block discarded – undo
472 486
  * 		- string texte de la requete si $requeter vaut false
473 487
  */
474 488
 function spip_sqlite_create_view($nom, $query_select, $serveur = '', $requeter = true){
475
-	if (!$query_select) return false;
489
+	if (!$query_select) {
490
+	    return false;
491
+	}
476 492
 	// vue deja presente
477 493
 	if (sql_showtable($nom, false, $serveur)){
478 494
 		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", 'sqlite.'._LOG_ERREUR);
@@ -505,7 +521,9 @@  discard block
 block discarded – undo
505 521
 	$nom = $table.'_'.$nom;
506 522
 	// enlever d'eventuelles parentheses deja presentes sur champs
507 523
 	if (!is_array($champs)){
508
-		if ($champs[0]=="(") $champs = substr($champs, 1, -1);
524
+		if ($champs[0]=="(") {
525
+		    $champs = substr($champs, 1, -1);
526
+		}
509 527
 		$champs = array($champs);
510 528
 		// supprimer l'info de longueur d'index mysql en fin de champ
511 529
 		$champs = preg_replace(",\(\d+\)$,","",$champs);
@@ -513,24 +531,31 @@  discard block
 block discarded – undo
513 531
 
514 532
 	$ifnotexists = "";
515 533
 	$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur);
516
-	if (!function_exists('spip_version_compare')) include_spip('plugins/installer');
534
+	if (!function_exists('spip_version_compare')) {
535
+	    include_spip('plugins/installer');
536
+	}
517 537
 
518 538
 	if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) {
519 539
 		$ifnotexists = ' IF NOT EXISTS';
520 540
 	} else {
521 541
 		/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
522 542
 		$a = spip_sqlite_showtable($table, $serveur);
523
-		if (isset($a['key']['KEY '.$nom])) return true;
543
+		if (isset($a['key']['KEY '.$nom])) {
544
+		    return true;
545
+		}
524 546
 	}
525 547
 
526 548
 	$query = "CREATE ".($unique?"UNIQUE ":"")."INDEX$ifnotexists $nom ON $table (".join(',', $champs).")";
527 549
 	$res = spip_sqlite_query($query, $serveur, $requeter);
528
-	if (!$requeter) return $res;
529
-	if ($res)
530
-		return true;
531
-	else
532
-		return false;
533
-}
550
+	if (!$requeter) {
551
+	    return $res;
552
+	}
553
+	if ($res) {
554
+			return true;
555
+	} else {
556
+			return false;
557
+	}
558
+	}
534 559
 
535 560
 /**
536 561
  * en PDO/sqlite3, il faut calculer le count par une requete count(*)
@@ -544,7 +569,9 @@  discard block
 block discarded – undo
544 569
  * @return int
545 570
  */
546 571
 function spip_sqlite_count($r, $serveur = '', $requeter = true){
547
-	if (!$r) return 0;
572
+	if (!$r) {
573
+	    return 0;
574
+	}
548 575
 
549 576
 	if (_sqlite_is_version(3, '', $serveur)){
550 577
 		// select ou autre (insert, update,...) ?
@@ -557,8 +584,9 @@  discard block
 block discarded – undo
557 584
 			$query = "SELECT count(*) as zzzzsqlitecount FROM ($query)";
558 585
 			$l = $link->query($query);
559 586
 			$i = 0;
560
-			if ($l AND $z = $l->fetch())
561
-				$i = $z['zzzzsqlitecount'];
587
+			if ($l AND $z = $l->fetch()) {
588
+							$i = $z['zzzzsqlitecount'];
589
+			}
562 590
 			$r->spipSqliteRowCount = $i;
563 591
 		}
564 592
 		if (isset($r->spipSqliteRowCount)){
@@ -599,7 +627,9 @@  discard block
 block discarded – undo
599 627
 		$serveur, $requeter);
600 628
 
601 629
 	// renvoyer la requete inerte si demandee
602
-	if (!$requeter) return $res;
630
+	if (!$requeter) {
631
+	    return $res;
632
+	}
603 633
 
604 634
 	if ($res){
605 635
 		$link = _sqlite_link($serveur);
@@ -608,27 +638,32 @@  discard block
 block discarded – undo
608 638
 		} else {
609 639
 			return sqlite_changes($link);
610 640
 		}
641
+	} else {
642
+			return false;
643
+	}
611 644
 	}
612
-	else
613
-		return false;
614
-}
615 645
 
616 646
 
617 647
 // http://doc.spip.org/@spip_sqlite_drop_table
618 648
 function spip_sqlite_drop_table($table, $exist = '', $serveur = '', $requeter = true){
619
-	if ($exist) $exist = " IF EXISTS";
649
+	if ($exist) {
650
+	    $exist = " IF EXISTS";
651
+	}
620 652
 
621 653
 	/* simuler le IF EXISTS - version 2 */
622 654
 	if ($exist && _sqlite_is_version(2, '', $serveur)){
623 655
 		$a = spip_sqlite_showtable($table, $serveur);
624
-		if (!$a) return true;
656
+		if (!$a) {
657
+		    return true;
658
+		}
625 659
 		$exist = '';
626 660
 	}
627
-	if (spip_sqlite_query("DROP TABLE$exist $table", $serveur, $requeter))
628
-		return true;
629
-	else
630
-		return false;
631
-}
661
+	if (spip_sqlite_query("DROP TABLE$exist $table", $serveur, $requeter)) {
662
+			return true;
663
+	} else {
664
+			return false;
665
+	}
666
+	}
632 667
 
633 668
 /**
634 669
  * supprime une vue
@@ -641,12 +676,16 @@  discard block
 block discarded – undo
641 676
  * @return bool|SQLiteResult|string
642 677
  */
643 678
 function spip_sqlite_drop_view($view, $exist = '', $serveur = '', $requeter = true){
644
-	if ($exist) $exist = " IF EXISTS";
679
+	if ($exist) {
680
+	    $exist = " IF EXISTS";
681
+	}
645 682
 
646 683
 	/* simuler le IF EXISTS - version 2 */
647 684
 	if ($exist && _sqlite_is_version(2, '', $serveur)){
648 685
 		$a = spip_sqlite_showtable($view, $serveur);
649
-		if (!$a) return true;
686
+		if (!$a) {
687
+		    return true;
688
+		}
650 689
 		$exist = '';
651 690
 	}
652 691
 
@@ -677,7 +716,9 @@  discard block
 block discarded – undo
677 716
 	/* simuler le IF EXISTS - version 2 */
678 717
 	if (_sqlite_is_version(2, '', $serveur)){
679 718
 		$a = spip_sqlite_showtable($table, $serveur);
680
-		if (!isset($a['key']['KEY '.$nom])) return true;
719
+		if (!isset($a['key']['KEY '.$nom])) {
720
+		    return true;
721
+		}
681 722
 		$exist = '';
682 723
 	}
683 724
 
@@ -717,7 +758,9 @@  discard block
 block discarded – undo
717 758
 	} else {
718 759
 		$s = ": aucune ressource sqlite (link)";
719 760
 	}
720
-	if ($s) spip_log("$s - $query", 'sqlite.'._LOG_ERREUR);
761
+	if ($s) {
762
+	    spip_log("$s - $query", 'sqlite.'._LOG_ERREUR);
763
+	}
721 764
 	return $s;
722 765
 }
723 766
 
@@ -740,14 +783,19 @@  discard block
 block discarded – undo
740 783
 	if (_sqlite_is_version(3, $link)){
741 784
 		$t = $link->errorInfo();
742 785
 		$s = ltrim($t[0],'0'); // 00000 si pas d'erreur
743
-		if ($s) $s .= ' / ' . $t[1]; // ajoute l'erreur du moteur SQLite
786
+		if ($s) {
787
+		    $s .= ' / ' . $t[1];
788
+		}
789
+		// ajoute l'erreur du moteur SQLite
744 790
 	} elseif ($link) {
745 791
 		$s = sqlite_last_error($link);
746 792
 	} else {
747 793
 		$s = ": aucune ressource sqlite (link)";
748 794
 	}
749 795
 
750
-	if ($s) spip_log("Erreur sqlite $s", 'sqlite.'._LOG_ERREUR);
796
+	if ($s) {
797
+	    spip_log("Erreur sqlite $s", 'sqlite.'._LOG_ERREUR);
798
+	}
751 799
 
752 800
 	return $s ? $s : 0;
753 801
 }
@@ -755,11 +803,15 @@  discard block
 block discarded – undo
755 803
 
756 804
 // http://doc.spip.org/@spip_sqlite_explain
757 805
 function spip_sqlite_explain($query, $serveur = '', $requeter = true){
758
-	if (strpos(ltrim($query), 'SELECT')!==0) return array();
806
+	if (strpos(ltrim($query), 'SELECT')!==0) {
807
+	    return array();
808
+	}
759 809
 
760 810
 	$query = spip_sqlite::traduire_requete($query, $serveur);
761 811
 	$query = 'EXPLAIN '.$query;
762
-	if (!$requeter) return $query;
812
+	if (!$requeter) {
813
+	    return $query;
814
+	}
763 815
 	// on ne trace pas ces requetes, sinon on obtient un tracage sans fin...
764 816
 	$r = spip_sqlite::executer_requete($query, $serveur, false);
765 817
 
@@ -772,12 +824,14 @@  discard block
 block discarded – undo
772 824
 
773 825
 	$link = _sqlite_link($serveur);
774 826
 	$is_v3 = _sqlite_is_version(3, $link);
775
-	if (!$t)
776
-		$t = ($is_v3 ? SPIP_SQLITE3_ASSOC : SPIP_SQLITE2_ASSOC);
827
+	if (!$t) {
828
+			$t = ($is_v3 ? SPIP_SQLITE3_ASSOC : SPIP_SQLITE2_ASSOC);
829
+	}
777 830
 
778 831
 	$retour = false;
779
-	if ($r)
780
-		$retour = ($is_v3 ? $r->fetch($t) : sqlite_fetch_array($r, $t));
832
+	if ($r) {
833
+			$retour = ($is_v3 ? $r->fetch($t) : sqlite_fetch_array($r, $t));
834
+	}
781 835
 
782 836
 	// les version 2 et 3 parfois renvoie des 'table.titre' au lieu de 'titre' tout court ! pff !
783 837
 	// suppression de 'table.' pour toutes les cles (c'est un peu violent !)
@@ -804,8 +858,7 @@  discard block
 block discarded – undo
804 858
 			// je me demande si pour sqlite 3 il ne faudrait pas mieux utiliser
805 859
 			// les nouvelles fonctions sqlite3_xx (mais encore moins presentes...)
806 860
 			return false;
807
-		}
808
-		else {
861
+		} else {
809 862
 			return sqlite_seek($r, $row_number);
810 863
 		}
811 864
 	}
@@ -858,11 +911,13 @@  discard block
 block discarded – undo
858 911
 
859 912
 	$query = "INSERT INTO $table ".($champs ? "$champs VALUES $valeurs" : "DEFAULT VALUES");
860 913
 	if ($r = spip_sqlite_query($query, $serveur, $requeter)){
861
-		if (!$requeter) return $r;
914
+		if (!$requeter) {
915
+		    return $r;
916
+		}
862 917
 		$nb = spip_sqlite::last_insert_id($serveur);
918
+	} else {
919
+			$nb = 0;
863 920
 	}
864
-	else
865
-		$nb = 0;
866 921
 
867 922
 	$err = spip_sqlite_error($query, $serveur);
868 923
 	// cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
@@ -873,8 +928,12 @@  discard block
 block discarded – undo
873 928
 
874 929
 // http://doc.spip.org/@spip_sqlite_insertq
875 930
 function spip_sqlite_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true){
876
-	if (!$desc) $desc = description_table($table, $serveur);
877
-	if (!$desc) die("$table insertion sans description");
931
+	if (!$desc) {
932
+	    $desc = description_table($table, $serveur);
933
+	}
934
+	if (!$desc) {
935
+	    die("$table insertion sans description");
936
+	}
878 937
 	$fields = isset($desc['field']) ? $desc['field'] : array();
879 938
 
880 939
 	foreach ($couples as $champ => $val){
@@ -896,10 +955,15 @@  discard block
 block discarded – undo
896 955
 
897 956
 // http://doc.spip.org/@spip_sqlite_insertq_multi
898 957
 function spip_sqlite_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true){
899
-	if (!$desc) $desc = description_table($table, $serveur);
900
-	if (!$desc) die("$table insertion sans description");
901
-	if (!isset($desc['field']))
902
-		$desc['field'] = array();
958
+	if (!$desc) {
959
+	    $desc = description_table($table, $serveur);
960
+	}
961
+	if (!$desc) {
962
+	    die("$table insertion sans description");
963
+	}
964
+	if (!isset($desc['field'])) {
965
+			$desc['field'] = array();
966
+	}
903 967
 
904 968
 	// recuperer les champs 'timestamp' pour mise a jour auto de ceux-ci
905 969
 	$maj = _sqlite_ajouter_champs_timestamp($table, array(), $desc, $serveur);
@@ -910,8 +974,9 @@  discard block
 block discarded – undo
910 974
 	$query_start = spip_sqlite::traduire_requete($query_start,$serveur);
911 975
 
912 976
 	// ouvrir une transaction
913
-	if ($requeter)
914
-		spip_sqlite::demarrer_transaction($serveur);
977
+	if ($requeter) {
978
+			spip_sqlite::demarrer_transaction($serveur);
979
+	}
915 980
 
916 981
 	while ($couples = array_shift($tab_couples)){
917 982
 		foreach ($couples as $champ => $val){
@@ -926,27 +991,30 @@  discard block
 block discarded – undo
926 991
 			$champs = "(".join(',', array_keys($couples)).")";
927 992
 			$valeurs = "(".join(',', $couples).")";
928 993
 			$query = $query_start."$champs VALUES $valeurs";
994
+		} else {
995
+					$query = $query_start."DEFAULT VALUES";
929 996
 		}
930
-		else
931
-			$query = $query_start."DEFAULT VALUES";
932 997
 		
933
-		if ($requeter)
934
-			$retour = spip_sqlite::executer_requete($query,$serveur);
998
+		if ($requeter) {
999
+					$retour = spip_sqlite::executer_requete($query,$serveur);
1000
+		}
935 1001
 
936 1002
 		// sur le dernier couple uniquement
937 1003
 		if (!count($tab_couples)){
938 1004
 			$nb = 0;
939
-			if ($requeter)
940
-				$nb = spip_sqlite::last_insert_id($serveur);
941
-			else
942
-				return $query;
1005
+			if ($requeter) {
1006
+							$nb = spip_sqlite::last_insert_id($serveur);
1007
+			} else {
1008
+							return $query;
1009
+			}
943 1010
 		}
944 1011
 
945 1012
 		$err = spip_sqlite_error($query, $serveur);
946 1013
 	}
947 1014
 
948
-	if ($requeter)
949
-		spip_sqlite::finir_transaction($serveur);
1015
+	if ($requeter) {
1016
+			spip_sqlite::finir_transaction($serveur);
1017
+	}
950 1018
 
951 1019
 	// renvoie le dernier id d'autoincrement ajoute
952 1020
 	// cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
@@ -971,7 +1039,9 @@  discard block
 block discarded – undo
971 1039
  *
972 1040
 **/
973 1041
 function spip_sqlite_demarrer_transaction($serveur = '', $requeter = true) {
974
-	if (!$requeter) return "BEGIN TRANSACTION";
1042
+	if (!$requeter) {
1043
+	    return "BEGIN TRANSACTION";
1044
+	}
975 1045
 	spip_sqlite::demarrer_transaction($serveur);
976 1046
 	return true;
977 1047
 }
@@ -981,7 +1051,9 @@  discard block
 block discarded – undo
981 1051
  *
982 1052
 **/
983 1053
 function spip_sqlite_terminer_transaction($serveur = '', $requeter = true) {
984
-	if (!$requeter) return "COMMIT";
1054
+	if (!$requeter) {
1055
+	    return "COMMIT";
1056
+	}
985 1057
 	spip_sqlite::finir_transaction($serveur);
986 1058
 	return true;
987 1059
 }
@@ -1003,7 +1075,9 @@  discard block
 block discarded – undo
1003 1075
 		// pas de bases commencant pas sqlite 
1004 1076
 		// (on s'en sert pour l'installation pour simuler la presence d'un serveur)
1005 1077
 		// les bases sont de la forme _sqliteX_tmp_spip_install.sqlite
1006
-		if (strpos($b, '_sqlite')) continue;
1078
+		if (strpos($b, '_sqlite')) {
1079
+		    continue;
1080
+		}
1007 1081
 		$bds[] = preg_replace(";.*/$pattern;iS", '$1', $b);
1008 1082
 	}
1009 1083
 
@@ -1051,11 +1125,13 @@  discard block
 block discarded – undo
1051 1125
  * @return string|number
1052 1126
  */
1053 1127
 function spip_sqlite_quote($v, $type = ''){
1054
-		if (!is_array($v))
1055
-			return _sqlite_calculer_cite($v,$type);
1128
+		if (!is_array($v)) {
1129
+					return _sqlite_calculer_cite($v,$type);
1130
+		}
1056 1131
 		// si c'est un tableau, le parcourir en propageant le type
1057
-		foreach($v as $k=>$r)
1058
-			$v[$k] = spip_sqlite_quote($r, $type);
1132
+		foreach($v as $k=>$r) {
1133
+					$v[$k] = spip_sqlite_quote($r, $type);
1134
+		}
1059 1135
 		return join(",", $v);
1060 1136
 }
1061 1137
 
@@ -1076,8 +1152,12 @@  discard block
 block discarded – undo
1076 1152
 
1077 1153
 // http://doc.spip.org/@spip_sqlite_replace
1078 1154
 function spip_sqlite_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true){
1079
-	if (!$desc) $desc = description_table($table, $serveur);
1080
-	if (!$desc) die("$table insertion sans description");
1155
+	if (!$desc) {
1156
+	    $desc = description_table($table, $serveur);
1157
+	}
1158
+	if (!$desc) {
1159
+	    die("$table insertion sans description");
1160
+	}
1081 1161
 	$fields = isset($desc['field']) ? $desc['field'] : array();
1082 1162
 
1083 1163
 	foreach ($couples as $champ => $val){
@@ -1124,7 +1204,9 @@  discard block
 block discarded – undo
1124 1204
 	// dans un select, on doit renvoyer la requête en cas d'erreur
1125 1205
 	$res = spip_sqlite_query($query, $serveur, $requeter);
1126 1206
 	// texte de la requete demande ?
1127
-	if (!$requeter) return $res;
1207
+	if (!$requeter) {
1208
+	    return $res;
1209
+	}
1128 1210
 	// erreur survenue ?
1129 1211
 	if ($res === false) {
1130 1212
 		return spip_sqlite::traduire_requete($query, $serveur);
@@ -1163,8 +1245,9 @@  discard block
 block discarded – undo
1163 1245
 	$index = $serveur ? $serveur : 0;
1164 1246
 
1165 1247
 	if ($link = spip_connect_db('', '', '', '', '@selectdb@'.$db, $serveur, '', '')){
1166
-		if (($db==$link['db']) && $GLOBALS['connexions'][$index] = $link)
1167
-			return $db;
1248
+		if (($db==$link['db']) && $GLOBALS['connexions'][$index] = $link) {
1249
+					return $db;
1250
+		}
1168 1251
 	} else {
1169 1252
 		spip_log("Impossible de selectionner la base $db", 'sqlite.'._LOG_HS);
1170 1253
 		return false;
@@ -1221,9 +1304,15 @@  discard block
 block discarded – undo
1221 1304
 		.' ORDER BY substr(type,2,1), name';
1222 1305
 
1223 1306
 	$a = spip_sqlite_query($query, $serveur, $requeter);
1224
-	if (!$a) return "";
1225
-	if (!$requeter) return $a;
1226
-	if (!($a = spip_sqlite_fetch($a, null, $serveur))) return "";
1307
+	if (!$a) {
1308
+	    return "";
1309
+	}
1310
+	if (!$requeter) {
1311
+	    return $a;
1312
+	}
1313
+	if (!($a = spip_sqlite_fetch($a, null, $serveur))) {
1314
+	    return "";
1315
+	}
1227 1316
 	$vue = ($a['type']=='view'); // table | vue
1228 1317
 
1229 1318
 	// c'est une table
@@ -1238,9 +1327,9 @@  discard block
 block discarded – undo
1238 1327
 			if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)){
1239 1328
 				$namedkeys = $r[2];
1240 1329
 				$desc = $r[1];
1330
+			} else {
1331
+							$namedkeys = "";
1241 1332
 			}
1242
-			else
1243
-				$namedkeys = "";
1244 1333
 
1245 1334
 			$fields = array();
1246 1335
 			$keys   = array();
@@ -1262,7 +1351,9 @@  discard block
 block discarded – undo
1262 1351
 				$k = strtolower(query_reinjecte_textes($r[1], $echaps)); // champ, "champ", [champ]...
1263 1352
 				if ($char = strpbrk($k[0], '\'"[`')) {
1264 1353
 					$k = trim($k, $char);
1265
-					if ($char == '[') $k = rtrim($k, ']');
1354
+					if ($char == '[') {
1355
+					    $k = rtrim($k, ']');
1356
+					}
1266 1357
 				}
1267 1358
 				$def = query_reinjecte_textes($r[2], $echaps); // valeur du champ
1268 1359
 
@@ -1286,7 +1377,11 @@  discard block
 block discarded – undo
1286 1377
 				if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
1287 1378
 					$k = str_replace("`", '', trim($r[1]));
1288 1379
 					$t = trim(strtolower(str_replace("`", '', $r[2])), '"');
1289
-					if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
1380
+					if ($k && !isset($keys[$k])) {
1381
+					    $keys[$k] = $t;
1382
+					} else {
1383
+					    $keys[] = $t;
1384
+					}
1290 1385
 				}
1291 1386
 			}
1292 1387
 			// sinon ajouter les key index
@@ -1309,7 +1404,9 @@  discard block
 block discarded – undo
1309 1404
 	else {
1310 1405
 		if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)){ // limit 1
1311 1406
 			$fields = array();
1312
-			foreach ($res as $c => $v) $fields[$c] = '';
1407
+			foreach ($res as $c => $v) {
1408
+			    $fields[$c] = '';
1409
+			}
1313 1410
 			$keys = array();
1314 1411
 		} else {
1315 1412
 			return "";
@@ -1326,23 +1423,31 @@  discard block
 block discarded – undo
1326 1423
 	$champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1327 1424
 
1328 1425
 	$set = array();
1329
-	foreach ($champs as $champ => $val)
1330
-		$set[] = $champ."=$val";
1331
-	if (!empty($set))
1332
-		return spip_sqlite_query(
1426
+	foreach ($champs as $champ => $val) {
1427
+			$set[] = $champ."=$val";
1428
+	}
1429
+	if (!empty($set)) {
1430
+			return spip_sqlite_query(
1333 1431
 			_sqlite_calculer_expression('UPDATE', $table, ',')
1334 1432
 			._sqlite_calculer_expression('SET', $set, ',')
1335 1433
 			._sqlite_calculer_expression('WHERE', $where),
1336 1434
 			$serveur, $requeter);
1337
-}
1435
+	}
1436
+	}
1338 1437
 
1339 1438
 
1340 1439
 // http://doc.spip.org/@spip_sqlite_updateq
1341 1440
 function spip_sqlite_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true){
1342 1441
 
1343
-	if (!$champs) return;
1344
-	if (!$desc) $desc = description_table($table, $serveur);
1345
-	if (!$desc) die("$table insertion sans description");
1442
+	if (!$champs) {
1443
+	    return;
1444
+	}
1445
+	if (!$desc) {
1446
+	    $desc = description_table($table, $serveur);
1447
+	}
1448
+	if (!$desc) {
1449
+	    die("$table insertion sans description");
1450
+	}
1346 1451
 	$fields = $desc['field'];
1347 1452
 
1348 1453
 	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
@@ -1375,8 +1480,12 @@  discard block
 block discarded – undo
1375 1480
  * @return void
1376 1481
  */
1377 1482
 function _sqlite_init(){
1378
-	if (!defined('_DIR_DB')) define('_DIR_DB', _DIR_ETC.'bases/');
1379
-	if (!defined('_SQLITE_CHMOD')) define('_SQLITE_CHMOD', _SPIP_CHMOD);
1483
+	if (!defined('_DIR_DB')) {
1484
+	    define('_DIR_DB', _DIR_ETC.'bases/');
1485
+	}
1486
+	if (!defined('_SQLITE_CHMOD')) {
1487
+	    define('_SQLITE_CHMOD', _SPIP_CHMOD);
1488
+	}
1380 1489
 
1381 1490
 	if (!is_dir($d = _DIR_DB)){
1382 1491
 		include_spip('inc/flock');
@@ -1396,15 +1505,21 @@  discard block
 block discarded – undo
1396 1505
  * @return bool|int
1397 1506
  */
1398 1507
 function _sqlite_is_version($version = '', $link = '', $serveur = '', $requeter = true){
1399
-	if ($link==='') $link = _sqlite_link($serveur);
1400
-	if (!$link) return false;
1508
+	if ($link==='') {
1509
+	    $link = _sqlite_link($serveur);
1510
+	}
1511
+	if (!$link) {
1512
+	    return false;
1513
+	}
1401 1514
 	if ($link instanceof PDO){
1402 1515
 		$v = 3;
1403 1516
 	} else {
1404 1517
 		$v = 2;
1405 1518
 	}
1406 1519
 
1407
-	if (!$version) return $v;
1520
+	if (!$version) {
1521
+	    return $v;
1522
+	}
1408 1523
 	return ($version==$v);
1409 1524
 }
1410 1525
 
@@ -1436,23 +1551,28 @@  discard block
 block discarded – undo
1436 1551
 function _sqlite_calculer_cite($v, $type){
1437 1552
 	if ($type){
1438 1553
 		if(is_null($v)
1439
-			AND stripos($type,"NOT NULL")===false) return 'NULL'; // null php se traduit en NULL SQL
1554
+			AND stripos($type,"NOT NULL")===false) {
1555
+		    return 'NULL';
1556
+		}
1557
+		// null php se traduit en NULL SQL
1440 1558
 
1441
-		if (sql_test_date($type) AND preg_match('/^\w+\(/', $v))
1442
-			return $v;
1559
+		if (sql_test_date($type) AND preg_match('/^\w+\(/', $v)) {
1560
+					return $v;
1561
+		}
1443 1562
 		if (sql_test_int($type)){
1444
-			if (is_numeric($v))
1445
-				return $v;
1446
-			elseif (ctype_xdigit(substr($v, 2)) AND strncmp($v, '0x', 2)==0)
1447
-				return hexdec(substr($v, 2));
1448
-			else
1449
-				return intval($v);
1563
+			if (is_numeric($v)) {
1564
+							return $v;
1565
+			} elseif (ctype_xdigit(substr($v, 2)) AND strncmp($v, '0x', 2)==0) {
1566
+							return hexdec(substr($v, 2));
1567
+			} else {
1568
+							return intval($v);
1569
+			}
1450 1570
 		}
1451
-	}
1452
-	else {
1571
+	} else {
1453 1572
 		// si on ne connait pas le type on le deduit de $v autant que possible
1454
-		if (is_numeric($v))
1455
-			return strval($v);
1573
+		if (is_numeric($v)) {
1574
+					return strval($v);
1575
+		}
1456 1576
 	}
1457 1577
 
1458 1578
 	if (function_exists('sqlite_escape_string')){
@@ -1482,18 +1602,20 @@  discard block
 block discarded – undo
1482 1602
  * @return string
1483 1603
  */
1484 1604
 function _sqlite_calculer_expression($expression, $v, $join = 'AND'){
1485
-	if (empty($v))
1486
-		return '';
1605
+	if (empty($v)) {
1606
+			return '';
1607
+	}
1487 1608
 
1488 1609
 	$exp = "\n$expression ";
1489 1610
 
1490 1611
 	if (!is_array($v)){
1491 1612
 		return $exp.$v;
1492 1613
 	} else {
1493
-		if (strtoupper($join)==='AND')
1494
-			return $exp.join("\n\t$join ", array_map('_sqlite_calculer_where', $v));
1495
-		else
1496
-			return $exp.join($join, $v);
1614
+		if (strtoupper($join)==='AND') {
1615
+					return $exp.join("\n\t$join ", array_map('_sqlite_calculer_where', $v));
1616
+		} else {
1617
+					return $exp.join($join, $v);
1618
+		}
1497 1619
 	}
1498 1620
 }
1499 1621
 
@@ -1519,13 +1641,14 @@  discard block
 block discarded – undo
1519 1641
 			// c'est une jointure qui se refere au from precedent
1520 1642
 			// pas de virgule
1521 1643
 			$res .= '  '.$v;
1522
-		}
1523
-		else {
1644
+		} else {
1524 1645
 			if (!is_numeric($k)){
1525 1646
 				$p = strpos($v, " ");
1526
-				if ($p)
1527
-					$v = substr($v, 0, $p)." AS '$k'".substr($v, $p);
1528
-				else $v .= " AS '$k'";
1647
+				if ($p) {
1648
+									$v = substr($v, 0, $p)." AS '$k'".substr($v, $p);
1649
+				} else {
1650
+				    $v .= " AS '$k'";
1651
+				}
1529 1652
 			}
1530 1653
 			$res .= ', '.$v;
1531 1654
 		}
@@ -1542,13 +1665,14 @@  discard block
 block discarded – undo
1542 1665
  * @return array|mixed|string
1543 1666
  */
1544 1667
 function _sqlite_calculer_where($v){
1545
-	if (!is_array($v))
1546
-		return $v;
1668
+	if (!is_array($v)) {
1669
+			return $v;
1670
+	}
1547 1671
 
1548 1672
 	$op = array_shift($v);
1549
-	if (!($n = count($v)))
1550
-		return $op;
1551
-	else {
1673
+	if (!($n = count($v))) {
1674
+			return $op;
1675
+	} else {
1552 1676
 		$arg = _sqlite_calculer_where(array_shift($v));
1553 1677
 		if ($n==1){
1554 1678
 			return "$op($arg)";
@@ -1556,7 +1680,9 @@  discard block
 block discarded – undo
1556 1680
 			$arg2 = _sqlite_calculer_where(array_shift($v));
1557 1681
 			if ($n==2){
1558 1682
 				return "($arg $op $arg2)";
1559
-			} else return "($arg $op ($arg2) : $v[0])";
1683
+			} else {
1684
+			    return "($arg $op ($arg2) : $v[0])";
1685
+			}
1560 1686
 		}
1561 1687
 	}
1562 1688
 }
@@ -1588,7 +1714,9 @@  discard block
 block discarded – undo
1588 1714
 			$versions[] = 3;
1589 1715
 		}
1590 1716
 	}
1591
-	if ($version) return in_array($version, $versions);
1717
+	if ($version) {
1718
+	    return in_array($version, $versions);
1719
+	}
1592 1720
 	return $versions;
1593 1721
 }
1594 1722
 
@@ -1632,8 +1760,12 @@  discard block
 block discarded – undo
1632 1760
 	} else {
1633 1761
 		$colonne_origine = $colonne_destination = $colonne;
1634 1762
 	}
1635
-	if (!isset($opt['field'])) $opt['field'] = array();
1636
-	if (!isset($opt['key'])) $opt['key'] = array();
1763
+	if (!isset($opt['field'])) {
1764
+	    $opt['field'] = array();
1765
+	}
1766
+	if (!isset($opt['key'])) {
1767
+	    $opt['key'] = array();
1768
+	}
1637 1769
 
1638 1770
 	// si les noms de tables sont differents, pas besoin de table temporaire
1639 1771
 	// on prendra directement le nom de la future table
@@ -1682,8 +1814,9 @@  discard block
 block discarded – undo
1682 1814
 		$c = str_replace($colonne_origine, $colonne_destination, $c);
1683 1815
 		$d = str_replace($colonne_origine, $colonne_destination, $d);
1684 1816
 		// seulement si on ne supprime pas la colonne !
1685
-		if ($d)
1686
-			$keys[$c] = $d;
1817
+		if ($d) {
1818
+					$keys[$c] = $d;
1819
+		}
1687 1820
 	}
1688 1821
 
1689 1822
 	// autres keys, on merge
@@ -1739,8 +1872,7 @@  discard block
 block discarded – undo
1739 1872
 	// 5) remettre les index !
1740 1873
 	foreach ($keys as $k => $v){
1741 1874
 		if ($k=='PRIMARY KEY'){
1742
-		}
1743
-		else {
1875
+		} else {
1744 1876
 			// enlever KEY
1745 1877
 			$k = substr($k, 4);
1746 1878
 			$queries[] = "CREATE INDEX $table_destination"."_$k ON $table_destination ($v)";
@@ -1867,20 +1999,19 @@  discard block
 block discarded – undo
1867 1999
 
1868 2000
 	if (is_string($query)){
1869 2001
 		$query = preg_replace(array_keys($remplace), $remplace, $query);
1870
-		if ($autoinc OR preg_match(',AUTO_INCREMENT,is',$query))
1871
-			$query = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query);
1872
-		else{
2002
+		if ($autoinc OR preg_match(',AUTO_INCREMENT,is',$query)) {
2003
+					$query = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query);
2004
+		} else{
1873 2005
 			$query = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query);
1874 2006
 			$query = _sqlite_collate_ci($query);
1875 2007
 		}
1876
-	}
1877
-	elseif(is_array($query)){
2008
+	} elseif(is_array($query)){
1878 2009
 		foreach($query as $k=>$q) {
1879 2010
 			$ai = ($autoinc?$k==$autoinc:preg_match(',AUTO_INCREMENT,is',$q));
1880 2011
 			$query[$k] = preg_replace(array_keys($remplace), $remplace, $query[$k]);
1881
-			if ($ai)
1882
-				$query[$k] = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query[$k]);
1883
-			else{
2012
+			if ($ai) {
2013
+							$query[$k] = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query[$k]);
2014
+			} else{
1884 2015
 				$query[$k] = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query[$k]);
1885 2016
 				$query[$k] = _sqlite_collate_ci($query[$k]);
1886 2017
 			}
@@ -1896,12 +2027,15 @@  discard block
 block discarded – undo
1896 2027
  * @return string
1897 2028
  */
1898 2029
 function _sqlite_collate_ci($champ){
1899
-	if (stripos($champ,"COLLATE")!==false)
1900
-		return $champ;
1901
-	if (stripos($champ,"BINARY")!==false)
1902
-		return str_ireplace("BINARY","COLLATE BINARY",$champ);
1903
-	if (preg_match(",^(char|varchar|(long|small|medium|tiny)?text),i",$champ))
1904
-		return $champ . " COLLATE NOCASE";
2030
+	if (stripos($champ,"COLLATE")!==false) {
2031
+			return $champ;
2032
+	}
2033
+	if (stripos($champ,"BINARY")!==false) {
2034
+			return str_ireplace("BINARY","COLLATE BINARY",$champ);
2035
+	}
2036
+	if (preg_match(",^(char|varchar|(long|small|medium|tiny)?text),i",$champ)) {
2037
+			return $champ . " COLLATE NOCASE";
2038
+	}
1905 2039
 
1906 2040
 	return $champ;
1907 2041
 }
@@ -1928,8 +2062,9 @@  discard block
 block discarded – undo
1928 2062
 
1929 2063
 	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
1930 2064
 	// sans les renseigner (laisse le compilo recuperer la description)
1931
-	if (!is_array($champs) || !is_array($cles))
1932
-		return;
2065
+	if (!is_array($champs) || !is_array($cles)) {
2066
+			return;
2067
+	}
1933 2068
 
1934 2069
 	// sqlite ne gere pas KEY tout court dans une requete CREATE TABLE
1935 2070
 	// il faut passer par des create index
@@ -1946,7 +2081,9 @@  discard block
 block discarded – undo
1946 2081
 			}
1947 2082
 		}
1948 2083
 	}
1949
-	if ($c) $keys = "\n\t\t$pk ($c)";
2084
+	if ($c) {
2085
+	    $keys = "\n\t\t$pk ($c)";
2086
+	}
1950 2087
 	// Pas de DEFAULT 0 sur les cles primaires en auto-increment
1951 2088
 	if (isset($champs[$c])
1952 2089
 		AND stripos($champs[$c],"default 0")!==false){
@@ -1963,14 +2100,18 @@  discard block
 block discarded – undo
1963 2100
 	if ($_ifnotexists){
1964 2101
 
1965 2102
 		$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur);
1966
-		if (!function_exists('spip_version_compare')) include_spip('plugins/installer');
2103
+		if (!function_exists('spip_version_compare')) {
2104
+		    include_spip('plugins/installer');
2105
+		}
1967 2106
 
1968 2107
 		if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) {
1969 2108
 			$ifnotexists = ' IF NOT EXISTS';
1970 2109
 		} else {
1971 2110
 			/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
1972 2111
 			$a = spip_sqlite_showtable($table, $serveur);
1973
-			if (isset($a['key']['KEY '.$nom])) return true;
2112
+			if (isset($a['key']['KEY '.$nom])) {
2113
+			    return true;
2114
+			}
1974 2115
 		}
1975 2116
 
1976 2117
 	}
@@ -2007,7 +2148,9 @@  discard block
 block discarded – undo
2007 2148
 			$trouver_table = charger_fonction('trouver_table', 'base');
2008 2149
 			$desc = $trouver_table($table, $serveur);
2009 2150
 			// si pas de description, on ne fait rien, ou on die() ?
2010
-			if (!$desc) return $couples;
2151
+			if (!$desc) {
2152
+			    return $couples;
2153
+			}
2011 2154
 		}
2012 2155
 
2013 2156
 		// recherche des champs avec simplement 'TIMESTAMP'
@@ -2017,8 +2160,9 @@  discard block
 block discarded – undo
2017 2160
 		$tables[$table] = array();
2018 2161
 
2019 2162
 		foreach ($desc['field'] as $k => $v){
2020
-			if (strpos(strtolower(ltrim($v)), 'timestamp')===0)
2021
-				$tables[$table][$k] = "datetime('now')";
2163
+			if (strpos(strtolower(ltrim($v)), 'timestamp')===0) {
2164
+							$tables[$table][$k] = "datetime('now')";
2165
+			}
2022 2166
 		}
2023 2167
 	}
2024 2168
 
@@ -2057,8 +2201,9 @@  discard block
 block discarded – undo
2057 2201
 	 * 		Instance unique du requêteur
2058 2202
 	**/
2059 2203
 	static function requeteur($serveur){
2060
-		if (!isset(spip_sqlite::$requeteurs[$serveur]))
2061
-			spip_sqlite::$requeteurs[$serveur] = new sqlite_requeteur($serveur);
2204
+		if (!isset(spip_sqlite::$requeteurs[$serveur])) {
2205
+					spip_sqlite::$requeteurs[$serveur] = new sqlite_requeteur($serveur);
2206
+		}
2062 2207
 		return spip_sqlite::$requeteurs[$serveur];
2063 2208
 	}
2064 2209
 
@@ -2091,8 +2236,9 @@  discard block
 block discarded – undo
2091 2236
 	static function finir_transaction($serveur){
2092 2237
 		// si pas de transaction en cours, ne rien faire et le dire
2093 2238
 		if (!isset (spip_sqlite::$transaction_en_cours[$serveur])
2094
-		  OR spip_sqlite::$transaction_en_cours[$serveur]==false)
2095
-			return false;
2239
+		  OR spip_sqlite::$transaction_en_cours[$serveur]==false) {
2240
+					return false;
2241
+		}
2096 2242
 		// sinon fermer la transaction et retourner true
2097 2243
 		spip_sqlite::executer_requete("COMMIT",$serveur);
2098 2244
 		spip_sqlite::$transaction_en_cours[$serveur] = false;
@@ -2151,8 +2297,9 @@  discard block
 block discarded – undo
2151 2297
 	 * @return bool|SQLiteResult
2152 2298
 	 */
2153 2299
 	function executer_requete($query, $tracer=null){
2154
-		if (is_null($tracer))
2155
-			$tracer = $this->tracer;
2300
+		if (is_null($tracer)) {
2301
+					$tracer = $this->tracer;
2302
+		}
2156 2303
 		$err = "";
2157 2304
 		$t = 0;
2158 2305
 		if ($tracer){
@@ -2180,13 +2327,11 @@  discard block
 block discarded – undo
2180 2327
 					if ($r){
2181 2328
 						// noter le link et la query pour faire le comptage *si* on en a besoin
2182 2329
 						$r->spipSqliteRowCount = array($this->link,$query);
2183
-					}
2184
-					elseif ($r instanceof PDOStatement) {
2330
+					} elseif ($r instanceof PDOStatement) {
2185 2331
 						$r->spipSqliteRowCount = 0;
2186 2332
 					}
2187 2333
 				}
2188
-			}
2189
-			else {
2334
+			} else {
2190 2335
 				$r = sqlite_query($this->link, $query);
2191 2336
 			}
2192 2337
 
@@ -2194,24 +2339,26 @@  discard block
 block discarded – undo
2194 2339
 			if ($err = (function_exists('error_get_last')?error_get_last():"") AND $err!=$e){
2195 2340
 				$err = strip_tags($err['message'])." in ".$err['file']." line ".$err['line'];
2196 2341
 				spip_log("$err - ".$query, 'sqlite.'._LOG_ERREUR);
2342
+			} else {
2343
+			    $err = "";
2197 2344
 			}
2198
-			else $err = "";
2199 2345
 
2200
-		}
2201
-		else {
2346
+		} else {
2202 2347
 			$r = false;
2203 2348
 		}
2204 2349
 
2205
-		if (spip_sqlite_errno($this->serveur))
2206
-			$err .= spip_sqlite_error($query, $this->serveur);
2350
+		if (spip_sqlite_errno($this->serveur)) {
2351
+					$err .= spip_sqlite_error($query, $this->serveur);
2352
+		}
2207 2353
 		return $t ? trace_query_end($query, $t, $r, $err, $this->serveur) : $r;
2208 2354
 	}
2209 2355
 
2210 2356
 	function last_insert_id(){
2211
-		if ($this->sqlite_version==3)
2212
-			return $this->link->lastInsertId();
2213
-		else
2214
-			return sqlite_last_insert_rowid($this->link);
2357
+		if ($this->sqlite_version==3) {
2358
+					return $this->link->lastInsertId();
2359
+		} else {
2360
+					return sqlite_last_insert_rowid($this->link);
2361
+		}
2215 2362
 	}
2216 2363
 }
2217 2364
 
@@ -2306,9 +2453,9 @@  discard block
 block discarded – undo
2306 2453
 		if (preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/iS', $this->query, $regs)){
2307 2454
 			$suite = strstr($this->query, $regs[0]);
2308 2455
 			$this->query = substr($this->query, 0, -strlen($suite));
2456
+		} else {
2457
+					$suite = '';
2309 2458
 		}
2310
-		else
2311
-			$suite = '';
2312 2459
 		$pref = ($this->prefixe) ? $this->prefixe."_" : "";
2313 2460
 		$this->query = preg_replace('/([,\s])spip_/S', '\1'.$pref, $this->query).$suite;
2314 2461
 
@@ -2359,8 +2506,9 @@  discard block
 block discarded – undo
2359 2506
 		//
2360 2507
 		// Correction Antiquotes et echappements
2361 2508
 		// ` => rien
2362
-		if (strpos($this->query,'`')!==false)
2363
-			$this->query = str_replace('`','', $this->query);
2509
+		if (strpos($this->query,'`')!==false) {
2510
+					$this->query = str_replace('`','', $this->query);
2511
+		}
2364 2512
 
2365 2513
 		$this->query = query_reinjecte_textes($this->query, $textes);
2366 2514
 
Please login to merge, or discard this patch.
prive/formulaires/configurer_relayeur.php 4 patches
Doc Comments   +3 added lines patch added patch discarded remove patch
@@ -87,6 +87,9 @@
 block discarded – undo
87 87
 	return $res;
88 88
 }
89 89
 
90
+/**
91
+ * @param string $default
92
+ */
90 93
 function relayeur_saisie_ou_config($http_proxy, $default){
91 94
 	// http_proxy : ne pas prendre en compte la modif si le password est '****'
92 95
 	if (preg_match(',:\*\*\*\*@,', $http_proxy))
Please login to merge, or discard this patch.
Indentation   +94 added lines, -94 removed lines patch added patch discarded remove patch
@@ -15,124 +15,124 @@
 block discarded – undo
15 15
 include_spip('inc/config');
16 16
 
17 17
 function formulaires_configurer_relayeur_charger_dist(){
18
-	$valeurs = array(
19
-			'http_proxy' =>no_password_proxy_url(lire_config('http_proxy', '')),
20
-			'http_noproxy' => lire_config('http_noproxy', ''),
21
-			'test_proxy' => 'http://www.spip.net/',
22
-			);
18
+    $valeurs = array(
19
+            'http_proxy' =>no_password_proxy_url(lire_config('http_proxy', '')),
20
+            'http_noproxy' => lire_config('http_noproxy', ''),
21
+            'test_proxy' => 'http://www.spip.net/',
22
+            );
23 23
 
24
-	return $valeurs;
24
+    return $valeurs;
25 25
 }
26 26
 
27 27
 function formulaires_configurer_relayeur_verifier_dist(){
28
-	$erreurs = array();
29
-	$http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), lire_config('http_proxy', ''));
30
-	$http_noproxy = _request('http_noproxy');
31
-
32
-	if ($http_proxy AND !tester_url_absolue($http_proxy)){
33
-		$erreurs['http_proxy'] = _L('format_proxy_incorrect');
34
-	}
35
-
36
-	if (!isset($erreurs['http_proxy']) AND _request('tester_proxy')) {
37
-		if (!$http_proxy)
38
-			$erreurs['http_proxy'] = _T('info_obligatoire');
39
-		else {
40
-			include_spip('inc/distant');
41
-			$test_proxy = _request('test_proxy');
42
-			$t = parse_url($test_proxy);
43
-			if (!@$t['host']) {
44
-				$erreurs['test_proxy'] = _T('info_adresse_non_indiquee');
45
-			}
46
-			else {
47
-				include_spip('inc/texte'); // pour aide, couper, lang
48
-				$info = "";
49
-				if (!need_proxy($t['host'],$http_proxy,$http_noproxy))
50
-					$info = "<strong>"._T('page_pas_proxy')."</strong><br />";
51
-
52
-				// il faut fausser le proxy actuel pour faire le test !
53
-				$cur_http_proxy = $GLOBALS['meta']['http_proxy'];
54
-				$cur_http_noproxy = $GLOBALS['meta']['http_noproxy'];
55
-				$GLOBALS['meta']['http_proxy'] = $http_proxy;
56
-				$GLOBALS['meta']['http_noproxy'] = $http_noproxy;
57
-				$page = recuperer_page($test_proxy, true);
58
-				$GLOBALS['meta']['http_proxy'] = $cur_http_proxy;
59
-				$GLOBALS['meta']['http_noproxy'] = $cur_http_noproxy;
60
-				if ($page) {
61
-					$erreurs['message_ok'] = _T('info_proxy_ok')."<br />$info\n<tt>".couper(entites_html($page),300)."</tt>";
62
-				}
63
-				else {
64
-					$erreurs['message_erreur'] = $info._T('info_impossible_lire_page', array('test_proxy' => "<tt>$test_proxy</tt>"))
65
-					. " <b><tt>".no_password_proxy_url($http_proxy)."</tt></b>."
66
-					. aide('confhttpproxy');
67
-				}
68
-			}
69
-
70
-		}
71
-	}
72
-	return $erreurs;
28
+    $erreurs = array();
29
+    $http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), lire_config('http_proxy', ''));
30
+    $http_noproxy = _request('http_noproxy');
31
+
32
+    if ($http_proxy AND !tester_url_absolue($http_proxy)){
33
+        $erreurs['http_proxy'] = _L('format_proxy_incorrect');
34
+    }
35
+
36
+    if (!isset($erreurs['http_proxy']) AND _request('tester_proxy')) {
37
+        if (!$http_proxy)
38
+            $erreurs['http_proxy'] = _T('info_obligatoire');
39
+        else {
40
+            include_spip('inc/distant');
41
+            $test_proxy = _request('test_proxy');
42
+            $t = parse_url($test_proxy);
43
+            if (!@$t['host']) {
44
+                $erreurs['test_proxy'] = _T('info_adresse_non_indiquee');
45
+            }
46
+            else {
47
+                include_spip('inc/texte'); // pour aide, couper, lang
48
+                $info = "";
49
+                if (!need_proxy($t['host'],$http_proxy,$http_noproxy))
50
+                    $info = "<strong>"._T('page_pas_proxy')."</strong><br />";
51
+
52
+                // il faut fausser le proxy actuel pour faire le test !
53
+                $cur_http_proxy = $GLOBALS['meta']['http_proxy'];
54
+                $cur_http_noproxy = $GLOBALS['meta']['http_noproxy'];
55
+                $GLOBALS['meta']['http_proxy'] = $http_proxy;
56
+                $GLOBALS['meta']['http_noproxy'] = $http_noproxy;
57
+                $page = recuperer_page($test_proxy, true);
58
+                $GLOBALS['meta']['http_proxy'] = $cur_http_proxy;
59
+                $GLOBALS['meta']['http_noproxy'] = $cur_http_noproxy;
60
+                if ($page) {
61
+                    $erreurs['message_ok'] = _T('info_proxy_ok')."<br />$info\n<tt>".couper(entites_html($page),300)."</tt>";
62
+                }
63
+                else {
64
+                    $erreurs['message_erreur'] = $info._T('info_impossible_lire_page', array('test_proxy' => "<tt>$test_proxy</tt>"))
65
+                    . " <b><tt>".no_password_proxy_url($http_proxy)."</tt></b>."
66
+                    . aide('confhttpproxy');
67
+                }
68
+            }
69
+
70
+        }
71
+    }
72
+    return $erreurs;
73 73
 }
74 74
 
75 75
 function formulaires_configurer_relayeur_traiter_dist(){
76
-	$res = array('editable'=>true);
76
+    $res = array('editable'=>true);
77 77
 
78
-	$http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), lire_config('http_proxy', ''));
79
-	$http_noproxy = _request('http_noproxy');
80
-	if ($http_proxy !== NULL)
81
-		ecrire_meta('http_proxy', $http_proxy);
78
+    $http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), lire_config('http_proxy', ''));
79
+    $http_noproxy = _request('http_noproxy');
80
+    if ($http_proxy !== NULL)
81
+        ecrire_meta('http_proxy', $http_proxy);
82 82
 
83
-	if ($http_noproxy !== NULL)
84
-		ecrire_meta('http_noproxy', $http_noproxy);
83
+    if ($http_noproxy !== NULL)
84
+        ecrire_meta('http_noproxy', $http_noproxy);
85 85
 	
86
-	$res['message_ok'] = _T('config_info_enregistree');
87
-	return $res;
86
+    $res['message_ok'] = _T('config_info_enregistree');
87
+    return $res;
88 88
 }
89 89
 
90 90
 function relayeur_saisie_ou_config($http_proxy, $default){
91
-	// http_proxy : ne pas prendre en compte la modif si le password est '****'
92
-	if (preg_match(',:\*\*\*\*@,', $http_proxy))
93
-		$http_proxy = $default;
94
-	return $http_proxy;
91
+    // http_proxy : ne pas prendre en compte la modif si le password est '****'
92
+    if (preg_match(',:\*\*\*\*@,', $http_proxy))
93
+        $http_proxy = $default;
94
+    return $http_proxy;
95 95
 }
96 96
 
97 97
 // Function glue_url : le pendant de parse_url
98 98
 // http://doc.spip.org/@glue_url
99 99
 function glue_url ($url){
100
-	if (!is_array($url)){
101
-		return false;
102
-	}
103
-	// scheme
104
-	$uri = (!empty($url['scheme'])) ? $url['scheme'].'://' : '';
105
-	// user & pass
106
-	if (!empty($url['user'])){
107
-		$uri .= $url['user'].':'.$url['pass'].'@';
108
-	}
109
-	// host
110
-	$uri .= $url['host'];
111
-	// port
112
-	$port = (!empty($url['port'])) ? ':'.$url['port'] : '';
113
-	$uri .= $port;
114
-	// path
115
-	$uri .= $url['path'];
100
+    if (!is_array($url)){
101
+        return false;
102
+    }
103
+    // scheme
104
+    $uri = (!empty($url['scheme'])) ? $url['scheme'].'://' : '';
105
+    // user & pass
106
+    if (!empty($url['user'])){
107
+        $uri .= $url['user'].':'.$url['pass'].'@';
108
+    }
109
+    // host
110
+    $uri .= $url['host'];
111
+    // port
112
+    $port = (!empty($url['port'])) ? ':'.$url['port'] : '';
113
+    $uri .= $port;
114
+    // path
115
+    $uri .= $url['path'];
116 116
 // fragment or query
117
-	if (isset($url['fragment'])){
118
-		$uri .= '#'.$url['fragment'];
119
-	} elseif (isset($url['query'])){
120
-		$uri .= '?'.$url['query'];
121
-	}
122
-	return $uri;
117
+    if (isset($url['fragment'])){
118
+        $uri .= '#'.$url['fragment'];
119
+    } elseif (isset($url['query'])){
120
+        $uri .= '?'.$url['query'];
121
+    }
122
+    return $uri;
123 123
 }
124 124
 
125 125
 
126 126
 // Ne pas afficher la partie 'password' du proxy
127 127
 // http://doc.spip.org/@no_password_proxy_url
128 128
 function no_password_proxy_url($http_proxy) {
129
-	if ($http_proxy
130
-	AND $p = @parse_url($http_proxy)
131
-	AND isset($p['pass'])
132
-	AND $p['pass']) {
133
-		$p['pass'] = '****';
134
-		$http_proxy = glue_url($p);
135
-	}
136
-	return $http_proxy;
129
+    if ($http_proxy
130
+    AND $p = @parse_url($http_proxy)
131
+    AND isset($p['pass'])
132
+    AND $p['pass']) {
133
+        $p['pass'] = '****';
134
+        $http_proxy = glue_url($p);
135
+    }
136
+    return $http_proxy;
137 137
 }
138 138
 ?>
Please login to merge, or discard this patch.
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -14,7 +14,7 @@  discard block
 block discarded – undo
14 14
 include_spip('inc/presentation');
15 15
 include_spip('inc/config');
16 16
 
17
-function formulaires_configurer_relayeur_charger_dist(){
17
+function formulaires_configurer_relayeur_charger_dist() {
18 18
 	$valeurs = array(
19 19
 			'http_proxy' =>no_password_proxy_url(lire_config('http_proxy', '')),
20 20
 			'http_noproxy' => lire_config('http_noproxy', ''),
@@ -24,12 +24,12 @@  discard block
 block discarded – undo
24 24
 	return $valeurs;
25 25
 }
26 26
 
27
-function formulaires_configurer_relayeur_verifier_dist(){
27
+function formulaires_configurer_relayeur_verifier_dist() {
28 28
 	$erreurs = array();
29 29
 	$http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), lire_config('http_proxy', ''));
30 30
 	$http_noproxy = _request('http_noproxy');
31 31
 
32
-	if ($http_proxy AND !tester_url_absolue($http_proxy)){
32
+	if ($http_proxy AND !tester_url_absolue($http_proxy)) {
33 33
 		$erreurs['http_proxy'] = _L('format_proxy_incorrect');
34 34
 	}
35 35
 
@@ -46,7 +46,7 @@  discard block
 block discarded – undo
46 46
 			else {
47 47
 				include_spip('inc/texte'); // pour aide, couper, lang
48 48
 				$info = "";
49
-				if (!need_proxy($t['host'],$http_proxy,$http_noproxy))
49
+				if (!need_proxy($t['host'], $http_proxy, $http_noproxy))
50 50
 					$info = "<strong>"._T('page_pas_proxy')."</strong><br />";
51 51
 
52 52
 				// il faut fausser le proxy actuel pour faire le test !
@@ -58,7 +58,7 @@  discard block
 block discarded – undo
58 58
 				$GLOBALS['meta']['http_proxy'] = $cur_http_proxy;
59 59
 				$GLOBALS['meta']['http_noproxy'] = $cur_http_noproxy;
60 60
 				if ($page) {
61
-					$erreurs['message_ok'] = _T('info_proxy_ok')."<br />$info\n<tt>".couper(entites_html($page),300)."</tt>";
61
+					$erreurs['message_ok'] = _T('info_proxy_ok')."<br />$info\n<tt>".couper(entites_html($page), 300)."</tt>";
62 62
 				}
63 63
 				else {
64 64
 					$erreurs['message_erreur'] = $info._T('info_impossible_lire_page', array('test_proxy' => "<tt>$test_proxy</tt>"))
@@ -72,7 +72,7 @@  discard block
 block discarded – undo
72 72
 	return $erreurs;
73 73
 }
74 74
 
75
-function formulaires_configurer_relayeur_traiter_dist(){
75
+function formulaires_configurer_relayeur_traiter_dist() {
76 76
 	$res = array('editable'=>true);
77 77
 
78 78
 	$http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), lire_config('http_proxy', ''));
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
 	return $res;
88 88
 }
89 89
 
90
-function relayeur_saisie_ou_config($http_proxy, $default){
90
+function relayeur_saisie_ou_config($http_proxy, $default) {
91 91
 	// http_proxy : ne pas prendre en compte la modif si le password est '****'
92 92
 	if (preg_match(',:\*\*\*\*@,', $http_proxy))
93 93
 		$http_proxy = $default;
@@ -96,14 +96,14 @@  discard block
 block discarded – undo
96 96
 
97 97
 // Function glue_url : le pendant de parse_url
98 98
 // http://doc.spip.org/@glue_url
99
-function glue_url ($url){
100
-	if (!is_array($url)){
99
+function glue_url($url) {
100
+	if (!is_array($url)) {
101 101
 		return false;
102 102
 	}
103 103
 	// scheme
104 104
 	$uri = (!empty($url['scheme'])) ? $url['scheme'].'://' : '';
105 105
 	// user & pass
106
-	if (!empty($url['user'])){
106
+	if (!empty($url['user'])) {
107 107
 		$uri .= $url['user'].':'.$url['pass'].'@';
108 108
 	}
109 109
 	// host
@@ -114,9 +114,9 @@  discard block
 block discarded – undo
114 114
 	// path
115 115
 	$uri .= $url['path'];
116 116
 // fragment or query
117
-	if (isset($url['fragment'])){
117
+	if (isset($url['fragment'])) {
118 118
 		$uri .= '#'.$url['fragment'];
119
-	} elseif (isset($url['query'])){
119
+	} elseif (isset($url['query'])) {
120 120
 		$uri .= '?'.$url['query'];
121 121
 	}
122 122
 	return $uri;
Please login to merge, or discard this patch.
Braces   +20 added lines, -16 removed lines patch added patch discarded remove patch
@@ -10,7 +10,9 @@  discard block
 block discarded – undo
10 10
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11 11
 \***************************************************************************/
12 12
 
13
-if (!defined('_ECRIRE_INC_VERSION')) return;
13
+if (!defined('_ECRIRE_INC_VERSION')) {
14
+    return;
15
+}
14 16
 include_spip('inc/presentation');
15 17
 include_spip('inc/config');
16 18
 
@@ -34,20 +36,20 @@  discard block
 block discarded – undo
34 36
 	}
35 37
 
36 38
 	if (!isset($erreurs['http_proxy']) AND _request('tester_proxy')) {
37
-		if (!$http_proxy)
38
-			$erreurs['http_proxy'] = _T('info_obligatoire');
39
-		else {
39
+		if (!$http_proxy) {
40
+					$erreurs['http_proxy'] = _T('info_obligatoire');
41
+		} else {
40 42
 			include_spip('inc/distant');
41 43
 			$test_proxy = _request('test_proxy');
42 44
 			$t = parse_url($test_proxy);
43 45
 			if (!@$t['host']) {
44 46
 				$erreurs['test_proxy'] = _T('info_adresse_non_indiquee');
45
-			}
46
-			else {
47
+			} else {
47 48
 				include_spip('inc/texte'); // pour aide, couper, lang
48 49
 				$info = "";
49
-				if (!need_proxy($t['host'],$http_proxy,$http_noproxy))
50
-					$info = "<strong>"._T('page_pas_proxy')."</strong><br />";
50
+				if (!need_proxy($t['host'],$http_proxy,$http_noproxy)) {
51
+									$info = "<strong>"._T('page_pas_proxy')."</strong><br />";
52
+				}
51 53
 
52 54
 				// il faut fausser le proxy actuel pour faire le test !
53 55
 				$cur_http_proxy = $GLOBALS['meta']['http_proxy'];
@@ -59,8 +61,7 @@  discard block
 block discarded – undo
59 61
 				$GLOBALS['meta']['http_noproxy'] = $cur_http_noproxy;
60 62
 				if ($page) {
61 63
 					$erreurs['message_ok'] = _T('info_proxy_ok')."<br />$info\n<tt>".couper(entites_html($page),300)."</tt>";
62
-				}
63
-				else {
64
+				} else {
64 65
 					$erreurs['message_erreur'] = $info._T('info_impossible_lire_page', array('test_proxy' => "<tt>$test_proxy</tt>"))
65 66
 					. " <b><tt>".no_password_proxy_url($http_proxy)."</tt></b>."
66 67
 					. aide('confhttpproxy');
@@ -77,11 +78,13 @@  discard block
 block discarded – undo
77 78
 
78 79
 	$http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), lire_config('http_proxy', ''));
79 80
 	$http_noproxy = _request('http_noproxy');
80
-	if ($http_proxy !== NULL)
81
-		ecrire_meta('http_proxy', $http_proxy);
81
+	if ($http_proxy !== NULL) {
82
+			ecrire_meta('http_proxy', $http_proxy);
83
+	}
82 84
 
83
-	if ($http_noproxy !== NULL)
84
-		ecrire_meta('http_noproxy', $http_noproxy);
85
+	if ($http_noproxy !== NULL) {
86
+			ecrire_meta('http_noproxy', $http_noproxy);
87
+	}
85 88
 	
86 89
 	$res['message_ok'] = _T('config_info_enregistree');
87 90
 	return $res;
@@ -89,8 +92,9 @@  discard block
 block discarded – undo
89 92
 
90 93
 function relayeur_saisie_ou_config($http_proxy, $default){
91 94
 	// http_proxy : ne pas prendre en compte la modif si le password est '****'
92
-	if (preg_match(',:\*\*\*\*@,', $http_proxy))
93
-		$http_proxy = $default;
95
+	if (preg_match(',:\*\*\*\*@,', $http_proxy)) {
96
+			$http_proxy = $default;
97
+	}
94 98
 	return $http_proxy;
95 99
 }
96 100
 
Please login to merge, or discard this patch.
ecrire/req/mysql.php 4 patches
Doc Comments   +4 added lines, -5 removed lines patch added patch discarded remove patch
@@ -288,7 +288,7 @@  discard block
 block discarded – undo
288 288
 
289 289
 // http://doc.spip.org/@spip_mysql_order
290 290
 /**
291
- * @param $orderby
291
+ * @param string $orderby
292 292
  * @return string
293 293
  */
294 294
 function spip_mysql_order($orderby)
@@ -325,7 +325,7 @@  discard block
 block discarded – undo
325 325
 
326 326
 // http://doc.spip.org/@calculer_mysql_expression
327 327
 /**
328
- * @param $expression
328
+ * @param string $expression
329 329
  * @param $v
330 330
  * @param string $join
331 331
  * @return string
@@ -420,9 +420,8 @@  discard block
 block discarded – undo
420 420
 /**
421 421
  * Selectionne une base de donnees
422 422
  *
423
- * @param string $nom
424
- * 		Nom de la base a utiliser
425 423
  * 
424
+ * @param string $db
426 425
  * @return bool
427 426
  * 		True cas de success.
428 427
  * 		False en cas d'erreur.
@@ -828,7 +827,7 @@  discard block
 block discarded – undo
828 827
 // http://doc.spip.org/@spip_mysql_insert
829 828
 /**
830 829
  * @param $table
831
- * @param $champs
830
+ * @param string $champs
832 831
  * @param $valeurs
833 832
  * @param string $desc
834 833
  * @param string $serveur
Please login to merge, or discard this patch.
Indentation   +589 added lines, -592 removed lines patch added patch discarded remove patch
@@ -33,75 +33,75 @@  discard block
 block discarded – undo
33 33
  */
34 34
 
35 35
 function req_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='') {
36
-	if (!charger_php_extension('mysql')) return false;
37
-	if ($port > 0) $host = "$host:$port";
38
-	$link = @mysql_connect($host, $login, $pass, true);
39
-	if (!$link) {
40
-		spip_log('Echec mysql_connect. Erreur : ' . mysql_error(),'mysql.'._LOG_HS);
41
-		return false;
42
-	}
43
-	$last = '';
44
-	if (!$db) {
45
-		$ok = $link;
46
-		$db = 'spip';
47
-	} else {
48
-		$ok = spip_mysql_selectdb($db);
49
-		if (defined('_MYSQL_SET_SQL_MODE') 
50
-		  OR defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
51
-		  )
52
-			mysql_query($last = "set sql_mode=''");
53
-	}
54
-	spip_log("Connexion vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle sur $link" : 'impossible'), _LOG_DEBUG);
55
-
56
-	return !$ok ? false : array(
57
-		'db' => $db,
58
-		'last' => $last,
59
-		'prefixe' => $prefixe ? $prefixe : $db,
60
-		'link' => $GLOBALS['mysql_rappel_connexion'] ? $link : false,
61
-		);
36
+    if (!charger_php_extension('mysql')) return false;
37
+    if ($port > 0) $host = "$host:$port";
38
+    $link = @mysql_connect($host, $login, $pass, true);
39
+    if (!$link) {
40
+        spip_log('Echec mysql_connect. Erreur : ' . mysql_error(),'mysql.'._LOG_HS);
41
+        return false;
42
+    }
43
+    $last = '';
44
+    if (!$db) {
45
+        $ok = $link;
46
+        $db = 'spip';
47
+    } else {
48
+        $ok = spip_mysql_selectdb($db);
49
+        if (defined('_MYSQL_SET_SQL_MODE') 
50
+          OR defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
51
+            )
52
+            mysql_query($last = "set sql_mode=''");
53
+    }
54
+    spip_log("Connexion vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle sur $link" : 'impossible'), _LOG_DEBUG);
55
+
56
+    return !$ok ? false : array(
57
+        'db' => $db,
58
+        'last' => $last,
59
+        'prefixe' => $prefixe ? $prefixe : $db,
60
+        'link' => $GLOBALS['mysql_rappel_connexion'] ? $link : false,
61
+        );
62 62
 }
63 63
 
64 64
 $GLOBALS['spip_mysql_functions_1'] = array(
65
-		'alter' => 'spip_mysql_alter',
66
-		'count' => 'spip_mysql_count',
67
-		'countsel' => 'spip_mysql_countsel',
68
-		'create' => 'spip_mysql_create',
69
-		'create_base' => 'spip_mysql_create_base',
70
-		'create_view' => 'spip_mysql_create_view',
71
-		'date_proche' => 'spip_mysql_date_proche',
72
-		'delete' => 'spip_mysql_delete',
73
-		'drop_table' => 'spip_mysql_drop_table',
74
-		'drop_view' => 'spip_mysql_drop_view',
75
-		'errno' => 'spip_mysql_errno',
76
-		'error' => 'spip_mysql_error',
77
-		'explain' => 'spip_mysql_explain',
78
-		'fetch' => 'spip_mysql_fetch',
79
-		'seek' => 'spip_mysql_seek',
80
-		'free' => 'spip_mysql_free',
81
-		'hex' => 'spip_mysql_hex',
82
-		'in' => 'spip_mysql_in', 
83
-		'insert' => 'spip_mysql_insert',
84
-		'insertq' => 'spip_mysql_insertq',
85
-		'insertq_multi' => 'spip_mysql_insertq_multi',
86
-		'listdbs' => 'spip_mysql_listdbs',
87
-		'multi' => 'spip_mysql_multi',
88
-		'optimize' => 'spip_mysql_optimize',
89
-		'query' => 'spip_mysql_query',
90
-		'quote' => 'spip_mysql_quote',
91
-		'replace' => 'spip_mysql_replace',
92
-		'replace_multi' => 'spip_mysql_replace_multi',
93
-		'repair' => 'spip_mysql_repair',
94
-		'select' => 'spip_mysql_select',
95
-		'selectdb' => 'spip_mysql_selectdb',
96
-		'set_charset' => 'spip_mysql_set_charset',
97
-		'get_charset' => 'spip_mysql_get_charset',
98
-		'showbase' => 'spip_mysql_showbase',
99
-		'showtable' => 'spip_mysql_showtable',
100
-		'update' => 'spip_mysql_update',
101
-		'updateq' => 'spip_mysql_updateq',
102
-
103
-  // association de chaque nom http d'un charset aux couples MySQL 
104
-		'charsets' => array(
65
+        'alter' => 'spip_mysql_alter',
66
+        'count' => 'spip_mysql_count',
67
+        'countsel' => 'spip_mysql_countsel',
68
+        'create' => 'spip_mysql_create',
69
+        'create_base' => 'spip_mysql_create_base',
70
+        'create_view' => 'spip_mysql_create_view',
71
+        'date_proche' => 'spip_mysql_date_proche',
72
+        'delete' => 'spip_mysql_delete',
73
+        'drop_table' => 'spip_mysql_drop_table',
74
+        'drop_view' => 'spip_mysql_drop_view',
75
+        'errno' => 'spip_mysql_errno',
76
+        'error' => 'spip_mysql_error',
77
+        'explain' => 'spip_mysql_explain',
78
+        'fetch' => 'spip_mysql_fetch',
79
+        'seek' => 'spip_mysql_seek',
80
+        'free' => 'spip_mysql_free',
81
+        'hex' => 'spip_mysql_hex',
82
+        'in' => 'spip_mysql_in', 
83
+        'insert' => 'spip_mysql_insert',
84
+        'insertq' => 'spip_mysql_insertq',
85
+        'insertq_multi' => 'spip_mysql_insertq_multi',
86
+        'listdbs' => 'spip_mysql_listdbs',
87
+        'multi' => 'spip_mysql_multi',
88
+        'optimize' => 'spip_mysql_optimize',
89
+        'query' => 'spip_mysql_query',
90
+        'quote' => 'spip_mysql_quote',
91
+        'replace' => 'spip_mysql_replace',
92
+        'replace_multi' => 'spip_mysql_replace_multi',
93
+        'repair' => 'spip_mysql_repair',
94
+        'select' => 'spip_mysql_select',
95
+        'selectdb' => 'spip_mysql_selectdb',
96
+        'set_charset' => 'spip_mysql_set_charset',
97
+        'get_charset' => 'spip_mysql_get_charset',
98
+        'showbase' => 'spip_mysql_showbase',
99
+        'showtable' => 'spip_mysql_showtable',
100
+        'update' => 'spip_mysql_update',
101
+        'updateq' => 'spip_mysql_updateq',
102
+
103
+    // association de chaque nom http d'un charset aux couples MySQL 
104
+        'charsets' => array(
105 105
 'cp1250'=>array('charset'=>'cp1250','collation'=>'cp1250_general_ci'),
106 106
 'cp1251'=>array('charset'=>'cp1251','collation'=>'cp1251_general_ci'),
107 107
 'cp1256'=>array('charset'=>'cp1256','collation'=>'cp1256_general_ci'),
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
 'iso-8859-9'=>array('charset'=>'latin5','collation'=>'latin5_turkish_ci'),
111 111
 //'iso-8859-15'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
112 112
 'utf-8'=>array('charset'=>'utf8','collation'=>'utf8_general_ci'))
113
-		);
113
+        );
114 114
 
115 115
 
116 116
 /**
@@ -122,9 +122,9 @@  discard block
 block discarded – undo
122 122
  * @return resource       Ressource de résultats pour fetch()
123 123
  */
124 124
 function spip_mysql_set_charset($charset, $serveur='',$requeter=true){
125
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
126
-	spip_log("changement de charset sql : "."SET NAMES "._q($charset), _LOG_DEBUG);
127
-	return mysql_query($connexion['last'] = "SET NAMES "._q($charset));
125
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
126
+    spip_log("changement de charset sql : "."SET NAMES "._q($charset), _LOG_DEBUG);
127
+    return mysql_query($connexion['last'] = "SET NAMES "._q($charset));
128 128
 }
129 129
 
130 130
 
@@ -137,24 +137,23 @@  discard block
 block discarded – undo
137 137
  * @return array                Description du charset (son nom est dans 'charset')
138 138
  */
139 139
 function spip_mysql_get_charset($charset=array(), $serveur='',$requeter=true){
140
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
141
-	$connexion['last'] = $c = "SHOW CHARACTER SET"
142
-	. (!$charset ? '' : (" LIKE "._q($charset['charset'])));
140
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
141
+    $connexion['last'] = $c = "SHOW CHARACTER SET"
142
+    . (!$charset ? '' : (" LIKE "._q($charset['charset'])));
143 143
 
144
-	return spip_mysql_fetch(mysql_query($c), NULL, $serveur);
144
+    return spip_mysql_fetch(mysql_query($c), NULL, $serveur);
145 145
 }
146 146
 
147 147
 // obsolete, ne plus utiliser
148 148
 // http://doc.spip.org/@spip_query_db
149 149
 function spip_query_db($query, $serveur='',$requeter=true) {
150
-	return spip_mysql_query($query, $serveur, $requeter);
150
+    return spip_mysql_query($query, $serveur, $requeter);
151 151
 }
152 152
 
153 153
 // Fonction de requete generale, munie d'une trace a la demande
154 154
 
155 155
 // http://doc.spip.org/@spip_mysql_query
156 156
 /**
157
-
158 157
  * @param $query
159 158
  * @param string $serveur
160 159
  * @param bool $requeter
@@ -163,39 +162,39 @@  discard block
 block discarded – undo
163 162
  */
164 163
 function spip_mysql_query($query, $serveur='',$requeter=true) {
165 164
 
166
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
167
-	$prefixe = $connexion['prefixe'];
168
-	$link = $connexion['link'];
169
-	$db = $connexion['db'];
165
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
166
+    $prefixe = $connexion['prefixe'];
167
+    $link = $connexion['link'];
168
+    $db = $connexion['db'];
170 169
 
171
-	$query = traite_query($query, $db, $prefixe);
170
+    $query = traite_query($query, $db, $prefixe);
172 171
 
173
-	// renvoyer la requete inerte si demandee
174
-	if (!$requeter) return $query;
172
+    // renvoyer la requete inerte si demandee
173
+    if (!$requeter) return $query;
175 174
 
176
-	if (isset($_GET['var_profile'])) {
177
-		include_spip('public/tracer');
178
-		$t = trace_query_start();
179
-	} else $t = 0 ;
175
+    if (isset($_GET['var_profile'])) {
176
+        include_spip('public/tracer');
177
+        $t = trace_query_start();
178
+    } else $t = 0 ;
180 179
  
181
-	$connexion['last'] = $query;
182
-
183
-	// ajouter un debug utile dans log/mysql-slow.log ?
184
-	$debug = '';
185
-	if (defined('_DEBUG_SLOW_QUERIES') AND _DEBUG_SLOW_QUERIES){
186
-		if(isset($GLOBALS['debug']['aucasou'])){
187
-			list(,$id,, $infos) = $GLOBALS['debug']['aucasou'];
188
-			$debug .= "BOUCLE$id @ ".$infos[0] ." | ";
189
-		}
190
-		$debug .= $_SERVER['REQUEST_URI'].' + '.$GLOBALS['ip'];
191
-		$debug = ' /* '. mysql_real_escape_string(str_replace('*/','@/',$debug)). ' */';
192
-	}
193
-
194
-	$r = $link ? mysql_query($query.$debug, $link) : mysql_query($query.$debug);
195
-
196
-	if ($e = spip_mysql_errno($serveur))	// Log de l'erreur eventuelle
197
-		$e .= spip_mysql_error($query, $serveur); // et du fautif
198
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
180
+    $connexion['last'] = $query;
181
+
182
+    // ajouter un debug utile dans log/mysql-slow.log ?
183
+    $debug = '';
184
+    if (defined('_DEBUG_SLOW_QUERIES') AND _DEBUG_SLOW_QUERIES){
185
+        if(isset($GLOBALS['debug']['aucasou'])){
186
+            list(,$id,, $infos) = $GLOBALS['debug']['aucasou'];
187
+            $debug .= "BOUCLE$id @ ".$infos[0] ." | ";
188
+        }
189
+        $debug .= $_SERVER['REQUEST_URI'].' + '.$GLOBALS['ip'];
190
+        $debug = ' /* '. mysql_real_escape_string(str_replace('*/','@/',$debug)). ' */';
191
+    }
192
+
193
+    $r = $link ? mysql_query($query.$debug, $link) : mysql_query($query.$debug);
194
+
195
+    if ($e = spip_mysql_errno($serveur))	// Log de l'erreur eventuelle
196
+        $e .= spip_mysql_error($query, $serveur); // et du fautif
197
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
199 198
 }
200 199
 
201 200
 // http://doc.spip.org/@spip_mysql_alter
@@ -206,11 +205,11 @@  discard block
 block discarded – undo
206 205
  * @return array|null|resource|string
207 206
  */
208 207
 function spip_mysql_alter($query, $serveur='',$requeter=true){
209
-	// ici on supprime les ` entourant le nom de table pour permettre
210
-	// la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
211
-	// d'utiliser ceux-ci, copie-colle de phpmyadmin
212
-	$query = preg_replace(",^TABLE\s*`([^`]*)`,i","TABLE \\1",$query);
213
-	return spip_mysql_query("ALTER ".$query, $serveur, $requeter); # i.e. que PG se debrouille
208
+    // ici on supprime les ` entourant le nom de table pour permettre
209
+    // la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
210
+    // d'utiliser ceux-ci, copie-colle de phpmyadmin
211
+    $query = preg_replace(",^TABLE\s*`([^`]*)`,i","TABLE \\1",$query);
212
+    return spip_mysql_query("ALTER ".$query, $serveur, $requeter); # i.e. que PG se debrouille
214 213
 }
215 214
 
216 215
 // http://doc.spip.org/@spip_mysql_optimize
@@ -221,8 +220,8 @@  discard block
 block discarded – undo
221 220
  * @return bool
222 221
  */
223 222
 function spip_mysql_optimize($table, $serveur='',$requeter=true){
224
-	spip_mysql_query("OPTIMIZE TABLE ". $table);
225
-	return true;
223
+    spip_mysql_query("OPTIMIZE TABLE ". $table);
224
+    return true;
226 225
 }
227 226
 
228 227
 // http://doc.spip.org/@spip_mysql_explain
@@ -233,15 +232,15 @@  discard block
 block discarded – undo
233 232
  * @return array
234 233
  */
235 234
 function spip_mysql_explain($query, $serveur='',$requeter=true){
236
-	if (strpos(ltrim($query), 'SELECT') !== 0) return array();
237
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
238
-	$prefixe = $connexion['prefixe'];
239
-	$link = $connexion['link'];
240
-	$db = $connexion['db'];
241
-
242
-	$query = 'EXPLAIN ' . traite_query($query, $db, $prefixe);
243
-	$r = $link ? mysql_query($query, $link) : mysql_query($query);
244
-	return spip_mysql_fetch($r, NULL, $serveur);
235
+    if (strpos(ltrim($query), 'SELECT') !== 0) return array();
236
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
237
+    $prefixe = $connexion['prefixe'];
238
+    $link = $connexion['link'];
239
+    $db = $connexion['db'];
240
+
241
+    $query = 'EXPLAIN ' . traite_query($query, $db, $prefixe);
242
+    $r = $link ? mysql_query($query, $link) : mysql_query($query);
243
+    return spip_mysql_fetch($r, NULL, $serveur);
245 244
 }
246 245
 // fonction  instance de sql_select, voir ses specs dans abstract.php
247 246
 // traite_query pourrait y etre fait d'avance ce serait moins cher
@@ -262,24 +261,24 @@  discard block
 block discarded – undo
262 261
  * @return array|null|resource|string
263 262
  */
264 263
 function spip_mysql_select($select, $from, $where='',
265
-			   $groupby='', $orderby='', $limit='', $having='',
266
-			   $serveur='',$requeter=true) {
267
-
268
-
269
-	$from = (!is_array($from) ? $from : spip_mysql_select_as($from));
270
-	$query = 
271
-		  calculer_mysql_expression('SELECT', $select, ', ')
272
-		. calculer_mysql_expression('FROM', $from, ', ')
273
-		. calculer_mysql_expression('WHERE', $where)
274
-		. calculer_mysql_expression('GROUP BY', $groupby, ',')
275
-		. calculer_mysql_expression('HAVING', $having)
276
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) :'')
277
-		. ($limit ? "\nLIMIT $limit" : '');
278
-
279
-	// renvoyer la requete inerte si demandee
280
-	if ($requeter === false) return $query;
281
-	$r = spip_mysql_query($query, $serveur, $requeter);
282
-	return $r ? $r : $query;
264
+                $groupby='', $orderby='', $limit='', $having='',
265
+                $serveur='',$requeter=true) {
266
+
267
+
268
+    $from = (!is_array($from) ? $from : spip_mysql_select_as($from));
269
+    $query = 
270
+            calculer_mysql_expression('SELECT', $select, ', ')
271
+        . calculer_mysql_expression('FROM', $from, ', ')
272
+        . calculer_mysql_expression('WHERE', $where)
273
+        . calculer_mysql_expression('GROUP BY', $groupby, ',')
274
+        . calculer_mysql_expression('HAVING', $having)
275
+        . ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) :'')
276
+        . ($limit ? "\nLIMIT $limit" : '');
277
+
278
+    // renvoyer la requete inerte si demandee
279
+    if ($requeter === false) return $query;
280
+    $r = spip_mysql_query($query, $serveur, $requeter);
281
+    return $r ? $r : $query;
283 282
 }
284 283
 
285 284
 // 0+x avec un champ x commencant par des chiffres est converti par MySQL
@@ -293,7 +292,7 @@  discard block
 block discarded – undo
293 292
  */
294 293
 function spip_mysql_order($orderby)
295 294
 {
296
-	return (is_array($orderby)) ? join(", ", $orderby) :  $orderby;
295
+    return (is_array($orderby)) ? join(", ", $orderby) :  $orderby;
297 296
 }
298 297
 
299 298
 
@@ -304,23 +303,23 @@  discard block
 block discarded – undo
304 303
  */
305 304
 function calculer_mysql_where($v)
306 305
 {
307
-	if (!is_array($v))
308
-	  return $v ;
309
-
310
-	$op = array_shift($v);
311
-	if (!($n=count($v)))
312
-		return $op;
313
-	else {
314
-		$arg = calculer_mysql_where(array_shift($v));
315
-		if ($n==1) {
316
-			  return "$op($arg)";
317
-		} else {
318
-			$arg2 = calculer_mysql_where(array_shift($v));
319
-			if ($n==2) {
320
-				return "($arg $op $arg2)";
321
-			} else return "($arg $op ($arg2) : $v[0])";
322
-		}
323
-	}
306
+    if (!is_array($v))
307
+        return $v ;
308
+
309
+    $op = array_shift($v);
310
+    if (!($n=count($v)))
311
+        return $op;
312
+    else {
313
+        $arg = calculer_mysql_where(array_shift($v));
314
+        if ($n==1) {
315
+                return "$op($arg)";
316
+        } else {
317
+            $arg2 = calculer_mysql_where(array_shift($v));
318
+            if ($n==2) {
319
+                return "($arg $op $arg2)";
320
+            } else return "($arg $op ($arg2) : $v[0])";
321
+        }
322
+    }
324 323
 }
325 324
 
326 325
 // http://doc.spip.org/@calculer_mysql_expression
@@ -331,19 +330,19 @@  discard block
 block discarded – undo
331 330
  * @return string
332 331
  */
333 332
 function calculer_mysql_expression($expression, $v, $join = 'AND'){
334
-	if (empty($v))
335
-		return '';
333
+    if (empty($v))
334
+        return '';
336 335
 	
337
-	$exp = "\n$expression ";
336
+    $exp = "\n$expression ";
338 337
 	
339
-	if (!is_array($v)) {
340
-		return $exp . $v;
341
-	} else {
342
-		if (strtoupper($join) === 'AND')
343
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
344
-		else
345
-			return $exp . join($join, $v);
346
-	}
338
+    if (!is_array($v)) {
339
+        return $exp . $v;
340
+    } else {
341
+        if (strtoupper($join) === 'AND')
342
+            return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
343
+        else
344
+            return $exp . join($join, $v);
345
+    }
347 346
 }
348 347
 
349 348
 // http://doc.spip.org/@spip_mysql_select_as
@@ -353,25 +352,25 @@  discard block
 block discarded – undo
353 352
  */
354 353
 function spip_mysql_select_as($args)
355 354
 {
356
-	$res = '';
357
-	foreach($args as $k => $v) {
358
-		if (substr($k,-1)=='@') {
359
-			// c'est une jointure qui se refere au from precedent
360
-			// pas de virgule
361
-		  $res .= '  ' . $v ;
362
-		}
363
-		else {
364
-		  if (!is_numeric($k)) {
365
-		  	$p = strpos($v, " ");
366
-			if ($p)
367
-			  $v = substr($v,0,$p) . " AS `$k`" . substr($v,$p);
368
-			else $v .= " AS `$k`";
369
-		  }
355
+    $res = '';
356
+    foreach($args as $k => $v) {
357
+        if (substr($k,-1)=='@') {
358
+            // c'est une jointure qui se refere au from precedent
359
+            // pas de virgule
360
+            $res .= '  ' . $v ;
361
+        }
362
+        else {
363
+            if (!is_numeric($k)) {
364
+                $p = strpos($v, " ");
365
+            if ($p)
366
+                $v = substr($v,0,$p) . " AS `$k`" . substr($v,$p);
367
+            else $v .= " AS `$k`";
368
+            }
370 369
 		      
371
-		  $res .= ', ' . $v ;
372
-		}
373
-	}
374
-	return substr($res,2);
370
+            $res .= ', ' . $v ;
371
+        }
372
+    }
373
+    return substr($res,2);
375 374
 }
376 375
 
377 376
 //
@@ -389,32 +388,32 @@  discard block
 block discarded – undo
389 388
  */
390 389
 function traite_query($query, $db='', $prefixe='') {
391 390
 
392
-	if ($GLOBALS['mysql_rappel_nom_base'] AND $db)
393
-		$pref = '`'. $db.'`.';
394
-	else $pref = '';
395
-
396
-	if ($prefixe)
397
-		$pref .= $prefixe . "_";
398
-
399
-	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
400
-		$suite ='';
401
-	} else {
402
-		$suite = strstr($query, $regs[0]);
403
-		$query = substr($query, 0, -strlen($suite));
404
-		// propager le prefixe en cas de requete imbriquee
405
-		// il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
406
-		// modifier une requete qui est en fait juste du texte dans un champ
407
-		if (stripos($suite,"SELECT")!==false) {
408
-			list($suite,$textes) = query_echappe_textes($suite);
409
-			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r))
410
-		    $suite = $r[1] . traite_query($r[2], $db, $prefixe);
411
-			$suite = query_reinjecte_textes($suite, $textes);
412
-		}
413
-	}
414
-	$r = preg_replace(_SQL_PREFIXE_TABLE, '\1'.$pref, $query) . $suite;
415
-
416
-	#spip_log("traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
417
-	return $r;
391
+    if ($GLOBALS['mysql_rappel_nom_base'] AND $db)
392
+        $pref = '`'. $db.'`.';
393
+    else $pref = '';
394
+
395
+    if ($prefixe)
396
+        $pref .= $prefixe . "_";
397
+
398
+    if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
399
+        $suite ='';
400
+    } else {
401
+        $suite = strstr($query, $regs[0]);
402
+        $query = substr($query, 0, -strlen($suite));
403
+        // propager le prefixe en cas de requete imbriquee
404
+        // il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
405
+        // modifier une requete qui est en fait juste du texte dans un champ
406
+        if (stripos($suite,"SELECT")!==false) {
407
+            list($suite,$textes) = query_echappe_textes($suite);
408
+            if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r))
409
+            $suite = $r[1] . traite_query($r[2], $db, $prefixe);
410
+            $suite = query_reinjecte_textes($suite, $textes);
411
+        }
412
+    }
413
+    $r = preg_replace(_SQL_PREFIXE_TABLE, '\1'.$pref, $query) . $suite;
414
+
415
+    #spip_log("traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
416
+    return $r;
418 417
 }
419 418
 
420 419
 /**
@@ -428,10 +427,10 @@  discard block
 block discarded – undo
428 427
  * 		False en cas d'erreur.
429 428
 **/
430 429
 function spip_mysql_selectdb($db) {
431
-	$ok = mysql_select_db($db);
432
-	if (!$ok)
433
-		spip_log('Echec mysql_selectdb. Erreur : ' . mysql_error(),'mysql.'._LOG_CRITIQUE);
434
-	return $ok;
430
+    $ok = mysql_select_db($db);
431
+    if (!$ok)
432
+        spip_log('Echec mysql_selectdb. Erreur : ' . mysql_error(),'mysql.'._LOG_CRITIQUE);
433
+    return $ok;
435 434
 }
436 435
 
437 436
 
@@ -451,12 +450,12 @@  discard block
 block discarded – undo
451 450
  * 		Liste de noms de bases de donnees
452 451
 **/
453 452
 function spip_mysql_listdbs($serveur='',$requeter=true) {
454
-	$dbs = array();
455
-	if ($res = spip_mysql_query("SHOW DATABASES")){
456
-		while($row = mysql_fetch_assoc($res))
457
-			$dbs[] = $row['Database'];
458
-	}
459
-	return $dbs;
453
+    $dbs = array();
454
+    if ($res = spip_mysql_query("SHOW DATABASES")){
455
+        while($row = mysql_fetch_assoc($res))
456
+            $dbs[] = $row['Database'];
457
+    }
458
+    return $dbs;
460 459
 }
461 460
 
462 461
 // Fonction de creation d'une table SQL nommee $nom
@@ -479,53 +478,53 @@  discard block
 block discarded – undo
479 478
  */
480 479
 function spip_mysql_create($nom, $champs, $cles, $autoinc=false, $temporary=false, $serveur='',$requeter=true) {
481 480
 
482
-	$query = ''; $keys = ''; $s = ''; $p='';
483
-
484
-	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
485
-	// sans les renseigner (laisse le compilo recuperer la description)
486
-	if (!is_array($champs) || !is_array($cles)) 
487
-		return;
488
-
489
-	$res = spip_mysql_query("SELECT version() as v");
490
-	if (($row = mysql_fetch_array($res)) && (version_compare($row['v'],'5.0','>='))) {
491
-		spip_mysql_query("SET sql_mode=''", $serveur);
492
-	}
493
-
494
-	foreach($cles as $k => $v) {
495
-		$keys .= "$s\n\t\t$k ($v)";
496
-		if ($k == "PRIMARY KEY")
497
-			$p = $v;
498
-		$s = ",";
499
-	}
500
-	$s = '';
481
+    $query = ''; $keys = ''; $s = ''; $p='';
482
+
483
+    // certains plugins declarent les tables  (permet leur inclusion dans le dump)
484
+    // sans les renseigner (laisse le compilo recuperer la description)
485
+    if (!is_array($champs) || !is_array($cles)) 
486
+        return;
487
+
488
+    $res = spip_mysql_query("SELECT version() as v");
489
+    if (($row = mysql_fetch_array($res)) && (version_compare($row['v'],'5.0','>='))) {
490
+        spip_mysql_query("SET sql_mode=''", $serveur);
491
+    }
492
+
493
+    foreach($cles as $k => $v) {
494
+        $keys .= "$s\n\t\t$k ($v)";
495
+        if ($k == "PRIMARY KEY")
496
+            $p = $v;
497
+        $s = ",";
498
+    }
499
+    $s = '';
501 500
 	
502
-	$character_set = "";
503
-	if (@$GLOBALS['meta']['charset_sql_base'])
504
-		$character_set .= " CHARACTER SET ".$GLOBALS['meta']['charset_sql_base'];
505
-	if (@$GLOBALS['meta']['charset_collation_sql_base'])
506
-		$character_set .= " COLLATE ".$GLOBALS['meta']['charset_collation_sql_base'];
507
-
508
-	foreach($champs as $k => $v) {
509
-		$v = _mysql_remplacements_definitions_table($v);
510
-		if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i',$v,$defs)){
511
-			if (preg_match(',(char|text),i',$defs[1])
512
-				AND !preg_match(',(binary|CHARACTER|COLLATE),i',$v) ){
513
-				$v = $defs[1] . $character_set . ' ' . substr($v,strlen($defs[1]));
514
-			}
515
-		}
516
-
517
-		$query .= "$s\n\t\t$k $v"
518
-			. (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
519
-				? " auto_increment"
520
-				: ''
521
-			);
522
-		$s = ",";
523
-	}
524
-	$temporary = $temporary ? 'TEMPORARY':'';
525
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")".
526
-	($character_set?" DEFAULT $character_set":"")
527
-	."\n";
528
-	return spip_mysql_query($q, $serveur);
501
+    $character_set = "";
502
+    if (@$GLOBALS['meta']['charset_sql_base'])
503
+        $character_set .= " CHARACTER SET ".$GLOBALS['meta']['charset_sql_base'];
504
+    if (@$GLOBALS['meta']['charset_collation_sql_base'])
505
+        $character_set .= " COLLATE ".$GLOBALS['meta']['charset_collation_sql_base'];
506
+
507
+    foreach($champs as $k => $v) {
508
+        $v = _mysql_remplacements_definitions_table($v);
509
+        if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i',$v,$defs)){
510
+            if (preg_match(',(char|text),i',$defs[1])
511
+                AND !preg_match(',(binary|CHARACTER|COLLATE),i',$v) ){
512
+                $v = $defs[1] . $character_set . ' ' . substr($v,strlen($defs[1]));
513
+            }
514
+        }
515
+
516
+        $query .= "$s\n\t\t$k $v"
517
+            . (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
518
+                ? " auto_increment"
519
+                : ''
520
+            );
521
+        $s = ",";
522
+    }
523
+    $temporary = $temporary ? 'TEMPORARY':'';
524
+    $q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")".
525
+    ($character_set?" DEFAULT $character_set":"")
526
+    ."\n";
527
+    return spip_mysql_query($q, $serveur);
529 528
 }
530 529
 
531 530
 
@@ -538,16 +537,16 @@  discard block
 block discarded – undo
538 537
  * 		Definition SQL adaptee pour MySQL d'un champ de table
539 538
  */
540 539
 function _mysql_remplacements_definitions_table($query){
541
-	// quelques remplacements
542
-	$num = "(\s*\([0-9]*\))?";
543
-	$enum = "(\s*\([^\)]*\))?";
540
+    // quelques remplacements
541
+    $num = "(\s*\([0-9]*\))?";
542
+    $enum = "(\s*\([^\)]*\))?";
544 543
 
545
-	$remplace = array(
546
-		'/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
547
-	);
544
+    $remplace = array(
545
+        '/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
546
+    );
548 547
 
549
-	$query = preg_replace(array_keys($remplace), $remplace, $query);
550
-	return $query;
548
+    $query = preg_replace(array_keys($remplace), $remplace, $query);
549
+    return $query;
551 550
 }
552 551
 
553 552
 /**
@@ -557,7 +556,7 @@  discard block
 block discarded – undo
557 556
  * @return array|null|resource|string
558 557
  */
559 558
 function spip_mysql_create_base($nom, $serveur='',$requeter=true) {
560
-  return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
559
+    return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
561 560
 }
562 561
 
563 562
 // Fonction de creation d'une vue SQL nommee $nom
@@ -570,15 +569,15 @@  discard block
 block discarded – undo
570 569
  * @return array|bool|null|resource|string
571 570
  */
572 571
 function spip_mysql_create_view($nom, $query_select, $serveur='',$requeter=true) {
573
-	if (!$query_select) return false;
574
-	// vue deja presente
575
-	if (sql_showtable($nom, false, $serveur)) {
576
-		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
577
-		return false;
578
-	}
572
+    if (!$query_select) return false;
573
+    // vue deja presente
574
+    if (sql_showtable($nom, false, $serveur)) {
575
+        spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
576
+        return false;
577
+    }
579 578
 	
580
-	$query = "CREATE VIEW $nom AS ". $query_select;
581
-	return spip_mysql_query($query, $serveur, $requeter);
579
+    $query = "CREATE VIEW $nom AS ". $query_select;
580
+    return spip_mysql_query($query, $serveur, $requeter);
582 581
 }
583 582
 
584 583
 
@@ -592,8 +591,8 @@  discard block
 block discarded – undo
592 591
  */
593 592
 function spip_mysql_drop_table($table, $exist='', $serveur='',$requeter=true)
594 593
 {
595
-	if ($exist) $exist =" IF EXISTS";
596
-	return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
594
+    if ($exist) $exist =" IF EXISTS";
595
+    return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
597 596
 }
598 597
 
599 598
 // supprime une vue 
@@ -606,8 +605,8 @@  discard block
 block discarded – undo
606 605
  * @return array|null|resource|string
607 606
  */
608 607
 function spip_mysql_drop_view($view, $exist='', $serveur='',$requeter=true) {
609
-	if ($exist) $exist =" IF EXISTS";
610
-	return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
608
+    if ($exist) $exist =" IF EXISTS";
609
+    return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
611 610
 }
612 611
 
613 612
 /**
@@ -625,7 +624,7 @@  discard block
 block discarded – undo
625 624
 **/
626 625
 function spip_mysql_showbase($match, $serveur='',$requeter=true)
627 626
 {
628
-	return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
627
+    return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
629 628
 }
630 629
 
631 630
 // http://doc.spip.org/@spip_mysql_repair
@@ -637,7 +636,7 @@  discard block
 block discarded – undo
637 636
  */
638 637
 function spip_mysql_repair($table, $serveur='',$requeter=true)
639 638
 {
640
-	return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
639
+    return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
641 640
 }
642 641
 
643 642
 define('_MYSQL_RE_SHOW_TABLE', '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/');
@@ -653,70 +652,70 @@  discard block
 block discarded – undo
653 652
  */
654 653
 function spip_mysql_showtable($nom_table, $serveur='',$requeter=true)
655 654
 {
656
-	$s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
657
-	if (!$s) return '';
658
-	if (!$requeter) return $s;
659
-
660
-	list(,$a) = mysql_fetch_array($s ,MYSQL_NUM);
661
-	if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)){
662
-		$desc = $r[1];
663
-		// extraction d'une KEY éventuelle en prenant garde de ne pas
664
-		// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
665
-		if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
666
-		  $namedkeys = $r[2];
667
-		  $desc = $r[1];
668
-		}
669
-		else 
670
-		  $namedkeys = "";
671
-
672
-		$fields = array();
673
-		foreach(preg_split("/,\s*`/",$desc) as $v) {
674
-		  preg_match("/^\s*`?([^`]*)`\s*(.*)/",$v,$r);
675
-		  $fields[strtolower($r[1])] = $r[2];
676
-		}
677
-		$keys = array();
678
-
679
-		foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
680
-		  if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
681
-			$k = str_replace("`", '', trim($r[1]));
682
-			$t = strtolower(str_replace("`", '', $r[2]));
683
-			if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
684
-		  }
685
-		}
686
-		spip_mysql_free($s);
687
-		return array('field' => $fields, 'key' => $keys);
688
-	}
689
-
690
-	$res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
691
-	if($res) {
692
-	  $nfields = array();
693
-	  $nkeys = array();
694
-	  while($val = spip_mysql_fetch($res)) {
695
-		$nfields[$val["Field"]] = $val['Type'];
696
-		if($val['Null']=='NO') {
697
-		  $nfields[$val["Field"]] .= ' NOT NULL'; 
698
-		}
699
-		if($val['Default'] === '0' || $val['Default']) {
700
-		  if(preg_match('/[A-Z_]/',$val['Default'])) {
701
-			$nfields[$val["Field"]] .= ' DEFAULT '.$val['Default'];		  
702
-		  } else {
703
-			$nfields[$val["Field"]] .= " DEFAULT '".$val['Default']."'";		  
704
-		  }
705
-		}
706
-		if($val['Extra'])
707
-		  $nfields[$val["Field"]] .= ' '.$val['Extra'];
708
-		if($val['Key'] == 'PRI') {
709
-		  $nkeys['PRIMARY KEY'] = $val["Field"];
710
-		} else if($val['Key'] == 'MUL') {
711
-		  $nkeys['KEY '.$val["Field"]] = $val["Field"];
712
-		} else if($val['Key'] == 'UNI') {
713
-		  $nkeys['UNIQUE KEY '.$val["Field"]] = $val["Field"];
714
-		}
715
-	  }
716
-	  spip_mysql_free($res);
717
-	  return array('field' => $nfields, 'key' => $nkeys);
718
-	}
719
-	return "";
655
+    $s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
656
+    if (!$s) return '';
657
+    if (!$requeter) return $s;
658
+
659
+    list(,$a) = mysql_fetch_array($s ,MYSQL_NUM);
660
+    if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)){
661
+        $desc = $r[1];
662
+        // extraction d'une KEY éventuelle en prenant garde de ne pas
663
+        // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
664
+        if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
665
+            $namedkeys = $r[2];
666
+            $desc = $r[1];
667
+        }
668
+        else 
669
+            $namedkeys = "";
670
+
671
+        $fields = array();
672
+        foreach(preg_split("/,\s*`/",$desc) as $v) {
673
+            preg_match("/^\s*`?([^`]*)`\s*(.*)/",$v,$r);
674
+            $fields[strtolower($r[1])] = $r[2];
675
+        }
676
+        $keys = array();
677
+
678
+        foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
679
+            if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
680
+            $k = str_replace("`", '', trim($r[1]));
681
+            $t = strtolower(str_replace("`", '', $r[2]));
682
+            if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
683
+            }
684
+        }
685
+        spip_mysql_free($s);
686
+        return array('field' => $fields, 'key' => $keys);
687
+    }
688
+
689
+    $res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
690
+    if($res) {
691
+        $nfields = array();
692
+        $nkeys = array();
693
+        while($val = spip_mysql_fetch($res)) {
694
+        $nfields[$val["Field"]] = $val['Type'];
695
+        if($val['Null']=='NO') {
696
+            $nfields[$val["Field"]] .= ' NOT NULL'; 
697
+        }
698
+        if($val['Default'] === '0' || $val['Default']) {
699
+            if(preg_match('/[A-Z_]/',$val['Default'])) {
700
+            $nfields[$val["Field"]] .= ' DEFAULT '.$val['Default'];		  
701
+            } else {
702
+            $nfields[$val["Field"]] .= " DEFAULT '".$val['Default']."'";		  
703
+            }
704
+        }
705
+        if($val['Extra'])
706
+            $nfields[$val["Field"]] .= ' '.$val['Extra'];
707
+        if($val['Key'] == 'PRI') {
708
+            $nkeys['PRIMARY KEY'] = $val["Field"];
709
+        } else if($val['Key'] == 'MUL') {
710
+            $nkeys['KEY '.$val["Field"]] = $val["Field"];
711
+        } else if($val['Key'] == 'UNI') {
712
+            $nkeys['UNIQUE KEY '.$val["Field"]] = $val["Field"];
713
+        }
714
+        }
715
+        spip_mysql_free($res);
716
+        return array('field' => $nfields, 'key' => $nkeys);
717
+    }
718
+    return "";
720 719
 }
721 720
 
722 721
 //
@@ -732,18 +731,17 @@  discard block
 block discarded – undo
732 731
  * @return array
733 732
  */
734 733
 function spip_mysql_fetch($r, $t='', $serveur='',$requeter=true) {
735
-	if (!$t) $t = MYSQL_ASSOC;
736
-	if ($r) return mysql_fetch_array($r, $t);
734
+    if (!$t) $t = MYSQL_ASSOC;
735
+    if ($r) return mysql_fetch_array($r, $t);
737 736
 }
738 737
 
739 738
 function spip_mysql_seek($r, $row_number, $serveur='',$requeter=true) {
740
-	if ($r and mysql_num_rows($r)) return mysql_data_seek($r,$row_number);
739
+    if ($r and mysql_num_rows($r)) return mysql_data_seek($r,$row_number);
741 740
 }
742 741
 
743 742
 
744 743
 // http://doc.spip.org/@spip_mysql_countsel
745 744
 /**
746
-
747 745
  * @param array $from
748 746
  * @param array $where
749 747
  * @param string $groupby
@@ -754,17 +752,17 @@  discard block
 block discarded – undo
754 752
  *
755 753
  */
756 754
 function spip_mysql_countsel($from = array(), $where = array(),
757
-			     $groupby = '', $having = array(), $serveur='',$requeter=true)
755
+                    $groupby = '', $having = array(), $serveur='',$requeter=true)
758 756
 {
759
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
757
+    $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
760 758
 
761
-	$r = spip_mysql_select("COUNT($c)", $from, $where,'', '', '', $having, $serveur, $requeter);
759
+    $r = spip_mysql_select("COUNT($c)", $from, $where,'', '', '', $having, $serveur, $requeter);
762 760
 
763
-	if (!$requeter) return $r;
764
-	if (!is_resource($r)) return 0;
765
-	list($c) = mysql_fetch_array($r, MYSQL_NUM);
766
-	mysql_free_result($r);
767
-	return $c;
761
+    if (!$requeter) return $r;
762
+    if (!is_resource($r)) return 0;
763
+    list($c) = mysql_fetch_array($r, MYSQL_NUM);
764
+    mysql_free_result($r);
765
+    return $c;
768 766
 }
769 767
 
770 768
 // Bien specifier le serveur auquel on s'adresse,
@@ -777,10 +775,10 @@  discard block
 block discarded – undo
777 775
  * @return string
778 776
  */
779 777
 function spip_mysql_error($query='', $serveur='',$requeter=true) {
780
-	$link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
781
-	$s = $link ? mysql_error($link) : mysql_error();
782
-	if ($s) spip_log("$s - $query", 'mysql.'._LOG_ERREUR);
783
-	return $s;
778
+    $link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
779
+    $s = $link ? mysql_error($link) : mysql_error();
780
+    if ($s) spip_log("$s - $query", 'mysql.'._LOG_ERREUR);
781
+    return $s;
784 782
 }
785 783
 
786 784
 // A transposer dans les portages
@@ -791,14 +789,14 @@  discard block
 block discarded – undo
791 789
  * @return int
792 790
  */
793 791
 function spip_mysql_errno($serveur='',$requeter=true) {
794
-	$link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
795
-	$s = $link ? mysql_errno($link) : mysql_errno();
796
-	// 2006 MySQL server has gone away
797
-	// 2013 Lost connection to MySQL server during query
798
-	if (in_array($s, array(2006,2013)))
799
-		define('spip_interdire_cache', true);
800
-	if ($s) spip_log("Erreur mysql $s", _LOG_ERREUR);
801
-	return $s;
792
+    $link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
793
+    $s = $link ? mysql_errno($link) : mysql_errno();
794
+    // 2006 MySQL server has gone away
795
+    // 2013 Lost connection to MySQL server during query
796
+    if (in_array($s, array(2006,2013)))
797
+        define('spip_interdire_cache', true);
798
+    if ($s) spip_log("Erreur mysql $s", _LOG_ERREUR);
799
+    return $s;
802 800
 }
803 801
 
804 802
 // Interface de abstract_sql
@@ -810,7 +808,7 @@  discard block
 block discarded – undo
810 808
  * @return int
811 809
  */
812 810
 function spip_mysql_count($r, $serveur='',$requeter=true) {
813
-	if ($r)	return mysql_num_rows($r);
811
+    if ($r)	return mysql_num_rows($r);
814 812
 }
815 813
 
816 814
 
@@ -822,7 +820,7 @@  discard block
 block discarded – undo
822 820
  * @return bool
823 821
  */
824 822
 function spip_mysql_free($r, $serveur='',$requeter=true) {
825
-	return (is_resource($r)?mysql_free_result($r):false);
823
+    return (is_resource($r)?mysql_free_result($r):false);
826 824
 }
827 825
 
828 826
 // http://doc.spip.org/@spip_mysql_insert
@@ -837,32 +835,32 @@  discard block
 block discarded – undo
837 835
  */
838 836
 function spip_mysql_insert($table, $champs, $valeurs, $desc='', $serveur='',$requeter=true) {
839 837
 
840
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
841
-	$prefixe = $connexion['prefixe'];
842
-	$link = $connexion['link'];
843
-	$db = $connexion['db'];
838
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
839
+    $prefixe = $connexion['prefixe'];
840
+    $link = $connexion['link'];
841
+    $db = $connexion['db'];
844 842
 
845
-	if ($prefixe) $table = preg_replace('/^spip/', $prefixe, $table);
843
+    if ($prefixe) $table = preg_replace('/^spip/', $prefixe, $table);
846 844
 	
847
-	$query ="INSERT INTO $table $champs VALUES $valeurs";
848
-	if (!$requeter) return $query;
845
+    $query ="INSERT INTO $table $champs VALUES $valeurs";
846
+    if (!$requeter) return $query;
849 847
 	
850
-	if (isset($_GET['var_profile'])) {
851
-		include_spip('public/tracer');
852
-		$t = trace_query_start();
853
-	} else $t = 0 ;
854
-
855
-	$connexion['last'] = $query;
856
-	#spip_log($query, 'mysql.'._LOG_DEBUG);
857
-	if (mysql_query($query, $link))
858
-		$r = mysql_insert_id($link);
859
-	else {
860
-	  if ($e = spip_mysql_errno($serveur))	// Log de l'erreur eventuelle
861
-		$e .= spip_mysql_error($query, $serveur); // et du fautif
862
-	}
863
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
864
-
865
-	// return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
848
+    if (isset($_GET['var_profile'])) {
849
+        include_spip('public/tracer');
850
+        $t = trace_query_start();
851
+    } else $t = 0 ;
852
+
853
+    $connexion['last'] = $query;
854
+    #spip_log($query, 'mysql.'._LOG_DEBUG);
855
+    if (mysql_query($query, $link))
856
+        $r = mysql_insert_id($link);
857
+    else {
858
+        if ($e = spip_mysql_errno($serveur))	// Log de l'erreur eventuelle
859
+        $e .= spip_mysql_error($query, $serveur); // et du fautif
860
+    }
861
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
862
+
863
+    // return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
866 864
 }
867 865
 
868 866
 // http://doc.spip.org/@spip_mysql_insertq
@@ -876,15 +874,15 @@  discard block
 block discarded – undo
876 874
  */
877 875
 function spip_mysql_insertq($table, $couples=array(), $desc=array(), $serveur='',$requeter=true) {
878 876
 
879
-	if (!$desc) $desc = description_table($table, $serveur);
880
-	if (!$desc) $couples = array();
881
-	$fields =  isset($desc['field'])?$desc['field']:array();
877
+    if (!$desc) $desc = description_table($table, $serveur);
878
+    if (!$desc) $couples = array();
879
+    $fields =  isset($desc['field'])?$desc['field']:array();
882 880
 
883
-	foreach ($couples as $champ => $val) {
884
-		$couples[$champ]= spip_mysql_cite($val, $fields[$champ]);
885
-	}
881
+    foreach ($couples as $champ => $val) {
882
+        $couples[$champ]= spip_mysql_cite($val, $fields[$champ]);
883
+    }
886 884
 
887
-	return spip_mysql_insert($table, "(".join(',',array_keys($couples)).")", "(".join(',', $couples).")", $desc, $serveur, $requeter);
885
+    return spip_mysql_insert($table, "(".join(',',array_keys($couples)).")", "(".join(',', $couples).")", $desc, $serveur, $requeter);
888 886
 }
889 887
 
890 888
 
@@ -899,29 +897,29 @@  discard block
 block discarded – undo
899 897
  */
900 898
 function spip_mysql_insertq_multi($table, $tab_couples=array(), $desc=array(), $serveur='',$requeter=true) {
901 899
 
902
-	if (!$desc) $desc = description_table($table, $serveur);
903
-	if (!$desc) $tab_couples = array();
904
-	$fields =  isset($desc['field'])?$desc['field']:array();
900
+    if (!$desc) $desc = description_table($table, $serveur);
901
+    if (!$desc) $tab_couples = array();
902
+    $fields =  isset($desc['field'])?$desc['field']:array();
905 903
 	
906
-	$cles = "(" . join(',',array_keys(reset($tab_couples))) . ')';
907
-	$valeurs = array();
908
-	$r = false;
909
-
910
-	// Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
911
-	foreach ($tab_couples as $couples) {
912
-		foreach ($couples as $champ => $val){
913
-			$couples[$champ]= spip_mysql_cite($val, $fields[$champ]);
914
-		}
915
-		$valeurs[] = '(' .join(',', $couples) . ')';
916
-		if (count($valeurs)>=100){
917
-			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
918
-			$valeurs = array();
919
-		}
920
-	}
921
-	if (count($valeurs))
922
-		$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
923
-
924
-	return $r; // dans le cas d'une table auto_increment, le dernier insert_id
904
+    $cles = "(" . join(',',array_keys(reset($tab_couples))) . ')';
905
+    $valeurs = array();
906
+    $r = false;
907
+
908
+    // Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
909
+    foreach ($tab_couples as $couples) {
910
+        foreach ($couples as $champ => $val){
911
+            $couples[$champ]= spip_mysql_cite($val, $fields[$champ]);
912
+        }
913
+        $valeurs[] = '(' .join(',', $couples) . ')';
914
+        if (count($valeurs)>=100){
915
+            $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
916
+            $valeurs = array();
917
+        }
918
+    }
919
+    if (count($valeurs))
920
+        $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
921
+
922
+    return $r; // dans le cas d'une table auto_increment, le dernier insert_id
925 923
 }
926 924
 
927 925
 // http://doc.spip.org/@spip_mysql_update
@@ -935,15 +933,15 @@  discard block
 block discarded – undo
935 933
  * @return array|null|resource|string
936 934
  */
937 935
 function spip_mysql_update($table, $champs, $where='', $desc='', $serveur='',$requeter=true) {
938
-	$set = array();
939
-	foreach ($champs as $champ => $val)
940
-		$set[] = $champ . "=$val";
941
-	if (!empty($set))
942
-		return spip_mysql_query(
943
-			  calculer_mysql_expression('UPDATE', $table, ',')
944
-			. calculer_mysql_expression('SET', $set, ',')
945
-			. calculer_mysql_expression('WHERE', $where), 
946
-			$serveur, $requeter);
936
+    $set = array();
937
+    foreach ($champs as $champ => $val)
938
+        $set[] = $champ . "=$val";
939
+    if (!empty($set))
940
+        return spip_mysql_query(
941
+                calculer_mysql_expression('UPDATE', $table, ',')
942
+            . calculer_mysql_expression('SET', $set, ',')
943
+            . calculer_mysql_expression('WHERE', $where), 
944
+            $serveur, $requeter);
947 945
 }
948 946
 
949 947
 // idem, mais les valeurs sont des constantes a mettre entre apostrophes
@@ -960,18 +958,18 @@  discard block
 block discarded – undo
960 958
  */
961 959
 function spip_mysql_updateq($table, $champs, $where='', $desc=array(), $serveur='',$requeter=true) {
962 960
 
963
-	if (!$champs) return;
964
-	if (!$desc) $desc = description_table($table, $serveur);
965
-	if (!$desc) $champs = array(); else $fields =  $desc['field'];
966
-	$set = array();
967
-	foreach ($champs as $champ => $val) {
968
-		$set[] = $champ . '=' . spip_mysql_cite($val, $fields[$champ]);
969
-	}
970
-	return spip_mysql_query(
971
-			  calculer_mysql_expression('UPDATE', $table, ',')
972
-			. calculer_mysql_expression('SET', $set, ',')
973
-			. calculer_mysql_expression('WHERE', $where),
974
-			$serveur, $requeter);
961
+    if (!$champs) return;
962
+    if (!$desc) $desc = description_table($table, $serveur);
963
+    if (!$desc) $champs = array(); else $fields =  $desc['field'];
964
+    $set = array();
965
+    foreach ($champs as $champ => $val) {
966
+        $set[] = $champ . '=' . spip_mysql_cite($val, $fields[$champ]);
967
+    }
968
+    return spip_mysql_query(
969
+                calculer_mysql_expression('UPDATE', $table, ',')
970
+            . calculer_mysql_expression('SET', $set, ',')
971
+            . calculer_mysql_expression('WHERE', $where),
972
+            $serveur, $requeter);
975 973
 }
976 974
 
977 975
 // http://doc.spip.org/@spip_mysql_delete
@@ -983,18 +981,18 @@  discard block
 block discarded – undo
983 981
  * @return array|bool|int|null|resource|string
984 982
  */
985 983
 function spip_mysql_delete($table, $where='', $serveur='',$requeter=true) {
986
-	$res = spip_mysql_query(
987
-			  calculer_mysql_expression('DELETE FROM', $table, ',')
988
-			. calculer_mysql_expression('WHERE', $where),
989
-			$serveur, $requeter);
990
-	if (!$requeter) return $res;
991
-	if ($res){
992
-		$connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
993
-		$link = $connexion['link'];
994
-		return $link ? mysql_affected_rows($link) : mysql_affected_rows();
995
-	}
996
-	else
997
-		return false;
984
+    $res = spip_mysql_query(
985
+                calculer_mysql_expression('DELETE FROM', $table, ',')
986
+            . calculer_mysql_expression('WHERE', $where),
987
+            $serveur, $requeter);
988
+    if (!$requeter) return $res;
989
+    if ($res){
990
+        $connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
991
+        $link = $connexion['link'];
992
+        return $link ? mysql_affected_rows($link) : mysql_affected_rows();
993
+    }
994
+    else
995
+        return false;
998 996
 }
999 997
 
1000 998
 // http://doc.spip.org/@spip_mysql_replace
@@ -1007,7 +1005,7 @@  discard block
 block discarded – undo
1007 1005
  * @return array|null|resource|string
1008 1006
  */
1009 1007
 function spip_mysql_replace($table, $couples, $desc=array(), $serveur='',$requeter=true) {
1010
-	return spip_mysql_query("REPLACE $table (" . join(',',array_keys($couples)) . ') VALUES (' .join(',',array_map('_q', $couples)) . ')', $serveur, $requeter);
1008
+    return spip_mysql_query("REPLACE $table (" . join(',',array_keys($couples)) . ') VALUES (' .join(',',array_map('_q', $couples)) . ')', $serveur, $requeter);
1011 1009
 }
1012 1010
 
1013 1011
 
@@ -1021,19 +1019,18 @@  discard block
 block discarded – undo
1021 1019
  * @return array|null|resource|string
1022 1020
  */
1023 1021
 function spip_mysql_replace_multi($table, $tab_couples, $desc=array(), $serveur='',$requeter=true) {
1024
-	$cles = "(" . join(',',array_keys($tab_couples[0])). ')';
1025
-	$valeurs = array();
1026
-	foreach ($tab_couples as $couples) {
1027
-		$valeurs[] = '(' .join(',',array_map('_q', $couples)) . ')';
1028
-	}
1029
-	$valeurs = implode(', ',$valeurs);
1030
-	return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1022
+    $cles = "(" . join(',',array_keys($tab_couples[0])). ')';
1023
+    $valeurs = array();
1024
+    foreach ($tab_couples as $couples) {
1025
+        $valeurs[] = '(' .join(',',array_map('_q', $couples)) . ')';
1026
+    }
1027
+    $valeurs = implode(', ',$valeurs);
1028
+    return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1031 1029
 }
1032 1030
 
1033 1031
 
1034 1032
 // http://doc.spip.org/@spip_mysql_multi
1035 1033
 /**
1036
-
1037 1034
  * @param $objet
1038 1035
  * @param $lang
1039 1036
  * @return string
@@ -1041,32 +1038,32 @@  discard block
 block discarded – undo
1041 1038
  */
1042 1039
 
1043 1040
 function spip_mysql_multi ($objet, $lang) {
1044
-	$lengthlang = strlen("[$lang]");
1045
-	$posmulti = "INSTR(".$objet.", '<multi>')";
1046
-	$posfinmulti = "INSTR(".$objet.", '</multi>')";
1047
-	$debutchaine = "LEFT(".$objet.", $posmulti-1)";
1048
-	$finchaine = "RIGHT(".$objet.", CHAR_LENGTH(".$objet.") -(7+$posfinmulti))";
1049
-	$chainemulti = "TRIM(SUBSTRING(".$objet.", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1050
-	$poslang = "INSTR($chainemulti,'[".$lang."]')";
1051
-	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1052
-	$chainelang = "TRIM(SUBSTRING(".$objet.", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1053
-	$posfinlang = "INSTR(".$chainelang.", '[')";
1054
-	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1055
-	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1056
-	$retour = "(TRIM(IF($posmulti = 0 , ".
1057
-		"     TRIM(".$objet."), ".
1058
-		"     CONCAT( ".
1059
-		"          $debutchaine, ".
1060
-		"          IF( ".
1061
-		"               $poslang = 0, ".
1062
-		"                     $chainemulti, ".
1063
-		"               $chainelang".
1064
-		"          ), ". 
1065
-		"          $finchaine".
1066
-		"     ) ".
1067
-		"))) AS multi";
1068
-
1069
-	return $retour;
1041
+    $lengthlang = strlen("[$lang]");
1042
+    $posmulti = "INSTR(".$objet.", '<multi>')";
1043
+    $posfinmulti = "INSTR(".$objet.", '</multi>')";
1044
+    $debutchaine = "LEFT(".$objet.", $posmulti-1)";
1045
+    $finchaine = "RIGHT(".$objet.", CHAR_LENGTH(".$objet.") -(7+$posfinmulti))";
1046
+    $chainemulti = "TRIM(SUBSTRING(".$objet.", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1047
+    $poslang = "INSTR($chainemulti,'[".$lang."]')";
1048
+    $poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1049
+    $chainelang = "TRIM(SUBSTRING(".$objet.", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1050
+    $posfinlang = "INSTR(".$chainelang.", '[')";
1051
+    $chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1052
+    //$chainelang = "LEFT($chainelang,$posfinlang-1)";
1053
+    $retour = "(TRIM(IF($posmulti = 0 , ".
1054
+        "     TRIM(".$objet."), ".
1055
+        "     CONCAT( ".
1056
+        "          $debutchaine, ".
1057
+        "          IF( ".
1058
+        "               $poslang = 0, ".
1059
+        "                     $chainemulti, ".
1060
+        "               $chainelang".
1061
+        "          ), ". 
1062
+        "          $finchaine".
1063
+        "     ) ".
1064
+        "))) AS multi";
1065
+
1066
+    return $retour;
1070 1067
 }
1071 1068
 
1072 1069
 // http://doc.spip.org/@spip_mysql_hex
@@ -1076,7 +1073,7 @@  discard block
 block discarded – undo
1076 1073
  */
1077 1074
 function spip_mysql_hex($v)
1078 1075
 {
1079
-	return "0x" . $v;
1076
+    return "0x" . $v;
1080 1077
 }
1081 1078
 
1082 1079
 /**
@@ -1085,18 +1082,18 @@  discard block
 block discarded – undo
1085 1082
  * @return array|int|string
1086 1083
  */
1087 1084
 function spip_mysql_quote($v, $type='') {
1088
-	if ($type) {
1089
-		if (!is_array($v))
1090
-			return spip_mysql_cite($v,$type);
1091
-		// si c'est un tableau, le parcourir en propageant le type
1092
-		foreach($v as $k=>$r)
1093
-			$v[$k] = spip_mysql_quote($r, $type);
1094
-		return $v;
1095
-	}
1096
-	// si on ne connait pas le type, s'en remettre a _q :
1097
-	// on ne fera pas mieux
1098
-	else
1099
-		return _q($v);
1085
+    if ($type) {
1086
+        if (!is_array($v))
1087
+            return spip_mysql_cite($v,$type);
1088
+        // si c'est un tableau, le parcourir en propageant le type
1089
+        foreach($v as $k=>$r)
1090
+            $v[$k] = spip_mysql_quote($r, $type);
1091
+        return $v;
1092
+    }
1093
+    // si on ne connait pas le type, s'en remettre a _q :
1094
+    // on ne fera pas mieux
1095
+    else
1096
+        return _q($v);
1100 1097
 }
1101 1098
 
1102 1099
 /**
@@ -1107,17 +1104,17 @@  discard block
 block discarded – undo
1107 1104
  */
1108 1105
 function spip_mysql_date_proche($champ, $interval, $unite)
1109 1106
 {
1110
-	return '('
1111
-	. $champ
1107
+    return '('
1108
+    . $champ
1112 1109
         . (($interval <= 0) ? '>' : '<')
1113 1110
         . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1114
-	. '('
1115
-	. sql_quote(date('Y-m-d H:i:s'))
1116
-	. ', INTERVAL '
1117
-	. (($interval > 0) ? $interval : (0-$interval))
1118
-	. ' '
1119
-	. $unite
1120
-	. '))';
1111
+    . '('
1112
+    . sql_quote(date('Y-m-d H:i:s'))
1113
+    . ', INTERVAL '
1114
+    . (($interval > 0) ? $interval : (0-$interval))
1115
+    . ' '
1116
+    . $unite
1117
+    . '))';
1121 1118
 }
1122 1119
 
1123 1120
 //
@@ -1133,21 +1130,21 @@  discard block
 block discarded – undo
1133 1130
  * @return string
1134 1131
  */
1135 1132
 function spip_mysql_in($val, $valeurs, $not='', $serveur='',$requeter=true) {
1136
-	$n = $i = 0;
1137
-	$in_sql ="";
1138
-	while ($n = strpos($valeurs, ',', $n+1)) {
1139
-	  if ((++$i) >= 255) {
1140
-			$in_sql .= "($val $not IN (" .
1141
-			  substr($valeurs, 0, $n) .
1142
-			  "))\n" .
1143
-			  ($not ? "AND\t" : "OR\t");
1144
-			$valeurs = substr($valeurs, $n+1);
1145
-			$i = $n = 0;
1146
-		}
1147
-	}
1148
-	$in_sql .= "($val $not IN ($valeurs))";
1149
-
1150
-	return "($in_sql)";
1133
+    $n = $i = 0;
1134
+    $in_sql ="";
1135
+    while ($n = strpos($valeurs, ',', $n+1)) {
1136
+        if ((++$i) >= 255) {
1137
+            $in_sql .= "($val $not IN (" .
1138
+                substr($valeurs, 0, $n) .
1139
+                "))\n" .
1140
+                ($not ? "AND\t" : "OR\t");
1141
+            $valeurs = substr($valeurs, $n+1);
1142
+            $i = $n = 0;
1143
+        }
1144
+    }
1145
+    $in_sql .= "($val $not IN ($valeurs))";
1146
+
1147
+    return "($in_sql)";
1151 1148
 }
1152 1149
 
1153 1150
 // pour compatibilite. Ne plus utiliser.
@@ -1159,11 +1156,11 @@  discard block
 block discarded – undo
1159 1156
  * @return string
1160 1157
  */
1161 1158
 function calcul_mysql_in($val, $valeurs, $not='') {
1162
-	if (is_array($valeurs))
1163
-		$valeurs = join(',', array_map('_q', $valeurs));
1164
-	elseif ($valeurs[0]===',') $valeurs = substr($valeurs,1);
1165
-	if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1');
1166
-	return spip_mysql_in($val, $valeurs, $not);
1159
+    if (is_array($valeurs))
1160
+        $valeurs = join(',', array_map('_q', $valeurs));
1161
+    elseif ($valeurs[0]===',') $valeurs = substr($valeurs,1);
1162
+    if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1');
1163
+    return spip_mysql_in($val, $valeurs, $not);
1167 1164
 }
1168 1165
 
1169 1166
 // http://doc.spip.org/@spip_mysql_cite
@@ -1173,19 +1170,19 @@  discard block
 block discarded – undo
1173 1170
  * @return int|string
1174 1171
  */
1175 1172
 function spip_mysql_cite($v, $type) {
1176
-	if(is_null($v)
1177
-		AND stripos($type,"NOT NULL")===false) return 'NULL'; // null php se traduit en NULL SQL
1178
-	if (sql_test_date($type) AND preg_match('/^\w+\(/', $v))
1179
-		return $v;
1180
-	if (sql_test_int($type)) {
1181
-		if (is_numeric($v) OR (ctype_xdigit(substr($v,2))
1182
-			  AND $v[0]=='0' AND $v[1]=='x'))
1183
-			return $v;
1184
-		// si pas numerique, forcer le intval
1185
-		else
1186
-			return intval($v);
1187
-	}
1188
-	return  ("'" . addslashes($v) . "'");
1173
+    if(is_null($v)
1174
+        AND stripos($type,"NOT NULL")===false) return 'NULL'; // null php se traduit en NULL SQL
1175
+    if (sql_test_date($type) AND preg_match('/^\w+\(/', $v))
1176
+        return $v;
1177
+    if (sql_test_int($type)) {
1178
+        if (is_numeric($v) OR (ctype_xdigit(substr($v,2))
1179
+              AND $v[0]=='0' AND $v[1]=='x'))
1180
+            return $v;
1181
+        // si pas numerique, forcer le intval
1182
+        else
1183
+            return intval($v);
1184
+    }
1185
+    return  ("'" . addslashes($v) . "'");
1189 1186
 }
1190 1187
 
1191 1188
 // Ces deux fonctions n'ont pas d'equivalent exact PostGres
@@ -1203,17 +1200,17 @@  discard block
 block discarded – undo
1203 1200
  */
1204 1201
 function spip_get_lock($nom, $timeout = 0) {
1205 1202
 
1206
-	define('_LOCK_TIME', intval(time()/3600-316982));
1203
+    define('_LOCK_TIME', intval(time()/3600-316982));
1207 1204
 
1208
-	$connexion = &$GLOBALS['connexions'][0];
1209
-	$bd = $connexion['db'];
1210
-	$prefixe = $connexion['prefixe'];
1211
-	$nom = "$bd:$prefixe:$nom" .  _LOCK_TIME;
1205
+    $connexion = &$GLOBALS['connexions'][0];
1206
+    $bd = $connexion['db'];
1207
+    $prefixe = $connexion['prefixe'];
1208
+    $nom = "$bd:$prefixe:$nom" .  _LOCK_TIME;
1212 1209
 
1213
-	$connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1214
-	$q = @sql_fetch(mysql_query($q));
1215
-	if (!$q) spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1216
-	return $q['n'];
1210
+    $connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1211
+    $q = @sql_fetch(mysql_query($q));
1212
+    if (!$q) spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1213
+    return $q['n'];
1217 1214
 }
1218 1215
 
1219 1216
 // http://doc.spip.org/@spip_release_lock
@@ -1222,13 +1219,13 @@  discard block
 block discarded – undo
1222 1219
  */
1223 1220
 function spip_release_lock($nom) {
1224 1221
 
1225
-	$connexion = &$GLOBALS['connexions'][0];
1226
-	$bd = $connexion['db'];
1227
-	$prefixe = $connexion['prefixe'];
1228
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1222
+    $connexion = &$GLOBALS['connexions'][0];
1223
+    $bd = $connexion['db'];
1224
+    $prefixe = $connexion['prefixe'];
1225
+    $nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1229 1226
 
1230
-	$connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1231
-	@mysql_query($q);
1227
+    $connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1228
+    @mysql_query($q);
1232 1229
 }
1233 1230
 
1234 1231
 // Renvoie false si on n'a pas les fonctions mysql (pour l'install)
@@ -1237,8 +1234,8 @@  discard block
 block discarded – undo
1237 1234
  * @return bool
1238 1235
  */
1239 1236
 function spip_versions_mysql() {
1240
-	charger_php_extension('mysql');
1241
-	return function_exists('mysql_query');
1237
+    charger_php_extension('mysql');
1238
+    return function_exists('mysql_query');
1242 1239
 }
1243 1240
 
1244 1241
 // Tester si mysql ne veut pas du nom de la base dans les requetes
@@ -1250,18 +1247,18 @@  discard block
 block discarded – undo
1250 1247
  */
1251 1248
 function test_rappel_nom_base_mysql($server_db)
1252 1249
 {
1253
-	$GLOBALS['mysql_rappel_nom_base'] = true;
1254
-	sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1255
-	$ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1256
-
1257
-	if ($ok) {
1258
-		sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1259
-		return '';
1260
-	} else {
1261
-		$GLOBALS['mysql_rappel_nom_base'] = false;
1262
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; ".
1263
-		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1264
-	}
1250
+    $GLOBALS['mysql_rappel_nom_base'] = true;
1251
+    sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1252
+    $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1253
+
1254
+    if ($ok) {
1255
+        sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1256
+        return '';
1257
+    } else {
1258
+        $GLOBALS['mysql_rappel_nom_base'] = false;
1259
+        return "\$GLOBALS['mysql_rappel_nom_base'] = false; ".
1260
+        "/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1261
+    }
1265 1262
 }
1266 1263
 
1267 1264
 // http://doc.spip.org/@test_sql_mode_mysql
@@ -1270,13 +1267,13 @@  discard block
 block discarded – undo
1270 1267
  * @return string
1271 1268
  */
1272 1269
 function test_sql_mode_mysql($server_db){
1273
-	$res = sql_select("version() as v",'','','','','','',$server_db);
1274
-	$row = sql_fetch($res,$server_db);
1275
-	if (version_compare($row['v'],'5.0.0','>=')){
1276
-		define('_MYSQL_SET_SQL_MODE',true);
1277
-		return "define('_MYSQL_SET_SQL_MODE',true);\n";
1278
-	}
1279
-	return '';
1270
+    $res = sql_select("version() as v",'','','','','','',$server_db);
1271
+    $row = sql_fetch($res,$server_db);
1272
+    if (version_compare($row['v'],'5.0.0','>=')){
1273
+        define('_MYSQL_SET_SQL_MODE',true);
1274
+        return "define('_MYSQL_SET_SQL_MODE',true);\n";
1275
+    }
1276
+    return '';
1280 1277
 }
1281 1278
 
1282 1279
 ?>
Please login to merge, or discard this patch.
Spacing   +163 added lines, -163 removed lines patch added patch discarded remove patch
@@ -32,12 +32,12 @@  discard block
 block discarded – undo
32 32
  * @return array|bool
33 33
  */
34 34
 
35
-function req_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='') {
35
+function req_mysql_dist($host, $port, $login, $pass, $db = '', $prefixe = '') {
36 36
 	if (!charger_php_extension('mysql')) return false;
37 37
 	if ($port > 0) $host = "$host:$port";
38 38
 	$link = @mysql_connect($host, $login, $pass, true);
39 39
 	if (!$link) {
40
-		spip_log('Echec mysql_connect. Erreur : ' . mysql_error(),'mysql.'._LOG_HS);
40
+		spip_log('Echec mysql_connect. Erreur : '.mysql_error(), 'mysql.'._LOG_HS);
41 41
 		return false;
42 42
 	}
43 43
 	$last = '';
@@ -51,7 +51,7 @@  discard block
 block discarded – undo
51 51
 		  )
52 52
 			mysql_query($last = "set sql_mode=''");
53 53
 	}
54
-	spip_log("Connexion vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle sur $link" : 'impossible'), _LOG_DEBUG);
54
+	spip_log("Connexion vers $host, base $db, prefixe $prefixe ".($ok ? "operationnelle sur $link" : 'impossible'), _LOG_DEBUG);
55 55
 
56 56
 	return !$ok ? false : array(
57 57
 		'db' => $db,
@@ -102,14 +102,14 @@  discard block
 block discarded – undo
102 102
 
103 103
   // association de chaque nom http d'un charset aux couples MySQL 
104 104
 		'charsets' => array(
105
-'cp1250'=>array('charset'=>'cp1250','collation'=>'cp1250_general_ci'),
106
-'cp1251'=>array('charset'=>'cp1251','collation'=>'cp1251_general_ci'),
107
-'cp1256'=>array('charset'=>'cp1256','collation'=>'cp1256_general_ci'),
108
-'iso-8859-1'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
105
+'cp1250'=>array('charset'=>'cp1250', 'collation'=>'cp1250_general_ci'),
106
+'cp1251'=>array('charset'=>'cp1251', 'collation'=>'cp1251_general_ci'),
107
+'cp1256'=>array('charset'=>'cp1256', 'collation'=>'cp1256_general_ci'),
108
+'iso-8859-1'=>array('charset'=>'latin1', 'collation'=>'latin1_swedish_ci'),
109 109
 //'iso-8859-6'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
110
-'iso-8859-9'=>array('charset'=>'latin5','collation'=>'latin5_turkish_ci'),
110
+'iso-8859-9'=>array('charset'=>'latin5', 'collation'=>'latin5_turkish_ci'),
111 111
 //'iso-8859-15'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
112
-'utf-8'=>array('charset'=>'utf8','collation'=>'utf8_general_ci'))
112
+'utf-8'=>array('charset'=>'utf8', 'collation'=>'utf8_general_ci'))
113 113
 		);
114 114
 
115 115
 
@@ -121,7 +121,7 @@  discard block
 block discarded – undo
121 121
  * @param bool $requeter  inutilisé
122 122
  * @return resource       Ressource de résultats pour fetch()
123 123
  */
124
-function spip_mysql_set_charset($charset, $serveur='',$requeter=true){
124
+function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) {
125 125
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
126 126
 	spip_log("changement de charset sql : "."SET NAMES "._q($charset), _LOG_DEBUG);
127 127
 	return mysql_query($connexion['last'] = "SET NAMES "._q($charset));
@@ -136,7 +136,7 @@  discard block
 block discarded – undo
136 136
  * @param bool $requeter        inutilisé
137 137
  * @return array                Description du charset (son nom est dans 'charset')
138 138
  */
139
-function spip_mysql_get_charset($charset=array(), $serveur='',$requeter=true){
139
+function spip_mysql_get_charset($charset = array(), $serveur = '', $requeter = true) {
140 140
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
141 141
 	$connexion['last'] = $c = "SHOW CHARACTER SET"
142 142
 	. (!$charset ? '' : (" LIKE "._q($charset['charset'])));
@@ -146,7 +146,7 @@  discard block
 block discarded – undo
146 146
 
147 147
 // obsolete, ne plus utiliser
148 148
 // http://doc.spip.org/@spip_query_db
149
-function spip_query_db($query, $serveur='',$requeter=true) {
149
+function spip_query_db($query, $serveur = '', $requeter = true) {
150 150
 	return spip_mysql_query($query, $serveur, $requeter);
151 151
 }
152 152
 
@@ -161,7 +161,7 @@  discard block
 block discarded – undo
161 161
  * @return array|null|resource|string
162 162
  *
163 163
  */
164
-function spip_mysql_query($query, $serveur='',$requeter=true) {
164
+function spip_mysql_query($query, $serveur = '', $requeter = true) {
165 165
 
166 166
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
167 167
 	$prefixe = $connexion['prefixe'];
@@ -176,19 +176,19 @@  discard block
 block discarded – undo
176 176
 	if (isset($_GET['var_profile'])) {
177 177
 		include_spip('public/tracer');
178 178
 		$t = trace_query_start();
179
-	} else $t = 0 ;
179
+	} else $t = 0;
180 180
  
181 181
 	$connexion['last'] = $query;
182 182
 
183 183
 	// ajouter un debug utile dans log/mysql-slow.log ?
184 184
 	$debug = '';
185
-	if (defined('_DEBUG_SLOW_QUERIES') AND _DEBUG_SLOW_QUERIES){
186
-		if(isset($GLOBALS['debug']['aucasou'])){
185
+	if (defined('_DEBUG_SLOW_QUERIES') AND _DEBUG_SLOW_QUERIES) {
186
+		if (isset($GLOBALS['debug']['aucasou'])) {
187 187
 			list(,$id,, $infos) = $GLOBALS['debug']['aucasou'];
188
-			$debug .= "BOUCLE$id @ ".$infos[0] ." | ";
188
+			$debug .= "BOUCLE$id @ ".$infos[0]." | ";
189 189
 		}
190 190
 		$debug .= $_SERVER['REQUEST_URI'].' + '.$GLOBALS['ip'];
191
-		$debug = ' /* '. mysql_real_escape_string(str_replace('*/','@/',$debug)). ' */';
191
+		$debug = ' /* '.mysql_real_escape_string(str_replace('*/', '@/', $debug)).' */';
192 192
 	}
193 193
 
194 194
 	$r = $link ? mysql_query($query.$debug, $link) : mysql_query($query.$debug);
@@ -205,11 +205,11 @@  discard block
 block discarded – undo
205 205
  * @param bool $requeter
206 206
  * @return array|null|resource|string
207 207
  */
208
-function spip_mysql_alter($query, $serveur='',$requeter=true){
208
+function spip_mysql_alter($query, $serveur = '', $requeter = true) {
209 209
 	// ici on supprime les ` entourant le nom de table pour permettre
210 210
 	// la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
211 211
 	// d'utiliser ceux-ci, copie-colle de phpmyadmin
212
-	$query = preg_replace(",^TABLE\s*`([^`]*)`,i","TABLE \\1",$query);
212
+	$query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
213 213
 	return spip_mysql_query("ALTER ".$query, $serveur, $requeter); # i.e. que PG se debrouille
214 214
 }
215 215
 
@@ -220,8 +220,8 @@  discard block
 block discarded – undo
220 220
  * @param bool $requeter
221 221
  * @return bool
222 222
  */
223
-function spip_mysql_optimize($table, $serveur='',$requeter=true){
224
-	spip_mysql_query("OPTIMIZE TABLE ". $table);
223
+function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
224
+	spip_mysql_query("OPTIMIZE TABLE ".$table);
225 225
 	return true;
226 226
 }
227 227
 
@@ -232,14 +232,14 @@  discard block
 block discarded – undo
232 232
  * @param bool $requeter
233 233
  * @return array
234 234
  */
235
-function spip_mysql_explain($query, $serveur='',$requeter=true){
235
+function spip_mysql_explain($query, $serveur = '', $requeter = true) {
236 236
 	if (strpos(ltrim($query), 'SELECT') !== 0) return array();
237 237
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
238 238
 	$prefixe = $connexion['prefixe'];
239 239
 	$link = $connexion['link'];
240 240
 	$db = $connexion['db'];
241 241
 
242
-	$query = 'EXPLAIN ' . traite_query($query, $db, $prefixe);
242
+	$query = 'EXPLAIN '.traite_query($query, $db, $prefixe);
243 243
 	$r = $link ? mysql_query($query, $link) : mysql_query($query);
244 244
 	return spip_mysql_fetch($r, NULL, $serveur);
245 245
 }
@@ -261,9 +261,9 @@  discard block
 block discarded – undo
261 261
  * @param bool $requeter
262 262
  * @return array|null|resource|string
263 263
  */
264
-function spip_mysql_select($select, $from, $where='',
265
-			   $groupby='', $orderby='', $limit='', $having='',
266
-			   $serveur='',$requeter=true) {
264
+function spip_mysql_select($select, $from, $where = '',
265
+			   $groupby = '', $orderby = '', $limit = '', $having = '',
266
+			   $serveur = '', $requeter = true) {
267 267
 
268 268
 
269 269
 	$from = (!is_array($from) ? $from : spip_mysql_select_as($from));
@@ -273,7 +273,7 @@  discard block
 block discarded – undo
273 273
 		. calculer_mysql_expression('WHERE', $where)
274 274
 		. calculer_mysql_expression('GROUP BY', $groupby, ',')
275 275
 		. calculer_mysql_expression('HAVING', $having)
276
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) :'')
276
+		. ($orderby ? ("\nORDER BY ".spip_mysql_order($orderby)) : '')
277 277
 		. ($limit ? "\nLIMIT $limit" : '');
278 278
 
279 279
 	// renvoyer la requete inerte si demandee
@@ -293,7 +293,7 @@  discard block
 block discarded – undo
293 293
  */
294 294
 function spip_mysql_order($orderby)
295 295
 {
296
-	return (is_array($orderby)) ? join(", ", $orderby) :  $orderby;
296
+	return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
297 297
 }
298 298
 
299 299
 
@@ -305,18 +305,18 @@  discard block
 block discarded – undo
305 305
 function calculer_mysql_where($v)
306 306
 {
307 307
 	if (!is_array($v))
308
-	  return $v ;
308
+	  return $v;
309 309
 
310 310
 	$op = array_shift($v);
311
-	if (!($n=count($v)))
311
+	if (!($n = count($v)))
312 312
 		return $op;
313 313
 	else {
314 314
 		$arg = calculer_mysql_where(array_shift($v));
315
-		if ($n==1) {
315
+		if ($n == 1) {
316 316
 			  return "$op($arg)";
317 317
 		} else {
318 318
 			$arg2 = calculer_mysql_where(array_shift($v));
319
-			if ($n==2) {
319
+			if ($n == 2) {
320 320
 				return "($arg $op $arg2)";
321 321
 			} else return "($arg $op ($arg2) : $v[0])";
322 322
 		}
@@ -330,19 +330,19 @@  discard block
 block discarded – undo
330 330
  * @param string $join
331 331
  * @return string
332 332
  */
333
-function calculer_mysql_expression($expression, $v, $join = 'AND'){
333
+function calculer_mysql_expression($expression, $v, $join = 'AND') {
334 334
 	if (empty($v))
335 335
 		return '';
336 336
 	
337 337
 	$exp = "\n$expression ";
338 338
 	
339 339
 	if (!is_array($v)) {
340
-		return $exp . $v;
340
+		return $exp.$v;
341 341
 	} else {
342 342
 		if (strtoupper($join) === 'AND')
343
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
343
+			return $exp.join("\n\t$join ", array_map('calculer_mysql_where', $v));
344 344
 		else
345
-			return $exp . join($join, $v);
345
+			return $exp.join($join, $v);
346 346
 	}
347 347
 }
348 348
 
@@ -354,24 +354,24 @@  discard block
 block discarded – undo
354 354
 function spip_mysql_select_as($args)
355 355
 {
356 356
 	$res = '';
357
-	foreach($args as $k => $v) {
358
-		if (substr($k,-1)=='@') {
357
+	foreach ($args as $k => $v) {
358
+		if (substr($k, -1) == '@') {
359 359
 			// c'est une jointure qui se refere au from precedent
360 360
 			// pas de virgule
361
-		  $res .= '  ' . $v ;
361
+		  $res .= '  '.$v;
362 362
 		}
363 363
 		else {
364 364
 		  if (!is_numeric($k)) {
365 365
 		  	$p = strpos($v, " ");
366 366
 			if ($p)
367
-			  $v = substr($v,0,$p) . " AS `$k`" . substr($v,$p);
367
+			  $v = substr($v, 0, $p)." AS `$k`".substr($v, $p);
368 368
 			else $v .= " AS `$k`";
369 369
 		  }
370 370
 		      
371
-		  $res .= ', ' . $v ;
371
+		  $res .= ', '.$v;
372 372
 		}
373 373
 	}
374
-	return substr($res,2);
374
+	return substr($res, 2);
375 375
 }
376 376
 
377 377
 //
@@ -387,31 +387,31 @@  discard block
 block discarded – undo
387 387
  * @param string $prefixe
388 388
  * @return array|null|string
389 389
  */
390
-function traite_query($query, $db='', $prefixe='') {
390
+function traite_query($query, $db = '', $prefixe = '') {
391 391
 
392 392
 	if ($GLOBALS['mysql_rappel_nom_base'] AND $db)
393
-		$pref = '`'. $db.'`.';
393
+		$pref = '`'.$db.'`.';
394 394
 	else $pref = '';
395 395
 
396 396
 	if ($prefixe)
397
-		$pref .= $prefixe . "_";
397
+		$pref .= $prefixe."_";
398 398
 
399 399
 	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
400
-		$suite ='';
400
+		$suite = '';
401 401
 	} else {
402 402
 		$suite = strstr($query, $regs[0]);
403 403
 		$query = substr($query, 0, -strlen($suite));
404 404
 		// propager le prefixe en cas de requete imbriquee
405 405
 		// il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
406 406
 		// modifier une requete qui est en fait juste du texte dans un champ
407
-		if (stripos($suite,"SELECT")!==false) {
408
-			list($suite,$textes) = query_echappe_textes($suite);
407
+		if (stripos($suite, "SELECT") !== false) {
408
+			list($suite, $textes) = query_echappe_textes($suite);
409 409
 			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r))
410
-		    $suite = $r[1] . traite_query($r[2], $db, $prefixe);
410
+		    $suite = $r[1].traite_query($r[2], $db, $prefixe);
411 411
 			$suite = query_reinjecte_textes($suite, $textes);
412 412
 		}
413 413
 	}
414
-	$r = preg_replace(_SQL_PREFIXE_TABLE, '\1'.$pref, $query) . $suite;
414
+	$r = preg_replace(_SQL_PREFIXE_TABLE, '\1'.$pref, $query).$suite;
415 415
 
416 416
 	#spip_log("traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
417 417
 	return $r;
@@ -430,7 +430,7 @@  discard block
 block discarded – undo
430 430
 function spip_mysql_selectdb($db) {
431 431
 	$ok = mysql_select_db($db);
432 432
 	if (!$ok)
433
-		spip_log('Echec mysql_selectdb. Erreur : ' . mysql_error(),'mysql.'._LOG_CRITIQUE);
433
+		spip_log('Echec mysql_selectdb. Erreur : '.mysql_error(), 'mysql.'._LOG_CRITIQUE);
434 434
 	return $ok;
435 435
 }
436 436
 
@@ -450,10 +450,10 @@  discard block
 block discarded – undo
450 450
  * @return array
451 451
  * 		Liste de noms de bases de donnees
452 452
 **/
453
-function spip_mysql_listdbs($serveur='',$requeter=true) {
453
+function spip_mysql_listdbs($serveur = '', $requeter = true) {
454 454
 	$dbs = array();
455
-	if ($res = spip_mysql_query("SHOW DATABASES")){
456
-		while($row = mysql_fetch_assoc($res))
455
+	if ($res = spip_mysql_query("SHOW DATABASES")) {
456
+		while ($row = mysql_fetch_assoc($res))
457 457
 			$dbs[] = $row['Database'];
458 458
 	}
459 459
 	return $dbs;
@@ -477,9 +477,9 @@  discard block
 block discarded – undo
477 477
  * @param bool $requeter
478 478
  * @return array|null|resource|string
479 479
  */
480
-function spip_mysql_create($nom, $champs, $cles, $autoinc=false, $temporary=false, $serveur='',$requeter=true) {
480
+function spip_mysql_create($nom, $champs, $cles, $autoinc = false, $temporary = false, $serveur = '', $requeter = true) {
481 481
 
482
-	$query = ''; $keys = ''; $s = ''; $p='';
482
+	$query = ''; $keys = ''; $s = ''; $p = '';
483 483
 
484 484
 	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
485 485
 	// sans les renseigner (laisse le compilo recuperer la description)
@@ -487,11 +487,11 @@  discard block
 block discarded – undo
487 487
 		return;
488 488
 
489 489
 	$res = spip_mysql_query("SELECT version() as v");
490
-	if (($row = mysql_fetch_array($res)) && (version_compare($row['v'],'5.0','>='))) {
490
+	if (($row = mysql_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
491 491
 		spip_mysql_query("SET sql_mode=''", $serveur);
492 492
 	}
493 493
 
494
-	foreach($cles as $k => $v) {
494
+	foreach ($cles as $k => $v) {
495 495
 		$keys .= "$s\n\t\t$k ($v)";
496 496
 		if ($k == "PRIMARY KEY")
497 497
 			$p = $v;
@@ -505,12 +505,12 @@  discard block
 block discarded – undo
505 505
 	if (@$GLOBALS['meta']['charset_collation_sql_base'])
506 506
 		$character_set .= " COLLATE ".$GLOBALS['meta']['charset_collation_sql_base'];
507 507
 
508
-	foreach($champs as $k => $v) {
508
+	foreach ($champs as $k => $v) {
509 509
 		$v = _mysql_remplacements_definitions_table($v);
510
-		if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i',$v,$defs)){
511
-			if (preg_match(',(char|text),i',$defs[1])
512
-				AND !preg_match(',(binary|CHARACTER|COLLATE),i',$v) ){
513
-				$v = $defs[1] . $character_set . ' ' . substr($v,strlen($defs[1]));
510
+		if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
511
+			if (preg_match(',(char|text),i', $defs[1])
512
+				AND !preg_match(',(binary|CHARACTER|COLLATE),i', $v)) {
513
+				$v = $defs[1].$character_set.' '.substr($v, strlen($defs[1]));
514 514
 			}
515 515
 		}
516 516
 
@@ -521,9 +521,9 @@  discard block
 block discarded – undo
521 521
 			);
522 522
 		$s = ",";
523 523
 	}
524
-	$temporary = $temporary ? 'TEMPORARY':'';
525
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")".
526
-	($character_set?" DEFAULT $character_set":"")
524
+	$temporary = $temporary ? 'TEMPORARY' : '';
525
+	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query".($keys ? ",$keys" : '').")".
526
+	($character_set ? " DEFAULT $character_set" : "")
527 527
 	."\n";
528 528
 	return spip_mysql_query($q, $serveur);
529 529
 }
@@ -537,7 +537,7 @@  discard block
 block discarded – undo
537 537
  * @return string
538 538
  * 		Definition SQL adaptee pour MySQL d'un champ de table
539 539
  */
540
-function _mysql_remplacements_definitions_table($query){
540
+function _mysql_remplacements_definitions_table($query) {
541 541
 	// quelques remplacements
542 542
 	$num = "(\s*\([0-9]*\))?";
543 543
 	$enum = "(\s*\([^\)]*\))?";
@@ -556,7 +556,7 @@  discard block
 block discarded – undo
556 556
  * @param bool $requeter
557 557
  * @return array|null|resource|string
558 558
  */
559
-function spip_mysql_create_base($nom, $serveur='',$requeter=true) {
559
+function spip_mysql_create_base($nom, $serveur = '', $requeter = true) {
560 560
   return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
561 561
 }
562 562
 
@@ -569,7 +569,7 @@  discard block
 block discarded – undo
569 569
  * @param bool $requeter
570 570
  * @return array|bool|null|resource|string
571 571
  */
572
-function spip_mysql_create_view($nom, $query_select, $serveur='',$requeter=true) {
572
+function spip_mysql_create_view($nom, $query_select, $serveur = '', $requeter = true) {
573 573
 	if (!$query_select) return false;
574 574
 	// vue deja presente
575 575
 	if (sql_showtable($nom, false, $serveur)) {
@@ -577,7 +577,7 @@  discard block
 block discarded – undo
577 577
 		return false;
578 578
 	}
579 579
 	
580
-	$query = "CREATE VIEW $nom AS ". $query_select;
580
+	$query = "CREATE VIEW $nom AS ".$query_select;
581 581
 	return spip_mysql_query($query, $serveur, $requeter);
582 582
 }
583 583
 
@@ -590,9 +590,9 @@  discard block
 block discarded – undo
590 590
  * @param bool $requeter
591 591
  * @return array|null|resource|string
592 592
  */
593
-function spip_mysql_drop_table($table, $exist='', $serveur='',$requeter=true)
593
+function spip_mysql_drop_table($table, $exist = '', $serveur = '', $requeter = true)
594 594
 {
595
-	if ($exist) $exist =" IF EXISTS";
595
+	if ($exist) $exist = " IF EXISTS";
596 596
 	return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
597 597
 }
598 598
 
@@ -605,8 +605,8 @@  discard block
 block discarded – undo
605 605
  * @param bool $requeter
606 606
  * @return array|null|resource|string
607 607
  */
608
-function spip_mysql_drop_view($view, $exist='', $serveur='',$requeter=true) {
609
-	if ($exist) $exist =" IF EXISTS";
608
+function spip_mysql_drop_view($view, $exist = '', $serveur = '', $requeter = true) {
609
+	if ($exist) $exist = " IF EXISTS";
610 610
 	return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
611 611
 }
612 612
 
@@ -623,9 +623,9 @@  discard block
 block discarded – undo
623 623
  * @return ressource
624 624
  *     Ressource à utiliser avec sql_fetch()
625 625
 **/
626
-function spip_mysql_showbase($match, $serveur='',$requeter=true)
626
+function spip_mysql_showbase($match, $serveur = '', $requeter = true)
627 627
 {
628
-	return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
628
+	return spip_mysql_query("SHOW TABLES LIKE "._q($match), $serveur, $requeter);
629 629
 }
630 630
 
631 631
 // http://doc.spip.org/@spip_mysql_repair
@@ -635,7 +635,7 @@  discard block
 block discarded – undo
635 635
  * @param bool $requeter
636 636
  * @return array|null|resource|string
637 637
  */
638
-function spip_mysql_repair($table, $serveur='',$requeter=true)
638
+function spip_mysql_repair($table, $serveur = '', $requeter = true)
639 639
 {
640 640
 	return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
641 641
 }
@@ -651,14 +651,14 @@  discard block
 block discarded – undo
651 651
  * @param bool $requeter
652 652
  * @return array|null|resource|string
653 653
  */
654
-function spip_mysql_showtable($nom_table, $serveur='',$requeter=true)
654
+function spip_mysql_showtable($nom_table, $serveur = '', $requeter = true)
655 655
 {
656 656
 	$s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
657 657
 	if (!$s) return '';
658 658
 	if (!$requeter) return $s;
659 659
 
660
-	list(,$a) = mysql_fetch_array($s ,MYSQL_NUM);
661
-	if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)){
660
+	list(,$a) = mysql_fetch_array($s, MYSQL_NUM);
661
+	if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
662 662
 		$desc = $r[1];
663 663
 		// extraction d'une KEY éventuelle en prenant garde de ne pas
664 664
 		// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
@@ -670,14 +670,14 @@  discard block
 block discarded – undo
670 670
 		  $namedkeys = "";
671 671
 
672 672
 		$fields = array();
673
-		foreach(preg_split("/,\s*`/",$desc) as $v) {
674
-		  preg_match("/^\s*`?([^`]*)`\s*(.*)/",$v,$r);
673
+		foreach (preg_split("/,\s*`/", $desc) as $v) {
674
+		  preg_match("/^\s*`?([^`]*)`\s*(.*)/", $v, $r);
675 675
 		  $fields[strtolower($r[1])] = $r[2];
676 676
 		}
677 677
 		$keys = array();
678 678
 
679
-		foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
680
-		  if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
679
+		foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
680
+		  if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
681 681
 			$k = str_replace("`", '', trim($r[1]));
682 682
 			$t = strtolower(str_replace("`", '', $r[2]));
683 683
 			if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
@@ -688,28 +688,28 @@  discard block
 block discarded – undo
688 688
 	}
689 689
 
690 690
 	$res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
691
-	if($res) {
691
+	if ($res) {
692 692
 	  $nfields = array();
693 693
 	  $nkeys = array();
694
-	  while($val = spip_mysql_fetch($res)) {
694
+	  while ($val = spip_mysql_fetch($res)) {
695 695
 		$nfields[$val["Field"]] = $val['Type'];
696
-		if($val['Null']=='NO') {
696
+		if ($val['Null'] == 'NO') {
697 697
 		  $nfields[$val["Field"]] .= ' NOT NULL'; 
698 698
 		}
699
-		if($val['Default'] === '0' || $val['Default']) {
700
-		  if(preg_match('/[A-Z_]/',$val['Default'])) {
699
+		if ($val['Default'] === '0' || $val['Default']) {
700
+		  if (preg_match('/[A-Z_]/', $val['Default'])) {
701 701
 			$nfields[$val["Field"]] .= ' DEFAULT '.$val['Default'];		  
702 702
 		  } else {
703 703
 			$nfields[$val["Field"]] .= " DEFAULT '".$val['Default']."'";		  
704 704
 		  }
705 705
 		}
706
-		if($val['Extra'])
706
+		if ($val['Extra'])
707 707
 		  $nfields[$val["Field"]] .= ' '.$val['Extra'];
708
-		if($val['Key'] == 'PRI') {
708
+		if ($val['Key'] == 'PRI') {
709 709
 		  $nkeys['PRIMARY KEY'] = $val["Field"];
710
-		} else if($val['Key'] == 'MUL') {
710
+		} else if ($val['Key'] == 'MUL') {
711 711
 		  $nkeys['KEY '.$val["Field"]] = $val["Field"];
712
-		} else if($val['Key'] == 'UNI') {
712
+		} else if ($val['Key'] == 'UNI') {
713 713
 		  $nkeys['UNIQUE KEY '.$val["Field"]] = $val["Field"];
714 714
 		}
715 715
 	  }
@@ -731,13 +731,13 @@  discard block
 block discarded – undo
731 731
  * @param bool $requeter
732 732
  * @return array
733 733
  */
734
-function spip_mysql_fetch($r, $t='', $serveur='',$requeter=true) {
734
+function spip_mysql_fetch($r, $t = '', $serveur = '', $requeter = true) {
735 735
 	if (!$t) $t = MYSQL_ASSOC;
736 736
 	if ($r) return mysql_fetch_array($r, $t);
737 737
 }
738 738
 
739
-function spip_mysql_seek($r, $row_number, $serveur='',$requeter=true) {
740
-	if ($r and mysql_num_rows($r)) return mysql_data_seek($r,$row_number);
739
+function spip_mysql_seek($r, $row_number, $serveur = '', $requeter = true) {
740
+	if ($r and mysql_num_rows($r)) return mysql_data_seek($r, $row_number);
741 741
 }
742 742
 
743 743
 
@@ -754,11 +754,11 @@  discard block
 block discarded – undo
754 754
  *
755 755
  */
756 756
 function spip_mysql_countsel($from = array(), $where = array(),
757
-			     $groupby = '', $having = array(), $serveur='',$requeter=true)
757
+			     $groupby = '', $having = array(), $serveur = '', $requeter = true)
758 758
 {
759
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
759
+	$c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby)));
760 760
 
761
-	$r = spip_mysql_select("COUNT($c)", $from, $where,'', '', '', $having, $serveur, $requeter);
761
+	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
762 762
 
763 763
 	if (!$requeter) return $r;
764 764
 	if (!is_resource($r)) return 0;
@@ -776,7 +776,7 @@  discard block
 block discarded – undo
776 776
  * @param bool $requeter
777 777
  * @return string
778 778
  */
779
-function spip_mysql_error($query='', $serveur='',$requeter=true) {
779
+function spip_mysql_error($query = '', $serveur = '', $requeter = true) {
780 780
 	$link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
781 781
 	$s = $link ? mysql_error($link) : mysql_error();
782 782
 	if ($s) spip_log("$s - $query", 'mysql.'._LOG_ERREUR);
@@ -790,12 +790,12 @@  discard block
 block discarded – undo
790 790
  * @param bool $requeter
791 791
  * @return int
792 792
  */
793
-function spip_mysql_errno($serveur='',$requeter=true) {
793
+function spip_mysql_errno($serveur = '', $requeter = true) {
794 794
 	$link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
795 795
 	$s = $link ? mysql_errno($link) : mysql_errno();
796 796
 	// 2006 MySQL server has gone away
797 797
 	// 2013 Lost connection to MySQL server during query
798
-	if (in_array($s, array(2006,2013)))
798
+	if (in_array($s, array(2006, 2013)))
799 799
 		define('spip_interdire_cache', true);
800 800
 	if ($s) spip_log("Erreur mysql $s", _LOG_ERREUR);
801 801
 	return $s;
@@ -809,7 +809,7 @@  discard block
 block discarded – undo
809 809
  * @param bool $requeter
810 810
  * @return int
811 811
  */
812
-function spip_mysql_count($r, $serveur='',$requeter=true) {
812
+function spip_mysql_count($r, $serveur = '', $requeter = true) {
813 813
 	if ($r)	return mysql_num_rows($r);
814 814
 }
815 815
 
@@ -821,8 +821,8 @@  discard block
 block discarded – undo
821 821
  * @param bool $requeter
822 822
  * @return bool
823 823
  */
824
-function spip_mysql_free($r, $serveur='',$requeter=true) {
825
-	return (is_resource($r)?mysql_free_result($r):false);
824
+function spip_mysql_free($r, $serveur = '', $requeter = true) {
825
+	return (is_resource($r) ? mysql_free_result($r) : false);
826 826
 }
827 827
 
828 828
 // http://doc.spip.org/@spip_mysql_insert
@@ -835,7 +835,7 @@  discard block
 block discarded – undo
835 835
  * @param bool $requeter
836 836
  * @return int|string
837 837
  */
838
-function spip_mysql_insert($table, $champs, $valeurs, $desc='', $serveur='',$requeter=true) {
838
+function spip_mysql_insert($table, $champs, $valeurs, $desc = '', $serveur = '', $requeter = true) {
839 839
 
840 840
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
841 841
 	$prefixe = $connexion['prefixe'];
@@ -844,13 +844,13 @@  discard block
 block discarded – undo
844 844
 
845 845
 	if ($prefixe) $table = preg_replace('/^spip/', $prefixe, $table);
846 846
 	
847
-	$query ="INSERT INTO $table $champs VALUES $valeurs";
847
+	$query = "INSERT INTO $table $champs VALUES $valeurs";
848 848
 	if (!$requeter) return $query;
849 849
 	
850 850
 	if (isset($_GET['var_profile'])) {
851 851
 		include_spip('public/tracer');
852 852
 		$t = trace_query_start();
853
-	} else $t = 0 ;
853
+	} else $t = 0;
854 854
 
855 855
 	$connexion['last'] = $query;
856 856
 	#spip_log($query, 'mysql.'._LOG_DEBUG);
@@ -874,17 +874,17 @@  discard block
 block discarded – undo
874 874
  * @param bool $requeter
875 875
  * @return int|string
876 876
  */
877
-function spip_mysql_insertq($table, $couples=array(), $desc=array(), $serveur='',$requeter=true) {
877
+function spip_mysql_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true) {
878 878
 
879 879
 	if (!$desc) $desc = description_table($table, $serveur);
880 880
 	if (!$desc) $couples = array();
881
-	$fields =  isset($desc['field'])?$desc['field']:array();
881
+	$fields = isset($desc['field']) ? $desc['field'] : array();
882 882
 
883 883
 	foreach ($couples as $champ => $val) {
884
-		$couples[$champ]= spip_mysql_cite($val, $fields[$champ]);
884
+		$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
885 885
 	}
886 886
 
887
-	return spip_mysql_insert($table, "(".join(',',array_keys($couples)).")", "(".join(',', $couples).")", $desc, $serveur, $requeter);
887
+	return spip_mysql_insert($table, "(".join(',', array_keys($couples)).")", "(".join(',', $couples).")", $desc, $serveur, $requeter);
888 888
 }
889 889
 
890 890
 
@@ -897,23 +897,23 @@  discard block
 block discarded – undo
897 897
  * @param bool $requeter
898 898
  * @return bool|int|string
899 899
  */
900
-function spip_mysql_insertq_multi($table, $tab_couples=array(), $desc=array(), $serveur='',$requeter=true) {
900
+function spip_mysql_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true) {
901 901
 
902 902
 	if (!$desc) $desc = description_table($table, $serveur);
903 903
 	if (!$desc) $tab_couples = array();
904
-	$fields =  isset($desc['field'])?$desc['field']:array();
904
+	$fields = isset($desc['field']) ? $desc['field'] : array();
905 905
 	
906
-	$cles = "(" . join(',',array_keys(reset($tab_couples))) . ')';
906
+	$cles = "(".join(',', array_keys(reset($tab_couples))).')';
907 907
 	$valeurs = array();
908 908
 	$r = false;
909 909
 
910 910
 	// Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
911 911
 	foreach ($tab_couples as $couples) {
912
-		foreach ($couples as $champ => $val){
913
-			$couples[$champ]= spip_mysql_cite($val, $fields[$champ]);
912
+		foreach ($couples as $champ => $val) {
913
+			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
914 914
 		}
915
-		$valeurs[] = '(' .join(',', $couples) . ')';
916
-		if (count($valeurs)>=100){
915
+		$valeurs[] = '('.join(',', $couples).')';
916
+		if (count($valeurs) >= 100) {
917 917
 			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
918 918
 			$valeurs = array();
919 919
 		}
@@ -934,10 +934,10 @@  discard block
 block discarded – undo
934 934
  * @param bool $requeter
935 935
  * @return array|null|resource|string
936 936
  */
937
-function spip_mysql_update($table, $champs, $where='', $desc='', $serveur='',$requeter=true) {
937
+function spip_mysql_update($table, $champs, $where = '', $desc = '', $serveur = '', $requeter = true) {
938 938
 	$set = array();
939 939
 	foreach ($champs as $champ => $val)
940
-		$set[] = $champ . "=$val";
940
+		$set[] = $champ."=$val";
941 941
 	if (!empty($set))
942 942
 		return spip_mysql_query(
943 943
 			  calculer_mysql_expression('UPDATE', $table, ',')
@@ -958,14 +958,14 @@  discard block
 block discarded – undo
958 958
  * @param bool $requeter
959 959
  * @return array|null|resource|string
960 960
  */
961
-function spip_mysql_updateq($table, $champs, $where='', $desc=array(), $serveur='',$requeter=true) {
961
+function spip_mysql_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
962 962
 
963 963
 	if (!$champs) return;
964 964
 	if (!$desc) $desc = description_table($table, $serveur);
965
-	if (!$desc) $champs = array(); else $fields =  $desc['field'];
965
+	if (!$desc) $champs = array(); else $fields = $desc['field'];
966 966
 	$set = array();
967 967
 	foreach ($champs as $champ => $val) {
968
-		$set[] = $champ . '=' . spip_mysql_cite($val, $fields[$champ]);
968
+		$set[] = $champ.'='.spip_mysql_cite($val, $fields[$champ]);
969 969
 	}
970 970
 	return spip_mysql_query(
971 971
 			  calculer_mysql_expression('UPDATE', $table, ',')
@@ -982,13 +982,13 @@  discard block
 block discarded – undo
982 982
  * @param bool $requeter
983 983
  * @return array|bool|int|null|resource|string
984 984
  */
985
-function spip_mysql_delete($table, $where='', $serveur='',$requeter=true) {
985
+function spip_mysql_delete($table, $where = '', $serveur = '', $requeter = true) {
986 986
 	$res = spip_mysql_query(
987 987
 			  calculer_mysql_expression('DELETE FROM', $table, ',')
988 988
 			. calculer_mysql_expression('WHERE', $where),
989 989
 			$serveur, $requeter);
990 990
 	if (!$requeter) return $res;
991
-	if ($res){
991
+	if ($res) {
992 992
 		$connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
993 993
 		$link = $connexion['link'];
994 994
 		return $link ? mysql_affected_rows($link) : mysql_affected_rows();
@@ -1006,8 +1006,8 @@  discard block
 block discarded – undo
1006 1006
  * @param bool $requeter
1007 1007
  * @return array|null|resource|string
1008 1008
  */
1009
-function spip_mysql_replace($table, $couples, $desc=array(), $serveur='',$requeter=true) {
1010
-	return spip_mysql_query("REPLACE $table (" . join(',',array_keys($couples)) . ') VALUES (' .join(',',array_map('_q', $couples)) . ')', $serveur, $requeter);
1009
+function spip_mysql_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1010
+	return spip_mysql_query("REPLACE $table (".join(',', array_keys($couples)).') VALUES ('.join(',', array_map('_q', $couples)).')', $serveur, $requeter);
1011 1011
 }
1012 1012
 
1013 1013
 
@@ -1020,13 +1020,13 @@  discard block
 block discarded – undo
1020 1020
  * @param bool $requeter
1021 1021
  * @return array|null|resource|string
1022 1022
  */
1023
-function spip_mysql_replace_multi($table, $tab_couples, $desc=array(), $serveur='',$requeter=true) {
1024
-	$cles = "(" . join(',',array_keys($tab_couples[0])). ')';
1023
+function spip_mysql_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1024
+	$cles = "(".join(',', array_keys($tab_couples[0])).')';
1025 1025
 	$valeurs = array();
1026 1026
 	foreach ($tab_couples as $couples) {
1027
-		$valeurs[] = '(' .join(',',array_map('_q', $couples)) . ')';
1027
+		$valeurs[] = '('.join(',', array_map('_q', $couples)).')';
1028 1028
 	}
1029
-	$valeurs = implode(', ',$valeurs);
1029
+	$valeurs = implode(', ', $valeurs);
1030 1030
 	return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1031 1031
 }
1032 1032
 
@@ -1040,7 +1040,7 @@  discard block
 block discarded – undo
1040 1040
  *
1041 1041
  */
1042 1042
 
1043
-function spip_mysql_multi ($objet, $lang) {
1043
+function spip_mysql_multi($objet, $lang) {
1044 1044
 	$lengthlang = strlen("[$lang]");
1045 1045
 	$posmulti = "INSTR(".$objet.", '<multi>')";
1046 1046
 	$posfinmulti = "INSTR(".$objet.", '</multi>')";
@@ -1076,7 +1076,7 @@  discard block
 block discarded – undo
1076 1076
  */
1077 1077
 function spip_mysql_hex($v)
1078 1078
 {
1079
-	return "0x" . $v;
1079
+	return "0x".$v;
1080 1080
 }
1081 1081
 
1082 1082
 /**
@@ -1084,12 +1084,12 @@  discard block
 block discarded – undo
1084 1084
  * @param string $type
1085 1085
  * @return array|int|string
1086 1086
  */
1087
-function spip_mysql_quote($v, $type='') {
1087
+function spip_mysql_quote($v, $type = '') {
1088 1088
 	if ($type) {
1089 1089
 		if (!is_array($v))
1090
-			return spip_mysql_cite($v,$type);
1090
+			return spip_mysql_cite($v, $type);
1091 1091
 		// si c'est un tableau, le parcourir en propageant le type
1092
-		foreach($v as $k=>$r)
1092
+		foreach ($v as $k=>$r)
1093 1093
 			$v[$k] = spip_mysql_quote($r, $type);
1094 1094
 		return $v;
1095 1095
 	}
@@ -1114,7 +1114,7 @@  discard block
 block discarded – undo
1114 1114
 	. '('
1115 1115
 	. sql_quote(date('Y-m-d H:i:s'))
1116 1116
 	. ', INTERVAL '
1117
-	. (($interval > 0) ? $interval : (0-$interval))
1117
+	. (($interval > 0) ? $interval : (0 - $interval))
1118 1118
 	. ' '
1119 1119
 	. $unite
1120 1120
 	. '))';
@@ -1132,16 +1132,16 @@  discard block
 block discarded – undo
1132 1132
  * @param bool $requeter
1133 1133
  * @return string
1134 1134
  */
1135
-function spip_mysql_in($val, $valeurs, $not='', $serveur='',$requeter=true) {
1135
+function spip_mysql_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) {
1136 1136
 	$n = $i = 0;
1137
-	$in_sql ="";
1138
-	while ($n = strpos($valeurs, ',', $n+1)) {
1137
+	$in_sql = "";
1138
+	while ($n = strpos($valeurs, ',', $n + 1)) {
1139 1139
 	  if ((++$i) >= 255) {
1140
-			$in_sql .= "($val $not IN (" .
1141
-			  substr($valeurs, 0, $n) .
1142
-			  "))\n" .
1140
+			$in_sql .= "($val $not IN (".
1141
+			  substr($valeurs, 0, $n).
1142
+			  "))\n".
1143 1143
 			  ($not ? "AND\t" : "OR\t");
1144
-			$valeurs = substr($valeurs, $n+1);
1144
+			$valeurs = substr($valeurs, $n + 1);
1145 1145
 			$i = $n = 0;
1146 1146
 		}
1147 1147
 	}
@@ -1158,10 +1158,10 @@  discard block
 block discarded – undo
1158 1158
  * @param string $not
1159 1159
  * @return string
1160 1160
  */
1161
-function calcul_mysql_in($val, $valeurs, $not='') {
1161
+function calcul_mysql_in($val, $valeurs, $not = '') {
1162 1162
 	if (is_array($valeurs))
1163 1163
 		$valeurs = join(',', array_map('_q', $valeurs));
1164
-	elseif ($valeurs[0]===',') $valeurs = substr($valeurs,1);
1164
+	elseif ($valeurs[0] === ',') $valeurs = substr($valeurs, 1);
1165 1165
 	if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1');
1166 1166
 	return spip_mysql_in($val, $valeurs, $not);
1167 1167
 }
@@ -1173,19 +1173,19 @@  discard block
 block discarded – undo
1173 1173
  * @return int|string
1174 1174
  */
1175 1175
 function spip_mysql_cite($v, $type) {
1176
-	if(is_null($v)
1177
-		AND stripos($type,"NOT NULL")===false) return 'NULL'; // null php se traduit en NULL SQL
1176
+	if (is_null($v)
1177
+		AND stripos($type, "NOT NULL") === false) return 'NULL'; // null php se traduit en NULL SQL
1178 1178
 	if (sql_test_date($type) AND preg_match('/^\w+\(/', $v))
1179 1179
 		return $v;
1180 1180
 	if (sql_test_int($type)) {
1181
-		if (is_numeric($v) OR (ctype_xdigit(substr($v,2))
1182
-			  AND $v[0]=='0' AND $v[1]=='x'))
1181
+		if (is_numeric($v) OR (ctype_xdigit(substr($v, 2))
1182
+			  AND $v[0] == '0' AND $v[1] == 'x'))
1183 1183
 			return $v;
1184 1184
 		// si pas numerique, forcer le intval
1185 1185
 		else
1186 1186
 			return intval($v);
1187 1187
 	}
1188
-	return  ("'" . addslashes($v) . "'");
1188
+	return  ("'".addslashes($v)."'");
1189 1189
 }
1190 1190
 
1191 1191
 // Ces deux fonctions n'ont pas d'equivalent exact PostGres
@@ -1203,14 +1203,14 @@  discard block
 block discarded – undo
1203 1203
  */
1204 1204
 function spip_get_lock($nom, $timeout = 0) {
1205 1205
 
1206
-	define('_LOCK_TIME', intval(time()/3600-316982));
1206
+	define('_LOCK_TIME', intval(time() / 3600 - 316982));
1207 1207
 
1208 1208
 	$connexion = &$GLOBALS['connexions'][0];
1209 1209
 	$bd = $connexion['db'];
1210 1210
 	$prefixe = $connexion['prefixe'];
1211
-	$nom = "$bd:$prefixe:$nom" .  _LOCK_TIME;
1211
+	$nom = "$bd:$prefixe:$nom"._LOCK_TIME;
1212 1212
 
1213
-	$connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1213
+	$connexion['last'] = $q = "SELECT GET_LOCK("._q($nom).", $timeout) AS n";
1214 1214
 	$q = @sql_fetch(mysql_query($q));
1215 1215
 	if (!$q) spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1216 1216
 	return $q['n'];
@@ -1225,9 +1225,9 @@  discard block
 block discarded – undo
1225 1225
 	$connexion = &$GLOBALS['connexions'][0];
1226 1226
 	$bd = $connexion['db'];
1227 1227
 	$prefixe = $connexion['prefixe'];
1228
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1228
+	$nom = "$bd:$prefixe:$nom"._LOCK_TIME;
1229 1229
 
1230
-	$connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1230
+	$connexion['last'] = $q = "SELECT RELEASE_LOCK("._q($nom).")";
1231 1231
 	@mysql_query($q);
1232 1232
 }
1233 1233
 
@@ -1269,11 +1269,11 @@  discard block
 block discarded – undo
1269 1269
  * @param $server_db
1270 1270
  * @return string
1271 1271
  */
1272
-function test_sql_mode_mysql($server_db){
1273
-	$res = sql_select("version() as v",'','','','','','',$server_db);
1274
-	$row = sql_fetch($res,$server_db);
1275
-	if (version_compare($row['v'],'5.0.0','>=')){
1276
-		define('_MYSQL_SET_SQL_MODE',true);
1272
+function test_sql_mode_mysql($server_db) {
1273
+	$res = sql_select("version() as v", '', '', '', '', '', '', $server_db);
1274
+	$row = sql_fetch($res, $server_db);
1275
+	if (version_compare($row['v'], '5.0.0', '>=')) {
1276
+		define('_MYSQL_SET_SQL_MODE', true);
1277 1277
 		return "define('_MYSQL_SET_SQL_MODE',true);\n";
1278 1278
 	}
1279 1279
 	return '';
Please login to merge, or discard this patch.
Braces   +226 added lines, -115 removed lines patch added patch discarded remove patch
@@ -17,7 +17,9 @@  discard block
 block discarded – undo
17 17
  * @package SPIP\SQL\MySQL
18 18
  */
19 19
  
20
-if (!defined('_ECRIRE_INC_VERSION')) return;
20
+if (!defined('_ECRIRE_INC_VERSION')) {
21
+    return;
22
+}
21 23
 
22 24
 // fonction pour la premiere connexion a un serveur MySQL
23 25
 
@@ -33,8 +35,12 @@  discard block
 block discarded – undo
33 35
  */
34 36
 
35 37
 function req_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='') {
36
-	if (!charger_php_extension('mysql')) return false;
37
-	if ($port > 0) $host = "$host:$port";
38
+	if (!charger_php_extension('mysql')) {
39
+	    return false;
40
+	}
41
+	if ($port > 0) {
42
+	    $host = "$host:$port";
43
+	}
38 44
 	$link = @mysql_connect($host, $login, $pass, true);
39 45
 	if (!$link) {
40 46
 		spip_log('Echec mysql_connect. Erreur : ' . mysql_error(),'mysql.'._LOG_HS);
@@ -48,8 +54,9 @@  discard block
 block discarded – undo
48 54
 		$ok = spip_mysql_selectdb($db);
49 55
 		if (defined('_MYSQL_SET_SQL_MODE') 
50 56
 		  OR defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
51
-		  )
52
-			mysql_query($last = "set sql_mode=''");
57
+		  ) {
58
+					mysql_query($last = "set sql_mode=''");
59
+		}
53 60
 	}
54 61
 	spip_log("Connexion vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle sur $link" : 'impossible'), _LOG_DEBUG);
55 62
 
@@ -171,12 +178,16 @@  discard block
 block discarded – undo
171 178
 	$query = traite_query($query, $db, $prefixe);
172 179
 
173 180
 	// renvoyer la requete inerte si demandee
174
-	if (!$requeter) return $query;
181
+	if (!$requeter) {
182
+	    return $query;
183
+	}
175 184
 
176 185
 	if (isset($_GET['var_profile'])) {
177 186
 		include_spip('public/tracer');
178 187
 		$t = trace_query_start();
179
-	} else $t = 0 ;
188
+	} else {
189
+	    $t = 0 ;
190
+	}
180 191
  
181 192
 	$connexion['last'] = $query;
182 193
 
@@ -193,8 +204,11 @@  discard block
 block discarded – undo
193 204
 
194 205
 	$r = $link ? mysql_query($query.$debug, $link) : mysql_query($query.$debug);
195 206
 
196
-	if ($e = spip_mysql_errno($serveur))	// Log de l'erreur eventuelle
197
-		$e .= spip_mysql_error($query, $serveur); // et du fautif
207
+	if ($e = spip_mysql_errno($serveur)) {
208
+	    // Log de l'erreur eventuelle
209
+		$e .= spip_mysql_error($query, $serveur);
210
+	}
211
+	// et du fautif
198 212
 	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
199 213
 }
200 214
 
@@ -233,7 +247,9 @@  discard block
 block discarded – undo
233 247
  * @return array
234 248
  */
235 249
 function spip_mysql_explain($query, $serveur='',$requeter=true){
236
-	if (strpos(ltrim($query), 'SELECT') !== 0) return array();
250
+	if (strpos(ltrim($query), 'SELECT') !== 0) {
251
+	    return array();
252
+	}
237 253
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
238 254
 	$prefixe = $connexion['prefixe'];
239 255
 	$link = $connexion['link'];
@@ -277,7 +293,9 @@  discard block
 block discarded – undo
277 293
 		. ($limit ? "\nLIMIT $limit" : '');
278 294
 
279 295
 	// renvoyer la requete inerte si demandee
280
-	if ($requeter === false) return $query;
296
+	if ($requeter === false) {
297
+	    return $query;
298
+	}
281 299
 	$r = spip_mysql_query($query, $serveur, $requeter);
282 300
 	return $r ? $r : $query;
283 301
 }
@@ -304,13 +322,14 @@  discard block
 block discarded – undo
304 322
  */
305 323
 function calculer_mysql_where($v)
306 324
 {
307
-	if (!is_array($v))
308
-	  return $v ;
325
+	if (!is_array($v)) {
326
+		  return $v ;
327
+	}
309 328
 
310 329
 	$op = array_shift($v);
311
-	if (!($n=count($v)))
312
-		return $op;
313
-	else {
330
+	if (!($n=count($v))) {
331
+			return $op;
332
+	} else {
314 333
 		$arg = calculer_mysql_where(array_shift($v));
315 334
 		if ($n==1) {
316 335
 			  return "$op($arg)";
@@ -318,7 +337,9 @@  discard block
 block discarded – undo
318 337
 			$arg2 = calculer_mysql_where(array_shift($v));
319 338
 			if ($n==2) {
320 339
 				return "($arg $op $arg2)";
321
-			} else return "($arg $op ($arg2) : $v[0])";
340
+			} else {
341
+			    return "($arg $op ($arg2) : $v[0])";
342
+			}
322 343
 		}
323 344
 	}
324 345
 }
@@ -331,18 +352,20 @@  discard block
 block discarded – undo
331 352
  * @return string
332 353
  */
333 354
 function calculer_mysql_expression($expression, $v, $join = 'AND'){
334
-	if (empty($v))
335
-		return '';
355
+	if (empty($v)) {
356
+			return '';
357
+	}
336 358
 	
337 359
 	$exp = "\n$expression ";
338 360
 	
339 361
 	if (!is_array($v)) {
340 362
 		return $exp . $v;
341 363
 	} else {
342
-		if (strtoupper($join) === 'AND')
343
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
344
-		else
345
-			return $exp . join($join, $v);
364
+		if (strtoupper($join) === 'AND') {
365
+					return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
366
+		} else {
367
+					return $exp . join($join, $v);
368
+		}
346 369
 	}
347 370
 }
348 371
 
@@ -359,13 +382,14 @@  discard block
 block discarded – undo
359 382
 			// c'est une jointure qui se refere au from precedent
360 383
 			// pas de virgule
361 384
 		  $res .= '  ' . $v ;
362
-		}
363
-		else {
385
+		} else {
364 386
 		  if (!is_numeric($k)) {
365 387
 		  	$p = strpos($v, " ");
366
-			if ($p)
367
-			  $v = substr($v,0,$p) . " AS `$k`" . substr($v,$p);
368
-			else $v .= " AS `$k`";
388
+			if ($p) {
389
+						  $v = substr($v,0,$p) . " AS `$k`" . substr($v,$p);
390
+			} else {
391
+			    $v .= " AS `$k`";
392
+			}
369 393
 		  }
370 394
 		      
371 395
 		  $res .= ', ' . $v ;
@@ -389,12 +413,15 @@  discard block
 block discarded – undo
389 413
  */
390 414
 function traite_query($query, $db='', $prefixe='') {
391 415
 
392
-	if ($GLOBALS['mysql_rappel_nom_base'] AND $db)
393
-		$pref = '`'. $db.'`.';
394
-	else $pref = '';
416
+	if ($GLOBALS['mysql_rappel_nom_base'] AND $db) {
417
+			$pref = '`'. $db.'`.';
418
+	} else {
419
+	    $pref = '';
420
+	}
395 421
 
396
-	if ($prefixe)
397
-		$pref .= $prefixe . "_";
422
+	if ($prefixe) {
423
+			$pref .= $prefixe . "_";
424
+	}
398 425
 
399 426
 	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
400 427
 		$suite ='';
@@ -406,8 +433,9 @@  discard block
 block discarded – undo
406 433
 		// modifier une requete qui est en fait juste du texte dans un champ
407 434
 		if (stripos($suite,"SELECT")!==false) {
408 435
 			list($suite,$textes) = query_echappe_textes($suite);
409
-			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r))
410
-		    $suite = $r[1] . traite_query($r[2], $db, $prefixe);
436
+			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
437
+					    $suite = $r[1] . traite_query($r[2], $db, $prefixe);
438
+			}
411 439
 			$suite = query_reinjecte_textes($suite, $textes);
412 440
 		}
413 441
 	}
@@ -429,8 +457,9 @@  discard block
 block discarded – undo
429 457
 **/
430 458
 function spip_mysql_selectdb($db) {
431 459
 	$ok = mysql_select_db($db);
432
-	if (!$ok)
433
-		spip_log('Echec mysql_selectdb. Erreur : ' . mysql_error(),'mysql.'._LOG_CRITIQUE);
460
+	if (!$ok) {
461
+			spip_log('Echec mysql_selectdb. Erreur : ' . mysql_error(),'mysql.'._LOG_CRITIQUE);
462
+	}
434 463
 	return $ok;
435 464
 }
436 465
 
@@ -453,8 +482,9 @@  discard block
 block discarded – undo
453 482
 function spip_mysql_listdbs($serveur='',$requeter=true) {
454 483
 	$dbs = array();
455 484
 	if ($res = spip_mysql_query("SHOW DATABASES")){
456
-		while($row = mysql_fetch_assoc($res))
457
-			$dbs[] = $row['Database'];
485
+		while($row = mysql_fetch_assoc($res)) {
486
+					$dbs[] = $row['Database'];
487
+		}
458 488
 	}
459 489
 	return $dbs;
460 490
 }
@@ -483,8 +513,9 @@  discard block
 block discarded – undo
483 513
 
484 514
 	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
485 515
 	// sans les renseigner (laisse le compilo recuperer la description)
486
-	if (!is_array($champs) || !is_array($cles)) 
487
-		return;
516
+	if (!is_array($champs) || !is_array($cles)) {
517
+			return;
518
+	}
488 519
 
489 520
 	$res = spip_mysql_query("SELECT version() as v");
490 521
 	if (($row = mysql_fetch_array($res)) && (version_compare($row['v'],'5.0','>='))) {
@@ -493,17 +524,20 @@  discard block
 block discarded – undo
493 524
 
494 525
 	foreach($cles as $k => $v) {
495 526
 		$keys .= "$s\n\t\t$k ($v)";
496
-		if ($k == "PRIMARY KEY")
497
-			$p = $v;
527
+		if ($k == "PRIMARY KEY") {
528
+					$p = $v;
529
+		}
498 530
 		$s = ",";
499 531
 	}
500 532
 	$s = '';
501 533
 	
502 534
 	$character_set = "";
503
-	if (@$GLOBALS['meta']['charset_sql_base'])
504
-		$character_set .= " CHARACTER SET ".$GLOBALS['meta']['charset_sql_base'];
505
-	if (@$GLOBALS['meta']['charset_collation_sql_base'])
506
-		$character_set .= " COLLATE ".$GLOBALS['meta']['charset_collation_sql_base'];
535
+	if (@$GLOBALS['meta']['charset_sql_base']) {
536
+			$character_set .= " CHARACTER SET ".$GLOBALS['meta']['charset_sql_base'];
537
+	}
538
+	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
539
+			$character_set .= " COLLATE ".$GLOBALS['meta']['charset_collation_sql_base'];
540
+	}
507 541
 
508 542
 	foreach($champs as $k => $v) {
509 543
 		$v = _mysql_remplacements_definitions_table($v);
@@ -570,7 +604,9 @@  discard block
 block discarded – undo
570 604
  * @return array|bool|null|resource|string
571 605
  */
572 606
 function spip_mysql_create_view($nom, $query_select, $serveur='',$requeter=true) {
573
-	if (!$query_select) return false;
607
+	if (!$query_select) {
608
+	    return false;
609
+	}
574 610
 	// vue deja presente
575 611
 	if (sql_showtable($nom, false, $serveur)) {
576 612
 		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
@@ -592,7 +628,9 @@  discard block
 block discarded – undo
592 628
  */
593 629
 function spip_mysql_drop_table($table, $exist='', $serveur='',$requeter=true)
594 630
 {
595
-	if ($exist) $exist =" IF EXISTS";
631
+	if ($exist) {
632
+	    $exist =" IF EXISTS";
633
+	}
596 634
 	return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
597 635
 }
598 636
 
@@ -606,7 +644,9 @@  discard block
 block discarded – undo
606 644
  * @return array|null|resource|string
607 645
  */
608 646
 function spip_mysql_drop_view($view, $exist='', $serveur='',$requeter=true) {
609
-	if ($exist) $exist =" IF EXISTS";
647
+	if ($exist) {
648
+	    $exist =" IF EXISTS";
649
+	}
610 650
 	return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
611 651
 }
612 652
 
@@ -654,8 +694,12 @@  discard block
 block discarded – undo
654 694
 function spip_mysql_showtable($nom_table, $serveur='',$requeter=true)
655 695
 {
656 696
 	$s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
657
-	if (!$s) return '';
658
-	if (!$requeter) return $s;
697
+	if (!$s) {
698
+	    return '';
699
+	}
700
+	if (!$requeter) {
701
+	    return $s;
702
+	}
659 703
 
660 704
 	list(,$a) = mysql_fetch_array($s ,MYSQL_NUM);
661 705
 	if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)){
@@ -665,9 +709,9 @@  discard block
 block discarded – undo
665 709
 		if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
666 710
 		  $namedkeys = $r[2];
667 711
 		  $desc = $r[1];
712
+		} else {
713
+				  $namedkeys = "";
668 714
 		}
669
-		else 
670
-		  $namedkeys = "";
671 715
 
672 716
 		$fields = array();
673 717
 		foreach(preg_split("/,\s*`/",$desc) as $v) {
@@ -680,7 +724,11 @@  discard block
 block discarded – undo
680 724
 		  if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
681 725
 			$k = str_replace("`", '', trim($r[1]));
682 726
 			$t = strtolower(str_replace("`", '', $r[2]));
683
-			if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
727
+			if ($k && !isset($keys[$k])) {
728
+			    $keys[$k] = $t;
729
+			} else {
730
+			    $keys[] = $t;
731
+			}
684 732
 		  }
685 733
 		}
686 734
 		spip_mysql_free($s);
@@ -703,8 +751,9 @@  discard block
 block discarded – undo
703 751
 			$nfields[$val["Field"]] .= " DEFAULT '".$val['Default']."'";		  
704 752
 		  }
705 753
 		}
706
-		if($val['Extra'])
707
-		  $nfields[$val["Field"]] .= ' '.$val['Extra'];
754
+		if($val['Extra']) {
755
+				  $nfields[$val["Field"]] .= ' '.$val['Extra'];
756
+		}
708 757
 		if($val['Key'] == 'PRI') {
709 758
 		  $nkeys['PRIMARY KEY'] = $val["Field"];
710 759
 		} else if($val['Key'] == 'MUL') {
@@ -732,13 +781,19 @@  discard block
 block discarded – undo
732 781
  * @return array
733 782
  */
734 783
 function spip_mysql_fetch($r, $t='', $serveur='',$requeter=true) {
735
-	if (!$t) $t = MYSQL_ASSOC;
736
-	if ($r) return mysql_fetch_array($r, $t);
737
-}
784
+	if (!$t) {
785
+	    $t = MYSQL_ASSOC;
786
+	}
787
+	if ($r) {
788
+	    return mysql_fetch_array($r, $t);
789
+	}
790
+	}
738 791
 
739 792
 function spip_mysql_seek($r, $row_number, $serveur='',$requeter=true) {
740
-	if ($r and mysql_num_rows($r)) return mysql_data_seek($r,$row_number);
741
-}
793
+	if ($r and mysql_num_rows($r)) {
794
+	    return mysql_data_seek($r,$row_number);
795
+	}
796
+	}
742 797
 
743 798
 
744 799
 // http://doc.spip.org/@spip_mysql_countsel
@@ -760,8 +815,12 @@  discard block
 block discarded – undo
760 815
 
761 816
 	$r = spip_mysql_select("COUNT($c)", $from, $where,'', '', '', $having, $serveur, $requeter);
762 817
 
763
-	if (!$requeter) return $r;
764
-	if (!is_resource($r)) return 0;
818
+	if (!$requeter) {
819
+	    return $r;
820
+	}
821
+	if (!is_resource($r)) {
822
+	    return 0;
823
+	}
765 824
 	list($c) = mysql_fetch_array($r, MYSQL_NUM);
766 825
 	mysql_free_result($r);
767 826
 	return $c;
@@ -779,7 +838,9 @@  discard block
 block discarded – undo
779 838
 function spip_mysql_error($query='', $serveur='',$requeter=true) {
780 839
 	$link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
781 840
 	$s = $link ? mysql_error($link) : mysql_error();
782
-	if ($s) spip_log("$s - $query", 'mysql.'._LOG_ERREUR);
841
+	if ($s) {
842
+	    spip_log("$s - $query", 'mysql.'._LOG_ERREUR);
843
+	}
783 844
 	return $s;
784 845
 }
785 846
 
@@ -795,9 +856,12 @@  discard block
 block discarded – undo
795 856
 	$s = $link ? mysql_errno($link) : mysql_errno();
796 857
 	// 2006 MySQL server has gone away
797 858
 	// 2013 Lost connection to MySQL server during query
798
-	if (in_array($s, array(2006,2013)))
799
-		define('spip_interdire_cache', true);
800
-	if ($s) spip_log("Erreur mysql $s", _LOG_ERREUR);
859
+	if (in_array($s, array(2006,2013))) {
860
+			define('spip_interdire_cache', true);
861
+	}
862
+	if ($s) {
863
+	    spip_log("Erreur mysql $s", _LOG_ERREUR);
864
+	}
801 865
 	return $s;
802 866
 }
803 867
 
@@ -810,8 +874,10 @@  discard block
 block discarded – undo
810 874
  * @return int
811 875
  */
812 876
 function spip_mysql_count($r, $serveur='',$requeter=true) {
813
-	if ($r)	return mysql_num_rows($r);
814
-}
877
+	if ($r) {
878
+	    return mysql_num_rows($r);
879
+	}
880
+	}
815 881
 
816 882
 
817 883
 // http://doc.spip.org/@spip_mysql_free
@@ -842,23 +908,32 @@  discard block
 block discarded – undo
842 908
 	$link = $connexion['link'];
843 909
 	$db = $connexion['db'];
844 910
 
845
-	if ($prefixe) $table = preg_replace('/^spip/', $prefixe, $table);
911
+	if ($prefixe) {
912
+	    $table = preg_replace('/^spip/', $prefixe, $table);
913
+	}
846 914
 	
847 915
 	$query ="INSERT INTO $table $champs VALUES $valeurs";
848
-	if (!$requeter) return $query;
916
+	if (!$requeter) {
917
+	    return $query;
918
+	}
849 919
 	
850 920
 	if (isset($_GET['var_profile'])) {
851 921
 		include_spip('public/tracer');
852 922
 		$t = trace_query_start();
853
-	} else $t = 0 ;
923
+	} else {
924
+	    $t = 0 ;
925
+	}
854 926
 
855 927
 	$connexion['last'] = $query;
856 928
 	#spip_log($query, 'mysql.'._LOG_DEBUG);
857
-	if (mysql_query($query, $link))
858
-		$r = mysql_insert_id($link);
859
-	else {
860
-	  if ($e = spip_mysql_errno($serveur))	// Log de l'erreur eventuelle
861
-		$e .= spip_mysql_error($query, $serveur); // et du fautif
929
+	if (mysql_query($query, $link)) {
930
+			$r = mysql_insert_id($link);
931
+	} else {
932
+	  if ($e = spip_mysql_errno($serveur)) {
933
+	      // Log de l'erreur eventuelle
934
+		$e .= spip_mysql_error($query, $serveur);
935
+	  }
936
+	  // et du fautif
862 937
 	}
863 938
 	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
864 939
 
@@ -876,8 +951,12 @@  discard block
 block discarded – undo
876 951
  */
877 952
 function spip_mysql_insertq($table, $couples=array(), $desc=array(), $serveur='',$requeter=true) {
878 953
 
879
-	if (!$desc) $desc = description_table($table, $serveur);
880
-	if (!$desc) $couples = array();
954
+	if (!$desc) {
955
+	    $desc = description_table($table, $serveur);
956
+	}
957
+	if (!$desc) {
958
+	    $couples = array();
959
+	}
881 960
 	$fields =  isset($desc['field'])?$desc['field']:array();
882 961
 
883 962
 	foreach ($couples as $champ => $val) {
@@ -899,8 +978,12 @@  discard block
 block discarded – undo
899 978
  */
900 979
 function spip_mysql_insertq_multi($table, $tab_couples=array(), $desc=array(), $serveur='',$requeter=true) {
901 980
 
902
-	if (!$desc) $desc = description_table($table, $serveur);
903
-	if (!$desc) $tab_couples = array();
981
+	if (!$desc) {
982
+	    $desc = description_table($table, $serveur);
983
+	}
984
+	if (!$desc) {
985
+	    $tab_couples = array();
986
+	}
904 987
 	$fields =  isset($desc['field'])?$desc['field']:array();
905 988
 	
906 989
 	$cles = "(" . join(',',array_keys(reset($tab_couples))) . ')';
@@ -918,8 +1001,9 @@  discard block
 block discarded – undo
918 1001
 			$valeurs = array();
919 1002
 		}
920 1003
 	}
921
-	if (count($valeurs))
922
-		$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1004
+	if (count($valeurs)) {
1005
+			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1006
+	}
923 1007
 
924 1008
 	return $r; // dans le cas d'une table auto_increment, le dernier insert_id
925 1009
 }
@@ -936,15 +1020,17 @@  discard block
 block discarded – undo
936 1020
  */
937 1021
 function spip_mysql_update($table, $champs, $where='', $desc='', $serveur='',$requeter=true) {
938 1022
 	$set = array();
939
-	foreach ($champs as $champ => $val)
940
-		$set[] = $champ . "=$val";
941
-	if (!empty($set))
942
-		return spip_mysql_query(
1023
+	foreach ($champs as $champ => $val) {
1024
+			$set[] = $champ . "=$val";
1025
+	}
1026
+	if (!empty($set)) {
1027
+			return spip_mysql_query(
943 1028
 			  calculer_mysql_expression('UPDATE', $table, ',')
944 1029
 			. calculer_mysql_expression('SET', $set, ',')
945 1030
 			. calculer_mysql_expression('WHERE', $where), 
946 1031
 			$serveur, $requeter);
947
-}
1032
+	}
1033
+	}
948 1034
 
949 1035
 // idem, mais les valeurs sont des constantes a mettre entre apostrophes
950 1036
 // sauf les expressions de date lorsqu'il s'agit de fonctions SQL (NOW etc)
@@ -960,9 +1046,17 @@  discard block
 block discarded – undo
960 1046
  */
961 1047
 function spip_mysql_updateq($table, $champs, $where='', $desc=array(), $serveur='',$requeter=true) {
962 1048
 
963
-	if (!$champs) return;
964
-	if (!$desc) $desc = description_table($table, $serveur);
965
-	if (!$desc) $champs = array(); else $fields =  $desc['field'];
1049
+	if (!$champs) {
1050
+	    return;
1051
+	}
1052
+	if (!$desc) {
1053
+	    $desc = description_table($table, $serveur);
1054
+	}
1055
+	if (!$desc) {
1056
+	    $champs = array();
1057
+	} else {
1058
+	    $fields =  $desc['field'];
1059
+	}
966 1060
 	$set = array();
967 1061
 	foreach ($champs as $champ => $val) {
968 1062
 		$set[] = $champ . '=' . spip_mysql_cite($val, $fields[$champ]);
@@ -987,15 +1081,17 @@  discard block
 block discarded – undo
987 1081
 			  calculer_mysql_expression('DELETE FROM', $table, ',')
988 1082
 			. calculer_mysql_expression('WHERE', $where),
989 1083
 			$serveur, $requeter);
990
-	if (!$requeter) return $res;
1084
+	if (!$requeter) {
1085
+	    return $res;
1086
+	}
991 1087
 	if ($res){
992 1088
 		$connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
993 1089
 		$link = $connexion['link'];
994 1090
 		return $link ? mysql_affected_rows($link) : mysql_affected_rows();
1091
+	} else {
1092
+			return false;
1093
+	}
995 1094
 	}
996
-	else
997
-		return false;
998
-}
999 1095
 
1000 1096
 // http://doc.spip.org/@spip_mysql_replace
1001 1097
 /**
@@ -1086,18 +1182,21 @@  discard block
 block discarded – undo
1086 1182
  */
1087 1183
 function spip_mysql_quote($v, $type='') {
1088 1184
 	if ($type) {
1089
-		if (!is_array($v))
1090
-			return spip_mysql_cite($v,$type);
1185
+		if (!is_array($v)) {
1186
+					return spip_mysql_cite($v,$type);
1187
+		}
1091 1188
 		// si c'est un tableau, le parcourir en propageant le type
1092
-		foreach($v as $k=>$r)
1093
-			$v[$k] = spip_mysql_quote($r, $type);
1189
+		foreach($v as $k=>$r) {
1190
+					$v[$k] = spip_mysql_quote($r, $type);
1191
+		}
1094 1192
 		return $v;
1095 1193
 	}
1096 1194
 	// si on ne connait pas le type, s'en remettre a _q :
1097 1195
 	// on ne fera pas mieux
1098
-	else
1099
-		return _q($v);
1100
-}
1196
+	else {
1197
+			return _q($v);
1198
+	}
1199
+	}
1101 1200
 
1102 1201
 /**
1103 1202
  * @param $champ
@@ -1159,10 +1258,14 @@  discard block
 block discarded – undo
1159 1258
  * @return string
1160 1259
  */
1161 1260
 function calcul_mysql_in($val, $valeurs, $not='') {
1162
-	if (is_array($valeurs))
1163
-		$valeurs = join(',', array_map('_q', $valeurs));
1164
-	elseif ($valeurs[0]===',') $valeurs = substr($valeurs,1);
1165
-	if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1');
1261
+	if (is_array($valeurs)) {
1262
+			$valeurs = join(',', array_map('_q', $valeurs));
1263
+	} elseif ($valeurs[0]===',') {
1264
+	    $valeurs = substr($valeurs,1);
1265
+	}
1266
+	if (!strlen(trim($valeurs))) {
1267
+	    return ($not ? "0=0" : '0=1');
1268
+	}
1166 1269
 	return spip_mysql_in($val, $valeurs, $not);
1167 1270
 }
1168 1271
 
@@ -1174,16 +1277,22 @@  discard block
 block discarded – undo
1174 1277
  */
1175 1278
 function spip_mysql_cite($v, $type) {
1176 1279
 	if(is_null($v)
1177
-		AND stripos($type,"NOT NULL")===false) return 'NULL'; // null php se traduit en NULL SQL
1178
-	if (sql_test_date($type) AND preg_match('/^\w+\(/', $v))
1179
-		return $v;
1280
+		AND stripos($type,"NOT NULL")===false) {
1281
+	    return 'NULL';
1282
+	}
1283
+	// null php se traduit en NULL SQL
1284
+	if (sql_test_date($type) AND preg_match('/^\w+\(/', $v)) {
1285
+			return $v;
1286
+	}
1180 1287
 	if (sql_test_int($type)) {
1181 1288
 		if (is_numeric($v) OR (ctype_xdigit(substr($v,2))
1182
-			  AND $v[0]=='0' AND $v[1]=='x'))
1183
-			return $v;
1289
+			  AND $v[0]=='0' AND $v[1]=='x')) {
1290
+					return $v;
1291
+		}
1184 1292
 		// si pas numerique, forcer le intval
1185
-		else
1186
-			return intval($v);
1293
+		else {
1294
+					return intval($v);
1295
+		}
1187 1296
 	}
1188 1297
 	return  ("'" . addslashes($v) . "'");
1189 1298
 }
@@ -1212,7 +1321,9 @@  discard block
 block discarded – undo
1212 1321
 
1213 1322
 	$connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1214 1323
 	$q = @sql_fetch(mysql_query($q));
1215
-	if (!$q) spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1324
+	if (!$q) {
1325
+	    spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1326
+	}
1216 1327
 	return $q['n'];
1217 1328
 }
1218 1329
 
Please login to merge, or discard this patch.
ecrire/action/editer_liens.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -177,7 +177,7 @@
 block discarded – undo
177 177
  * 
178 178
  * @api
179 179
  * @param array $objets_source
180
- * @param array|string $objets_lies
180
+ * @param string $objets_lies
181 181
  * @return int
182 182
  */
183 183
 function objet_optimiser_liens($objets_source,$objets_lies){
Please login to merge, or discard this patch.
Indentation   +309 added lines, -309 removed lines patch added patch discarded remove patch
@@ -32,18 +32,18 @@  discard block
 block discarded – undo
32 32
  *     - array(clé primaire, nom de la table de lien) si associable
33 33
  */
34 34
 function objet_associable($objet){
35
-	$trouver_table = charger_fonction('trouver_table','base');
36
-	$table_sql = table_objet_sql($objet);
37
-
38
-	$l="";
39
-	if ($primary = id_table_objet($objet)
40
-	  AND $trouver_table($l = $table_sql."_liens")
41
-		AND !preg_match(',[^\w],',$primary)
42
-		AND !preg_match(',[^\w],',$l))
43
-		return array($primary,$l);
44
-
45
-	spip_log("Objet $objet non associable : ne dispose pas d'une cle primaire $primary OU d'une table liens $l");
46
-	return false;
35
+    $trouver_table = charger_fonction('trouver_table','base');
36
+    $table_sql = table_objet_sql($objet);
37
+
38
+    $l="";
39
+    if ($primary = id_table_objet($objet)
40
+      AND $trouver_table($l = $table_sql."_liens")
41
+        AND !preg_match(',[^\w],',$primary)
42
+        AND !preg_match(',[^\w],',$l))
43
+        return array($primary,$l);
44
+
45
+    spip_log("Objet $objet non associable : ne dispose pas d'une cle primaire $primary OU d'une table liens $l");
46
+    return false;
47 47
 }
48 48
 
49 49
 /**
@@ -69,12 +69,12 @@  discard block
 block discarded – undo
69 69
  * @return bool|int
70 70
  */
71 71
 function objet_associer($objets_source, $objets_lies, $qualif = null){
72
-	$modifs = objet_traiter_liaisons('lien_insert', $objets_source, $objets_lies);
72
+    $modifs = objet_traiter_liaisons('lien_insert', $objets_source, $objets_lies);
73 73
 
74
-	if ($qualif)
75
-		objet_qualifier_liens($objets_source, $objets_lies, $qualif);
74
+    if ($qualif)
75
+        objet_qualifier_liens($objets_source, $objets_lies, $qualif);
76 76
 
77
-	return $modifs; // pas d'erreur
77
+    return $modifs; // pas d'erreur
78 78
 }
79 79
 
80 80
 
@@ -98,7 +98,7 @@  discard block
 block discarded – undo
98 98
  * @return bool|int
99 99
  */
100 100
 function objet_dissocier($objets_source,$objets_lies){
101
-	return objet_traiter_liaisons('lien_delete',$objets_source,$objets_lies);
101
+    return objet_traiter_liaisons('lien_delete',$objets_source,$objets_lies);
102 102
 }
103 103
 
104 104
 
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
  * @return bool|int
125 125
  */
126 126
 function objet_qualifier_liens($objets_source,$objets_lies,$qualif){
127
-	return objet_traiter_liaisons('lien_set',$objets_source,$objets_lies,$qualif);
127
+    return objet_traiter_liaisons('lien_set',$objets_source,$objets_lies,$qualif);
128 128
 }
129 129
 
130 130
 
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
  * @return array
158 158
  */
159 159
 function objet_trouver_liens($objets_source,$objets_lies){
160
-	return objet_traiter_liaisons('lien_find',$objets_source,$objets_lies);
160
+    return objet_traiter_liaisons('lien_find',$objets_source,$objets_lies);
161 161
 }
162 162
 
163 163
 
@@ -181,7 +181,7 @@  discard block
 block discarded – undo
181 181
  * @return int
182 182
  */
183 183
 function objet_optimiser_liens($objets_source,$objets_lies){
184
-	return objet_traiter_liaisons('lien_optimise',$objets_source,$objets_lies);
184
+    return objet_traiter_liaisons('lien_optimise',$objets_source,$objets_lies);
185 185
 }
186 186
 
187 187
 
@@ -201,32 +201,32 @@  discard block
 block discarded – undo
201 201
  *     Nombre de liens copiés
202 202
  */
203 203
 function objet_dupliquer_liens($objet,$id_source,$id_cible,$types=null,$exclure_types=null){
204
-	include_spip('base/objets');
205
-	$tables = lister_tables_objets_sql();
206
-	$n = 0;
207
-	foreach($tables as $table_sql => $infos){
208
-		if (
209
-			(is_null($types) OR in_array($infos['type'],$types))
210
-			AND (is_null($exclure_types) OR !in_array($infos['type'],$exclure_types))
211
-			){
212
-			if (objet_associable($infos['type'])){
213
-				$liens = (($infos['type']==$objet)?
214
-						objet_trouver_liens(array($objet=>$id_source),'*')
215
-					:
216
-						objet_trouver_liens(array($infos['type']=>'*'),array($objet=>$id_source)));
217
-				foreach($liens as $lien){
218
-					$n++;
219
-					if ($infos['type']==$objet){
220
-						objet_associer(array($objet=>$id_cible),array($lien['objet']=>$lien[$lien['objet']]),$lien);
221
-					}
222
-					else {
223
-						objet_associer(array($infos['type']=>$lien[$infos['type']]),array($objet=>$id_cible),$lien);
224
-					}
225
-				}
226
-			}
227
-		}
228
-	}
229
-	return $n;
204
+    include_spip('base/objets');
205
+    $tables = lister_tables_objets_sql();
206
+    $n = 0;
207
+    foreach($tables as $table_sql => $infos){
208
+        if (
209
+            (is_null($types) OR in_array($infos['type'],$types))
210
+            AND (is_null($exclure_types) OR !in_array($infos['type'],$exclure_types))
211
+            ){
212
+            if (objet_associable($infos['type'])){
213
+                $liens = (($infos['type']==$objet)?
214
+                        objet_trouver_liens(array($objet=>$id_source),'*')
215
+                    :
216
+                        objet_trouver_liens(array($infos['type']=>'*'),array($objet=>$id_source)));
217
+                foreach($liens as $lien){
218
+                    $n++;
219
+                    if ($infos['type']==$objet){
220
+                        objet_associer(array($objet=>$id_cible),array($lien['objet']=>$lien[$lien['objet']]),$lien);
221
+                    }
222
+                    else {
223
+                        objet_associer(array($infos['type']=>$lien[$infos['type']]),array($objet=>$id_cible),$lien);
224
+                    }
225
+                }
226
+            }
227
+        }
228
+    }
229
+    return $n;
230 230
 }
231 231
 
232 232
 /**
@@ -258,36 +258,36 @@  discard block
 block discarded – undo
258 258
  * @return bool|int|array
259 259
  */
260 260
 function objet_traiter_liaisons($operation,$objets_source,$objets_lies, $set = null){
261
-	// accepter une syntaxe minimale pour supprimer tous les liens
262
-	if ($objets_lies=='*') $objets_lies = array('*'=>'*');
263
-	$modifs = 0; // compter le nombre de modifications
264
-	$echec = null;
265
-	foreach($objets_source as $objet=>$ids){
266
-		if ($a = objet_associable($objet)) {
267
-			list($primary,$l) = $a;
268
-			if (!is_array($ids))
269
-				$ids = array($ids);
270
-			elseif(reset($ids)=="NOT"){
271
-				// si on demande un array('NOT',...) => recuperer la liste d'ids correspondants
272
-				$where = lien_where($primary,$ids,'*','*');
273
-				$ids = sql_allfetsel($primary,$l,$where);
274
-				$ids = array_map('reset',$ids);
275
-			}
276
-			foreach($ids as $id) {
277
-				$res = $operation($objet,$primary,$l,$id,$objets_lies,$set);
278
-				if ($res===false) {
279
-					spip_log("objet_traiter_liaisons [Echec] : $operation sur $objet/$primary/$l/$id",_LOG_ERREUR);
280
-					$echec = true;
281
-				}
282
-				else
283
-					$modifs=($modifs?(is_array($res)?array_merge($modifs,$res):$modifs+$res):$res);
284
-			}
285
-		}
286
-		else
287
-			$echec = true;
288
-	}
289
-
290
-	return ($echec?false:$modifs); // pas d'erreur
261
+    // accepter une syntaxe minimale pour supprimer tous les liens
262
+    if ($objets_lies=='*') $objets_lies = array('*'=>'*');
263
+    $modifs = 0; // compter le nombre de modifications
264
+    $echec = null;
265
+    foreach($objets_source as $objet=>$ids){
266
+        if ($a = objet_associable($objet)) {
267
+            list($primary,$l) = $a;
268
+            if (!is_array($ids))
269
+                $ids = array($ids);
270
+            elseif(reset($ids)=="NOT"){
271
+                // si on demande un array('NOT',...) => recuperer la liste d'ids correspondants
272
+                $where = lien_where($primary,$ids,'*','*');
273
+                $ids = sql_allfetsel($primary,$l,$where);
274
+                $ids = array_map('reset',$ids);
275
+            }
276
+            foreach($ids as $id) {
277
+                $res = $operation($objet,$primary,$l,$id,$objets_lies,$set);
278
+                if ($res===false) {
279
+                    spip_log("objet_traiter_liaisons [Echec] : $operation sur $objet/$primary/$l/$id",_LOG_ERREUR);
280
+                    $echec = true;
281
+                }
282
+                else
283
+                    $modifs=($modifs?(is_array($res)?array_merge($modifs,$res):$modifs+$res):$res);
284
+            }
285
+        }
286
+        else
287
+            $echec = true;
288
+    }
289
+
290
+    return ($echec?false:$modifs); // pas d'erreur
291 291
 }
292 292
 
293 293
 
@@ -310,59 +310,59 @@  discard block
 block discarded – undo
310 310
  * @return bool|int
311 311
  */
312 312
 function lien_insert($objet_source,$primary,$table_lien,$id,$objets) {
313
-	$ins = 0;
314
-	$echec = null;
315
-	foreach($objets as $objet => $id_objets){
316
-		if (!is_array($id_objets)) $id_objets = array($id_objets);
317
-		foreach($id_objets as $id_objet) {
318
-			$objet = ($objet=='*')?$objet:objet_type($objet); # securite
319
-			// Envoyer aux plugins
320
-			$id_objet = pipeline('pre_edition_lien',
321
-				array(
322
-					'args' => array(
323
-						'table_lien' => $table_lien,
324
-						'objet_source' => $objet_source,
325
-						'id_objet_source' => $id,
326
-						'objet' => $objet,
327
-						'id_objet' => $id_objet,
328
-						'action'=>'insert',
329
-					),
330
-					'data' => $id_objet
331
-				)
332
-			);
333
-			if ($id_objet=intval($id_objet)
334
-				AND !sql_getfetsel(
335
-								$primary,
336
-								$table_lien,
337
-								array('id_objet='.intval($id_objet), 'objet='.sql_quote($objet), $primary.'='.intval($id))))
338
-			{
339
-
340
-					$e = sql_insertq($table_lien, array('id_objet' => $id_objet, 'objet'=>$objet, $primary=>$id));
341
-					if ($e!==false) {
342
-						$ins++;
343
-						lien_propage_date_modif($objet,$id_objet);
344
-						lien_propage_date_modif($objet_source,$id);
345
-						// Envoyer aux plugins
346
-						pipeline('post_edition_lien',
347
-							array(
348
-								'args' => array(
349
-									'table_lien' => $table_lien,
350
-									'objet_source' => $objet_source,
351
-									'id_objet_source' => $id,
352
-									'objet' => $objet,
353
-									'id_objet' => $id_objet,
354
-									'action'=>'insert',
355
-								),
356
-								'data' => $id_objet
357
-							)
358
-						);
359
-					}
360
-					else
361
-						$echec = true;
362
-			}
363
-		}
364
-	}
365
-	return ($echec?false:$ins);
313
+    $ins = 0;
314
+    $echec = null;
315
+    foreach($objets as $objet => $id_objets){
316
+        if (!is_array($id_objets)) $id_objets = array($id_objets);
317
+        foreach($id_objets as $id_objet) {
318
+            $objet = ($objet=='*')?$objet:objet_type($objet); # securite
319
+            // Envoyer aux plugins
320
+            $id_objet = pipeline('pre_edition_lien',
321
+                array(
322
+                    'args' => array(
323
+                        'table_lien' => $table_lien,
324
+                        'objet_source' => $objet_source,
325
+                        'id_objet_source' => $id,
326
+                        'objet' => $objet,
327
+                        'id_objet' => $id_objet,
328
+                        'action'=>'insert',
329
+                    ),
330
+                    'data' => $id_objet
331
+                )
332
+            );
333
+            if ($id_objet=intval($id_objet)
334
+                AND !sql_getfetsel(
335
+                                $primary,
336
+                                $table_lien,
337
+                                array('id_objet='.intval($id_objet), 'objet='.sql_quote($objet), $primary.'='.intval($id))))
338
+            {
339
+
340
+                    $e = sql_insertq($table_lien, array('id_objet' => $id_objet, 'objet'=>$objet, $primary=>$id));
341
+                    if ($e!==false) {
342
+                        $ins++;
343
+                        lien_propage_date_modif($objet,$id_objet);
344
+                        lien_propage_date_modif($objet_source,$id);
345
+                        // Envoyer aux plugins
346
+                        pipeline('post_edition_lien',
347
+                            array(
348
+                                'args' => array(
349
+                                    'table_lien' => $table_lien,
350
+                                    'objet_source' => $objet_source,
351
+                                    'id_objet_source' => $id,
352
+                                    'objet' => $objet,
353
+                                    'id_objet' => $id_objet,
354
+                                    'action'=>'insert',
355
+                                ),
356
+                                'data' => $id_objet
357
+                            )
358
+                        );
359
+                    }
360
+                    else
361
+                        $echec = true;
362
+            }
363
+        }
364
+    }
365
+    return ($echec?false:$ins);
366 366
 }
367 367
 
368 368
 /**
@@ -376,36 +376,36 @@  discard block
 block discarded – undo
376 376
  * @return array
377 377
  */
378 378
 function lien_where($primary, $id_source, $objet, $id_objet){
379
-	if ((!is_array($id_source) AND !strlen($id_source))
380
-	  OR !strlen($objet)
381
-	  OR (!is_array($id_objet) AND !strlen($id_objet)))
382
-		return array("0=1"); // securite
383
-
384
-	$not="";
385
-	if (is_array($id_source) AND reset($id_source)=="NOT"){
386
-		$not = array_shift($id_source);
387
-		$id_source = reset($id_source);
388
-	}
389
-	$where = array();
390
-	if ($id_source!=='*')
391
-		$where[] = (is_array($id_source)?sql_in(addslashes($primary),array_map('intval',$id_source),$not):addslashes($primary) . ($not?"<>":"=") . intval($id_source));
392
-	elseif ($not)
393
-		$where[] = "0=1"; // idiot mais quand meme
394
-
395
-	$not="";
396
-	if (is_array($id_objet) AND reset($id_objet)=="NOT"){
397
-		$not = array_shift($id_objet);
398
-		$id_objet = reset($id_objet);
399
-	}
400
-
401
-	if ($objet!=='*')
402
-		$where[] = "objet=".sql_quote($objet);
403
-	if ($id_objet!=='*')
404
-		$where[] = (is_array($id_objet)?sql_in('id_objet',array_map('intval',$id_objet),$not):"id_objet" . ($not?"<>":"=") . intval($id_objet));
405
-	elseif ($not)
406
-		$where[] = "0=1"; // idiot mais quand meme
407
-
408
-	return $where;
379
+    if ((!is_array($id_source) AND !strlen($id_source))
380
+      OR !strlen($objet)
381
+      OR (!is_array($id_objet) AND !strlen($id_objet)))
382
+        return array("0=1"); // securite
383
+
384
+    $not="";
385
+    if (is_array($id_source) AND reset($id_source)=="NOT"){
386
+        $not = array_shift($id_source);
387
+        $id_source = reset($id_source);
388
+    }
389
+    $where = array();
390
+    if ($id_source!=='*')
391
+        $where[] = (is_array($id_source)?sql_in(addslashes($primary),array_map('intval',$id_source),$not):addslashes($primary) . ($not?"<>":"=") . intval($id_source));
392
+    elseif ($not)
393
+        $where[] = "0=1"; // idiot mais quand meme
394
+
395
+    $not="";
396
+    if (is_array($id_objet) AND reset($id_objet)=="NOT"){
397
+        $not = array_shift($id_objet);
398
+        $id_objet = reset($id_objet);
399
+    }
400
+
401
+    if ($objet!=='*')
402
+        $where[] = "objet=".sql_quote($objet);
403
+    if ($id_objet!=='*')
404
+        $where[] = (is_array($id_objet)?sql_in('id_objet',array_map('intval',$id_objet),$not):"id_objet" . ($not?"<>":"=") . intval($id_objet));
405
+    elseif ($not)
406
+        $where[] = "0=1"; // idiot mais quand meme
407
+
408
+    return $where;
409 409
 }
410 410
 
411 411
 /**
@@ -426,65 +426,65 @@  discard block
 block discarded – undo
426 426
  * @return bool|int
427 427
  */
428 428
 function lien_delete($objet_source,$primary,$table_lien,$id,$objets){
429
-	$retire = array();
430
-	$dels = 0;
431
-	$echec = false;
432
-	foreach($objets as $objet => $id_objets){
433
-		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
434
-		if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
435
-		foreach($id_objets as $id_objet) {
436
-			// id_objet peut valoir '*'
437
-			$where = lien_where($primary, $id, $objet, $id_objet);
438
-			// lire les liens existants pour propager la date de modif
439
-			$liens = sql_allfetsel("$primary,id_objet,objet",$table_lien,$where);
440
-			// iterer sur les liens pour permettre aux plugins de gerer
441
-			foreach($liens as $l){
442
-				// Envoyer aux plugins
443
-				$id_o = pipeline('pre_edition_lien',
444
-					array(
445
-						'args' => array(
446
-							'table_lien' => $table_lien,
447
-							'objet_source' => $objet_source,
448
-							'id_objet_source' => $l[$primary],
449
-							'objet' => $l['objet'],
450
-							'id_objet' => $l['id_objet'],
451
-							'action'=>'delete',
452
-						),
453
-						'data' => $l['id_objet']
454
-					)
455
-				);
456
-				if ($id_o=intval($id_o)){
457
-					$where = lien_where($primary, $l[$primary], $l['objet'], $id_o);
458
-					$e = sql_delete($table_lien, $where);
459
-					if ($e!==false){
460
-						$dels+=$e;
461
-						lien_propage_date_modif($l['objet'],$id_o);
462
-						lien_propage_date_modif($objet_source,$l[$primary]);
463
-					}
464
-					else
465
-						$echec = true;
466
-					$retire[] = array('source'=>array($objet_source=>$l[$primary]),'lien'=>array($l['objet']=>$id_o),'type'=>$l['objet'],'id'=>$id_o);
467
-					// Envoyer aux plugins
468
-					pipeline('post_edition_lien',
469
-						array(
470
-							'args' => array(
471
-								'table_lien' => $table_lien,
472
-								'objet_source' => $objet_source,
473
-								'id_objet_source' => $l[$primary],
474
-								'objet' => $l['objet'],
475
-								'id_objet' => $id_o,
476
-								'action'=>'delete',
477
-							),
478
-							'data' => $id_o
479
-						)
480
-					);
481
-				}
482
-			}
483
-		}
484
-	}
485
-	pipeline('trig_supprimer_objets_lies',$retire);
486
-
487
-	return ($echec?false:$dels);
429
+    $retire = array();
430
+    $dels = 0;
431
+    $echec = false;
432
+    foreach($objets as $objet => $id_objets){
433
+        $objet = ($objet=='*')?$objet:objet_type($objet); # securite
434
+        if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
435
+        foreach($id_objets as $id_objet) {
436
+            // id_objet peut valoir '*'
437
+            $where = lien_where($primary, $id, $objet, $id_objet);
438
+            // lire les liens existants pour propager la date de modif
439
+            $liens = sql_allfetsel("$primary,id_objet,objet",$table_lien,$where);
440
+            // iterer sur les liens pour permettre aux plugins de gerer
441
+            foreach($liens as $l){
442
+                // Envoyer aux plugins
443
+                $id_o = pipeline('pre_edition_lien',
444
+                    array(
445
+                        'args' => array(
446
+                            'table_lien' => $table_lien,
447
+                            'objet_source' => $objet_source,
448
+                            'id_objet_source' => $l[$primary],
449
+                            'objet' => $l['objet'],
450
+                            'id_objet' => $l['id_objet'],
451
+                            'action'=>'delete',
452
+                        ),
453
+                        'data' => $l['id_objet']
454
+                    )
455
+                );
456
+                if ($id_o=intval($id_o)){
457
+                    $where = lien_where($primary, $l[$primary], $l['objet'], $id_o);
458
+                    $e = sql_delete($table_lien, $where);
459
+                    if ($e!==false){
460
+                        $dels+=$e;
461
+                        lien_propage_date_modif($l['objet'],$id_o);
462
+                        lien_propage_date_modif($objet_source,$l[$primary]);
463
+                    }
464
+                    else
465
+                        $echec = true;
466
+                    $retire[] = array('source'=>array($objet_source=>$l[$primary]),'lien'=>array($l['objet']=>$id_o),'type'=>$l['objet'],'id'=>$id_o);
467
+                    // Envoyer aux plugins
468
+                    pipeline('post_edition_lien',
469
+                        array(
470
+                            'args' => array(
471
+                                'table_lien' => $table_lien,
472
+                                'objet_source' => $objet_source,
473
+                                'id_objet_source' => $l[$primary],
474
+                                'objet' => $l['objet'],
475
+                                'id_objet' => $id_o,
476
+                                'action'=>'delete',
477
+                            ),
478
+                            'data' => $id_o
479
+                        )
480
+                    );
481
+                }
482
+            }
483
+        }
484
+    }
485
+    pipeline('trig_supprimer_objets_lies',$retire);
486
+
487
+    return ($echec?false:$dels);
488 488
 }
489 489
 
490 490
 
@@ -507,51 +507,51 @@  discard block
 block discarded – undo
507 507
  * @return bool|int
508 508
  */
509 509
 function lien_optimise($objet_source,$primary,$table_lien,$id,$objets){
510
-	include_spip('genie/optimiser');
511
-	$echec = false;
512
-	$dels = 0;
513
-	foreach($objets as $objet => $id_objets){
514
-		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
515
-		if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
516
-		foreach($id_objets as $id_objet) {
517
-			$where = lien_where($primary, $id, $objet, $id_objet);
518
-			# les liens vers un objet inexistant
519
-			$r = sql_select("DISTINCT objet",$table_lien,$where);
520
-			while ($t = sql_fetch($r)){
521
-				$type = $t['objet'];
522
-				$spip_table_objet = table_objet_sql($type);
523
-				$id_table_objet = id_table_objet($type);
524
-				$res = sql_select("L.$primary AS id,L.id_objet",
525
-					// la condition de jointure inclue L.objet='xxx' pour ne joindre que les bonnes lignes
526
-					// du coups toutes les lignes avec un autre objet ont un id_xxx=NULL puisque LEFT JOIN
527
-					// il faut les eliminier en repetant la condition dans le where L.objet='xxx'
528
-								"$table_lien AS L
510
+    include_spip('genie/optimiser');
511
+    $echec = false;
512
+    $dels = 0;
513
+    foreach($objets as $objet => $id_objets){
514
+        $objet = ($objet=='*')?$objet:objet_type($objet); # securite
515
+        if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
516
+        foreach($id_objets as $id_objet) {
517
+            $where = lien_where($primary, $id, $objet, $id_objet);
518
+            # les liens vers un objet inexistant
519
+            $r = sql_select("DISTINCT objet",$table_lien,$where);
520
+            while ($t = sql_fetch($r)){
521
+                $type = $t['objet'];
522
+                $spip_table_objet = table_objet_sql($type);
523
+                $id_table_objet = id_table_objet($type);
524
+                $res = sql_select("L.$primary AS id,L.id_objet",
525
+                    // la condition de jointure inclue L.objet='xxx' pour ne joindre que les bonnes lignes
526
+                    // du coups toutes les lignes avec un autre objet ont un id_xxx=NULL puisque LEFT JOIN
527
+                    // il faut les eliminier en repetant la condition dans le where L.objet='xxx'
528
+                                "$table_lien AS L
529 529
 									LEFT JOIN $spip_table_objet AS O
530 530
 										ON (O.$id_table_objet=L.id_objet AND L.objet=".sql_quote($type).")",
531
-						"L.objet=".sql_quote($type)." AND O.$id_table_objet IS NULL");
532
-				// sur une cle primaire composee, pas d'autres solutions que de virer un a un
533
-				while ($row = sql_fetch($res)){
534
-					$e = sql_delete($table_lien, array("$primary=".$row['id'],"id_objet=".$row['id_objet'],"objet=".sql_quote($type)));
535
-					if ($e!=false){
536
-						$dels+=$e;
537
-						spip_log("Entree ".$row['id']."/".$row['id_objet']."/$type supprimee dans la table $table_lien",_LOG_INFO_IMPORTANTE);
538
-					}
539
-				}
540
-			}
541
-
542
-			# les liens depuis un objet inexistant
543
-			$table_source = table_objet_sql($objet_source);
544
-			// filtrer selon $id, $objet, $id_objet eventuellement fournis
545
-			// (en general '*' pour chaque)
546
-			$where = lien_where("L.$primary", $id, $objet, $id_objet);
547
-			$where[] = "O.$primary IS NULL";
548
-			$res = sql_select("L.$primary AS id",
549
-				      "$table_lien AS L LEFT JOIN $table_source AS O ON L.$primary=O.$primary",
550
-							$where);
551
-			$dels+= optimiser_sansref($table_lien, $primary, $res);
552
-		}
553
-	}
554
-	return ($echec?false:$dels);
531
+                        "L.objet=".sql_quote($type)." AND O.$id_table_objet IS NULL");
532
+                // sur une cle primaire composee, pas d'autres solutions que de virer un a un
533
+                while ($row = sql_fetch($res)){
534
+                    $e = sql_delete($table_lien, array("$primary=".$row['id'],"id_objet=".$row['id_objet'],"objet=".sql_quote($type)));
535
+                    if ($e!=false){
536
+                        $dels+=$e;
537
+                        spip_log("Entree ".$row['id']."/".$row['id_objet']."/$type supprimee dans la table $table_lien",_LOG_INFO_IMPORTANTE);
538
+                    }
539
+                }
540
+            }
541
+
542
+            # les liens depuis un objet inexistant
543
+            $table_source = table_objet_sql($objet_source);
544
+            // filtrer selon $id, $objet, $id_objet eventuellement fournis
545
+            // (en general '*' pour chaque)
546
+            $where = lien_where("L.$primary", $id, $objet, $id_objet);
547
+            $where[] = "O.$primary IS NULL";
548
+            $res = sql_select("L.$primary AS id",
549
+                        "$table_lien AS L LEFT JOIN $table_source AS O ON L.$primary=O.$primary",
550
+                            $where);
551
+            $dels+= optimiser_sansref($table_lien, $primary, $res);
552
+        }
553
+    }
554
+    return ($echec?false:$dels);
555 555
 }
556 556
 
557 557
 
@@ -577,31 +577,31 @@  discard block
 block discarded – undo
577 577
  * @return bool|int
578 578
  */
579 579
 function lien_set($objet_source,$primary,$table_lien,$id,$objets,$qualif){
580
-	$echec = null;
581
-	$ok = 0;
582
-	if (!$qualif)
583
-		return false;
584
-	// nettoyer qualif qui peut venir directement d'un objet_trouver_lien :
585
-	unset($qualif[$primary]);
586
-	unset($qualif[$objet_source]);
587
-	if (isset($qualif['objet'])) {
588
-		unset($qualif[$qualif['objet']]);
589
-	}
590
-	unset($qualif['objet']);
591
-	unset($qualif['id_objet']);
592
-	foreach($objets as $objet => $id_objets){
593
-		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
594
-		if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
595
-		foreach($id_objets as $id_objet) {
596
-			$where = lien_where($primary, $id, $objet, $id_objet);
597
-			$e = sql_updateq($table_lien,$qualif,$where);
598
-			if ($e===false)
599
-				$echec = true;
600
-		  else
601
-			  $ok++;
602
-		}
603
-	}
604
-	return ($echec?false:$ok);
580
+    $echec = null;
581
+    $ok = 0;
582
+    if (!$qualif)
583
+        return false;
584
+    // nettoyer qualif qui peut venir directement d'un objet_trouver_lien :
585
+    unset($qualif[$primary]);
586
+    unset($qualif[$objet_source]);
587
+    if (isset($qualif['objet'])) {
588
+        unset($qualif[$qualif['objet']]);
589
+    }
590
+    unset($qualif['objet']);
591
+    unset($qualif['id_objet']);
592
+    foreach($objets as $objet => $id_objets){
593
+        $objet = ($objet=='*')?$objet:objet_type($objet); # securite
594
+        if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
595
+        foreach($id_objets as $id_objet) {
596
+            $where = lien_where($primary, $id, $objet, $id_objet);
597
+            $e = sql_updateq($table_lien,$qualif,$where);
598
+            if ($e===false)
599
+                $echec = true;
600
+            else
601
+                $ok++;
602
+        }
603
+    }
604
+    return ($echec?false:$ok);
605 605
 }
606 606
 
607 607
 /**
@@ -623,20 +623,20 @@  discard block
 block discarded – undo
623 623
  * @return array
624 624
  */
625 625
 function lien_find($objet_source,$primary,$table_lien,$id,$objets){
626
-	$trouve = array();
627
-	foreach($objets as $objet => $id_objets){
628
-		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
629
-		// lien_where prend en charge les $id_objets sous forme int ou array
630
-		$where = lien_where($primary, $id, $objet, $id_objets);
631
-		$liens = sql_allfetsel('*',$table_lien,$where);
632
-		// ajouter les entrees objet_source et objet cible par convenance
633
-		foreach($liens as $l) {
634
-			$l[$objet_source] = $l[$primary];
635
-			$l[$objet] = $l['id_objet'];
636
-			$trouve[] = $l;
637
-		}
638
-	}
639
-	return $trouve;
626
+    $trouve = array();
627
+    foreach($objets as $objet => $id_objets){
628
+        $objet = ($objet=='*')?$objet:objet_type($objet); # securite
629
+        // lien_where prend en charge les $id_objets sous forme int ou array
630
+        $where = lien_where($primary, $id, $objet, $id_objets);
631
+        $liens = sql_allfetsel('*',$table_lien,$where);
632
+        // ajouter les entrees objet_source et objet cible par convenance
633
+        foreach($liens as $l) {
634
+            $l[$objet_source] = $l[$primary];
635
+            $l[$objet] = $l['id_objet'];
636
+            $trouve[] = $l;
637
+        }
638
+    }
639
+    return $trouve;
640 640
 }
641 641
 
642 642
 /**
@@ -647,14 +647,14 @@  discard block
 block discarded – undo
647 647
  * @param array|int $ids
648 648
  */
649 649
 function lien_propage_date_modif($objet,$ids){
650
-	$trouver_table = charger_fonction('trouver_table','base');
651
-
652
-	$table = table_objet_sql($objet);
653
-	if ($desc = $trouver_table($table)
654
-	 AND isset($desc['field']['date_modif'])){
655
-		$primary = id_table_objet($objet);
656
-		$where = (is_array($ids)?sql_in($primary, array_map('intval',$ids)):"$primary=".intval($ids));
657
-		sql_updateq($table, array('date_modif'=>date('Y-m-d H:i:s')), $where);
658
-	}
650
+    $trouver_table = charger_fonction('trouver_table','base');
651
+
652
+    $table = table_objet_sql($objet);
653
+    if ($desc = $trouver_table($table)
654
+     AND isset($desc['field']['date_modif'])){
655
+        $primary = id_table_objet($objet);
656
+        $where = (is_array($ids)?sql_in($primary, array_map('intval',$ids)):"$primary=".intval($ids));
657
+        sql_updateq($table, array('date_modif'=>date('Y-m-d H:i:s')), $where);
658
+    }
659 659
 }
660 660
 ?>
Please login to merge, or discard this patch.
Spacing   +107 added lines, -107 removed lines patch added patch discarded remove patch
@@ -31,16 +31,16 @@  discard block
 block discarded – undo
31 31
  *     - false si l'objet n'est pas associable.
32 32
  *     - array(clé primaire, nom de la table de lien) si associable
33 33
  */
34
-function objet_associable($objet){
35
-	$trouver_table = charger_fonction('trouver_table','base');
34
+function objet_associable($objet) {
35
+	$trouver_table = charger_fonction('trouver_table', 'base');
36 36
 	$table_sql = table_objet_sql($objet);
37 37
 
38
-	$l="";
38
+	$l = "";
39 39
 	if ($primary = id_table_objet($objet)
40 40
 	  AND $trouver_table($l = $table_sql."_liens")
41
-		AND !preg_match(',[^\w],',$primary)
42
-		AND !preg_match(',[^\w],',$l))
43
-		return array($primary,$l);
41
+		AND !preg_match(',[^\w],', $primary)
42
+		AND !preg_match(',[^\w],', $l))
43
+		return array($primary, $l);
44 44
 
45 45
 	spip_log("Objet $objet non associable : ne dispose pas d'une cle primaire $primary OU d'une table liens $l");
46 46
 	return false;
@@ -68,7 +68,7 @@  discard block
 block discarded – undo
68 68
  * @param array $qualif
69 69
  * @return bool|int
70 70
  */
71
-function objet_associer($objets_source, $objets_lies, $qualif = null){
71
+function objet_associer($objets_source, $objets_lies, $qualif = null) {
72 72
 	$modifs = objet_traiter_liaisons('lien_insert', $objets_source, $objets_lies);
73 73
 
74 74
 	if ($qualif)
@@ -97,8 +97,8 @@  discard block
 block discarded – undo
97 97
  * @param array|string $objets_lies
98 98
  * @return bool|int
99 99
  */
100
-function objet_dissocier($objets_source,$objets_lies){
101
-	return objet_traiter_liaisons('lien_delete',$objets_source,$objets_lies);
100
+function objet_dissocier($objets_source, $objets_lies) {
101
+	return objet_traiter_liaisons('lien_delete', $objets_source, $objets_lies);
102 102
 }
103 103
 
104 104
 
@@ -123,8 +123,8 @@  discard block
 block discarded – undo
123 123
  * @param array $qualif
124 124
  * @return bool|int
125 125
  */
126
-function objet_qualifier_liens($objets_source,$objets_lies,$qualif){
127
-	return objet_traiter_liaisons('lien_set',$objets_source,$objets_lies,$qualif);
126
+function objet_qualifier_liens($objets_source, $objets_lies, $qualif) {
127
+	return objet_traiter_liaisons('lien_set', $objets_source, $objets_lies, $qualif);
128 128
 }
129 129
 
130 130
 
@@ -156,8 +156,8 @@  discard block
 block discarded – undo
156 156
  * @param array|string $objets_lies
157 157
  * @return array
158 158
  */
159
-function objet_trouver_liens($objets_source,$objets_lies){
160
-	return objet_traiter_liaisons('lien_find',$objets_source,$objets_lies);
159
+function objet_trouver_liens($objets_source, $objets_lies) {
160
+	return objet_traiter_liaisons('lien_find', $objets_source, $objets_lies);
161 161
 }
162 162
 
163 163
 
@@ -180,8 +180,8 @@  discard block
 block discarded – undo
180 180
  * @param array|string $objets_lies
181 181
  * @return int
182 182
  */
183
-function objet_optimiser_liens($objets_source,$objets_lies){
184
-	return objet_traiter_liaisons('lien_optimise',$objets_source,$objets_lies);
183
+function objet_optimiser_liens($objets_source, $objets_lies) {
184
+	return objet_traiter_liaisons('lien_optimise', $objets_source, $objets_lies);
185 185
 }
186 186
 
187 187
 
@@ -200,27 +200,27 @@  discard block
 block discarded – undo
200 200
  * @return int
201 201
  *     Nombre de liens copiés
202 202
  */
203
-function objet_dupliquer_liens($objet,$id_source,$id_cible,$types=null,$exclure_types=null){
203
+function objet_dupliquer_liens($objet, $id_source, $id_cible, $types = null, $exclure_types = null) {
204 204
 	include_spip('base/objets');
205 205
 	$tables = lister_tables_objets_sql();
206 206
 	$n = 0;
207
-	foreach($tables as $table_sql => $infos){
207
+	foreach ($tables as $table_sql => $infos) {
208 208
 		if (
209
-			(is_null($types) OR in_array($infos['type'],$types))
210
-			AND (is_null($exclure_types) OR !in_array($infos['type'],$exclure_types))
211
-			){
212
-			if (objet_associable($infos['type'])){
213
-				$liens = (($infos['type']==$objet)?
214
-						objet_trouver_liens(array($objet=>$id_source),'*')
209
+			(is_null($types) OR in_array($infos['type'], $types))
210
+			AND (is_null($exclure_types) OR !in_array($infos['type'], $exclure_types))
211
+			) {
212
+			if (objet_associable($infos['type'])) {
213
+				$liens = (($infos['type'] == $objet) ?
214
+						objet_trouver_liens(array($objet=>$id_source), '*')
215 215
 					:
216
-						objet_trouver_liens(array($infos['type']=>'*'),array($objet=>$id_source)));
217
-				foreach($liens as $lien){
216
+						objet_trouver_liens(array($infos['type']=>'*'), array($objet=>$id_source)));
217
+				foreach ($liens as $lien) {
218 218
 					$n++;
219
-					if ($infos['type']==$objet){
220
-						objet_associer(array($objet=>$id_cible),array($lien['objet']=>$lien[$lien['objet']]),$lien);
219
+					if ($infos['type'] == $objet) {
220
+						objet_associer(array($objet=>$id_cible), array($lien['objet']=>$lien[$lien['objet']]), $lien);
221 221
 					}
222 222
 					else {
223
-						objet_associer(array($infos['type']=>$lien[$infos['type']]),array($objet=>$id_cible),$lien);
223
+						objet_associer(array($infos['type']=>$lien[$infos['type']]), array($objet=>$id_cible), $lien);
224 224
 					}
225 225
 				}
226 226
 			}
@@ -257,37 +257,37 @@  discard block
 block discarded – undo
257 257
  * @param array $set
258 258
  * @return bool|int|array
259 259
  */
260
-function objet_traiter_liaisons($operation,$objets_source,$objets_lies, $set = null){
260
+function objet_traiter_liaisons($operation, $objets_source, $objets_lies, $set = null) {
261 261
 	// accepter une syntaxe minimale pour supprimer tous les liens
262
-	if ($objets_lies=='*') $objets_lies = array('*'=>'*');
262
+	if ($objets_lies == '*') $objets_lies = array('*'=>'*');
263 263
 	$modifs = 0; // compter le nombre de modifications
264 264
 	$echec = null;
265
-	foreach($objets_source as $objet=>$ids){
265
+	foreach ($objets_source as $objet=>$ids) {
266 266
 		if ($a = objet_associable($objet)) {
267
-			list($primary,$l) = $a;
267
+			list($primary, $l) = $a;
268 268
 			if (!is_array($ids))
269 269
 				$ids = array($ids);
270
-			elseif(reset($ids)=="NOT"){
270
+			elseif (reset($ids) == "NOT") {
271 271
 				// si on demande un array('NOT',...) => recuperer la liste d'ids correspondants
272
-				$where = lien_where($primary,$ids,'*','*');
273
-				$ids = sql_allfetsel($primary,$l,$where);
274
-				$ids = array_map('reset',$ids);
272
+				$where = lien_where($primary, $ids, '*', '*');
273
+				$ids = sql_allfetsel($primary, $l, $where);
274
+				$ids = array_map('reset', $ids);
275 275
 			}
276
-			foreach($ids as $id) {
277
-				$res = $operation($objet,$primary,$l,$id,$objets_lies,$set);
278
-				if ($res===false) {
279
-					spip_log("objet_traiter_liaisons [Echec] : $operation sur $objet/$primary/$l/$id",_LOG_ERREUR);
276
+			foreach ($ids as $id) {
277
+				$res = $operation($objet, $primary, $l, $id, $objets_lies, $set);
278
+				if ($res === false) {
279
+					spip_log("objet_traiter_liaisons [Echec] : $operation sur $objet/$primary/$l/$id", _LOG_ERREUR);
280 280
 					$echec = true;
281 281
 				}
282 282
 				else
283
-					$modifs=($modifs?(is_array($res)?array_merge($modifs,$res):$modifs+$res):$res);
283
+					$modifs = ($modifs ? (is_array($res) ? array_merge($modifs, $res) : $modifs + $res) : $res);
284 284
 			}
285 285
 		}
286 286
 		else
287 287
 			$echec = true;
288 288
 	}
289 289
 
290
-	return ($echec?false:$modifs); // pas d'erreur
290
+	return ($echec ? false : $modifs); // pas d'erreur
291 291
 }
292 292
 
293 293
 
@@ -309,13 +309,13 @@  discard block
 block discarded – undo
309 309
  * @param array $objets
310 310
  * @return bool|int
311 311
  */
312
-function lien_insert($objet_source,$primary,$table_lien,$id,$objets) {
312
+function lien_insert($objet_source, $primary, $table_lien, $id, $objets) {
313 313
 	$ins = 0;
314 314
 	$echec = null;
315
-	foreach($objets as $objet => $id_objets){
315
+	foreach ($objets as $objet => $id_objets) {
316 316
 		if (!is_array($id_objets)) $id_objets = array($id_objets);
317
-		foreach($id_objets as $id_objet) {
318
-			$objet = ($objet=='*')?$objet:objet_type($objet); # securite
317
+		foreach ($id_objets as $id_objet) {
318
+			$objet = ($objet == '*') ? $objet : objet_type($objet); # securite
319 319
 			// Envoyer aux plugins
320 320
 			$id_objet = pipeline('pre_edition_lien',
321 321
 				array(
@@ -330,7 +330,7 @@  discard block
 block discarded – undo
330 330
 					'data' => $id_objet
331 331
 				)
332 332
 			);
333
-			if ($id_objet=intval($id_objet)
333
+			if ($id_objet = intval($id_objet)
334 334
 				AND !sql_getfetsel(
335 335
 								$primary,
336 336
 								$table_lien,
@@ -338,10 +338,10 @@  discard block
 block discarded – undo
338 338
 			{
339 339
 
340 340
 					$e = sql_insertq($table_lien, array('id_objet' => $id_objet, 'objet'=>$objet, $primary=>$id));
341
-					if ($e!==false) {
341
+					if ($e !== false) {
342 342
 						$ins++;
343
-						lien_propage_date_modif($objet,$id_objet);
344
-						lien_propage_date_modif($objet_source,$id);
343
+						lien_propage_date_modif($objet, $id_objet);
344
+						lien_propage_date_modif($objet_source, $id);
345 345
 						// Envoyer aux plugins
346 346
 						pipeline('post_edition_lien',
347 347
 							array(
@@ -362,7 +362,7 @@  discard block
 block discarded – undo
362 362
 			}
363 363
 		}
364 364
 	}
365
-	return ($echec?false:$ins);
365
+	return ($echec ? false : $ins);
366 366
 }
367 367
 
368 368
 /**
@@ -375,33 +375,33 @@  discard block
 block discarded – undo
375 375
  * @param int|string|array $id_objet
376 376
  * @return array
377 377
  */
378
-function lien_where($primary, $id_source, $objet, $id_objet){
378
+function lien_where($primary, $id_source, $objet, $id_objet) {
379 379
 	if ((!is_array($id_source) AND !strlen($id_source))
380 380
 	  OR !strlen($objet)
381 381
 	  OR (!is_array($id_objet) AND !strlen($id_objet)))
382 382
 		return array("0=1"); // securite
383 383
 
384
-	$not="";
385
-	if (is_array($id_source) AND reset($id_source)=="NOT"){
384
+	$not = "";
385
+	if (is_array($id_source) AND reset($id_source) == "NOT") {
386 386
 		$not = array_shift($id_source);
387 387
 		$id_source = reset($id_source);
388 388
 	}
389 389
 	$where = array();
390
-	if ($id_source!=='*')
391
-		$where[] = (is_array($id_source)?sql_in(addslashes($primary),array_map('intval',$id_source),$not):addslashes($primary) . ($not?"<>":"=") . intval($id_source));
390
+	if ($id_source !== '*')
391
+		$where[] = (is_array($id_source) ? sql_in(addslashes($primary), array_map('intval', $id_source), $not) : addslashes($primary).($not ? "<>" : "=").intval($id_source));
392 392
 	elseif ($not)
393 393
 		$where[] = "0=1"; // idiot mais quand meme
394 394
 
395
-	$not="";
396
-	if (is_array($id_objet) AND reset($id_objet)=="NOT"){
395
+	$not = "";
396
+	if (is_array($id_objet) AND reset($id_objet) == "NOT") {
397 397
 		$not = array_shift($id_objet);
398 398
 		$id_objet = reset($id_objet);
399 399
 	}
400 400
 
401
-	if ($objet!=='*')
401
+	if ($objet !== '*')
402 402
 		$where[] = "objet=".sql_quote($objet);
403
-	if ($id_objet!=='*')
404
-		$where[] = (is_array($id_objet)?sql_in('id_objet',array_map('intval',$id_objet),$not):"id_objet" . ($not?"<>":"=") . intval($id_objet));
403
+	if ($id_objet !== '*')
404
+		$where[] = (is_array($id_objet) ? sql_in('id_objet', array_map('intval', $id_objet), $not) : "id_objet".($not ? "<>" : "=").intval($id_objet));
405 405
 	elseif ($not)
406 406
 		$where[] = "0=1"; // idiot mais quand meme
407 407
 
@@ -425,20 +425,20 @@  discard block
 block discarded – undo
425 425
  * @param array $objets
426 426
  * @return bool|int
427 427
  */
428
-function lien_delete($objet_source,$primary,$table_lien,$id,$objets){
428
+function lien_delete($objet_source, $primary, $table_lien, $id, $objets) {
429 429
 	$retire = array();
430 430
 	$dels = 0;
431 431
 	$echec = false;
432
-	foreach($objets as $objet => $id_objets){
433
-		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
434
-		if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
435
-		foreach($id_objets as $id_objet) {
432
+	foreach ($objets as $objet => $id_objets) {
433
+		$objet = ($objet == '*') ? $objet : objet_type($objet); # securite
434
+		if (!is_array($id_objets) OR reset($id_objets) == "NOT") $id_objets = array($id_objets);
435
+		foreach ($id_objets as $id_objet) {
436 436
 			// id_objet peut valoir '*'
437 437
 			$where = lien_where($primary, $id, $objet, $id_objet);
438 438
 			// lire les liens existants pour propager la date de modif
439
-			$liens = sql_allfetsel("$primary,id_objet,objet",$table_lien,$where);
439
+			$liens = sql_allfetsel("$primary,id_objet,objet", $table_lien, $where);
440 440
 			// iterer sur les liens pour permettre aux plugins de gerer
441
-			foreach($liens as $l){
441
+			foreach ($liens as $l) {
442 442
 				// Envoyer aux plugins
443 443
 				$id_o = pipeline('pre_edition_lien',
444 444
 					array(
@@ -453,17 +453,17 @@  discard block
 block discarded – undo
453 453
 						'data' => $l['id_objet']
454 454
 					)
455 455
 				);
456
-				if ($id_o=intval($id_o)){
456
+				if ($id_o = intval($id_o)) {
457 457
 					$where = lien_where($primary, $l[$primary], $l['objet'], $id_o);
458 458
 					$e = sql_delete($table_lien, $where);
459
-					if ($e!==false){
460
-						$dels+=$e;
461
-						lien_propage_date_modif($l['objet'],$id_o);
462
-						lien_propage_date_modif($objet_source,$l[$primary]);
459
+					if ($e !== false) {
460
+						$dels += $e;
461
+						lien_propage_date_modif($l['objet'], $id_o);
462
+						lien_propage_date_modif($objet_source, $l[$primary]);
463 463
 					}
464 464
 					else
465 465
 						$echec = true;
466
-					$retire[] = array('source'=>array($objet_source=>$l[$primary]),'lien'=>array($l['objet']=>$id_o),'type'=>$l['objet'],'id'=>$id_o);
466
+					$retire[] = array('source'=>array($objet_source=>$l[$primary]), 'lien'=>array($l['objet']=>$id_o), 'type'=>$l['objet'], 'id'=>$id_o);
467 467
 					// Envoyer aux plugins
468 468
 					pipeline('post_edition_lien',
469 469
 						array(
@@ -482,9 +482,9 @@  discard block
 block discarded – undo
482 482
 			}
483 483
 		}
484 484
 	}
485
-	pipeline('trig_supprimer_objets_lies',$retire);
485
+	pipeline('trig_supprimer_objets_lies', $retire);
486 486
 
487
-	return ($echec?false:$dels);
487
+	return ($echec ? false : $dels);
488 488
 }
489 489
 
490 490
 
@@ -506,18 +506,18 @@  discard block
 block discarded – undo
506 506
  * @param array $objets
507 507
  * @return bool|int
508 508
  */
509
-function lien_optimise($objet_source,$primary,$table_lien,$id,$objets){
509
+function lien_optimise($objet_source, $primary, $table_lien, $id, $objets) {
510 510
 	include_spip('genie/optimiser');
511 511
 	$echec = false;
512 512
 	$dels = 0;
513
-	foreach($objets as $objet => $id_objets){
514
-		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
515
-		if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
516
-		foreach($id_objets as $id_objet) {
513
+	foreach ($objets as $objet => $id_objets) {
514
+		$objet = ($objet == '*') ? $objet : objet_type($objet); # securite
515
+		if (!is_array($id_objets) OR reset($id_objets) == "NOT") $id_objets = array($id_objets);
516
+		foreach ($id_objets as $id_objet) {
517 517
 			$where = lien_where($primary, $id, $objet, $id_objet);
518 518
 			# les liens vers un objet inexistant
519
-			$r = sql_select("DISTINCT objet",$table_lien,$where);
520
-			while ($t = sql_fetch($r)){
519
+			$r = sql_select("DISTINCT objet", $table_lien, $where);
520
+			while ($t = sql_fetch($r)) {
521 521
 				$type = $t['objet'];
522 522
 				$spip_table_objet = table_objet_sql($type);
523 523
 				$id_table_objet = id_table_objet($type);
@@ -530,11 +530,11 @@  discard block
 block discarded – undo
530 530
 										ON (O.$id_table_objet=L.id_objet AND L.objet=".sql_quote($type).")",
531 531
 						"L.objet=".sql_quote($type)." AND O.$id_table_objet IS NULL");
532 532
 				// sur une cle primaire composee, pas d'autres solutions que de virer un a un
533
-				while ($row = sql_fetch($res)){
534
-					$e = sql_delete($table_lien, array("$primary=".$row['id'],"id_objet=".$row['id_objet'],"objet=".sql_quote($type)));
535
-					if ($e!=false){
536
-						$dels+=$e;
537
-						spip_log("Entree ".$row['id']."/".$row['id_objet']."/$type supprimee dans la table $table_lien",_LOG_INFO_IMPORTANTE);
533
+				while ($row = sql_fetch($res)) {
534
+					$e = sql_delete($table_lien, array("$primary=".$row['id'], "id_objet=".$row['id_objet'], "objet=".sql_quote($type)));
535
+					if ($e != false) {
536
+						$dels += $e;
537
+						spip_log("Entree ".$row['id']."/".$row['id_objet']."/$type supprimee dans la table $table_lien", _LOG_INFO_IMPORTANTE);
538 538
 					}
539 539
 				}
540 540
 			}
@@ -548,10 +548,10 @@  discard block
 block discarded – undo
548 548
 			$res = sql_select("L.$primary AS id",
549 549
 				      "$table_lien AS L LEFT JOIN $table_source AS O ON L.$primary=O.$primary",
550 550
 							$where);
551
-			$dels+= optimiser_sansref($table_lien, $primary, $res);
551
+			$dels += optimiser_sansref($table_lien, $primary, $res);
552 552
 		}
553 553
 	}
554
-	return ($echec?false:$dels);
554
+	return ($echec ? false : $dels);
555 555
 }
556 556
 
557 557
 
@@ -576,7 +576,7 @@  discard block
 block discarded – undo
576 576
  * @param array $qualif
577 577
  * @return bool|int
578 578
  */
579
-function lien_set($objet_source,$primary,$table_lien,$id,$objets,$qualif){
579
+function lien_set($objet_source, $primary, $table_lien, $id, $objets, $qualif) {
580 580
 	$echec = null;
581 581
 	$ok = 0;
582 582
 	if (!$qualif)
@@ -589,19 +589,19 @@  discard block
 block discarded – undo
589 589
 	}
590 590
 	unset($qualif['objet']);
591 591
 	unset($qualif['id_objet']);
592
-	foreach($objets as $objet => $id_objets){
593
-		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
594
-		if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
595
-		foreach($id_objets as $id_objet) {
592
+	foreach ($objets as $objet => $id_objets) {
593
+		$objet = ($objet == '*') ? $objet : objet_type($objet); # securite
594
+		if (!is_array($id_objets) OR reset($id_objets) == "NOT") $id_objets = array($id_objets);
595
+		foreach ($id_objets as $id_objet) {
596 596
 			$where = lien_where($primary, $id, $objet, $id_objet);
597
-			$e = sql_updateq($table_lien,$qualif,$where);
598
-			if ($e===false)
597
+			$e = sql_updateq($table_lien, $qualif, $where);
598
+			if ($e === false)
599 599
 				$echec = true;
600 600
 		  else
601 601
 			  $ok++;
602 602
 		}
603 603
 	}
604
-	return ($echec?false:$ok);
604
+	return ($echec ? false : $ok);
605 605
 }
606 606
 
607 607
 /**
@@ -622,15 +622,15 @@  discard block
 block discarded – undo
622 622
  * @param array $objets
623 623
  * @return array
624 624
  */
625
-function lien_find($objet_source,$primary,$table_lien,$id,$objets){
625
+function lien_find($objet_source, $primary, $table_lien, $id, $objets) {
626 626
 	$trouve = array();
627
-	foreach($objets as $objet => $id_objets){
628
-		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
627
+	foreach ($objets as $objet => $id_objets) {
628
+		$objet = ($objet == '*') ? $objet : objet_type($objet); # securite
629 629
 		// lien_where prend en charge les $id_objets sous forme int ou array
630 630
 		$where = lien_where($primary, $id, $objet, $id_objets);
631
-		$liens = sql_allfetsel('*',$table_lien,$where);
631
+		$liens = sql_allfetsel('*', $table_lien, $where);
632 632
 		// ajouter les entrees objet_source et objet cible par convenance
633
-		foreach($liens as $l) {
633
+		foreach ($liens as $l) {
634 634
 			$l[$objet_source] = $l[$primary];
635 635
 			$l[$objet] = $l['id_objet'];
636 636
 			$trouve[] = $l;
@@ -646,14 +646,14 @@  discard block
 block discarded – undo
646 646
  * @param string $objet
647 647
  * @param array|int $ids
648 648
  */
649
-function lien_propage_date_modif($objet,$ids){
650
-	$trouver_table = charger_fonction('trouver_table','base');
649
+function lien_propage_date_modif($objet, $ids) {
650
+	$trouver_table = charger_fonction('trouver_table', 'base');
651 651
 
652 652
 	$table = table_objet_sql($objet);
653 653
 	if ($desc = $trouver_table($table)
654
-	 AND isset($desc['field']['date_modif'])){
654
+	 AND isset($desc['field']['date_modif'])) {
655 655
 		$primary = id_table_objet($objet);
656
-		$where = (is_array($ids)?sql_in($primary, array_map('intval',$ids)):"$primary=".intval($ids));
656
+		$where = (is_array($ids) ? sql_in($primary, array_map('intval', $ids)) : "$primary=".intval($ids));
657 657
 		sql_updateq($table, array('date_modif'=>date('Y-m-d H:i:s')), $where);
658 658
 	}
659 659
 }
Please login to merge, or discard this patch.
Braces   +63 added lines, -41 removed lines patch added patch discarded remove patch
@@ -16,7 +16,9 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Liens\API
17 17
  */
18 18
  
19
-if (!defined('_ECRIRE_INC_VERSION')) return;
19
+if (!defined('_ECRIRE_INC_VERSION')) {
20
+    return;
21
+}
20 22
 
21 23
 
22 24
 
@@ -39,8 +41,9 @@  discard block
 block discarded – undo
39 41
 	if ($primary = id_table_objet($objet)
40 42
 	  AND $trouver_table($l = $table_sql."_liens")
41 43
 		AND !preg_match(',[^\w],',$primary)
42
-		AND !preg_match(',[^\w],',$l))
43
-		return array($primary,$l);
44
+		AND !preg_match(',[^\w],',$l)) {
45
+			return array($primary,$l);
46
+	}
44 47
 
45 48
 	spip_log("Objet $objet non associable : ne dispose pas d'une cle primaire $primary OU d'une table liens $l");
46 49
 	return false;
@@ -71,8 +74,9 @@  discard block
 block discarded – undo
71 74
 function objet_associer($objets_source, $objets_lies, $qualif = null){
72 75
 	$modifs = objet_traiter_liaisons('lien_insert', $objets_source, $objets_lies);
73 76
 
74
-	if ($qualif)
75
-		objet_qualifier_liens($objets_source, $objets_lies, $qualif);
77
+	if ($qualif) {
78
+			objet_qualifier_liens($objets_source, $objets_lies, $qualif);
79
+	}
76 80
 
77 81
 	return $modifs; // pas d'erreur
78 82
 }
@@ -218,8 +222,7 @@  discard block
 block discarded – undo
218 222
 					$n++;
219 223
 					if ($infos['type']==$objet){
220 224
 						objet_associer(array($objet=>$id_cible),array($lien['objet']=>$lien[$lien['objet']]),$lien);
221
-					}
222
-					else {
225
+					} else {
223 226
 						objet_associer(array($infos['type']=>$lien[$infos['type']]),array($objet=>$id_cible),$lien);
224 227
 					}
225 228
 				}
@@ -259,15 +262,17 @@  discard block
 block discarded – undo
259 262
  */
260 263
 function objet_traiter_liaisons($operation,$objets_source,$objets_lies, $set = null){
261 264
 	// accepter une syntaxe minimale pour supprimer tous les liens
262
-	if ($objets_lies=='*') $objets_lies = array('*'=>'*');
265
+	if ($objets_lies=='*') {
266
+	    $objets_lies = array('*'=>'*');
267
+	}
263 268
 	$modifs = 0; // compter le nombre de modifications
264 269
 	$echec = null;
265 270
 	foreach($objets_source as $objet=>$ids){
266 271
 		if ($a = objet_associable($objet)) {
267 272
 			list($primary,$l) = $a;
268
-			if (!is_array($ids))
269
-				$ids = array($ids);
270
-			elseif(reset($ids)=="NOT"){
273
+			if (!is_array($ids)) {
274
+							$ids = array($ids);
275
+			} elseif(reset($ids)=="NOT"){
271 276
 				// si on demande un array('NOT',...) => recuperer la liste d'ids correspondants
272 277
 				$where = lien_where($primary,$ids,'*','*');
273 278
 				$ids = sql_allfetsel($primary,$l,$where);
@@ -278,13 +283,13 @@  discard block
 block discarded – undo
278 283
 				if ($res===false) {
279 284
 					spip_log("objet_traiter_liaisons [Echec] : $operation sur $objet/$primary/$l/$id",_LOG_ERREUR);
280 285
 					$echec = true;
286
+				} else {
287
+									$modifs=($modifs?(is_array($res)?array_merge($modifs,$res):$modifs+$res):$res);
281 288
 				}
282
-				else
283
-					$modifs=($modifs?(is_array($res)?array_merge($modifs,$res):$modifs+$res):$res);
284 289
 			}
290
+		} else {
291
+					$echec = true;
285 292
 		}
286
-		else
287
-			$echec = true;
288 293
 	}
289 294
 
290 295
 	return ($echec?false:$modifs); // pas d'erreur
@@ -313,7 +318,9 @@  discard block
 block discarded – undo
313 318
 	$ins = 0;
314 319
 	$echec = null;
315 320
 	foreach($objets as $objet => $id_objets){
316
-		if (!is_array($id_objets)) $id_objets = array($id_objets);
321
+		if (!is_array($id_objets)) {
322
+		    $id_objets = array($id_objets);
323
+		}
317 324
 		foreach($id_objets as $id_objet) {
318 325
 			$objet = ($objet=='*')?$objet:objet_type($objet); # securite
319 326
 			// Envoyer aux plugins
@@ -356,9 +363,9 @@  discard block
 block discarded – undo
356 363
 								'data' => $id_objet
357 364
 							)
358 365
 						);
366
+					} else {
367
+											$echec = true;
359 368
 					}
360
-					else
361
-						$echec = true;
362 369
 			}
363 370
 		}
364 371
 	}
@@ -378,8 +385,10 @@  discard block
 block discarded – undo
378 385
 function lien_where($primary, $id_source, $objet, $id_objet){
379 386
 	if ((!is_array($id_source) AND !strlen($id_source))
380 387
 	  OR !strlen($objet)
381
-	  OR (!is_array($id_objet) AND !strlen($id_objet)))
382
-		return array("0=1"); // securite
388
+	  OR (!is_array($id_objet) AND !strlen($id_objet))) {
389
+			return array("0=1");
390
+	}
391
+	// securite
383 392
 
384 393
 	$not="";
385 394
 	if (is_array($id_source) AND reset($id_source)=="NOT"){
@@ -387,10 +396,12 @@  discard block
 block discarded – undo
387 396
 		$id_source = reset($id_source);
388 397
 	}
389 398
 	$where = array();
390
-	if ($id_source!=='*')
391
-		$where[] = (is_array($id_source)?sql_in(addslashes($primary),array_map('intval',$id_source),$not):addslashes($primary) . ($not?"<>":"=") . intval($id_source));
392
-	elseif ($not)
393
-		$where[] = "0=1"; // idiot mais quand meme
399
+	if ($id_source!=='*') {
400
+			$where[] = (is_array($id_source)?sql_in(addslashes($primary),array_map('intval',$id_source),$not):addslashes($primary) . ($not?"<>":"=") . intval($id_source));
401
+	} elseif ($not) {
402
+			$where[] = "0=1";
403
+	}
404
+	// idiot mais quand meme
394 405
 
395 406
 	$not="";
396 407
 	if (is_array($id_objet) AND reset($id_objet)=="NOT"){
@@ -398,12 +409,15 @@  discard block
 block discarded – undo
398 409
 		$id_objet = reset($id_objet);
399 410
 	}
400 411
 
401
-	if ($objet!=='*')
402
-		$where[] = "objet=".sql_quote($objet);
403
-	if ($id_objet!=='*')
404
-		$where[] = (is_array($id_objet)?sql_in('id_objet',array_map('intval',$id_objet),$not):"id_objet" . ($not?"<>":"=") . intval($id_objet));
405
-	elseif ($not)
406
-		$where[] = "0=1"; // idiot mais quand meme
412
+	if ($objet!=='*') {
413
+			$where[] = "objet=".sql_quote($objet);
414
+	}
415
+	if ($id_objet!=='*') {
416
+			$where[] = (is_array($id_objet)?sql_in('id_objet',array_map('intval',$id_objet),$not):"id_objet" . ($not?"<>":"=") . intval($id_objet));
417
+	} elseif ($not) {
418
+			$where[] = "0=1";
419
+	}
420
+	// idiot mais quand meme
407 421
 
408 422
 	return $where;
409 423
 }
@@ -431,7 +445,9 @@  discard block
 block discarded – undo
431 445
 	$echec = false;
432 446
 	foreach($objets as $objet => $id_objets){
433 447
 		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
434
-		if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
448
+		if (!is_array($id_objets) OR reset($id_objets)=="NOT") {
449
+		    $id_objets = array($id_objets);
450
+		}
435 451
 		foreach($id_objets as $id_objet) {
436 452
 			// id_objet peut valoir '*'
437 453
 			$where = lien_where($primary, $id, $objet, $id_objet);
@@ -460,9 +476,9 @@  discard block
 block discarded – undo
460 476
 						$dels+=$e;
461 477
 						lien_propage_date_modif($l['objet'],$id_o);
462 478
 						lien_propage_date_modif($objet_source,$l[$primary]);
479
+					} else {
480
+											$echec = true;
463 481
 					}
464
-					else
465
-						$echec = true;
466 482
 					$retire[] = array('source'=>array($objet_source=>$l[$primary]),'lien'=>array($l['objet']=>$id_o),'type'=>$l['objet'],'id'=>$id_o);
467 483
 					// Envoyer aux plugins
468 484
 					pipeline('post_edition_lien',
@@ -512,7 +528,9 @@  discard block
 block discarded – undo
512 528
 	$dels = 0;
513 529
 	foreach($objets as $objet => $id_objets){
514 530
 		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
515
-		if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
531
+		if (!is_array($id_objets) OR reset($id_objets)=="NOT") {
532
+		    $id_objets = array($id_objets);
533
+		}
516 534
 		foreach($id_objets as $id_objet) {
517 535
 			$where = lien_where($primary, $id, $objet, $id_objet);
518 536
 			# les liens vers un objet inexistant
@@ -579,8 +597,9 @@  discard block
 block discarded – undo
579 597
 function lien_set($objet_source,$primary,$table_lien,$id,$objets,$qualif){
580 598
 	$echec = null;
581 599
 	$ok = 0;
582
-	if (!$qualif)
583
-		return false;
600
+	if (!$qualif) {
601
+			return false;
602
+	}
584 603
 	// nettoyer qualif qui peut venir directement d'un objet_trouver_lien :
585 604
 	unset($qualif[$primary]);
586 605
 	unset($qualif[$objet_source]);
@@ -591,14 +610,17 @@  discard block
 block discarded – undo
591 610
 	unset($qualif['id_objet']);
592 611
 	foreach($objets as $objet => $id_objets){
593 612
 		$objet = ($objet=='*')?$objet:objet_type($objet); # securite
594
-		if (!is_array($id_objets) OR reset($id_objets)=="NOT") $id_objets = array($id_objets);
613
+		if (!is_array($id_objets) OR reset($id_objets)=="NOT") {
614
+		    $id_objets = array($id_objets);
615
+		}
595 616
 		foreach($id_objets as $id_objet) {
596 617
 			$where = lien_where($primary, $id, $objet, $id_objet);
597 618
 			$e = sql_updateq($table_lien,$qualif,$where);
598
-			if ($e===false)
599
-				$echec = true;
600
-		  else
601
-			  $ok++;
619
+			if ($e===false) {
620
+							$echec = true;
621
+			} else {
622
+		  			  $ok++;
623
+		  }
602 624
 		}
603 625
 	}
604 626
 	return ($echec?false:$ok);
Please login to merge, or discard this patch.
ecrire/action/menu_rubriques.php 4 patches
Doc Comments   +3 added lines patch added patch discarded remove patch
@@ -45,6 +45,9 @@
 block discarded – undo
45 45
 	}
46 46
 }
47 47
 
48
+/**
49
+ * @return string
50
+ */
48 51
 function menu_rubriques($complet = true){
49 52
 	$ret = "<li class='toutsite'><a href='".generer_url_ecrire('plan')."'>"._T('info_tout_site')."</a></li>";
50 53
 
Please login to merge, or discard this patch.
Indentation   +114 added lines, -114 removed lines patch added patch discarded remove patch
@@ -18,142 +18,142 @@
 block discarded – undo
18 18
 
19 19
 function action_menu_rubriques_dist() {
20 20
 
21
-	// si pas acces a ecrire, pas acces au menu
22
-	// on renvoi un 401 qui fait echouer la requete ajax silencieusement
23
-	if (!autoriser('ecrire')){
24
-		$retour = "<ul class='cols_1'><li class='toutsite'><a href='".generer_url_ecrire('accueil')."'>"._T('public:lien_connecter')."</a></li></ul>";
25
-		include_spip('inc/actions');
26
-		ajax_retour($retour);
27
-		exit;
28
-	}
29
-
30
-	if ($date = intval(_request('date')))
31
-		header("Last-Modified: ".gmdate("D, d M Y H:i:s", $date)." GMT");
32
-
33
-	$r = gen_liste_rubriques();
34
-	if (!$r
35
-	AND isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])
36
-	AND !strstr($_SERVER['SERVER_SOFTWARE'],'IIS/')) {
37
-		include_spip('inc/headers');
38
-		header('Content-Type: text/html; charset='. $GLOBALS['meta']['charset']);
39
-		http_status(304);
40
-		exit;
41
-	} else {
42
-		include_spip('inc/actions');
43
-		$ret = menu_rubriques();
44
-		ajax_retour($ret);
45
-	}
21
+    // si pas acces a ecrire, pas acces au menu
22
+    // on renvoi un 401 qui fait echouer la requete ajax silencieusement
23
+    if (!autoriser('ecrire')){
24
+        $retour = "<ul class='cols_1'><li class='toutsite'><a href='".generer_url_ecrire('accueil')."'>"._T('public:lien_connecter')."</a></li></ul>";
25
+        include_spip('inc/actions');
26
+        ajax_retour($retour);
27
+        exit;
28
+    }
29
+
30
+    if ($date = intval(_request('date')))
31
+        header("Last-Modified: ".gmdate("D, d M Y H:i:s", $date)." GMT");
32
+
33
+    $r = gen_liste_rubriques();
34
+    if (!$r
35
+    AND isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])
36
+    AND !strstr($_SERVER['SERVER_SOFTWARE'],'IIS/')) {
37
+        include_spip('inc/headers');
38
+        header('Content-Type: text/html; charset='. $GLOBALS['meta']['charset']);
39
+        http_status(304);
40
+        exit;
41
+    } else {
42
+        include_spip('inc/actions');
43
+        $ret = menu_rubriques();
44
+        ajax_retour($ret);
45
+    }
46 46
 }
47 47
 
48 48
 function menu_rubriques($complet = true){
49
-	$ret = "<li class='toutsite'><a href='".generer_url_ecrire('plan')."'>"._T('info_tout_site')."</a></li>";
50
-
51
-	if (!$complet) {
52
-		return "<ul class='cols_1'>$ret\n</ul>\n";
53
-	}
54
-
55
-	if (!isset($GLOBALS['db_art_cache'])){
56
-		gen_liste_rubriques();
57
-	}
58
-	$arr_low = extraire_article(0, $GLOBALS['db_art_cache']);
59
-
60
-	$total_lignes = $i = sizeof($arr_low);
61
-
62
-	if ($i > 0) {
63
-		$nb_col = min(8,ceil($total_lignes / 30));
64
-		if ($nb_col <= 1) $nb_col =  ceil($total_lignes / 10);
65
-		foreach( $arr_low as $id_rubrique => $titre_rubrique) {
66
-			if (autoriser('voir','rubrique',$id_rubrique)){
67
-			  $ret .= bandeau_rubrique($id_rubrique, $titre_rubrique, $i);
68
-			  $i++;
69
-			}
70
-		}
71
-
72
-		$ret = "<ul class='cols_$nb_col'>"
73
-		  . $ret
74
-		  . "\n</ul>\n";
75
-	}
76
-	else
77
-		$ret = "<ul class='cols_1'>$ret\n</ul>\n";
49
+    $ret = "<li class='toutsite'><a href='".generer_url_ecrire('plan')."'>"._T('info_tout_site')."</a></li>";
50
+
51
+    if (!$complet) {
52
+        return "<ul class='cols_1'>$ret\n</ul>\n";
53
+    }
54
+
55
+    if (!isset($GLOBALS['db_art_cache'])){
56
+        gen_liste_rubriques();
57
+    }
58
+    $arr_low = extraire_article(0, $GLOBALS['db_art_cache']);
59
+
60
+    $total_lignes = $i = sizeof($arr_low);
61
+
62
+    if ($i > 0) {
63
+        $nb_col = min(8,ceil($total_lignes / 30));
64
+        if ($nb_col <= 1) $nb_col =  ceil($total_lignes / 10);
65
+        foreach( $arr_low as $id_rubrique => $titre_rubrique) {
66
+            if (autoriser('voir','rubrique',$id_rubrique)){
67
+                $ret .= bandeau_rubrique($id_rubrique, $titre_rubrique, $i);
68
+                $i++;
69
+            }
70
+        }
71
+
72
+        $ret = "<ul class='cols_$nb_col'>"
73
+            . $ret
74
+            . "\n</ul>\n";
75
+    }
76
+    else
77
+        $ret = "<ul class='cols_1'>$ret\n</ul>\n";
78 78
 	
79
-	return $ret;
79
+    return $ret;
80 80
 }
81 81
 
82 82
 // http://doc.spip.org/@bandeau_rubrique
83 83
 function bandeau_rubrique($id_rubrique, $titre_rubrique, $zdecal) {
84
-	static $zmax = 6;
85
-
86
-	$nav = "<a href='"
87
-	. generer_url_entite($id_rubrique,'rubrique','','',false)
88
-	. "'>"
89
-	. supprimer_tags(preg_replace(',[\x00-\x1f]+,', ' ', $titre_rubrique))
90
-	. "</a>\n";
91
-
92
-	// Limiter volontairement le nombre de sous-menus
93
-	if (!(--$zmax)) {
94
-		$zmax++;
95
-		return "\n<li>$nav</li>";
96
-	}
97
-
98
-	$arr_rub = extraire_article($id_rubrique, $GLOBALS['db_art_cache']);
99
-	$i = sizeof($arr_rub);
100
-	if (!$i) {
101
-		$zmax++;
102
-		return "\n<li>$nav</li>";
103
-	}
104
-
105
-
106
-	$nb_col = 1;
107
-	if ($nb_rub = count($arr_rub)) {
108
-		$nb_col = min(10,max(1,ceil($nb_rub / 10)));
109
-	}
110
-	$ret = "<li class='haschild'>$nav<ul class='cols_$nb_col'>";
111
-	foreach( $arr_rub as $id_rub => $titre_rub) {
112
-		if (autoriser('voir','rubrique',$id_rub)){
113
-			$titre = supprimer_numero(typo($titre_rub));
114
-			$ret .= bandeau_rubrique($id_rub, $titre, $zdecal+$i);
115
-			$i++;
116
-		}
117
-	}
118
-	$ret .= "</ul></li>\n";
119
-	$zmax++;
120
-	return $ret;
84
+    static $zmax = 6;
85
+
86
+    $nav = "<a href='"
87
+    . generer_url_entite($id_rubrique,'rubrique','','',false)
88
+    . "'>"
89
+    . supprimer_tags(preg_replace(',[\x00-\x1f]+,', ' ', $titre_rubrique))
90
+    . "</a>\n";
91
+
92
+    // Limiter volontairement le nombre de sous-menus
93
+    if (!(--$zmax)) {
94
+        $zmax++;
95
+        return "\n<li>$nav</li>";
96
+    }
97
+
98
+    $arr_rub = extraire_article($id_rubrique, $GLOBALS['db_art_cache']);
99
+    $i = sizeof($arr_rub);
100
+    if (!$i) {
101
+        $zmax++;
102
+        return "\n<li>$nav</li>";
103
+    }
104
+
105
+
106
+    $nb_col = 1;
107
+    if ($nb_rub = count($arr_rub)) {
108
+        $nb_col = min(10,max(1,ceil($nb_rub / 10)));
109
+    }
110
+    $ret = "<li class='haschild'>$nav<ul class='cols_$nb_col'>";
111
+    foreach( $arr_rub as $id_rub => $titre_rub) {
112
+        if (autoriser('voir','rubrique',$id_rub)){
113
+            $titre = supprimer_numero(typo($titre_rub));
114
+            $ret .= bandeau_rubrique($id_rub, $titre, $zdecal+$i);
115
+            $i++;
116
+        }
117
+    }
118
+    $ret .= "</ul></li>\n";
119
+    $zmax++;
120
+    return $ret;
121 121
 }
122 122
 
123 123
 
124 124
 // http://doc.spip.org/@extraire_article
125 125
 function extraire_article($id_p, $t) {
126
-	return array_key_exists($id_p, $t) ?  $t[$id_p]: array();
126
+    return array_key_exists($id_p, $t) ?  $t[$id_p]: array();
127 127
 }
128 128
 
129 129
 // http://doc.spip.org/@gen_liste_rubriques
130 130
 function gen_liste_rubriques() {
131 131
 
132
-	include_spip('inc/config');
133
-	// ici, un petit fichier cache ne fait pas de mal
134
-	$last = lire_config('date_calcul_rubriques', 0);
135
-	if (lire_fichier(_CACHE_RUBRIQUES, $cache)) {
136
-		list($date,$GLOBALS['db_art_cache']) = @unserialize($cache);
137
-		if ($date == $last) return false; // c'etait en cache :-)
138
-	}
139
-	// se restreindre aux rubriques utilisees recemment +secteurs
132
+    include_spip('inc/config');
133
+    // ici, un petit fichier cache ne fait pas de mal
134
+    $last = lire_config('date_calcul_rubriques', 0);
135
+    if (lire_fichier(_CACHE_RUBRIQUES, $cache)) {
136
+        list($date,$GLOBALS['db_art_cache']) = @unserialize($cache);
137
+        if ($date == $last) return false; // c'etait en cache :-)
138
+    }
139
+    // se restreindre aux rubriques utilisees recemment +secteurs
140 140
 
141
-	$where = sql_in_select("id_rubrique", "id_rubrique", "spip_rubriques", "", "", "id_parent=0 DESC, date DESC", _CACHE_RUBRIQUES_MAX);
141
+    $where = sql_in_select("id_rubrique", "id_rubrique", "spip_rubriques", "", "", "id_parent=0 DESC, date DESC", _CACHE_RUBRIQUES_MAX);
142 142
 
143
-	// puis refaire la requete pour avoir l'ordre alphabetique
143
+    // puis refaire la requete pour avoir l'ordre alphabetique
144 144
 
145
-	$res = sql_select("id_rubrique, titre, id_parent", "spip_rubriques", $where, '', 'id_parent, 0+titre, titre');
145
+    $res = sql_select("id_rubrique, titre, id_parent", "spip_rubriques", $where, '', 'id_parent, 0+titre, titre');
146 146
 
147
-	// il ne faut pas filtrer le autoriser voir ici
148
-	// car on met le resultat en cache, commun a tout le monde
149
-	$GLOBALS['db_art_cache'] = array();
150
-	while ($r = sql_fetch($res)) {
151
-		$t = sinon($r['titre'], _T('ecrire:info_sans_titre'));
152
-		$GLOBALS['db_art_cache'][$r['id_parent']][$r['id_rubrique']] = supprimer_numero(typo($t));
153
-	}
147
+    // il ne faut pas filtrer le autoriser voir ici
148
+    // car on met le resultat en cache, commun a tout le monde
149
+    $GLOBALS['db_art_cache'] = array();
150
+    while ($r = sql_fetch($res)) {
151
+        $t = sinon($r['titre'], _T('ecrire:info_sans_titre'));
152
+        $GLOBALS['db_art_cache'][$r['id_parent']][$r['id_rubrique']] = supprimer_numero(typo($t));
153
+    }
154 154
 
155
-	$t = array($last ? $last : time(), $GLOBALS['db_art_cache']);
156
-	ecrire_fichier(_CACHE_RUBRIQUES, serialize($t));
157
-	return true;
155
+    $t = array($last ? $last : time(), $GLOBALS['db_art_cache']);
156
+    ecrire_fichier(_CACHE_RUBRIQUES, serialize($t));
157
+    return true;
158 158
 }
159 159
 ?>
Please login to merge, or discard this patch.
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -20,7 +20,7 @@  discard block
 block discarded – undo
20 20
 
21 21
 	// si pas acces a ecrire, pas acces au menu
22 22
 	// on renvoi un 401 qui fait echouer la requete ajax silencieusement
23
-	if (!autoriser('ecrire')){
23
+	if (!autoriser('ecrire')) {
24 24
 		$retour = "<ul class='cols_1'><li class='toutsite'><a href='".generer_url_ecrire('accueil')."'>"._T('public:lien_connecter')."</a></li></ul>";
25 25
 		include_spip('inc/actions');
26 26
 		ajax_retour($retour);
@@ -33,9 +33,9 @@  discard block
 block discarded – undo
33 33
 	$r = gen_liste_rubriques();
34 34
 	if (!$r
35 35
 	AND isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])
36
-	AND !strstr($_SERVER['SERVER_SOFTWARE'],'IIS/')) {
36
+	AND !strstr($_SERVER['SERVER_SOFTWARE'], 'IIS/')) {
37 37
 		include_spip('inc/headers');
38
-		header('Content-Type: text/html; charset='. $GLOBALS['meta']['charset']);
38
+		header('Content-Type: text/html; charset='.$GLOBALS['meta']['charset']);
39 39
 		http_status(304);
40 40
 		exit;
41 41
 	} else {
@@ -45,14 +45,14 @@  discard block
 block discarded – undo
45 45
 	}
46 46
 }
47 47
 
48
-function menu_rubriques($complet = true){
48
+function menu_rubriques($complet = true) {
49 49
 	$ret = "<li class='toutsite'><a href='".generer_url_ecrire('plan')."'>"._T('info_tout_site')."</a></li>";
50 50
 
51 51
 	if (!$complet) {
52 52
 		return "<ul class='cols_1'>$ret\n</ul>\n";
53 53
 	}
54 54
 
55
-	if (!isset($GLOBALS['db_art_cache'])){
55
+	if (!isset($GLOBALS['db_art_cache'])) {
56 56
 		gen_liste_rubriques();
57 57
 	}
58 58
 	$arr_low = extraire_article(0, $GLOBALS['db_art_cache']);
@@ -60,10 +60,10 @@  discard block
 block discarded – undo
60 60
 	$total_lignes = $i = sizeof($arr_low);
61 61
 
62 62
 	if ($i > 0) {
63
-		$nb_col = min(8,ceil($total_lignes / 30));
64
-		if ($nb_col <= 1) $nb_col =  ceil($total_lignes / 10);
65
-		foreach( $arr_low as $id_rubrique => $titre_rubrique) {
66
-			if (autoriser('voir','rubrique',$id_rubrique)){
63
+		$nb_col = min(8, ceil($total_lignes / 30));
64
+		if ($nb_col <= 1) $nb_col = ceil($total_lignes / 10);
65
+		foreach ($arr_low as $id_rubrique => $titre_rubrique) {
66
+			if (autoriser('voir', 'rubrique', $id_rubrique)) {
67 67
 			  $ret .= bandeau_rubrique($id_rubrique, $titre_rubrique, $i);
68 68
 			  $i++;
69 69
 			}
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
 	static $zmax = 6;
85 85
 
86 86
 	$nav = "<a href='"
87
-	. generer_url_entite($id_rubrique,'rubrique','','',false)
87
+	. generer_url_entite($id_rubrique, 'rubrique', '', '', false)
88 88
 	. "'>"
89 89
 	. supprimer_tags(preg_replace(',[\x00-\x1f]+,', ' ', $titre_rubrique))
90 90
 	. "</a>\n";
@@ -105,13 +105,13 @@  discard block
 block discarded – undo
105 105
 
106 106
 	$nb_col = 1;
107 107
 	if ($nb_rub = count($arr_rub)) {
108
-		$nb_col = min(10,max(1,ceil($nb_rub / 10)));
108
+		$nb_col = min(10, max(1, ceil($nb_rub / 10)));
109 109
 	}
110 110
 	$ret = "<li class='haschild'>$nav<ul class='cols_$nb_col'>";
111
-	foreach( $arr_rub as $id_rub => $titre_rub) {
112
-		if (autoriser('voir','rubrique',$id_rub)){
111
+	foreach ($arr_rub as $id_rub => $titre_rub) {
112
+		if (autoriser('voir', 'rubrique', $id_rub)) {
113 113
 			$titre = supprimer_numero(typo($titre_rub));
114
-			$ret .= bandeau_rubrique($id_rub, $titre, $zdecal+$i);
114
+			$ret .= bandeau_rubrique($id_rub, $titre, $zdecal + $i);
115 115
 			$i++;
116 116
 		}
117 117
 	}
@@ -123,7 +123,7 @@  discard block
 block discarded – undo
123 123
 
124 124
 // http://doc.spip.org/@extraire_article
125 125
 function extraire_article($id_p, $t) {
126
-	return array_key_exists($id_p, $t) ?  $t[$id_p]: array();
126
+	return array_key_exists($id_p, $t) ? $t[$id_p] : array();
127 127
 }
128 128
 
129 129
 // http://doc.spip.org/@gen_liste_rubriques
@@ -133,7 +133,7 @@  discard block
 block discarded – undo
133 133
 	// ici, un petit fichier cache ne fait pas de mal
134 134
 	$last = lire_config('date_calcul_rubriques', 0);
135 135
 	if (lire_fichier(_CACHE_RUBRIQUES, $cache)) {
136
-		list($date,$GLOBALS['db_art_cache']) = @unserialize($cache);
136
+		list($date, $GLOBALS['db_art_cache']) = @unserialize($cache);
137 137
 		if ($date == $last) return false; // c'etait en cache :-)
138 138
 	}
139 139
 	// se restreindre aux rubriques utilisees recemment +secteurs
Please login to merge, or discard this patch.
Braces   +15 added lines, -7 removed lines patch added patch discarded remove patch
@@ -10,7 +10,9 @@  discard block
 block discarded – undo
10 10
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11 11
 \***************************************************************************/
12 12
 
13
-if (!defined('_ECRIRE_INC_VERSION')) return;
13
+if (!defined('_ECRIRE_INC_VERSION')) {
14
+    return;
15
+}
14 16
 
15 17
 include_spip('inc/autoriser');
16 18
 include_spip('inc/texte');
@@ -27,8 +29,9 @@  discard block
 block discarded – undo
27 29
 		exit;
28 30
 	}
29 31
 
30
-	if ($date = intval(_request('date')))
31
-		header("Last-Modified: ".gmdate("D, d M Y H:i:s", $date)." GMT");
32
+	if ($date = intval(_request('date'))) {
33
+			header("Last-Modified: ".gmdate("D, d M Y H:i:s", $date)." GMT");
34
+	}
32 35
 
33 36
 	$r = gen_liste_rubriques();
34 37
 	if (!$r
@@ -61,7 +64,9 @@  discard block
 block discarded – undo
61 64
 
62 65
 	if ($i > 0) {
63 66
 		$nb_col = min(8,ceil($total_lignes / 30));
64
-		if ($nb_col <= 1) $nb_col =  ceil($total_lignes / 10);
67
+		if ($nb_col <= 1) {
68
+		    $nb_col =  ceil($total_lignes / 10);
69
+		}
65 70
 		foreach( $arr_low as $id_rubrique => $titre_rubrique) {
66 71
 			if (autoriser('voir','rubrique',$id_rubrique)){
67 72
 			  $ret .= bandeau_rubrique($id_rubrique, $titre_rubrique, $i);
@@ -72,9 +77,9 @@  discard block
 block discarded – undo
72 77
 		$ret = "<ul class='cols_$nb_col'>"
73 78
 		  . $ret
74 79
 		  . "\n</ul>\n";
80
+	} else {
81
+			$ret = "<ul class='cols_1'>$ret\n</ul>\n";
75 82
 	}
76
-	else
77
-		$ret = "<ul class='cols_1'>$ret\n</ul>\n";
78 83
 	
79 84
 	return $ret;
80 85
 }
@@ -134,7 +139,10 @@  discard block
 block discarded – undo
134 139
 	$last = lire_config('date_calcul_rubriques', 0);
135 140
 	if (lire_fichier(_CACHE_RUBRIQUES, $cache)) {
136 141
 		list($date,$GLOBALS['db_art_cache']) = @unserialize($cache);
137
-		if ($date == $last) return false; // c'etait en cache :-)
142
+		if ($date == $last) {
143
+		    return false;
144
+		}
145
+		// c'etait en cache :-)
138 146
 	}
139 147
 	// se restreindre aux rubriques utilisees recemment +secteurs
140 148
 
Please login to merge, or discard this patch.
ecrire/auth/ldap.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -266,7 +266,7 @@
 block discarded – undo
266 266
  * @param $new_pass
267 267
  * @param $id_auteur
268 268
  * @param string $serveur
269
- * @return bool
269
+ * @return string|boolean
270 270
  *  informe du succes ou de l'echec du changement du mot de passe
271 271
  */
272 272
 function auth_ldap_modifier_pass($login, $new_pass, $id_auteur, $serveur=''){
Please login to merge, or discard this patch.
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -17,11 +17,11 @@  discard block
 block discarded – undo
17 17
 // Attributs LDAP correspondants a ceux de SPIP, notamment pour le login
18 18
 // ne pas ecraser une definition perso dans mes_options
19 19
 if (!isset($GLOBALS['ldap_attributes']) OR !is_array($GLOBALS['ldap_attributes'])){
20
-	$GLOBALS['ldap_attributes'] = array(
21
-		'login' => array('sAMAccountName', 'uid', 'login', 'userid', 'cn','sn'),
22
-		'nom' => "cn",
23
-		'email' => "mail",
24
-		'bio' => "description");
20
+    $GLOBALS['ldap_attributes'] = array(
21
+        'login' => array('sAMAccountName', 'uid', 'login', 'userid', 'cn','sn'),
22
+        'nom' => "cn",
23
+        'email' => "mail",
24
+        'bio' => "description");
25 25
 }
26 26
 
27 27
 /**
@@ -48,42 +48,42 @@  discard block
 block discarded – undo
48 48
 // http://doc.spip.org/@inc_auth_ldap_dist
49 49
 function auth_ldap_dist ($login, $pass, $serveur='', $phpauth=false) {
50 50
 
51
-	#spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent"));
51
+    #spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent"));
52 52
 
53
-	// Utilisateur connu ?
54
-	// si http auth, inutile de reauthentifier: cela
55
- 	// ne marchera pas avec auth http autre que basic.
56
-	$checkpass = isset($_SERVER["REMOTE_USER"])?false:true;
57
-	if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) return array();
58
-	$credentials_ldap = array('ldap_dn' => $dn, 'ldap_password' => $pass);
53
+    // Utilisateur connu ?
54
+    // si http auth, inutile de reauthentifier: cela
55
+        // ne marchera pas avec auth http autre que basic.
56
+    $checkpass = isset($_SERVER["REMOTE_USER"])?false:true;
57
+    if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) return array();
58
+    $credentials_ldap = array('ldap_dn' => $dn, 'ldap_password' => $pass);
59 59
 
60
-	// Si l'utilisateur figure deja dans la base, y recuperer les infos
61
-	$r = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='ldap'",'','','','',$serveur);
60
+    // Si l'utilisateur figure deja dans la base, y recuperer les infos
61
+    $r = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='ldap'",'','','','',$serveur);
62 62
 
63
-	if ($r) return array_merge($r, $credentials_ldap);
63
+    if ($r) return array_merge($r, $credentials_ldap);
64 64
 
65
-	// sinon importer les infos depuis LDAP, 
65
+    // sinon importer les infos depuis LDAP, 
66 66
 
67
-	if ($GLOBALS['meta']["ldap_statut_import"]
68
-	AND $desc = auth_ldap_retrouver($dn, array(), $serveur)) {
69
-	  // rajouter le statut indique  a l'install
70
-		$desc['statut'] = $GLOBALS['meta']["ldap_statut_import"];
71
-		$desc['login'] = $login;
72
-		$desc['source'] = 'ldap';
73
-		$desc['pass'] = '';
67
+    if ($GLOBALS['meta']["ldap_statut_import"]
68
+    AND $desc = auth_ldap_retrouver($dn, array(), $serveur)) {
69
+        // rajouter le statut indique  a l'install
70
+        $desc['statut'] = $GLOBALS['meta']["ldap_statut_import"];
71
+        $desc['login'] = $login;
72
+        $desc['source'] = 'ldap';
73
+        $desc['pass'] = '';
74 74
 
75
-		$r = sql_insertq('spip_auteurs', $desc,'',$serveur);
76
-	}				
75
+        $r = sql_insertq('spip_auteurs', $desc,'',$serveur);
76
+    }				
77 77
 
78
-	if ($r)
79
-		return array_merge(
80
-			$credentials_ldap,
81
-			sql_fetsel("*", "spip_auteurs", "id_auteur=".intval($r),'','','','',$serveur)
82
-			);
78
+    if ($r)
79
+        return array_merge(
80
+            $credentials_ldap,
81
+            sql_fetsel("*", "spip_auteurs", "id_auteur=".intval($r),'','','','',$serveur)
82
+            );
83 83
 
84
-	// sinon echec
85
-	spip_log("Creation de l'auteur '$login' impossible");
86
-	return array();
84
+    // sinon echec
85
+    spip_log("Creation de l'auteur '$login' impossible");
86
+    return array();
87 87
 }
88 88
 
89 89
 /**
@@ -96,24 +96,24 @@  discard block
 block discarded – undo
96 96
  * @return string
97 97
  */
98 98
 function auth_ldap_connect($serveur='') {
99
-	include_spip('base/connect_sql');
100
-	static $connexions_ldap = array();
101
-	if (isset($connexions_ldap[$serveur])) return $connexions_ldap[$serveur]; 
102
-	$connexion = spip_connect($serveur);
103
-	if (!is_array($connexion['ldap'])) {
104
-		if ($connexion['authentification']['ldap']) {
105
-			$f =  _DIR_CONNECT . $connexion['authentification']['ldap'];
106
-			unset($GLOBALS['ldap_link']);
107
-			if (is_readable($f)) { include_once($f); };
108
-			if (isset($GLOBALS['ldap_link']))
109
-				$connexion['ldap'] = array('link' => $GLOBALS['ldap_link'],
110
-					'base' => $GLOBALS['ldap_base']);
111
-			else spip_log("connection LDAP $serveur mal definie dans $f");
112
-			if (isset($GLOBALS['ldap_champs']))
113
-				$connexion['ldap']['attributes'] = $GLOBALS['ldap_champs'];
114
-		} else spip_log("connection LDAP $serveur inconnue");
115
-	}
116
-	return $connexions_ldap[$serveur]=$connexion['ldap'];
99
+    include_spip('base/connect_sql');
100
+    static $connexions_ldap = array();
101
+    if (isset($connexions_ldap[$serveur])) return $connexions_ldap[$serveur]; 
102
+    $connexion = spip_connect($serveur);
103
+    if (!is_array($connexion['ldap'])) {
104
+        if ($connexion['authentification']['ldap']) {
105
+            $f =  _DIR_CONNECT . $connexion['authentification']['ldap'];
106
+            unset($GLOBALS['ldap_link']);
107
+            if (is_readable($f)) { include_once($f); };
108
+            if (isset($GLOBALS['ldap_link']))
109
+                $connexion['ldap'] = array('link' => $GLOBALS['ldap_link'],
110
+                    'base' => $GLOBALS['ldap_base']);
111
+            else spip_log("connection LDAP $serveur mal definie dans $f");
112
+            if (isset($GLOBALS['ldap_champs']))
113
+                $connexion['ldap']['attributes'] = $GLOBALS['ldap_champs'];
114
+        } else spip_log("connection LDAP $serveur inconnue");
115
+    }
116
+    return $connexions_ldap[$serveur]=$connexion['ldap'];
117 117
 }
118 118
 
119 119
 /**
@@ -127,44 +127,44 @@  discard block
 block discarded – undo
127 127
  *	le login trouve ou chaine vide si non trouve
128 128
  */
129 129
 function auth_ldap_search($login, $pass, $checkpass=true, $serveur=''){
130
-	// Securite anti-injection et contre un serveur LDAP laxiste
131
-	$login_search = preg_replace("/[^-@._\s\d\w]/", "", $login); 
132
-	if (!strlen($login_search) OR ($checkpass AND !strlen($pass)) )
133
-		return '';
134
-
135
-	// verifier la connexion
136
-	if (!$ldap = auth_ldap_connect($serveur))
137
-		return '';
138
-
139
-	$ldap_link = isset($ldap['link']) ? $ldap['link'] : null;
140
-	$ldap_base = isset($ldap['base']) ? $ldap['base'] : null;
141
-	$desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
142
-
143
-	$logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']);
144
-
145
-	// Tenter une recherche pour essayer de retrouver le DN
146
-	foreach($logins as $att) {
147
-		$result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
148
-		$info = @ldap_get_entries($ldap_link, $result);
149
-			// Ne pas accepter les resultats si plus d'une entree
150
-			// (on veut un attribut unique)
151
-
152
-		if (is_array($info) AND $info['count'] == 1) {
153
-			$dn = $info[0]['dn'];
154
-			if (!$checkpass) return $dn;
155
-			if (@ldap_bind($ldap_link, $dn, $pass)) return $dn;
156
-		}
157
-	}
158
-
159
-	if ($checkpass AND !isset($dn)) {
160
-		// Si echec, essayer de deviner le DN
161
-		foreach($logins as $att) {
162
-			$dn = "$att=$login_search, $ldap_base";
163
-			if (@ldap_bind($ldap_link, $dn, $pass))
164
-				return "$att=$login_search, $ldap_base";
165
-		}
166
-	}
167
-	return '';
130
+    // Securite anti-injection et contre un serveur LDAP laxiste
131
+    $login_search = preg_replace("/[^-@._\s\d\w]/", "", $login); 
132
+    if (!strlen($login_search) OR ($checkpass AND !strlen($pass)) )
133
+        return '';
134
+
135
+    // verifier la connexion
136
+    if (!$ldap = auth_ldap_connect($serveur))
137
+        return '';
138
+
139
+    $ldap_link = isset($ldap['link']) ? $ldap['link'] : null;
140
+    $ldap_base = isset($ldap['base']) ? $ldap['base'] : null;
141
+    $desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
142
+
143
+    $logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']);
144
+
145
+    // Tenter une recherche pour essayer de retrouver le DN
146
+    foreach($logins as $att) {
147
+        $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
148
+        $info = @ldap_get_entries($ldap_link, $result);
149
+            // Ne pas accepter les resultats si plus d'une entree
150
+            // (on veut un attribut unique)
151
+
152
+        if (is_array($info) AND $info['count'] == 1) {
153
+            $dn = $info[0]['dn'];
154
+            if (!$checkpass) return $dn;
155
+            if (@ldap_bind($ldap_link, $dn, $pass)) return $dn;
156
+        }
157
+    }
158
+
159
+    if ($checkpass AND !isset($dn)) {
160
+        // Si echec, essayer de deviner le DN
161
+        foreach($logins as $att) {
162
+            $dn = "$att=$login_search, $ldap_base";
163
+            if (@ldap_bind($ldap_link, $dn, $pass))
164
+                return "$att=$login_search, $ldap_base";
165
+        }
166
+    }
167
+    return '';
168 168
 }
169 169
 
170 170
 /**
@@ -176,33 +176,33 @@  discard block
 block discarded – undo
176 176
  */
177 177
 function auth_ldap_retrouver($dn, $desc=array(), $serveur='')
178 178
 {
179
-	// Lire les infos sur l'utilisateur a partir de son DN depuis LDAP
179
+    // Lire les infos sur l'utilisateur a partir de son DN depuis LDAP
180 180
 
181
-	if (!$ldap = spip_connect_ldap($serveur)) {
182
-		spip_log("ldap $serveur injoignable");
183
-		return array();
184
-	}
181
+    if (!$ldap = spip_connect_ldap($serveur)) {
182
+        spip_log("ldap $serveur injoignable");
183
+        return array();
184
+    }
185 185
 
186
-	$ldap_link = $ldap['link'];
187
-	if (!$desc) {
188
-		$desc = $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
189
-		unset($desc['login']);
190
-	}
191
-	$result = @ldap_read($ldap_link, $dn, "objectClass=*", array_values($desc));
186
+    $ldap_link = $ldap['link'];
187
+    if (!$desc) {
188
+        $desc = $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
189
+        unset($desc['login']);
190
+    }
191
+    $result = @ldap_read($ldap_link, $dn, "objectClass=*", array_values($desc));
192 192
 
193
-	if (!$result) return array();
193
+    if (!$result) return array();
194 194
 
195
-	// Recuperer les donnees du premier (unique?) compte de l'auteur
196
-	$val = @ldap_get_entries($ldap_link, $result);
197
-	if (!is_array($val) OR !is_array($val[0])) return array();
198
-	$val = $val[0];
195
+    // Recuperer les donnees du premier (unique?) compte de l'auteur
196
+    $val = @ldap_get_entries($ldap_link, $result);
197
+    if (!is_array($val) OR !is_array($val[0])) return array();
198
+    $val = $val[0];
199 199
 
200
-	// Convertir depuis UTF-8 (jeu de caracteres par defaut)
201
-	include_spip('inc/charsets');
200
+    // Convertir depuis UTF-8 (jeu de caracteres par defaut)
201
+    include_spip('inc/charsets');
202 202
 
203
-	foreach ($desc as $k => $v)
204
-		$desc[$k] = importer_charset($val[strtolower($v)][0], 'utf-8');
205
-	return $desc;
203
+    foreach ($desc as $k => $v)
204
+        $desc[$k] = importer_charset($val[strtolower($v)][0], 'utf-8');
205
+    return $desc;
206 206
 }
207 207
 
208 208
 
@@ -215,7 +215,7 @@  discard block
 block discarded – undo
215 215
  */
216 216
 function auth_ldap_retrouver_login($login, $serveur='')
217 217
 {
218
-	return auth_ldap_search($login, '', false, $serveur) ? $login : '';
218
+    return auth_ldap_search($login, '', false, $serveur) ? $login : '';
219 219
 }
220 220
 
221 221
 /**
@@ -274,7 +274,7 @@  discard block
 block discarded – undo
274 274
         return false;
275 275
     }
276 276
     if (!$ldap = auth_ldap_connect($serveur))
277
-       return '';
277
+        return '';
278 278
     $link = $ldap['link'];
279 279
     include_spip("inc/session");
280 280
     $dn = session_get('ldap_dn');
@@ -282,7 +282,7 @@  discard block
 block discarded – undo
282 282
         return false;
283 283
     }
284 284
     if (!ldap_bind($link, $dn, session_get('ldap_password'))) {
285
-       return false;
285
+        return false;
286 286
     }
287 287
     $encoded_pass = "{MD5}".base64_encode(pack("H*",md5($new_pass)));
288 288
     $success = ldap_mod_replace($link, $dn, array('userPassword' => $encoded_pass));
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -16,9 +16,9 @@  discard block
 block discarded – undo
16 16
 
17 17
 // Attributs LDAP correspondants a ceux de SPIP, notamment pour le login
18 18
 // ne pas ecraser une definition perso dans mes_options
19
-if (!isset($GLOBALS['ldap_attributes']) OR !is_array($GLOBALS['ldap_attributes'])){
19
+if (!isset($GLOBALS['ldap_attributes']) OR !is_array($GLOBALS['ldap_attributes'])) {
20 20
 	$GLOBALS['ldap_attributes'] = array(
21
-		'login' => array('sAMAccountName', 'uid', 'login', 'userid', 'cn','sn'),
21
+		'login' => array('sAMAccountName', 'uid', 'login', 'userid', 'cn', 'sn'),
22 22
 		'nom' => "cn",
23 23
 		'email' => "mail",
24 24
 		'bio' => "description");
@@ -46,19 +46,19 @@  discard block
 block discarded – undo
46 46
  * @return string
47 47
  */
48 48
 // http://doc.spip.org/@inc_auth_ldap_dist
49
-function auth_ldap_dist ($login, $pass, $serveur='', $phpauth=false) {
49
+function auth_ldap_dist($login, $pass, $serveur = '', $phpauth = false) {
50 50
 
51 51
 	#spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent"));
52 52
 
53 53
 	// Utilisateur connu ?
54 54
 	// si http auth, inutile de reauthentifier: cela
55 55
  	// ne marchera pas avec auth http autre que basic.
56
-	$checkpass = isset($_SERVER["REMOTE_USER"])?false:true;
56
+	$checkpass = isset($_SERVER["REMOTE_USER"]) ? false : true;
57 57
 	if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) return array();
58 58
 	$credentials_ldap = array('ldap_dn' => $dn, 'ldap_password' => $pass);
59 59
 
60 60
 	// Si l'utilisateur figure deja dans la base, y recuperer les infos
61
-	$r = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='ldap'",'','','','',$serveur);
61
+	$r = sql_fetsel("*", "spip_auteurs", "login=".sql_quote($login)." AND source='ldap'", '', '', '', '', $serveur);
62 62
 
63 63
 	if ($r) return array_merge($r, $credentials_ldap);
64 64
 
@@ -72,13 +72,13 @@  discard block
 block discarded – undo
72 72
 		$desc['source'] = 'ldap';
73 73
 		$desc['pass'] = '';
74 74
 
75
-		$r = sql_insertq('spip_auteurs', $desc,'',$serveur);
75
+		$r = sql_insertq('spip_auteurs', $desc, '', $serveur);
76 76
 	}				
77 77
 
78 78
 	if ($r)
79 79
 		return array_merge(
80 80
 			$credentials_ldap,
81
-			sql_fetsel("*", "spip_auteurs", "id_auteur=".intval($r),'','','','',$serveur)
81
+			sql_fetsel("*", "spip_auteurs", "id_auteur=".intval($r), '', '', '', '', $serveur)
82 82
 			);
83 83
 
84 84
 	// sinon echec
@@ -95,14 +95,14 @@  discard block
 block discarded – undo
95 95
  * @param string $serveur
96 96
  * @return string
97 97
  */
98
-function auth_ldap_connect($serveur='') {
98
+function auth_ldap_connect($serveur = '') {
99 99
 	include_spip('base/connect_sql');
100 100
 	static $connexions_ldap = array();
101 101
 	if (isset($connexions_ldap[$serveur])) return $connexions_ldap[$serveur]; 
102 102
 	$connexion = spip_connect($serveur);
103 103
 	if (!is_array($connexion['ldap'])) {
104 104
 		if ($connexion['authentification']['ldap']) {
105
-			$f =  _DIR_CONNECT . $connexion['authentification']['ldap'];
105
+			$f = _DIR_CONNECT.$connexion['authentification']['ldap'];
106 106
 			unset($GLOBALS['ldap_link']);
107 107
 			if (is_readable($f)) { include_once($f); };
108 108
 			if (isset($GLOBALS['ldap_link']))
@@ -113,7 +113,7 @@  discard block
 block discarded – undo
113 113
 				$connexion['ldap']['attributes'] = $GLOBALS['ldap_champs'];
114 114
 		} else spip_log("connection LDAP $serveur inconnue");
115 115
 	}
116
-	return $connexions_ldap[$serveur]=$connexion['ldap'];
116
+	return $connexions_ldap[$serveur] = $connexion['ldap'];
117 117
 }
118 118
 
119 119
 /**
@@ -126,10 +126,10 @@  discard block
 block discarded – undo
126 126
  * @return string
127 127
  *	le login trouve ou chaine vide si non trouve
128 128
  */
129
-function auth_ldap_search($login, $pass, $checkpass=true, $serveur=''){
129
+function auth_ldap_search($login, $pass, $checkpass = true, $serveur = '') {
130 130
 	// Securite anti-injection et contre un serveur LDAP laxiste
131 131
 	$login_search = preg_replace("/[^-@._\s\d\w]/", "", $login); 
132
-	if (!strlen($login_search) OR ($checkpass AND !strlen($pass)) )
132
+	if (!strlen($login_search) OR ($checkpass AND !strlen($pass)))
133 133
 		return '';
134 134
 
135 135
 	// verifier la connexion
@@ -138,12 +138,12 @@  discard block
 block discarded – undo
138 138
 
139 139
 	$ldap_link = isset($ldap['link']) ? $ldap['link'] : null;
140 140
 	$ldap_base = isset($ldap['base']) ? $ldap['base'] : null;
141
-	$desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
141
+	$desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'];
142 142
 
143 143
 	$logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']);
144 144
 
145 145
 	// Tenter une recherche pour essayer de retrouver le DN
146
-	foreach($logins as $att) {
146
+	foreach ($logins as $att) {
147 147
 		$result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
148 148
 		$info = @ldap_get_entries($ldap_link, $result);
149 149
 			// Ne pas accepter les resultats si plus d'une entree
@@ -158,7 +158,7 @@  discard block
 block discarded – undo
158 158
 
159 159
 	if ($checkpass AND !isset($dn)) {
160 160
 		// Si echec, essayer de deviner le DN
161
-		foreach($logins as $att) {
161
+		foreach ($logins as $att) {
162 162
 			$dn = "$att=$login_search, $ldap_base";
163 163
 			if (@ldap_bind($ldap_link, $dn, $pass))
164 164
 				return "$att=$login_search, $ldap_base";
@@ -174,7 +174,7 @@  discard block
 block discarded – undo
174 174
  * @param string $serveur
175 175
  * @return array
176 176
  */
177
-function auth_ldap_retrouver($dn, $desc=array(), $serveur='')
177
+function auth_ldap_retrouver($dn, $desc = array(), $serveur = '')
178 178
 {
179 179
 	// Lire les infos sur l'utilisateur a partir de son DN depuis LDAP
180 180
 
@@ -185,7 +185,7 @@  discard block
 block discarded – undo
185 185
 
186 186
 	$ldap_link = $ldap['link'];
187 187
 	if (!$desc) {
188
-		$desc = $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
188
+		$desc = $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'];
189 189
 		unset($desc['login']);
190 190
 	}
191 191
 	$result = @ldap_read($ldap_link, $dn, "objectClass=*", array_values($desc));
@@ -213,7 +213,7 @@  discard block
 block discarded – undo
213 213
  * @param string $serveur
214 214
  * @return string
215 215
  */
216
-function auth_ldap_retrouver_login($login, $serveur='')
216
+function auth_ldap_retrouver_login($login, $serveur = '')
217 217
 {
218 218
 	return auth_ldap_search($login, '', false, $serveur) ? $login : '';
219 219
 }
@@ -233,7 +233,7 @@  discard block
 block discarded – undo
233 233
  * @return string
234 234
  *  message d'erreur si login non valide, chaine vide sinon
235 235
  */
236
-function auth_ldap_verifier_pass($login, $new_pass, $id_auteur=0, $serveur=''){
236
+function auth_ldap_verifier_pass($login, $new_pass, $id_auteur = 0, $serveur = '') {
237 237
     include_spip('auth/spip');
238 238
     return auth_spip_verifier_pass($login, $new_pass, $id_auteur, $serveur);
239 239
 }
@@ -252,7 +252,7 @@  discard block
 block discarded – undo
252 252
  *       by self write
253 253
  *       ...
254 254
  */
255
-function auth_ldap_autoriser_modifier_pass($serveur=''){
255
+function auth_ldap_autoriser_modifier_pass($serveur = '') {
256 256
     return true;
257 257
 }
258 258
 
@@ -269,8 +269,8 @@  discard block
 block discarded – undo
269 269
  * @return bool
270 270
  *  informe du succes ou de l'echec du changement du mot de passe
271 271
  */
272
-function auth_ldap_modifier_pass($login, $new_pass, $id_auteur, $serveur=''){
273
-    if (is_null($new_pass) OR auth_ldap_verifier_pass($login, $new_pass,$id_auteur,$serveur)!='') {
272
+function auth_ldap_modifier_pass($login, $new_pass, $id_auteur, $serveur = '') {
273
+    if (is_null($new_pass) OR auth_ldap_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') {
274 274
         return false;
275 275
     }
276 276
     if (!$ldap = auth_ldap_connect($serveur))
@@ -284,7 +284,7 @@  discard block
 block discarded – undo
284 284
     if (!ldap_bind($link, $dn, session_get('ldap_password'))) {
285 285
        return false;
286 286
     }
287
-    $encoded_pass = "{MD5}".base64_encode(pack("H*",md5($new_pass)));
287
+    $encoded_pass = "{MD5}".base64_encode(pack("H*", md5($new_pass)));
288 288
     $success = ldap_mod_replace($link, $dn, array('userPassword' => $encoded_pass));
289 289
     return $success;
290 290
 }
Please login to merge, or discard this patch.
Braces   +53 added lines, -26 removed lines patch added patch discarded remove patch
@@ -10,7 +10,9 @@  discard block
 block discarded – undo
10 10
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11 11
 \***************************************************************************/
12 12
 
13
-if (!defined('_ECRIRE_INC_VERSION')) return;
13
+if (!defined('_ECRIRE_INC_VERSION')) {
14
+    return;
15
+}
14 16
 
15 17
 // Authentifie via LDAP et retourne la ligne SQL decrivant l'utilisateur si ok
16 18
 
@@ -54,13 +56,17 @@  discard block
 block discarded – undo
54 56
 	// si http auth, inutile de reauthentifier: cela
55 57
  	// ne marchera pas avec auth http autre que basic.
56 58
 	$checkpass = isset($_SERVER["REMOTE_USER"])?false:true;
57
-	if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) return array();
59
+	if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) {
60
+	    return array();
61
+	}
58 62
 	$credentials_ldap = array('ldap_dn' => $dn, 'ldap_password' => $pass);
59 63
 
60 64
 	// Si l'utilisateur figure deja dans la base, y recuperer les infos
61 65
 	$r = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='ldap'",'','','','',$serveur);
62 66
 
63
-	if ($r) return array_merge($r, $credentials_ldap);
67
+	if ($r) {
68
+	    return array_merge($r, $credentials_ldap);
69
+	}
64 70
 
65 71
 	// sinon importer les infos depuis LDAP, 
66 72
 
@@ -75,11 +81,12 @@  discard block
 block discarded – undo
75 81
 		$r = sql_insertq('spip_auteurs', $desc,'',$serveur);
76 82
 	}				
77 83
 
78
-	if ($r)
79
-		return array_merge(
84
+	if ($r) {
85
+			return array_merge(
80 86
 			$credentials_ldap,
81 87
 			sql_fetsel("*", "spip_auteurs", "id_auteur=".intval($r),'','','','',$serveur)
82 88
 			);
89
+	}
83 90
 
84 91
 	// sinon echec
85 92
 	spip_log("Creation de l'auteur '$login' impossible");
@@ -98,20 +105,27 @@  discard block
 block discarded – undo
98 105
 function auth_ldap_connect($serveur='') {
99 106
 	include_spip('base/connect_sql');
100 107
 	static $connexions_ldap = array();
101
-	if (isset($connexions_ldap[$serveur])) return $connexions_ldap[$serveur]; 
108
+	if (isset($connexions_ldap[$serveur])) {
109
+	    return $connexions_ldap[$serveur];
110
+	}
102 111
 	$connexion = spip_connect($serveur);
103 112
 	if (!is_array($connexion['ldap'])) {
104 113
 		if ($connexion['authentification']['ldap']) {
105 114
 			$f =  _DIR_CONNECT . $connexion['authentification']['ldap'];
106 115
 			unset($GLOBALS['ldap_link']);
107 116
 			if (is_readable($f)) { include_once($f); };
108
-			if (isset($GLOBALS['ldap_link']))
109
-				$connexion['ldap'] = array('link' => $GLOBALS['ldap_link'],
117
+			if (isset($GLOBALS['ldap_link'])) {
118
+							$connexion['ldap'] = array('link' => $GLOBALS['ldap_link'],
110 119
 					'base' => $GLOBALS['ldap_base']);
111
-			else spip_log("connection LDAP $serveur mal definie dans $f");
112
-			if (isset($GLOBALS['ldap_champs']))
113
-				$connexion['ldap']['attributes'] = $GLOBALS['ldap_champs'];
114
-		} else spip_log("connection LDAP $serveur inconnue");
120
+			} else {
121
+			    spip_log("connection LDAP $serveur mal definie dans $f");
122
+			}
123
+			if (isset($GLOBALS['ldap_champs'])) {
124
+							$connexion['ldap']['attributes'] = $GLOBALS['ldap_champs'];
125
+			}
126
+		} else {
127
+		    spip_log("connection LDAP $serveur inconnue");
128
+		}
115 129
 	}
116 130
 	return $connexions_ldap[$serveur]=$connexion['ldap'];
117 131
 }
@@ -129,12 +143,14 @@  discard block
 block discarded – undo
129 143
 function auth_ldap_search($login, $pass, $checkpass=true, $serveur=''){
130 144
 	// Securite anti-injection et contre un serveur LDAP laxiste
131 145
 	$login_search = preg_replace("/[^-@._\s\d\w]/", "", $login); 
132
-	if (!strlen($login_search) OR ($checkpass AND !strlen($pass)) )
133
-		return '';
146
+	if (!strlen($login_search) OR ($checkpass AND !strlen($pass)) ) {
147
+			return '';
148
+	}
134 149
 
135 150
 	// verifier la connexion
136
-	if (!$ldap = auth_ldap_connect($serveur))
137
-		return '';
151
+	if (!$ldap = auth_ldap_connect($serveur)) {
152
+			return '';
153
+	}
138 154
 
139 155
 	$ldap_link = isset($ldap['link']) ? $ldap['link'] : null;
140 156
 	$ldap_base = isset($ldap['base']) ? $ldap['base'] : null;
@@ -151,8 +167,12 @@  discard block
 block discarded – undo
151 167
 
152 168
 		if (is_array($info) AND $info['count'] == 1) {
153 169
 			$dn = $info[0]['dn'];
154
-			if (!$checkpass) return $dn;
155
-			if (@ldap_bind($ldap_link, $dn, $pass)) return $dn;
170
+			if (!$checkpass) {
171
+			    return $dn;
172
+			}
173
+			if (@ldap_bind($ldap_link, $dn, $pass)) {
174
+			    return $dn;
175
+			}
156 176
 		}
157 177
 	}
158 178
 
@@ -160,8 +180,9 @@  discard block
 block discarded – undo
160 180
 		// Si echec, essayer de deviner le DN
161 181
 		foreach($logins as $att) {
162 182
 			$dn = "$att=$login_search, $ldap_base";
163
-			if (@ldap_bind($ldap_link, $dn, $pass))
164
-				return "$att=$login_search, $ldap_base";
183
+			if (@ldap_bind($ldap_link, $dn, $pass)) {
184
+							return "$att=$login_search, $ldap_base";
185
+			}
165 186
 		}
166 187
 	}
167 188
 	return '';
@@ -190,18 +211,23 @@  discard block
 block discarded – undo
190 211
 	}
191 212
 	$result = @ldap_read($ldap_link, $dn, "objectClass=*", array_values($desc));
192 213
 
193
-	if (!$result) return array();
214
+	if (!$result) {
215
+	    return array();
216
+	}
194 217
 
195 218
 	// Recuperer les donnees du premier (unique?) compte de l'auteur
196 219
 	$val = @ldap_get_entries($ldap_link, $result);
197
-	if (!is_array($val) OR !is_array($val[0])) return array();
220
+	if (!is_array($val) OR !is_array($val[0])) {
221
+	    return array();
222
+	}
198 223
 	$val = $val[0];
199 224
 
200 225
 	// Convertir depuis UTF-8 (jeu de caracteres par defaut)
201 226
 	include_spip('inc/charsets');
202 227
 
203
-	foreach ($desc as $k => $v)
204
-		$desc[$k] = importer_charset($val[strtolower($v)][0], 'utf-8');
228
+	foreach ($desc as $k => $v) {
229
+			$desc[$k] = importer_charset($val[strtolower($v)][0], 'utf-8');
230
+	}
205 231
 	return $desc;
206 232
 }
207 233
 
@@ -273,8 +299,9 @@  discard block
 block discarded – undo
273 299
     if (is_null($new_pass) OR auth_ldap_verifier_pass($login, $new_pass,$id_auteur,$serveur)!='') {
274 300
         return false;
275 301
     }
276
-    if (!$ldap = auth_ldap_connect($serveur))
277
-       return '';
302
+    if (!$ldap = auth_ldap_connect($serveur)) {
303
+           return '';
304
+    }
278 305
     $link = $ldap['link'];
279 306
     include_spip("inc/session");
280 307
     $dn = session_get('ldap_dn');
Please login to merge, or discard this patch.
ecrire/balise/formulaire_.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -56,7 +56,7 @@
 block discarded – undo
56 56
  * @see trouver_fond()
57 57
  * @param string
58 58
  *     Nom du formulaire
59
- * @return string|bool
59
+ * @return string|false
60 60
  *     - string : chemin du squelette
61 61
  *     - false : pas de squelette trouvé
62 62
 **/
Please login to merge, or discard this patch.
Indentation   +182 added lines, -182 removed lines patch added patch discarded remove patch
@@ -32,22 +32,22 @@  discard block
 block discarded – undo
32 32
  *     Saisie protégée
33 33
 **/
34 34
 function protege_champ($texte){
35
-	if (is_array($texte))
36
-		$texte = array_map('protege_champ',$texte);
37
-	else {
38
-		// ne pas corrompre une valeur serialize
39
-		if ((preg_match(",^[abis]:\d+[:;],", $texte) AND unserialize($texte)!=false) OR is_null($texte))
40
-			return $texte;
41
-		if (is_string($texte)
42
-			AND $texte
43
-			AND strpbrk($texte, "&\"'<>")!==false
44
-			) {
45
-				$texte = spip_htmlspecialchars($texte,ENT_QUOTES);
46
-		}
47
-		elseif(is_bool($texte))
48
-			$texte = ($texte?'1':'');
49
-	}
50
-	return $texte;
35
+    if (is_array($texte))
36
+        $texte = array_map('protege_champ',$texte);
37
+    else {
38
+        // ne pas corrompre une valeur serialize
39
+        if ((preg_match(",^[abis]:\d+[:;],", $texte) AND unserialize($texte)!=false) OR is_null($texte))
40
+            return $texte;
41
+        if (is_string($texte)
42
+            AND $texte
43
+            AND strpbrk($texte, "&\"'<>")!==false
44
+            ) {
45
+                $texte = spip_htmlspecialchars($texte,ENT_QUOTES);
46
+        }
47
+        elseif(is_bool($texte))
48
+            $texte = ($texte?'1':'');
49
+    }
50
+    return $texte;
51 51
 }
52 52
 
53 53
 /**
@@ -62,14 +62,14 @@  discard block
 block discarded – undo
62 62
 **/
63 63
 function existe_formulaire($form)
64 64
 {
65
-	if (substr($form,0,11)=="FORMULAIRE_")
66
-		$form = strtolower(substr($form,11));
67
-	else 
68
-		$form = strtolower($form);
65
+    if (substr($form,0,11)=="FORMULAIRE_")
66
+        $form = strtolower(substr($form,11));
67
+    else 
68
+        $form = strtolower($form);
69 69
 
70
-	if (!$form) return ''; // on ne sait pas, le nom du formulaire n'est pas fourni ici
70
+    if (!$form) return ''; // on ne sait pas, le nom du formulaire n'est pas fourni ici
71 71
 
72
-	return trouver_fond($form, 'formulaires/') ? $form : false;
72
+    return trouver_fond($form, 'formulaires/') ? $form : false;
73 73
 }
74 74
 
75 75
 
@@ -85,16 +85,16 @@  discard block
 block discarded – undo
85 85
 **/
86 86
 function balise_FORMULAIRE__dist($p) {
87 87
 
88
-	// Cas d'un #FORMULAIRE_TOTO inexistant : renvoyer la chaine vide.
89
-	// mais si #FORMULAIRE_{toto} on ne peut pas savoir a la compilation, continuer
90
-	if (existe_formulaire($p->nom_champ)===FALSE) {
91
-		    $p->code = "''";
92
-		    $p->interdire_scripts = false;
93
-		    return $p;
94
-	}
88
+    // Cas d'un #FORMULAIRE_TOTO inexistant : renvoyer la chaine vide.
89
+    // mais si #FORMULAIRE_{toto} on ne peut pas savoir a la compilation, continuer
90
+    if (existe_formulaire($p->nom_champ)===FALSE) {
91
+            $p->code = "''";
92
+            $p->interdire_scripts = false;
93
+            return $p;
94
+    }
95 95
 
96
-	// sinon renvoyer un code php dynamique
97
-	return calculer_balise_dynamique($p, $p->nom_champ, array());
96
+    // sinon renvoyer un code php dynamique
97
+    return calculer_balise_dynamique($p, $p->nom_champ, array());
98 98
 }
99 99
 
100 100
 /**
@@ -108,22 +108,22 @@  discard block
 block discarded – undo
108 108
  */
109 109
 function balise_FORMULAIRE__dyn($form)
110 110
 {
111
-	$form = existe_formulaire($form);
112
-	if (!$form) return '';
113
-
114
-	// deux moyen d'arriver ici : 
115
-	// soit #FORMULAIRE_XX reroute avec 'FORMULAIRE_XX' ajoute en premier arg
116
-	// soit #FORMULAIRE_{xx}
117
-
118
-	// recuperer les arguments passes a la balise
119
-	// on enleve le premier qui est le nom de la balise 
120
-	// deja recupere ci-dessus
121
-
122
-	$args = func_get_args();
123
-	array_shift($args);
124
-	$contexte = balise_FORMULAIRE__contexte($form, $args);
125
-	if (!is_array($contexte)) return $contexte;
126
-	return array("formulaires/$form", 3600, $contexte);
111
+    $form = existe_formulaire($form);
112
+    if (!$form) return '';
113
+
114
+    // deux moyen d'arriver ici : 
115
+    // soit #FORMULAIRE_XX reroute avec 'FORMULAIRE_XX' ajoute en premier arg
116
+    // soit #FORMULAIRE_{xx}
117
+
118
+    // recuperer les arguments passes a la balise
119
+    // on enleve le premier qui est le nom de la balise 
120
+    // deja recupere ci-dessus
121
+
122
+    $args = func_get_args();
123
+    array_shift($args);
124
+    $contexte = balise_FORMULAIRE__contexte($form, $args);
125
+    if (!is_array($contexte)) return $contexte;
126
+    return array("formulaires/$form", 3600, $contexte);
127 127
 }
128 128
 
129 129
 /**
@@ -138,108 +138,108 @@  discard block
 block discarded – undo
138 138
 **/
139 139
 function balise_FORMULAIRE__contexte($form, $args)
140 140
 {
141
-	// tester si ce formulaire vient d'etre poste (memes arguments)
142
-	// pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
143
-	// si poste, on recupere les erreurs
144
-
145
-	$je_suis_poste = false;
146
-	if ($post_form = _request('formulaire_action')
147
-	 AND $post_form==$form
148
-	 AND $p = _request('formulaire_action_args')
149
-	 AND is_array($p = decoder_contexte_ajax($p, $post_form))) {
150
-		// enlever le faux attribut de langue masque
151
-		array_shift($p);
152
-		if (formulaire__identifier($form, $args, $p))
153
-			$je_suis_poste = true;
154
-	}
155
-
156
-	$editable = true;
157
-	$erreurs = $post = array();
158
-	if ($je_suis_poste) {
159
-		$post = traiter_formulaires_dynamiques(true);
160
-		$e = "erreurs_$form";
161
-		$erreurs = isset($post[$e]) ? $post[$e] : array();
162
-		$editable = "editable_$form";
163
-		$editable = (!isset($post[$e]))
164
-			  || count($erreurs)
165
-			  || (isset($post[$editable]) && $post[$editable]);
166
-	}
167
-
168
-	$valeurs = formulaire__charger($form, $args, $je_suis_poste);
169
-
170
-	// si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
171
-	// C'est plus fort qu'editable qui est gere par le squelette 
172
-	// Idealement $valeur doit etre alors un message explicatif.
173
-	if (!is_array($valeurs)) return is_string($valeurs) ? $valeurs : '';
141
+    // tester si ce formulaire vient d'etre poste (memes arguments)
142
+    // pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
143
+    // si poste, on recupere les erreurs
144
+
145
+    $je_suis_poste = false;
146
+    if ($post_form = _request('formulaire_action')
147
+     AND $post_form==$form
148
+     AND $p = _request('formulaire_action_args')
149
+     AND is_array($p = decoder_contexte_ajax($p, $post_form))) {
150
+        // enlever le faux attribut de langue masque
151
+        array_shift($p);
152
+        if (formulaire__identifier($form, $args, $p))
153
+            $je_suis_poste = true;
154
+    }
155
+
156
+    $editable = true;
157
+    $erreurs = $post = array();
158
+    if ($je_suis_poste) {
159
+        $post = traiter_formulaires_dynamiques(true);
160
+        $e = "erreurs_$form";
161
+        $erreurs = isset($post[$e]) ? $post[$e] : array();
162
+        $editable = "editable_$form";
163
+        $editable = (!isset($post[$e]))
164
+              || count($erreurs)
165
+              || (isset($post[$editable]) && $post[$editable]);
166
+    }
167
+
168
+    $valeurs = formulaire__charger($form, $args, $je_suis_poste);
169
+
170
+    // si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
171
+    // C'est plus fort qu'editable qui est gere par le squelette 
172
+    // Idealement $valeur doit etre alors un message explicatif.
173
+    if (!is_array($valeurs)) return is_string($valeurs) ? $valeurs : '';
174 174
 	
175
-	// charger peut passer une action si le formulaire ne tourne pas sur self()
176
-	// ou une action vide si elle ne sert pas
177
-	$action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&amp;', true);
178
-	// bug IEx : si action finit par / 
179
-	// IE croit que le <form ... action=../ > est autoferme
180
-	if (substr($action,-1)=='/') {
181
-		// on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
182
-		$action .= '#';
183
-	}
184
-
185
-	// recuperer la saisie en cours si erreurs
186
-	// seulement si c'est ce formulaire qui est poste
187
-	// ou si on le demande explicitement par le parametre _forcer_request = true
188
-	$dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
189
-	foreach(array_keys($valeurs) as $champ){
190
-		if ($champ[0]!=='_' AND !in_array($champ, array('message_ok','message_erreur','editable'))) {
191
-			if ($dispo AND (($v = _request($champ))!==NULL))
192
-				$valeurs[$champ] = $v;
193
-			// nettoyer l'url des champs qui vont etre saisis
194
-			if ($action)
195
-				$action = parametre_url($action,$champ,'');
196
-			// proteger les ' et les " dans les champs que l'on va injecter
197
-			$valeurs[$champ] = protege_champ($valeurs[$champ]);
198
-		}
199
-	}
200
-
201
-	if ($action) {
202
-		// nettoyer l'url
203
-		$action = parametre_url($action,'formulaire_action','');
204
-		$action = parametre_url($action,'formulaire_action_args','');
205
-	}
206
-
207
-	if (isset($valeurs['_action'])){
208
-		$securiser_action = charger_fonction('securiser_action','inc');
209
-		$secu = $securiser_action(reset($valeurs['_action']),end($valeurs['_action']),'',-1);
210
-		$valeurs['_hidden'] = (isset($valeurs['_hidden'])?$valeurs['_hidden']:'') .
211
-		"<input type='hidden' name='arg' value='".$secu['arg']."' />"
212
-		. "<input type='hidden' name='hash' value='".$secu['hash']."' />";
213
-	}
214
-
215
-	// empiler la lang en tant que premier argument implicite du CVT
216
-	// pour permettre de la restaurer au moment du Verifier et du Traiter
217
-	array_unshift($args, $GLOBALS['spip_lang']);
218
-
219
-	$valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form);
220
-	$valeurs['erreurs'] = $erreurs;
221
-	$valeurs['action'] = $action;
222
-	$valeurs['form'] = $form;
223
-
224
-	if (!isset($valeurs['id'])) $valeurs['id'] = 'new';
225
-	// editable peut venir de charger() ou de traiter() sinon
226
-	if (!isset($valeurs['editable'])) $valeurs['editable'] = $editable;
227
-	// dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
228
-	$valeurs['editable'] = ($valeurs['editable']?' ':'');
229
-
230
-	if ($je_suis_poste) {
231
-		$valeurs['message_erreur'] = "";
232
-		if (isset($erreurs['message_erreur']))
233
-			$valeurs['message_erreur'] = $erreurs['message_erreur'];
234
-
235
-		$valeurs['message_ok'] = "";
236
-		if (isset($post["message_ok_$form"]))
237
-			$valeurs['message_ok'] = $post["message_ok_$form"];
238
-		elseif (isset($erreurs['message_ok']))
239
-			$valeurs['message_ok'] = $erreurs["message_ok"];
240
-	}
175
+    // charger peut passer une action si le formulaire ne tourne pas sur self()
176
+    // ou une action vide si elle ne sert pas
177
+    $action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&amp;', true);
178
+    // bug IEx : si action finit par / 
179
+    // IE croit que le <form ... action=../ > est autoferme
180
+    if (substr($action,-1)=='/') {
181
+        // on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
182
+        $action .= '#';
183
+    }
184
+
185
+    // recuperer la saisie en cours si erreurs
186
+    // seulement si c'est ce formulaire qui est poste
187
+    // ou si on le demande explicitement par le parametre _forcer_request = true
188
+    $dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
189
+    foreach(array_keys($valeurs) as $champ){
190
+        if ($champ[0]!=='_' AND !in_array($champ, array('message_ok','message_erreur','editable'))) {
191
+            if ($dispo AND (($v = _request($champ))!==NULL))
192
+                $valeurs[$champ] = $v;
193
+            // nettoyer l'url des champs qui vont etre saisis
194
+            if ($action)
195
+                $action = parametre_url($action,$champ,'');
196
+            // proteger les ' et les " dans les champs que l'on va injecter
197
+            $valeurs[$champ] = protege_champ($valeurs[$champ]);
198
+        }
199
+    }
200
+
201
+    if ($action) {
202
+        // nettoyer l'url
203
+        $action = parametre_url($action,'formulaire_action','');
204
+        $action = parametre_url($action,'formulaire_action_args','');
205
+    }
206
+
207
+    if (isset($valeurs['_action'])){
208
+        $securiser_action = charger_fonction('securiser_action','inc');
209
+        $secu = $securiser_action(reset($valeurs['_action']),end($valeurs['_action']),'',-1);
210
+        $valeurs['_hidden'] = (isset($valeurs['_hidden'])?$valeurs['_hidden']:'') .
211
+        "<input type='hidden' name='arg' value='".$secu['arg']."' />"
212
+        . "<input type='hidden' name='hash' value='".$secu['hash']."' />";
213
+    }
214
+
215
+    // empiler la lang en tant que premier argument implicite du CVT
216
+    // pour permettre de la restaurer au moment du Verifier et du Traiter
217
+    array_unshift($args, $GLOBALS['spip_lang']);
218
+
219
+    $valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form);
220
+    $valeurs['erreurs'] = $erreurs;
221
+    $valeurs['action'] = $action;
222
+    $valeurs['form'] = $form;
223
+
224
+    if (!isset($valeurs['id'])) $valeurs['id'] = 'new';
225
+    // editable peut venir de charger() ou de traiter() sinon
226
+    if (!isset($valeurs['editable'])) $valeurs['editable'] = $editable;
227
+    // dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
228
+    $valeurs['editable'] = ($valeurs['editable']?' ':'');
229
+
230
+    if ($je_suis_poste) {
231
+        $valeurs['message_erreur'] = "";
232
+        if (isset($erreurs['message_erreur']))
233
+            $valeurs['message_erreur'] = $erreurs['message_erreur'];
234
+
235
+        $valeurs['message_ok'] = "";
236
+        if (isset($post["message_ok_$form"]))
237
+            $valeurs['message_ok'] = $post["message_ok_$form"];
238
+        elseif (isset($erreurs['message_ok']))
239
+            $valeurs['message_ok'] = $erreurs["message_ok"];
240
+    }
241 241
 	
242
-	return $valeurs;
242
+    return $valeurs;
243 243
 }
244 244
 
245 245
 /**
@@ -252,37 +252,37 @@  discard block
 block discarded – undo
252 252
  */
253 253
 function formulaire__charger($form, $args, $poste)
254 254
 {
255
-	if ($charger_valeurs = charger_fonction("charger","formulaires/$form",true))
256
-		$valeurs = call_user_func_array($charger_valeurs,$args);
257
-	else $valeurs = array();
258
-
259
-	$valeurs = pipeline(
260
-		'formulaire_charger',
261
-		array(
262
-			'args'=>array('form'=>$form,'args'=>$args,'je_suis_poste'=>$poste),
263
-			'data'=>$valeurs)
264
-	);
265
-
266
-	// si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
267
-	if (is_array($valeurs)){
268
-		if (!isset($valeurs['_pipelines'])) $valeurs['_pipelines']=array();
269
-		// l'ancien argument _pipeline devient maintenant _pipelines
270
-		// reinjectons le vieux _pipeline au debut de _pipelines
271
-		if (isset($valeurs['_pipeline'])) {
272
-			$pipe = is_array($valeurs['_pipeline'])?reset($valeurs['_pipeline']):$valeurs['_pipeline'];
273
-			$args = is_array($valeurs['_pipeline'])?end($valeurs['_pipeline']):array();
274
-
275
-			$pipelines = array($pipe=>$args);
276
-			$valeurs['_pipelines'] = array_merge($pipelines,$valeurs['_pipelines']);
277
-		}
278
-
279
-		// et enfin, ajoutons systematiquement un pipeline sur le squelette du formulaire
280
-		// qui constitue le cas le plus courant d'utilisation du pipeline recuperer_fond
281
-		// (performance, cela evite de s'injecter dans recuperer_fond utilise pour *tous* les squelettes)
282
-		$valeurs['_pipelines']['formulaire_fond'] = array('form'=>$form,'args'=>$args,'je_suis_poste'=>$poste);
283
-	}
284
-
285
-	return $valeurs;
255
+    if ($charger_valeurs = charger_fonction("charger","formulaires/$form",true))
256
+        $valeurs = call_user_func_array($charger_valeurs,$args);
257
+    else $valeurs = array();
258
+
259
+    $valeurs = pipeline(
260
+        'formulaire_charger',
261
+        array(
262
+            'args'=>array('form'=>$form,'args'=>$args,'je_suis_poste'=>$poste),
263
+            'data'=>$valeurs)
264
+    );
265
+
266
+    // si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
267
+    if (is_array($valeurs)){
268
+        if (!isset($valeurs['_pipelines'])) $valeurs['_pipelines']=array();
269
+        // l'ancien argument _pipeline devient maintenant _pipelines
270
+        // reinjectons le vieux _pipeline au debut de _pipelines
271
+        if (isset($valeurs['_pipeline'])) {
272
+            $pipe = is_array($valeurs['_pipeline'])?reset($valeurs['_pipeline']):$valeurs['_pipeline'];
273
+            $args = is_array($valeurs['_pipeline'])?end($valeurs['_pipeline']):array();
274
+
275
+            $pipelines = array($pipe=>$args);
276
+            $valeurs['_pipelines'] = array_merge($pipelines,$valeurs['_pipelines']);
277
+        }
278
+
279
+        // et enfin, ajoutons systematiquement un pipeline sur le squelette du formulaire
280
+        // qui constitue le cas le plus courant d'utilisation du pipeline recuperer_fond
281
+        // (performance, cela evite de s'injecter dans recuperer_fond utilise pour *tous* les squelettes)
282
+        $valeurs['_pipelines']['formulaire_fond'] = array('form'=>$form,'args'=>$args,'je_suis_poste'=>$poste);
283
+    }
284
+
285
+    return $valeurs;
286 286
 }
287 287
 
288 288
 /**
@@ -301,9 +301,9 @@  discard block
 block discarded – undo
301 301
  * @return bool
302 302
  */
303 303
 function formulaire__identifier($form, $args, $p) {
304
-	if ($identifier_args = charger_fonction("identifier","formulaires/$form",true)) {
305
-		return call_user_func_array($identifier_args,$args)===call_user_func_array($identifier_args,$p);
306
-	}
307
-	return $args===$p;
304
+    if ($identifier_args = charger_fonction("identifier","formulaires/$form",true)) {
305
+        return call_user_func_array($identifier_args,$args)===call_user_func_array($identifier_args,$p);
306
+    }
307
+    return $args===$p;
308 308
 }
309 309
 ?>
Please login to merge, or discard this patch.
Spacing   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -31,21 +31,21 @@  discard block
 block discarded – undo
31 31
  * @return string|array
32 32
  *     Saisie protégée
33 33
 **/
34
-function protege_champ($texte){
34
+function protege_champ($texte) {
35 35
 	if (is_array($texte))
36
-		$texte = array_map('protege_champ',$texte);
36
+		$texte = array_map('protege_champ', $texte);
37 37
 	else {
38 38
 		// ne pas corrompre une valeur serialize
39
-		if ((preg_match(",^[abis]:\d+[:;],", $texte) AND unserialize($texte)!=false) OR is_null($texte))
39
+		if ((preg_match(",^[abis]:\d+[:;],", $texte) AND unserialize($texte) != false) OR is_null($texte))
40 40
 			return $texte;
41 41
 		if (is_string($texte)
42 42
 			AND $texte
43
-			AND strpbrk($texte, "&\"'<>")!==false
43
+			AND strpbrk($texte, "&\"'<>") !== false
44 44
 			) {
45
-				$texte = spip_htmlspecialchars($texte,ENT_QUOTES);
45
+				$texte = spip_htmlspecialchars($texte, ENT_QUOTES);
46 46
 		}
47
-		elseif(is_bool($texte))
48
-			$texte = ($texte?'1':'');
47
+		elseif (is_bool($texte))
48
+			$texte = ($texte ? '1' : '');
49 49
 	}
50 50
 	return $texte;
51 51
 }
@@ -62,8 +62,8 @@  discard block
 block discarded – undo
62 62
 **/
63 63
 function existe_formulaire($form)
64 64
 {
65
-	if (substr($form,0,11)=="FORMULAIRE_")
66
-		$form = strtolower(substr($form,11));
65
+	if (substr($form, 0, 11) == "FORMULAIRE_")
66
+		$form = strtolower(substr($form, 11));
67 67
 	else 
68 68
 		$form = strtolower($form);
69 69
 
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
 
88 88
 	// Cas d'un #FORMULAIRE_TOTO inexistant : renvoyer la chaine vide.
89 89
 	// mais si #FORMULAIRE_{toto} on ne peut pas savoir a la compilation, continuer
90
-	if (existe_formulaire($p->nom_champ)===FALSE) {
90
+	if (existe_formulaire($p->nom_champ) === FALSE) {
91 91
 		    $p->code = "''";
92 92
 		    $p->interdire_scripts = false;
93 93
 		    return $p;
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
 
145 145
 	$je_suis_poste = false;
146 146
 	if ($post_form = _request('formulaire_action')
147
-	 AND $post_form==$form
147
+	 AND $post_form == $form
148 148
 	 AND $p = _request('formulaire_action_args')
149 149
 	 AND is_array($p = decoder_contexte_ajax($p, $post_form))) {
150 150
 		// enlever le faux attribut de langue masque
@@ -177,7 +177,7 @@  discard block
 block discarded – undo
177 177
 	$action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&amp;', true);
178 178
 	// bug IEx : si action finit par / 
179 179
 	// IE croit que le <form ... action=../ > est autoferme
180
-	if (substr($action,-1)=='/') {
180
+	if (substr($action, -1) == '/') {
181 181
 		// on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
182 182
 		$action .= '#';
183 183
 	}
@@ -186,13 +186,13 @@  discard block
 block discarded – undo
186 186
 	// seulement si c'est ce formulaire qui est poste
187 187
 	// ou si on le demande explicitement par le parametre _forcer_request = true
188 188
 	$dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
189
-	foreach(array_keys($valeurs) as $champ){
190
-		if ($champ[0]!=='_' AND !in_array($champ, array('message_ok','message_erreur','editable'))) {
191
-			if ($dispo AND (($v = _request($champ))!==NULL))
189
+	foreach (array_keys($valeurs) as $champ) {
190
+		if ($champ[0] !== '_' AND !in_array($champ, array('message_ok', 'message_erreur', 'editable'))) {
191
+			if ($dispo AND (($v = _request($champ)) !== NULL))
192 192
 				$valeurs[$champ] = $v;
193 193
 			// nettoyer l'url des champs qui vont etre saisis
194 194
 			if ($action)
195
-				$action = parametre_url($action,$champ,'');
195
+				$action = parametre_url($action, $champ, '');
196 196
 			// proteger les ' et les " dans les champs que l'on va injecter
197 197
 			$valeurs[$champ] = protege_champ($valeurs[$champ]);
198 198
 		}
@@ -200,14 +200,14 @@  discard block
 block discarded – undo
200 200
 
201 201
 	if ($action) {
202 202
 		// nettoyer l'url
203
-		$action = parametre_url($action,'formulaire_action','');
204
-		$action = parametre_url($action,'formulaire_action_args','');
203
+		$action = parametre_url($action, 'formulaire_action', '');
204
+		$action = parametre_url($action, 'formulaire_action_args', '');
205 205
 	}
206 206
 
207
-	if (isset($valeurs['_action'])){
208
-		$securiser_action = charger_fonction('securiser_action','inc');
209
-		$secu = $securiser_action(reset($valeurs['_action']),end($valeurs['_action']),'',-1);
210
-		$valeurs['_hidden'] = (isset($valeurs['_hidden'])?$valeurs['_hidden']:'') .
207
+	if (isset($valeurs['_action'])) {
208
+		$securiser_action = charger_fonction('securiser_action', 'inc');
209
+		$secu = $securiser_action(reset($valeurs['_action']), end($valeurs['_action']), '', -1);
210
+		$valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '').
211 211
 		"<input type='hidden' name='arg' value='".$secu['arg']."' />"
212 212
 		. "<input type='hidden' name='hash' value='".$secu['hash']."' />";
213 213
 	}
@@ -225,7 +225,7 @@  discard block
 block discarded – undo
225 225
 	// editable peut venir de charger() ou de traiter() sinon
226 226
 	if (!isset($valeurs['editable'])) $valeurs['editable'] = $editable;
227 227
 	// dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
228
-	$valeurs['editable'] = ($valeurs['editable']?' ':'');
228
+	$valeurs['editable'] = ($valeurs['editable'] ? ' ' : '');
229 229
 
230 230
 	if ($je_suis_poste) {
231 231
 		$valeurs['message_erreur'] = "";
@@ -252,34 +252,34 @@  discard block
 block discarded – undo
252 252
  */
253 253
 function formulaire__charger($form, $args, $poste)
254 254
 {
255
-	if ($charger_valeurs = charger_fonction("charger","formulaires/$form",true))
256
-		$valeurs = call_user_func_array($charger_valeurs,$args);
255
+	if ($charger_valeurs = charger_fonction("charger", "formulaires/$form", true))
256
+		$valeurs = call_user_func_array($charger_valeurs, $args);
257 257
 	else $valeurs = array();
258 258
 
259 259
 	$valeurs = pipeline(
260 260
 		'formulaire_charger',
261 261
 		array(
262
-			'args'=>array('form'=>$form,'args'=>$args,'je_suis_poste'=>$poste),
262
+			'args'=>array('form'=>$form, 'args'=>$args, 'je_suis_poste'=>$poste),
263 263
 			'data'=>$valeurs)
264 264
 	);
265 265
 
266 266
 	// si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
267
-	if (is_array($valeurs)){
268
-		if (!isset($valeurs['_pipelines'])) $valeurs['_pipelines']=array();
267
+	if (is_array($valeurs)) {
268
+		if (!isset($valeurs['_pipelines'])) $valeurs['_pipelines'] = array();
269 269
 		// l'ancien argument _pipeline devient maintenant _pipelines
270 270
 		// reinjectons le vieux _pipeline au debut de _pipelines
271 271
 		if (isset($valeurs['_pipeline'])) {
272
-			$pipe = is_array($valeurs['_pipeline'])?reset($valeurs['_pipeline']):$valeurs['_pipeline'];
273
-			$args = is_array($valeurs['_pipeline'])?end($valeurs['_pipeline']):array();
272
+			$pipe = is_array($valeurs['_pipeline']) ? reset($valeurs['_pipeline']) : $valeurs['_pipeline'];
273
+			$args = is_array($valeurs['_pipeline']) ? end($valeurs['_pipeline']) : array();
274 274
 
275 275
 			$pipelines = array($pipe=>$args);
276
-			$valeurs['_pipelines'] = array_merge($pipelines,$valeurs['_pipelines']);
276
+			$valeurs['_pipelines'] = array_merge($pipelines, $valeurs['_pipelines']);
277 277
 		}
278 278
 
279 279
 		// et enfin, ajoutons systematiquement un pipeline sur le squelette du formulaire
280 280
 		// qui constitue le cas le plus courant d'utilisation du pipeline recuperer_fond
281 281
 		// (performance, cela evite de s'injecter dans recuperer_fond utilise pour *tous* les squelettes)
282
-		$valeurs['_pipelines']['formulaire_fond'] = array('form'=>$form,'args'=>$args,'je_suis_poste'=>$poste);
282
+		$valeurs['_pipelines']['formulaire_fond'] = array('form'=>$form, 'args'=>$args, 'je_suis_poste'=>$poste);
283 283
 	}
284 284
 
285 285
 	return $valeurs;
@@ -301,9 +301,9 @@  discard block
 block discarded – undo
301 301
  * @return bool
302 302
  */
303 303
 function formulaire__identifier($form, $args, $p) {
304
-	if ($identifier_args = charger_fonction("identifier","formulaires/$form",true)) {
305
-		return call_user_func_array($identifier_args,$args)===call_user_func_array($identifier_args,$p);
304
+	if ($identifier_args = charger_fonction("identifier", "formulaires/$form", true)) {
305
+		return call_user_func_array($identifier_args, $args) === call_user_func_array($identifier_args, $p);
306 306
 	}
307
-	return $args===$p;
307
+	return $args === $p;
308 308
 }
309 309
 ?>
Please login to merge, or discard this patch.
Braces   +60 added lines, -34 removed lines patch added patch discarded remove patch
@@ -14,7 +14,9 @@  discard block
 block discarded – undo
14 14
  *
15 15
  * @package SPIP\Formulaires
16 16
 **/
17
-if (!defined('_ECRIRE_INC_VERSION')) return;
17
+if (!defined('_ECRIRE_INC_VERSION')) {
18
+    return;
19
+}
18 20
 
19 21
 include_spip('inc/filtres');
20 22
 include_spip('inc/texte');
@@ -32,20 +34,21 @@  discard block
 block discarded – undo
32 34
  *     Saisie protégée
33 35
 **/
34 36
 function protege_champ($texte){
35
-	if (is_array($texte))
36
-		$texte = array_map('protege_champ',$texte);
37
-	else {
37
+	if (is_array($texte)) {
38
+			$texte = array_map('protege_champ',$texte);
39
+	} else {
38 40
 		// ne pas corrompre une valeur serialize
39
-		if ((preg_match(",^[abis]:\d+[:;],", $texte) AND unserialize($texte)!=false) OR is_null($texte))
40
-			return $texte;
41
+		if ((preg_match(",^[abis]:\d+[:;],", $texte) AND unserialize($texte)!=false) OR is_null($texte)) {
42
+					return $texte;
43
+		}
41 44
 		if (is_string($texte)
42 45
 			AND $texte
43 46
 			AND strpbrk($texte, "&\"'<>")!==false
44 47
 			) {
45 48
 				$texte = spip_htmlspecialchars($texte,ENT_QUOTES);
49
+		} elseif(is_bool($texte)) {
50
+					$texte = ($texte?'1':'');
46 51
 		}
47
-		elseif(is_bool($texte))
48
-			$texte = ($texte?'1':'');
49 52
 	}
50 53
 	return $texte;
51 54
 }
@@ -62,12 +65,16 @@  discard block
 block discarded – undo
62 65
 **/
63 66
 function existe_formulaire($form)
64 67
 {
65
-	if (substr($form,0,11)=="FORMULAIRE_")
66
-		$form = strtolower(substr($form,11));
67
-	else 
68
-		$form = strtolower($form);
68
+	if (substr($form,0,11)=="FORMULAIRE_") {
69
+			$form = strtolower(substr($form,11));
70
+	} else {
71
+			$form = strtolower($form);
72
+	}
69 73
 
70
-	if (!$form) return ''; // on ne sait pas, le nom du formulaire n'est pas fourni ici
74
+	if (!$form) {
75
+	    return '';
76
+	}
77
+	// on ne sait pas, le nom du formulaire n'est pas fourni ici
71 78
 
72 79
 	return trouver_fond($form, 'formulaires/') ? $form : false;
73 80
 }
@@ -109,7 +116,9 @@  discard block
 block discarded – undo
109 116
 function balise_FORMULAIRE__dyn($form)
110 117
 {
111 118
 	$form = existe_formulaire($form);
112
-	if (!$form) return '';
119
+	if (!$form) {
120
+	    return '';
121
+	}
113 122
 
114 123
 	// deux moyen d'arriver ici : 
115 124
 	// soit #FORMULAIRE_XX reroute avec 'FORMULAIRE_XX' ajoute en premier arg
@@ -122,7 +131,9 @@  discard block
 block discarded – undo
122 131
 	$args = func_get_args();
123 132
 	array_shift($args);
124 133
 	$contexte = balise_FORMULAIRE__contexte($form, $args);
125
-	if (!is_array($contexte)) return $contexte;
134
+	if (!is_array($contexte)) {
135
+	    return $contexte;
136
+	}
126 137
 	return array("formulaires/$form", 3600, $contexte);
127 138
 }
128 139
 
@@ -149,8 +160,9 @@  discard block
 block discarded – undo
149 160
 	 AND is_array($p = decoder_contexte_ajax($p, $post_form))) {
150 161
 		// enlever le faux attribut de langue masque
151 162
 		array_shift($p);
152
-		if (formulaire__identifier($form, $args, $p))
153
-			$je_suis_poste = true;
163
+		if (formulaire__identifier($form, $args, $p)) {
164
+					$je_suis_poste = true;
165
+		}
154 166
 	}
155 167
 
156 168
 	$editable = true;
@@ -170,7 +182,9 @@  discard block
 block discarded – undo
170 182
 	// si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
171 183
 	// C'est plus fort qu'editable qui est gere par le squelette 
172 184
 	// Idealement $valeur doit etre alors un message explicatif.
173
-	if (!is_array($valeurs)) return is_string($valeurs) ? $valeurs : '';
185
+	if (!is_array($valeurs)) {
186
+	    return is_string($valeurs) ? $valeurs : '';
187
+	}
174 188
 	
175 189
 	// charger peut passer une action si le formulaire ne tourne pas sur self()
176 190
 	// ou une action vide si elle ne sert pas
@@ -188,11 +202,13 @@  discard block
 block discarded – undo
188 202
 	$dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
189 203
 	foreach(array_keys($valeurs) as $champ){
190 204
 		if ($champ[0]!=='_' AND !in_array($champ, array('message_ok','message_erreur','editable'))) {
191
-			if ($dispo AND (($v = _request($champ))!==NULL))
192
-				$valeurs[$champ] = $v;
205
+			if ($dispo AND (($v = _request($champ))!==NULL)) {
206
+							$valeurs[$champ] = $v;
207
+			}
193 208
 			// nettoyer l'url des champs qui vont etre saisis
194
-			if ($action)
195
-				$action = parametre_url($action,$champ,'');
209
+			if ($action) {
210
+							$action = parametre_url($action,$champ,'');
211
+			}
196 212
 			// proteger les ' et les " dans les champs que l'on va injecter
197 213
 			$valeurs[$champ] = protege_champ($valeurs[$champ]);
198 214
 		}
@@ -221,22 +237,28 @@  discard block
 block discarded – undo
221 237
 	$valeurs['action'] = $action;
222 238
 	$valeurs['form'] = $form;
223 239
 
224
-	if (!isset($valeurs['id'])) $valeurs['id'] = 'new';
240
+	if (!isset($valeurs['id'])) {
241
+	    $valeurs['id'] = 'new';
242
+	}
225 243
 	// editable peut venir de charger() ou de traiter() sinon
226
-	if (!isset($valeurs['editable'])) $valeurs['editable'] = $editable;
244
+	if (!isset($valeurs['editable'])) {
245
+	    $valeurs['editable'] = $editable;
246
+	}
227 247
 	// dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
228 248
 	$valeurs['editable'] = ($valeurs['editable']?' ':'');
229 249
 
230 250
 	if ($je_suis_poste) {
231 251
 		$valeurs['message_erreur'] = "";
232
-		if (isset($erreurs['message_erreur']))
233
-			$valeurs['message_erreur'] = $erreurs['message_erreur'];
252
+		if (isset($erreurs['message_erreur'])) {
253
+					$valeurs['message_erreur'] = $erreurs['message_erreur'];
254
+		}
234 255
 
235 256
 		$valeurs['message_ok'] = "";
236
-		if (isset($post["message_ok_$form"]))
237
-			$valeurs['message_ok'] = $post["message_ok_$form"];
238
-		elseif (isset($erreurs['message_ok']))
239
-			$valeurs['message_ok'] = $erreurs["message_ok"];
257
+		if (isset($post["message_ok_$form"])) {
258
+					$valeurs['message_ok'] = $post["message_ok_$form"];
259
+		} elseif (isset($erreurs['message_ok'])) {
260
+					$valeurs['message_ok'] = $erreurs["message_ok"];
261
+		}
240 262
 	}
241 263
 	
242 264
 	return $valeurs;
@@ -252,9 +274,11 @@  discard block
 block discarded – undo
252 274
  */
253 275
 function formulaire__charger($form, $args, $poste)
254 276
 {
255
-	if ($charger_valeurs = charger_fonction("charger","formulaires/$form",true))
256
-		$valeurs = call_user_func_array($charger_valeurs,$args);
257
-	else $valeurs = array();
277
+	if ($charger_valeurs = charger_fonction("charger","formulaires/$form",true)) {
278
+			$valeurs = call_user_func_array($charger_valeurs,$args);
279
+	} else {
280
+	    $valeurs = array();
281
+	}
258 282
 
259 283
 	$valeurs = pipeline(
260 284
 		'formulaire_charger',
@@ -265,7 +289,9 @@  discard block
 block discarded – undo
265 289
 
266 290
 	// si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
267 291
 	if (is_array($valeurs)){
268
-		if (!isset($valeurs['_pipelines'])) $valeurs['_pipelines']=array();
292
+		if (!isset($valeurs['_pipelines'])) {
293
+		    $valeurs['_pipelines']=array();
294
+		}
269 295
 		// l'ancien argument _pipeline devient maintenant _pipelines
270 296
 		// reinjectons le vieux _pipeline au debut de _pipelines
271 297
 		if (isset($valeurs['_pipeline'])) {
Please login to merge, or discard this patch.
ecrire/balise/url_.php 4 patches
Doc Comments   +3 added lines patch added patch discarded remove patch
@@ -25,6 +25,9 @@
 block discarded – undo
25 25
 // car rien ne garantit que le .htaccess soit identique. A approfondir
26 26
 
27 27
 // http://doc.spip.org/@generer_generer_url
28
+/**
29
+ * @param string $type
30
+ */
28 31
 function generer_generer_url($type, $p){
29 32
 	$_id = interprete_argument_balise(1,$p);
30 33
 
Please login to merge, or discard this patch.
Indentation   +132 added lines, -132 removed lines patch added patch discarded remove patch
@@ -26,95 +26,95 @@  discard block
 block discarded – undo
26 26
 
27 27
 // http://doc.spip.org/@generer_generer_url
28 28
 function generer_generer_url($type, $p){
29
-	$_id = interprete_argument_balise(1,$p);
29
+    $_id = interprete_argument_balise(1,$p);
30 30
 
31
-	if (!$_id) {
32
-		$primary = id_table_objet($type);
33
-		$_id = champ_sql($primary, $p);
34
-	}
31
+    if (!$_id) {
32
+        $primary = id_table_objet($type);
33
+        $_id = champ_sql($primary, $p);
34
+    }
35 35
 
36
-	return generer_generer_url_arg($type, $p, $_id);
36
+    return generer_generer_url_arg($type, $p, $_id);
37 37
 }
38 38
 	
39 39
 function generer_generer_url_arg($type, $p, $_id)
40 40
 {
41
-	if ($s = trouver_nom_serveur_distant($p)) {
41
+    if ($s = trouver_nom_serveur_distant($p)) {
42 42
 
43 43
 // si une fonction de generation des url a ete definie pour ce connect l'utiliser
44
-		if (function_exists($f = 'generer_generer_url_'.$s)){
45
-			return $f($type, $_id, $s);
46
-		}
47
-		if (!$GLOBALS['connexions'][strtolower($s)]['spip_connect_version']) {
48
-			return NULL;
49
-		}
50
-		$s = _q($s);
51
-		# exception des urls de documents sur un serveur distant...
52
-		if ($type == 'document') {
53
-			return 
54
-			"quete_meta('adresse_site', $s) . '/' .\n\t" .
55
-			"quete_meta('dir_img', $s) . \n\t" .
56
-			"quete_fichier($_id,$s)";
57
-		}
58
-		$s = ", '', '', $s, quete_meta('type_urls', $s)";
59
-	}
60
-	else 
61
-		$s = ", '', '', true";
62
-	return "urlencode_1738(generer_url_entite($_id, '$type'$s))";
44
+        if (function_exists($f = 'generer_generer_url_'.$s)){
45
+            return $f($type, $_id, $s);
46
+        }
47
+        if (!$GLOBALS['connexions'][strtolower($s)]['spip_connect_version']) {
48
+            return NULL;
49
+        }
50
+        $s = _q($s);
51
+        # exception des urls de documents sur un serveur distant...
52
+        if ($type == 'document') {
53
+            return 
54
+            "quete_meta('adresse_site', $s) . '/' .\n\t" .
55
+            "quete_meta('dir_img', $s) . \n\t" .
56
+            "quete_fichier($_id,$s)";
57
+        }
58
+        $s = ", '', '', $s, quete_meta('type_urls', $s)";
59
+    }
60
+    else 
61
+        $s = ", '', '', true";
62
+    return "urlencode_1738(generer_url_entite($_id, '$type'$s))";
63 63
 }
64 64
 
65 65
 
66 66
 // http://doc.spip.org/@balise_URL__dist
67 67
 function balise_URL__dist($p) {
68 68
 
69
-	$nom = $p->nom_champ;
70
-	if ($nom === 'URL_') {
71
-		$msg = array('zbug_balise_sans_argument', array('balise' => ' URL_'));
72
-		erreur_squelette($msg, $p);
73
-		$p->interdire_scripts = false;
74
-		return $p;
75
-	} elseif ($f = charger_fonction($nom, 'balise', true)) {
76
-		return $f($p);
77
-	}else {
78
-		$nom = strtolower($nom);
79
-		$code = generer_generer_url(substr($nom,4), $p);
80
-		$code = champ_sql($nom, $p, $code);
81
-		$p->code = $code;
82
-		if (!$p->etoile)
83
-			$p->code = "vider_url($code)";
84
-		$p->interdire_scripts = false;
85
-		return $p;
86
-	}
69
+    $nom = $p->nom_champ;
70
+    if ($nom === 'URL_') {
71
+        $msg = array('zbug_balise_sans_argument', array('balise' => ' URL_'));
72
+        erreur_squelette($msg, $p);
73
+        $p->interdire_scripts = false;
74
+        return $p;
75
+    } elseif ($f = charger_fonction($nom, 'balise', true)) {
76
+        return $f($p);
77
+    }else {
78
+        $nom = strtolower($nom);
79
+        $code = generer_generer_url(substr($nom,4), $p);
80
+        $code = champ_sql($nom, $p, $code);
81
+        $p->code = $code;
82
+        if (!$p->etoile)
83
+            $p->code = "vider_url($code)";
84
+        $p->interdire_scripts = false;
85
+        return $p;
86
+    }
87 87
 }
88 88
 
89 89
 // http://doc.spip.org/@balise_URL_ARTICLE_dist
90 90
 function balise_URL_ARTICLE_dist($p) {
91 91
 
92
-	// Cas particulier des boucles (SYNDIC_ARTICLES)
93
-	if ($p->type_requete == 'syndic_articles') {
94
-		$code = champ_sql('url', $p);
95
-	} else  $code = generer_generer_url('article', $p);
92
+    // Cas particulier des boucles (SYNDIC_ARTICLES)
93
+    if ($p->type_requete == 'syndic_articles') {
94
+        $code = champ_sql('url', $p);
95
+    } else  $code = generer_generer_url('article', $p);
96 96
 
97
-	$p->code = $code;
98
-	if (!$p->etoile)
99
-		$p->code = "vider_url($code)";
100
-	$p->interdire_scripts = false;
101
-	return $p;
97
+    $p->code = $code;
98
+    if (!$p->etoile)
99
+        $p->code = "vider_url($code)";
100
+    $p->interdire_scripts = false;
101
+    return $p;
102 102
 }
103 103
 
104 104
 // http://doc.spip.org/@balise_URL_SITE_dist
105 105
 function balise_URL_SITE_dist($p)
106 106
 {
107
-	$code = champ_sql('url_site', $p);
108
-	if (strpos($code, '@$Pile[0]') !== false) {
109
-		$code = generer_generer_url('site', $p);
110
-		if ($code === NULL) return NULL;
111
-	} else {
112
-		if (!$p->etoile)
113
-			$code = "calculer_url($code,'','url', \$connect)";
114
-	}
115
-	$p->code = $code;
116
-	$p->interdire_scripts = false;
117
-	return $p;
107
+    $code = champ_sql('url_site', $p);
108
+    if (strpos($code, '@$Pile[0]') !== false) {
109
+        $code = generer_generer_url('site', $p);
110
+        if ($code === NULL) return NULL;
111
+    } else {
112
+        if (!$p->etoile)
113
+            $code = "calculer_url($code,'','url', \$connect)";
114
+    }
115
+    $p->code = $code;
116
+    $p->interdire_scripts = false;
117
+    return $p;
118 118
 }
119 119
 
120 120
 // Autres balises URL_*, qui ne concernent pas une table
@@ -122,10 +122,10 @@  discard block
 block discarded – undo
122 122
 
123 123
 // http://doc.spip.org/@balise_URL_SITE_SPIP_dist
124 124
 function balise_URL_SITE_SPIP_dist($p) {
125
-	$p->code = "sinon(\$GLOBALS['meta']['adresse_site'],'.')";
126
-	$p->code = "spip_htmlspecialchars(".$p->code.")";
127
-	$p->interdire_scripts = false;
128
-	return $p;
125
+    $p->code = "sinon(\$GLOBALS['meta']['adresse_site'],'.')";
126
+    $p->code = "spip_htmlspecialchars(".$p->code.")";
127
+    $p->interdire_scripts = false;
128
+    return $p;
129 129
 }
130 130
 
131 131
 //
@@ -137,36 +137,36 @@  discard block
 block discarded – undo
137 137
 // http://doc.spip.org/@balise_URL_PAGE_dist
138 138
 function balise_URL_PAGE_dist($p) {
139 139
 
140
-	$code = interprete_argument_balise(1,$p);
141
-	$args = interprete_argument_balise(2,$p);
142
-	if ($args == NULL)
143
-		$args = "''";
144
-
145
-	if ($s = trouver_nom_serveur_distant($p)) {
146
-		// si une fonction de generation des url a ete definie pour ce connect l'utiliser
147
-		// elle devra aussi traiter le cas derogatoire type=page
148
-		if (function_exists($f = 'generer_generer_url_'.$s)){
149
-			if ($args AND $args!=="''") $code .= ", $args";
150
-			$code = $f('page', $code, $s);
151
-			return $p;
152
-		}
153
-		$s = 'connect=' .  addslashes($s);
154
-		$args = (($args AND $args!=="''") ? "$args . '&$s'" : "'$s'");
155
-	}
156
-
157
-	if (!$code) {
158
-		$noentities = $p->etoile ? "'&'" : '';
159
-		$code = "url_de_base() . preg_replace(',^./,', '', self($noentities))";
160
-	} else{
161
-	  	if (!$args) $args = "''";
162
-		$noentities = $p->etoile ? ", true" : '';
163
-		$code = "generer_url_public($code, $args$noentities)";
164
-	}
165
-	$p->code = $code;
166
-	spip_log("connect vaut $s ca donne " .  $p->code . " args $args");
167
-
168
-	#$p->interdire_scripts = true;
169
-	return $p;
140
+    $code = interprete_argument_balise(1,$p);
141
+    $args = interprete_argument_balise(2,$p);
142
+    if ($args == NULL)
143
+        $args = "''";
144
+
145
+    if ($s = trouver_nom_serveur_distant($p)) {
146
+        // si une fonction de generation des url a ete definie pour ce connect l'utiliser
147
+        // elle devra aussi traiter le cas derogatoire type=page
148
+        if (function_exists($f = 'generer_generer_url_'.$s)){
149
+            if ($args AND $args!=="''") $code .= ", $args";
150
+            $code = $f('page', $code, $s);
151
+            return $p;
152
+        }
153
+        $s = 'connect=' .  addslashes($s);
154
+        $args = (($args AND $args!=="''") ? "$args . '&$s'" : "'$s'");
155
+    }
156
+
157
+    if (!$code) {
158
+        $noentities = $p->etoile ? "'&'" : '';
159
+        $code = "url_de_base() . preg_replace(',^./,', '', self($noentities))";
160
+    } else{
161
+            if (!$args) $args = "''";
162
+        $noentities = $p->etoile ? ", true" : '';
163
+        $code = "generer_url_public($code, $args$noentities)";
164
+    }
165
+    $p->code = $code;
166
+    spip_log("connect vaut $s ca donne " .  $p->code . " args $args");
167
+
168
+    #$p->interdire_scripts = true;
169
+    return $p;
170 170
 }
171 171
 
172 172
 //
@@ -175,24 +175,24 @@  discard block
 block discarded – undo
175 175
 // http://doc.spip.org/@balise_URL_ECRIRE_dist
176 176
 function balise_URL_ECRIRE_dist($p) {
177 177
 
178
-	$code = interprete_argument_balise(1,$p);
179
-	if (!$code) {
180
-		$fonc = "''";
181
-	}
182
-	else {
183
-		$fonc = $code;
184
-		$args = interprete_argument_balise(2,$p);
185
-		if ($args === NULL) {
186
-			$args = "''";
187
-		}
188
-		$noentities = $p->etoile ? ", true" : '';
189
-		if (($args != "''")  OR $noentities) {
190
-			$fonc .= ",$args$noentities";
191
-		}
192
-	}
193
-	$p->code = 'generer_url_ecrire(' . $fonc .')';
194
-	$p->interdire_scripts = false;
195
-	return $p;
178
+    $code = interprete_argument_balise(1,$p);
179
+    if (!$code) {
180
+        $fonc = "''";
181
+    }
182
+    else {
183
+        $fonc = $code;
184
+        $args = interprete_argument_balise(2,$p);
185
+        if ($args === NULL) {
186
+            $args = "''";
187
+        }
188
+        $noentities = $p->etoile ? ", true" : '';
189
+        if (($args != "''")  OR $noentities) {
190
+            $fonc .= ",$args$noentities";
191
+        }
192
+    }
193
+    $p->code = 'generer_url_ecrire(' . $fonc .')';
194
+    $p->interdire_scripts = false;
195
+    return $p;
196 196
 }
197 197
 
198 198
 //
@@ -200,21 +200,21 @@  discard block
 block discarded – undo
200 200
 //
201 201
 // http://doc.spip.org/@balise_URL_ACTION_AUTEUR_dist
202 202
 function balise_URL_ACTION_AUTEUR_dist($p) {
203
-	$p->descr['session'] = true;
204
-
205
-	$p->code = interprete_argument_balise(1,$p);
206
-	$args = interprete_argument_balise(2,$p);
207
-	if ($args != "''" && $args!==NULL)
208
-		$p->code .= ",".$args;
209
-	$redirect = interprete_argument_balise(3,$p);
210
-	if ($redirect != "''" && $redirect!==NULL) {
211
-		if ($args == "''" || $args===NULL)
212
-			$p->code .= ",''";
213
-		$p->code .= ",".$redirect;
214
-	}
215
-
216
-	$p->code = "generer_action_auteur(" . $p->code . ")";
217
-	$p->interdire_scripts = false;
218
-	return $p;
203
+    $p->descr['session'] = true;
204
+
205
+    $p->code = interprete_argument_balise(1,$p);
206
+    $args = interprete_argument_balise(2,$p);
207
+    if ($args != "''" && $args!==NULL)
208
+        $p->code .= ",".$args;
209
+    $redirect = interprete_argument_balise(3,$p);
210
+    if ($redirect != "''" && $redirect!==NULL) {
211
+        if ($args == "''" || $args===NULL)
212
+            $p->code .= ",''";
213
+        $p->code .= ",".$redirect;
214
+    }
215
+
216
+    $p->code = "generer_action_auteur(" . $p->code . ")";
217
+    $p->interdire_scripts = false;
218
+    return $p;
219 219
 }
220 220
 ?>
Please login to merge, or discard this patch.
Spacing   +26 added lines, -26 removed lines patch added patch discarded remove patch
@@ -25,8 +25,8 @@  discard block
 block discarded – undo
25 25
 // car rien ne garantit que le .htaccess soit identique. A approfondir
26 26
 
27 27
 // http://doc.spip.org/@generer_generer_url
28
-function generer_generer_url($type, $p){
29
-	$_id = interprete_argument_balise(1,$p);
28
+function generer_generer_url($type, $p) {
29
+	$_id = interprete_argument_balise(1, $p);
30 30
 
31 31
 	if (!$_id) {
32 32
 		$primary = id_table_objet($type);
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
 	if ($s = trouver_nom_serveur_distant($p)) {
42 42
 
43 43
 // si une fonction de generation des url a ete definie pour ce connect l'utiliser
44
-		if (function_exists($f = 'generer_generer_url_'.$s)){
44
+		if (function_exists($f = 'generer_generer_url_'.$s)) {
45 45
 			return $f($type, $_id, $s);
46 46
 		}
47 47
 		if (!$GLOBALS['connexions'][strtolower($s)]['spip_connect_version']) {
@@ -51,8 +51,8 @@  discard block
 block discarded – undo
51 51
 		# exception des urls de documents sur un serveur distant...
52 52
 		if ($type == 'document') {
53 53
 			return 
54
-			"quete_meta('adresse_site', $s) . '/' .\n\t" .
55
-			"quete_meta('dir_img', $s) . \n\t" .
54
+			"quete_meta('adresse_site', $s) . '/' .\n\t".
55
+			"quete_meta('dir_img', $s) . \n\t".
56 56
 			"quete_fichier($_id,$s)";
57 57
 		}
58 58
 		$s = ", '', '', $s, quete_meta('type_urls', $s)";
@@ -74,9 +74,9 @@  discard block
 block discarded – undo
74 74
 		return $p;
75 75
 	} elseif ($f = charger_fonction($nom, 'balise', true)) {
76 76
 		return $f($p);
77
-	}else {
77
+	} else {
78 78
 		$nom = strtolower($nom);
79
-		$code = generer_generer_url(substr($nom,4), $p);
79
+		$code = generer_generer_url(substr($nom, 4), $p);
80 80
 		$code = champ_sql($nom, $p, $code);
81 81
 		$p->code = $code;
82 82
 		if (!$p->etoile)
@@ -137,33 +137,33 @@  discard block
 block discarded – undo
137 137
 // http://doc.spip.org/@balise_URL_PAGE_dist
138 138
 function balise_URL_PAGE_dist($p) {
139 139
 
140
-	$code = interprete_argument_balise(1,$p);
141
-	$args = interprete_argument_balise(2,$p);
140
+	$code = interprete_argument_balise(1, $p);
141
+	$args = interprete_argument_balise(2, $p);
142 142
 	if ($args == NULL)
143 143
 		$args = "''";
144 144
 
145 145
 	if ($s = trouver_nom_serveur_distant($p)) {
146 146
 		// si une fonction de generation des url a ete definie pour ce connect l'utiliser
147 147
 		// elle devra aussi traiter le cas derogatoire type=page
148
-		if (function_exists($f = 'generer_generer_url_'.$s)){
149
-			if ($args AND $args!=="''") $code .= ", $args";
148
+		if (function_exists($f = 'generer_generer_url_'.$s)) {
149
+			if ($args AND $args !== "''") $code .= ", $args";
150 150
 			$code = $f('page', $code, $s);
151 151
 			return $p;
152 152
 		}
153
-		$s = 'connect=' .  addslashes($s);
154
-		$args = (($args AND $args!=="''") ? "$args . '&$s'" : "'$s'");
153
+		$s = 'connect='.addslashes($s);
154
+		$args = (($args AND $args !== "''") ? "$args . '&$s'" : "'$s'");
155 155
 	}
156 156
 
157 157
 	if (!$code) {
158 158
 		$noentities = $p->etoile ? "'&'" : '';
159 159
 		$code = "url_de_base() . preg_replace(',^./,', '', self($noentities))";
160
-	} else{
160
+	} else {
161 161
 	  	if (!$args) $args = "''";
162 162
 		$noentities = $p->etoile ? ", true" : '';
163 163
 		$code = "generer_url_public($code, $args$noentities)";
164 164
 	}
165 165
 	$p->code = $code;
166
-	spip_log("connect vaut $s ca donne " .  $p->code . " args $args");
166
+	spip_log("connect vaut $s ca donne ".$p->code." args $args");
167 167
 
168 168
 	#$p->interdire_scripts = true;
169 169
 	return $p;
@@ -175,22 +175,22 @@  discard block
 block discarded – undo
175 175
 // http://doc.spip.org/@balise_URL_ECRIRE_dist
176 176
 function balise_URL_ECRIRE_dist($p) {
177 177
 
178
-	$code = interprete_argument_balise(1,$p);
178
+	$code = interprete_argument_balise(1, $p);
179 179
 	if (!$code) {
180 180
 		$fonc = "''";
181 181
 	}
182 182
 	else {
183 183
 		$fonc = $code;
184
-		$args = interprete_argument_balise(2,$p);
184
+		$args = interprete_argument_balise(2, $p);
185 185
 		if ($args === NULL) {
186 186
 			$args = "''";
187 187
 		}
188 188
 		$noentities = $p->etoile ? ", true" : '';
189
-		if (($args != "''")  OR $noentities) {
189
+		if (($args != "''") OR $noentities) {
190 190
 			$fonc .= ",$args$noentities";
191 191
 		}
192 192
 	}
193
-	$p->code = 'generer_url_ecrire(' . $fonc .')';
193
+	$p->code = 'generer_url_ecrire('.$fonc.')';
194 194
 	$p->interdire_scripts = false;
195 195
 	return $p;
196 196
 }
@@ -202,18 +202,18 @@  discard block
 block discarded – undo
202 202
 function balise_URL_ACTION_AUTEUR_dist($p) {
203 203
 	$p->descr['session'] = true;
204 204
 
205
-	$p->code = interprete_argument_balise(1,$p);
206
-	$args = interprete_argument_balise(2,$p);
207
-	if ($args != "''" && $args!==NULL)
205
+	$p->code = interprete_argument_balise(1, $p);
206
+	$args = interprete_argument_balise(2, $p);
207
+	if ($args != "''" && $args !== NULL)
208 208
 		$p->code .= ",".$args;
209
-	$redirect = interprete_argument_balise(3,$p);
210
-	if ($redirect != "''" && $redirect!==NULL) {
211
-		if ($args == "''" || $args===NULL)
209
+	$redirect = interprete_argument_balise(3, $p);
210
+	if ($redirect != "''" && $redirect !== NULL) {
211
+		if ($args == "''" || $args === NULL)
212 212
 			$p->code .= ",''";
213 213
 		$p->code .= ",".$redirect;
214 214
 	}
215 215
 
216
-	$p->code = "generer_action_auteur(" . $p->code . ")";
216
+	$p->code = "generer_action_auteur(".$p->code.")";
217 217
 	$p->interdire_scripts = false;
218 218
 	return $p;
219 219
 }
Please login to merge, or discard this patch.
Braces   +37 added lines, -22 removed lines patch added patch discarded remove patch
@@ -10,7 +10,9 @@  discard block
 block discarded – undo
10 10
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11 11
 \***************************************************************************/
12 12
 
13
-if (!defined('_ECRIRE_INC_VERSION')) return;
13
+if (!defined('_ECRIRE_INC_VERSION')) {
14
+    return;
15
+}
14 16
 
15 17
 // Les balises URL_$type sont generiques, sauf qq cas particuliers.
16 18
 // Si ces balises sont utilisees pour la base locale,
@@ -56,9 +58,9 @@  discard block
 block discarded – undo
56 58
 			"quete_fichier($_id,$s)";
57 59
 		}
58 60
 		$s = ", '', '', $s, quete_meta('type_urls', $s)";
61
+	} else {
62
+			$s = ", '', '', true";
59 63
 	}
60
-	else 
61
-		$s = ", '', '', true";
62 64
 	return "urlencode_1738(generer_url_entite($_id, '$type'$s))";
63 65
 }
64 66
 
@@ -74,13 +76,14 @@  discard block
 block discarded – undo
74 76
 		return $p;
75 77
 	} elseif ($f = charger_fonction($nom, 'balise', true)) {
76 78
 		return $f($p);
77
-	}else {
79
+	} else {
78 80
 		$nom = strtolower($nom);
79 81
 		$code = generer_generer_url(substr($nom,4), $p);
80 82
 		$code = champ_sql($nom, $p, $code);
81 83
 		$p->code = $code;
82
-		if (!$p->etoile)
83
-			$p->code = "vider_url($code)";
84
+		if (!$p->etoile) {
85
+					$p->code = "vider_url($code)";
86
+		}
84 87
 		$p->interdire_scripts = false;
85 88
 		return $p;
86 89
 	}
@@ -92,11 +95,14 @@  discard block
 block discarded – undo
92 95
 	// Cas particulier des boucles (SYNDIC_ARTICLES)
93 96
 	if ($p->type_requete == 'syndic_articles') {
94 97
 		$code = champ_sql('url', $p);
95
-	} else  $code = generer_generer_url('article', $p);
98
+	} else {
99
+	    $code = generer_generer_url('article', $p);
100
+	}
96 101
 
97 102
 	$p->code = $code;
98
-	if (!$p->etoile)
99
-		$p->code = "vider_url($code)";
103
+	if (!$p->etoile) {
104
+			$p->code = "vider_url($code)";
105
+	}
100 106
 	$p->interdire_scripts = false;
101 107
 	return $p;
102 108
 }
@@ -107,10 +113,13 @@  discard block
 block discarded – undo
107 113
 	$code = champ_sql('url_site', $p);
108 114
 	if (strpos($code, '@$Pile[0]') !== false) {
109 115
 		$code = generer_generer_url('site', $p);
110
-		if ($code === NULL) return NULL;
116
+		if ($code === NULL) {
117
+		    return NULL;
118
+		}
111 119
 	} else {
112
-		if (!$p->etoile)
113
-			$code = "calculer_url($code,'','url', \$connect)";
120
+		if (!$p->etoile) {
121
+					$code = "calculer_url($code,'','url', \$connect)";
122
+		}
114 123
 	}
115 124
 	$p->code = $code;
116 125
 	$p->interdire_scripts = false;
@@ -139,14 +148,17 @@  discard block
 block discarded – undo
139 148
 
140 149
 	$code = interprete_argument_balise(1,$p);
141 150
 	$args = interprete_argument_balise(2,$p);
142
-	if ($args == NULL)
143
-		$args = "''";
151
+	if ($args == NULL) {
152
+			$args = "''";
153
+	}
144 154
 
145 155
 	if ($s = trouver_nom_serveur_distant($p)) {
146 156
 		// si une fonction de generation des url a ete definie pour ce connect l'utiliser
147 157
 		// elle devra aussi traiter le cas derogatoire type=page
148 158
 		if (function_exists($f = 'generer_generer_url_'.$s)){
149
-			if ($args AND $args!=="''") $code .= ", $args";
159
+			if ($args AND $args!=="''") {
160
+			    $code .= ", $args";
161
+			}
150 162
 			$code = $f('page', $code, $s);
151 163
 			return $p;
152 164
 		}
@@ -158,7 +170,9 @@  discard block
 block discarded – undo
158 170
 		$noentities = $p->etoile ? "'&'" : '';
159 171
 		$code = "url_de_base() . preg_replace(',^./,', '', self($noentities))";
160 172
 	} else{
161
-	  	if (!$args) $args = "''";
173
+	  	if (!$args) {
174
+	  	    $args = "''";
175
+	  	}
162 176
 		$noentities = $p->etoile ? ", true" : '';
163 177
 		$code = "generer_url_public($code, $args$noentities)";
164 178
 	}
@@ -178,8 +192,7 @@  discard block
 block discarded – undo
178 192
 	$code = interprete_argument_balise(1,$p);
179 193
 	if (!$code) {
180 194
 		$fonc = "''";
181
-	}
182
-	else {
195
+	} else {
183 196
 		$fonc = $code;
184 197
 		$args = interprete_argument_balise(2,$p);
185 198
 		if ($args === NULL) {
@@ -204,12 +217,14 @@  discard block
 block discarded – undo
204 217
 
205 218
 	$p->code = interprete_argument_balise(1,$p);
206 219
 	$args = interprete_argument_balise(2,$p);
207
-	if ($args != "''" && $args!==NULL)
208
-		$p->code .= ",".$args;
220
+	if ($args != "''" && $args!==NULL) {
221
+			$p->code .= ",".$args;
222
+	}
209 223
 	$redirect = interprete_argument_balise(3,$p);
210 224
 	if ($redirect != "''" && $redirect!==NULL) {
211
-		if ($args == "''" || $args===NULL)
212
-			$p->code .= ",''";
225
+		if ($args == "''" || $args===NULL) {
226
+					$p->code .= ",''";
227
+		}
213 228
 		$p->code .= ",".$redirect;
214 229
 	}
215 230
 
Please login to merge, or discard this patch.
ecrire/base/connect_sql.php 4 patches
Doc Comments   +3 added lines patch added patch discarded remove patch
@@ -25,6 +25,9 @@
 block discarded – undo
25 25
 // A l'installation, il faut simuler l'existence de ce fichier
26 26
 
27 27
 // http://doc.spip.org/@spip_connect
28
+/**
29
+ * @return string
30
+ */
28 31
 function spip_connect($serveur='', $version='') {
29 32
 	global $connexions, $spip_sql_version;
30 33
 
Please login to merge, or discard this patch.
Indentation   +229 added lines, -229 removed lines patch added patch discarded remove patch
@@ -26,108 +26,108 @@  discard block
 block discarded – undo
26 26
 
27 27
 // http://doc.spip.org/@spip_connect
28 28
 function spip_connect($serveur='', $version='') {
29
-	global $connexions, $spip_sql_version;
30
-
31
-	$serveur = !is_string($serveur) ? '' : strtolower($serveur);
32
-	$index = $serveur ? $serveur : 0;
33
-	if (!$version) $version = $spip_sql_version;
34
-	if (isset($connexions[$index][$version])) return $connexions[$index];
35
-
36
-	include_spip('base/abstract_sql');
37
-	$install = (_request('exec') == 'install');
38
-
39
-	// Premiere connexion ?
40
-	if (!($old = isset($connexions[$index]))) {
41
-		$f = (!preg_match('/^[\w\.]*$/', $serveur))
42
-		? '' // nom de serveur mal ecrit
43
-		: ($serveur ?
44
-		   ( _DIR_CONNECT. $serveur . '.php') // serveur externe
45
-		    : (_FILE_CONNECT ? _FILE_CONNECT // serveur principal ok
46
-		       : ($install ? _FILE_CONNECT_TMP // init du serveur principal
47
-			 : ''))); // installation pas faite
48
-
49
-		unset($GLOBALS['db_ok']);
50
-		unset($GLOBALS['spip_connect_version']);
51
-		if ($f) { 
52
-			if (is_readable($f)) { 
53
-				include($f);
54
-			} elseif ($serveur AND !$install) {
55
-				// chercher une declaration de serveur dans le path
56
-				// qui pourra un jour servir a declarer des bases sqlite
57
-				// par des plugins. Et sert aussi aux boucles POUR.
58
-				find_in_path("$serveur.php",'connect/',true);
59
-			}
60
-		}
61
-		if (!isset($GLOBALS['db_ok'])) {
62
-		  // fera mieux la prochaine fois
63
-			if ($install) return false;
64
-			if ($f AND is_readable($f))
65
-				spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE);
66
-			else
67
-				spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE);
68
-			spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS);
69
-			// ne plus reessayer si ce n'est pas l'install
70
-			return $connexions[$index]=false;
71
-		}
72
-		$connexions[$index] = $GLOBALS['db_ok'];
73
-	}
74
-	// si la connexion a deja ete tentee mais a echoue, le dire!
75
-	if (!$connexions[$index]) return false;
76
-
77
-	// la connexion a reussi ou etait deja faite.
78
-	// chargement de la version du jeu de fonctions
79
-	// si pas dans le fichier par defaut
80
-	$type = $GLOBALS['db_ok']['type'];
81
-	$jeu = 'spip_' . $type .'_functions_' . $version;
82
-	if (!isset($GLOBALS[$jeu])) {
83
-		if (!find_in_path($type . '_' . $version . '.php', 'req/', true)){
84
-		  spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS);
85
-			// ne plus reessayer
86
-			return $connexions[$index][$version] = array();
87
-		}
88
-	}
89
-	$connexions[$index][$version] = $GLOBALS[$jeu];
90
-	if ($old) return $connexions[$index];
91
-
92
-	$connexions[$index]['spip_connect_version'] = isset($GLOBALS['spip_connect_version']) ? $GLOBALS['spip_connect_version'] : 0;
93
-
94
-	// initialisation de l'alphabet utilise dans les connexions SQL
95
-	// si l'installation l'a determine.
96
-	// Celui du serveur principal l'impose aux serveurs secondaires
97
-	// s'ils le connaissent
98
-
99
-	if (!$serveur) {
100
-		$charset = spip_connect_main($GLOBALS[$jeu]);
101
-		if (!$charset) {
102
-			unset($connexions[$index]);
103
-			spip_log("spip_connect: absence de charset", _LOG_AVERTISSEMENT);
104
-			return false;
105
-		}
106
-	} else	{
107
-		// spip_meta n'existe pas toujours dans la base
108
-		// C'est le cas d'un dump sqlite par exemple 
109
-		if ($connexions[$index]['spip_connect_version']
110
-		AND sql_showtable('spip_meta', true, $serveur)
111
-		AND $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'",'','','','',$serveur))
112
-			$charset = $r;
113
-		else $charset = -1;
114
-	}
115
-	if ($charset != -1) {
116
-		$f = $GLOBALS[$jeu]['set_charset'];
117
-		if (function_exists($f))
118
-			$f($charset, $serveur);
119
-	}
120
-	return $connexions[$index];
29
+    global $connexions, $spip_sql_version;
30
+
31
+    $serveur = !is_string($serveur) ? '' : strtolower($serveur);
32
+    $index = $serveur ? $serveur : 0;
33
+    if (!$version) $version = $spip_sql_version;
34
+    if (isset($connexions[$index][$version])) return $connexions[$index];
35
+
36
+    include_spip('base/abstract_sql');
37
+    $install = (_request('exec') == 'install');
38
+
39
+    // Premiere connexion ?
40
+    if (!($old = isset($connexions[$index]))) {
41
+        $f = (!preg_match('/^[\w\.]*$/', $serveur))
42
+        ? '' // nom de serveur mal ecrit
43
+        : ($serveur ?
44
+           ( _DIR_CONNECT. $serveur . '.php') // serveur externe
45
+            : (_FILE_CONNECT ? _FILE_CONNECT // serveur principal ok
46
+               : ($install ? _FILE_CONNECT_TMP // init du serveur principal
47
+             : ''))); // installation pas faite
48
+
49
+        unset($GLOBALS['db_ok']);
50
+        unset($GLOBALS['spip_connect_version']);
51
+        if ($f) { 
52
+            if (is_readable($f)) { 
53
+                include($f);
54
+            } elseif ($serveur AND !$install) {
55
+                // chercher une declaration de serveur dans le path
56
+                // qui pourra un jour servir a declarer des bases sqlite
57
+                // par des plugins. Et sert aussi aux boucles POUR.
58
+                find_in_path("$serveur.php",'connect/',true);
59
+            }
60
+        }
61
+        if (!isset($GLOBALS['db_ok'])) {
62
+            // fera mieux la prochaine fois
63
+            if ($install) return false;
64
+            if ($f AND is_readable($f))
65
+                spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE);
66
+            else
67
+                spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE);
68
+            spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS);
69
+            // ne plus reessayer si ce n'est pas l'install
70
+            return $connexions[$index]=false;
71
+        }
72
+        $connexions[$index] = $GLOBALS['db_ok'];
73
+    }
74
+    // si la connexion a deja ete tentee mais a echoue, le dire!
75
+    if (!$connexions[$index]) return false;
76
+
77
+    // la connexion a reussi ou etait deja faite.
78
+    // chargement de la version du jeu de fonctions
79
+    // si pas dans le fichier par defaut
80
+    $type = $GLOBALS['db_ok']['type'];
81
+    $jeu = 'spip_' . $type .'_functions_' . $version;
82
+    if (!isset($GLOBALS[$jeu])) {
83
+        if (!find_in_path($type . '_' . $version . '.php', 'req/', true)){
84
+            spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS);
85
+            // ne plus reessayer
86
+            return $connexions[$index][$version] = array();
87
+        }
88
+    }
89
+    $connexions[$index][$version] = $GLOBALS[$jeu];
90
+    if ($old) return $connexions[$index];
91
+
92
+    $connexions[$index]['spip_connect_version'] = isset($GLOBALS['spip_connect_version']) ? $GLOBALS['spip_connect_version'] : 0;
93
+
94
+    // initialisation de l'alphabet utilise dans les connexions SQL
95
+    // si l'installation l'a determine.
96
+    // Celui du serveur principal l'impose aux serveurs secondaires
97
+    // s'ils le connaissent
98
+
99
+    if (!$serveur) {
100
+        $charset = spip_connect_main($GLOBALS[$jeu]);
101
+        if (!$charset) {
102
+            unset($connexions[$index]);
103
+            spip_log("spip_connect: absence de charset", _LOG_AVERTISSEMENT);
104
+            return false;
105
+        }
106
+    } else	{
107
+        // spip_meta n'existe pas toujours dans la base
108
+        // C'est le cas d'un dump sqlite par exemple 
109
+        if ($connexions[$index]['spip_connect_version']
110
+        AND sql_showtable('spip_meta', true, $serveur)
111
+        AND $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'",'','','','',$serveur))
112
+            $charset = $r;
113
+        else $charset = -1;
114
+    }
115
+    if ($charset != -1) {
116
+        $f = $GLOBALS[$jeu]['set_charset'];
117
+        if (function_exists($f))
118
+            $f($charset, $serveur);
119
+    }
120
+    return $connexions[$index];
121 121
 }
122 122
 
123 123
 function spip_sql_erreur($serveur='')
124 124
 {
125
-	$connexion = spip_connect($serveur);
126
-	$e = sql_errno($serveur);
127
-	$t = (isset($connexion['type']) ? $connexion['type'] : 'sql');
128
-	$m = "Erreur $e de $t: " . sql_error($serveur) . "\n" . $connexion['last'];
129
-	$f = $t . $serveur;
130
-	spip_log($m, $f.'.'._LOG_ERREUR);
125
+    $connexion = spip_connect($serveur);
126
+    $e = sql_errno($serveur);
127
+    $t = (isset($connexion['type']) ? $connexion['type'] : 'sql');
128
+    $m = "Erreur $e de $t: " . sql_error($serveur) . "\n" . $connexion['last'];
129
+    $f = $t . $serveur;
130
+    spip_log($m, $f.'.'._LOG_ERREUR);
131 131
 }
132 132
 
133 133
 // Cette fonction ne doit etre appelee qu'a travers la fonction sql_serveur
@@ -137,14 +137,14 @@  discard block
 block discarded – undo
137 137
 
138 138
 // http://doc.spip.org/@spip_connect_sql
139 139
 function spip_connect_sql($version, $ins='', $serveur='', $cont=false) {
140
-	$desc = spip_connect($serveur, $version);
141
-	if (function_exists($f = @$desc[$version][$ins])) return $f;
142
-	if ($cont) return $desc;
143
-	if ($ins)
144
-		spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR);
145
-	include_spip('inc/minipres');
146
-	echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
147
-	exit;
140
+    $desc = spip_connect($serveur, $version);
141
+    if (function_exists($f = @$desc[$version][$ins])) return $f;
142
+    if ($cont) return $desc;
143
+    if ($ins)
144
+        spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR);
145
+    include_spip('inc/minipres');
146
+    echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
147
+    exit;
148 148
 }
149 149
 
150 150
 /**
@@ -167,54 +167,54 @@  discard block
 block discarded – undo
167 167
  * @return array
168 168
  */
169 169
 function spip_connect_db($host, $port, $login, $pass, $db='', $type='mysql', $prefixe='', $auth='') {
170
-	global $db_ok;
171
-
172
-	// temps avant nouvelle tentative de connexion
173
-	// suite a une connection echouee
174
-	if (!defined('_CONNECT_RETRY_DELAY'))
175
-		define('_CONNECT_RETRY_DELAY',30);
176
-
177
-	$f = "";
178
-	// un fichier de identifiant par combinaison (type,host,port,db)
179
-	// pour ne pas declarer tout indisponible d'un coup
180
-	// si en cours d'installation ou si db=@test@ on ne pose rien
181
-	// car c'est un test de connexion
182
-	if (!defined('_ECRIRE_INSTALL') AND !$db=="@test@")
183
-		$f = _DIR_TMP . $type . '.' . substr(md5($host.$port.$db),0,8) . '.out';
184
-	elseif ($db=='@test@')
185
-		$db = '';
186
-
187
-	if ($f
188
-		AND @file_exists($f)
189
-	  AND (time() - @filemtime($f) < _CONNECT_RETRY_DELAY)) {
190
-		spip_log( "Echec : $f recent. Pas de tentative de connexion", _LOG_HS);
191
-		return;
192
-	}
193
-
194
-	if (!$prefixe)
195
-		$prefixe = isset($GLOBALS['table_prefix'])
196
-		? $GLOBALS['table_prefix'] : $db;
197
-	$h = charger_fonction($type, 'req', true);
198
-	if (!$h) {
199
-		spip_log( "les requetes $type ne sont pas fournies", _LOG_HS);
200
-		return;
201
-	}
202
-	if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) {
203
-
204
-		if (!is_array($auth)) {
205
-			// compatibilite version 0.7 initiale
206
-			$g['ldap'] = $auth;
207
-			$auth = array('ldap' => $auth);
208
-		}
209
-		$g['authentification'] = $auth;
210
-		$g['type'] = $type;
211
-		return $db_ok = $g;
212
-	}
213
-	// En cas d'indisponibilite du serveur, eviter de le bombarder
214
-	if ($f) {
215
-		@touch($f);
216
-		spip_log( "Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type.'.'._LOG_HS);
217
-	}
170
+    global $db_ok;
171
+
172
+    // temps avant nouvelle tentative de connexion
173
+    // suite a une connection echouee
174
+    if (!defined('_CONNECT_RETRY_DELAY'))
175
+        define('_CONNECT_RETRY_DELAY',30);
176
+
177
+    $f = "";
178
+    // un fichier de identifiant par combinaison (type,host,port,db)
179
+    // pour ne pas declarer tout indisponible d'un coup
180
+    // si en cours d'installation ou si db=@test@ on ne pose rien
181
+    // car c'est un test de connexion
182
+    if (!defined('_ECRIRE_INSTALL') AND !$db=="@test@")
183
+        $f = _DIR_TMP . $type . '.' . substr(md5($host.$port.$db),0,8) . '.out';
184
+    elseif ($db=='@test@')
185
+        $db = '';
186
+
187
+    if ($f
188
+        AND @file_exists($f)
189
+      AND (time() - @filemtime($f) < _CONNECT_RETRY_DELAY)) {
190
+        spip_log( "Echec : $f recent. Pas de tentative de connexion", _LOG_HS);
191
+        return;
192
+    }
193
+
194
+    if (!$prefixe)
195
+        $prefixe = isset($GLOBALS['table_prefix'])
196
+        ? $GLOBALS['table_prefix'] : $db;
197
+    $h = charger_fonction($type, 'req', true);
198
+    if (!$h) {
199
+        spip_log( "les requetes $type ne sont pas fournies", _LOG_HS);
200
+        return;
201
+    }
202
+    if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) {
203
+
204
+        if (!is_array($auth)) {
205
+            // compatibilite version 0.7 initiale
206
+            $g['ldap'] = $auth;
207
+            $auth = array('ldap' => $auth);
208
+        }
209
+        $g['authentification'] = $auth;
210
+        $g['type'] = $type;
211
+        return $db_ok = $g;
212
+    }
213
+    // En cas d'indisponibilite du serveur, eviter de le bombarder
214
+    if ($f) {
215
+        @touch($f);
216
+        spip_log( "Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type.'.'._LOG_HS);
217
+    }
218 218
 }
219 219
 
220 220
 // Premiere connexion au serveur principal:
@@ -233,25 +233,25 @@  discard block
 block discarded – undo
233 233
 // http://doc.spip.org/@spip_connect_main
234 234
 function spip_connect_main($connexion)
235 235
 {
236
-	if ($GLOBALS['spip_connect_version']< 0.1 AND _DIR_RESTREINT){
237
-		include_spip('inc/headers');
238
-		redirige_url_ecrire('upgrade', 'reinstall=oui');
239
-	}
240
-
241
-	if (!($f = $connexion['select'])) return false;
242
-	// en cas d'erreur select retourne la requette (is_string=true donc)
243
-	if (!$r = $f('valeur','spip_meta', "nom='charset_sql_connexion'")
244
-	  OR is_string($r))
245
-		return false;
246
-	if (!($f = $connexion['fetch'])) return false;
247
-	$r = $f($r);
248
-	return ($r['valeur'] ? $r['valeur'] : -1);
236
+    if ($GLOBALS['spip_connect_version']< 0.1 AND _DIR_RESTREINT){
237
+        include_spip('inc/headers');
238
+        redirige_url_ecrire('upgrade', 'reinstall=oui');
239
+    }
240
+
241
+    if (!($f = $connexion['select'])) return false;
242
+    // en cas d'erreur select retourne la requette (is_string=true donc)
243
+    if (!$r = $f('valeur','spip_meta', "nom='charset_sql_connexion'")
244
+      OR is_string($r))
245
+        return false;
246
+    if (!($f = $connexion['fetch'])) return false;
247
+    $r = $f($r);
248
+    return ($r['valeur'] ? $r['valeur'] : -1);
249 249
 }
250 250
 
251 251
 // compatibilite
252 252
 function spip_connect_ldap($serveur='') {
253
-	include_spip('auth/ldap');
254
-	return auth_ldap_connect($serveur);
253
+    include_spip('auth/ldap');
254
+    return auth_ldap_connect($serveur);
255 255
 }
256 256
 
257 257
 // Echappement d'une valeur (num, string, array) sous forme de chaine PHP
@@ -259,23 +259,23 @@  discard block
 block discarded – undo
259 259
 // Usage sql un peu deprecie, a remplacer par sql_quote()
260 260
 // http://doc.spip.org/@_q
261 261
 function _q ($a) {
262
-	return (is_numeric($a)) ? strval($a) :
263
-		(!is_array($a) ? ("'" . addslashes($a) . "'")
264
-		 : join(",", array_map('_q', $a)));
262
+    return (is_numeric($a)) ? strval($a) :
263
+        (!is_array($a) ? ("'" . addslashes($a) . "'")
264
+         : join(",", array_map('_q', $a)));
265 265
 }
266 266
 
267 267
 
268 268
 // Recuperer le nom de la table de jointure xxxx sur l'objet yyyy
269 269
 // http://doc.spip.org/@table_jointure
270 270
 function table_jointure($x, $y) {
271
-	$trouver_table = charger_fonction('trouver_table', 'base');
272
-	$xdesc = $trouver_table(table_objet($x));
273
-	$ydesc = $trouver_table(table_objet($y));
274
-	$ix = @$xdesc['key']["PRIMARY KEY"];
275
-	$iy = @$ydesc['key']["PRIMARY KEY"];
276
-	if ($table = $ydesc['tables_jointures'][$ix]) return $table;
277
-	if ($table = $xdesc['tables_jointures'][$iy]) return $table;
278
-	return '';
271
+    $trouver_table = charger_fonction('trouver_table', 'base');
272
+    $xdesc = $trouver_table(table_objet($x));
273
+    $ydesc = $trouver_table(table_objet($y));
274
+    $ix = @$xdesc['key']["PRIMARY KEY"];
275
+    $iy = @$ydesc['key']["PRIMARY KEY"];
276
+    if ($table = $ydesc['tables_jointures'][$ix]) return $table;
277
+    if ($table = $xdesc['tables_jointures'][$iy]) return $table;
278
+    return '';
279 279
 }
280 280
 
281 281
 /**
@@ -288,29 +288,29 @@  discard block
 block discarded – undo
288 288
  * @return array
289 289
  */
290 290
 function query_echappe_textes($query){
291
-	static $codeEchappements = array("''"=>"\x1@##@\x1", "\'"=>"\x2@##@\x2", "\\\""=>"\x3@##@\x3");
292
-	$query = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
293
-	if (preg_match_all("/((['])[^']*(\\2))|(([\"])[^\"]*(\\5))/S",$query,$textes)){
294
-		$textes = reset($textes); // indice 0 du match
295
-		switch(count($textes)){
296
-			case 0:$replace=array();break;
297
-			case 1:$replace=array('%1$s');break;
298
-			case 2:$replace=array('%1$s','%2$s');break;
299
-			case 3:$replace=array('%1$s','%2$s','%3$s');break;
300
-			case 4:$replace=array('%1$s','%2$s','%3$s','%4$s');break;
301
-			case 5:$replace=array('%1$s','%2$s','%3$s','%4$s','%5$s');break;
302
-			default:
303
-				$replace = range(1,count($textes));
304
-				$replace = '%'.implode('$s,%',$replace).'$s';
305
-				$replace = explode(',',$replace);
306
-				break;
307
-		}
308
-		$query = str_replace($textes,$replace,$query);
309
-	}
310
-	else
311
-		$textes = array();
312
-
313
-	return array($query, $textes);
291
+    static $codeEchappements = array("''"=>"\x1@##@\x1", "\'"=>"\x2@##@\x2", "\\\""=>"\x3@##@\x3");
292
+    $query = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
293
+    if (preg_match_all("/((['])[^']*(\\2))|(([\"])[^\"]*(\\5))/S",$query,$textes)){
294
+        $textes = reset($textes); // indice 0 du match
295
+        switch(count($textes)){
296
+            case 0:$replace=array();break;
297
+            case 1:$replace=array('%1$s');break;
298
+            case 2:$replace=array('%1$s','%2$s');break;
299
+            case 3:$replace=array('%1$s','%2$s','%3$s');break;
300
+            case 4:$replace=array('%1$s','%2$s','%3$s','%4$s');break;
301
+            case 5:$replace=array('%1$s','%2$s','%3$s','%4$s','%5$s');break;
302
+            default:
303
+                $replace = range(1,count($textes));
304
+                $replace = '%'.implode('$s,%',$replace).'$s';
305
+                $replace = explode(',',$replace);
306
+                break;
307
+        }
308
+        $query = str_replace($textes,$replace,$query);
309
+    }
310
+    else
311
+        $textes = array();
312
+
313
+    return array($query, $textes);
314 314
 }
315 315
 
316 316
 /**
@@ -322,37 +322,37 @@  discard block
 block discarded – undo
322 322
  * @return string
323 323
  */
324 324
 function query_reinjecte_textes($query, $textes){
325
-	static $codeEchappements = array("''"=>"\x1@##@\x1", "\'"=>"\x2@##@\x2", "\\\""=>"\x3@##@\x3");
326
-	# debug de la substitution
327
-	#if (($c1=substr_count($query,"%"))!=($c2=count($textes))){
328
-	#	spip_log("$c1 ::". $query,"tradquery"._LOG_ERREUR);
329
-	#	spip_log("$c2 ::". var_export($textes,1),"tradquery"._LOG_ERREUR);
330
-	#	spip_log("ini ::". $qi,"tradquery"._LOG_ERREUR);
331
-	#}
332
-	switch (count($textes)){
333
-		case 0:break;
334
-		case 1:$query=sprintf($query,$textes[0]);break;
335
-		case 2:$query=sprintf($query,$textes[0],$textes[1]);break;
336
-		case 3:$query=sprintf($query,$textes[0],$textes[1],$textes[2]);break;
337
-		case 4:$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3]);break;
338
-		case 5:$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3],$textes[4]);break;
339
-		default:
340
-			array_unshift($textes,$query);
341
-			$query = call_user_func_array('sprintf',$textes);
342
-			break;
343
-	}
344
-
345
-	$query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query);
346
-
347
-	return $query;
325
+    static $codeEchappements = array("''"=>"\x1@##@\x1", "\'"=>"\x2@##@\x2", "\\\""=>"\x3@##@\x3");
326
+    # debug de la substitution
327
+    #if (($c1=substr_count($query,"%"))!=($c2=count($textes))){
328
+    #	spip_log("$c1 ::". $query,"tradquery"._LOG_ERREUR);
329
+    #	spip_log("$c2 ::". var_export($textes,1),"tradquery"._LOG_ERREUR);
330
+    #	spip_log("ini ::". $qi,"tradquery"._LOG_ERREUR);
331
+    #}
332
+    switch (count($textes)){
333
+        case 0:break;
334
+        case 1:$query=sprintf($query,$textes[0]);break;
335
+        case 2:$query=sprintf($query,$textes[0],$textes[1]);break;
336
+        case 3:$query=sprintf($query,$textes[0],$textes[1],$textes[2]);break;
337
+        case 4:$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3]);break;
338
+        case 5:$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3],$textes[4]);break;
339
+        default:
340
+            array_unshift($textes,$query);
341
+            $query = call_user_func_array('sprintf',$textes);
342
+            break;
343
+    }
344
+
345
+    $query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query);
346
+
347
+    return $query;
348 348
 }
349 349
 
350 350
 // Pour compatibilite. Ne plus utiliser.
351 351
 // http://doc.spip.org/@spip_query
352 352
 function spip_query($query, $serveur='') {
353
-	global $spip_sql_version;
354
-	$f = spip_connect_sql($spip_sql_version, 'query', $serveur, true);
355
-	return function_exists($f) ? $f($query, $serveur) : false;
353
+    global $spip_sql_version;
354
+    $f = spip_connect_sql($spip_sql_version, 'query', $serveur, true);
355
+    return function_exists($f) ? $f($query, $serveur) : false;
356 356
 }
357 357
 
358 358
 ?>
Please login to merge, or discard this patch.
Spacing   +49 added lines, -50 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) return;
14
-require_once _ROOT_RESTREINT . 'base/objets.php';
14
+require_once _ROOT_RESTREINT.'base/objets.php';
15 15
 
16 16
 //
17 17
 // Utilitaires indispensables autour des serveurs SQL
@@ -25,7 +25,7 @@  discard block
 block discarded – undo
25 25
 // A l'installation, il faut simuler l'existence de ce fichier
26 26
 
27 27
 // http://doc.spip.org/@spip_connect
28
-function spip_connect($serveur='', $version='') {
28
+function spip_connect($serveur = '', $version = '') {
29 29
 	global $connexions, $spip_sql_version;
30 30
 
31 31
 	$serveur = !is_string($serveur) ? '' : strtolower($serveur);
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
 		$f = (!preg_match('/^[\w\.]*$/', $serveur))
42 42
 		? '' // nom de serveur mal ecrit
43 43
 		: ($serveur ?
44
-		   ( _DIR_CONNECT. $serveur . '.php') // serveur externe
44
+		   (_DIR_CONNECT.$serveur.'.php') // serveur externe
45 45
 		    : (_FILE_CONNECT ? _FILE_CONNECT // serveur principal ok
46 46
 		       : ($install ? _FILE_CONNECT_TMP // init du serveur principal
47 47
 			 : ''))); // installation pas faite
@@ -55,7 +55,7 @@  discard block
 block discarded – undo
55 55
 				// chercher une declaration de serveur dans le path
56 56
 				// qui pourra un jour servir a declarer des bases sqlite
57 57
 				// par des plugins. Et sert aussi aux boucles POUR.
58
-				find_in_path("$serveur.php",'connect/',true);
58
+				find_in_path("$serveur.php", 'connect/', true);
59 59
 			}
60 60
 		}
61 61
 		if (!isset($GLOBALS['db_ok'])) {
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
 				spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE);
68 68
 			spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS);
69 69
 			// ne plus reessayer si ce n'est pas l'install
70
-			return $connexions[$index]=false;
70
+			return $connexions[$index] = false;
71 71
 		}
72 72
 		$connexions[$index] = $GLOBALS['db_ok'];
73 73
 	}
@@ -78,9 +78,9 @@  discard block
 block discarded – undo
78 78
 	// chargement de la version du jeu de fonctions
79 79
 	// si pas dans le fichier par defaut
80 80
 	$type = $GLOBALS['db_ok']['type'];
81
-	$jeu = 'spip_' . $type .'_functions_' . $version;
81
+	$jeu = 'spip_'.$type.'_functions_'.$version;
82 82
 	if (!isset($GLOBALS[$jeu])) {
83
-		if (!find_in_path($type . '_' . $version . '.php', 'req/', true)){
83
+		if (!find_in_path($type.'_'.$version.'.php', 'req/', true)) {
84 84
 		  spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS);
85 85
 			// ne plus reessayer
86 86
 			return $connexions[$index][$version] = array();
@@ -103,12 +103,12 @@  discard block
 block discarded – undo
103 103
 			spip_log("spip_connect: absence de charset", _LOG_AVERTISSEMENT);
104 104
 			return false;
105 105
 		}
106
-	} else	{
106
+	} else {
107 107
 		// spip_meta n'existe pas toujours dans la base
108 108
 		// C'est le cas d'un dump sqlite par exemple 
109 109
 		if ($connexions[$index]['spip_connect_version']
110 110
 		AND sql_showtable('spip_meta', true, $serveur)
111
-		AND $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'",'','','','',$serveur))
111
+		AND $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur))
112 112
 			$charset = $r;
113 113
 		else $charset = -1;
114 114
 	}
@@ -120,13 +120,13 @@  discard block
 block discarded – undo
120 120
 	return $connexions[$index];
121 121
 }
122 122
 
123
-function spip_sql_erreur($serveur='')
123
+function spip_sql_erreur($serveur = '')
124 124
 {
125 125
 	$connexion = spip_connect($serveur);
126 126
 	$e = sql_errno($serveur);
127 127
 	$t = (isset($connexion['type']) ? $connexion['type'] : 'sql');
128
-	$m = "Erreur $e de $t: " . sql_error($serveur) . "\n" . $connexion['last'];
129
-	$f = $t . $serveur;
128
+	$m = "Erreur $e de $t: ".sql_error($serveur)."\n".$connexion['last'];
129
+	$f = $t.$serveur;
130 130
 	spip_log($m, $f.'.'._LOG_ERREUR);
131 131
 }
132 132
 
@@ -136,7 +136,7 @@  discard block
 block discarded – undo
136 136
 // connue seulement des convertisseurs automatiques
137 137
 
138 138
 // http://doc.spip.org/@spip_connect_sql
139
-function spip_connect_sql($version, $ins='', $serveur='', $cont=false) {
139
+function spip_connect_sql($version, $ins = '', $serveur = '', $cont = false) {
140 140
 	$desc = spip_connect($serveur, $version);
141 141
 	if (function_exists($f = @$desc[$version][$ins])) return $f;
142 142
 	if ($cont) return $desc;
@@ -166,28 +166,28 @@  discard block
 block discarded – undo
166 166
  * @param string $auth
167 167
  * @return array
168 168
  */
169
-function spip_connect_db($host, $port, $login, $pass, $db='', $type='mysql', $prefixe='', $auth='') {
169
+function spip_connect_db($host, $port, $login, $pass, $db = '', $type = 'mysql', $prefixe = '', $auth = '') {
170 170
 	global $db_ok;
171 171
 
172 172
 	// temps avant nouvelle tentative de connexion
173 173
 	// suite a une connection echouee
174 174
 	if (!defined('_CONNECT_RETRY_DELAY'))
175
-		define('_CONNECT_RETRY_DELAY',30);
175
+		define('_CONNECT_RETRY_DELAY', 30);
176 176
 
177 177
 	$f = "";
178 178
 	// un fichier de identifiant par combinaison (type,host,port,db)
179 179
 	// pour ne pas declarer tout indisponible d'un coup
180 180
 	// si en cours d'installation ou si db=@test@ on ne pose rien
181 181
 	// car c'est un test de connexion
182
-	if (!defined('_ECRIRE_INSTALL') AND !$db=="@test@")
183
-		$f = _DIR_TMP . $type . '.' . substr(md5($host.$port.$db),0,8) . '.out';
184
-	elseif ($db=='@test@')
182
+	if (!defined('_ECRIRE_INSTALL') AND !$db == "@test@")
183
+		$f = _DIR_TMP.$type.'.'.substr(md5($host.$port.$db), 0, 8).'.out';
184
+	elseif ($db == '@test@')
185 185
 		$db = '';
186 186
 
187 187
 	if ($f
188 188
 		AND @file_exists($f)
189 189
 	  AND (time() - @filemtime($f) < _CONNECT_RETRY_DELAY)) {
190
-		spip_log( "Echec : $f recent. Pas de tentative de connexion", _LOG_HS);
190
+		spip_log("Echec : $f recent. Pas de tentative de connexion", _LOG_HS);
191 191
 		return;
192 192
 	}
193 193
 
@@ -196,7 +196,7 @@  discard block
 block discarded – undo
196 196
 		? $GLOBALS['table_prefix'] : $db;
197 197
 	$h = charger_fonction($type, 'req', true);
198 198
 	if (!$h) {
199
-		spip_log( "les requetes $type ne sont pas fournies", _LOG_HS);
199
+		spip_log("les requetes $type ne sont pas fournies", _LOG_HS);
200 200
 		return;
201 201
 	}
202 202
 	if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) {
@@ -213,7 +213,7 @@  discard block
 block discarded – undo
213 213
 	// En cas d'indisponibilite du serveur, eviter de le bombarder
214 214
 	if ($f) {
215 215
 		@touch($f);
216
-		spip_log( "Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type.'.'._LOG_HS);
216
+		spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type.'.'._LOG_HS);
217 217
 	}
218 218
 }
219 219
 
@@ -233,14 +233,14 @@  discard block
 block discarded – undo
233 233
 // http://doc.spip.org/@spip_connect_main
234 234
 function spip_connect_main($connexion)
235 235
 {
236
-	if ($GLOBALS['spip_connect_version']< 0.1 AND _DIR_RESTREINT){
236
+	if ($GLOBALS['spip_connect_version'] < 0.1 AND _DIR_RESTREINT) {
237 237
 		include_spip('inc/headers');
238 238
 		redirige_url_ecrire('upgrade', 'reinstall=oui');
239 239
 	}
240 240
 
241 241
 	if (!($f = $connexion['select'])) return false;
242 242
 	// en cas d'erreur select retourne la requette (is_string=true donc)
243
-	if (!$r = $f('valeur','spip_meta', "nom='charset_sql_connexion'")
243
+	if (!$r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'")
244 244
 	  OR is_string($r))
245 245
 		return false;
246 246
 	if (!($f = $connexion['fetch'])) return false;
@@ -249,7 +249,7 @@  discard block
 block discarded – undo
249 249
 }
250 250
 
251 251
 // compatibilite
252
-function spip_connect_ldap($serveur='') {
252
+function spip_connect_ldap($serveur = '') {
253 253
 	include_spip('auth/ldap');
254 254
 	return auth_ldap_connect($serveur);
255 255
 }
@@ -258,9 +258,8 @@  discard block
 block discarded – undo
258 258
 // pour un array(1,'a',"a'") renvoie la chaine "'1','a','a\''"
259 259
 // Usage sql un peu deprecie, a remplacer par sql_quote()
260 260
 // http://doc.spip.org/@_q
261
-function _q ($a) {
262
-	return (is_numeric($a)) ? strval($a) :
263
-		(!is_array($a) ? ("'" . addslashes($a) . "'")
261
+function _q($a) {
262
+	return (is_numeric($a)) ? strval($a) : (!is_array($a) ? ("'".addslashes($a)."'")
264 263
 		 : join(",", array_map('_q', $a)));
265 264
 }
266 265
 
@@ -287,25 +286,25 @@  discard block
 block discarded – undo
287 286
  * @param string $query
288 287
  * @return array
289 288
  */
290
-function query_echappe_textes($query){
289
+function query_echappe_textes($query) {
291 290
 	static $codeEchappements = array("''"=>"\x1@##@\x1", "\'"=>"\x2@##@\x2", "\\\""=>"\x3@##@\x3");
292 291
 	$query = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
293
-	if (preg_match_all("/((['])[^']*(\\2))|(([\"])[^\"]*(\\5))/S",$query,$textes)){
292
+	if (preg_match_all("/((['])[^']*(\\2))|(([\"])[^\"]*(\\5))/S", $query, $textes)) {
294 293
 		$textes = reset($textes); // indice 0 du match
295
-		switch(count($textes)){
296
-			case 0:$replace=array();break;
297
-			case 1:$replace=array('%1$s');break;
298
-			case 2:$replace=array('%1$s','%2$s');break;
299
-			case 3:$replace=array('%1$s','%2$s','%3$s');break;
300
-			case 4:$replace=array('%1$s','%2$s','%3$s','%4$s');break;
301
-			case 5:$replace=array('%1$s','%2$s','%3$s','%4$s','%5$s');break;
294
+		switch (count($textes)) {
295
+			case 0:$replace = array(); break;
296
+			case 1:$replace = array('%1$s'); break;
297
+			case 2:$replace = array('%1$s', '%2$s'); break;
298
+			case 3:$replace = array('%1$s', '%2$s', '%3$s'); break;
299
+			case 4:$replace = array('%1$s', '%2$s', '%3$s', '%4$s'); break;
300
+			case 5:$replace = array('%1$s', '%2$s', '%3$s', '%4$s', '%5$s'); break;
302 301
 			default:
303
-				$replace = range(1,count($textes));
304
-				$replace = '%'.implode('$s,%',$replace).'$s';
305
-				$replace = explode(',',$replace);
302
+				$replace = range(1, count($textes));
303
+				$replace = '%'.implode('$s,%', $replace).'$s';
304
+				$replace = explode(',', $replace);
306 305
 				break;
307 306
 		}
308
-		$query = str_replace($textes,$replace,$query);
307
+		$query = str_replace($textes, $replace, $query);
309 308
 	}
310 309
 	else
311 310
 		$textes = array();
@@ -321,7 +320,7 @@  discard block
 block discarded – undo
321 320
  * @param array $textes
322 321
  * @return string
323 322
  */
324
-function query_reinjecte_textes($query, $textes){
323
+function query_reinjecte_textes($query, $textes) {
325 324
 	static $codeEchappements = array("''"=>"\x1@##@\x1", "\'"=>"\x2@##@\x2", "\\\""=>"\x3@##@\x3");
326 325
 	# debug de la substitution
327 326
 	#if (($c1=substr_count($query,"%"))!=($c2=count($textes))){
@@ -329,16 +328,16 @@  discard block
 block discarded – undo
329 328
 	#	spip_log("$c2 ::". var_export($textes,1),"tradquery"._LOG_ERREUR);
330 329
 	#	spip_log("ini ::". $qi,"tradquery"._LOG_ERREUR);
331 330
 	#}
332
-	switch (count($textes)){
331
+	switch (count($textes)) {
333 332
 		case 0:break;
334
-		case 1:$query=sprintf($query,$textes[0]);break;
335
-		case 2:$query=sprintf($query,$textes[0],$textes[1]);break;
336
-		case 3:$query=sprintf($query,$textes[0],$textes[1],$textes[2]);break;
337
-		case 4:$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3]);break;
338
-		case 5:$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3],$textes[4]);break;
333
+		case 1:$query = sprintf($query, $textes[0]); break;
334
+		case 2:$query = sprintf($query, $textes[0], $textes[1]); break;
335
+		case 3:$query = sprintf($query, $textes[0], $textes[1], $textes[2]); break;
336
+		case 4:$query = sprintf($query, $textes[0], $textes[1], $textes[2], $textes[3]); break;
337
+		case 5:$query = sprintf($query, $textes[0], $textes[1], $textes[2], $textes[3], $textes[4]); break;
339 338
 		default:
340
-			array_unshift($textes,$query);
341
-			$query = call_user_func_array('sprintf',$textes);
339
+			array_unshift($textes, $query);
340
+			$query = call_user_func_array('sprintf', $textes);
342 341
 			break;
343 342
 	}
344 343
 
@@ -349,7 +348,7 @@  discard block
 block discarded – undo
349 348
 
350 349
 // Pour compatibilite. Ne plus utiliser.
351 350
 // http://doc.spip.org/@spip_query
352
-function spip_query($query, $serveur='') {
351
+function spip_query($query, $serveur = '') {
353 352
 	global $spip_sql_version;
354 353
 	$f = spip_connect_sql($spip_sql_version, 'query', $serveur, true);
355 354
 	return function_exists($f) ? $f($query, $serveur) : false;
Please login to merge, or discard this patch.
Braces   +68 added lines, -35 removed lines patch added patch discarded remove patch
@@ -10,7 +10,9 @@  discard block
 block discarded – undo
10 10
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11 11
 \***************************************************************************/
12 12
 
13
-if (!defined('_ECRIRE_INC_VERSION')) return;
13
+if (!defined('_ECRIRE_INC_VERSION')) {
14
+    return;
15
+}
14 16
 require_once _ROOT_RESTREINT . 'base/objets.php';
15 17
 
16 18
 //
@@ -30,8 +32,12 @@  discard block
 block discarded – undo
30 32
 
31 33
 	$serveur = !is_string($serveur) ? '' : strtolower($serveur);
32 34
 	$index = $serveur ? $serveur : 0;
33
-	if (!$version) $version = $spip_sql_version;
34
-	if (isset($connexions[$index][$version])) return $connexions[$index];
35
+	if (!$version) {
36
+	    $version = $spip_sql_version;
37
+	}
38
+	if (isset($connexions[$index][$version])) {
39
+	    return $connexions[$index];
40
+	}
35 41
 
36 42
 	include_spip('base/abstract_sql');
37 43
 	$install = (_request('exec') == 'install');
@@ -60,11 +66,14 @@  discard block
 block discarded – undo
60 66
 		}
61 67
 		if (!isset($GLOBALS['db_ok'])) {
62 68
 		  // fera mieux la prochaine fois
63
-			if ($install) return false;
64
-			if ($f AND is_readable($f))
65
-				spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE);
66
-			else
67
-				spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE);
69
+			if ($install) {
70
+			    return false;
71
+			}
72
+			if ($f AND is_readable($f)) {
73
+							spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE);
74
+			} else {
75
+							spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE);
76
+			}
68 77
 			spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS);
69 78
 			// ne plus reessayer si ce n'est pas l'install
70 79
 			return $connexions[$index]=false;
@@ -72,7 +81,9 @@  discard block
 block discarded – undo
72 81
 		$connexions[$index] = $GLOBALS['db_ok'];
73 82
 	}
74 83
 	// si la connexion a deja ete tentee mais a echoue, le dire!
75
-	if (!$connexions[$index]) return false;
84
+	if (!$connexions[$index]) {
85
+	    return false;
86
+	}
76 87
 
77 88
 	// la connexion a reussi ou etait deja faite.
78 89
 	// chargement de la version du jeu de fonctions
@@ -87,7 +98,9 @@  discard block
 block discarded – undo
87 98
 		}
88 99
 	}
89 100
 	$connexions[$index][$version] = $GLOBALS[$jeu];
90
-	if ($old) return $connexions[$index];
101
+	if ($old) {
102
+	    return $connexions[$index];
103
+	}
91 104
 
92 105
 	$connexions[$index]['spip_connect_version'] = isset($GLOBALS['spip_connect_version']) ? $GLOBALS['spip_connect_version'] : 0;
93 106
 
@@ -108,14 +121,17 @@  discard block
 block discarded – undo
108 121
 		// C'est le cas d'un dump sqlite par exemple 
109 122
 		if ($connexions[$index]['spip_connect_version']
110 123
 		AND sql_showtable('spip_meta', true, $serveur)
111
-		AND $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'",'','','','',$serveur))
112
-			$charset = $r;
113
-		else $charset = -1;
124
+		AND $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'",'','','','',$serveur)) {
125
+					$charset = $r;
126
+		} else {
127
+		    $charset = -1;
128
+		}
114 129
 	}
115 130
 	if ($charset != -1) {
116 131
 		$f = $GLOBALS[$jeu]['set_charset'];
117
-		if (function_exists($f))
118
-			$f($charset, $serveur);
132
+		if (function_exists($f)) {
133
+					$f($charset, $serveur);
134
+		}
119 135
 	}
120 136
 	return $connexions[$index];
121 137
 }
@@ -138,10 +154,15 @@  discard block
 block discarded – undo
138 154
 // http://doc.spip.org/@spip_connect_sql
139 155
 function spip_connect_sql($version, $ins='', $serveur='', $cont=false) {
140 156
 	$desc = spip_connect($serveur, $version);
141
-	if (function_exists($f = @$desc[$version][$ins])) return $f;
142
-	if ($cont) return $desc;
143
-	if ($ins)
144
-		spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR);
157
+	if (function_exists($f = @$desc[$version][$ins])) {
158
+	    return $f;
159
+	}
160
+	if ($cont) {
161
+	    return $desc;
162
+	}
163
+	if ($ins) {
164
+			spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR);
165
+	}
145 166
 	include_spip('inc/minipres');
146 167
 	echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
147 168
 	exit;
@@ -171,18 +192,20 @@  discard block
 block discarded – undo
171 192
 
172 193
 	// temps avant nouvelle tentative de connexion
173 194
 	// suite a une connection echouee
174
-	if (!defined('_CONNECT_RETRY_DELAY'))
175
-		define('_CONNECT_RETRY_DELAY',30);
195
+	if (!defined('_CONNECT_RETRY_DELAY')) {
196
+			define('_CONNECT_RETRY_DELAY',30);
197
+	}
176 198
 
177 199
 	$f = "";
178 200
 	// un fichier de identifiant par combinaison (type,host,port,db)
179 201
 	// pour ne pas declarer tout indisponible d'un coup
180 202
 	// si en cours d'installation ou si db=@test@ on ne pose rien
181 203
 	// car c'est un test de connexion
182
-	if (!defined('_ECRIRE_INSTALL') AND !$db=="@test@")
183
-		$f = _DIR_TMP . $type . '.' . substr(md5($host.$port.$db),0,8) . '.out';
184
-	elseif ($db=='@test@')
185
-		$db = '';
204
+	if (!defined('_ECRIRE_INSTALL') AND !$db=="@test@") {
205
+			$f = _DIR_TMP . $type . '.' . substr(md5($host.$port.$db),0,8) . '.out';
206
+	} elseif ($db=='@test@') {
207
+			$db = '';
208
+	}
186 209
 
187 210
 	if ($f
188 211
 		AND @file_exists($f)
@@ -191,9 +214,10 @@  discard block
 block discarded – undo
191 214
 		return;
192 215
 	}
193 216
 
194
-	if (!$prefixe)
195
-		$prefixe = isset($GLOBALS['table_prefix'])
217
+	if (!$prefixe) {
218
+			$prefixe = isset($GLOBALS['table_prefix'])
196 219
 		? $GLOBALS['table_prefix'] : $db;
220
+	}
197 221
 	$h = charger_fonction($type, 'req', true);
198 222
 	if (!$h) {
199 223
 		spip_log( "les requetes $type ne sont pas fournies", _LOG_HS);
@@ -238,12 +262,17 @@  discard block
 block discarded – undo
238 262
 		redirige_url_ecrire('upgrade', 'reinstall=oui');
239 263
 	}
240 264
 
241
-	if (!($f = $connexion['select'])) return false;
265
+	if (!($f = $connexion['select'])) {
266
+	    return false;
267
+	}
242 268
 	// en cas d'erreur select retourne la requette (is_string=true donc)
243 269
 	if (!$r = $f('valeur','spip_meta', "nom='charset_sql_connexion'")
244
-	  OR is_string($r))
245
-		return false;
246
-	if (!($f = $connexion['fetch'])) return false;
270
+	  OR is_string($r)) {
271
+			return false;
272
+	}
273
+	if (!($f = $connexion['fetch'])) {
274
+	    return false;
275
+	}
247 276
 	$r = $f($r);
248 277
 	return ($r['valeur'] ? $r['valeur'] : -1);
249 278
 }
@@ -273,8 +302,12 @@  discard block
 block discarded – undo
273 302
 	$ydesc = $trouver_table(table_objet($y));
274 303
 	$ix = @$xdesc['key']["PRIMARY KEY"];
275 304
 	$iy = @$ydesc['key']["PRIMARY KEY"];
276
-	if ($table = $ydesc['tables_jointures'][$ix]) return $table;
277
-	if ($table = $xdesc['tables_jointures'][$iy]) return $table;
305
+	if ($table = $ydesc['tables_jointures'][$ix]) {
306
+	    return $table;
307
+	}
308
+	if ($table = $xdesc['tables_jointures'][$iy]) {
309
+	    return $table;
310
+	}
278 311
 	return '';
279 312
 }
280 313
 
@@ -306,9 +339,9 @@  discard block
 block discarded – undo
306 339
 				break;
307 340
 		}
308 341
 		$query = str_replace($textes,$replace,$query);
342
+	} else {
343
+			$textes = array();
309 344
 	}
310
-	else
311
-		$textes = array();
312 345
 
313 346
 	return array($query, $textes);
314 347
 }
Please login to merge, or discard this patch.