Completed
Push — master ( 3a7980...c8fa57 )
by cam
04:18
created
prive/formulaires/dater.php 2 patches
Indentation   +260 added lines, -260 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
@@ -45,130 +45,130 @@  discard block
 block discarded – undo
45 45
  **/
46 46
 function formulaires_dater_charger_dist($objet, $id_objet, $retour = '', $options = array()) {
47 47
 
48
-	$objet = objet_type($objet);
49
-	if (!$objet or !intval($id_objet)) {
50
-		return false;
51
-	}
52
-
53
-	if (!is_array($options)) {
54
-		$options = unserialize($options);
55
-	}
56
-
57
-	$_id_objet = id_table_objet($objet);
58
-	$table = table_objet($objet);
59
-	$trouver_table = charger_fonction('trouver_table', 'base');
60
-	$desc = $trouver_table($table);
61
-
62
-	if (!$desc) {
63
-		return false;
64
-	}
65
-
66
-	$champ_date = $desc['date'] ? $desc['date'] : 'date';
67
-	if (isset($options['champ_date']) and $options['champ_date']) {
68
-		$champ_date = $options['champ_date'];
69
-	}
70
-	if (!isset($desc['field'][$champ_date])) {
71
-		return false;
72
-	}
73
-
74
-	$valeurs = array(
75
-		'objet' => $objet,
76
-		'id_objet' => $id_objet,
77
-		'id' => $id_objet,
78
-	);
79
-
80
-
81
-	$select = "$champ_date as date";
82
-	$champ_date_redac = 'date_redac';
83
-	if (isset($options['champ_date_redac']) and $options['champ_date_redac']) {
84
-		$champ_date_redac = $options['champ_date_redac'];
85
-	}
86
-	if (isset($desc['field'][$champ_date_redac])) {
87
-		$select .= ",$champ_date_redac as date_redac";
88
-	}
89
-	if (isset($desc['field']['statut'])) {
90
-		$select .= ",statut";
91
-	}
92
-
93
-
94
-	$row = sql_fetsel($select, $desc['table'], "$_id_objet=" . intval($id_objet));
95
-	$statut = isset($row['statut']) ? $row['statut'] : 'publie'; // pas de statut => publie
96
-
97
-	$valeurs['editable'] = autoriser('dater', $objet, $id_objet, null, array('statut' => $statut));
98
-
99
-	$possedeDateRedac = false;
100
-
101
-	if (isset($row['date_redac']) and
102
-		$regs = recup_date($row['date_redac'], false)
103
-	) {
104
-		$annee_redac = $regs[0];
105
-		$mois_redac = $regs[1];
106
-		$jour_redac = $regs[2];
107
-		$heure_redac = $regs[3];
108
-		$minute_redac = $regs[4];
109
-		$possedeDateRedac = true;
110
-		// attention : les vrai dates de l'annee 1 sont stockee avec +9000 => 9001
111
-		// mais reviennent ici en annee 1 par recup_date
112
-		// on verifie donc que le intval($row['date_redac']) qui ressort l'annee
113
-		// est bien lui aussi <=1 : dans ce cas c'est une date sql 'nulle' ou presque, selon
114
-		// le gestionnnaire sql utilise (0001-01-01 pour PG par exemple)
115
-		if (intval($row['date_redac']) <= 1 and ($annee_redac <= 1) and ($mois_redac <= 1) and ($jour_redac <= 1)) {
116
-			$possedeDateRedac = false;
117
-		}
118
-	} else {
119
-		$annee_redac = $mois_redac = $jour_redac = $heure_redac = $minute_redac = 0;
120
-	}
121
-
122
-	if ($regs = recup_date($row['date'], false)) {
123
-		$annee = $regs[0];
124
-		$mois = $regs[1];
125
-		$jour = $regs[2];
126
-		$heure = $regs[3];
127
-		$minute = $regs[4];
128
-	}
129
-
130
-	// attention, si la variable s'appelle date ou date_redac, le compilo va
131
-	// la normaliser, ce qu'on ne veut pas ici.
132
-	$valeurs['afficher_date_redac'] = ($possedeDateRedac ? $row['date_redac'] : '');
133
-	$valeurs['date_redac_jour'] = dater_formater_saisie_jour($jour_redac, $mois_redac, $annee_redac);
134
-	$valeurs['date_redac_heure'] = "$heure_redac:$minute_redac";
135
-
136
-	$valeurs['afficher_date'] = $row['date'];
137
-	$valeurs['date_jour'] = dater_formater_saisie_jour($jour, $mois, $annee);
138
-	$valeurs['date_heure'] = "$heure:$minute";
139
-
140
-	$valeurs['sans_redac'] = !$possedeDateRedac;
141
-
142
-	if (isset($options['date_redac'])) {
143
-		$valeurs['_editer_date_anterieure'] = $options['date_redac'];
144
-	} else {
145
-		$valeurs['_editer_date_anterieure'] = ($objet == 'article' and ($GLOBALS['meta']['articles_redac'] != 'non' or $possedeDateRedac));
146
-	}
147
-	$valeurs['_label_date'] = (($statut == 'publie') ?
148
-		_T('texte_date_publication_objet') : _T('texte_date_creation_objet'));
149
-	if (isset($options['label_date']) and $options['label_date']) {
150
-		$valeurs['_label_date'] = $options['label_date'];
151
-	}
152
-	if (isset($options['label_date_redac']) and $options['label_date_redac']) {
153
-		$valeurs['_label_date_redac'] = $options['label_date_redac'];
154
-	}
155
-	if (isset($options['texte_sans_date_redac']) and $options['texte_sans_date_redac']) {
156
-		$valeurs['_texte_sans_date_redac'] = $options['texte_sans_date_redac'];
157
-	}
158
-	if (isset($options['class']) and $options['class']) {
159
-		$valeurs['_class'] = $options['class'];
160
-	}
161
-
162
-	$valeurs['_saisie_en_cours'] = (_request('_saisie_en_cours') !== null or _request('date_jour') !== null);
163
-
164
-	// cas ou l'on ne peut pas dater mais on peut modifier la date de redac anterieure
165
-	// https://core.spip.net/issues/3494
166
-	$valeurs['_editer_date'] = $valeurs['editable'];
167
-	if ($valeurs['_editer_date_anterieure'] and !$valeurs['editable']) {
168
-		$valeurs['editable'] = autoriser('modifier', $objet, $id_objet);
169
-	}
170
-
171
-	return $valeurs;
48
+    $objet = objet_type($objet);
49
+    if (!$objet or !intval($id_objet)) {
50
+        return false;
51
+    }
52
+
53
+    if (!is_array($options)) {
54
+        $options = unserialize($options);
55
+    }
56
+
57
+    $_id_objet = id_table_objet($objet);
58
+    $table = table_objet($objet);
59
+    $trouver_table = charger_fonction('trouver_table', 'base');
60
+    $desc = $trouver_table($table);
61
+
62
+    if (!$desc) {
63
+        return false;
64
+    }
65
+
66
+    $champ_date = $desc['date'] ? $desc['date'] : 'date';
67
+    if (isset($options['champ_date']) and $options['champ_date']) {
68
+        $champ_date = $options['champ_date'];
69
+    }
70
+    if (!isset($desc['field'][$champ_date])) {
71
+        return false;
72
+    }
73
+
74
+    $valeurs = array(
75
+        'objet' => $objet,
76
+        'id_objet' => $id_objet,
77
+        'id' => $id_objet,
78
+    );
79
+
80
+
81
+    $select = "$champ_date as date";
82
+    $champ_date_redac = 'date_redac';
83
+    if (isset($options['champ_date_redac']) and $options['champ_date_redac']) {
84
+        $champ_date_redac = $options['champ_date_redac'];
85
+    }
86
+    if (isset($desc['field'][$champ_date_redac])) {
87
+        $select .= ",$champ_date_redac as date_redac";
88
+    }
89
+    if (isset($desc['field']['statut'])) {
90
+        $select .= ",statut";
91
+    }
92
+
93
+
94
+    $row = sql_fetsel($select, $desc['table'], "$_id_objet=" . intval($id_objet));
95
+    $statut = isset($row['statut']) ? $row['statut'] : 'publie'; // pas de statut => publie
96
+
97
+    $valeurs['editable'] = autoriser('dater', $objet, $id_objet, null, array('statut' => $statut));
98
+
99
+    $possedeDateRedac = false;
100
+
101
+    if (isset($row['date_redac']) and
102
+        $regs = recup_date($row['date_redac'], false)
103
+    ) {
104
+        $annee_redac = $regs[0];
105
+        $mois_redac = $regs[1];
106
+        $jour_redac = $regs[2];
107
+        $heure_redac = $regs[3];
108
+        $minute_redac = $regs[4];
109
+        $possedeDateRedac = true;
110
+        // attention : les vrai dates de l'annee 1 sont stockee avec +9000 => 9001
111
+        // mais reviennent ici en annee 1 par recup_date
112
+        // on verifie donc que le intval($row['date_redac']) qui ressort l'annee
113
+        // est bien lui aussi <=1 : dans ce cas c'est une date sql 'nulle' ou presque, selon
114
+        // le gestionnnaire sql utilise (0001-01-01 pour PG par exemple)
115
+        if (intval($row['date_redac']) <= 1 and ($annee_redac <= 1) and ($mois_redac <= 1) and ($jour_redac <= 1)) {
116
+            $possedeDateRedac = false;
117
+        }
118
+    } else {
119
+        $annee_redac = $mois_redac = $jour_redac = $heure_redac = $minute_redac = 0;
120
+    }
121
+
122
+    if ($regs = recup_date($row['date'], false)) {
123
+        $annee = $regs[0];
124
+        $mois = $regs[1];
125
+        $jour = $regs[2];
126
+        $heure = $regs[3];
127
+        $minute = $regs[4];
128
+    }
129
+
130
+    // attention, si la variable s'appelle date ou date_redac, le compilo va
131
+    // la normaliser, ce qu'on ne veut pas ici.
132
+    $valeurs['afficher_date_redac'] = ($possedeDateRedac ? $row['date_redac'] : '');
133
+    $valeurs['date_redac_jour'] = dater_formater_saisie_jour($jour_redac, $mois_redac, $annee_redac);
134
+    $valeurs['date_redac_heure'] = "$heure_redac:$minute_redac";
135
+
136
+    $valeurs['afficher_date'] = $row['date'];
137
+    $valeurs['date_jour'] = dater_formater_saisie_jour($jour, $mois, $annee);
138
+    $valeurs['date_heure'] = "$heure:$minute";
139
+
140
+    $valeurs['sans_redac'] = !$possedeDateRedac;
141
+
142
+    if (isset($options['date_redac'])) {
143
+        $valeurs['_editer_date_anterieure'] = $options['date_redac'];
144
+    } else {
145
+        $valeurs['_editer_date_anterieure'] = ($objet == 'article' and ($GLOBALS['meta']['articles_redac'] != 'non' or $possedeDateRedac));
146
+    }
147
+    $valeurs['_label_date'] = (($statut == 'publie') ?
148
+        _T('texte_date_publication_objet') : _T('texte_date_creation_objet'));
149
+    if (isset($options['label_date']) and $options['label_date']) {
150
+        $valeurs['_label_date'] = $options['label_date'];
151
+    }
152
+    if (isset($options['label_date_redac']) and $options['label_date_redac']) {
153
+        $valeurs['_label_date_redac'] = $options['label_date_redac'];
154
+    }
155
+    if (isset($options['texte_sans_date_redac']) and $options['texte_sans_date_redac']) {
156
+        $valeurs['_texte_sans_date_redac'] = $options['texte_sans_date_redac'];
157
+    }
158
+    if (isset($options['class']) and $options['class']) {
159
+        $valeurs['_class'] = $options['class'];
160
+    }
161
+
162
+    $valeurs['_saisie_en_cours'] = (_request('_saisie_en_cours') !== null or _request('date_jour') !== null);
163
+
164
+    // cas ou l'on ne peut pas dater mais on peut modifier la date de redac anterieure
165
+    // https://core.spip.net/issues/3494
166
+    $valeurs['_editer_date'] = $valeurs['editable'];
167
+    if ($valeurs['_editer_date_anterieure'] and !$valeurs['editable']) {
168
+        $valeurs['editable'] = autoriser('modifier', $objet, $id_objet);
169
+    }
170
+
171
+    return $valeurs;
172 172
 }
173 173
 
174 174
 /**
@@ -186,20 +186,20 @@  discard block
 block discarded – undo
186 186
  *     Date formatée tel que `02/10/2012`
187 187
  **/
188 188
 function dater_formater_saisie_jour($jour, $mois, $annee, $sep = '/') {
189
-	$annee = str_pad($annee, 4, '0', STR_PAD_LEFT);
190
-	if (intval($jour)) {
191
-		$jour = str_pad($jour, 2, '0', STR_PAD_LEFT);
192
-		$mois = str_pad($mois, 2, '0', STR_PAD_LEFT);
189
+    $annee = str_pad($annee, 4, '0', STR_PAD_LEFT);
190
+    if (intval($jour)) {
191
+        $jour = str_pad($jour, 2, '0', STR_PAD_LEFT);
192
+        $mois = str_pad($mois, 2, '0', STR_PAD_LEFT);
193 193
 
194
-		return "$jour$sep$mois$sep$annee";
195
-	}
196
-	if (intval($mois)) {
197
-		$mois = str_pad($mois, 2, '0', STR_PAD_LEFT);
194
+        return "$jour$sep$mois$sep$annee";
195
+    }
196
+    if (intval($mois)) {
197
+        $mois = str_pad($mois, 2, '0', STR_PAD_LEFT);
198 198
 
199
-		return "$mois$sep$annee";
200
-	}
199
+        return "$mois$sep$annee";
200
+    }
201 201
 
202
-	return $annee;
202
+    return $annee;
203 203
 }
204 204
 
205 205
 /**
@@ -218,7 +218,7 @@  discard block
 block discarded – undo
218 218
  *     Hash du formulaire
219 219
  **/
220 220
 function formulaires_dater_identifier_dist($objet, $id_objet, $retour = '', $options = array()) {
221
-	return serialize(array($objet, $id_objet));
221
+    return serialize(array($objet, $id_objet));
222 222
 }
223 223
 
224 224
 /**
@@ -236,30 +236,30 @@  discard block
 block discarded – undo
236 236
  *     Tableau des erreurs
237 237
  */
238 238
 function formulaires_dater_verifier_dist($objet, $id_objet, $retour = '', $options = array()) {
239
-	$erreurs = array();
240
-
241
-	// ouvrir le formulaire en edition ?
242
-	if (_request('_saisie_en_cours')) {
243
-		$erreurs['message_erreur'] = '';
244
-
245
-		return $erreurs;
246
-	}
247
-
248
-	if (_request('changer')) {
249
-		foreach (array('date', 'date_redac') as $k) {
250
-			if ($v = _request($k . '_jour') and !dater_recuperer_date_saisie($v, $k)) {
251
-				$erreurs[$k] = _T('format_date_incorrecte');
252
-			} elseif ($v = _request($k . '_heure') and !dater_recuperer_heure_saisie($v)) {
253
-				$erreurs[$k] = _T('format_heure_incorrecte');
254
-			}
255
-		}
256
-
257
-		if (!_request('date_jour')) {
258
-			$erreurs['date'] = _T('info_obligatoire');
259
-		}
260
-	}
261
-
262
-	return $erreurs;
239
+    $erreurs = array();
240
+
241
+    // ouvrir le formulaire en edition ?
242
+    if (_request('_saisie_en_cours')) {
243
+        $erreurs['message_erreur'] = '';
244
+
245
+        return $erreurs;
246
+    }
247
+
248
+    if (_request('changer')) {
249
+        foreach (array('date', 'date_redac') as $k) {
250
+            if ($v = _request($k . '_jour') and !dater_recuperer_date_saisie($v, $k)) {
251
+                $erreurs[$k] = _T('format_date_incorrecte');
252
+            } elseif ($v = _request($k . '_heure') and !dater_recuperer_heure_saisie($v)) {
253
+                $erreurs[$k] = _T('format_heure_incorrecte');
254
+            }
255
+        }
256
+
257
+        if (!_request('date_jour')) {
258
+            $erreurs['date'] = _T('info_obligatoire');
259
+        }
260
+    }
261
+
262
+    return $erreurs;
263 263
 }
264 264
 
265 265
 /**
@@ -277,79 +277,79 @@  discard block
 block discarded – undo
277 277
  *     Retours des traitements
278 278
  */
279 279
 function formulaires_dater_traiter_dist($objet, $id_objet, $retour = '', $options = array()) {
280
-	$res = array('editable' => ' ');
281
-
282
-	if (_request('changer')) {
283
-		$table = table_objet($objet);
284
-		$trouver_table = charger_fonction('trouver_table', 'base');
285
-		$desc = $trouver_table($table);
286
-
287
-		if (!$desc) {
288
-			return array('message_erreur' => _L('erreur'));
289
-		} #impossible en principe
290
-
291
-		$champ_date = $desc['date'] ? $desc['date'] : 'date';
292
-		if (isset($options['champ_date']) and $options['champ_date']) {
293
-			$champ_date = $options['champ_date'];
294
-		}
295
-
296
-		$set = array();
297
-
298
-		$charger = charger_fonction('charger', 'formulaires/dater/');
299
-		$v = $charger($objet, $id_objet, $retour, $options);
300
-
301
-		if ($v['_editer_date']) {
302
-			if (!$d = dater_recuperer_date_saisie(_request('date_jour'))) {
303
-				$d = array(date('Y'), date('m'), date('d'));
304
-			}
305
-			if (!$h = dater_recuperer_heure_saisie(_request('date_heure'))) {
306
-				$h = array(0, 0);
307
-			}
308
-
309
-			$set[$champ_date] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]);
310
-		}
311
-
312
-		$champ_date_redac = 'date_redac';
313
-		if (isset($options['champ_date_redac']) and $options['champ_date_redac']) {
314
-			$champ_date_redac = $options['champ_date_redac'];
315
-		}
316
-		if (isset($desc['field'][$champ_date_redac]) and $v['_editer_date_anterieure']) {
317
-			if (!_request('date_redac_jour') or _request('sans_redac')) {
318
-				$set[$champ_date_redac] = sql_format_date(0, 0, 0, 0, 0, 0);
319
-			} else {
320
-				if (!$d = dater_recuperer_date_saisie(_request('date_redac_jour'), 'date_redac')) {
321
-					$d = array(date('Y'), date('m'), date('d'));
322
-				}
323
-				if (!$h = dater_recuperer_heure_saisie(_request('date_redac_heure'))) {
324
-					$h = array(0, 0);
325
-				}
326
-				$set[$champ_date_redac] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]);
327
-			}
328
-		}
329
-
330
-		if (count($set)) {
331
-			$publie_avant = objet_test_si_publie($objet, $id_objet);
332
-			include_spip('action/editer_objet');
333
-			objet_modifier($objet, $id_objet, $set);
334
-			$publie_apres = objet_test_si_publie($objet, $id_objet);
335
-			if ($publie_avant !== $publie_apres) {
336
-				// on refuse ajax pour forcer le rechargement de la page ici
337
-				// on refera traiter une 2eme fois, mais c'est sans consequence
338
-				refuser_traiter_formulaire_ajax();
339
-			}
340
-		}
341
-	}
342
-
343
-	if ($retour) {
344
-		$res['redirect'] = $retour;
345
-	}
346
-
347
-	set_request('date_jour');
348
-	set_request('date_redac_jour');
349
-	set_request('date_heure');
350
-	set_request('date_redac_heure');
351
-
352
-	return $res;
280
+    $res = array('editable' => ' ');
281
+
282
+    if (_request('changer')) {
283
+        $table = table_objet($objet);
284
+        $trouver_table = charger_fonction('trouver_table', 'base');
285
+        $desc = $trouver_table($table);
286
+
287
+        if (!$desc) {
288
+            return array('message_erreur' => _L('erreur'));
289
+        } #impossible en principe
290
+
291
+        $champ_date = $desc['date'] ? $desc['date'] : 'date';
292
+        if (isset($options['champ_date']) and $options['champ_date']) {
293
+            $champ_date = $options['champ_date'];
294
+        }
295
+
296
+        $set = array();
297
+
298
+        $charger = charger_fonction('charger', 'formulaires/dater/');
299
+        $v = $charger($objet, $id_objet, $retour, $options);
300
+
301
+        if ($v['_editer_date']) {
302
+            if (!$d = dater_recuperer_date_saisie(_request('date_jour'))) {
303
+                $d = array(date('Y'), date('m'), date('d'));
304
+            }
305
+            if (!$h = dater_recuperer_heure_saisie(_request('date_heure'))) {
306
+                $h = array(0, 0);
307
+            }
308
+
309
+            $set[$champ_date] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]);
310
+        }
311
+
312
+        $champ_date_redac = 'date_redac';
313
+        if (isset($options['champ_date_redac']) and $options['champ_date_redac']) {
314
+            $champ_date_redac = $options['champ_date_redac'];
315
+        }
316
+        if (isset($desc['field'][$champ_date_redac]) and $v['_editer_date_anterieure']) {
317
+            if (!_request('date_redac_jour') or _request('sans_redac')) {
318
+                $set[$champ_date_redac] = sql_format_date(0, 0, 0, 0, 0, 0);
319
+            } else {
320
+                if (!$d = dater_recuperer_date_saisie(_request('date_redac_jour'), 'date_redac')) {
321
+                    $d = array(date('Y'), date('m'), date('d'));
322
+                }
323
+                if (!$h = dater_recuperer_heure_saisie(_request('date_redac_heure'))) {
324
+                    $h = array(0, 0);
325
+                }
326
+                $set[$champ_date_redac] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]);
327
+            }
328
+        }
329
+
330
+        if (count($set)) {
331
+            $publie_avant = objet_test_si_publie($objet, $id_objet);
332
+            include_spip('action/editer_objet');
333
+            objet_modifier($objet, $id_objet, $set);
334
+            $publie_apres = objet_test_si_publie($objet, $id_objet);
335
+            if ($publie_avant !== $publie_apres) {
336
+                // on refuse ajax pour forcer le rechargement de la page ici
337
+                // on refera traiter une 2eme fois, mais c'est sans consequence
338
+                refuser_traiter_formulaire_ajax();
339
+            }
340
+        }
341
+    }
342
+
343
+    if ($retour) {
344
+        $res['redirect'] = $retour;
345
+    }
346
+
347
+    set_request('date_jour');
348
+    set_request('date_redac_jour');
349
+    set_request('date_heure');
350
+    set_request('date_redac_heure');
351
+
352
+    return $res;
353 353
 }
354 354
 
355 355
 /**
@@ -360,24 +360,24 @@  discard block
 block discarded – undo
360 360
  * @return array|string Chaîne vide si date invalide, tableau (année, mois, jour) sinon.
361 361
  */
362 362
 function dater_recuperer_date_saisie($post, $quoi = 'date') {
363
-	if (!preg_match('#^(?:(?:([0-9]{1,2})[/-])?([0-9]{1,2})[/-])?([0-9]{4}|[0-9]{1,2})#', $post, $regs)) {
364
-		return '';
365
-	}
366
-	if ($quoi == 'date_redac') {
367
-		if ($regs[3] <> '' and $regs[3] < 1001) {
368
-			$regs[3] += 9000;
369
-		}
370
-
371
-		return array($regs[3], $regs[2], $regs[1]);
372
-	} else {
373
-		if (
374
-			checkdate(intval($regs[2]), intval($regs[1]), intval($regs[3]))
375
-			and $t = mktime(0, 0, 0, $regs[2], $regs[1], $regs[3])
376
-		) {
377
-			return array(date('Y', $t), date('m', $t), date('d', $t));
378
-		}
379
-		return '';
380
-	}
363
+    if (!preg_match('#^(?:(?:([0-9]{1,2})[/-])?([0-9]{1,2})[/-])?([0-9]{4}|[0-9]{1,2})#', $post, $regs)) {
364
+        return '';
365
+    }
366
+    if ($quoi == 'date_redac') {
367
+        if ($regs[3] <> '' and $regs[3] < 1001) {
368
+            $regs[3] += 9000;
369
+        }
370
+
371
+        return array($regs[3], $regs[2], $regs[1]);
372
+    } else {
373
+        if (
374
+            checkdate(intval($regs[2]), intval($regs[1]), intval($regs[3]))
375
+            and $t = mktime(0, 0, 0, $regs[2], $regs[1], $regs[3])
376
+        ) {
377
+            return array(date('Y', $t), date('m', $t), date('d', $t));
378
+        }
379
+        return '';
380
+    }
381 381
 }
382 382
 
383 383
 /**
@@ -387,12 +387,12 @@  discard block
 block discarded – undo
387 387
  * @return array
388 388
  */
389 389
 function dater_recuperer_heure_saisie($post) {
390
-	if (!preg_match('#([0-9]{1,2})(?:[h:](?:([0-9]{1,2}))?)?#', $post, $regs)) {
391
-		return '';
392
-	}
393
-	if ($regs[1] > 23 or $regs[2] > 59) {
394
-		return '';
395
-	}
396
-
397
-	return array($regs[1], $regs[2]);
390
+    if (!preg_match('#([0-9]{1,2})(?:[h:](?:([0-9]{1,2}))?)?#', $post, $regs)) {
391
+        return '';
392
+    }
393
+    if ($regs[1] > 23 or $regs[2] > 59) {
394
+        return '';
395
+    }
396
+
397
+    return array($regs[1], $regs[2]);
398 398
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -91,7 +91,7 @@  discard block
 block discarded – undo
91 91
 	}
92 92
 
93 93
 
94
-	$row = sql_fetsel($select, $desc['table'], "$_id_objet=" . intval($id_objet));
94
+	$row = sql_fetsel($select, $desc['table'], "$_id_objet=".intval($id_objet));
95 95
 	$statut = isset($row['statut']) ? $row['statut'] : 'publie'; // pas de statut => publie
96 96
 
97 97
 	$valeurs['editable'] = autoriser('dater', $objet, $id_objet, null, array('statut' => $statut));
@@ -247,9 +247,9 @@  discard block
 block discarded – undo
247 247
 
248 248
 	if (_request('changer')) {
249 249
 		foreach (array('date', 'date_redac') as $k) {
250
-			if ($v = _request($k . '_jour') and !dater_recuperer_date_saisie($v, $k)) {
250
+			if ($v = _request($k.'_jour') and !dater_recuperer_date_saisie($v, $k)) {
251 251
 				$erreurs[$k] = _T('format_date_incorrecte');
252
-			} elseif ($v = _request($k . '_heure') and !dater_recuperer_heure_saisie($v)) {
252
+			} elseif ($v = _request($k.'_heure') and !dater_recuperer_heure_saisie($v)) {
253 253
 				$erreurs[$k] = _T('format_heure_incorrecte');
254 254
 			}
255 255
 		}
Please login to merge, or discard this patch.
ecrire/action/redirect.php 1 patch
Indentation   +68 added lines, -68 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
  **/
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 /**
@@ -36,55 +36,55 @@  discard block
 block discarded – undo
36 36
  *   ```
37 37
  **/
38 38
 function action_redirect_dist() {
39
-	$type = _request('type');
40
-	$id = intval(_request('id'));
41
-	$page = false;
39
+    $type = _request('type');
40
+    $id = intval(_request('id'));
41
+    $page = false;
42 42
 
43
-	// verifier le type ou page transmis
44
-	if (!preg_match('/^\w+$/', $type)) {
45
-		$page = _request('page');
46
-		if (!preg_match('/^\w+$/', $page)) {
47
-			return;
48
-		}
49
-	}
43
+    // verifier le type ou page transmis
44
+    if (!preg_match('/^\w+$/', $type)) {
45
+        $page = _request('page');
46
+        if (!preg_match('/^\w+$/', $page)) {
47
+            return;
48
+        }
49
+    }
50 50
 
51
-	if ($var_mode = _request('var_mode')) {
52
-		// forcer la mise a jour de l'url de cet objet !
53
-		if (!defined('_VAR_URLS')) {
54
-			define('_VAR_URLS', true);
55
-		}
56
-	}
51
+    if ($var_mode = _request('var_mode')) {
52
+        // forcer la mise a jour de l'url de cet objet !
53
+        if (!defined('_VAR_URLS')) {
54
+            define('_VAR_URLS', true);
55
+        }
56
+    }
57 57
 
58
-	if ($page) {
59
-		$url = generer_url_public($page, '', true);
60
-	} else {
61
-		$url = calculer_url_redirect_entite($type, $id, $var_mode);
62
-	}
58
+    if ($page) {
59
+        $url = generer_url_public($page, '', true);
60
+    } else {
61
+        $url = calculer_url_redirect_entite($type, $id, $var_mode);
62
+    }
63 63
 
64
-	$status = '302';
65
-	if ($url) {
66
-		if ($var_mode) {
67
-			$url = parametre_url($url, 'var_mode', $var_mode, '&');
68
-		}
64
+    $status = '302';
65
+    if ($url) {
66
+        if ($var_mode) {
67
+            $url = parametre_url($url, 'var_mode', $var_mode, '&');
68
+        }
69 69
 
70
-		if ($var_mode == 'preview'
71
-			and defined('_PREVIEW_TOKEN')
72
-			and _PREVIEW_TOKEN
73
-			and autoriser('previsualiser')
74
-		) {
75
-			include_spip('inc/securiser_action');
76
-			$token = calculer_token_previsu($url);
77
-			$url = parametre_url($url, 'var_previewtoken', $token);
78
-		}
70
+        if ($var_mode == 'preview'
71
+            and defined('_PREVIEW_TOKEN')
72
+            and _PREVIEW_TOKEN
73
+            and autoriser('previsualiser')
74
+        ) {
75
+            include_spip('inc/securiser_action');
76
+            $token = calculer_token_previsu($url);
77
+            $url = parametre_url($url, 'var_previewtoken', $token);
78
+        }
79 79
 
80
-		if (_request('status') and _request('status') == '301') {
81
-			$status = '301';
82
-		}
83
-	} else {
84
-		$url = generer_url_public('404', '', true);
85
-	}
80
+        if (_request('status') and _request('status') == '301') {
81
+            $status = '301';
82
+        }
83
+    } else {
84
+        $url = generer_url_public('404', '', true);
85
+    }
86 86
 
87
-	redirige_par_entete(str_replace('&amp;', '&', $url), '', $status);
87
+    redirige_par_entete(str_replace('&amp;', '&', $url), '', $status);
88 88
 }
89 89
 
90 90
 /**
@@ -99,32 +99,32 @@  discard block
 block discarded – undo
99 99
  * @return string|null
100 100
  */
101 101
 function calculer_url_redirect_entite($type, $id, $var_mode) {
102
-	// invalider le cache à chaque modif en bdd
103
-	$date = 0;
104
-	if (isset($GLOBALS['meta']['derniere_modif'])) {
105
-		$date = $GLOBALS['meta']['derniere_modif'];
106
-	}
107
-	$key = "url-$date-$type-$id";
102
+    // invalider le cache à chaque modif en bdd
103
+    $date = 0;
104
+    if (isset($GLOBALS['meta']['derniere_modif'])) {
105
+        $date = $GLOBALS['meta']['derniere_modif'];
106
+    }
107
+    $key = "url-$date-$type-$id";
108 108
 
109
-	// Obtenir l’url et si elle est publié du cache memoization
110
-	if (function_exists('cache_get') and $desc = cache_get($key)) {
111
-		list($url, $publie) = $desc;
112
-	}
113
-	// Si on ne l’a pas trouvé, ou si var mode, on calcule l’url et son état publie
114
-	if (empty($desc) or $var_mode) {
115
-		$publie = objet_test_si_publie($type, $id);
116
-		$url = generer_url_entite_absolue($id, $type, '', '', true);
117
-		if (function_exists('cache_set')) {
118
-			cache_set($key, array($url, $publie), 3600);
119
-		}
120
-	}
109
+    // Obtenir l’url et si elle est publié du cache memoization
110
+    if (function_exists('cache_get') and $desc = cache_get($key)) {
111
+        list($url, $publie) = $desc;
112
+    }
113
+    // Si on ne l’a pas trouvé, ou si var mode, on calcule l’url et son état publie
114
+    if (empty($desc) or $var_mode) {
115
+        $publie = objet_test_si_publie($type, $id);
116
+        $url = generer_url_entite_absolue($id, $type, '', '', true);
117
+        if (function_exists('cache_set')) {
118
+            cache_set($key, array($url, $publie), 3600);
119
+        }
120
+    }
121 121
 
122
-	// On valide l’url si elle est publiee ; sinon si preview on teste l’autorisation
123
-	if ($publie) {
124
-		return $url;
125
-	} elseif (defined('_VAR_PREVIEW') and _VAR_PREVIEW and autoriser('voir', $type, $id)) {
126
-		return $url;
127
-	}
122
+    // On valide l’url si elle est publiee ; sinon si preview on teste l’autorisation
123
+    if ($publie) {
124
+        return $url;
125
+    } elseif (defined('_VAR_PREVIEW') and _VAR_PREVIEW and autoriser('voir', $type, $id)) {
126
+        return $url;
127
+    }
128 128
 
129
-	return;
129
+    return;
130 130
 }
131 131
\ No newline at end of file
Please login to merge, or discard this patch.
ecrire/base/repair.php 2 patches
Indentation   +102 added lines, -102 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -36,18 +36,18 @@  discard block
 block discarded – undo
36 36
  **/
37 37
 function base_repair_dist($titre = '', $reprise = '') {
38 38
 
39
-	$res = admin_repair_tables();
40
-	if (!$res) {
41
-		$res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n";
42
-	} else {
43
-		include_spip('inc/rubriques');
44
-		calculer_rubriques();
45
-		propager_les_secteurs();
46
-	}
47
-	include_spip('inc/minipres');
48
-	$res .= pipeline('base_admin_repair', $res);
49
-	echo minipres(_T('texte_tentative_recuperation'),
50
-		$res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site')));
39
+    $res = admin_repair_tables();
40
+    if (!$res) {
41
+        $res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n";
42
+    } else {
43
+        include_spip('inc/rubriques');
44
+        calculer_rubriques();
45
+        propager_les_secteurs();
46
+    }
47
+    include_spip('inc/minipres');
48
+    $res .= pipeline('base_admin_repair', $res);
49
+    echo minipres(_T('texte_tentative_recuperation'),
50
+        $res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site')));
51 51
 }
52 52
 
53 53
 /**
@@ -59,42 +59,42 @@  discard block
 block discarded – undo
59 59
  * @return string Description des changements de chemins des documents
60 60
  **/
61 61
 function admin_repair_plat() {
62
-	spip_log("verification des documents joints", _LOG_INFO_IMPORTANTE);
63
-	$out = "";
64
-	$repertoire = array();
65
-	include_spip('inc/getdocument');
66
-	$res = sql_select('*', 'spip_documents', "fichier REGEXP CONCAT('^',extension,'[^/\]') AND distant='non'");
67
-
68
-	while ($row = sql_fetch($res)) {
69
-		$ext = $row['extension'];
70
-		if (!$ext) {
71
-			spip_log("document sans extension: " . $row['id_document'], _LOG_INFO_IMPORTANTE);
72
-			continue;
73
-		}
74
-		if (!isset($repertoire[$ext])) {
75
-			if (@file_exists($plat = _DIR_IMG . $ext . ".plat")) {
76
-				spip_unlink($plat);
77
-			}
78
-			$repertoire[$ext] = creer_repertoire_documents($ext);
79
-			if (preg_match(',_$,', $repertoire[$ext])) {
80
-				$repertoire[$ext] = false;
81
-			}
82
-		}
83
-		if ($d = $repertoire[$ext]) {
84
-			$d = substr($d, strlen(_DIR_IMG));
85
-			$src = $row['fichier'];
86
-			$dest = $d . substr($src, strlen($d));
87
-			if (@copy(_DIR_IMG . $src, _DIR_IMG . $dest)
88
-				and file_exists(_DIR_IMG . $dest)
89
-			) {
90
-				sql_updateq('spip_documents', array('fichier' => $dest), 'id_document=' . intval($row['id_document']));
91
-				spip_unlink(_DIR_IMG . $src);
92
-				$out .= "$src => $dest<br />";
93
-			}
94
-		}
95
-	}
96
-
97
-	return $out;
62
+    spip_log("verification des documents joints", _LOG_INFO_IMPORTANTE);
63
+    $out = "";
64
+    $repertoire = array();
65
+    include_spip('inc/getdocument');
66
+    $res = sql_select('*', 'spip_documents', "fichier REGEXP CONCAT('^',extension,'[^/\]') AND distant='non'");
67
+
68
+    while ($row = sql_fetch($res)) {
69
+        $ext = $row['extension'];
70
+        if (!$ext) {
71
+            spip_log("document sans extension: " . $row['id_document'], _LOG_INFO_IMPORTANTE);
72
+            continue;
73
+        }
74
+        if (!isset($repertoire[$ext])) {
75
+            if (@file_exists($plat = _DIR_IMG . $ext . ".plat")) {
76
+                spip_unlink($plat);
77
+            }
78
+            $repertoire[$ext] = creer_repertoire_documents($ext);
79
+            if (preg_match(',_$,', $repertoire[$ext])) {
80
+                $repertoire[$ext] = false;
81
+            }
82
+        }
83
+        if ($d = $repertoire[$ext]) {
84
+            $d = substr($d, strlen(_DIR_IMG));
85
+            $src = $row['fichier'];
86
+            $dest = $d . substr($src, strlen($d));
87
+            if (@copy(_DIR_IMG . $src, _DIR_IMG . $dest)
88
+                and file_exists(_DIR_IMG . $dest)
89
+            ) {
90
+                sql_updateq('spip_documents', array('fichier' => $dest), 'id_document=' . intval($row['id_document']));
91
+                spip_unlink(_DIR_IMG . $src);
92
+                $out .= "$src => $dest<br />";
93
+            }
94
+        }
95
+    }
96
+
97
+    return $out;
98 98
 }
99 99
 
100 100
 /**
@@ -108,57 +108,57 @@  discard block
 block discarded – undo
108 108
  **/
109 109
 function admin_repair_tables() {
110 110
 
111
-	$repair = sql_repair('repair', null, 'continue');
112
-
113
-	// recreer les tables manquantes eventuelles
114
-	include_spip('base/create');
115
-	creer_base();
116
-	$tables = sql_alltable();
117
-
118
-	$res = "";
119
-	foreach ($tables as $tab) {
120
-
121
-		$class = "";
122
-		$m = "<strong>$tab</strong> ";
123
-		spip_log("Repare $tab", _LOG_INFO_IMPORTANTE);
124
-		// supprimer la meta avant de lancer la reparation
125
-		// car le repair peut etre long ; on ne veut pas boucler
126
-		effacer_meta('admin_repair');
127
-		if ($repair) {
128
-			$result_repair = sql_repair($tab);
129
-			if (!$result_repair) {
130
-				return false;
131
-			}
132
-		}
133
-
134
-		// essayer de maj la table (creation de champs manquants)
135
-		maj_tables($tab);
136
-
137
-		$count = sql_countsel($tab);
138
-
139
-		if ($count > 1) {
140
-			$m .= "(" . _T('texte_compte_elements', array('count' => $count)) . ")\n";
141
-		} else {
142
-			if ($count == 1) {
143
-				$m .= "(" . _T('texte_compte_element', array('count' => $count)) . ")\n";
144
-			} else {
145
-				$m .= "(" . _T('texte_vide') . ")\n";
146
-			}
147
-		}
148
-
149
-		if ($result_repair
150
-			and $msg = join(" ",
151
-					(is_resource($result_repair) or is_object($result_repair)) ? sql_fetch($result_repair) : $result_repair) . ' '
152
-			and strpos($msg, ' OK ') === false
153
-		) {
154
-			$class = " class='notice'";
155
-			$m .= "<br /><tt>" . spip_htmlentities($msg) . "</tt>\n";
156
-		} else {
157
-			$m .= " " . _T('texte_table_ok');
158
-		}
159
-
160
-		$res .= "<div$class>$m</div>";
161
-	}
162
-
163
-	return $res;
111
+    $repair = sql_repair('repair', null, 'continue');
112
+
113
+    // recreer les tables manquantes eventuelles
114
+    include_spip('base/create');
115
+    creer_base();
116
+    $tables = sql_alltable();
117
+
118
+    $res = "";
119
+    foreach ($tables as $tab) {
120
+
121
+        $class = "";
122
+        $m = "<strong>$tab</strong> ";
123
+        spip_log("Repare $tab", _LOG_INFO_IMPORTANTE);
124
+        // supprimer la meta avant de lancer la reparation
125
+        // car le repair peut etre long ; on ne veut pas boucler
126
+        effacer_meta('admin_repair');
127
+        if ($repair) {
128
+            $result_repair = sql_repair($tab);
129
+            if (!$result_repair) {
130
+                return false;
131
+            }
132
+        }
133
+
134
+        // essayer de maj la table (creation de champs manquants)
135
+        maj_tables($tab);
136
+
137
+        $count = sql_countsel($tab);
138
+
139
+        if ($count > 1) {
140
+            $m .= "(" . _T('texte_compte_elements', array('count' => $count)) . ")\n";
141
+        } else {
142
+            if ($count == 1) {
143
+                $m .= "(" . _T('texte_compte_element', array('count' => $count)) . ")\n";
144
+            } else {
145
+                $m .= "(" . _T('texte_vide') . ")\n";
146
+            }
147
+        }
148
+
149
+        if ($result_repair
150
+            and $msg = join(" ",
151
+                    (is_resource($result_repair) or is_object($result_repair)) ? sql_fetch($result_repair) : $result_repair) . ' '
152
+            and strpos($msg, ' OK ') === false
153
+        ) {
154
+            $class = " class='notice'";
155
+            $m .= "<br /><tt>" . spip_htmlentities($msg) . "</tt>\n";
156
+        } else {
157
+            $m .= " " . _T('texte_table_ok');
158
+        }
159
+
160
+        $res .= "<div$class>$m</div>";
161
+    }
162
+
163
+    return $res;
164 164
 }
Please login to merge, or discard this patch.
Spacing   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
 
39 39
 	$res = admin_repair_tables();
40 40
 	if (!$res) {
41
-		$res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n";
41
+		$res = "<div class='error'>"._T('avis_erreur_mysql').' '.sql_errno().': '.sql_error()."</div>\n";
42 42
 	} else {
43 43
 		include_spip('inc/rubriques');
44 44
 		calculer_rubriques();
@@ -47,7 +47,7 @@  discard block
 block discarded – undo
47 47
 	include_spip('inc/minipres');
48 48
 	$res .= pipeline('base_admin_repair', $res);
49 49
 	echo minipres(_T('texte_tentative_recuperation'),
50
-		$res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site')));
50
+		$res.generer_form_ecrire('accueil', '', '', _T('public:accueil_site')));
51 51
 }
52 52
 
53 53
 /**
@@ -68,11 +68,11 @@  discard block
 block discarded – undo
68 68
 	while ($row = sql_fetch($res)) {
69 69
 		$ext = $row['extension'];
70 70
 		if (!$ext) {
71
-			spip_log("document sans extension: " . $row['id_document'], _LOG_INFO_IMPORTANTE);
71
+			spip_log("document sans extension: ".$row['id_document'], _LOG_INFO_IMPORTANTE);
72 72
 			continue;
73 73
 		}
74 74
 		if (!isset($repertoire[$ext])) {
75
-			if (@file_exists($plat = _DIR_IMG . $ext . ".plat")) {
75
+			if (@file_exists($plat = _DIR_IMG.$ext.".plat")) {
76 76
 				spip_unlink($plat);
77 77
 			}
78 78
 			$repertoire[$ext] = creer_repertoire_documents($ext);
@@ -83,12 +83,12 @@  discard block
 block discarded – undo
83 83
 		if ($d = $repertoire[$ext]) {
84 84
 			$d = substr($d, strlen(_DIR_IMG));
85 85
 			$src = $row['fichier'];
86
-			$dest = $d . substr($src, strlen($d));
87
-			if (@copy(_DIR_IMG . $src, _DIR_IMG . $dest)
88
-				and file_exists(_DIR_IMG . $dest)
86
+			$dest = $d.substr($src, strlen($d));
87
+			if (@copy(_DIR_IMG.$src, _DIR_IMG.$dest)
88
+				and file_exists(_DIR_IMG.$dest)
89 89
 			) {
90
-				sql_updateq('spip_documents', array('fichier' => $dest), 'id_document=' . intval($row['id_document']));
91
-				spip_unlink(_DIR_IMG . $src);
90
+				sql_updateq('spip_documents', array('fichier' => $dest), 'id_document='.intval($row['id_document']));
91
+				spip_unlink(_DIR_IMG.$src);
92 92
 				$out .= "$src => $dest<br />";
93 93
 			}
94 94
 		}
@@ -137,24 +137,24 @@  discard block
 block discarded – undo
137 137
 		$count = sql_countsel($tab);
138 138
 
139 139
 		if ($count > 1) {
140
-			$m .= "(" . _T('texte_compte_elements', array('count' => $count)) . ")\n";
140
+			$m .= "("._T('texte_compte_elements', array('count' => $count)).")\n";
141 141
 		} else {
142 142
 			if ($count == 1) {
143
-				$m .= "(" . _T('texte_compte_element', array('count' => $count)) . ")\n";
143
+				$m .= "("._T('texte_compte_element', array('count' => $count)).")\n";
144 144
 			} else {
145
-				$m .= "(" . _T('texte_vide') . ")\n";
145
+				$m .= "("._T('texte_vide').")\n";
146 146
 			}
147 147
 		}
148 148
 
149 149
 		if ($result_repair
150 150
 			and $msg = join(" ",
151
-					(is_resource($result_repair) or is_object($result_repair)) ? sql_fetch($result_repair) : $result_repair) . ' '
151
+					(is_resource($result_repair) or is_object($result_repair)) ? sql_fetch($result_repair) : $result_repair).' '
152 152
 			and strpos($msg, ' OK ') === false
153 153
 		) {
154 154
 			$class = " class='notice'";
155
-			$m .= "<br /><tt>" . spip_htmlentities($msg) . "</tt>\n";
155
+			$m .= "<br /><tt>".spip_htmlentities($msg)."</tt>\n";
156 156
 		} else {
157
-			$m .= " " . _T('texte_table_ok');
157
+			$m .= " "._T('texte_table_ok');
158 158
 		}
159 159
 
160 160
 		$res .= "<div$class>$m</div>";
Please login to merge, or discard this patch.
ecrire/lang/public_ja.php 1 patch
Indentation   +110 added lines, -110 removed lines patch added patch discarded remove patch
@@ -4,118 +4,118 @@
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'accueil_site' => 'ホーム',
14
-	'article' => '記事',
15
-	'articles' => '記事',
16
-	'articles_auteur' => 'この著者の記事',
17
-	'articles_populaires' => '人気のある記事',
18
-	'articles_rubrique' => 'このセクションにある記事',
19
-	'aucun_article' => 'このアドレスに記事はありません',
20
-	'aucun_auteur' => 'このアドレスに著者はいません',
21
-	'aucun_site' => 'このアドレスにサイトはありません',
22
-	'aucune_breve' => 'このアドレスにニュースはありません',
23
-	'aucune_rubrique' => 'このアドレスにセクションはありません',
24
-	'auteur' => '著者',
25
-	'autres' => 'その他',
26
-	'autres_breves' => '他のニュース',
27
-	'autres_groupes_mots_clefs' => 'キーワードの他のグループ',
28
-	'autres_sites' => '他のサイト',
29
-
30
-	// B
31
-	'bonjour' => 'こんにちは',
32
-
33
-	// C
34
-	'commenter_site' => 'このサイトについてコメントして下さい',
35
-	'contact' => '連絡先',
36
-	'copie_document_impossible' => 'ファイルのコーピは不可能です',
37
-
38
-	// D
39
-	'date' => '日付',
40
-	'dernier_ajout' => '最新の追加',
41
-	'dernieres_breves' => '最新のニュース',
42
-	'derniers_articles' => '最新の記事',
43
-	'derniers_commentaires' => '最新のコメント',
44
-	'derniers_messages_forum' => 'フォーラムで投稿された最新のメッセージ',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'テキストモード編集',
48
-	'en_reponse' => '返事として:',
49
-	'en_resume' => 'まとめとして',
50
-	'envoyer_message' => 'メッセージを送る',
51
-	'espace_prive' => '管理エリア',
52
-
53
-	// F
54
-	'formats_acceptes' => '受け入れるファイルのフォーマット: @formats@です。',
55
-
56
-	// H
57
-	'hierarchie_site' => 'サイトの階層',
58
-
59
-	// J
60
-	'jours' => '日付',
61
-
62
-	// L
63
-	'lien_connecter' => 'ログイン',
64
-
65
-	// M
66
-	'meme_auteur' => '同じ著者',
67
-	'meme_rubrique' => '同じセクションの中で',
68
-	'memes_auteurs' => '同じ著者',
69
-	'message' => 'フォーラムのメッセージ',
70
-	'messages_forum' => 'フォーラムのメッセージ',
71
-	'messages_recents' => '最新のフォーラムのメッセージ',
72
-	'mots_clef' => 'キーワード',
73
-	'mots_clefs' => 'キーワード',
74
-	'mots_clefs_meme_groupe' => '同じグループのキーワード',
75
-
76
-	// N
77
-	'navigation' => 'ナビゲーション',
78
-	'nom' => 'お名前',
79
-	'nouveautes' => '最新刊',
80
-	'nouveautes_web' => 'ウェブに関する最新刊',
81
-	'nouveaux_articles' => '新しい記事',
82
-	'nouvelles_breves' => '新しいニュース',
83
-
84
-	// P
85
-	'page_precedente' => '前のページ',
86
-	'page_suivante' => '次のページ',
87
-	'par_auteur' => '著者:',
88
-	'participer_site' => 'サインアップすると、サイトにご自分の記事を書くことが出来ます。申し込みしてから、管理エリアへのアクセスコードがメールで届きます。',
89
-	'plan_site' => 'サイトマップ',
90
-	'popularite' => '人気',
91
-	'poster_message' => 'メッセージを投稿する',
92
-	'proposer_site' => '追加するサイトを提案できるセクション:',
93
-
94
-	// R
95
-	'repondre_article' => 'この記事に返信する',
96
-	'repondre_breve' => 'このニュースに返信する',
97
-	'resultats_recherche' => '検索結果',
98
-	'retour_debut_forums' => 'フォーラムの最初のページに戻る',
99
-	'rubrique' => 'セクション',
100
-	'rubriques' => 'セクション',
101
-
102
-	// S
103
-	'signatures_petition' => '署名',
104
-	'site_realise_avec_spip' => 'SPIPで創造されたサイトです',
105
-	'sites_web' => 'ウェブサイト',
106
-	'sous_rubriques' => 'サブセクション',
107
-	'spam' => '迷惑メール',
108
-	'suite' => '次へ',
109
-	'sur_web' => 'ウェブ上',
110
-	'syndiquer_rubrique' => 'このセクションを供給する',
111
-	'syndiquer_site' => '全サイトを供給する',
112
-
113
-	// T
114
-	'texte_lettre_information' => 'サイトのニュースレター',
115
-	'texte_lettre_information_2' => '最新刊をまとめるニュースレター',
116
-
117
-	// V
118
-	'ver_imprimer' => '印刷用のバージョン',
119
-	'voir_en_ligne' => 'オンラインで見る',
120
-	'voir_squelette' => 'ページのテンプレートを見る'
12
+    // A
13
+    'accueil_site' => 'ホーム',
14
+    'article' => '記事',
15
+    'articles' => '記事',
16
+    'articles_auteur' => 'この著者の記事',
17
+    'articles_populaires' => '人気のある記事',
18
+    'articles_rubrique' => 'このセクションにある記事',
19
+    'aucun_article' => 'このアドレスに記事はありません',
20
+    'aucun_auteur' => 'このアドレスに著者はいません',
21
+    'aucun_site' => 'このアドレスにサイトはありません',
22
+    'aucune_breve' => 'このアドレスにニュースはありません',
23
+    'aucune_rubrique' => 'このアドレスにセクションはありません',
24
+    'auteur' => '著者',
25
+    'autres' => 'その他',
26
+    'autres_breves' => '他のニュース',
27
+    'autres_groupes_mots_clefs' => 'キーワードの他のグループ',
28
+    'autres_sites' => '他のサイト',
29
+
30
+    // B
31
+    'bonjour' => 'こんにちは',
32
+
33
+    // C
34
+    'commenter_site' => 'このサイトについてコメントして下さい',
35
+    'contact' => '連絡先',
36
+    'copie_document_impossible' => 'ファイルのコーピは不可能です',
37
+
38
+    // D
39
+    'date' => '日付',
40
+    'dernier_ajout' => '最新の追加',
41
+    'dernieres_breves' => '最新のニュース',
42
+    'derniers_articles' => '最新の記事',
43
+    'derniers_commentaires' => '最新のコメント',
44
+    'derniers_messages_forum' => 'フォーラムで投稿された最新のメッセージ',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'テキストモード編集',
48
+    'en_reponse' => '返事として:',
49
+    'en_resume' => 'まとめとして',
50
+    'envoyer_message' => 'メッセージを送る',
51
+    'espace_prive' => '管理エリア',
52
+
53
+    // F
54
+    'formats_acceptes' => '受け入れるファイルのフォーマット: @formats@です。',
55
+
56
+    // H
57
+    'hierarchie_site' => 'サイトの階層',
58
+
59
+    // J
60
+    'jours' => '日付',
61
+
62
+    // L
63
+    'lien_connecter' => 'ログイン',
64
+
65
+    // M
66
+    'meme_auteur' => '同じ著者',
67
+    'meme_rubrique' => '同じセクションの中で',
68
+    'memes_auteurs' => '同じ著者',
69
+    'message' => 'フォーラムのメッセージ',
70
+    'messages_forum' => 'フォーラムのメッセージ',
71
+    'messages_recents' => '最新のフォーラムのメッセージ',
72
+    'mots_clef' => 'キーワード',
73
+    'mots_clefs' => 'キーワード',
74
+    'mots_clefs_meme_groupe' => '同じグループのキーワード',
75
+
76
+    // N
77
+    'navigation' => 'ナビゲーション',
78
+    'nom' => 'お名前',
79
+    'nouveautes' => '最新刊',
80
+    'nouveautes_web' => 'ウェブに関する最新刊',
81
+    'nouveaux_articles' => '新しい記事',
82
+    'nouvelles_breves' => '新しいニュース',
83
+
84
+    // P
85
+    'page_precedente' => '前のページ',
86
+    'page_suivante' => '次のページ',
87
+    'par_auteur' => '著者:',
88
+    'participer_site' => 'サインアップすると、サイトにご自分の記事を書くことが出来ます。申し込みしてから、管理エリアへのアクセスコードがメールで届きます。',
89
+    'plan_site' => 'サイトマップ',
90
+    'popularite' => '人気',
91
+    'poster_message' => 'メッセージを投稿する',
92
+    'proposer_site' => '追加するサイトを提案できるセクション:',
93
+
94
+    // R
95
+    'repondre_article' => 'この記事に返信する',
96
+    'repondre_breve' => 'このニュースに返信する',
97
+    'resultats_recherche' => '検索結果',
98
+    'retour_debut_forums' => 'フォーラムの最初のページに戻る',
99
+    'rubrique' => 'セクション',
100
+    'rubriques' => 'セクション',
101
+
102
+    // S
103
+    'signatures_petition' => '署名',
104
+    'site_realise_avec_spip' => 'SPIPで創造されたサイトです',
105
+    'sites_web' => 'ウェブサイト',
106
+    'sous_rubriques' => 'サブセクション',
107
+    'spam' => '迷惑メール',
108
+    'suite' => '次へ',
109
+    'sur_web' => 'ウェブ上',
110
+    'syndiquer_rubrique' => 'このセクションを供給する',
111
+    'syndiquer_site' => '全サイトを供給する',
112
+
113
+    // T
114
+    'texte_lettre_information' => 'サイトのニュースレター',
115
+    'texte_lettre_information_2' => '最新刊をまとめるニュースレター',
116
+
117
+    // V
118
+    'ver_imprimer' => '印刷用のバージョン',
119
+    'voir_en_ligne' => 'オンラインで見る',
120
+    'voir_squelette' => 'ページのテンプレートを見る'
121 121
 );
Please login to merge, or discard this patch.
ecrire/inc/csv.php 2 patches
Indentation   +95 added lines, -95 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -33,105 +33,105 @@  discard block
 block discarded – undo
33 33
  **/
34 34
 function analyse_csv($t) {
35 35
 	
36
-	// Quel est le séparateur ?
37
-	$virg = substr_count($t, ',');
38
-	$pvirg = substr_count($t, ';');
39
-	$tab = substr_count($t, "\t");
40
-	if ($virg > $pvirg) {
41
-		$sep = ',';
42
-		$hs = '&#44;';
43
-	} else {
44
-		$sep = ';';
45
-		$hs = '&#59;';
46
-		$virg = $pvirg;
47
-	}
48
-	// un certain nombre de tab => le séparateur est tab
49
-	if ($tab > $virg / 10) {
50
-		$sep = "\t";
51
-		$hs = "\t";
52
-	}
36
+    // Quel est le séparateur ?
37
+    $virg = substr_count($t, ',');
38
+    $pvirg = substr_count($t, ';');
39
+    $tab = substr_count($t, "\t");
40
+    if ($virg > $pvirg) {
41
+        $sep = ',';
42
+        $hs = '&#44;';
43
+    } else {
44
+        $sep = ';';
45
+        $hs = '&#59;';
46
+        $virg = $pvirg;
47
+    }
48
+    // un certain nombre de tab => le séparateur est tab
49
+    if ($tab > $virg / 10) {
50
+        $sep = "\t";
51
+        $hs = "\t";
52
+    }
53 53
 	
54
-	// un separateur suivi de 3 guillemets attention !
55
-	// attention au ; ou , suceptible d'etre confondu avec un separateur
56
-	// on substitue un # et on remplacera a la fin
57
-	$t = preg_replace("/([\n$sep])\"\"\"/", '\\1"&#34#', $t);
58
-	$t = str_replace('""', '&#34#', $t);
59
-	preg_match_all('/"[^"]*"/', $t, $r);
60
-	foreach ($r[0] as $cell) {
61
-		$t = str_replace($cell,
62
-			str_replace($sep, $hs,
63
-				str_replace("\n", "``**``", // échapper les saut de lignes, on les remettra après.
64
-					substr($cell, 1, -1))),
65
-			$t);
66
-	}
54
+    // un separateur suivi de 3 guillemets attention !
55
+    // attention au ; ou , suceptible d'etre confondu avec un separateur
56
+    // on substitue un # et on remplacera a la fin
57
+    $t = preg_replace("/([\n$sep])\"\"\"/", '\\1"&#34#', $t);
58
+    $t = str_replace('""', '&#34#', $t);
59
+    preg_match_all('/"[^"]*"/', $t, $r);
60
+    foreach ($r[0] as $cell) {
61
+        $t = str_replace($cell,
62
+            str_replace($sep, $hs,
63
+                str_replace("\n", "``**``", // échapper les saut de lignes, on les remettra après.
64
+                    substr($cell, 1, -1))),
65
+            $t);
66
+    }
67 67
 	
68
-	$t = preg_replace('/\r?\n/', "\n",
69
-	preg_replace('/[\r\n]+/', "\n", $t));
68
+    $t = preg_replace('/\r?\n/', "\n",
69
+    preg_replace('/[\r\n]+/', "\n", $t));
70 70
 	
71
-	list($entete, $corps) = explode("\n", $t, 2);
72
-	$caption = '';
73
-	// sauter la ligne de tete formee seulement de separateurs
74
-	if (substr_count($entete, $sep) == strlen($entete)) {
75
-		list($entete, $corps) = explode("\n", $corps, 2);
76
-	}
77
-	// si une seule colonne, en faire le titre
78
-	if (preg_match("/^([^$sep]+)$sep+\$/", $entete, $l)) {
79
-		$caption = "\n||" . $l[1] . "|";
80
-		list($entete, $corps) = explode("\n", $corps, 2);
81
-	}
82
-	// si premiere colonne vide, le raccourci doit quand meme produire <th...
83
-	if ($entete[0] == $sep) {
84
-		$entete = ' ' . $entete;
85
-	}
71
+    list($entete, $corps) = explode("\n", $t, 2);
72
+    $caption = '';
73
+    // sauter la ligne de tete formee seulement de separateurs
74
+    if (substr_count($entete, $sep) == strlen($entete)) {
75
+        list($entete, $corps) = explode("\n", $corps, 2);
76
+    }
77
+    // si une seule colonne, en faire le titre
78
+    if (preg_match("/^([^$sep]+)$sep+\$/", $entete, $l)) {
79
+        $caption = "\n||" . $l[1] . "|";
80
+        list($entete, $corps) = explode("\n", $corps, 2);
81
+    }
82
+    // si premiere colonne vide, le raccourci doit quand meme produire <th...
83
+    if ($entete[0] == $sep) {
84
+        $entete = ' ' . $entete;
85
+    }
86 86
 
87
-	$lignes = explode("\n", $corps);
87
+    $lignes = explode("\n", $corps);
88 88
 
89
-	// retrait des lignes vides finales
90
-	while (count($lignes) > 0
91
-		and preg_match("/^$sep*$/", $lignes[count($lignes) - 1])) {
92
-		unset($lignes[count($lignes) - 1]);
93
-	}
94
-	//  calcul du  nombre de colonne a chaque ligne
95
-	$nbcols = array();
96
-	$max = $mil = substr_count($entete, $sep);
97
-	foreach ($lignes as $k => $v) {
98
-		if ($max <> ($nbcols[$k] = substr_count($v, $sep))) {
99
-			if ($max > $nbcols[$k]) {
100
-				$mil = $nbcols[$k];
101
-			} else {
102
-				$mil = $max;
103
-				$max = $nbcols[$k];
104
-			}
105
-		}
106
-	}
107
-	// Si pas le meme nombre, cadrer au nombre max
108
-	if ($mil <> $max) {
109
-		foreach ($nbcols as $k => $v) {
110
-			if ($v < $max) {
111
-				$lignes[$k] .= str_repeat($sep, $max - $v);
112
-			}
113
-		}
114
-	}
115
-	// et retirer les colonnes integralement vides
116
-	while (true) {
117
-		$nbcols = ($entete[strlen($entete) - 1] === $sep);
118
-		foreach ($lignes as $v) {
119
-			$nbcols &= ($v[strlen($v) - 1] === $sep);
120
-		}
121
-		if (!$nbcols) {
122
-			break;
123
-		}
124
-		$entete = substr($entete, 0, -1);
125
-		foreach ($lignes as $k => $v) {
126
-			$lignes[$k] = substr($v, 0, -1);
127
-		}
128
-	}
89
+    // retrait des lignes vides finales
90
+    while (count($lignes) > 0
91
+        and preg_match("/^$sep*$/", $lignes[count($lignes) - 1])) {
92
+        unset($lignes[count($lignes) - 1]);
93
+    }
94
+    //  calcul du  nombre de colonne a chaque ligne
95
+    $nbcols = array();
96
+    $max = $mil = substr_count($entete, $sep);
97
+    foreach ($lignes as $k => $v) {
98
+        if ($max <> ($nbcols[$k] = substr_count($v, $sep))) {
99
+            if ($max > $nbcols[$k]) {
100
+                $mil = $nbcols[$k];
101
+            } else {
102
+                $mil = $max;
103
+                $max = $nbcols[$k];
104
+            }
105
+        }
106
+    }
107
+    // Si pas le meme nombre, cadrer au nombre max
108
+    if ($mil <> $max) {
109
+        foreach ($nbcols as $k => $v) {
110
+            if ($v < $max) {
111
+                $lignes[$k] .= str_repeat($sep, $max - $v);
112
+            }
113
+        }
114
+    }
115
+    // et retirer les colonnes integralement vides
116
+    while (true) {
117
+        $nbcols = ($entete[strlen($entete) - 1] === $sep);
118
+        foreach ($lignes as $v) {
119
+            $nbcols &= ($v[strlen($v) - 1] === $sep);
120
+        }
121
+        if (!$nbcols) {
122
+            break;
123
+        }
124
+        $entete = substr($entete, 0, -1);
125
+        foreach ($lignes as $k => $v) {
126
+            $lignes[$k] = substr($v, 0, -1);
127
+        }
128
+    }
129 129
 	
130
-	foreach ($lignes as &$l) {
131
-		$l = str_replace('&#34#','"',$l);
132
-		$l = str_replace('``**``',"\n",$l);
133
-		$l = explode($sep, $l);
134
-	}
130
+    foreach ($lignes as &$l) {
131
+        $l = str_replace('&#34#','"',$l);
132
+        $l = str_replace('``**``',"\n",$l);
133
+        $l = explode($sep, $l);
134
+    }
135 135
 	
136
-	return array(explode($sep, $entete), $lignes, $caption);
136
+    return array(explode($sep, $entete), $lignes, $caption);
137 137
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -76,12 +76,12 @@  discard block
 block discarded – undo
76 76
 	}
77 77
 	// si une seule colonne, en faire le titre
78 78
 	if (preg_match("/^([^$sep]+)$sep+\$/", $entete, $l)) {
79
-		$caption = "\n||" . $l[1] . "|";
79
+		$caption = "\n||".$l[1]."|";
80 80
 		list($entete, $corps) = explode("\n", $corps, 2);
81 81
 	}
82 82
 	// si premiere colonne vide, le raccourci doit quand meme produire <th...
83 83
 	if ($entete[0] == $sep) {
84
-		$entete = ' ' . $entete;
84
+		$entete = ' '.$entete;
85 85
 	}
86 86
 
87 87
 	$lignes = explode("\n", $corps);
@@ -128,8 +128,8 @@  discard block
 block discarded – undo
128 128
 	}
129 129
 	
130 130
 	foreach ($lignes as &$l) {
131
-		$l = str_replace('&#34#','"',$l);
132
-		$l = str_replace('``**``',"\n",$l);
131
+		$l = str_replace('&#34#', '"', $l);
132
+		$l = str_replace('``**``', "\n", $l);
133 133
 		$l = explode($sep, $l);
134 134
 	}
135 135
 	
Please login to merge, or discard this patch.
ecrire/lang/public_nl.php 1 patch
Indentation   +110 added lines, -110 removed lines patch added patch discarded remove patch
@@ -4,118 +4,118 @@
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'accueil_site' => 'Homepagina',
14
-	'article' => 'Artikel',
15
-	'articles' => 'Artikelen',
16
-	'articles_auteur' => 'Artikelen van deze auteur',
17
-	'articles_populaires' => 'Meest bekeken artikelen',
18
-	'articles_rubrique' => 'Artikelen in deze rubriek',
19
-	'aucun_article' => 'Op dit adres is geen artikel te vinden',
20
-	'aucun_auteur' => 'Op dit adres is geen auteur te vinden',
21
-	'aucun_site' => 'Op dit adres is geen site te vinden',
22
-	'aucune_breve' => 'Op dit adres is geen nieuwsflits te vinden',
23
-	'aucune_rubrique' => 'Op dit adres is geen rubriek te vinden',
24
-	'auteur' => 'Auteur',
25
-	'autres' => 'Anderen',
26
-	'autres_breves' => 'Andere nieuwsflitsen',
27
-	'autres_groupes_mots_clefs' => 'Andere groepen trefwoorden',
28
-	'autres_sites' => 'Andere sites',
29
-
30
-	// B
31
-	'bonjour' => 'Hallo',
32
-
33
-	// C
34
-	'commenter_site' => 'Reageren op de site',
35
-	'contact' => 'Contact',
36
-	'copie_document_impossible' => 'Het is niet mogelijk het document te kopiëren',
37
-
38
-	// D
39
-	'date' => 'Datum',
40
-	'dernier_ajout' => 'Laatste toevoeging',
41
-	'dernieres_breves' => 'Laatste nieuwsflitsen',
42
-	'derniers_articles' => 'Laatste artikelen',
43
-	'derniers_commentaires' => 'Laatste commentaren',
44
-	'derniers_messages_forum' => 'Laatst gepubliceerde berichten in het forum',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'Uitgave in tekstmodus van',
48
-	'en_reponse' => 'Als antwoord op:',
49
-	'en_resume' => 'Samengevat',
50
-	'envoyer_message' => 'Een bericht sturen',
51
-	'espace_prive' => 'Privé gedeelte',
52
-
53
-	// F
54
-	'formats_acceptes' => 'Toegelaten formaten: @formats@.',
55
-
56
-	// H
57
-	'hierarchie_site' => 'Structuur van de site',
58
-
59
-	// J
60
-	'jours' => 'dagen',
61
-
62
-	// L
63
-	'lien_connecter' => 'Aanmelden',
64
-
65
-	// M
66
-	'meme_auteur' => 'Van dezelfde auteur',
67
-	'meme_rubrique' => 'In dezelfde rubriek',
68
-	'memes_auteurs' => 'Van dezelfde auteurs',
69
-	'message' => 'Bericht',
70
-	'messages_forum' => 'Berichten',
71
-	'messages_recents' => 'Meest recente forumberichten',
72
-	'mots_clef' => 'Trefwoord',
73
-	'mots_clefs' => 'Trefwoorden',
74
-	'mots_clefs_meme_groupe' => 'Trefwoorden van dezelfde groep',
75
-
76
-	// N
77
-	'navigation' => 'Navigatie',
78
-	'nom' => 'Naam',
79
-	'nouveautes' => 'Nieuwigheden',
80
-	'nouveautes_web' => 'Nieuwigheden op het Web',
81
-	'nouveaux_articles' => 'Nieuwe artikelen',
82
-	'nouvelles_breves' => 'Nieuwe nieuwsflitsen',
83
-
84
-	// P
85
-	'page_precedente' => 'vorige pagina',
86
-	'page_suivante' => 'volgende pagina',
87
-	'par_auteur' => 'door ',
88
-	'participer_site' => 'Wanneer je je hieronder inschrijft, kun je zelf een bijdrage leveren aan deze site door je eigen artikelen voor te stellen. Je ontvangt meteen een e-mail met daarin de toegangscode voor het privé-gedeelte van de site.',
89
-	'plan_site' => 'Overzicht van de site',
90
-	'popularite' => 'Populariteit',
91
-	'poster_message' => 'Een bericht plaatsen',
92
-	'proposer_site' => 'Je kan voorstellen een site in deze rubriek op te nemen:',
93
-
94
-	// R
95
-	'repondre_article' => 'Dit artikel beantwoorden',
96
-	'repondre_breve' => 'Op deze nieuwsflits reageren',
97
-	'resultats_recherche' => 'Resultaten van de zoekopdracht',
98
-	'retour_debut_forums' => 'Terug naar de startpagina van de forums',
99
-	'rubrique' => 'Rubriek',
100
-	'rubriques' => 'Rubrieken',
101
-
102
-	// S
103
-	'signatures_petition' => 'Ondertekeningen',
104
-	'site_realise_avec_spip' => 'Site gebouwd met SPIP',
105
-	'sites_web' => 'Websites',
106
-	'sous_rubriques' => 'Subrubrieken',
107
-	'spam' => 'Spam',
108
-	'suite' => 'vervolg',
109
-	'sur_web' => 'Op het web',
110
-	'syndiquer_rubrique' => 'Nieuws overnemen uit deze rubriek',
111
-	'syndiquer_site' => 'Nieuws overnemen van de hele site',
112
-
113
-	// T
114
-	'texte_lettre_information' => 'Dit is de nieuwsbrief van de site',
115
-	'texte_lettre_information_2' => 'Deze nieuwsbrief toont de publicaties vanaf',
116
-
117
-	// V
118
-	'ver_imprimer' => 'Afdrukversie',
119
-	'voir_en_ligne' => 'Online bekijken',
120
-	'voir_squelette' => 'het skelet van deze bladzijde bekijken'
12
+    // A
13
+    'accueil_site' => 'Homepagina',
14
+    'article' => 'Artikel',
15
+    'articles' => 'Artikelen',
16
+    'articles_auteur' => 'Artikelen van deze auteur',
17
+    'articles_populaires' => 'Meest bekeken artikelen',
18
+    'articles_rubrique' => 'Artikelen in deze rubriek',
19
+    'aucun_article' => 'Op dit adres is geen artikel te vinden',
20
+    'aucun_auteur' => 'Op dit adres is geen auteur te vinden',
21
+    'aucun_site' => 'Op dit adres is geen site te vinden',
22
+    'aucune_breve' => 'Op dit adres is geen nieuwsflits te vinden',
23
+    'aucune_rubrique' => 'Op dit adres is geen rubriek te vinden',
24
+    'auteur' => 'Auteur',
25
+    'autres' => 'Anderen',
26
+    'autres_breves' => 'Andere nieuwsflitsen',
27
+    'autres_groupes_mots_clefs' => 'Andere groepen trefwoorden',
28
+    'autres_sites' => 'Andere sites',
29
+
30
+    // B
31
+    'bonjour' => 'Hallo',
32
+
33
+    // C
34
+    'commenter_site' => 'Reageren op de site',
35
+    'contact' => 'Contact',
36
+    'copie_document_impossible' => 'Het is niet mogelijk het document te kopiëren',
37
+
38
+    // D
39
+    'date' => 'Datum',
40
+    'dernier_ajout' => 'Laatste toevoeging',
41
+    'dernieres_breves' => 'Laatste nieuwsflitsen',
42
+    'derniers_articles' => 'Laatste artikelen',
43
+    'derniers_commentaires' => 'Laatste commentaren',
44
+    'derniers_messages_forum' => 'Laatst gepubliceerde berichten in het forum',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'Uitgave in tekstmodus van',
48
+    'en_reponse' => 'Als antwoord op:',
49
+    'en_resume' => 'Samengevat',
50
+    'envoyer_message' => 'Een bericht sturen',
51
+    'espace_prive' => 'Privé gedeelte',
52
+
53
+    // F
54
+    'formats_acceptes' => 'Toegelaten formaten: @formats@.',
55
+
56
+    // H
57
+    'hierarchie_site' => 'Structuur van de site',
58
+
59
+    // J
60
+    'jours' => 'dagen',
61
+
62
+    // L
63
+    'lien_connecter' => 'Aanmelden',
64
+
65
+    // M
66
+    'meme_auteur' => 'Van dezelfde auteur',
67
+    'meme_rubrique' => 'In dezelfde rubriek',
68
+    'memes_auteurs' => 'Van dezelfde auteurs',
69
+    'message' => 'Bericht',
70
+    'messages_forum' => 'Berichten',
71
+    'messages_recents' => 'Meest recente forumberichten',
72
+    'mots_clef' => 'Trefwoord',
73
+    'mots_clefs' => 'Trefwoorden',
74
+    'mots_clefs_meme_groupe' => 'Trefwoorden van dezelfde groep',
75
+
76
+    // N
77
+    'navigation' => 'Navigatie',
78
+    'nom' => 'Naam',
79
+    'nouveautes' => 'Nieuwigheden',
80
+    'nouveautes_web' => 'Nieuwigheden op het Web',
81
+    'nouveaux_articles' => 'Nieuwe artikelen',
82
+    'nouvelles_breves' => 'Nieuwe nieuwsflitsen',
83
+
84
+    // P
85
+    'page_precedente' => 'vorige pagina',
86
+    'page_suivante' => 'volgende pagina',
87
+    'par_auteur' => 'door ',
88
+    'participer_site' => 'Wanneer je je hieronder inschrijft, kun je zelf een bijdrage leveren aan deze site door je eigen artikelen voor te stellen. Je ontvangt meteen een e-mail met daarin de toegangscode voor het privé-gedeelte van de site.',
89
+    'plan_site' => 'Overzicht van de site',
90
+    'popularite' => 'Populariteit',
91
+    'poster_message' => 'Een bericht plaatsen',
92
+    'proposer_site' => 'Je kan voorstellen een site in deze rubriek op te nemen:',
93
+
94
+    // R
95
+    'repondre_article' => 'Dit artikel beantwoorden',
96
+    'repondre_breve' => 'Op deze nieuwsflits reageren',
97
+    'resultats_recherche' => 'Resultaten van de zoekopdracht',
98
+    'retour_debut_forums' => 'Terug naar de startpagina van de forums',
99
+    'rubrique' => 'Rubriek',
100
+    'rubriques' => 'Rubrieken',
101
+
102
+    // S
103
+    'signatures_petition' => 'Ondertekeningen',
104
+    'site_realise_avec_spip' => 'Site gebouwd met SPIP',
105
+    'sites_web' => 'Websites',
106
+    'sous_rubriques' => 'Subrubrieken',
107
+    'spam' => 'Spam',
108
+    'suite' => 'vervolg',
109
+    'sur_web' => 'Op het web',
110
+    'syndiquer_rubrique' => 'Nieuws overnemen uit deze rubriek',
111
+    'syndiquer_site' => 'Nieuws overnemen van de hele site',
112
+
113
+    // T
114
+    'texte_lettre_information' => 'Dit is de nieuwsbrief van de site',
115
+    'texte_lettre_information_2' => 'Deze nieuwsbrief toont de publicaties vanaf',
116
+
117
+    // V
118
+    'ver_imprimer' => 'Afdrukversie',
119
+    'voir_en_ligne' => 'Online bekijken',
120
+    'voir_squelette' => 'het skelet van deze bladzijde bekijken'
121 121
 );
Please login to merge, or discard this patch.
ecrire/install/etape_chmod.php 2 patches
Spacing   +15 added lines, -16 removed lines patch added patch discarded remove patch
@@ -81,7 +81,7 @@  discard block
 block discarded – undo
81 81
 			$test_dir .= '/';
82 82
 		}
83 83
 		if (!in_array($test_dir, $GLOBALS['test_dirs'])) {
84
-			$GLOBALS['test_dirs'][] = _DIR_RACINE . $test_dir;
84
+			$GLOBALS['test_dirs'][] = _DIR_RACINE.$test_dir;
85 85
 		}
86 86
 	} else {
87 87
 		if (!_FILE_CONNECT) {
@@ -96,11 +96,11 @@  discard block
 block discarded – undo
96 96
 	foreach ($GLOBALS['test_dirs'] as $i => $my_dir) {
97 97
 		$test = test_ecrire($my_dir);
98 98
 		if (!$test) {
99
-			$m = preg_replace(',^' . _DIR_RACINE . ',', '', $my_dir);
99
+			$m = preg_replace(',^'._DIR_RACINE.',', '', $my_dir);
100 100
 			if (@file_exists($my_dir)) {
101
-				$bad_dirs['<li>' . $m . '</li>'] = 1;
101
+				$bad_dirs['<li>'.$m.'</li>'] = 1;
102 102
 			} else {
103
-				$absent_dirs['<li>' . $m . '</li>'] = 1;
103
+				$absent_dirs['<li>'.$m.'</li>'] = 1;
104 104
 			}
105 105
 		} else {
106 106
 			$chmod = max($chmod, $test);
@@ -110,21 +110,21 @@  discard block
 block discarded – undo
110 110
 	if ($bad_dirs or $absent_dirs) {
111 111
 		if (!_FILE_CONNECT) {
112 112
 			$titre = _T('dirs_preliminaire');
113
-			$continuer = ' ' . _T('dirs_commencer') . '.';
113
+			$continuer = ' '._T('dirs_commencer').'.';
114 114
 		} else {
115 115
 			$titre = _T('dirs_probleme_droits');
116 116
 		}
117 117
 
118 118
 
119
-		$res = "<div align='right'>" . menu_langues('var_lang_ecrire') . "</div>\n";
119
+		$res = "<div align='right'>".menu_langues('var_lang_ecrire')."</div>\n";
120 120
 
121 121
 		if ($bad_dirs) {
122 122
 			$res .=
123 123
 				_T(
124 124
 					'dirs_repertoires_suivants',
125 125
 					array('bad_dirs' => join("\n", array_keys($bad_dirs)))
126
-				) .
127
-				'<b>' . _T('login_recharger') . '</b>.';
126
+				).
127
+				'<b>'._T('login_recharger').'</b>.';
128 128
 		}
129 129
 
130 130
 		if ($absent_dirs) {
@@ -132,22 +132,21 @@  discard block
 block discarded – undo
132 132
 				_T(
133 133
 					'dirs_repertoires_absents',
134 134
 					array('bad_dirs' => join("\n", array_keys($absent_dirs)))
135
-				) .
136
-				'<b>' . _T('login_recharger') . '</b>.';
135
+				).
136
+				'<b>'._T('login_recharger').'</b>.';
137 137
 		}
138
-		$res = '<p>' . $continuer . $res . aider('install0', true) . '</p>';
138
+		$res = '<p>'.$continuer.$res.aider('install0', true).'</p>';
139 139
 
140 140
 		$t = _T('login_recharger');
141
-		$t = (!$test_dir ? '' :
142
-				"<input type='hidden' name='test_dir' value='" . spip_htmlspecialchars($test_dir, ENT_QUOTES) . "' />")
141
+		$t = (!$test_dir ? '' : "<input type='hidden' name='test_dir' value='".spip_htmlspecialchars($test_dir, ENT_QUOTES)."' />")
143 142
 			. "<input type='hidden' name='etape' value='chmod' />"
144
-			. "<div style='text-align: right'><input type='submit' value='" . attribut_html($t) . "' /></div>";
143
+			. "<div style='text-align: right'><input type='submit' value='".attribut_html($t)."' /></div>";
145 144
 
146
-		echo minipres($titre, $res . generer_form_ecrire('install', $t));
145
+		echo minipres($titre, $res.generer_form_ecrire('install', $t));
147 146
 	} else {
148 147
 		$deja = (_FILE_CONNECT and analyse_fichier_connection(_FILE_CONNECT));
149 148
 		if (!$deja) {
150
-			redirige_url_ecrire('install', 'etape=1&chmod=' . $chmod);
149
+			redirige_url_ecrire('install', 'etape=1&chmod='.$chmod);
151 150
 		} else {
152 151
 			redirige_url_ecrire();
153 152
 		}
Please login to merge, or discard this patch.
Indentation   +117 added lines, -117 removed lines patch added patch discarded remove patch
@@ -11,11 +11,11 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 if (defined('_TEST_DIRS')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 define('_TEST_DIRS', '1');
21 21
 
@@ -27,42 +27,42 @@  discard block
 block discarded – undo
27 27
 //
28 28
 // https://code.spip.net/@test_ecrire
29 29
 function test_ecrire($my_dir) {
30
-	static $chmod = 0;
31
-
32
-	$ok = false;
33
-	$script = @file_exists('spip_loader.php') ? 'spip_loader.php' : $_SERVER['PHP_SELF'];
34
-	$self = basename($script);
35
-	$uid = @fileowner('.');
36
-	$uid2 = @fileowner($self);
37
-	$gid = @filegroup('.');
38
-	$gid2 = @filegroup($self);
39
-	$perms = @fileperms($self);
40
-
41
-	// Comparer l'appartenance d'un fichier cree par PHP
42
-	// avec celle du script et du repertoire courant
43
-	if (!$chmod) {
44
-		@rmdir('test');
45
-		spip_unlink('test'); // effacer au cas ou
46
-		@touch('test');
47
-		if ($uid > 0 && $uid == $uid2 && @fileowner('test') == $uid) {
48
-			$chmod = 0700;
49
-		} else {
50
-			if ($gid > 0 && $gid == $gid2 && @filegroup('test') == $gid) {
51
-				$chmod = 0770;
52
-			} else {
53
-				$chmod = 0777;
54
-			}
55
-		}
56
-		// Appliquer de plus les droits d'acces du script
57
-		if ($perms > 0) {
58
-			$perms = ($perms & 0777) | (($perms & 0444) >> 2);
59
-			$chmod |= $perms;
60
-		}
61
-		spip_unlink('test');
62
-	}
63
-	$ok = is_dir($my_dir) && is_writable($my_dir);
64
-
65
-	return $ok ? $chmod : false;
30
+    static $chmod = 0;
31
+
32
+    $ok = false;
33
+    $script = @file_exists('spip_loader.php') ? 'spip_loader.php' : $_SERVER['PHP_SELF'];
34
+    $self = basename($script);
35
+    $uid = @fileowner('.');
36
+    $uid2 = @fileowner($self);
37
+    $gid = @filegroup('.');
38
+    $gid2 = @filegroup($self);
39
+    $perms = @fileperms($self);
40
+
41
+    // Comparer l'appartenance d'un fichier cree par PHP
42
+    // avec celle du script et du repertoire courant
43
+    if (!$chmod) {
44
+        @rmdir('test');
45
+        spip_unlink('test'); // effacer au cas ou
46
+        @touch('test');
47
+        if ($uid > 0 && $uid == $uid2 && @fileowner('test') == $uid) {
48
+            $chmod = 0700;
49
+        } else {
50
+            if ($gid > 0 && $gid == $gid2 && @filegroup('test') == $gid) {
51
+                $chmod = 0770;
52
+            } else {
53
+                $chmod = 0777;
54
+            }
55
+        }
56
+        // Appliquer de plus les droits d'acces du script
57
+        if ($perms > 0) {
58
+            $perms = ($perms & 0777) | (($perms & 0444) >> 2);
59
+            $chmod |= $perms;
60
+        }
61
+        spip_unlink('test');
62
+    }
63
+    $ok = is_dir($my_dir) && is_writable($my_dir);
64
+
65
+    return $ok ? $chmod : false;
66 66
 }
67 67
 
68 68
 //
@@ -73,83 +73,83 @@  discard block
 block discarded – undo
73 73
 // https://code.spip.net/@install_etape_chmod_dist
74 74
 function install_etape_chmod_dist() {
75 75
 
76
-	$test_dir = _request('test_dir');
77
-	$chmod = 0;
78
-
79
-	if ($test_dir) {
80
-		if (substr($test_dir, -1) !== '/') {
81
-			$test_dir .= '/';
82
-		}
83
-		if (!in_array($test_dir, $GLOBALS['test_dirs'])) {
84
-			$GLOBALS['test_dirs'][] = _DIR_RACINE . $test_dir;
85
-		}
86
-	} else {
87
-		if (!_FILE_CONNECT) {
88
-			$GLOBALS['test_dirs'][] = _DIR_CONNECT;
89
-			$GLOBALS['test_dirs'][] = _DIR_CHMOD;
90
-		}
91
-	}
92
-
93
-	$bad_dirs = array();
94
-	$absent_dirs = array();
95
-
96
-	foreach ($GLOBALS['test_dirs'] as $i => $my_dir) {
97
-		$test = test_ecrire($my_dir);
98
-		if (!$test) {
99
-			$m = preg_replace(',^' . _DIR_RACINE . ',', '', $my_dir);
100
-			if (@file_exists($my_dir)) {
101
-				$bad_dirs['<li>' . $m . '</li>'] = 1;
102
-			} else {
103
-				$absent_dirs['<li>' . $m . '</li>'] = 1;
104
-			}
105
-		} else {
106
-			$chmod = max($chmod, $test);
107
-		}
108
-	}
109
-
110
-	if ($bad_dirs or $absent_dirs) {
111
-		if (!_FILE_CONNECT) {
112
-			$titre = _T('dirs_preliminaire');
113
-			$continuer = ' ' . _T('dirs_commencer') . '.';
114
-		} else {
115
-			$titre = _T('dirs_probleme_droits');
116
-		}
117
-
118
-
119
-		$res = "<div align='right'>" . menu_langues('var_lang_ecrire') . "</div>\n";
120
-
121
-		if ($bad_dirs) {
122
-			$res .=
123
-				_T(
124
-					'dirs_repertoires_suivants',
125
-					array('bad_dirs' => join("\n", array_keys($bad_dirs)))
126
-				) .
127
-				'<b>' . _T('login_recharger') . '</b>.';
128
-		}
129
-
130
-		if ($absent_dirs) {
131
-			$res .=
132
-				_T(
133
-					'dirs_repertoires_absents',
134
-					array('bad_dirs' => join("\n", array_keys($absent_dirs)))
135
-				) .
136
-				'<b>' . _T('login_recharger') . '</b>.';
137
-		}
138
-		$res = '<p>' . $continuer . $res . aider('install0', true) . '</p>';
139
-
140
-		$t = _T('login_recharger');
141
-		$t = (!$test_dir ? '' :
142
-				"<input type='hidden' name='test_dir' value='" . spip_htmlspecialchars($test_dir, ENT_QUOTES) . "' />")
143
-			. "<input type='hidden' name='etape' value='chmod' />"
144
-			. "<div style='text-align: right'><input type='submit' value='" . attribut_html($t) . "' /></div>";
145
-
146
-		echo minipres($titre, $res . generer_form_ecrire('install', $t));
147
-	} else {
148
-		$deja = (_FILE_CONNECT and analyse_fichier_connection(_FILE_CONNECT));
149
-		if (!$deja) {
150
-			redirige_url_ecrire('install', 'etape=1&chmod=' . $chmod);
151
-		} else {
152
-			redirige_url_ecrire();
153
-		}
154
-	}
76
+    $test_dir = _request('test_dir');
77
+    $chmod = 0;
78
+
79
+    if ($test_dir) {
80
+        if (substr($test_dir, -1) !== '/') {
81
+            $test_dir .= '/';
82
+        }
83
+        if (!in_array($test_dir, $GLOBALS['test_dirs'])) {
84
+            $GLOBALS['test_dirs'][] = _DIR_RACINE . $test_dir;
85
+        }
86
+    } else {
87
+        if (!_FILE_CONNECT) {
88
+            $GLOBALS['test_dirs'][] = _DIR_CONNECT;
89
+            $GLOBALS['test_dirs'][] = _DIR_CHMOD;
90
+        }
91
+    }
92
+
93
+    $bad_dirs = array();
94
+    $absent_dirs = array();
95
+
96
+    foreach ($GLOBALS['test_dirs'] as $i => $my_dir) {
97
+        $test = test_ecrire($my_dir);
98
+        if (!$test) {
99
+            $m = preg_replace(',^' . _DIR_RACINE . ',', '', $my_dir);
100
+            if (@file_exists($my_dir)) {
101
+                $bad_dirs['<li>' . $m . '</li>'] = 1;
102
+            } else {
103
+                $absent_dirs['<li>' . $m . '</li>'] = 1;
104
+            }
105
+        } else {
106
+            $chmod = max($chmod, $test);
107
+        }
108
+    }
109
+
110
+    if ($bad_dirs or $absent_dirs) {
111
+        if (!_FILE_CONNECT) {
112
+            $titre = _T('dirs_preliminaire');
113
+            $continuer = ' ' . _T('dirs_commencer') . '.';
114
+        } else {
115
+            $titre = _T('dirs_probleme_droits');
116
+        }
117
+
118
+
119
+        $res = "<div align='right'>" . menu_langues('var_lang_ecrire') . "</div>\n";
120
+
121
+        if ($bad_dirs) {
122
+            $res .=
123
+                _T(
124
+                    'dirs_repertoires_suivants',
125
+                    array('bad_dirs' => join("\n", array_keys($bad_dirs)))
126
+                ) .
127
+                '<b>' . _T('login_recharger') . '</b>.';
128
+        }
129
+
130
+        if ($absent_dirs) {
131
+            $res .=
132
+                _T(
133
+                    'dirs_repertoires_absents',
134
+                    array('bad_dirs' => join("\n", array_keys($absent_dirs)))
135
+                ) .
136
+                '<b>' . _T('login_recharger') . '</b>.';
137
+        }
138
+        $res = '<p>' . $continuer . $res . aider('install0', true) . '</p>';
139
+
140
+        $t = _T('login_recharger');
141
+        $t = (!$test_dir ? '' :
142
+                "<input type='hidden' name='test_dir' value='" . spip_htmlspecialchars($test_dir, ENT_QUOTES) . "' />")
143
+            . "<input type='hidden' name='etape' value='chmod' />"
144
+            . "<div style='text-align: right'><input type='submit' value='" . attribut_html($t) . "' /></div>";
145
+
146
+        echo minipres($titre, $res . generer_form_ecrire('install', $t));
147
+    } else {
148
+        $deja = (_FILE_CONNECT and analyse_fichier_connection(_FILE_CONNECT));
149
+        if (!$deja) {
150
+            redirige_url_ecrire('install', 'etape=1&chmod=' . $chmod);
151
+        } else {
152
+            redirige_url_ecrire();
153
+        }
154
+    }
155 155
 }
Please login to merge, or discard this patch.
ecrire/req/sqlite_generique.php 3 patches
Doc Comments   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -1528,8 +1528,8 @@  discard block
 block discarded – undo
1528 1528
  * @param string|array $select Champs sélectionnés
1529 1529
  * @param string|array $from Tables sélectionnées
1530 1530
  * @param string|array $where Contraintes
1531
- * @param string|array $groupby Regroupements
1532
- * @param string|array $orderby Tris
1531
+ * @param string $groupby Regroupements
1532
+ * @param string $orderby Tris
1533 1533
  * @param string $limit Limites de résultats
1534 1534
  * @param string|array $having Contraintes posts sélections
1535 1535
  * @param string $serveur Nom de la connexion
@@ -1687,7 +1687,7 @@  discard block
 block discarded – undo
1687 1687
  * @param string $nom_table Nom de la table SQL
1688 1688
  * @param string $serveur Nom de la connexion
1689 1689
  * @param bool $requeter Exécuter la requête, sinon la retourner
1690
- * @return array|string
1690
+ * @return string
1691 1691
  *     - chaîne vide si pas de description obtenue
1692 1692
  *     - string Texte de la requête si demandé
1693 1693
  *     - array description de la table sinon
@@ -2194,7 +2194,7 @@  discard block
 block discarded – undo
2194 2194
  * 4) Renommer la table B en A
2195 2195
  * 5) Remettre les index (qui sont supprimés avec la table A)
2196 2196
  *
2197
- * @param string|array $table
2197
+ * @param string $table
2198 2198
  *     - string : Nom de la table table,
2199 2199
  *     - array : couple (nom de la table => nom futur)
2200 2200
  * @param string|array $colonne
@@ -2597,7 +2597,7 @@  discard block
 block discarded – undo
2597 2597
  * stocke le resultat pour ne pas faire
2598 2598
  * de requetes showtable intempestives
2599 2599
  *
2600
- * @param  $table
2600
+ * @param  string $table
2601 2601
  * @param  $couples
2602 2602
  * @param string $desc
2603 2603
  * @param string $serveur
@@ -2789,7 +2789,7 @@  discard block
 block discarded – undo
2789 2789
 	 * Constructeur
2790 2790
 	 *
2791 2791
 	 * @param string $serveur
2792
-	 * @return bool
2792
+	 * @return false|null
2793 2793
 	 */
2794 2794
 	public function __construct($serveur = '') {
2795 2795
 		_sqlite_init();
Please login to merge, or discard this patch.
Spacing   +93 added lines, -93 removed lines patch added patch discarded remove patch
@@ -64,27 +64,27 @@  discard block
 block discarded – undo
64 64
 	// determiner le dossier de la base : $addr ou _DIR_DB
65 65
 	$f = _DIR_DB;
66 66
 	if ($addr and strpos($addr, '/') !== false) {
67
-		$f = rtrim($addr, '/') . '/';
67
+		$f = rtrim($addr, '/').'/';
68 68
 	}
69 69
 
70 70
 	// un nom de base demande et impossible d'obtenir la base, on s'en va :
71 71
 	// il faut que la base existe ou que le repertoire parent soit writable
72
-	if ($db and !is_file($f .= $db . '.sqlite') and !is_writable(dirname($f))) {
73
-		spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.' . _LOG_HS);
72
+	if ($db and !is_file($f .= $db.'.sqlite') and !is_writable(dirname($f))) {
73
+		spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.'._LOG_HS);
74 74
 
75 75
 		return false;
76 76
 	}
77 77
 
78 78
 	// charger les modules sqlite au besoin
79 79
 	if (!_sqlite_charger_version($sqlite_version)) {
80
-		spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.' . _LOG_HS);
80
+		spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.'._LOG_HS);
81 81
 
82 82
 		return false;
83 83
 	}
84 84
 
85 85
 	// chargement des constantes
86 86
 	// il ne faut pas definir les constantes avant d'avoir charge les modules sqlite
87
-	$define = "spip_sqlite" . $sqlite_version . "_constantes";
87
+	$define = "spip_sqlite".$sqlite_version."_constantes";
88 88
 	$define();
89 89
 
90 90
 	$ok = false;
@@ -92,8 +92,8 @@  discard block
 block discarded – undo
92 92
 		// si pas de db ->
93 93
 		// base temporaire tant qu'on ne connait pas son vrai nom
94 94
 		// pour tester la connexion
95
-		$db = "_sqlite" . $sqlite_version . "_install";
96
-		$tmp = _DIR_DB . $db . ".sqlite";
95
+		$db = "_sqlite".$sqlite_version."_install";
96
+		$tmp = _DIR_DB.$db.".sqlite";
97 97
 		$ok = $link = new \PDO("sqlite:$tmp");
98 98
 	} else {
99 99
 		// Ouvrir (eventuellement creer la base)
@@ -102,7 +102,7 @@  discard block
 block discarded – undo
102 102
 
103 103
 	if (!$ok) {
104 104
 		$e = _sqlite_last_error_from_link($link);
105
-		spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.' . _LOG_HS);
105
+		spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.'._LOG_HS);
106 106
 
107 107
 		return false;
108 108
 	}
@@ -188,7 +188,7 @@  discard block
 block discarded – undo
188 188
 		$table = $regs[3];
189 189
 		$suite = $regs[4];
190 190
 	} else {
191
-		spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.' . _LOG_ERREUR);
191
+		spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.'._LOG_ERREUR);
192 192
 
193 193
 		return false;
194 194
 	}
@@ -205,7 +205,7 @@  discard block
 block discarded – undo
205 205
 	$i = 0;
206 206
 	$ouverte = false;
207 207
 	while ($do = array_shift($todo)) {
208
-		$todo2[$i] = isset($todo2[$i]) ? $todo2[$i] . "," . $do : $do;
208
+		$todo2[$i] = isset($todo2[$i]) ? $todo2[$i].",".$do : $do;
209 209
 		$o = (false !== strpos($do, "("));
210 210
 		$f = (false !== strpos($do, ")"));
211 211
 		if ($o and !$f) {
@@ -229,7 +229,7 @@  discard block
 block discarded – undo
229 229
 			. ')\s*([^\s]*)\s*(.*)?/i', $do, $matches)
230 230
 		) {
231 231
 			spip_log("SQLite : Probleme de ALTER TABLE, utilisation non reconnue dans : $do \n(requete d'origine : $query)",
232
-				'sqlite.' . _LOG_ERREUR);
232
+				'sqlite.'._LOG_ERREUR);
233 233
 
234 234
 			return false;
235 235
 		}
@@ -316,10 +316,10 @@  discard block
 block discarded – undo
316 316
 
317 317
 			// pas geres en sqlite2
318 318
 			case 'RENAME':
319
-				$do = "RENAME TO" . substr($do, 6);
319
+				$do = "RENAME TO".substr($do, 6);
320 320
 			case 'RENAME TO':
321 321
 				if (!spip_sqlite::executer_requete("$debut $do", $serveur)) {
322
-					spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.' . _LOG_ERREUR);
322
+					spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.'._LOG_ERREUR);
323 323
 
324 324
 					return false;
325 325
 				}
@@ -360,7 +360,7 @@  discard block
 block discarded – undo
360 360
 						$colonnes = substr($colonne_origine, 1, -1);
361 361
 						if (false !== strpos(",", $colonnes)) {
362 362
 							spip_log("SQLite : Erreur, impossible de creer un index sur plusieurs colonnes"
363
-								. " sans qu'il ait de nom ($table, ($colonnes))", 'sqlite.' . _LOG_ERREUR);
363
+								. " sans qu'il ait de nom ($table, ($colonnes))", 'sqlite.'._LOG_ERREUR);
364 364
 							break;
365 365
 						} else {
366 366
 							$nom_index = $colonnes;
@@ -375,12 +375,12 @@  discard block
 block discarded – undo
375 375
 
376 376
 			// pas geres en sqlite2
377 377
 			case 'ADD COLUMN':
378
-				$do = "ADD" . substr($do, 10);
378
+				$do = "ADD".substr($do, 10);
379 379
 			case 'ADD':
380 380
 			default:
381 381
 				if (!preg_match(',primary\s+key,i', $do)) {
382 382
 					if (!spip_sqlite::executer_requete("$debut $do", $serveur)) {
383
-						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR);
383
+						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR);
384 384
 
385 385
 						return false;
386 386
 					}
@@ -401,7 +401,7 @@  discard block
 block discarded – undo
401 401
 					}
402 402
 					$opts['field'] = array($colonne_ajoutee => $def);
403 403
 					if (!_sqlite_modifier_table($table, array($colonne_ajoutee), $opts, $serveur)) {
404
-						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR);
404
+						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR);
405 405
 
406 406
 						return false;
407 407
 					}
@@ -409,10 +409,10 @@  discard block
 block discarded – undo
409 409
 				break;
410 410
 		}
411 411
 		// tout est bon, ouf !
412
-		spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.' . _LOG_INFO);
412
+		spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.'._LOG_INFO);
413 413
 	}
414 414
 
415
-	spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.' . _LOG_INFO);
415
+	spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.'._LOG_INFO);
416 416
 
417 417
 	return true;
418 418
 }
@@ -481,9 +481,9 @@  discard block
 block discarded – undo
481 481
  * @return bool true si la base est créee.
482 482
  **/
483 483
 function spip_sqlite_create_base($nom, $serveur = '', $option = true) {
484
-	$f = $nom . '.sqlite';
484
+	$f = $nom.'.sqlite';
485 485
 	if (strpos($nom, "/") === false) {
486
-		$f = _DIR_DB . $f;
486
+		$f = _DIR_DB.$f;
487 487
 	}
488 488
 
489 489
 	$ok = new \PDO("sqlite:$f");
@@ -522,12 +522,12 @@  discard block
 block discarded – undo
522 522
 	// vue deja presente
523 523
 	if (sql_showtable($nom, false, $serveur)) {
524 524
 		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)",
525
-			'sqlite.' . _LOG_ERREUR);
525
+			'sqlite.'._LOG_ERREUR);
526 526
 
527 527
 		return false;
528 528
 	}
529 529
 
530
-	$query = "CREATE VIEW $nom AS " . $query_select;
530
+	$query = "CREATE VIEW $nom AS ".$query_select;
531 531
 
532 532
 	return spip_sqlite_query($query, $serveur, $requeter);
533 533
 }
@@ -552,15 +552,15 @@  discard block
 block discarded – undo
552 552
  */
553 553
 function spip_sqlite_create_index($nom, $table, $champs, $unique = '', $serveur = '', $requeter = true) {
554 554
 	if (!($nom or $table or $champs)) {
555
-		spip_log("Champ manquant pour creer un index sqlite ($nom, $table, (" . join(',', $champs) . "))",
556
-			'sqlite.' . _LOG_ERREUR);
555
+		spip_log("Champ manquant pour creer un index sqlite ($nom, $table, (".join(',', $champs)."))",
556
+			'sqlite.'._LOG_ERREUR);
557 557
 
558 558
 		return false;
559 559
 	}
560 560
 
561 561
 	// SQLite ne differentie pas noms des index en fonction des tables
562 562
 	// il faut donc creer des noms uniques d'index pour une base sqlite
563
-	$nom = $table . '_' . $nom;
563
+	$nom = $table.'_'.$nom;
564 564
 	// enlever d'eventuelles parentheses deja presentes sur champs
565 565
 	if (!is_array($champs)) {
566 566
 		if ($champs[0] == "(") {
@@ -582,12 +582,12 @@  discard block
 block discarded – undo
582 582
 	} else {
583 583
 		/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
584 584
 		$a = spip_sqlite_showtable($table, $serveur);
585
-		if (isset($a['key']['KEY ' . $nom])) {
585
+		if (isset($a['key']['KEY '.$nom])) {
586 586
 			return true;
587 587
 		}
588 588
 	}
589 589
 
590
-	$query = "CREATE " . ($unique ? "UNIQUE " : "") . "INDEX$ifnotexists $nom ON $table (" . join(',', $champs) . ")";
590
+	$query = "CREATE ".($unique ? "UNIQUE " : "")."INDEX$ifnotexists $nom ON $table (".join(',', $champs).")";
591 591
 	$res = spip_sqlite_query($query, $serveur, $requeter);
592 592
 	if (!$requeter) {
593 593
 		return $res;
@@ -663,7 +663,7 @@  discard block
 block discarded – undo
663 663
 	$serveur = '',
664 664
 	$requeter = true
665 665
 ) {
666
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
666
+	$c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby)));
667 667
 	$r = spip_sqlite_select("COUNT($c)", $from, $where, '', '', '',
668 668
 		$having, $serveur, $requeter);
669 669
 	if ((is_resource($r) or is_object($r)) && $requeter) { // ressource : sqlite2, object : sqlite3
@@ -761,14 +761,14 @@  discard block
 block discarded – undo
761 761
  */
762 762
 function spip_sqlite_drop_index($nom, $table, $serveur = '', $requeter = true) {
763 763
 	if (!($nom or $table)) {
764
-		spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.' . _LOG_ERREUR);
764
+		spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.'._LOG_ERREUR);
765 765
 
766 766
 		return false;
767 767
 	}
768 768
 
769 769
 	// SQLite ne differentie pas noms des index en fonction des tables
770 770
 	// il faut donc creer des noms uniques d'index pour une base sqlite
771
-	$index = $table . '_' . $nom;
771
+	$index = $table.'_'.$nom;
772 772
 	$exist = " IF EXISTS";
773 773
 
774 774
 	$query = "DROP INDEX$exist $index";
@@ -800,7 +800,7 @@  discard block
 block discarded – undo
800 800
 	if ($s) {
801 801
 		$trace = debug_backtrace();
802 802
 		if ($trace[0]['function'] != "spip_sqlite_error") {
803
-			spip_log("$s - $query - " . sql_error_backtrace(), 'sqlite.' . _LOG_ERREUR);
803
+			spip_log("$s - $query - ".sql_error_backtrace(), 'sqlite.'._LOG_ERREUR);
804 804
 		}
805 805
 	}
806 806
 
@@ -847,14 +847,14 @@  discard block
 block discarded – undo
847 847
 		$t = $link->errorInfo();
848 848
 		$s = ltrim($t[0], '0'); // 00000 si pas d'erreur
849 849
 		if ($s) {
850
-			$s .= ' / ' . $t[1];
850
+			$s .= ' / '.$t[1];
851 851
 		} // ajoute l'erreur du moteur SQLite
852 852
 	} else {
853 853
 		$s = ": aucune ressource sqlite (link)";
854 854
 	}
855 855
 
856 856
 	if ($s) {
857
-		spip_log("Erreur sqlite $s", 'sqlite.' . _LOG_ERREUR);
857
+		spip_log("Erreur sqlite $s", 'sqlite.'._LOG_ERREUR);
858 858
 	}
859 859
 
860 860
 	return $s ? $s : 0;
@@ -878,7 +878,7 @@  discard block
 block discarded – undo
878 878
 	}
879 879
 
880 880
 	$query = spip_sqlite::traduire_requete($query, $serveur);
881
-	$query = 'EXPLAIN ' . $query;
881
+	$query = 'EXPLAIN '.$query;
882 882
 	if (!$requeter) {
883 883
 		return $query;
884 884
 	}
@@ -1038,7 +1038,7 @@  discard block
 block discarded – undo
1038 1038
  **/
1039 1039
 function spip_sqlite_insert($table, $champs, $valeurs, $desc = array(), $serveur = '', $requeter = true) {
1040 1040
 
1041
-	$query = "INSERT INTO $table " . ($champs ? "$champs VALUES $valeurs" : "DEFAULT VALUES");
1041
+	$query = "INSERT INTO $table ".($champs ? "$champs VALUES $valeurs" : "DEFAULT VALUES");
1042 1042
 	if ($r = spip_sqlite_query($query, $serveur, $requeter)) {
1043 1043
 		if (!$requeter) {
1044 1044
 			return $r;
@@ -1094,8 +1094,8 @@  discard block
 block discarded – undo
1094 1094
 
1095 1095
 	$cles = $valeurs = "";
1096 1096
 	if (count($couples)) {
1097
-		$cles = "(" . join(',', array_keys($couples)) . ")";
1098
-		$valeurs = "(" . join(',', $couples) . ")";
1097
+		$cles = "(".join(',', array_keys($couples)).")";
1098
+		$valeurs = "(".join(',', $couples).")";
1099 1099
 	}
1100 1100
 
1101 1101
 	return spip_sqlite_insert($table, $cles, $valeurs, $desc, $serveur, $requeter);
@@ -1155,11 +1155,11 @@  discard block
 block discarded – undo
1155 1155
 
1156 1156
 		$champs = $valeurs = "";
1157 1157
 		if (count($couples)) {
1158
-			$champs = "(" . join(',', array_keys($couples)) . ")";
1159
-			$valeurs = "(" . join(',', $couples) . ")";
1160
-			$query = $query_start . "$champs VALUES $valeurs";
1158
+			$champs = "(".join(',', array_keys($couples)).")";
1159
+			$valeurs = "(".join(',', $couples).")";
1160
+			$query = $query_start."$champs VALUES $valeurs";
1161 1161
 		} else {
1162
-			$query = $query_start . "DEFAULT VALUES";
1162
+			$query = $query_start."DEFAULT VALUES";
1163 1163
 		}
1164 1164
 
1165 1165
 		if ($requeter) {
@@ -1291,7 +1291,7 @@  discard block
 block discarded – undo
1291 1291
  * @return string       Texte de sélection pour la requête
1292 1292
  */
1293 1293
 function spip_sqlite_multi($objet, $lang) {
1294
-	$r = "EXTRAIRE_MULTI(" . $objet . ", '" . $lang . "') AS multi";
1294
+	$r = "EXTRAIRE_MULTI(".$objet.", '".$lang."') AS multi";
1295 1295
 
1296 1296
 	return $r;
1297 1297
 }
@@ -1362,7 +1362,7 @@  discard block
 block discarded – undo
1362 1362
 function spip_sqlite_date_proche($champ, $interval, $unite) {
1363 1363
 	$op = (($interval <= 0) ? '>' : '<');
1364 1364
 
1365
-	return "($champ $op datetime('" . date("Y-m-d H:i:s") . "', '$interval $unite'))";
1365
+	return "($champ $op datetime('".date("Y-m-d H:i:s")."', '$interval $unite'))";
1366 1366
 }
1367 1367
 
1368 1368
 
@@ -1392,7 +1392,7 @@  discard block
 block discarded – undo
1392 1392
 				and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c)
1393 1393
 			) {
1394 1394
 				spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT ''", $serveur);
1395
-				spip_log("ALTER $q", "repair" . _LOG_INFO_IMPORTANTE);
1395
+				spip_log("ALTER $q", "repair"._LOG_INFO_IMPORTANTE);
1396 1396
 			}
1397 1397
 			if (preg_match(",^(INTEGER),i", $d)
1398 1398
 				and stripos($d, "NOT NULL") !== false
@@ -1401,7 +1401,7 @@  discard block
 block discarded – undo
1401 1401
 				and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c)
1402 1402
 			) {
1403 1403
 				spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0'", $serveur);
1404
-				spip_log("ALTER $q", "repair" . _LOG_INFO_IMPORTANTE);
1404
+				spip_log("ALTER $q", "repair"._LOG_INFO_IMPORTANTE);
1405 1405
 			}
1406 1406
 			if (preg_match(",^(datetime),i", $d)
1407 1407
 				and stripos($d, "NOT NULL") !== false
@@ -1410,7 +1410,7 @@  discard block
 block discarded – undo
1410 1410
 				and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c)
1411 1411
 			) {
1412 1412
 				spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0000-00-00 00:00:00'", $serveur);
1413
-				spip_log("ALTER $q", "repair" . _LOG_INFO_IMPORTANTE);
1413
+				spip_log("ALTER $q", "repair"._LOG_INFO_IMPORTANTE);
1414 1414
 			}
1415 1415
 		}
1416 1416
 
@@ -1461,8 +1461,8 @@  discard block
 block discarded – undo
1461 1461
 	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1462 1462
 	$couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
1463 1463
 
1464
-	return spip_sqlite_query("REPLACE INTO $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1465
-			$couples) . ')', $serveur);
1464
+	return spip_sqlite_query("REPLACE INTO $table (".join(',', array_keys($couples)).') VALUES ('.join(',',
1465
+			$couples).')', $serveur);
1466 1466
 }
1467 1467
 
1468 1468
 
@@ -1548,7 +1548,7 @@  discard block
 block discarded – undo
1548 1548
 		. _sqlite_calculer_expression('WHERE', $where)
1549 1549
 		. _sqlite_calculer_expression('GROUP BY', $groupby, ',')
1550 1550
 		. _sqlite_calculer_expression('HAVING', $having)
1551
-		. ($orderby ? ("\nORDER BY " . _sqlite_calculer_order($orderby)) : '')
1551
+		. ($orderby ? ("\nORDER BY "._sqlite_calculer_order($orderby)) : '')
1552 1552
 		. ($limit ? "\nLIMIT $limit" : '');
1553 1553
 
1554 1554
 	// dans un select, on doit renvoyer la requête en cas d'erreur
@@ -1585,10 +1585,10 @@  discard block
 block discarded – undo
1585 1585
 
1586 1586
 	// interdire la creation d'une nouvelle base, 
1587 1587
 	// sauf si on est dans l'installation
1588
-	if (!is_file($f = _DIR_DB . $db . '.sqlite')
1588
+	if (!is_file($f = _DIR_DB.$db.'.sqlite')
1589 1589
 		&& (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)
1590 1590
 	) {
1591
-		spip_log("Il est interdit de creer la base $db", 'sqlite.' . _LOG_HS);
1591
+		spip_log("Il est interdit de creer la base $db", 'sqlite.'._LOG_HS);
1592 1592
 
1593 1593
 		return false;
1594 1594
 	}
@@ -1597,12 +1597,12 @@  discard block
 block discarded – undo
1597 1597
 	// avec les identifiants connus
1598 1598
 	$index = $serveur ? $serveur : 0;
1599 1599
 
1600
-	if ($link = spip_connect_db('', '', '', '', '@selectdb@' . $db, $serveur, '', '')) {
1600
+	if ($link = spip_connect_db('', '', '', '', '@selectdb@'.$db, $serveur, '', '')) {
1601 1601
 		if (($db == $link['db']) && $GLOBALS['connexions'][$index] = $link) {
1602 1602
 			return $db;
1603 1603
 		}
1604 1604
 	} else {
1605
-		spip_log("Impossible de selectionner la base $db", 'sqlite.' . _LOG_HS);
1605
+		spip_log("Impossible de selectionner la base $db", 'sqlite.'._LOG_HS);
1606 1606
 
1607 1607
 		return false;
1608 1608
 	}
@@ -1653,7 +1653,7 @@  discard block
 block discarded – undo
1653 1653
 	$match = str_replace("[[POURCENT]]", "%", $match);
1654 1654
 	$match = "^$match$";
1655 1655
 
1656
-	return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP " . _q($match),
1656
+	return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP "._q($match),
1657 1657
 		$serveur, $requeter);
1658 1658
 }
1659 1659
 
@@ -1743,7 +1743,7 @@  discard block
 block discarded – undo
1743 1743
 				// s'il y a une parenthèse fermante dans la clé
1744 1744
 				// ou dans la définition sans qu'il n'y ait une ouverture avant
1745 1745
 				if (false !== strpos($k, ')') or preg_match('/^[^\(]*\)/', $def)) {
1746
-					$fields[$k_precedent] .= ',' . $k . ' ' . $def;
1746
+					$fields[$k_precedent] .= ','.$k.' '.$def;
1747 1747
 					continue;
1748 1748
 				}
1749 1749
 
@@ -1778,13 +1778,13 @@  discard block
 block discarded – undo
1778 1778
 				. 'ORDER BY substr(type,2,1), name';
1779 1779
 			$a = spip_sqlite_query($query, $serveur, $requeter);
1780 1780
 			while ($r = spip_sqlite_fetch($a, null, $serveur)) {
1781
-				$key = str_replace($nom_table . '_', '', $r['name']); // enlever le nom de la table ajoute a l'index
1781
+				$key = str_replace($nom_table.'_', '', $r['name']); // enlever le nom de la table ajoute a l'index
1782 1782
 				$keytype = "KEY";
1783 1783
 				if (strpos($r['sql'], "UNIQUE INDEX") !== false) {
1784 1784
 					$keytype = "UNIQUE KEY";
1785 1785
 				}
1786 1786
 				$colonnes = preg_replace(',.*\((.*)\).*,', '$1', $r['sql']);
1787
-				$keys[$keytype . ' ' . $key] = $colonnes;
1787
+				$keys[$keytype.' '.$key] = $colonnes;
1788 1788
 			}
1789 1789
 		}
1790 1790
 
@@ -1833,7 +1833,7 @@  discard block
 block discarded – undo
1833 1833
 
1834 1834
 	$set = array();
1835 1835
 	foreach ($champs as $champ => $val) {
1836
-		$set[] = $champ . "=$val";
1836
+		$set[] = $champ."=$val";
1837 1837
 	}
1838 1838
 	if (!empty($set)) {
1839 1839
 		return spip_sqlite_query(
@@ -1887,7 +1887,7 @@  discard block
 block discarded – undo
1887 1887
 
1888 1888
 	$set = array();
1889 1889
 	foreach ($champs as $champ => $val) {
1890
-		$set[] = $champ . '=' . _sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : '');
1890
+		$set[] = $champ.'='._sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : '');
1891 1891
 	}
1892 1892
 
1893 1893
 	return spip_sqlite_query(
@@ -1913,7 +1913,7 @@  discard block
 block discarded – undo
1913 1913
  */
1914 1914
 function _sqlite_init() {
1915 1915
 	if (!defined('_DIR_DB')) {
1916
-		define('_DIR_DB', _DIR_ETC . 'bases/');
1916
+		define('_DIR_DB', _DIR_ETC.'bases/');
1917 1917
 	}
1918 1918
 	if (!defined('_SQLITE_CHMOD')) {
1919 1919
 		define('_SQLITE_CHMOD', _SPIP_CHMOD);
@@ -2016,9 +2016,9 @@  discard block
 block discarded – undo
2016 2016
 	}
2017 2017
 
2018 2018
 	// echapper les ' en ''
2019
-	spip_log("Pas de methode ->quote pour echapper", "sqlite." . _LOG_INFO_IMPORTANTE);
2019
+	spip_log("Pas de methode ->quote pour echapper", "sqlite."._LOG_INFO_IMPORTANTE);
2020 2020
 
2021
-	return ("'" . str_replace("'", "''", $v) . "'");
2021
+	return ("'".str_replace("'", "''", $v)."'");
2022 2022
 }
2023 2023
 
2024 2024
 
@@ -2041,12 +2041,12 @@  discard block
 block discarded – undo
2041 2041
 	$exp = "\n$expression ";
2042 2042
 
2043 2043
 	if (!is_array($v)) {
2044
-		return $exp . $v;
2044
+		return $exp.$v;
2045 2045
 	} else {
2046 2046
 		if (strtoupper($join) === 'AND') {
2047
-			return $exp . join("\n\t$join ", array_map('_sqlite_calculer_where', $v));
2047
+			return $exp.join("\n\t$join ", array_map('_sqlite_calculer_where', $v));
2048 2048
 		} else {
2049
-			return $exp . join($join, $v);
2049
+			return $exp.join($join, $v);
2050 2050
 		}
2051 2051
 	}
2052 2052
 }
@@ -2080,17 +2080,17 @@  discard block
 block discarded – undo
2080 2080
 		if (substr($k, -1) == '@') {
2081 2081
 			// c'est une jointure qui se refere au from precedent
2082 2082
 			// pas de virgule
2083
-			$res .= '  ' . $v;
2083
+			$res .= '  '.$v;
2084 2084
 		} else {
2085 2085
 			if (!is_numeric($k)) {
2086 2086
 				$p = strpos($v, " ");
2087 2087
 				if ($p) {
2088
-					$v = substr($v, 0, $p) . " AS '$k'" . substr($v, $p);
2088
+					$v = substr($v, 0, $p)." AS '$k'".substr($v, $p);
2089 2089
 				} else {
2090 2090
 					$v .= " AS '$k'";
2091 2091
 				}
2092 2092
 			}
2093
-			$res .= ', ' . $v;
2093
+			$res .= ', '.$v;
2094 2094
 		}
2095 2095
 	}
2096 2096
 
@@ -2228,13 +2228,13 @@  discard block
 block discarded – undo
2228 2228
 
2229 2229
 	$def_origine = sql_showtable($table_origine, false, $serveur);
2230 2230
 	if (!$def_origine or !isset($def_origine['field'])) {
2231
-		spip_log("Alter table impossible sur $table_origine : table non trouvee", 'sqlite' . _LOG_ERREUR);
2231
+		spip_log("Alter table impossible sur $table_origine : table non trouvee", 'sqlite'._LOG_ERREUR);
2232 2232
 
2233 2233
 		return false;
2234 2234
 	}
2235 2235
 
2236 2236
 
2237
-	$table_tmp = $table_origine . '_tmp';
2237
+	$table_tmp = $table_origine.'_tmp';
2238 2238
 
2239 2239
 	// 1) creer une table temporaire avec les modifications	
2240 2240
 	// - DROP : suppression de la colonne
@@ -2320,7 +2320,7 @@  discard block
 block discarded – undo
2320 2320
 		} else {
2321 2321
 			// enlever KEY
2322 2322
 			$k = substr($k, 4);
2323
-			$queries[] = "CREATE INDEX $table_destination" . "_$k ON $table_destination ($v)";
2323
+			$queries[] = "CREATE INDEX $table_destination"."_$k ON $table_destination ($v)";
2324 2324
 		}
2325 2325
 	}
2326 2326
 
@@ -2331,7 +2331,7 @@  discard block
 block discarded – undo
2331 2331
 		foreach ($queries as $q) {
2332 2332
 			if (!spip_sqlite::executer_requete($q, $serveur)) {
2333 2333
 				spip_log("SQLite : ALTER TABLE table :"
2334
-					. " Erreur a l'execution de la requete : $q", 'sqlite.' . _LOG_ERREUR);
2334
+					. " Erreur a l'execution de la requete : $q", 'sqlite.'._LOG_ERREUR);
2335 2335
 				spip_sqlite::annuler_transaction($serveur);
2336 2336
 
2337 2337
 				return false;
@@ -2420,27 +2420,27 @@  discard block
 block discarded – undo
2420 2420
 	$enum = "(\s*\([^\)]*\))?";
2421 2421
 
2422 2422
 	$remplace = array(
2423
-		'/enum' . $enum . '/is' => 'VARCHAR(255)',
2423
+		'/enum'.$enum.'/is' => 'VARCHAR(255)',
2424 2424
 		'/COLLATE \w+_bin/is' => 'COLLATE BINARY',
2425 2425
 		'/COLLATE \w+_ci/is' => 'COLLATE NOCASE',
2426 2426
 		'/auto_increment/is' => '',
2427 2427
 		'/current_timestamp\(\)/is' => 'CURRENT_TIMESTAMP', // Fix export depuis mariaDB #4374
2428 2428
 		'/(timestamp .* )ON .*$/is' => '\\1',
2429 2429
 		'/character set \w+/is' => '',
2430
-		'/((big|small|medium|tiny)?int(eger)?)' . $num . '\s*unsigned/is' => '\\1 UNSIGNED',
2430
+		'/((big|small|medium|tiny)?int(eger)?)'.$num.'\s*unsigned/is' => '\\1 UNSIGNED',
2431 2431
 		'/(text\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
2432
-		'/((char|varchar)' . $num . '\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
2432
+		'/((char|varchar)'.$num.'\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
2433 2433
 		'/(datetime\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00 00:00:00'",
2434 2434
 		'/(date\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00'",
2435 2435
 	);
2436 2436
 
2437 2437
 	// pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY
2438 2438
 	$remplace_autocinc = array(
2439
-		'/(big|small|medium|tiny)?int(eger)?' . $num . '/is' => 'INTEGER'
2439
+		'/(big|small|medium|tiny)?int(eger)?'.$num.'/is' => 'INTEGER'
2440 2440
 	);
2441 2441
 	// pour les int non autoincrement, il faut un DEFAULT
2442 2442
 	$remplace_nonautocinc = array(
2443
-		'/((big|small|medium|tiny)?int(eger)?' . $num . '\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0",
2443
+		'/((big|small|medium|tiny)?int(eger)?'.$num.'\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0",
2444 2444
 	);
2445 2445
 
2446 2446
 	if (is_string($query)) {
@@ -2482,7 +2482,7 @@  discard block
 block discarded – undo
2482 2482
 		return str_ireplace("BINARY", "COLLATE BINARY", $champ);
2483 2483
 	}
2484 2484
 	if (preg_match(",^(char|varchar|(long|small|medium|tiny)?text),i", $champ)) {
2485
-		return $champ . " COLLATE NOCASE";
2485
+		return $champ." COLLATE NOCASE";
2486 2486
 	}
2487 2487
 
2488 2488
 	return $champ;
@@ -2569,7 +2569,7 @@  discard block
 block discarded – undo
2569 2569
 		} else {
2570 2570
 			/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
2571 2571
 			$a = spip_sqlite_showtable($nom, $serveur);
2572
-			if (isset($a['key']['KEY ' . $nom])) {
2572
+			if (isset($a['key']['KEY '.$nom])) {
2573 2573
 				return true;
2574 2574
 			}
2575 2575
 		}
@@ -2577,7 +2577,7 @@  discard block
 block discarded – undo
2577 2577
 	}
2578 2578
 
2579 2579
 	$temporary = $temporary ? ' TEMPORARY' : '';
2580
-	$q = "CREATE$temporary TABLE$ifnotexists $nom ($query" . ($keys ? ",$keys" : '') . ")\n";
2580
+	$q = "CREATE$temporary TABLE$ifnotexists $nom ($query".($keys ? ",$keys" : '').")\n";
2581 2581
 
2582 2582
 	return $q;
2583 2583
 }
@@ -2791,7 +2791,7 @@  discard block
 block discarded – undo
2791 2791
 		$this->serveur = strtolower($serveur);
2792 2792
 
2793 2793
 		if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)) {
2794
-			spip_log("Aucune connexion sqlite (link)", 'sqlite.' . _LOG_ERREUR);
2794
+			spip_log("Aucune connexion sqlite (link)", 'sqlite.'._LOG_ERREUR);
2795 2795
 
2796 2796
 			return false;
2797 2797
 		}
@@ -2837,7 +2837,7 @@  discard block
 block discarded – undo
2837 2837
 			try {
2838 2838
 				$r = $this->link->query($query);
2839 2839
 			} catch (\PDOException $e) {
2840
-				spip_log("PDOException: " . $e->getMessage(), 'sqlite.' . _LOG_DEBUG);
2840
+				spip_log("PDOException: ".$e->getMessage(), 'sqlite.'._LOG_DEBUG);
2841 2841
 				$r = false;
2842 2842
 			}
2843 2843
 			// sauvegarde de la requete (elle y est deja dans $r->queryString)
@@ -2858,11 +2858,11 @@  discard block
 block discarded – undo
2858 2858
 
2859 2859
 			// loger les warnings/erreurs eventuels de sqlite remontant dans PHP
2860 2860
 			if ($e and $e instanceof \PDOException) {
2861
-				$err = strip_tags($e->getMessage()) . " in " . $e->getFile() . " line " . $e->getLine();
2862
-				spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR);
2861
+				$err = strip_tags($e->getMessage())." in ".$e->getFile()." line ".$e->getLine();
2862
+				spip_log("$err - ".$query, 'sqlite.'._LOG_ERREUR);
2863 2863
 			} elseif ($err = (function_exists('error_get_last') ? error_get_last() : "") and $err != $last_error) {
2864
-				$err = strip_tags($err['message']) . " in " . $err['file'] . " line " . $err['line'];
2865
-				spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR);
2864
+				$err = strip_tags($err['message'])." in ".$err['file']." line ".$err['line'];
2865
+				spip_log("$err - ".$query, 'sqlite.'._LOG_ERREUR);
2866 2866
 			} else {
2867 2867
 				$err = "";
2868 2868
 			}
@@ -2941,15 +2941,15 @@  discard block
 block discarded – undo
2941 2941
 		// Correction Create Database
2942 2942
 		// Create Database -> requete ignoree
2943 2943
 		if (strpos($this->query, 'CREATE DATABASE') === 0) {
2944
-			spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.' . _LOG_AVERTISSEMENT);
2944
+			spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.'._LOG_AVERTISSEMENT);
2945 2945
 			$this->query = "SELECT 1";
2946 2946
 		}
2947 2947
 
2948 2948
 		// Correction Insert Ignore
2949 2949
 		// INSERT IGNORE -> insert (tout court et pas 'insert or replace')
2950 2950
 		if (strpos($this->query, 'INSERT IGNORE') === 0) {
2951
-			spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.' . _LOG_DEBUG);
2952
-			$this->query = 'INSERT ' . substr($this->query, '13');
2951
+			spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.'._LOG_DEBUG);
2952
+			$this->query = 'INSERT '.substr($this->query, '13');
2953 2953
 		}
2954 2954
 
2955 2955
 		// Correction des dates avec INTERVAL
@@ -2974,7 +2974,7 @@  discard block
 block discarded – undo
2974 2974
 		// problematique car la jointure ne se fait pas du coup.
2975 2975
 		if (($this->sqlite_version == 2) && (strpos($this->query, "USING") !== false)) {
2976 2976
 			spip_log("'USING (champ)' n'est pas reconnu en SQLite 2. Utilisez 'ON table1.champ = table2.champ'",
2977
-				'sqlite.' . _LOG_ERREUR);
2977
+				'sqlite.'._LOG_ERREUR);
2978 2978
 			$this->query = preg_replace('/USING\s*\([^\)]*\)/', '', $this->query);
2979 2979
 		}
2980 2980
 
@@ -2994,8 +2994,8 @@  discard block
 block discarded – undo
2994 2994
 		} else {
2995 2995
 			$suite = '';
2996 2996
 		}
2997
-		$pref = ($this->prefixe) ? $this->prefixe . "_" : "";
2998
-		$this->query = preg_replace('/([,\s])spip_/S', '\1' . $pref, $this->query) . $suite;
2997
+		$pref = ($this->prefixe) ? $this->prefixe."_" : "";
2998
+		$this->query = preg_replace('/([,\s])spip_/S', '\1'.$pref, $this->query).$suite;
2999 2999
 
3000 3000
 		// Correction zero AS x
3001 3001
 		// pg n'aime pas 0+x AS alias, sqlite, dans le meme style, 
Please login to merge, or discard this patch.
Indentation   +1908 added lines, -1908 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
  */
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 // TODO: get/set_caracteres ?
@@ -42,91 +42,91 @@  discard block
 block discarded – undo
42 42
  * @return array|bool
43 43
  */
44 44
 function req_sqlite_dist($addr, $port, $login, $pass, $db = '', $prefixe = '', $sqlite_version = '') {
45
-	static $last_connect = array();
46
-
47
-	// si provient de selectdb
48
-	// un code pour etre sur que l'on vient de select_db()
49
-	if (strpos($db, $code = '@selectdb@') !== false) {
50
-		foreach (array('addr', 'port', 'login', 'pass', 'prefixe') as $a) {
51
-			$$a = $last_connect[$a];
52
-		}
53
-		$db = str_replace($code, '', $db);
54
-	}
55
-
56
-	/*
45
+    static $last_connect = array();
46
+
47
+    // si provient de selectdb
48
+    // un code pour etre sur que l'on vient de select_db()
49
+    if (strpos($db, $code = '@selectdb@') !== false) {
50
+        foreach (array('addr', 'port', 'login', 'pass', 'prefixe') as $a) {
51
+            $$a = $last_connect[$a];
52
+        }
53
+        $db = str_replace($code, '', $db);
54
+    }
55
+
56
+    /*
57 57
 	 * En sqlite, seule l'adresse du fichier est importante.
58 58
 	 * Ce sera $db le nom,
59 59
 	 * le path est $addr
60 60
 	 * (_DIR_DB si $addr est vide)
61 61
 	 */
62
-	_sqlite_init();
63
-
64
-	// determiner le dossier de la base : $addr ou _DIR_DB
65
-	$f = _DIR_DB;
66
-	if ($addr and strpos($addr, '/') !== false) {
67
-		$f = rtrim($addr, '/') . '/';
68
-	}
69
-
70
-	// un nom de base demande et impossible d'obtenir la base, on s'en va :
71
-	// il faut que la base existe ou que le repertoire parent soit writable
72
-	if ($db and !is_file($f .= $db . '.sqlite') and !is_writable(dirname($f))) {
73
-		spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.' . _LOG_HS);
74
-
75
-		return false;
76
-	}
77
-
78
-	// charger les modules sqlite au besoin
79
-	if (!_sqlite_charger_version($sqlite_version)) {
80
-		spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.' . _LOG_HS);
81
-
82
-		return false;
83
-	}
84
-
85
-	// chargement des constantes
86
-	// il ne faut pas definir les constantes avant d'avoir charge les modules sqlite
87
-	$define = "spip_sqlite" . $sqlite_version . "_constantes";
88
-	$define();
89
-
90
-	$ok = false;
91
-	if (!$db) {
92
-		// si pas de db ->
93
-		// base temporaire tant qu'on ne connait pas son vrai nom
94
-		// pour tester la connexion
95
-		$db = "_sqlite" . $sqlite_version . "_install";
96
-		$tmp = _DIR_DB . $db . ".sqlite";
97
-		$ok = $link = new \PDO("sqlite:$tmp");
98
-	} else {
99
-		// Ouvrir (eventuellement creer la base)
100
-		$ok = $link = new \PDO("sqlite:$f");
101
-	}
102
-
103
-	if (!$ok) {
104
-		$e = _sqlite_last_error_from_link($link);
105
-		spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.' . _LOG_HS);
106
-
107
-		return false;
108
-	}
109
-
110
-	if ($link) {
111
-		$last_connect = array(
112
-			'addr' => $addr,
113
-			'port' => $port,
114
-			'login' => $login,
115
-			'pass' => $pass,
116
-			'db' => $db,
117
-			'prefixe' => $prefixe,
118
-		);
119
-		// etre sur qu'on definit bien les fonctions a chaque nouvelle connexion
120
-		include_spip('req/sqlite_fonctions');
121
-		_sqlite_init_functions($link);
122
-	}
123
-
124
-	return array(
125
-		'db' => $db,
126
-		'prefixe' => $prefixe ? $prefixe : $db,
127
-		'link' => $link,
128
-		'total_requetes' => 0,
129
-	);
62
+    _sqlite_init();
63
+
64
+    // determiner le dossier de la base : $addr ou _DIR_DB
65
+    $f = _DIR_DB;
66
+    if ($addr and strpos($addr, '/') !== false) {
67
+        $f = rtrim($addr, '/') . '/';
68
+    }
69
+
70
+    // un nom de base demande et impossible d'obtenir la base, on s'en va :
71
+    // il faut que la base existe ou que le repertoire parent soit writable
72
+    if ($db and !is_file($f .= $db . '.sqlite') and !is_writable(dirname($f))) {
73
+        spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.' . _LOG_HS);
74
+
75
+        return false;
76
+    }
77
+
78
+    // charger les modules sqlite au besoin
79
+    if (!_sqlite_charger_version($sqlite_version)) {
80
+        spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.' . _LOG_HS);
81
+
82
+        return false;
83
+    }
84
+
85
+    // chargement des constantes
86
+    // il ne faut pas definir les constantes avant d'avoir charge les modules sqlite
87
+    $define = "spip_sqlite" . $sqlite_version . "_constantes";
88
+    $define();
89
+
90
+    $ok = false;
91
+    if (!$db) {
92
+        // si pas de db ->
93
+        // base temporaire tant qu'on ne connait pas son vrai nom
94
+        // pour tester la connexion
95
+        $db = "_sqlite" . $sqlite_version . "_install";
96
+        $tmp = _DIR_DB . $db . ".sqlite";
97
+        $ok = $link = new \PDO("sqlite:$tmp");
98
+    } else {
99
+        // Ouvrir (eventuellement creer la base)
100
+        $ok = $link = new \PDO("sqlite:$f");
101
+    }
102
+
103
+    if (!$ok) {
104
+        $e = _sqlite_last_error_from_link($link);
105
+        spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.' . _LOG_HS);
106
+
107
+        return false;
108
+    }
109
+
110
+    if ($link) {
111
+        $last_connect = array(
112
+            'addr' => $addr,
113
+            'port' => $port,
114
+            'login' => $login,
115
+            'pass' => $pass,
116
+            'db' => $db,
117
+            'prefixe' => $prefixe,
118
+        );
119
+        // etre sur qu'on definit bien les fonctions a chaque nouvelle connexion
120
+        include_spip('req/sqlite_fonctions');
121
+        _sqlite_init_functions($link);
122
+    }
123
+
124
+    return array(
125
+        'db' => $db,
126
+        'prefixe' => $prefixe ? $prefixe : $db,
127
+        'link' => $link,
128
+        'total_requetes' => 0,
129
+    );
130 130
 }
131 131
 
132 132
 
@@ -145,14 +145,14 @@  discard block
 block discarded – undo
145 145
  *    Resultat de la requete
146 146
  */
147 147
 function spip_sqlite_query($query, $serveur = '', $requeter = true) {
148
-	#spip_log("spip_sqlite_query() > $query",'sqlite.'._LOG_DEBUG);
149
-	#_sqlite_init(); // fait la premiere fois dans spip_sqlite
150
-	$query = spip_sqlite::traduire_requete($query, $serveur);
151
-	if (!$requeter) {
152
-		return $query;
153
-	}
148
+    #spip_log("spip_sqlite_query() > $query",'sqlite.'._LOG_DEBUG);
149
+    #_sqlite_init(); // fait la premiere fois dans spip_sqlite
150
+    $query = spip_sqlite::traduire_requete($query, $serveur);
151
+    if (!$requeter) {
152
+        return $query;
153
+    }
154 154
 
155
-	return spip_sqlite::executer_requete($query, $serveur);
155
+    return spip_sqlite::executer_requete($query, $serveur);
156 156
 }
157 157
 
158 158
 
@@ -169,11 +169,11 @@  discard block
 block discarded – undo
169 169
  */
170 170
 function spip_sqlite_alter($query, $serveur = '', $requeter = true) {
171 171
 
172
-	$query = spip_sqlite_query("ALTER $query", $serveur, false);
173
-	// traduire la requete pour recuperer les bons noms de table
174
-	$query = spip_sqlite::traduire_requete($query, $serveur);
172
+    $query = spip_sqlite_query("ALTER $query", $serveur, false);
173
+    // traduire la requete pour recuperer les bons noms de table
174
+    $query = spip_sqlite::traduire_requete($query, $serveur);
175 175
 
176
-	/*
176
+    /*
177 177
 		 * la il faut faire les transformations
178 178
 		 * si ALTER TABLE x (DROP|CHANGE) y
179 179
 		 *
@@ -182,239 +182,239 @@  discard block
 block discarded – undo
182 182
 		 * 3) faire chaque requete independemment
183 183
 		 */
184 184
 
185
-	// 1
186
-	if (preg_match("/\s*(ALTER(\s*IGNORE)?\s*TABLE\s*([^\s]*))\s*(.*)?/is", $query, $regs)) {
187
-		$debut = $regs[1];
188
-		$table = $regs[3];
189
-		$suite = $regs[4];
190
-	} else {
191
-		spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.' . _LOG_ERREUR);
192
-
193
-		return false;
194
-	}
195
-
196
-	// 2
197
-	// il faudrait une regexp pour eviter de spliter ADD PRIMARY KEY (colA, colB)
198
-	// tout en cassant "ADD PRIMARY KEY (colA, colB), ADD INDEX (chose)"... en deux
199
-	// ou revoir l'api de sql_alter en creant un 
200
-	// sql_alter_table($table,array($actions));
201
-	$todo = explode(',', $suite);
202
-
203
-	// on remet les morceaux dechires ensembles... que c'est laid !
204
-	$todo2 = array();
205
-	$i = 0;
206
-	$ouverte = false;
207
-	while ($do = array_shift($todo)) {
208
-		$todo2[$i] = isset($todo2[$i]) ? $todo2[$i] . "," . $do : $do;
209
-		$o = (false !== strpos($do, "("));
210
-		$f = (false !== strpos($do, ")"));
211
-		if ($o and !$f) {
212
-			$ouverte = true;
213
-		} elseif ($f) {
214
-			$ouverte = false;
215
-		}
216
-		if (!$ouverte) {
217
-			$i++;
218
-		}
219
-	}
220
-
221
-	// 3
222
-	$resultats = array();
223
-	foreach ($todo2 as $do) {
224
-		$do = trim($do);
225
-		if (!preg_match('/(DROP PRIMARY KEY|DROP KEY|DROP INDEX|DROP COLUMN|DROP'
226
-			. '|CHANGE COLUMN|CHANGE|MODIFY|RENAME TO|RENAME'
227
-			. '|ADD PRIMARY KEY|ADD KEY|ADD INDEX|ADD UNIQUE KEY|ADD UNIQUE'
228
-			. '|ADD COLUMN|ADD'
229
-			. ')\s*([^\s]*)\s*(.*)?/i', $do, $matches)
230
-		) {
231
-			spip_log("SQLite : Probleme de ALTER TABLE, utilisation non reconnue dans : $do \n(requete d'origine : $query)",
232
-				'sqlite.' . _LOG_ERREUR);
233
-
234
-			return false;
235
-		}
236
-
237
-		$cle = strtoupper($matches[1]);
238
-		$colonne_origine = $matches[2];
239
-		$colonne_destination = '';
240
-
241
-		$def = $matches[3];
242
-
243
-		// eluder une eventuelle clause before|after|first inutilisable
244
-		$defr = rtrim(preg_replace('/(BEFORE|AFTER|FIRST)(.*)$/is', '', $def));
245
-		$defo = $defr; // garder la def d'origine pour certains cas
246
-		// remplacer les definitions venant de mysql
247
-		$defr = _sqlite_remplacements_definitions_table($defr);
248
-
249
-		// reinjecter dans le do
250
-		$do = str_replace($def, $defr, $do);
251
-		$def = $defr;
252
-
253
-		switch ($cle) {
254
-			// suppression d'un index
255
-			case 'DROP KEY':
256
-			case 'DROP INDEX':
257
-				$nom_index = $colonne_origine;
258
-				spip_sqlite_drop_index($nom_index, $table, $serveur);
259
-				break;
260
-
261
-			// suppression d'une pk
262
-			case 'DROP PRIMARY KEY':
263
-				if (!_sqlite_modifier_table(
264
-					$table,
265
-					$colonne_origine,
266
-					array('key' => array('PRIMARY KEY' => '')),
267
-					$serveur)
268
-				) {
269
-					return false;
270
-				}
271
-				break;
272
-			// suppression d'une colonne
273
-			case 'DROP COLUMN':
274
-			case 'DROP':
275
-				if (!_sqlite_modifier_table(
276
-					$table,
277
-					array($colonne_origine => ""),
278
-					array(),
279
-					$serveur)
280
-				) {
281
-					return false;
282
-				}
283
-				break;
284
-
285
-			case 'CHANGE COLUMN':
286
-			case 'CHANGE':
287
-				// recuperer le nom de la future colonne
288
-				// on reprend la def d'origine car _sqlite_modifier_table va refaire la translation
289
-				// en tenant compte de la cle primaire (ce qui est mieux)
290
-				$def = trim($defo);
291
-				$colonne_destination = substr($def, 0, strpos($def, ' '));
292
-				$def = substr($def, strlen($colonne_destination) + 1);
293
-
294
-				if (!_sqlite_modifier_table(
295
-					$table,
296
-					array($colonne_origine => $colonne_destination),
297
-					array('field' => array($colonne_destination => $def)),
298
-					$serveur)
299
-				) {
300
-					return false;
301
-				}
302
-				break;
303
-
304
-			case 'MODIFY':
305
-				// on reprend la def d'origine car _sqlite_modifier_table va refaire la translation
306
-				// en tenant compte de la cle primaire (ce qui est mieux)
307
-				if (!_sqlite_modifier_table(
308
-					$table,
309
-					$colonne_origine,
310
-					array('field' => array($colonne_origine => $defo)),
311
-					$serveur)
312
-				) {
313
-					return false;
314
-				}
315
-				break;
316
-
317
-			// pas geres en sqlite2
318
-			case 'RENAME':
319
-				$do = "RENAME TO" . substr($do, 6);
320
-			case 'RENAME TO':
321
-				if (!spip_sqlite::executer_requete("$debut $do", $serveur)) {
322
-					spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.' . _LOG_ERREUR);
323
-
324
-					return false;
325
-				}
326
-				break;
327
-
328
-			// ajout d'une pk
329
-			case 'ADD PRIMARY KEY':
330
-				$pk = trim(substr($do, 16));
331
-				$pk = ($pk[0] == '(') ? substr($pk, 1, -1) : $pk;
332
-				if (!_sqlite_modifier_table(
333
-					$table,
334
-					$colonne_origine,
335
-					array('key' => array('PRIMARY KEY' => $pk)),
336
-					$serveur)
337
-				) {
338
-					return false;
339
-				}
340
-				break;
341
-			// ajout d'un index
342
-			case 'ADD UNIQUE KEY':
343
-			case 'ADD UNIQUE':
344
-				$unique = true;
345
-			case 'ADD INDEX':
346
-			case 'ADD KEY':
347
-				if (!isset($unique)) {
348
-					$unique = false;
349
-				}
350
-				// peut etre "(colonne)" ou "nom_index (colonnes)"
351
-				// bug potentiel si qqn met "(colonne, colonne)"
352
-				//
353
-				// nom_index (colonnes)
354
-				if ($def) {
355
-					$colonnes = substr($def, 1, -1);
356
-					$nom_index = $colonne_origine;
357
-				} else {
358
-					// (colonne)
359
-					if ($colonne_origine[0] == "(") {
360
-						$colonnes = substr($colonne_origine, 1, -1);
361
-						if (false !== strpos(",", $colonnes)) {
362
-							spip_log("SQLite : Erreur, impossible de creer un index sur plusieurs colonnes"
363
-								. " sans qu'il ait de nom ($table, ($colonnes))", 'sqlite.' . _LOG_ERREUR);
364
-							break;
365
-						} else {
366
-							$nom_index = $colonnes;
367
-						}
368
-					} // nom_index
369
-					else {
370
-						$nom_index = $colonnes = $colonne_origine;
371
-					}
372
-				}
373
-				spip_sqlite_create_index($nom_index, $table, $colonnes, $unique, $serveur);
374
-				break;
375
-
376
-			// pas geres en sqlite2
377
-			case 'ADD COLUMN':
378
-				$do = "ADD" . substr($do, 10);
379
-			case 'ADD':
380
-			default:
381
-				if (!preg_match(',primary\s+key,i', $do)) {
382
-					if (!spip_sqlite::executer_requete("$debut $do", $serveur)) {
383
-						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR);
384
-
385
-						return false;
386
-					}
387
-					break;
388
-
389
-				}
390
-				// ou si la colonne est aussi primary key
391
-				// cas du add id_truc int primary key
392
-				// ajout d'une colonne qui passe en primary key directe
393
-				else {
394
-					$def = trim(substr($do, 3));
395
-					$colonne_ajoutee = substr($def, 0, strpos($def, ' '));
396
-					$def = substr($def, strlen($colonne_ajoutee) + 1);
397
-					$opts = array();
398
-					if (preg_match(',primary\s+key,i', $def)) {
399
-						$opts['key'] = array('PRIMARY KEY' => $colonne_ajoutee);
400
-						$def = preg_replace(',primary\s+key,i', '', $def);
401
-					}
402
-					$opts['field'] = array($colonne_ajoutee => $def);
403
-					if (!_sqlite_modifier_table($table, array($colonne_ajoutee), $opts, $serveur)) {
404
-						spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR);
405
-
406
-						return false;
407
-					}
408
-				}
409
-				break;
410
-		}
411
-		// tout est bon, ouf !
412
-		spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.' . _LOG_INFO);
413
-	}
414
-
415
-	spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.' . _LOG_INFO);
416
-
417
-	return true;
185
+    // 1
186
+    if (preg_match("/\s*(ALTER(\s*IGNORE)?\s*TABLE\s*([^\s]*))\s*(.*)?/is", $query, $regs)) {
187
+        $debut = $regs[1];
188
+        $table = $regs[3];
189
+        $suite = $regs[4];
190
+    } else {
191
+        spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.' . _LOG_ERREUR);
192
+
193
+        return false;
194
+    }
195
+
196
+    // 2
197
+    // il faudrait une regexp pour eviter de spliter ADD PRIMARY KEY (colA, colB)
198
+    // tout en cassant "ADD PRIMARY KEY (colA, colB), ADD INDEX (chose)"... en deux
199
+    // ou revoir l'api de sql_alter en creant un 
200
+    // sql_alter_table($table,array($actions));
201
+    $todo = explode(',', $suite);
202
+
203
+    // on remet les morceaux dechires ensembles... que c'est laid !
204
+    $todo2 = array();
205
+    $i = 0;
206
+    $ouverte = false;
207
+    while ($do = array_shift($todo)) {
208
+        $todo2[$i] = isset($todo2[$i]) ? $todo2[$i] . "," . $do : $do;
209
+        $o = (false !== strpos($do, "("));
210
+        $f = (false !== strpos($do, ")"));
211
+        if ($o and !$f) {
212
+            $ouverte = true;
213
+        } elseif ($f) {
214
+            $ouverte = false;
215
+        }
216
+        if (!$ouverte) {
217
+            $i++;
218
+        }
219
+    }
220
+
221
+    // 3
222
+    $resultats = array();
223
+    foreach ($todo2 as $do) {
224
+        $do = trim($do);
225
+        if (!preg_match('/(DROP PRIMARY KEY|DROP KEY|DROP INDEX|DROP COLUMN|DROP'
226
+            . '|CHANGE COLUMN|CHANGE|MODIFY|RENAME TO|RENAME'
227
+            . '|ADD PRIMARY KEY|ADD KEY|ADD INDEX|ADD UNIQUE KEY|ADD UNIQUE'
228
+            . '|ADD COLUMN|ADD'
229
+            . ')\s*([^\s]*)\s*(.*)?/i', $do, $matches)
230
+        ) {
231
+            spip_log("SQLite : Probleme de ALTER TABLE, utilisation non reconnue dans : $do \n(requete d'origine : $query)",
232
+                'sqlite.' . _LOG_ERREUR);
233
+
234
+            return false;
235
+        }
236
+
237
+        $cle = strtoupper($matches[1]);
238
+        $colonne_origine = $matches[2];
239
+        $colonne_destination = '';
240
+
241
+        $def = $matches[3];
242
+
243
+        // eluder une eventuelle clause before|after|first inutilisable
244
+        $defr = rtrim(preg_replace('/(BEFORE|AFTER|FIRST)(.*)$/is', '', $def));
245
+        $defo = $defr; // garder la def d'origine pour certains cas
246
+        // remplacer les definitions venant de mysql
247
+        $defr = _sqlite_remplacements_definitions_table($defr);
248
+
249
+        // reinjecter dans le do
250
+        $do = str_replace($def, $defr, $do);
251
+        $def = $defr;
252
+
253
+        switch ($cle) {
254
+            // suppression d'un index
255
+            case 'DROP KEY':
256
+            case 'DROP INDEX':
257
+                $nom_index = $colonne_origine;
258
+                spip_sqlite_drop_index($nom_index, $table, $serveur);
259
+                break;
260
+
261
+            // suppression d'une pk
262
+            case 'DROP PRIMARY KEY':
263
+                if (!_sqlite_modifier_table(
264
+                    $table,
265
+                    $colonne_origine,
266
+                    array('key' => array('PRIMARY KEY' => '')),
267
+                    $serveur)
268
+                ) {
269
+                    return false;
270
+                }
271
+                break;
272
+            // suppression d'une colonne
273
+            case 'DROP COLUMN':
274
+            case 'DROP':
275
+                if (!_sqlite_modifier_table(
276
+                    $table,
277
+                    array($colonne_origine => ""),
278
+                    array(),
279
+                    $serveur)
280
+                ) {
281
+                    return false;
282
+                }
283
+                break;
284
+
285
+            case 'CHANGE COLUMN':
286
+            case 'CHANGE':
287
+                // recuperer le nom de la future colonne
288
+                // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation
289
+                // en tenant compte de la cle primaire (ce qui est mieux)
290
+                $def = trim($defo);
291
+                $colonne_destination = substr($def, 0, strpos($def, ' '));
292
+                $def = substr($def, strlen($colonne_destination) + 1);
293
+
294
+                if (!_sqlite_modifier_table(
295
+                    $table,
296
+                    array($colonne_origine => $colonne_destination),
297
+                    array('field' => array($colonne_destination => $def)),
298
+                    $serveur)
299
+                ) {
300
+                    return false;
301
+                }
302
+                break;
303
+
304
+            case 'MODIFY':
305
+                // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation
306
+                // en tenant compte de la cle primaire (ce qui est mieux)
307
+                if (!_sqlite_modifier_table(
308
+                    $table,
309
+                    $colonne_origine,
310
+                    array('field' => array($colonne_origine => $defo)),
311
+                    $serveur)
312
+                ) {
313
+                    return false;
314
+                }
315
+                break;
316
+
317
+            // pas geres en sqlite2
318
+            case 'RENAME':
319
+                $do = "RENAME TO" . substr($do, 6);
320
+            case 'RENAME TO':
321
+                if (!spip_sqlite::executer_requete("$debut $do", $serveur)) {
322
+                    spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.' . _LOG_ERREUR);
323
+
324
+                    return false;
325
+                }
326
+                break;
327
+
328
+            // ajout d'une pk
329
+            case 'ADD PRIMARY KEY':
330
+                $pk = trim(substr($do, 16));
331
+                $pk = ($pk[0] == '(') ? substr($pk, 1, -1) : $pk;
332
+                if (!_sqlite_modifier_table(
333
+                    $table,
334
+                    $colonne_origine,
335
+                    array('key' => array('PRIMARY KEY' => $pk)),
336
+                    $serveur)
337
+                ) {
338
+                    return false;
339
+                }
340
+                break;
341
+            // ajout d'un index
342
+            case 'ADD UNIQUE KEY':
343
+            case 'ADD UNIQUE':
344
+                $unique = true;
345
+            case 'ADD INDEX':
346
+            case 'ADD KEY':
347
+                if (!isset($unique)) {
348
+                    $unique = false;
349
+                }
350
+                // peut etre "(colonne)" ou "nom_index (colonnes)"
351
+                // bug potentiel si qqn met "(colonne, colonne)"
352
+                //
353
+                // nom_index (colonnes)
354
+                if ($def) {
355
+                    $colonnes = substr($def, 1, -1);
356
+                    $nom_index = $colonne_origine;
357
+                } else {
358
+                    // (colonne)
359
+                    if ($colonne_origine[0] == "(") {
360
+                        $colonnes = substr($colonne_origine, 1, -1);
361
+                        if (false !== strpos(",", $colonnes)) {
362
+                            spip_log("SQLite : Erreur, impossible de creer un index sur plusieurs colonnes"
363
+                                . " sans qu'il ait de nom ($table, ($colonnes))", 'sqlite.' . _LOG_ERREUR);
364
+                            break;
365
+                        } else {
366
+                            $nom_index = $colonnes;
367
+                        }
368
+                    } // nom_index
369
+                    else {
370
+                        $nom_index = $colonnes = $colonne_origine;
371
+                    }
372
+                }
373
+                spip_sqlite_create_index($nom_index, $table, $colonnes, $unique, $serveur);
374
+                break;
375
+
376
+            // pas geres en sqlite2
377
+            case 'ADD COLUMN':
378
+                $do = "ADD" . substr($do, 10);
379
+            case 'ADD':
380
+            default:
381
+                if (!preg_match(',primary\s+key,i', $do)) {
382
+                    if (!spip_sqlite::executer_requete("$debut $do", $serveur)) {
383
+                        spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR);
384
+
385
+                        return false;
386
+                    }
387
+                    break;
388
+
389
+                }
390
+                // ou si la colonne est aussi primary key
391
+                // cas du add id_truc int primary key
392
+                // ajout d'une colonne qui passe en primary key directe
393
+                else {
394
+                    $def = trim(substr($do, 3));
395
+                    $colonne_ajoutee = substr($def, 0, strpos($def, ' '));
396
+                    $def = substr($def, strlen($colonne_ajoutee) + 1);
397
+                    $opts = array();
398
+                    if (preg_match(',primary\s+key,i', $def)) {
399
+                        $opts['key'] = array('PRIMARY KEY' => $colonne_ajoutee);
400
+                        $def = preg_replace(',primary\s+key,i', '', $def);
401
+                    }
402
+                    $opts['field'] = array($colonne_ajoutee => $def);
403
+                    if (!_sqlite_modifier_table($table, array($colonne_ajoutee), $opts, $serveur)) {
404
+                        spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR);
405
+
406
+                        return false;
407
+                    }
408
+                }
409
+                break;
410
+        }
411
+        // tout est bon, ouf !
412
+        spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.' . _LOG_INFO);
413
+    }
414
+
415
+    spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.' . _LOG_INFO);
416
+
417
+    return true;
418 418
 }
419 419
 
420 420
 
@@ -437,38 +437,38 @@  discard block
 block discarded – undo
437 437
  *     - true si la requête réussie, false sinon.
438 438
  */
439 439
 function spip_sqlite_create(
440
-	$nom,
441
-	$champs,
442
-	$cles,
443
-	$autoinc = false,
444
-	$temporary = false,
445
-	$serveur = '',
446
-	$requeter = true
440
+    $nom,
441
+    $champs,
442
+    $cles,
443
+    $autoinc = false,
444
+    $temporary = false,
445
+    $serveur = '',
446
+    $requeter = true
447 447
 ) {
448
-	$query = _sqlite_requete_create($nom, $champs, $cles, $autoinc, $temporary, $ifnotexists = true, $serveur, $requeter);
449
-	if (!$query) {
450
-		return false;
451
-	}
452
-	$res = spip_sqlite_query($query, $serveur, $requeter);
453
-
454
-	// SQLite ne cree pas les KEY sur les requetes CREATE TABLE
455
-	// il faut donc les faire creer ensuite
456
-	if (!$requeter) {
457
-		return $res;
458
-	}
459
-
460
-	$ok = $res ? true : false;
461
-	if ($ok) {
462
-		foreach ($cles as $k => $v) {
463
-			if (preg_match(',^(UNIQUE KEY|KEY|UNIQUE)\s,i', $k, $m)) {
464
-				$index = trim(substr($k, strlen($m[1])));
465
-				$unique = (strlen($m[1]) > 3);
466
-				$ok &= spip_sqlite_create_index($index, $nom, $v, $unique, $serveur);
467
-			}
468
-		}
469
-	}
470
-
471
-	return $ok ? true : false;
448
+    $query = _sqlite_requete_create($nom, $champs, $cles, $autoinc, $temporary, $ifnotexists = true, $serveur, $requeter);
449
+    if (!$query) {
450
+        return false;
451
+    }
452
+    $res = spip_sqlite_query($query, $serveur, $requeter);
453
+
454
+    // SQLite ne cree pas les KEY sur les requetes CREATE TABLE
455
+    // il faut donc les faire creer ensuite
456
+    if (!$requeter) {
457
+        return $res;
458
+    }
459
+
460
+    $ok = $res ? true : false;
461
+    if ($ok) {
462
+        foreach ($cles as $k => $v) {
463
+            if (preg_match(',^(UNIQUE KEY|KEY|UNIQUE)\s,i', $k, $m)) {
464
+                $index = trim(substr($k, strlen($m[1])));
465
+                $unique = (strlen($m[1]) > 3);
466
+                $ok &= spip_sqlite_create_index($index, $nom, $v, $unique, $serveur);
467
+            }
468
+        }
469
+    }
470
+
471
+    return $ok ? true : false;
472 472
 }
473 473
 
474 474
 /**
@@ -481,21 +481,21 @@  discard block
 block discarded – undo
481 481
  * @return bool true si la base est créee.
482 482
  **/
483 483
 function spip_sqlite_create_base($nom, $serveur = '', $option = true) {
484
-	$f = $nom . '.sqlite';
485
-	if (strpos($nom, "/") === false) {
486
-		$f = _DIR_DB . $f;
487
-	}
484
+    $f = $nom . '.sqlite';
485
+    if (strpos($nom, "/") === false) {
486
+        $f = _DIR_DB . $f;
487
+    }
488 488
 
489
-	$ok = new \PDO("sqlite:$f");
489
+    $ok = new \PDO("sqlite:$f");
490 490
 
491
-	if ($ok) {
492
-		unset($ok);
491
+    if ($ok) {
492
+        unset($ok);
493 493
 
494
-		return true;
495
-	}
496
-	unset($ok);
494
+        return true;
495
+    }
496
+    unset($ok);
497 497
 
498
-	return false;
498
+    return false;
499 499
 }
500 500
 
501 501
 
@@ -516,20 +516,20 @@  discard block
 block discarded – undo
516 516
  *     - string texte de la requête si $requeter vaut false
517 517
  */
518 518
 function spip_sqlite_create_view($nom, $query_select, $serveur = '', $requeter = true) {
519
-	if (!$query_select) {
520
-		return false;
521
-	}
522
-	// vue deja presente
523
-	if (sql_showtable($nom, false, $serveur)) {
524
-		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)",
525
-			'sqlite.' . _LOG_ERREUR);
519
+    if (!$query_select) {
520
+        return false;
521
+    }
522
+    // vue deja presente
523
+    if (sql_showtable($nom, false, $serveur)) {
524
+        spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)",
525
+            'sqlite.' . _LOG_ERREUR);
526 526
 
527
-		return false;
528
-	}
527
+        return false;
528
+    }
529 529
 
530
-	$query = "CREATE VIEW $nom AS " . $query_select;
530
+    $query = "CREATE VIEW $nom AS " . $query_select;
531 531
 
532
-	return spip_sqlite_query($query, $serveur, $requeter);
532
+    return spip_sqlite_query($query, $serveur, $requeter);
533 533
 }
534 534
 
535 535
 /**
@@ -551,52 +551,52 @@  discard block
 block discarded – undo
551 551
  *    string : requête, false si erreur, true sinon.
552 552
  */
553 553
 function spip_sqlite_create_index($nom, $table, $champs, $unique = '', $serveur = '', $requeter = true) {
554
-	if (!($nom or $table or $champs)) {
555
-		spip_log("Champ manquant pour creer un index sqlite ($nom, $table, (" . join(',', $champs) . "))",
556
-			'sqlite.' . _LOG_ERREUR);
557
-
558
-		return false;
559
-	}
560
-
561
-	// SQLite ne differentie pas noms des index en fonction des tables
562
-	// il faut donc creer des noms uniques d'index pour une base sqlite
563
-	$nom = $table . '_' . $nom;
564
-	// enlever d'eventuelles parentheses deja presentes sur champs
565
-	if (!is_array($champs)) {
566
-		if ($champs[0] == "(") {
567
-			$champs = substr($champs, 1, -1);
568
-		}
569
-		$champs = array($champs);
570
-		// supprimer l'info de longueur d'index mysql en fin de champ
571
-		$champs = preg_replace(",\(\d+\)$,", "", $champs);
572
-	}
573
-
574
-	$ifnotexists = "";
575
-	$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version", $serveur), '', $serveur);
576
-	if (!function_exists('spip_version_compare')) {
577
-		include_spip('plugins/installer');
578
-	}
579
-
580
-	if ($version and spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) {
581
-		$ifnotexists = ' IF NOT EXISTS';
582
-	} else {
583
-		/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
584
-		$a = spip_sqlite_showtable($table, $serveur);
585
-		if (isset($a['key']['KEY ' . $nom])) {
586
-			return true;
587
-		}
588
-	}
589
-
590
-	$query = "CREATE " . ($unique ? "UNIQUE " : "") . "INDEX$ifnotexists $nom ON $table (" . join(',', $champs) . ")";
591
-	$res = spip_sqlite_query($query, $serveur, $requeter);
592
-	if (!$requeter) {
593
-		return $res;
594
-	}
595
-	if ($res) {
596
-		return true;
597
-	} else {
598
-		return false;
599
-	}
554
+    if (!($nom or $table or $champs)) {
555
+        spip_log("Champ manquant pour creer un index sqlite ($nom, $table, (" . join(',', $champs) . "))",
556
+            'sqlite.' . _LOG_ERREUR);
557
+
558
+        return false;
559
+    }
560
+
561
+    // SQLite ne differentie pas noms des index en fonction des tables
562
+    // il faut donc creer des noms uniques d'index pour une base sqlite
563
+    $nom = $table . '_' . $nom;
564
+    // enlever d'eventuelles parentheses deja presentes sur champs
565
+    if (!is_array($champs)) {
566
+        if ($champs[0] == "(") {
567
+            $champs = substr($champs, 1, -1);
568
+        }
569
+        $champs = array($champs);
570
+        // supprimer l'info de longueur d'index mysql en fin de champ
571
+        $champs = preg_replace(",\(\d+\)$,", "", $champs);
572
+    }
573
+
574
+    $ifnotexists = "";
575
+    $version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version", $serveur), '', $serveur);
576
+    if (!function_exists('spip_version_compare')) {
577
+        include_spip('plugins/installer');
578
+    }
579
+
580
+    if ($version and spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) {
581
+        $ifnotexists = ' IF NOT EXISTS';
582
+    } else {
583
+        /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
584
+        $a = spip_sqlite_showtable($table, $serveur);
585
+        if (isset($a['key']['KEY ' . $nom])) {
586
+            return true;
587
+        }
588
+    }
589
+
590
+    $query = "CREATE " . ($unique ? "UNIQUE " : "") . "INDEX$ifnotexists $nom ON $table (" . join(',', $champs) . ")";
591
+    $res = spip_sqlite_query($query, $serveur, $requeter);
592
+    if (!$requeter) {
593
+        return $res;
594
+    }
595
+    if ($res) {
596
+        return true;
597
+    } else {
598
+        return false;
599
+    }
600 600
 }
601 601
 
602 602
 /**
@@ -613,31 +613,31 @@  discard block
 block discarded – undo
613 613
  * @return int                 Nombre de lignes
614 614
  */
615 615
 function spip_sqlite_count($r, $serveur = '', $requeter = true) {
616
-	if (!$r) {
617
-		return 0;
618
-	}
619
-
620
-	// select ou autre (insert, update,...) ?
621
-	// (link,requete) a compter
622
-	if (is_array($r->spipSqliteRowCount)) {
623
-		list($link, $query) = $r->spipSqliteRowCount;
624
-		// amelioration possible a tester intensivement : pas de order by pour compter !
625
-		// $query = preg_replace(",ORDER BY .+(LIMIT\s|HAVING\s|GROUP BY\s|$),Uims","\\1",$query);
626
-		$query = "SELECT count(*) as zzzzsqlitecount FROM ($query)";
627
-		$l = $link->query($query);
628
-		$i = 0;
629
-		if ($l and $z = $l->fetch()) {
630
-			$i = $z['zzzzsqlitecount'];
631
-		}
632
-		$r->spipSqliteRowCount = $i;
633
-	}
634
-	if (isset($r->spipSqliteRowCount)) {
635
-		// Ce compte est faux s'il y a des limit dans la requete :(
636
-		// il retourne le nombre d'enregistrements sans le limit
637
-		return $r->spipSqliteRowCount;
638
-	} else {
639
-		return $r->rowCount();
640
-	}
616
+    if (!$r) {
617
+        return 0;
618
+    }
619
+
620
+    // select ou autre (insert, update,...) ?
621
+    // (link,requete) a compter
622
+    if (is_array($r->spipSqliteRowCount)) {
623
+        list($link, $query) = $r->spipSqliteRowCount;
624
+        // amelioration possible a tester intensivement : pas de order by pour compter !
625
+        // $query = preg_replace(",ORDER BY .+(LIMIT\s|HAVING\s|GROUP BY\s|$),Uims","\\1",$query);
626
+        $query = "SELECT count(*) as zzzzsqlitecount FROM ($query)";
627
+        $l = $link->query($query);
628
+        $i = 0;
629
+        if ($l and $z = $l->fetch()) {
630
+            $i = $z['zzzzsqlitecount'];
631
+        }
632
+        $r->spipSqliteRowCount = $i;
633
+    }
634
+    if (isset($r->spipSqliteRowCount)) {
635
+        // Ce compte est faux s'il y a des limit dans la requete :(
636
+        // il retourne le nombre d'enregistrements sans le limit
637
+        return $r->spipSqliteRowCount;
638
+    } else {
639
+        return $r->rowCount();
640
+    }
641 641
 }
642 642
 
643 643
 
@@ -656,21 +656,21 @@  discard block
 block discarded – undo
656 656
  *     - false si la requête a échouée
657 657
  **/
658 658
 function spip_sqlite_countsel(
659
-	$from = array(),
660
-	$where = array(),
661
-	$groupby = '',
662
-	$having = array(),
663
-	$serveur = '',
664
-	$requeter = true
659
+    $from = array(),
660
+    $where = array(),
661
+    $groupby = '',
662
+    $having = array(),
663
+    $serveur = '',
664
+    $requeter = true
665 665
 ) {
666
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
667
-	$r = spip_sqlite_select("COUNT($c)", $from, $where, '', '', '',
668
-		$having, $serveur, $requeter);
669
-	if ((is_resource($r) or is_object($r)) && $requeter) { // ressource : sqlite2, object : sqlite3
670
-		list($r) = spip_sqlite_fetch($r, SPIP_SQLITE3_NUM, $serveur);
671
-	}
666
+    $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
667
+    $r = spip_sqlite_select("COUNT($c)", $from, $where, '', '', '',
668
+        $having, $serveur, $requeter);
669
+    if ((is_resource($r) or is_object($r)) && $requeter) { // ressource : sqlite2, object : sqlite3
670
+        list($r) = spip_sqlite_fetch($r, SPIP_SQLITE3_NUM, $serveur);
671
+    }
672 672
 
673
-	return $r;
673
+    return $r;
674 674
 }
675 675
 
676 676
 
@@ -687,22 +687,22 @@  discard block
 block discarded – undo
687 687
  *     - False en cas d'erreur.
688 688
  **/
689 689
 function spip_sqlite_delete($table, $where = '', $serveur = '', $requeter = true) {
690
-	$res = spip_sqlite_query(
691
-		_sqlite_calculer_expression('DELETE FROM', $table, ',')
692
-		. _sqlite_calculer_expression('WHERE', $where),
693
-		$serveur, $requeter);
690
+    $res = spip_sqlite_query(
691
+        _sqlite_calculer_expression('DELETE FROM', $table, ',')
692
+        . _sqlite_calculer_expression('WHERE', $where),
693
+        $serveur, $requeter);
694 694
 
695
-	// renvoyer la requete inerte si demandee
696
-	if (!$requeter) {
697
-		return $res;
698
-	}
695
+    // renvoyer la requete inerte si demandee
696
+    if (!$requeter) {
697
+        return $res;
698
+    }
699 699
 
700
-	if ($res) {
701
-		$link = _sqlite_link($serveur);
702
-		return $res->rowCount();
703
-	} else {
704
-		return false;
705
-	}
700
+    if ($res) {
701
+        $link = _sqlite_link($serveur);
702
+        return $res->rowCount();
703
+    } else {
704
+        return false;
705
+    }
706 706
 }
707 707
 
708 708
 
@@ -718,15 +718,15 @@  discard block
 block discarded – undo
718 718
  *     - true si la requête a réussie, false sinon
719 719
  */
720 720
 function spip_sqlite_drop_table($table, $exist = '', $serveur = '', $requeter = true) {
721
-	if ($exist) {
722
-		$exist = " IF EXISTS";
723
-	}
721
+    if ($exist) {
722
+        $exist = " IF EXISTS";
723
+    }
724 724
 
725
-	if (spip_sqlite_query("DROP TABLE$exist $table", $serveur, $requeter)) {
726
-		return true;
727
-	} else {
728
-		return false;
729
-	}
725
+    if (spip_sqlite_query("DROP TABLE$exist $table", $serveur, $requeter)) {
726
+        return true;
727
+    } else {
728
+        return false;
729
+    }
730 730
 }
731 731
 
732 732
 
@@ -742,11 +742,11 @@  discard block
 block discarded – undo
742 742
  *     - true si la requête a réussie, false sinon
743 743
  */
744 744
 function spip_sqlite_drop_view($view, $exist = '', $serveur = '', $requeter = true) {
745
-	if ($exist) {
746
-		$exist = " IF EXISTS";
747
-	}
745
+    if ($exist) {
746
+        $exist = " IF EXISTS";
747
+    }
748 748
 
749
-	return spip_sqlite_query("DROP VIEW$exist $view", $serveur, $requeter);
749
+    return spip_sqlite_query("DROP VIEW$exist $view", $serveur, $requeter);
750 750
 }
751 751
 
752 752
 /**
@@ -760,20 +760,20 @@  discard block
 block discarded – undo
760 760
  * @return bool ou requete
761 761
  */
762 762
 function spip_sqlite_drop_index($nom, $table, $serveur = '', $requeter = true) {
763
-	if (!($nom or $table)) {
764
-		spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.' . _LOG_ERREUR);
763
+    if (!($nom or $table)) {
764
+        spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.' . _LOG_ERREUR);
765 765
 
766
-		return false;
767
-	}
766
+        return false;
767
+    }
768 768
 
769
-	// SQLite ne differentie pas noms des index en fonction des tables
770
-	// il faut donc creer des noms uniques d'index pour une base sqlite
771
-	$index = $table . '_' . $nom;
772
-	$exist = " IF EXISTS";
769
+    // SQLite ne differentie pas noms des index en fonction des tables
770
+    // il faut donc creer des noms uniques d'index pour une base sqlite
771
+    $index = $table . '_' . $nom;
772
+    $exist = " IF EXISTS";
773 773
 
774
-	$query = "DROP INDEX$exist $index";
774
+    $query = "DROP INDEX$exist $index";
775 775
 
776
-	return spip_sqlite_query($query, $serveur, $requeter);
776
+    return spip_sqlite_query($query, $serveur, $requeter);
777 777
 }
778 778
 
779 779
 /**
@@ -789,28 +789,28 @@  discard block
 block discarded – undo
789 789
  *     Erreur eventuelle
790 790
  **/
791 791
 function spip_sqlite_error($query = '', $serveur = '') {
792
-	$link = _sqlite_link($serveur);
792
+    $link = _sqlite_link($serveur);
793 793
 
794
-	if ($link) {
795
-		$errs = $link->errorInfo();
796
-		$s = _sqlite_last_error_from_link($link);
797
-	} else {
798
-		$s = ": aucune ressource sqlite (link)";
799
-	}
800
-	if ($s) {
801
-		$trace = debug_backtrace();
802
-		if ($trace[0]['function'] != "spip_sqlite_error") {
803
-			spip_log("$s - $query - " . sql_error_backtrace(), 'sqlite.' . _LOG_ERREUR);
804
-		}
805
-	}
794
+    if ($link) {
795
+        $errs = $link->errorInfo();
796
+        $s = _sqlite_last_error_from_link($link);
797
+    } else {
798
+        $s = ": aucune ressource sqlite (link)";
799
+    }
800
+    if ($s) {
801
+        $trace = debug_backtrace();
802
+        if ($trace[0]['function'] != "spip_sqlite_error") {
803
+            spip_log("$s - $query - " . sql_error_backtrace(), 'sqlite.' . _LOG_ERREUR);
804
+        }
805
+    }
806 806
 
807
-	return $s;
807
+    return $s;
808 808
 }
809 809
 
810 810
 function _sqlite_last_error_from_link($link) {
811
-	if ($link) {
812
-		$errs = $link->errorInfo();
813
-		/*
811
+    if ($link) {
812
+        $errs = $link->errorInfo();
813
+        /*
814 814
 			$errs[0]
815 815
 				numero SQLState ('HY000' souvent lors d'une erreur)
816 816
 				http://www.easysoft.com/developer/interfaces/odbc/sqlstate_status_return_codes.html
@@ -820,11 +820,11 @@  discard block
 block discarded – undo
820 820
 			$errs[2]
821 821
 				Le texte du message d'erreur
822 822
 		*/
823
-		if (ltrim($errs[0], '0')) { // 00000 si pas d'erreur
824
-			return "$errs[2]";
825
-		}
826
-	}
827
-	return "";
823
+        if (ltrim($errs[0], '0')) { // 00000 si pas d'erreur
824
+            return "$errs[2]";
825
+        }
826
+    }
827
+    return "";
828 828
 }
829 829
 
830 830
 /**
@@ -841,23 +841,23 @@  discard block
 block discarded – undo
841 841
  *    'HY000/1' : numéro de l'erreur SQLState / numéro d'erreur interne SQLite (en sqlite 3)
842 842
  **/
843 843
 function spip_sqlite_errno($serveur = '') {
844
-	$link = _sqlite_link($serveur);
844
+    $link = _sqlite_link($serveur);
845 845
 
846
-	if ($link) {
847
-		$t = $link->errorInfo();
848
-		$s = ltrim($t[0], '0'); // 00000 si pas d'erreur
849
-		if ($s) {
850
-			$s .= ' / ' . $t[1];
851
-		} // ajoute l'erreur du moteur SQLite
852
-	} else {
853
-		$s = ": aucune ressource sqlite (link)";
854
-	}
846
+    if ($link) {
847
+        $t = $link->errorInfo();
848
+        $s = ltrim($t[0], '0'); // 00000 si pas d'erreur
849
+        if ($s) {
850
+            $s .= ' / ' . $t[1];
851
+        } // ajoute l'erreur du moteur SQLite
852
+    } else {
853
+        $s = ": aucune ressource sqlite (link)";
854
+    }
855 855
 
856
-	if ($s) {
857
-		spip_log("Erreur sqlite $s", 'sqlite.' . _LOG_ERREUR);
858
-	}
856
+    if ($s) {
857
+        spip_log("Erreur sqlite $s", 'sqlite.' . _LOG_ERREUR);
858
+    }
859 859
 
860
-	return $s ? $s : 0;
860
+    return $s ? $s : 0;
861 861
 }
862 862
 
863 863
 
@@ -873,19 +873,19 @@  discard block
 block discarded – undo
873 873
  *     - false si on a pas pu avoir d'explication
874 874
  */
875 875
 function spip_sqlite_explain($query, $serveur = '', $requeter = true) {
876
-	if (strpos(ltrim($query), 'SELECT') !== 0) {
877
-		return array();
878
-	}
876
+    if (strpos(ltrim($query), 'SELECT') !== 0) {
877
+        return array();
878
+    }
879 879
 
880
-	$query = spip_sqlite::traduire_requete($query, $serveur);
881
-	$query = 'EXPLAIN ' . $query;
882
-	if (!$requeter) {
883
-		return $query;
884
-	}
885
-	// on ne trace pas ces requetes, sinon on obtient un tracage sans fin...
886
-	$r = spip_sqlite::executer_requete($query, $serveur, false);
880
+    $query = spip_sqlite::traduire_requete($query, $serveur);
881
+    $query = 'EXPLAIN ' . $query;
882
+    if (!$requeter) {
883
+        return $query;
884
+    }
885
+    // on ne trace pas ces requetes, sinon on obtient un tracage sans fin...
886
+    $r = spip_sqlite::executer_requete($query, $serveur, false);
887 887
 
888
-	return $r ? spip_sqlite_fetch($r, null, $serveur) : false; // hum ? etrange ca... a verifier
888
+    return $r ? spip_sqlite_fetch($r, null, $serveur) : false; // hum ? etrange ca... a verifier
889 889
 }
890 890
 
891 891
 
@@ -902,29 +902,29 @@  discard block
 block discarded – undo
902 902
  */
903 903
 function spip_sqlite_fetch($r, $t = '', $serveur = '', $requeter = true) {
904 904
 
905
-	$link = _sqlite_link($serveur);
906
-	$t = $t ? $t : SPIP_SQLITE3_ASSOC;
905
+    $link = _sqlite_link($serveur);
906
+    $t = $t ? $t : SPIP_SQLITE3_ASSOC;
907 907
 
908
-	$retour = false;
909
-	if ($r) {
910
-		$retour = $r->fetch($t);
911
-	}
908
+    $retour = false;
909
+    if ($r) {
910
+        $retour = $r->fetch($t);
911
+    }
912 912
 
913
-	// Renvoie des 'table.titre' au lieu de 'titre' tout court ! pff !
914
-	// suppression de 'table.' pour toutes les cles (c'est un peu violent !)
915
-	// c'est couteux : on ne verifie que la premiere ligne pour voir si on le fait ou non
916
-	if ($retour
917
-		and strpos(implode('', array_keys($retour)), '.') !== false
918
-	) {
919
-		foreach ($retour as $cle => $val) {
920
-			if (($pos = strpos($cle, '.')) !== false) {
921
-				$retour[substr($cle, $pos + 1)] = &$retour[$cle];
922
-				unset($retour[$cle]);
923
-			}
924
-		}
925
-	}
913
+    // Renvoie des 'table.titre' au lieu de 'titre' tout court ! pff !
914
+    // suppression de 'table.' pour toutes les cles (c'est un peu violent !)
915
+    // c'est couteux : on ne verifie que la premiere ligne pour voir si on le fait ou non
916
+    if ($retour
917
+        and strpos(implode('', array_keys($retour)), '.') !== false
918
+    ) {
919
+        foreach ($retour as $cle => $val) {
920
+            if (($pos = strpos($cle, '.')) !== false) {
921
+                $retour[substr($cle, $pos + 1)] = &$retour[$cle];
922
+                unset($retour[$cle]);
923
+            }
924
+        }
925
+    }
926 926
 
927
-	return $retour;
927
+    return $retour;
928 928
 }
929 929
 
930 930
 /**
@@ -937,8 +937,8 @@  discard block
 block discarded – undo
937 937
  * @return bool True si déplacement réussi, false sinon.
938 938
  **/
939 939
 function spip_sqlite_seek($r, $row_number, $serveur = '', $requeter = true) {
940
-	// encore un truc de bien fichu : PDO ne PEUT PAS faire de seek ou de rewind...
941
-	return false;
940
+    // encore un truc de bien fichu : PDO ne PEUT PAS faire de seek ou de rewind...
941
+    return false;
942 942
 }
943 943
 
944 944
 
@@ -954,10 +954,10 @@  discard block
 block discarded – undo
954 954
  * @return bool                True si réussi
955 955
  */
956 956
 function spip_sqlite_free(&$r, $serveur = '', $requeter = true) {
957
-	unset($r);
957
+    unset($r);
958 958
 
959
-	return true;
960
-	//return sqlite_free_result($r);
959
+    return true;
960
+    //return sqlite_free_result($r);
961 961
 }
962 962
 
963 963
 
@@ -972,8 +972,8 @@  discard block
 block discarded – undo
972 972
  * @return void
973 973
  */
974 974
 function spip_sqlite_get_charset($charset = array(), $serveur = '', $requeter = true) {
975
-	//$c = !$charset ? '' : (" LIKE "._q($charset['charset']));
976
-	//return spip_sqlite_fetch(sqlite_query(_sqlite_link($serveur), "SHOW CHARACTER SET$c"), NULL, $serveur);
975
+    //$c = !$charset ? '' : (" LIKE "._q($charset['charset']));
976
+    //return spip_sqlite_fetch(sqlite_query(_sqlite_link($serveur), "SHOW CHARACTER SET$c"), NULL, $serveur);
977 977
 }
978 978
 
979 979
 
@@ -988,7 +988,7 @@  discard block
 block discarded – undo
988 988
  *     Valeur hexadécimale pour SQLite
989 989
  **/
990 990
 function spip_sqlite_hex($v) {
991
-	return hexdec($v);
991
+    return hexdec($v);
992 992
 }
993 993
 
994 994
 
@@ -1010,7 +1010,7 @@  discard block
 block discarded – undo
1010 1010
  *     Expression de requête SQL
1011 1011
  **/
1012 1012
 function spip_sqlite_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) {
1013
-	return "($val $not IN ($valeurs))";
1013
+    return "($val $not IN ($valeurs))";
1014 1014
 }
1015 1015
 
1016 1016
 
@@ -1038,20 +1038,20 @@  discard block
 block discarded – undo
1038 1038
  **/
1039 1039
 function spip_sqlite_insert($table, $champs, $valeurs, $desc = array(), $serveur = '', $requeter = true) {
1040 1040
 
1041
-	$query = "INSERT INTO $table " . ($champs ? "$champs VALUES $valeurs" : "DEFAULT VALUES");
1042
-	if ($r = spip_sqlite_query($query, $serveur, $requeter)) {
1043
-		if (!$requeter) {
1044
-			return $r;
1045
-		}
1046
-		$nb = spip_sqlite::last_insert_id($serveur);
1047
-	} else {
1048
-		$nb = false;
1049
-	}
1041
+    $query = "INSERT INTO $table " . ($champs ? "$champs VALUES $valeurs" : "DEFAULT VALUES");
1042
+    if ($r = spip_sqlite_query($query, $serveur, $requeter)) {
1043
+        if (!$requeter) {
1044
+            return $r;
1045
+        }
1046
+        $nb = spip_sqlite::last_insert_id($serveur);
1047
+    } else {
1048
+        $nb = false;
1049
+    }
1050 1050
 
1051
-	$err = spip_sqlite_error($query, $serveur);
1051
+    $err = spip_sqlite_error($query, $serveur);
1052 1052
 
1053
-	// cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
1054
-	return isset($_GET['var_profile']) ? $r : $nb;
1053
+    // cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
1054
+    return isset($_GET['var_profile']) ? $r : $nb;
1055 1055
 
1056 1056
 }
1057 1057
 
@@ -1077,28 +1077,28 @@  discard block
 block discarded – undo
1077 1077
  *     - Tableau de description de la requête et du temps d'exécution, si var_profile activé
1078 1078
  **/
1079 1079
 function spip_sqlite_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1080
-	if (!$desc) {
1081
-		$desc = description_table($table, $serveur);
1082
-	}
1083
-	if (!$desc) {
1084
-		die("$table insertion sans description");
1085
-	}
1086
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1080
+    if (!$desc) {
1081
+        $desc = description_table($table, $serveur);
1082
+    }
1083
+    if (!$desc) {
1084
+        die("$table insertion sans description");
1085
+    }
1086
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1087 1087
 
1088
-	foreach ($couples as $champ => $val) {
1089
-		$couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
1090
-	}
1088
+    foreach ($couples as $champ => $val) {
1089
+        $couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
1090
+    }
1091 1091
 
1092
-	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1093
-	$couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
1092
+    // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1093
+    $couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
1094 1094
 
1095
-	$cles = $valeurs = "";
1096
-	if (count($couples)) {
1097
-		$cles = "(" . join(',', array_keys($couples)) . ")";
1098
-		$valeurs = "(" . join(',', $couples) . ")";
1099
-	}
1095
+    $cles = $valeurs = "";
1096
+    if (count($couples)) {
1097
+        $cles = "(" . join(',', array_keys($couples)) . ")";
1098
+        $valeurs = "(" . join(',', $couples) . ")";
1099
+    }
1100 1100
 
1101
-	return spip_sqlite_insert($table, $cles, $valeurs, $desc, $serveur, $requeter);
1101
+    return spip_sqlite_insert($table, $cles, $valeurs, $desc, $serveur, $requeter);
1102 1102
 }
1103 1103
 
1104 1104
 
@@ -1122,70 +1122,70 @@  discard block
 block discarded – undo
1122 1122
  *     - False en cas d'erreur.
1123 1123
  **/
1124 1124
 function spip_sqlite_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1125
-	if (!$desc) {
1126
-		$desc = description_table($table, $serveur);
1127
-	}
1128
-	if (!$desc) {
1129
-		die("$table insertion sans description");
1130
-	}
1131
-	if (!isset($desc['field'])) {
1132
-		$desc['field'] = array();
1133
-	}
1134
-
1135
-	// recuperer les champs 'timestamp' pour mise a jour auto de ceux-ci
1136
-	$maj = _sqlite_ajouter_champs_timestamp($table, array(), $desc, $serveur);
1137
-
1138
-	// seul le nom de la table est a traduire ici :
1139
-	// le faire une seule fois au debut
1140
-	$query_start = "INSERT INTO $table ";
1141
-	$query_start = spip_sqlite::traduire_requete($query_start, $serveur);
1142
-
1143
-	// ouvrir une transaction
1144
-	if ($requeter) {
1145
-		spip_sqlite::demarrer_transaction($serveur);
1146
-	}
1147
-
1148
-	while ($couples = array_shift($tab_couples)) {
1149
-		foreach ($couples as $champ => $val) {
1150
-			$couples[$champ] = _sqlite_calculer_cite($val, $desc['field'][$champ]);
1151
-		}
1152
-
1153
-		// inserer les champs timestamp par defaut
1154
-		$couples = array_merge($maj, $couples);
1155
-
1156
-		$champs = $valeurs = "";
1157
-		if (count($couples)) {
1158
-			$champs = "(" . join(',', array_keys($couples)) . ")";
1159
-			$valeurs = "(" . join(',', $couples) . ")";
1160
-			$query = $query_start . "$champs VALUES $valeurs";
1161
-		} else {
1162
-			$query = $query_start . "DEFAULT VALUES";
1163
-		}
1164
-
1165
-		if ($requeter) {
1166
-			$retour = spip_sqlite::executer_requete($query, $serveur);
1167
-		}
1168
-
1169
-		// sur le dernier couple uniquement
1170
-		if (!count($tab_couples)) {
1171
-			$nb = 0;
1172
-			if ($requeter) {
1173
-				$nb = spip_sqlite::last_insert_id($serveur);
1174
-			} else {
1175
-				return $query;
1176
-			}
1177
-		}
1178
-
1179
-		$err = spip_sqlite_error($query, $serveur);
1180
-	}
1181
-
1182
-	if ($requeter) {
1183
-		spip_sqlite::finir_transaction($serveur);
1184
-	}
1185
-
1186
-	// renvoie le dernier id d'autoincrement ajoute
1187
-	// cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
1188
-	return isset($_GET['var_profile']) ? $retour : $nb;
1125
+    if (!$desc) {
1126
+        $desc = description_table($table, $serveur);
1127
+    }
1128
+    if (!$desc) {
1129
+        die("$table insertion sans description");
1130
+    }
1131
+    if (!isset($desc['field'])) {
1132
+        $desc['field'] = array();
1133
+    }
1134
+
1135
+    // recuperer les champs 'timestamp' pour mise a jour auto de ceux-ci
1136
+    $maj = _sqlite_ajouter_champs_timestamp($table, array(), $desc, $serveur);
1137
+
1138
+    // seul le nom de la table est a traduire ici :
1139
+    // le faire une seule fois au debut
1140
+    $query_start = "INSERT INTO $table ";
1141
+    $query_start = spip_sqlite::traduire_requete($query_start, $serveur);
1142
+
1143
+    // ouvrir une transaction
1144
+    if ($requeter) {
1145
+        spip_sqlite::demarrer_transaction($serveur);
1146
+    }
1147
+
1148
+    while ($couples = array_shift($tab_couples)) {
1149
+        foreach ($couples as $champ => $val) {
1150
+            $couples[$champ] = _sqlite_calculer_cite($val, $desc['field'][$champ]);
1151
+        }
1152
+
1153
+        // inserer les champs timestamp par defaut
1154
+        $couples = array_merge($maj, $couples);
1155
+
1156
+        $champs = $valeurs = "";
1157
+        if (count($couples)) {
1158
+            $champs = "(" . join(',', array_keys($couples)) . ")";
1159
+            $valeurs = "(" . join(',', $couples) . ")";
1160
+            $query = $query_start . "$champs VALUES $valeurs";
1161
+        } else {
1162
+            $query = $query_start . "DEFAULT VALUES";
1163
+        }
1164
+
1165
+        if ($requeter) {
1166
+            $retour = spip_sqlite::executer_requete($query, $serveur);
1167
+        }
1168
+
1169
+        // sur le dernier couple uniquement
1170
+        if (!count($tab_couples)) {
1171
+            $nb = 0;
1172
+            if ($requeter) {
1173
+                $nb = spip_sqlite::last_insert_id($serveur);
1174
+            } else {
1175
+                return $query;
1176
+            }
1177
+        }
1178
+
1179
+        $err = spip_sqlite_error($query, $serveur);
1180
+    }
1181
+
1182
+    if ($requeter) {
1183
+        spip_sqlite::finir_transaction($serveur);
1184
+    }
1185
+
1186
+    // renvoie le dernier id d'autoincrement ajoute
1187
+    // cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage
1188
+    return isset($_GET['var_profile']) ? $retour : $nb;
1189 1189
 }
1190 1190
 
1191 1191
 
@@ -1200,7 +1200,7 @@  discard block
 block discarded – undo
1200 1200
  *     Toujours true.
1201 1201
  **/
1202 1202
 function spip_sqlite_preferer_transaction($serveur = '', $requeter = true) {
1203
-	return true;
1203
+    return true;
1204 1204
 }
1205 1205
 
1206 1206
 /**
@@ -1217,12 +1217,12 @@  discard block
 block discarded – undo
1217 1217
  *     string si texte de la requête demandé, true sinon
1218 1218
  **/
1219 1219
 function spip_sqlite_demarrer_transaction($serveur = '', $requeter = true) {
1220
-	if (!$requeter) {
1221
-		return "BEGIN TRANSACTION";
1222
-	}
1223
-	spip_sqlite::demarrer_transaction($serveur);
1220
+    if (!$requeter) {
1221
+        return "BEGIN TRANSACTION";
1222
+    }
1223
+    spip_sqlite::demarrer_transaction($serveur);
1224 1224
 
1225
-	return true;
1225
+    return true;
1226 1226
 }
1227 1227
 
1228 1228
 /**
@@ -1236,12 +1236,12 @@  discard block
 block discarded – undo
1236 1236
  *     string si texte de la requête demandé, true sinon
1237 1237
  **/
1238 1238
 function spip_sqlite_terminer_transaction($serveur = '', $requeter = true) {
1239
-	if (!$requeter) {
1240
-		return "COMMIT";
1241
-	}
1242
-	spip_sqlite::finir_transaction($serveur);
1239
+    if (!$requeter) {
1240
+        return "COMMIT";
1241
+    }
1242
+    spip_sqlite::finir_transaction($serveur);
1243 1243
 
1244
-	return true;
1244
+    return true;
1245 1245
 }
1246 1246
 
1247 1247
 
@@ -1256,27 +1256,27 @@  discard block
 block discarded – undo
1256 1256
  *     Liste des noms de bases
1257 1257
  **/
1258 1258
 function spip_sqlite_listdbs($serveur = '', $requeter = true) {
1259
-	_sqlite_init();
1259
+    _sqlite_init();
1260 1260
 
1261
-	if (!is_dir($d = substr(_DIR_DB, 0, -1))) {
1262
-		return array();
1263
-	}
1261
+    if (!is_dir($d = substr(_DIR_DB, 0, -1))) {
1262
+        return array();
1263
+    }
1264 1264
 
1265
-	include_spip('inc/flock');
1266
-	$bases = preg_files($d, $pattern = '(.*)\.sqlite$');
1267
-	$bds = array();
1265
+    include_spip('inc/flock');
1266
+    $bases = preg_files($d, $pattern = '(.*)\.sqlite$');
1267
+    $bds = array();
1268 1268
 
1269
-	foreach ($bases as $b) {
1270
-		// pas de bases commencant pas sqlite 
1271
-		// (on s'en sert pour l'installation pour simuler la presence d'un serveur)
1272
-		// les bases sont de la forme _sqliteX_tmp_spip_install.sqlite
1273
-		if (strpos($b, '_sqlite')) {
1274
-			continue;
1275
-		}
1276
-		$bds[] = preg_replace(";.*/$pattern;iS", '$1', $b);
1277
-	}
1269
+    foreach ($bases as $b) {
1270
+        // pas de bases commencant pas sqlite 
1271
+        // (on s'en sert pour l'installation pour simuler la presence d'un serveur)
1272
+        // les bases sont de la forme _sqliteX_tmp_spip_install.sqlite
1273
+        if (strpos($b, '_sqlite')) {
1274
+            continue;
1275
+        }
1276
+        $bds[] = preg_replace(";.*/$pattern;iS", '$1', $b);
1277
+    }
1278 1278
 
1279
-	return $bds;
1279
+    return $bds;
1280 1280
 }
1281 1281
 
1282 1282
 
@@ -1291,9 +1291,9 @@  discard block
 block discarded – undo
1291 1291
  * @return string       Texte de sélection pour la requête
1292 1292
  */
1293 1293
 function spip_sqlite_multi($objet, $lang) {
1294
-	$r = "EXTRAIRE_MULTI(" . $objet . ", '" . $lang . "') AS multi";
1294
+    $r = "EXTRAIRE_MULTI(" . $objet . ", '" . $lang . "') AS multi";
1295 1295
 
1296
-	return $r;
1296
+    return $r;
1297 1297
 }
1298 1298
 
1299 1299
 
@@ -1310,15 +1310,15 @@  discard block
 block discarded – undo
1310 1310
  * @return bool|string true / false / requete
1311 1311
  **/
1312 1312
 function spip_sqlite_optimize($table, $serveur = '', $requeter = true) {
1313
-	static $do = false;
1314
-	if ($requeter and $do) {
1315
-		return true;
1316
-	}
1317
-	if ($requeter) {
1318
-		$do = true;
1319
-	}
1313
+    static $do = false;
1314
+    if ($requeter and $do) {
1315
+        return true;
1316
+    }
1317
+    if ($requeter) {
1318
+        $do = true;
1319
+    }
1320 1320
 
1321
-	return spip_sqlite_query("VACUUM", $serveur, $requeter);
1321
+    return spip_sqlite_query("VACUUM", $serveur, $requeter);
1322 1322
 }
1323 1323
 
1324 1324
 
@@ -1335,15 +1335,15 @@  discard block
 block discarded – undo
1335 1335
  *    Donnée prête à être utilisée par le gestionnaire SQL
1336 1336
  */
1337 1337
 function spip_sqlite_quote($v, $type = '') {
1338
-	if (!is_array($v)) {
1339
-		return _sqlite_calculer_cite($v, $type);
1340
-	}
1341
-	// si c'est un tableau, le parcourir en propageant le type
1342
-	foreach ($v as $k => $r) {
1343
-		$v[$k] = spip_sqlite_quote($r, $type);
1344
-	}
1338
+    if (!is_array($v)) {
1339
+        return _sqlite_calculer_cite($v, $type);
1340
+    }
1341
+    // si c'est un tableau, le parcourir en propageant le type
1342
+    foreach ($v as $k => $r) {
1343
+        $v[$k] = spip_sqlite_quote($r, $type);
1344
+    }
1345 1345
 
1346
-	return join(",", $v);
1346
+    return join(",", $v);
1347 1347
 }
1348 1348
 
1349 1349
 
@@ -1360,9 +1360,9 @@  discard block
 block discarded – undo
1360 1360
  *     Expression SQL
1361 1361
  **/
1362 1362
 function spip_sqlite_date_proche($champ, $interval, $unite) {
1363
-	$op = (($interval <= 0) ? '>' : '<');
1363
+    $op = (($interval <= 0) ? '>' : '<');
1364 1364
 
1365
-	return "($champ $op datetime('" . date("Y-m-d H:i:s") . "', '$interval $unite'))";
1365
+    return "($champ $op datetime('" . date("Y-m-d H:i:s") . "', '$interval $unite'))";
1366 1366
 }
1367 1367
 
1368 1368
 
@@ -1380,44 +1380,44 @@  discard block
 block discarded – undo
1380 1380
  *     l'état de la table après la réparation
1381 1381
  */
1382 1382
 function spip_sqlite_repair($table, $serveur = '', $requeter = true) {
1383
-	if ($desc = spip_sqlite_showtable($table, $serveur)
1384
-		and isset($desc['field'])
1385
-		and is_array($desc['field'])
1386
-	) {
1387
-		foreach ($desc['field'] as $c => $d) {
1388
-			if (preg_match(",^(tinytext|mediumtext|text|longtext|varchar|char),i", $d)
1389
-				and stripos($d, "NOT NULL") !== false
1390
-				and stripos($d, "DEFAULT") === false
1391
-				/* pas touche aux cles primaires */
1392
-				and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c)
1393
-			) {
1394
-				spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT ''", $serveur);
1395
-				spip_log("ALTER $q", "repair" . _LOG_INFO_IMPORTANTE);
1396
-			}
1397
-			if (preg_match(",^(INTEGER),i", $d)
1398
-				and stripos($d, "NOT NULL") !== false
1399
-				and stripos($d, "DEFAULT") === false
1400
-				/* pas touche aux cles primaires */
1401
-				and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c)
1402
-			) {
1403
-				spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0'", $serveur);
1404
-				spip_log("ALTER $q", "repair" . _LOG_INFO_IMPORTANTE);
1405
-			}
1406
-			if (preg_match(",^(datetime),i", $d)
1407
-				and stripos($d, "NOT NULL") !== false
1408
-				and stripos($d, "DEFAULT") === false
1409
-				/* pas touche aux cles primaires */
1410
-				and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c)
1411
-			) {
1412
-				spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0000-00-00 00:00:00'", $serveur);
1413
-				spip_log("ALTER $q", "repair" . _LOG_INFO_IMPORTANTE);
1414
-			}
1415
-		}
1416
-
1417
-		return array(" OK ");
1418
-	}
1419
-
1420
-	return array(" ERROR ");
1383
+    if ($desc = spip_sqlite_showtable($table, $serveur)
1384
+        and isset($desc['field'])
1385
+        and is_array($desc['field'])
1386
+    ) {
1387
+        foreach ($desc['field'] as $c => $d) {
1388
+            if (preg_match(",^(tinytext|mediumtext|text|longtext|varchar|char),i", $d)
1389
+                and stripos($d, "NOT NULL") !== false
1390
+                and stripos($d, "DEFAULT") === false
1391
+                /* pas touche aux cles primaires */
1392
+                and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c)
1393
+            ) {
1394
+                spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT ''", $serveur);
1395
+                spip_log("ALTER $q", "repair" . _LOG_INFO_IMPORTANTE);
1396
+            }
1397
+            if (preg_match(",^(INTEGER),i", $d)
1398
+                and stripos($d, "NOT NULL") !== false
1399
+                and stripos($d, "DEFAULT") === false
1400
+                /* pas touche aux cles primaires */
1401
+                and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c)
1402
+            ) {
1403
+                spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0'", $serveur);
1404
+                spip_log("ALTER $q", "repair" . _LOG_INFO_IMPORTANTE);
1405
+            }
1406
+            if (preg_match(",^(datetime),i", $d)
1407
+                and stripos($d, "NOT NULL") !== false
1408
+                and stripos($d, "DEFAULT") === false
1409
+                /* pas touche aux cles primaires */
1410
+                and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c)
1411
+            ) {
1412
+                spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0000-00-00 00:00:00'", $serveur);
1413
+                spip_log("ALTER $q", "repair" . _LOG_INFO_IMPORTANTE);
1414
+            }
1415
+        }
1416
+
1417
+        return array(" OK ");
1418
+    }
1419
+
1420
+    return array(" ERROR ");
1421 1421
 }
1422 1422
 
1423 1423
 
@@ -1446,23 +1446,23 @@  discard block
 block discarded – undo
1446 1446
  *     - False en cas d'erreur.
1447 1447
  **/
1448 1448
 function spip_sqlite_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1449
-	if (!$desc) {
1450
-		$desc = description_table($table, $serveur);
1451
-	}
1452
-	if (!$desc) {
1453
-		die("$table insertion sans description");
1454
-	}
1455
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1449
+    if (!$desc) {
1450
+        $desc = description_table($table, $serveur);
1451
+    }
1452
+    if (!$desc) {
1453
+        die("$table insertion sans description");
1454
+    }
1455
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1456 1456
 
1457
-	foreach ($couples as $champ => $val) {
1458
-		$couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
1459
-	}
1457
+    foreach ($couples as $champ => $val) {
1458
+        $couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]);
1459
+    }
1460 1460
 
1461
-	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1462
-	$couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
1461
+    // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1462
+    $couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
1463 1463
 
1464
-	return spip_sqlite_query("REPLACE INTO $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1465
-			$couples) . ')', $serveur);
1464
+    return spip_sqlite_query("REPLACE INTO $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1465
+            $couples) . ')', $serveur);
1466 1466
 }
1467 1467
 
1468 1468
 
@@ -1492,13 +1492,13 @@  discard block
 block discarded – undo
1492 1492
  **/
1493 1493
 function spip_sqlite_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1494 1494
 
1495
-	// boucler pour trainter chaque requete independemment
1496
-	foreach ($tab_couples as $couples) {
1497
-		$retour = spip_sqlite_replace($table, $couples, $desc, $serveur, $requeter);
1498
-	}
1495
+    // boucler pour trainter chaque requete independemment
1496
+    foreach ($tab_couples as $couples) {
1497
+        $retour = spip_sqlite_replace($table, $couples, $desc, $serveur, $requeter);
1498
+    }
1499 1499
 
1500
-	// renvoie le dernier id
1501
-	return $retour;
1500
+    // renvoie le dernier id
1501
+    return $retour;
1502 1502
 }
1503 1503
 
1504 1504
 
@@ -1525,44 +1525,44 @@  discard block
 block discarded – undo
1525 1525
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
1526 1526
  */
1527 1527
 function spip_sqlite_select(
1528
-	$select,
1529
-	$from,
1530
-	$where = '',
1531
-	$groupby = '',
1532
-	$orderby = '',
1533
-	$limit = '',
1534
-	$having = '',
1535
-	$serveur = '',
1536
-	$requeter = true
1528
+    $select,
1529
+    $from,
1530
+    $where = '',
1531
+    $groupby = '',
1532
+    $orderby = '',
1533
+    $limit = '',
1534
+    $having = '',
1535
+    $serveur = '',
1536
+    $requeter = true
1537 1537
 ) {
1538 1538
 
1539
-	// version() n'est pas connu de sqlite
1540
-	$select = str_replace('version()', 'sqlite_version()', $select);
1539
+    // version() n'est pas connu de sqlite
1540
+    $select = str_replace('version()', 'sqlite_version()', $select);
1541 1541
 
1542
-	// recomposer from
1543
-	$from = (!is_array($from) ? $from : _sqlite_calculer_select_as($from));
1542
+    // recomposer from
1543
+    $from = (!is_array($from) ? $from : _sqlite_calculer_select_as($from));
1544 1544
 
1545
-	$query =
1546
-		_sqlite_calculer_expression('SELECT', $select, ', ')
1547
-		. _sqlite_calculer_expression('FROM', $from, ', ')
1548
-		. _sqlite_calculer_expression('WHERE', $where)
1549
-		. _sqlite_calculer_expression('GROUP BY', $groupby, ',')
1550
-		. _sqlite_calculer_expression('HAVING', $having)
1551
-		. ($orderby ? ("\nORDER BY " . _sqlite_calculer_order($orderby)) : '')
1552
-		. ($limit ? "\nLIMIT $limit" : '');
1545
+    $query =
1546
+        _sqlite_calculer_expression('SELECT', $select, ', ')
1547
+        . _sqlite_calculer_expression('FROM', $from, ', ')
1548
+        . _sqlite_calculer_expression('WHERE', $where)
1549
+        . _sqlite_calculer_expression('GROUP BY', $groupby, ',')
1550
+        . _sqlite_calculer_expression('HAVING', $having)
1551
+        . ($orderby ? ("\nORDER BY " . _sqlite_calculer_order($orderby)) : '')
1552
+        . ($limit ? "\nLIMIT $limit" : '');
1553 1553
 
1554
-	// dans un select, on doit renvoyer la requête en cas d'erreur
1555
-	$res = spip_sqlite_query($query, $serveur, $requeter);
1556
-	// texte de la requete demande ?
1557
-	if (!$requeter) {
1558
-		return $res;
1559
-	}
1560
-	// erreur survenue ?
1561
-	if ($res === false) {
1562
-		return spip_sqlite::traduire_requete($query, $serveur);
1563
-	}
1554
+    // dans un select, on doit renvoyer la requête en cas d'erreur
1555
+    $res = spip_sqlite_query($query, $serveur, $requeter);
1556
+    // texte de la requete demande ?
1557
+    if (!$requeter) {
1558
+        return $res;
1559
+    }
1560
+    // erreur survenue ?
1561
+    if ($res === false) {
1562
+        return spip_sqlite::traduire_requete($query, $serveur);
1563
+    }
1564 1564
 
1565
-	return $res;
1565
+    return $res;
1566 1566
 }
1567 1567
 
1568 1568
 
@@ -1581,31 +1581,31 @@  discard block
 block discarded – undo
1581 1581
  *     - False en cas d'erreur.
1582 1582
  **/
1583 1583
 function spip_sqlite_selectdb($db, $serveur = '', $requeter = true) {
1584
-	_sqlite_init();
1584
+    _sqlite_init();
1585 1585
 
1586
-	// interdire la creation d'une nouvelle base, 
1587
-	// sauf si on est dans l'installation
1588
-	if (!is_file($f = _DIR_DB . $db . '.sqlite')
1589
-		&& (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)
1590
-	) {
1591
-		spip_log("Il est interdit de creer la base $db", 'sqlite.' . _LOG_HS);
1586
+    // interdire la creation d'une nouvelle base, 
1587
+    // sauf si on est dans l'installation
1588
+    if (!is_file($f = _DIR_DB . $db . '.sqlite')
1589
+        && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)
1590
+    ) {
1591
+        spip_log("Il est interdit de creer la base $db", 'sqlite.' . _LOG_HS);
1592 1592
 
1593
-		return false;
1594
-	}
1593
+        return false;
1594
+    }
1595 1595
 
1596
-	// se connecter a la base indiquee
1597
-	// avec les identifiants connus
1598
-	$index = $serveur ? $serveur : 0;
1596
+    // se connecter a la base indiquee
1597
+    // avec les identifiants connus
1598
+    $index = $serveur ? $serveur : 0;
1599 1599
 
1600
-	if ($link = spip_connect_db('', '', '', '', '@selectdb@' . $db, $serveur, '', '')) {
1601
-		if (($db == $link['db']) && $GLOBALS['connexions'][$index] = $link) {
1602
-			return $db;
1603
-		}
1604
-	} else {
1605
-		spip_log("Impossible de selectionner la base $db", 'sqlite.' . _LOG_HS);
1600
+    if ($link = spip_connect_db('', '', '', '', '@selectdb@' . $db, $serveur, '', '')) {
1601
+        if (($db == $link['db']) && $GLOBALS['connexions'][$index] = $link) {
1602
+            return $db;
1603
+        }
1604
+    } else {
1605
+        spip_log("Impossible de selectionner la base $db", 'sqlite.' . _LOG_HS);
1606 1606
 
1607
-		return false;
1608
-	}
1607
+        return false;
1608
+    }
1609 1609
 
1610 1610
 }
1611 1611
 
@@ -1621,8 +1621,8 @@  discard block
 block discarded – undo
1621 1621
  * @return void
1622 1622
  */
1623 1623
 function spip_sqlite_set_charset($charset, $serveur = '', $requeter = true) {
1624
-	# spip_log("Gestion charset sql a ecrire : "."SET NAMES "._q($charset), 'sqlite.'._LOG_ERREUR);
1625
-	# return spip_sqlite_query("SET NAMES ". spip_sqlite_quote($charset), $serveur); //<-- Passe pas !
1624
+    # spip_log("Gestion charset sql a ecrire : "."SET NAMES "._q($charset), 'sqlite.'._LOG_ERREUR);
1625
+    # return spip_sqlite_query("SET NAMES ". spip_sqlite_quote($charset), $serveur); //<-- Passe pas !
1626 1626
 }
1627 1627
 
1628 1628
 
@@ -1640,21 +1640,21 @@  discard block
 block discarded – undo
1640 1640
  *     Ressource à utiliser avec sql_fetch()
1641 1641
  **/
1642 1642
 function spip_sqlite_showbase($match, $serveur = '', $requeter = true) {
1643
-	// type est le type d'entrée : table / index / view
1644
-	// on ne retourne que les tables (?) et non les vues...
1645
-	# ESCAPE non supporte par les versions sqlite <3
1646
-	#	return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name LIKE "._q($match)." ESCAPE '\'", $serveur, $requeter);
1647
-	$match = preg_quote($match);
1648
-	$match = str_replace("\\\_", "[[TIRETBAS]]", $match);
1649
-	$match = str_replace("\\\%", "[[POURCENT]]", $match);
1650
-	$match = str_replace("_", ".", $match);
1651
-	$match = str_replace("%", ".*", $match);
1652
-	$match = str_replace("[[TIRETBAS]]", "_", $match);
1653
-	$match = str_replace("[[POURCENT]]", "%", $match);
1654
-	$match = "^$match$";
1655
-
1656
-	return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP " . _q($match),
1657
-		$serveur, $requeter);
1643
+    // type est le type d'entrée : table / index / view
1644
+    // on ne retourne que les tables (?) et non les vues...
1645
+    # ESCAPE non supporte par les versions sqlite <3
1646
+    #	return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name LIKE "._q($match)." ESCAPE '\'", $serveur, $requeter);
1647
+    $match = preg_quote($match);
1648
+    $match = str_replace("\\\_", "[[TIRETBAS]]", $match);
1649
+    $match = str_replace("\\\%", "[[POURCENT]]", $match);
1650
+    $match = str_replace("_", ".", $match);
1651
+    $match = str_replace("%", ".*", $match);
1652
+    $match = str_replace("[[TIRETBAS]]", "_", $match);
1653
+    $match = str_replace("[[POURCENT]]", "%", $match);
1654
+    $match = "^$match$";
1655
+
1656
+    return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP " . _q($match),
1657
+        $serveur, $requeter);
1658 1658
 }
1659 1659
 
1660 1660
 define('_SQLITE_RE_SHOW_TABLE', '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/');
@@ -1677,131 +1677,131 @@  discard block
 block discarded – undo
1677 1677
  *     - array description de la table sinon
1678 1678
  */
1679 1679
 function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true) {
1680
-	$query =
1681
-		'SELECT sql, type FROM'
1682
-		. ' (SELECT * FROM sqlite_master UNION ALL'
1683
-		. ' SELECT * FROM sqlite_temp_master)'
1684
-		. " WHERE tbl_name LIKE '$nom_table'"
1685
-		. " AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'"
1686
-		. ' ORDER BY substr(type,2,1), name';
1687
-
1688
-	$a = spip_sqlite_query($query, $serveur, $requeter);
1689
-	if (!$a) {
1690
-		return "";
1691
-	}
1692
-	if (!$requeter) {
1693
-		return $a;
1694
-	}
1695
-	if (!($a = spip_sqlite_fetch($a, null, $serveur))) {
1696
-		return "";
1697
-	}
1698
-	$vue = ($a['type'] == 'view'); // table | vue
1699
-
1700
-	// c'est une table
1701
-	// il faut parser le create
1702
-	if (!$vue) {
1703
-		if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)) {
1704
-			return "";
1705
-		} else {
1706
-			$desc = $r[1];
1707
-			// extraction d'une KEY éventuelle en prenant garde de ne pas
1708
-			// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
1709
-			if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
1710
-				$namedkeys = $r[2];
1711
-				$desc = $r[1];
1712
-			} else {
1713
-				$namedkeys = "";
1714
-			}
1715
-
1716
-			$fields = array();
1717
-			$keys = array();
1718
-
1719
-			// enlever les contenus des valeurs DEFAULT 'xxx' qui pourraient perturber
1720
-			// par exemple s'il contiennent une virgule.
1721
-			// /!\ cela peut aussi echapper le nom des champs si la table a eu des operations avec SQLite Manager !
1722
-			list($desc, $echaps) = query_echappe_textes($desc);
1723
-
1724
-			// separer toutes les descriptions de champs, separes par des virgules
1725
-			# /!\ explode peut exploser aussi DECIMAL(10,2) !
1726
-			$k_precedent = null;
1727
-			foreach (explode(",", $desc) as $v) {
1728
-
1729
-				preg_match("/^\s*([^\s]+)\s+(.*)/", $v, $r);
1730
-				// Les cles de champs peuvent etre entourees
1731
-				// de guillements doubles " , simples ', graves ` ou de crochets [ ],  ou rien.
1732
-				// http://www.sqlite.org/lang_keywords.html
1733
-				$k = strtolower(query_reinjecte_textes($r[1], $echaps)); // champ, "champ", [champ]...
1734
-				if ($char = strpbrk($k[0], '\'"[`')) {
1735
-					$k = trim($k, $char);
1736
-					if ($char == '[') {
1737
-						$k = rtrim($k, ']');
1738
-					}
1739
-				}
1740
-				$def = query_reinjecte_textes($r[2], $echaps); // valeur du champ
1741
-
1742
-				// rustine pour DECIMAL(10,2)
1743
-				// s'il y a une parenthèse fermante dans la clé
1744
-				// ou dans la définition sans qu'il n'y ait une ouverture avant
1745
-				if (false !== strpos($k, ')') or preg_match('/^[^\(]*\)/', $def)) {
1746
-					$fields[$k_precedent] .= ',' . $k . ' ' . $def;
1747
-					continue;
1748
-				}
1749
-
1750
-				// la primary key peut etre dans une des descriptions de champs
1751
-				// et non en fin de table, cas encore decouvert avec Sqlite Manager
1752
-				if (stripos($r[2], 'PRIMARY KEY') !== false) {
1753
-					$keys['PRIMARY KEY'] = $k;
1754
-				}
1755
-
1756
-				$fields[$k] = $def;
1757
-				$k_precedent = $k;
1758
-			}
1759
-			// key inclues dans la requete
1760
-			foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
1761
-				if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
1762
-					$k = str_replace("`", '', trim($r[1]));
1763
-					$t = trim(strtolower(str_replace("`", '', $r[2])), '"');
1764
-					if ($k && !isset($keys[$k])) {
1765
-						$keys[$k] = $t;
1766
-					} else {
1767
-						$keys[] = $t;
1768
-					}
1769
-				}
1770
-			}
1771
-			// sinon ajouter les key index
1772
-			$query =
1773
-				'SELECT name,sql FROM'
1774
-				. ' (SELECT * FROM sqlite_master UNION ALL'
1775
-				. ' SELECT * FROM sqlite_temp_master)'
1776
-				. " WHERE tbl_name LIKE '$nom_table'"
1777
-				. " AND type='index' AND name NOT LIKE 'sqlite_%'"
1778
-				. 'ORDER BY substr(type,2,1), name';
1779
-			$a = spip_sqlite_query($query, $serveur, $requeter);
1780
-			while ($r = spip_sqlite_fetch($a, null, $serveur)) {
1781
-				$key = str_replace($nom_table . '_', '', $r['name']); // enlever le nom de la table ajoute a l'index
1782
-				$keytype = "KEY";
1783
-				if (strpos($r['sql'], "UNIQUE INDEX") !== false) {
1784
-					$keytype = "UNIQUE KEY";
1785
-				}
1786
-				$colonnes = preg_replace(',.*\((.*)\).*,', '$1', $r['sql']);
1787
-				$keys[$keytype . ' ' . $key] = $colonnes;
1788
-			}
1789
-		}
1790
-
1791
-	} // c'est une vue, on liste les champs disponibles simplement
1792
-	else {
1793
-		if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)) { // limit 1
1794
-			$fields = array();
1795
-			foreach ($res as $c => $v) {
1796
-				$fields[$c] = '';
1797
-			}
1798
-			$keys = array();
1799
-		} else {
1800
-			return "";
1801
-		}
1802
-	}
1803
-
1804
-	return array('field' => $fields, 'key' => $keys);
1680
+    $query =
1681
+        'SELECT sql, type FROM'
1682
+        . ' (SELECT * FROM sqlite_master UNION ALL'
1683
+        . ' SELECT * FROM sqlite_temp_master)'
1684
+        . " WHERE tbl_name LIKE '$nom_table'"
1685
+        . " AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'"
1686
+        . ' ORDER BY substr(type,2,1), name';
1687
+
1688
+    $a = spip_sqlite_query($query, $serveur, $requeter);
1689
+    if (!$a) {
1690
+        return "";
1691
+    }
1692
+    if (!$requeter) {
1693
+        return $a;
1694
+    }
1695
+    if (!($a = spip_sqlite_fetch($a, null, $serveur))) {
1696
+        return "";
1697
+    }
1698
+    $vue = ($a['type'] == 'view'); // table | vue
1699
+
1700
+    // c'est une table
1701
+    // il faut parser le create
1702
+    if (!$vue) {
1703
+        if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)) {
1704
+            return "";
1705
+        } else {
1706
+            $desc = $r[1];
1707
+            // extraction d'une KEY éventuelle en prenant garde de ne pas
1708
+            // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
1709
+            if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
1710
+                $namedkeys = $r[2];
1711
+                $desc = $r[1];
1712
+            } else {
1713
+                $namedkeys = "";
1714
+            }
1715
+
1716
+            $fields = array();
1717
+            $keys = array();
1718
+
1719
+            // enlever les contenus des valeurs DEFAULT 'xxx' qui pourraient perturber
1720
+            // par exemple s'il contiennent une virgule.
1721
+            // /!\ cela peut aussi echapper le nom des champs si la table a eu des operations avec SQLite Manager !
1722
+            list($desc, $echaps) = query_echappe_textes($desc);
1723
+
1724
+            // separer toutes les descriptions de champs, separes par des virgules
1725
+            # /!\ explode peut exploser aussi DECIMAL(10,2) !
1726
+            $k_precedent = null;
1727
+            foreach (explode(",", $desc) as $v) {
1728
+
1729
+                preg_match("/^\s*([^\s]+)\s+(.*)/", $v, $r);
1730
+                // Les cles de champs peuvent etre entourees
1731
+                // de guillements doubles " , simples ', graves ` ou de crochets [ ],  ou rien.
1732
+                // http://www.sqlite.org/lang_keywords.html
1733
+                $k = strtolower(query_reinjecte_textes($r[1], $echaps)); // champ, "champ", [champ]...
1734
+                if ($char = strpbrk($k[0], '\'"[`')) {
1735
+                    $k = trim($k, $char);
1736
+                    if ($char == '[') {
1737
+                        $k = rtrim($k, ']');
1738
+                    }
1739
+                }
1740
+                $def = query_reinjecte_textes($r[2], $echaps); // valeur du champ
1741
+
1742
+                // rustine pour DECIMAL(10,2)
1743
+                // s'il y a une parenthèse fermante dans la clé
1744
+                // ou dans la définition sans qu'il n'y ait une ouverture avant
1745
+                if (false !== strpos($k, ')') or preg_match('/^[^\(]*\)/', $def)) {
1746
+                    $fields[$k_precedent] .= ',' . $k . ' ' . $def;
1747
+                    continue;
1748
+                }
1749
+
1750
+                // la primary key peut etre dans une des descriptions de champs
1751
+                // et non en fin de table, cas encore decouvert avec Sqlite Manager
1752
+                if (stripos($r[2], 'PRIMARY KEY') !== false) {
1753
+                    $keys['PRIMARY KEY'] = $k;
1754
+                }
1755
+
1756
+                $fields[$k] = $def;
1757
+                $k_precedent = $k;
1758
+            }
1759
+            // key inclues dans la requete
1760
+            foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
1761
+                if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
1762
+                    $k = str_replace("`", '', trim($r[1]));
1763
+                    $t = trim(strtolower(str_replace("`", '', $r[2])), '"');
1764
+                    if ($k && !isset($keys[$k])) {
1765
+                        $keys[$k] = $t;
1766
+                    } else {
1767
+                        $keys[] = $t;
1768
+                    }
1769
+                }
1770
+            }
1771
+            // sinon ajouter les key index
1772
+            $query =
1773
+                'SELECT name,sql FROM'
1774
+                . ' (SELECT * FROM sqlite_master UNION ALL'
1775
+                . ' SELECT * FROM sqlite_temp_master)'
1776
+                . " WHERE tbl_name LIKE '$nom_table'"
1777
+                . " AND type='index' AND name NOT LIKE 'sqlite_%'"
1778
+                . 'ORDER BY substr(type,2,1), name';
1779
+            $a = spip_sqlite_query($query, $serveur, $requeter);
1780
+            while ($r = spip_sqlite_fetch($a, null, $serveur)) {
1781
+                $key = str_replace($nom_table . '_', '', $r['name']); // enlever le nom de la table ajoute a l'index
1782
+                $keytype = "KEY";
1783
+                if (strpos($r['sql'], "UNIQUE INDEX") !== false) {
1784
+                    $keytype = "UNIQUE KEY";
1785
+                }
1786
+                $colonnes = preg_replace(',.*\((.*)\).*,', '$1', $r['sql']);
1787
+                $keys[$keytype . ' ' . $key] = $colonnes;
1788
+            }
1789
+        }
1790
+
1791
+    } // c'est une vue, on liste les champs disponibles simplement
1792
+    else {
1793
+        if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)) { // limit 1
1794
+            $fields = array();
1795
+            foreach ($res as $c => $v) {
1796
+                $fields[$c] = '';
1797
+            }
1798
+            $keys = array();
1799
+        } else {
1800
+            return "";
1801
+        }
1802
+    }
1803
+
1804
+    return array('field' => $fields, 'key' => $keys);
1805 1805
 
1806 1806
 }
1807 1807
 
@@ -1828,20 +1828,20 @@  discard block
 block discarded – undo
1828 1828
  *     - array Tableau décrivant la requête et son temps d'exécution si var_profile est actif
1829 1829
  */
1830 1830
 function spip_sqlite_update($table, $champs, $where = '', $desc = '', $serveur = '', $requeter = true) {
1831
-	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1832
-	$champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1831
+    // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1832
+    $champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1833 1833
 
1834
-	$set = array();
1835
-	foreach ($champs as $champ => $val) {
1836
-		$set[] = $champ . "=$val";
1837
-	}
1838
-	if (!empty($set)) {
1839
-		return spip_sqlite_query(
1840
-			_sqlite_calculer_expression('UPDATE', $table, ',')
1841
-			. _sqlite_calculer_expression('SET', $set, ',')
1842
-			. _sqlite_calculer_expression('WHERE', $where),
1843
-			$serveur, $requeter);
1844
-	}
1834
+    $set = array();
1835
+    foreach ($champs as $champ => $val) {
1836
+        $set[] = $champ . "=$val";
1837
+    }
1838
+    if (!empty($set)) {
1839
+        return spip_sqlite_query(
1840
+            _sqlite_calculer_expression('UPDATE', $table, ',')
1841
+            . _sqlite_calculer_expression('SET', $set, ',')
1842
+            . _sqlite_calculer_expression('WHERE', $where),
1843
+            $serveur, $requeter);
1844
+    }
1845 1845
 }
1846 1846
 
1847 1847
 
@@ -1871,30 +1871,30 @@  discard block
 block discarded – undo
1871 1871
  */
1872 1872
 function spip_sqlite_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1873 1873
 
1874
-	if (!$champs) {
1875
-		return;
1876
-	}
1877
-	if (!$desc) {
1878
-		$desc = description_table($table, $serveur);
1879
-	}
1880
-	if (!$desc) {
1881
-		die("$table insertion sans description");
1882
-	}
1883
-	$fields = $desc['field'];
1874
+    if (!$champs) {
1875
+        return;
1876
+    }
1877
+    if (!$desc) {
1878
+        $desc = description_table($table, $serveur);
1879
+    }
1880
+    if (!$desc) {
1881
+        die("$table insertion sans description");
1882
+    }
1883
+    $fields = $desc['field'];
1884 1884
 
1885
-	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1886
-	$champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1885
+    // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
1886
+    $champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur);
1887 1887
 
1888
-	$set = array();
1889
-	foreach ($champs as $champ => $val) {
1890
-		$set[] = $champ . '=' . _sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : '');
1891
-	}
1888
+    $set = array();
1889
+    foreach ($champs as $champ => $val) {
1890
+        $set[] = $champ . '=' . _sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : '');
1891
+    }
1892 1892
 
1893
-	return spip_sqlite_query(
1894
-		_sqlite_calculer_expression('UPDATE', $table, ',')
1895
-		. _sqlite_calculer_expression('SET', $set, ',')
1896
-		. _sqlite_calculer_expression('WHERE', $where),
1897
-		$serveur, $requeter);
1893
+    return spip_sqlite_query(
1894
+        _sqlite_calculer_expression('UPDATE', $table, ',')
1895
+        . _sqlite_calculer_expression('SET', $set, ',')
1896
+        . _sqlite_calculer_expression('WHERE', $where),
1897
+        $serveur, $requeter);
1898 1898
 }
1899 1899
 
1900 1900
 
@@ -1912,17 +1912,17 @@  discard block
 block discarded – undo
1912 1912
  * @return void
1913 1913
  */
1914 1914
 function _sqlite_init() {
1915
-	if (!defined('_DIR_DB')) {
1916
-		define('_DIR_DB', _DIR_ETC . 'bases/');
1917
-	}
1918
-	if (!defined('_SQLITE_CHMOD')) {
1919
-		define('_SQLITE_CHMOD', _SPIP_CHMOD);
1920
-	}
1915
+    if (!defined('_DIR_DB')) {
1916
+        define('_DIR_DB', _DIR_ETC . 'bases/');
1917
+    }
1918
+    if (!defined('_SQLITE_CHMOD')) {
1919
+        define('_SQLITE_CHMOD', _SPIP_CHMOD);
1920
+    }
1921 1921
 
1922
-	if (!is_dir($d = _DIR_DB)) {
1923
-		include_spip('inc/flock');
1924
-		sous_repertoire($d);
1925
-	}
1922
+    if (!is_dir($d = _DIR_DB)) {
1923
+        include_spip('inc/flock');
1924
+        sous_repertoire($d);
1925
+    }
1926 1926
 }
1927 1927
 
1928 1928
 
@@ -1936,20 +1936,20 @@  discard block
 block discarded – undo
1936 1936
  * @return bool|int
1937 1937
  */
1938 1938
 function _sqlite_is_version($version = '', $link = '', $serveur = '', $requeter = true) {
1939
-	if ($link === '') {
1940
-		$link = _sqlite_link($serveur);
1941
-	}
1942
-	if (!$link) {
1943
-		return false;
1944
-	}
1939
+    if ($link === '') {
1940
+        $link = _sqlite_link($serveur);
1941
+    }
1942
+    if (!$link) {
1943
+        return false;
1944
+    }
1945 1945
 
1946
-	$v = 3;
1946
+    $v = 3;
1947 1947
 
1948
-	if (!$version) {
1949
-		return $v;
1950
-	}
1948
+    if (!$version) {
1949
+        return $v;
1950
+    }
1951 1951
 
1952
-	return ($version == $v);
1952
+    return ($version == $v);
1953 1953
 }
1954 1954
 
1955 1955
 
@@ -1960,9 +1960,9 @@  discard block
 block discarded – undo
1960 1960
  * @return Object Information de connexion pour SQLite
1961 1961
  */
1962 1962
 function _sqlite_link($serveur = '') {
1963
-	$link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1963
+    $link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1964 1964
 
1965
-	return $link;
1965
+    return $link;
1966 1966
 }
1967 1967
 
1968 1968
 
@@ -1977,48 +1977,48 @@  discard block
 block discarded – undo
1977 1977
  * @return string|number     Texte ou nombre échappé
1978 1978
  */
1979 1979
 function _sqlite_calculer_cite($v, $type) {
1980
-	if ($type) {
1981
-		if (is_null($v)
1982
-			and stripos($type, "NOT NULL") === false
1983
-		) {
1984
-			return 'NULL';
1985
-		} // null php se traduit en NULL SQL
1986
-
1987
-		if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1988
-			return $v;
1989
-		}
1990
-		if (sql_test_int($type)) {
1991
-			if (is_numeric($v)) {
1992
-				return $v;
1993
-			} elseif (ctype_xdigit(substr($v, 2)) and strncmp($v, '0x', 2) == 0) {
1994
-				return hexdec(substr($v, 2));
1995
-			} else {
1996
-				return intval($v);
1997
-			}
1998
-		}
1999
-	} else {
2000
-		// si on ne connait pas le type on le deduit de $v autant que possible
2001
-		if (is_numeric($v)) {
2002
-			return strval($v);
2003
-		}
2004
-	}
2005
-
2006
-	// trouver un link sqlite pour faire l'echappement
2007
-	foreach ($GLOBALS['connexions'] as $s) {
2008
-		if (
2009
-			$l = $s['link']
2010
-			and is_object($l)
2011
-			and $l instanceof \PDO
2012
-			and $l->getAttribute(\PDO::ATTR_DRIVER_NAME) === 'sqlite'
2013
-		) {
2014
-			return $l->quote($v);
2015
-		}
2016
-	}
2017
-
2018
-	// echapper les ' en ''
2019
-	spip_log("Pas de methode ->quote pour echapper", "sqlite." . _LOG_INFO_IMPORTANTE);
2020
-
2021
-	return ("'" . str_replace("'", "''", $v) . "'");
1980
+    if ($type) {
1981
+        if (is_null($v)
1982
+            and stripos($type, "NOT NULL") === false
1983
+        ) {
1984
+            return 'NULL';
1985
+        } // null php se traduit en NULL SQL
1986
+
1987
+        if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1988
+            return $v;
1989
+        }
1990
+        if (sql_test_int($type)) {
1991
+            if (is_numeric($v)) {
1992
+                return $v;
1993
+            } elseif (ctype_xdigit(substr($v, 2)) and strncmp($v, '0x', 2) == 0) {
1994
+                return hexdec(substr($v, 2));
1995
+            } else {
1996
+                return intval($v);
1997
+            }
1998
+        }
1999
+    } else {
2000
+        // si on ne connait pas le type on le deduit de $v autant que possible
2001
+        if (is_numeric($v)) {
2002
+            return strval($v);
2003
+        }
2004
+    }
2005
+
2006
+    // trouver un link sqlite pour faire l'echappement
2007
+    foreach ($GLOBALS['connexions'] as $s) {
2008
+        if (
2009
+            $l = $s['link']
2010
+            and is_object($l)
2011
+            and $l instanceof \PDO
2012
+            and $l->getAttribute(\PDO::ATTR_DRIVER_NAME) === 'sqlite'
2013
+        ) {
2014
+            return $l->quote($v);
2015
+        }
2016
+    }
2017
+
2018
+    // echapper les ' en ''
2019
+    spip_log("Pas de methode ->quote pour echapper", "sqlite." . _LOG_INFO_IMPORTANTE);
2020
+
2021
+    return ("'" . str_replace("'", "''", $v) . "'");
2022 2022
 }
2023 2023
 
2024 2024
 
@@ -2034,21 +2034,21 @@  discard block
 block discarded – undo
2034 2034
  * @return string            Texte de l'expression, une partie donc, du texte la requête.
2035 2035
  */
2036 2036
 function _sqlite_calculer_expression($expression, $v, $join = 'AND') {
2037
-	if (empty($v)) {
2038
-		return '';
2039
-	}
2037
+    if (empty($v)) {
2038
+        return '';
2039
+    }
2040 2040
 
2041
-	$exp = "\n$expression ";
2041
+    $exp = "\n$expression ";
2042 2042
 
2043
-	if (!is_array($v)) {
2044
-		return $exp . $v;
2045
-	} else {
2046
-		if (strtoupper($join) === 'AND') {
2047
-			return $exp . join("\n\t$join ", array_map('_sqlite_calculer_where', $v));
2048
-		} else {
2049
-			return $exp . join($join, $v);
2050
-		}
2051
-	}
2043
+    if (!is_array($v)) {
2044
+        return $exp . $v;
2045
+    } else {
2046
+        if (strtoupper($join) === 'AND') {
2047
+            return $exp . join("\n\t$join ", array_map('_sqlite_calculer_where', $v));
2048
+        } else {
2049
+            return $exp . join($join, $v);
2050
+        }
2051
+    }
2052 2052
 }
2053 2053
 
2054 2054
 
@@ -2064,7 +2064,7 @@  discard block
 block discarded – undo
2064 2064
  * @return string Texte du orderby préparé
2065 2065
  */
2066 2066
 function _sqlite_calculer_order($orderby) {
2067
-	return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
2067
+    return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
2068 2068
 }
2069 2069
 
2070 2070
 
@@ -2075,26 +2075,26 @@  discard block
 block discarded – undo
2075 2075
  * @return string Sélection de colonnes pour une clause SELECT
2076 2076
  */
2077 2077
 function _sqlite_calculer_select_as($args) {
2078
-	$res = '';
2079
-	foreach ($args as $k => $v) {
2080
-		if (substr($k, -1) == '@') {
2081
-			// c'est une jointure qui se refere au from precedent
2082
-			// pas de virgule
2083
-			$res .= '  ' . $v;
2084
-		} else {
2085
-			if (!is_numeric($k)) {
2086
-				$p = strpos($v, " ");
2087
-				if ($p) {
2088
-					$v = substr($v, 0, $p) . " AS '$k'" . substr($v, $p);
2089
-				} else {
2090
-					$v .= " AS '$k'";
2091
-				}
2092
-			}
2093
-			$res .= ', ' . $v;
2094
-		}
2095
-	}
2096
-
2097
-	return substr($res, 2);
2078
+    $res = '';
2079
+    foreach ($args as $k => $v) {
2080
+        if (substr($k, -1) == '@') {
2081
+            // c'est une jointure qui se refere au from precedent
2082
+            // pas de virgule
2083
+            $res .= '  ' . $v;
2084
+        } else {
2085
+            if (!is_numeric($k)) {
2086
+                $p = strpos($v, " ");
2087
+                if ($p) {
2088
+                    $v = substr($v, 0, $p) . " AS '$k'" . substr($v, $p);
2089
+                } else {
2090
+                    $v .= " AS '$k'";
2091
+                }
2092
+            }
2093
+            $res .= ', ' . $v;
2094
+        }
2095
+    }
2096
+
2097
+    return substr($res, 2);
2098 2098
 }
2099 2099
 
2100 2100
 
@@ -2117,26 +2117,26 @@  discard block
 block discarded – undo
2117 2117
  *     Contrainte pour clause WHERE
2118 2118
  */
2119 2119
 function _sqlite_calculer_where($v) {
2120
-	if (!is_array($v)) {
2121
-		return $v;
2122
-	}
2123
-
2124
-	$op = array_shift($v);
2125
-	if (!($n = count($v))) {
2126
-		return $op;
2127
-	} else {
2128
-		$arg = _sqlite_calculer_where(array_shift($v));
2129
-		if ($n == 1) {
2130
-			return "$op($arg)";
2131
-		} else {
2132
-			$arg2 = _sqlite_calculer_where(array_shift($v));
2133
-			if ($n == 2) {
2134
-				return "($arg $op $arg2)";
2135
-			} else {
2136
-				return "($arg $op ($arg2) : $v[0])";
2137
-			}
2138
-		}
2139
-	}
2120
+    if (!is_array($v)) {
2121
+        return $v;
2122
+    }
2123
+
2124
+    $op = array_shift($v);
2125
+    if (!($n = count($v))) {
2126
+        return $op;
2127
+    } else {
2128
+        $arg = _sqlite_calculer_where(array_shift($v));
2129
+        if ($n == 1) {
2130
+            return "$op($arg)";
2131
+        } else {
2132
+            $arg2 = _sqlite_calculer_where(array_shift($v));
2133
+            if ($n == 2) {
2134
+                return "($arg $op $arg2)";
2135
+            } else {
2136
+                return "($arg $op ($arg2) : $v[0])";
2137
+            }
2138
+        }
2139
+    }
2140 2140
 }
2141 2141
 
2142 2142
 
@@ -2151,19 +2151,19 @@  discard block
 block discarded – undo
2151 2151
  * @return array|bool
2152 2152
  */
2153 2153
 function _sqlite_charger_version($version = '') {
2154
-	$versions = array();
2154
+    $versions = array();
2155 2155
 
2156
-	// version 3
2157
-	if (!$version || $version == 3) {
2158
-		if (extension_loaded('pdo') && extension_loaded('pdo_sqlite')) {
2159
-			$versions[] = 3;
2160
-		}
2161
-	}
2162
-	if ($version) {
2163
-		return in_array($version, $versions);
2164
-	}
2156
+    // version 3
2157
+    if (!$version || $version == 3) {
2158
+        if (extension_loaded('pdo') && extension_loaded('pdo_sqlite')) {
2159
+            $versions[] = 3;
2160
+        }
2161
+    }
2162
+    if ($version) {
2163
+        return in_array($version, $versions);
2164
+    }
2165 2165
 
2166
-	return $versions;
2166
+    return $versions;
2167 2167
 }
2168 2168
 
2169 2169
 
@@ -2201,146 +2201,146 @@  discard block
 block discarded – undo
2201 2201
  */
2202 2202
 function _sqlite_modifier_table($table, $colonne, $opt = array(), $serveur = '') {
2203 2203
 
2204
-	if (is_array($table)) {
2205
-		$table_destination = reset($table);
2206
-		$table_origine = key($table);
2207
-	} else {
2208
-		$table_origine = $table_destination = $table;
2209
-	}
2210
-	// ne prend actuellement qu'un changement
2211
-	// mais pourra etre adapte pour changer plus qu'une colonne a la fois
2212
-	if (is_array($colonne)) {
2213
-		$colonne_destination = reset($colonne);
2214
-		$colonne_origine = key($colonne);
2215
-	} else {
2216
-		$colonne_origine = $colonne_destination = $colonne;
2217
-	}
2218
-	if (!isset($opt['field'])) {
2219
-		$opt['field'] = array();
2220
-	}
2221
-	if (!isset($opt['key'])) {
2222
-		$opt['key'] = array();
2223
-	}
2224
-
2225
-	// si les noms de tables sont differents, pas besoin de table temporaire
2226
-	// on prendra directement le nom de la future table
2227
-	$meme_table = ($table_origine == $table_destination);
2228
-
2229
-	$def_origine = sql_showtable($table_origine, false, $serveur);
2230
-	if (!$def_origine or !isset($def_origine['field'])) {
2231
-		spip_log("Alter table impossible sur $table_origine : table non trouvee", 'sqlite' . _LOG_ERREUR);
2232
-
2233
-		return false;
2234
-	}
2235
-
2236
-
2237
-	$table_tmp = $table_origine . '_tmp';
2238
-
2239
-	// 1) creer une table temporaire avec les modifications	
2240
-	// - DROP : suppression de la colonne
2241
-	// - CHANGE : modification de la colonne
2242
-	// (foreach pour conserver l'ordre des champs)
2243
-
2244
-	// field 
2245
-	$fields = array();
2246
-	// pour le INSERT INTO plus loin
2247
-	// stocker la correspondance nouvelles->anciennes colonnes
2248
-	$fields_correspondances = array();
2249
-	foreach ($def_origine['field'] as $c => $d) {
2250
-
2251
-		if ($colonne_origine && ($c == $colonne_origine)) {
2252
-			// si pas DROP
2253
-			if ($colonne_destination) {
2254
-				$fields[$colonne_destination] = $opt['field'][$colonne_destination];
2255
-				$fields_correspondances[$colonne_destination] = $c;
2256
-			}
2257
-		} else {
2258
-			$fields[$c] = $d;
2259
-			$fields_correspondances[$c] = $c;
2260
-		}
2261
-	}
2262
-	// cas de ADD sqlite2 (ajout du champ en fin de table):
2263
-	if (!$colonne_origine && $colonne_destination) {
2264
-		$fields[$colonne_destination] = $opt['field'][$colonne_destination];
2265
-	}
2266
-
2267
-	// key...
2268
-	$keys = array();
2269
-	foreach ($def_origine['key'] as $c => $d) {
2270
-		$c = str_replace($colonne_origine, $colonne_destination, $c);
2271
-		$d = str_replace($colonne_origine, $colonne_destination, $d);
2272
-		// seulement si on ne supprime pas la colonne !
2273
-		if ($d) {
2274
-			$keys[$c] = $d;
2275
-		}
2276
-	}
2277
-
2278
-	// autres keys, on merge
2279
-	$keys = array_merge($keys, $opt['key']);
2280
-	$queries = array();
2281
-
2282
-	// copier dans destination (si differente de origine), sinon tmp
2283
-	$table_copie = ($meme_table) ? $table_tmp : $table_destination;
2284
-	$autoinc = (isset($keys['PRIMARY KEY'])
2285
-		and $keys['PRIMARY KEY']
2286
-		and stripos($keys['PRIMARY KEY'], ',') === false
2287
-		and stripos($fields[$keys['PRIMARY KEY']], 'default') === false);
2288
-
2289
-	if ($q = _sqlite_requete_create(
2290
-		$table_copie,
2291
-		$fields,
2292
-		$keys,
2293
-		$autoinc,
2294
-		$temporary = false,
2295
-		$ifnotexists = true,
2296
-		$serveur)
2297
-	) {
2298
-		$queries[] = $q;
2299
-	}
2300
-
2301
-
2302
-	// 2) y copier les champs qui vont bien
2303
-	$champs_dest = join(', ', array_keys($fields_correspondances));
2304
-	$champs_ori = join(', ', $fields_correspondances);
2305
-	$queries[] = "INSERT INTO $table_copie ($champs_dest) SELECT $champs_ori FROM $table_origine";
2306
-
2307
-	// 3) supprimer la table d'origine
2308
-	$queries[] = "DROP TABLE $table_origine";
2309
-
2310
-	// 4) renommer la table temporaire 
2311
-	// avec le nom de la table destination
2312
-	// si necessaire
2313
-	if ($meme_table) {
2314
-		$queries[] = "ALTER TABLE $table_copie RENAME TO $table_destination";
2315
-	}
2316
-
2317
-	// 5) remettre les index !
2318
-	foreach ($keys as $k => $v) {
2319
-		if ($k == 'PRIMARY KEY') {
2320
-		} else {
2321
-			// enlever KEY
2322
-			$k = substr($k, 4);
2323
-			$queries[] = "CREATE INDEX $table_destination" . "_$k ON $table_destination ($v)";
2324
-		}
2325
-	}
2326
-
2327
-
2328
-	if (count($queries)) {
2329
-		spip_sqlite::demarrer_transaction($serveur);
2330
-		// il faut les faire une par une car $query = join('; ', $queries).";"; ne fonctionne pas
2331
-		foreach ($queries as $q) {
2332
-			if (!spip_sqlite::executer_requete($q, $serveur)) {
2333
-				spip_log("SQLite : ALTER TABLE table :"
2334
-					. " Erreur a l'execution de la requete : $q", 'sqlite.' . _LOG_ERREUR);
2335
-				spip_sqlite::annuler_transaction($serveur);
2336
-
2337
-				return false;
2338
-			}
2339
-		}
2340
-		spip_sqlite::finir_transaction($serveur);
2341
-	}
2342
-
2343
-	return true;
2204
+    if (is_array($table)) {
2205
+        $table_destination = reset($table);
2206
+        $table_origine = key($table);
2207
+    } else {
2208
+        $table_origine = $table_destination = $table;
2209
+    }
2210
+    // ne prend actuellement qu'un changement
2211
+    // mais pourra etre adapte pour changer plus qu'une colonne a la fois
2212
+    if (is_array($colonne)) {
2213
+        $colonne_destination = reset($colonne);
2214
+        $colonne_origine = key($colonne);
2215
+    } else {
2216
+        $colonne_origine = $colonne_destination = $colonne;
2217
+    }
2218
+    if (!isset($opt['field'])) {
2219
+        $opt['field'] = array();
2220
+    }
2221
+    if (!isset($opt['key'])) {
2222
+        $opt['key'] = array();
2223
+    }
2224
+
2225
+    // si les noms de tables sont differents, pas besoin de table temporaire
2226
+    // on prendra directement le nom de la future table
2227
+    $meme_table = ($table_origine == $table_destination);
2228
+
2229
+    $def_origine = sql_showtable($table_origine, false, $serveur);
2230
+    if (!$def_origine or !isset($def_origine['field'])) {
2231
+        spip_log("Alter table impossible sur $table_origine : table non trouvee", 'sqlite' . _LOG_ERREUR);
2232
+
2233
+        return false;
2234
+    }
2235
+
2236
+
2237
+    $table_tmp = $table_origine . '_tmp';
2238
+
2239
+    // 1) creer une table temporaire avec les modifications	
2240
+    // - DROP : suppression de la colonne
2241
+    // - CHANGE : modification de la colonne
2242
+    // (foreach pour conserver l'ordre des champs)
2243
+
2244
+    // field 
2245
+    $fields = array();
2246
+    // pour le INSERT INTO plus loin
2247
+    // stocker la correspondance nouvelles->anciennes colonnes
2248
+    $fields_correspondances = array();
2249
+    foreach ($def_origine['field'] as $c => $d) {
2250
+
2251
+        if ($colonne_origine && ($c == $colonne_origine)) {
2252
+            // si pas DROP
2253
+            if ($colonne_destination) {
2254
+                $fields[$colonne_destination] = $opt['field'][$colonne_destination];
2255
+                $fields_correspondances[$colonne_destination] = $c;
2256
+            }
2257
+        } else {
2258
+            $fields[$c] = $d;
2259
+            $fields_correspondances[$c] = $c;
2260
+        }
2261
+    }
2262
+    // cas de ADD sqlite2 (ajout du champ en fin de table):
2263
+    if (!$colonne_origine && $colonne_destination) {
2264
+        $fields[$colonne_destination] = $opt['field'][$colonne_destination];
2265
+    }
2266
+
2267
+    // key...
2268
+    $keys = array();
2269
+    foreach ($def_origine['key'] as $c => $d) {
2270
+        $c = str_replace($colonne_origine, $colonne_destination, $c);
2271
+        $d = str_replace($colonne_origine, $colonne_destination, $d);
2272
+        // seulement si on ne supprime pas la colonne !
2273
+        if ($d) {
2274
+            $keys[$c] = $d;
2275
+        }
2276
+    }
2277
+
2278
+    // autres keys, on merge
2279
+    $keys = array_merge($keys, $opt['key']);
2280
+    $queries = array();
2281
+
2282
+    // copier dans destination (si differente de origine), sinon tmp
2283
+    $table_copie = ($meme_table) ? $table_tmp : $table_destination;
2284
+    $autoinc = (isset($keys['PRIMARY KEY'])
2285
+        and $keys['PRIMARY KEY']
2286
+        and stripos($keys['PRIMARY KEY'], ',') === false
2287
+        and stripos($fields[$keys['PRIMARY KEY']], 'default') === false);
2288
+
2289
+    if ($q = _sqlite_requete_create(
2290
+        $table_copie,
2291
+        $fields,
2292
+        $keys,
2293
+        $autoinc,
2294
+        $temporary = false,
2295
+        $ifnotexists = true,
2296
+        $serveur)
2297
+    ) {
2298
+        $queries[] = $q;
2299
+    }
2300
+
2301
+
2302
+    // 2) y copier les champs qui vont bien
2303
+    $champs_dest = join(', ', array_keys($fields_correspondances));
2304
+    $champs_ori = join(', ', $fields_correspondances);
2305
+    $queries[] = "INSERT INTO $table_copie ($champs_dest) SELECT $champs_ori FROM $table_origine";
2306
+
2307
+    // 3) supprimer la table d'origine
2308
+    $queries[] = "DROP TABLE $table_origine";
2309
+
2310
+    // 4) renommer la table temporaire 
2311
+    // avec le nom de la table destination
2312
+    // si necessaire
2313
+    if ($meme_table) {
2314
+        $queries[] = "ALTER TABLE $table_copie RENAME TO $table_destination";
2315
+    }
2316
+
2317
+    // 5) remettre les index !
2318
+    foreach ($keys as $k => $v) {
2319
+        if ($k == 'PRIMARY KEY') {
2320
+        } else {
2321
+            // enlever KEY
2322
+            $k = substr($k, 4);
2323
+            $queries[] = "CREATE INDEX $table_destination" . "_$k ON $table_destination ($v)";
2324
+        }
2325
+    }
2326
+
2327
+
2328
+    if (count($queries)) {
2329
+        spip_sqlite::demarrer_transaction($serveur);
2330
+        // il faut les faire une par une car $query = join('; ', $queries).";"; ne fonctionne pas
2331
+        foreach ($queries as $q) {
2332
+            if (!spip_sqlite::executer_requete($q, $serveur)) {
2333
+                spip_log("SQLite : ALTER TABLE table :"
2334
+                    . " Erreur a l'execution de la requete : $q", 'sqlite.' . _LOG_ERREUR);
2335
+                spip_sqlite::annuler_transaction($serveur);
2336
+
2337
+                return false;
2338
+            }
2339
+        }
2340
+        spip_sqlite::finir_transaction($serveur);
2341
+    }
2342
+
2343
+    return true;
2344 2344
 }
2345 2345
 
2346 2346
 
@@ -2350,60 +2350,60 @@  discard block
 block discarded – undo
2350 2350
  * @return array
2351 2351
  */
2352 2352
 function _sqlite_ref_fonctions() {
2353
-	$fonctions = array(
2354
-		'alter' => 'spip_sqlite_alter',
2355
-		'count' => 'spip_sqlite_count',
2356
-		'countsel' => 'spip_sqlite_countsel',
2357
-		'create' => 'spip_sqlite_create',
2358
-		'create_base' => 'spip_sqlite_create_base',
2359
-		'create_view' => 'spip_sqlite_create_view',
2360
-		'date_proche' => 'spip_sqlite_date_proche',
2361
-		'delete' => 'spip_sqlite_delete',
2362
-		'drop_table' => 'spip_sqlite_drop_table',
2363
-		'drop_view' => 'spip_sqlite_drop_view',
2364
-		'errno' => 'spip_sqlite_errno',
2365
-		'error' => 'spip_sqlite_error',
2366
-		'explain' => 'spip_sqlite_explain',
2367
-		'fetch' => 'spip_sqlite_fetch',
2368
-		'seek' => 'spip_sqlite_seek',
2369
-		'free' => 'spip_sqlite_free',
2370
-		'hex' => 'spip_sqlite_hex',
2371
-		'in' => 'spip_sqlite_in',
2372
-		'insert' => 'spip_sqlite_insert',
2373
-		'insertq' => 'spip_sqlite_insertq',
2374
-		'insertq_multi' => 'spip_sqlite_insertq_multi',
2375
-		'listdbs' => 'spip_sqlite_listdbs',
2376
-		'multi' => 'spip_sqlite_multi',
2377
-		'optimize' => 'spip_sqlite_optimize',
2378
-		'query' => 'spip_sqlite_query',
2379
-		'quote' => 'spip_sqlite_quote',
2380
-		'repair' => 'spip_sqlite_repair',
2381
-		'replace' => 'spip_sqlite_replace',
2382
-		'replace_multi' => 'spip_sqlite_replace_multi',
2383
-		'select' => 'spip_sqlite_select',
2384
-		'selectdb' => 'spip_sqlite_selectdb',
2385
-		'set_charset' => 'spip_sqlite_set_charset',
2386
-		'get_charset' => 'spip_sqlite_get_charset',
2387
-		'showbase' => 'spip_sqlite_showbase',
2388
-		'showtable' => 'spip_sqlite_showtable',
2389
-		'update' => 'spip_sqlite_update',
2390
-		'updateq' => 'spip_sqlite_updateq',
2391
-		'preferer_transaction' => 'spip_sqlite_preferer_transaction',
2392
-		'demarrer_transaction' => 'spip_sqlite_demarrer_transaction',
2393
-		'terminer_transaction' => 'spip_sqlite_terminer_transaction',
2394
-	);
2395
-
2396
-	// association de chaque nom http d'un charset aux couples sqlite 
2397
-	// SQLite supporte utf-8 et utf-16 uniquement.
2398
-	$charsets = array(
2399
-		'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci'),
2400
-		//'utf-16be'=>array('charset'=>'utf16be','collation'=>'UTF-16BE'),// aucune idee de quoi il faut remplir dans es champs la
2401
-		//'utf-16le'=>array('charset'=>'utf16le','collation'=>'UTF-16LE')
2402
-	);
2403
-
2404
-	$fonctions['charsets'] = $charsets;
2405
-
2406
-	return $fonctions;
2353
+    $fonctions = array(
2354
+        'alter' => 'spip_sqlite_alter',
2355
+        'count' => 'spip_sqlite_count',
2356
+        'countsel' => 'spip_sqlite_countsel',
2357
+        'create' => 'spip_sqlite_create',
2358
+        'create_base' => 'spip_sqlite_create_base',
2359
+        'create_view' => 'spip_sqlite_create_view',
2360
+        'date_proche' => 'spip_sqlite_date_proche',
2361
+        'delete' => 'spip_sqlite_delete',
2362
+        'drop_table' => 'spip_sqlite_drop_table',
2363
+        'drop_view' => 'spip_sqlite_drop_view',
2364
+        'errno' => 'spip_sqlite_errno',
2365
+        'error' => 'spip_sqlite_error',
2366
+        'explain' => 'spip_sqlite_explain',
2367
+        'fetch' => 'spip_sqlite_fetch',
2368
+        'seek' => 'spip_sqlite_seek',
2369
+        'free' => 'spip_sqlite_free',
2370
+        'hex' => 'spip_sqlite_hex',
2371
+        'in' => 'spip_sqlite_in',
2372
+        'insert' => 'spip_sqlite_insert',
2373
+        'insertq' => 'spip_sqlite_insertq',
2374
+        'insertq_multi' => 'spip_sqlite_insertq_multi',
2375
+        'listdbs' => 'spip_sqlite_listdbs',
2376
+        'multi' => 'spip_sqlite_multi',
2377
+        'optimize' => 'spip_sqlite_optimize',
2378
+        'query' => 'spip_sqlite_query',
2379
+        'quote' => 'spip_sqlite_quote',
2380
+        'repair' => 'spip_sqlite_repair',
2381
+        'replace' => 'spip_sqlite_replace',
2382
+        'replace_multi' => 'spip_sqlite_replace_multi',
2383
+        'select' => 'spip_sqlite_select',
2384
+        'selectdb' => 'spip_sqlite_selectdb',
2385
+        'set_charset' => 'spip_sqlite_set_charset',
2386
+        'get_charset' => 'spip_sqlite_get_charset',
2387
+        'showbase' => 'spip_sqlite_showbase',
2388
+        'showtable' => 'spip_sqlite_showtable',
2389
+        'update' => 'spip_sqlite_update',
2390
+        'updateq' => 'spip_sqlite_updateq',
2391
+        'preferer_transaction' => 'spip_sqlite_preferer_transaction',
2392
+        'demarrer_transaction' => 'spip_sqlite_demarrer_transaction',
2393
+        'terminer_transaction' => 'spip_sqlite_terminer_transaction',
2394
+    );
2395
+
2396
+    // association de chaque nom http d'un charset aux couples sqlite 
2397
+    // SQLite supporte utf-8 et utf-16 uniquement.
2398
+    $charsets = array(
2399
+        'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci'),
2400
+        //'utf-16be'=>array('charset'=>'utf16be','collation'=>'UTF-16BE'),// aucune idee de quoi il faut remplir dans es champs la
2401
+        //'utf-16le'=>array('charset'=>'utf16le','collation'=>'UTF-16LE')
2402
+    );
2403
+
2404
+    $fonctions['charsets'] = $charsets;
2405
+
2406
+    return $fonctions;
2407 2407
 }
2408 2408
 
2409 2409
 
@@ -2415,56 +2415,56 @@  discard block
 block discarded – undo
2415 2415
  * @return mixed
2416 2416
  */
2417 2417
 function _sqlite_remplacements_definitions_table($query, $autoinc = false) {
2418
-	// quelques remplacements
2419
-	$num = "(\s*\([0-9]*\))?";
2420
-	$enum = "(\s*\([^\)]*\))?";
2421
-
2422
-	$remplace = array(
2423
-		'/enum' . $enum . '/is' => 'VARCHAR(255)',
2424
-		'/COLLATE \w+_bin/is' => 'COLLATE BINARY',
2425
-		'/COLLATE \w+_ci/is' => 'COLLATE NOCASE',
2426
-		'/auto_increment/is' => '',
2427
-		'/current_timestamp\(\)/is' => 'CURRENT_TIMESTAMP', // Fix export depuis mariaDB #4374
2428
-		'/(timestamp .* )ON .*$/is' => '\\1',
2429
-		'/character set \w+/is' => '',
2430
-		'/((big|small|medium|tiny)?int(eger)?)' . $num . '\s*unsigned/is' => '\\1 UNSIGNED',
2431
-		'/(text\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
2432
-		'/((char|varchar)' . $num . '\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
2433
-		'/(datetime\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00 00:00:00'",
2434
-		'/(date\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00'",
2435
-	);
2436
-
2437
-	// pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY
2438
-	$remplace_autocinc = array(
2439
-		'/(big|small|medium|tiny)?int(eger)?' . $num . '/is' => 'INTEGER'
2440
-	);
2441
-	// pour les int non autoincrement, il faut un DEFAULT
2442
-	$remplace_nonautocinc = array(
2443
-		'/((big|small|medium|tiny)?int(eger)?' . $num . '\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0",
2444
-	);
2445
-
2446
-	if (is_string($query)) {
2447
-		$query = preg_replace(array_keys($remplace), $remplace, $query);
2448
-		if ($autoinc or preg_match(',AUTO_INCREMENT,is', $query)) {
2449
-			$query = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query);
2450
-		} else {
2451
-			$query = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query);
2452
-			$query = _sqlite_collate_ci($query);
2453
-		}
2454
-	} elseif (is_array($query)) {
2455
-		foreach ($query as $k => $q) {
2456
-			$ai = ($autoinc ? $k == $autoinc : preg_match(',AUTO_INCREMENT,is', $q));
2457
-			$query[$k] = preg_replace(array_keys($remplace), $remplace, $query[$k]);
2458
-			if ($ai) {
2459
-				$query[$k] = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query[$k]);
2460
-			} else {
2461
-				$query[$k] = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query[$k]);
2462
-				$query[$k] = _sqlite_collate_ci($query[$k]);
2463
-			}
2464
-		}
2465
-	}
2466
-
2467
-	return $query;
2418
+    // quelques remplacements
2419
+    $num = "(\s*\([0-9]*\))?";
2420
+    $enum = "(\s*\([^\)]*\))?";
2421
+
2422
+    $remplace = array(
2423
+        '/enum' . $enum . '/is' => 'VARCHAR(255)',
2424
+        '/COLLATE \w+_bin/is' => 'COLLATE BINARY',
2425
+        '/COLLATE \w+_ci/is' => 'COLLATE NOCASE',
2426
+        '/auto_increment/is' => '',
2427
+        '/current_timestamp\(\)/is' => 'CURRENT_TIMESTAMP', // Fix export depuis mariaDB #4374
2428
+        '/(timestamp .* )ON .*$/is' => '\\1',
2429
+        '/character set \w+/is' => '',
2430
+        '/((big|small|medium|tiny)?int(eger)?)' . $num . '\s*unsigned/is' => '\\1 UNSIGNED',
2431
+        '/(text\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
2432
+        '/((char|varchar)' . $num . '\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''",
2433
+        '/(datetime\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00 00:00:00'",
2434
+        '/(date\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00'",
2435
+    );
2436
+
2437
+    // pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY
2438
+    $remplace_autocinc = array(
2439
+        '/(big|small|medium|tiny)?int(eger)?' . $num . '/is' => 'INTEGER'
2440
+    );
2441
+    // pour les int non autoincrement, il faut un DEFAULT
2442
+    $remplace_nonautocinc = array(
2443
+        '/((big|small|medium|tiny)?int(eger)?' . $num . '\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0",
2444
+    );
2445
+
2446
+    if (is_string($query)) {
2447
+        $query = preg_replace(array_keys($remplace), $remplace, $query);
2448
+        if ($autoinc or preg_match(',AUTO_INCREMENT,is', $query)) {
2449
+            $query = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query);
2450
+        } else {
2451
+            $query = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query);
2452
+            $query = _sqlite_collate_ci($query);
2453
+        }
2454
+    } elseif (is_array($query)) {
2455
+        foreach ($query as $k => $q) {
2456
+            $ai = ($autoinc ? $k == $autoinc : preg_match(',AUTO_INCREMENT,is', $q));
2457
+            $query[$k] = preg_replace(array_keys($remplace), $remplace, $query[$k]);
2458
+            if ($ai) {
2459
+                $query[$k] = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query[$k]);
2460
+            } else {
2461
+                $query[$k] = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query[$k]);
2462
+                $query[$k] = _sqlite_collate_ci($query[$k]);
2463
+            }
2464
+        }
2465
+    }
2466
+
2467
+    return $query;
2468 2468
 }
2469 2469
 
2470 2470
 /**
@@ -2475,17 +2475,17 @@  discard block
 block discarded – undo
2475 2475
  * @return string
2476 2476
  */
2477 2477
 function _sqlite_collate_ci($champ) {
2478
-	if (stripos($champ, "COLLATE") !== false) {
2479
-		return $champ;
2480
-	}
2481
-	if (stripos($champ, "BINARY") !== false) {
2482
-		return str_ireplace("BINARY", "COLLATE BINARY", $champ);
2483
-	}
2484
-	if (preg_match(",^(char|varchar|(long|small|medium|tiny)?text),i", $champ)) {
2485
-		return $champ . " COLLATE NOCASE";
2486
-	}
2478
+    if (stripos($champ, "COLLATE") !== false) {
2479
+        return $champ;
2480
+    }
2481
+    if (stripos($champ, "BINARY") !== false) {
2482
+        return str_ireplace("BINARY", "COLLATE BINARY", $champ);
2483
+    }
2484
+    if (preg_match(",^(char|varchar|(long|small|medium|tiny)?text),i", $champ)) {
2485
+        return $champ . " COLLATE NOCASE";
2486
+    }
2487 2487
 
2488
-	return $champ;
2488
+    return $champ;
2489 2489
 }
2490 2490
 
2491 2491
 
@@ -2504,82 +2504,82 @@  discard block
 block discarded – undo
2504 2504
  * @return bool|string
2505 2505
  */
2506 2506
 function _sqlite_requete_create(
2507
-	$nom,
2508
-	$champs,
2509
-	$cles,
2510
-	$autoinc = false,
2511
-	$temporary = false,
2512
-	$_ifnotexists = true,
2513
-	$serveur = '',
2514
-	$requeter = true
2507
+    $nom,
2508
+    $champs,
2509
+    $cles,
2510
+    $autoinc = false,
2511
+    $temporary = false,
2512
+    $_ifnotexists = true,
2513
+    $serveur = '',
2514
+    $requeter = true
2515 2515
 ) {
2516
-	$query = $keys = $s = $p = '';
2517
-
2518
-	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
2519
-	// sans les renseigner (laisse le compilo recuperer la description)
2520
-	if (!is_array($champs) || !is_array($cles)) {
2521
-		return;
2522
-	}
2523
-
2524
-	// sqlite ne gere pas KEY tout court dans une requete CREATE TABLE
2525
-	// il faut passer par des create index
2526
-	// Il gere par contre primary key !
2527
-	// Soit la PK est definie dans les cles, soit dans un champs
2528
-	// soit faussement dans les 2 (et dans ce cas, il faut l’enlever à un des 2 endroits !)
2529
-	$pk = "PRIMARY KEY";
2530
-	// le champ de cle primaire
2531
-	$champ_pk = !empty($cles[$pk]) ? $cles[$pk] : '';
2532
-
2533
-	foreach ($champs as $k => $v) {
2534
-		if (false !== stripos($v, $pk)) {
2535
-			$champ_pk = $k;
2536
-			// on n'en a plus besoin dans field, vu que defini dans key
2537
-			$champs[$k] = preg_replace("/$pk/is", '', $champs[$k]);
2538
-			break;
2539
-		}
2540
-	}
2541
-
2542
-	if ($champ_pk) {
2543
-		$keys = "\n\t\t$pk ($champ_pk)";
2544
-	}
2545
-	// Pas de DEFAULT 0 sur les cles primaires en auto-increment
2546
-	if (isset($champs[$champ_pk])
2547
-		and stripos($champs[$champ_pk], "default 0") !== false
2548
-	) {
2549
-		$champs[$champ_pk] = trim(str_ireplace("default 0", "", $champs[$champ_pk]));
2550
-	}
2551
-
2552
-	$champs = _sqlite_remplacements_definitions_table($champs, $autoinc ? $champ_pk : false);
2553
-	foreach ($champs as $k => $v) {
2554
-		$query .= "$s\n\t\t$k $v";
2555
-		$s = ",";
2556
-	}
2557
-
2558
-	$ifnotexists = "";
2559
-	if ($_ifnotexists) {
2560
-
2561
-		$version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version", $serveur), '',
2562
-			$serveur);
2563
-		if (!function_exists('spip_version_compare')) {
2564
-			include_spip('plugins/installer');
2565
-		}
2566
-
2567
-		if ($version and spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) {
2568
-			$ifnotexists = ' IF NOT EXISTS';
2569
-		} else {
2570
-			/* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
2571
-			$a = spip_sqlite_showtable($nom, $serveur);
2572
-			if (isset($a['key']['KEY ' . $nom])) {
2573
-				return true;
2574
-			}
2575
-		}
2576
-
2577
-	}
2578
-
2579
-	$temporary = $temporary ? ' TEMPORARY' : '';
2580
-	$q = "CREATE$temporary TABLE$ifnotexists $nom ($query" . ($keys ? ",$keys" : '') . ")\n";
2581
-
2582
-	return $q;
2516
+    $query = $keys = $s = $p = '';
2517
+
2518
+    // certains plugins declarent les tables  (permet leur inclusion dans le dump)
2519
+    // sans les renseigner (laisse le compilo recuperer la description)
2520
+    if (!is_array($champs) || !is_array($cles)) {
2521
+        return;
2522
+    }
2523
+
2524
+    // sqlite ne gere pas KEY tout court dans une requete CREATE TABLE
2525
+    // il faut passer par des create index
2526
+    // Il gere par contre primary key !
2527
+    // Soit la PK est definie dans les cles, soit dans un champs
2528
+    // soit faussement dans les 2 (et dans ce cas, il faut l’enlever à un des 2 endroits !)
2529
+    $pk = "PRIMARY KEY";
2530
+    // le champ de cle primaire
2531
+    $champ_pk = !empty($cles[$pk]) ? $cles[$pk] : '';
2532
+
2533
+    foreach ($champs as $k => $v) {
2534
+        if (false !== stripos($v, $pk)) {
2535
+            $champ_pk = $k;
2536
+            // on n'en a plus besoin dans field, vu que defini dans key
2537
+            $champs[$k] = preg_replace("/$pk/is", '', $champs[$k]);
2538
+            break;
2539
+        }
2540
+    }
2541
+
2542
+    if ($champ_pk) {
2543
+        $keys = "\n\t\t$pk ($champ_pk)";
2544
+    }
2545
+    // Pas de DEFAULT 0 sur les cles primaires en auto-increment
2546
+    if (isset($champs[$champ_pk])
2547
+        and stripos($champs[$champ_pk], "default 0") !== false
2548
+    ) {
2549
+        $champs[$champ_pk] = trim(str_ireplace("default 0", "", $champs[$champ_pk]));
2550
+    }
2551
+
2552
+    $champs = _sqlite_remplacements_definitions_table($champs, $autoinc ? $champ_pk : false);
2553
+    foreach ($champs as $k => $v) {
2554
+        $query .= "$s\n\t\t$k $v";
2555
+        $s = ",";
2556
+    }
2557
+
2558
+    $ifnotexists = "";
2559
+    if ($_ifnotexists) {
2560
+
2561
+        $version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version", $serveur), '',
2562
+            $serveur);
2563
+        if (!function_exists('spip_version_compare')) {
2564
+            include_spip('plugins/installer');
2565
+        }
2566
+
2567
+        if ($version and spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) {
2568
+            $ifnotexists = ' IF NOT EXISTS';
2569
+        } else {
2570
+            /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */
2571
+            $a = spip_sqlite_showtable($nom, $serveur);
2572
+            if (isset($a['key']['KEY ' . $nom])) {
2573
+                return true;
2574
+            }
2575
+        }
2576
+
2577
+    }
2578
+
2579
+    $temporary = $temporary ? ' TEMPORARY' : '';
2580
+    $q = "CREATE$temporary TABLE$ifnotexists $nom ($query" . ($keys ? ",$keys" : '') . ")\n";
2581
+
2582
+    return $q;
2583 2583
 }
2584 2584
 
2585 2585
 
@@ -2598,35 +2598,35 @@  discard block
 block discarded – undo
2598 2598
  * @return
2599 2599
  */
2600 2600
 function _sqlite_ajouter_champs_timestamp($table, $couples, $desc = '', $serveur = '') {
2601
-	static $tables = array();
2601
+    static $tables = array();
2602 2602
 
2603
-	if (!isset($tables[$table])) {
2603
+    if (!isset($tables[$table])) {
2604 2604
 
2605
-		if (!$desc) {
2606
-			$trouver_table = charger_fonction('trouver_table', 'base');
2607
-			$desc = $trouver_table($table, $serveur);
2608
-			// si pas de description, on ne fait rien, ou on die() ?
2609
-			if (!$desc) {
2610
-				return $couples;
2611
-			}
2612
-		}
2605
+        if (!$desc) {
2606
+            $trouver_table = charger_fonction('trouver_table', 'base');
2607
+            $desc = $trouver_table($table, $serveur);
2608
+            // si pas de description, on ne fait rien, ou on die() ?
2609
+            if (!$desc) {
2610
+                return $couples;
2611
+            }
2612
+        }
2613 2613
 
2614
-		// recherche des champs avec simplement 'TIMESTAMP'
2615
-		// cependant, il faudra peut etre etendre
2616
-		// avec la gestion de DEFAULT et ON UPDATE
2617
-		// mais ceux-ci ne sont pas utilises dans le core
2618
-		$tables[$table] = array();
2614
+        // recherche des champs avec simplement 'TIMESTAMP'
2615
+        // cependant, il faudra peut etre etendre
2616
+        // avec la gestion de DEFAULT et ON UPDATE
2617
+        // mais ceux-ci ne sont pas utilises dans le core
2618
+        $tables[$table] = array();
2619 2619
 
2620
-		$now = _sqlite_func_now();
2621
-		foreach ($desc['field'] as $k => $v) {
2622
-			if (strpos(strtolower(ltrim($v)), 'timestamp') === 0) {
2623
-				$tables[$table][$k] = _sqlite_calculer_cite($now, $v);
2624
-			}
2625
-		}
2626
-	}
2620
+        $now = _sqlite_func_now();
2621
+        foreach ($desc['field'] as $k => $v) {
2622
+            if (strpos(strtolower(ltrim($v)), 'timestamp') === 0) {
2623
+                $tables[$table][$k] = _sqlite_calculer_cite($now, $v);
2624
+            }
2625
+        }
2626
+    }
2627 2627
 
2628
-	// ajout des champs type 'timestamp' absents
2629
-	return array_merge($tables[$table], $couples);
2628
+    // ajout des champs type 'timestamp' absents
2629
+    return array_merge($tables[$table], $couples);
2630 2630
 }
2631 2631
 
2632 2632
 
@@ -2637,7 +2637,7 @@  discard block
 block discarded – undo
2637 2637
  * @return array|bool
2638 2638
  */
2639 2639
 function spip_versions_sqlite() {
2640
-	return _sqlite_charger_version();
2640
+    return _sqlite_charger_version();
2641 2641
 }
2642 2642
 
2643 2643
 /**
@@ -2645,113 +2645,113 @@  discard block
 block discarded – undo
2645 2645
  * encadrées de transactions.
2646 2646
  **/
2647 2647
 class spip_sqlite {
2648
-	/** @var sqlite_requeteur[] Liste des instances de requêteurs créés */
2649
-	public static $requeteurs = array();
2650
-	/** @var bool[] Pour chaque connexion, flag pour savoir si une transaction est en cours */
2651
-	public static $transaction_en_cours = array();
2652
-
2653
-
2654
-	/**
2655
-	 * Retourne une unique instance du requêteur
2656
-	 *
2657
-	 * Retourne une instance unique du requêteur pour une connexion SQLite
2658
-	 * donnée
2659
-	 *
2660
-	 * @param string $serveur
2661
-	 *    Nom du connecteur
2662
-	 * @return sqlite_requeteur
2663
-	 *    Instance unique du requêteur
2664
-	 **/
2665
-	public static function requeteur($serveur) {
2666
-		if (!isset(spip_sqlite::$requeteurs[$serveur])) {
2667
-			spip_sqlite::$requeteurs[$serveur] = new sqlite_requeteur($serveur);
2668
-		}
2669
-
2670
-		return spip_sqlite::$requeteurs[$serveur];
2671
-	}
2672
-
2673
-	/**
2674
-	 * Prépare le texte d'une requête avant son exécution
2675
-	 *
2676
-	 * Adapte la requête au format plus ou moins MySQL par un format
2677
-	 * compris de SQLite.
2678
-	 *
2679
-	 * Change les préfixes de tables SPIP par ceux véritables
2680
-	 *
2681
-	 * @param string $query Requête à préparer
2682
-	 * @param string $serveur Nom de la connexion
2683
-	 * @return string           Requête préparée
2684
-	 */
2685
-	public static function traduire_requete($query, $serveur) {
2686
-		$requeteur = spip_sqlite::requeteur($serveur);
2687
-		$traducteur = new sqlite_traducteur($query, $requeteur->prefixe, $requeteur->sqlite_version);
2688
-
2689
-		return $traducteur->traduire_requete();
2690
-	}
2691
-
2692
-	/**
2693
-	 * Démarre une transaction
2694
-	 *
2695
-	 * @param string $serveur Nom de la connexion
2696
-	 **/
2697
-	public static function demarrer_transaction($serveur) {
2698
-		spip_sqlite::executer_requete("BEGIN TRANSACTION", $serveur);
2699
-		spip_sqlite::$transaction_en_cours[$serveur] = true;
2700
-	}
2701
-
2702
-	/**
2703
-	 * Exécute la requête donnée
2704
-	 *
2705
-	 * @param string $query Requête
2706
-	 * @param string $serveur Nom de la connexion
2707
-	 * @param null|bool $tracer Demander des statistiques (temps) ?
2708
-	 **/
2709
-	public static function executer_requete($query, $serveur, $tracer = null) {
2710
-		$requeteur = spip_sqlite::requeteur($serveur);
2711
-
2712
-		return $requeteur->executer_requete($query, $tracer);
2713
-	}
2714
-
2715
-	/**
2716
-	 * Obtient l'identifiant de la dernière ligne insérée ou modifiée
2717
-	 *
2718
-	 * @param string $serveur Nom de la connexion
2719
-	 * return int                Identifiant
2720
-	 **/
2721
-	public static function last_insert_id($serveur) {
2722
-		$requeteur = spip_sqlite::requeteur($serveur);
2723
-
2724
-		return $requeteur->last_insert_id($serveur);
2725
-	}
2726
-
2727
-	/**
2728
-	 * Annule une transaction
2729
-	 *
2730
-	 * @param string $serveur Nom de la connexion
2731
-	 **/
2732
-	public static function annuler_transaction($serveur) {
2733
-		spip_sqlite::executer_requete("ROLLBACK", $serveur);
2734
-		spip_sqlite::$transaction_en_cours[$serveur] = false;
2735
-	}
2736
-
2737
-	/**
2738
-	 * Termine une transaction
2739
-	 *
2740
-	 * @param string $serveur Nom de la connexion
2741
-	 **/
2742
-	public static function finir_transaction($serveur) {
2743
-		// si pas de transaction en cours, ne rien faire et le dire
2744
-		if (!isset(spip_sqlite::$transaction_en_cours[$serveur])
2745
-			or spip_sqlite::$transaction_en_cours[$serveur] == false
2746
-		) {
2747
-			return false;
2748
-		}
2749
-		// sinon fermer la transaction et retourner true
2750
-		spip_sqlite::executer_requete("COMMIT", $serveur);
2751
-		spip_sqlite::$transaction_en_cours[$serveur] = false;
2752
-
2753
-		return true;
2754
-	}
2648
+    /** @var sqlite_requeteur[] Liste des instances de requêteurs créés */
2649
+    public static $requeteurs = array();
2650
+    /** @var bool[] Pour chaque connexion, flag pour savoir si une transaction est en cours */
2651
+    public static $transaction_en_cours = array();
2652
+
2653
+
2654
+    /**
2655
+     * Retourne une unique instance du requêteur
2656
+     *
2657
+     * Retourne une instance unique du requêteur pour une connexion SQLite
2658
+     * donnée
2659
+     *
2660
+     * @param string $serveur
2661
+     *    Nom du connecteur
2662
+     * @return sqlite_requeteur
2663
+     *    Instance unique du requêteur
2664
+     **/
2665
+    public static function requeteur($serveur) {
2666
+        if (!isset(spip_sqlite::$requeteurs[$serveur])) {
2667
+            spip_sqlite::$requeteurs[$serveur] = new sqlite_requeteur($serveur);
2668
+        }
2669
+
2670
+        return spip_sqlite::$requeteurs[$serveur];
2671
+    }
2672
+
2673
+    /**
2674
+     * Prépare le texte d'une requête avant son exécution
2675
+     *
2676
+     * Adapte la requête au format plus ou moins MySQL par un format
2677
+     * compris de SQLite.
2678
+     *
2679
+     * Change les préfixes de tables SPIP par ceux véritables
2680
+     *
2681
+     * @param string $query Requête à préparer
2682
+     * @param string $serveur Nom de la connexion
2683
+     * @return string           Requête préparée
2684
+     */
2685
+    public static function traduire_requete($query, $serveur) {
2686
+        $requeteur = spip_sqlite::requeteur($serveur);
2687
+        $traducteur = new sqlite_traducteur($query, $requeteur->prefixe, $requeteur->sqlite_version);
2688
+
2689
+        return $traducteur->traduire_requete();
2690
+    }
2691
+
2692
+    /**
2693
+     * Démarre une transaction
2694
+     *
2695
+     * @param string $serveur Nom de la connexion
2696
+     **/
2697
+    public static function demarrer_transaction($serveur) {
2698
+        spip_sqlite::executer_requete("BEGIN TRANSACTION", $serveur);
2699
+        spip_sqlite::$transaction_en_cours[$serveur] = true;
2700
+    }
2701
+
2702
+    /**
2703
+     * Exécute la requête donnée
2704
+     *
2705
+     * @param string $query Requête
2706
+     * @param string $serveur Nom de la connexion
2707
+     * @param null|bool $tracer Demander des statistiques (temps) ?
2708
+     **/
2709
+    public static function executer_requete($query, $serveur, $tracer = null) {
2710
+        $requeteur = spip_sqlite::requeteur($serveur);
2711
+
2712
+        return $requeteur->executer_requete($query, $tracer);
2713
+    }
2714
+
2715
+    /**
2716
+     * Obtient l'identifiant de la dernière ligne insérée ou modifiée
2717
+     *
2718
+     * @param string $serveur Nom de la connexion
2719
+     * return int                Identifiant
2720
+     **/
2721
+    public static function last_insert_id($serveur) {
2722
+        $requeteur = spip_sqlite::requeteur($serveur);
2723
+
2724
+        return $requeteur->last_insert_id($serveur);
2725
+    }
2726
+
2727
+    /**
2728
+     * Annule une transaction
2729
+     *
2730
+     * @param string $serveur Nom de la connexion
2731
+     **/
2732
+    public static function annuler_transaction($serveur) {
2733
+        spip_sqlite::executer_requete("ROLLBACK", $serveur);
2734
+        spip_sqlite::$transaction_en_cours[$serveur] = false;
2735
+    }
2736
+
2737
+    /**
2738
+     * Termine une transaction
2739
+     *
2740
+     * @param string $serveur Nom de la connexion
2741
+     **/
2742
+    public static function finir_transaction($serveur) {
2743
+        // si pas de transaction en cours, ne rien faire et le dire
2744
+        if (!isset(spip_sqlite::$transaction_en_cours[$serveur])
2745
+            or spip_sqlite::$transaction_en_cours[$serveur] == false
2746
+        ) {
2747
+            return false;
2748
+        }
2749
+        // sinon fermer la transaction et retourner true
2750
+        spip_sqlite::executer_requete("COMMIT", $serveur);
2751
+        spip_sqlite::$transaction_en_cours[$serveur] = false;
2752
+
2753
+        return true;
2754
+    }
2755 2755
 }
2756 2756
 
2757 2757
 /*
@@ -2764,128 +2764,128 @@  discard block
 block discarded – undo
2764 2764
  */
2765 2765
 
2766 2766
 class sqlite_requeteur {
2767
-	/** @var string Texte de la requête */
2768
-	public $query = ''; // la requete
2769
-	/** @var string Nom de la connexion */
2770
-	public $serveur = '';
2771
-	/** @var Ressource Identifiant de la connexion SQLite */
2772
-	public $link = '';
2773
-	/** @var string Prefixe des tables SPIP */
2774
-	public $prefixe = '';
2775
-	/** @var string Nom de la base de donnée */
2776
-	public $db = '';
2777
-	/** @var bool Doit-on tracer les requetes (var_profile) ? */
2778
-	public $tracer = false; // doit-on tracer les requetes (var_profile)
2779
-
2780
-	/** @var string Version de SQLite (2 ou 3) */
2781
-	public $sqlite_version = '';
2782
-
2783
-	/**
2784
-	 * Constructeur
2785
-	 *
2786
-	 * @param string $serveur
2787
-	 * @return bool
2788
-	 */
2789
-	public function __construct($serveur = '') {
2790
-		_sqlite_init();
2791
-		$this->serveur = strtolower($serveur);
2792
-
2793
-		if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)) {
2794
-			spip_log("Aucune connexion sqlite (link)", 'sqlite.' . _LOG_ERREUR);
2795
-
2796
-			return false;
2797
-		}
2798
-
2799
-		$this->sqlite_version = _sqlite_is_version('', $this->link);
2800
-
2801
-		$this->prefixe = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['prefixe'];
2802
-		$this->db = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['db'];
2803
-
2804
-		// tracage des requetes ?
2805
-		$this->tracer = (isset($_GET['var_profile']) && $_GET['var_profile']);
2806
-	}
2807
-
2808
-	/**
2809
-	 * Lancer la requête transmise et faire le tracage si demandé
2810
-	 *
2811
-	 * @param string $query
2812
-	 *     Requête à exécuter
2813
-	 * @param bool|null $tracer
2814
-	 *     true pour tracer la requête
2815
-	 * @return bool|SQLiteResult
2816
-	 */
2817
-	public function executer_requete($query, $tracer = null) {
2818
-		if (is_null($tracer)) {
2819
-			$tracer = $this->tracer;
2820
-		}
2821
-		$err = "";
2822
-		$t = 0;
2823
-		if ($tracer or (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES)) {
2824
-			include_spip('public/tracer');
2825
-			$t = trace_query_start();
2826
-		}
2827
-
2828
-		# spip_log("requete: $this->serveur >> $query",'sqlite.'._LOG_DEBUG); // boum ? pourquoi ?
2829
-		if ($this->link) {
2830
-			// memoriser la derniere erreur PHP vue
2831
-			$last_error = (function_exists('error_get_last') ? error_get_last() : "");
2832
-			$e = null;
2833
-			// sauver la derniere requete
2834
-			$GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['last'] = $query;
2835
-			$GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['total_requetes']++;
2836
-
2837
-			try {
2838
-				$r = $this->link->query($query);
2839
-			} catch (\PDOException $e) {
2840
-				spip_log("PDOException: " . $e->getMessage(), 'sqlite.' . _LOG_DEBUG);
2841
-				$r = false;
2842
-			}
2843
-			// sauvegarde de la requete (elle y est deja dans $r->queryString)
2844
-			# $r->spipQueryString = $query;
2845
-
2846
-			// comptage : oblige de compter le nombre d'entrees retournees
2847
-			// par une requete SELECT
2848
-			// aucune autre solution ne donne le nombre attendu :( !
2849
-			// particulierement s'il y a des LIMIT dans la requete.
2850
-			if (strtoupper(substr(ltrim($query), 0, 6)) == 'SELECT') {
2851
-				if ($r) {
2852
-					// noter le link et la query pour faire le comptage *si* on en a besoin
2853
-					$r->spipSqliteRowCount = array($this->link, $query);
2854
-				} elseif ($r instanceof PDOStatement) {
2855
-					$r->spipSqliteRowCount = 0;
2856
-				}
2857
-			}
2858
-
2859
-			// loger les warnings/erreurs eventuels de sqlite remontant dans PHP
2860
-			if ($e and $e instanceof \PDOException) {
2861
-				$err = strip_tags($e->getMessage()) . " in " . $e->getFile() . " line " . $e->getLine();
2862
-				spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR);
2863
-			} elseif ($err = (function_exists('error_get_last') ? error_get_last() : "") and $err != $last_error) {
2864
-				$err = strip_tags($err['message']) . " in " . $err['file'] . " line " . $err['line'];
2865
-				spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR);
2866
-			} else {
2867
-				$err = "";
2868
-			}
2869
-
2870
-		} else {
2871
-			$r = false;
2872
-		}
2873
-
2874
-		if (spip_sqlite_errno($this->serveur)) {
2875
-			$err .= spip_sqlite_error($query, $this->serveur);
2876
-		}
2877
-
2878
-		return $t ? trace_query_end($query, $t, $r, $err, $this->serveur) : $r;
2879
-	}
2880
-
2881
-	/**
2882
-	 * Obtient l'identifiant de la dernière ligne insérée ou modifiée
2883
-	 *
2884
-	 * @return int
2885
-	 **/
2886
-	public function last_insert_id() {
2887
-		return $this->link->lastInsertId();
2888
-	}
2767
+    /** @var string Texte de la requête */
2768
+    public $query = ''; // la requete
2769
+    /** @var string Nom de la connexion */
2770
+    public $serveur = '';
2771
+    /** @var Ressource Identifiant de la connexion SQLite */
2772
+    public $link = '';
2773
+    /** @var string Prefixe des tables SPIP */
2774
+    public $prefixe = '';
2775
+    /** @var string Nom de la base de donnée */
2776
+    public $db = '';
2777
+    /** @var bool Doit-on tracer les requetes (var_profile) ? */
2778
+    public $tracer = false; // doit-on tracer les requetes (var_profile)
2779
+
2780
+    /** @var string Version de SQLite (2 ou 3) */
2781
+    public $sqlite_version = '';
2782
+
2783
+    /**
2784
+     * Constructeur
2785
+     *
2786
+     * @param string $serveur
2787
+     * @return bool
2788
+     */
2789
+    public function __construct($serveur = '') {
2790
+        _sqlite_init();
2791
+        $this->serveur = strtolower($serveur);
2792
+
2793
+        if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)) {
2794
+            spip_log("Aucune connexion sqlite (link)", 'sqlite.' . _LOG_ERREUR);
2795
+
2796
+            return false;
2797
+        }
2798
+
2799
+        $this->sqlite_version = _sqlite_is_version('', $this->link);
2800
+
2801
+        $this->prefixe = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['prefixe'];
2802
+        $this->db = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['db'];
2803
+
2804
+        // tracage des requetes ?
2805
+        $this->tracer = (isset($_GET['var_profile']) && $_GET['var_profile']);
2806
+    }
2807
+
2808
+    /**
2809
+     * Lancer la requête transmise et faire le tracage si demandé
2810
+     *
2811
+     * @param string $query
2812
+     *     Requête à exécuter
2813
+     * @param bool|null $tracer
2814
+     *     true pour tracer la requête
2815
+     * @return bool|SQLiteResult
2816
+     */
2817
+    public function executer_requete($query, $tracer = null) {
2818
+        if (is_null($tracer)) {
2819
+            $tracer = $this->tracer;
2820
+        }
2821
+        $err = "";
2822
+        $t = 0;
2823
+        if ($tracer or (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES)) {
2824
+            include_spip('public/tracer');
2825
+            $t = trace_query_start();
2826
+        }
2827
+
2828
+        # spip_log("requete: $this->serveur >> $query",'sqlite.'._LOG_DEBUG); // boum ? pourquoi ?
2829
+        if ($this->link) {
2830
+            // memoriser la derniere erreur PHP vue
2831
+            $last_error = (function_exists('error_get_last') ? error_get_last() : "");
2832
+            $e = null;
2833
+            // sauver la derniere requete
2834
+            $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['last'] = $query;
2835
+            $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['total_requetes']++;
2836
+
2837
+            try {
2838
+                $r = $this->link->query($query);
2839
+            } catch (\PDOException $e) {
2840
+                spip_log("PDOException: " . $e->getMessage(), 'sqlite.' . _LOG_DEBUG);
2841
+                $r = false;
2842
+            }
2843
+            // sauvegarde de la requete (elle y est deja dans $r->queryString)
2844
+            # $r->spipQueryString = $query;
2845
+
2846
+            // comptage : oblige de compter le nombre d'entrees retournees
2847
+            // par une requete SELECT
2848
+            // aucune autre solution ne donne le nombre attendu :( !
2849
+            // particulierement s'il y a des LIMIT dans la requete.
2850
+            if (strtoupper(substr(ltrim($query), 0, 6)) == 'SELECT') {
2851
+                if ($r) {
2852
+                    // noter le link et la query pour faire le comptage *si* on en a besoin
2853
+                    $r->spipSqliteRowCount = array($this->link, $query);
2854
+                } elseif ($r instanceof PDOStatement) {
2855
+                    $r->spipSqliteRowCount = 0;
2856
+                }
2857
+            }
2858
+
2859
+            // loger les warnings/erreurs eventuels de sqlite remontant dans PHP
2860
+            if ($e and $e instanceof \PDOException) {
2861
+                $err = strip_tags($e->getMessage()) . " in " . $e->getFile() . " line " . $e->getLine();
2862
+                spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR);
2863
+            } elseif ($err = (function_exists('error_get_last') ? error_get_last() : "") and $err != $last_error) {
2864
+                $err = strip_tags($err['message']) . " in " . $err['file'] . " line " . $err['line'];
2865
+                spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR);
2866
+            } else {
2867
+                $err = "";
2868
+            }
2869
+
2870
+        } else {
2871
+            $r = false;
2872
+        }
2873
+
2874
+        if (spip_sqlite_errno($this->serveur)) {
2875
+            $err .= spip_sqlite_error($query, $this->serveur);
2876
+        }
2877
+
2878
+        return $t ? trace_query_end($query, $t, $r, $err, $this->serveur) : $r;
2879
+    }
2880
+
2881
+    /**
2882
+     * Obtient l'identifiant de la dernière ligne insérée ou modifiée
2883
+     *
2884
+     * @return int
2885
+     **/
2886
+    public function last_insert_id() {
2887
+        return $this->link->lastInsertId();
2888
+    }
2889 2889
 }
2890 2890
 
2891 2891
 
@@ -2895,198 +2895,198 @@  discard block
 block discarded – undo
2895 2895
  * (fonction pour proteger les textes)
2896 2896
  */
2897 2897
 class sqlite_traducteur {
2898
-	/** @var string $query Texte de la requête */
2899
-	public $query = '';
2900
-	/** @var string $prefixe Préfixe des tables */
2901
-	public $prefixe = '';
2902
-	/** @var string $sqlite_version Version de sqlite (2 ou 3) */
2903
-	public $sqlite_version = '';
2904
-
2905
-	/** Pour les corrections à effectuer sur les requêtes : array(code=>'texte') trouvé
2906
-	 *
2907
-	 * @var array
2908
-	 */
2909
-	public $textes = array();
2910
-
2911
-	/**
2912
-	 * Constructeur
2913
-	 *
2914
-	 * @param string $query Requête à préparer
2915
-	 * @param string $prefixe Prefixe des tables à utiliser
2916
-	 * @param string $sqlite_version Version SQLite (2 ou 3)
2917
-	 */
2918
-	public function __construct($query, $prefixe, $sqlite_version) {
2919
-		$this->query = $query;
2920
-		$this->prefixe = $prefixe;
2921
-		$this->sqlite_version = $sqlite_version;
2922
-	}
2923
-
2924
-	/**
2925
-	 * Transformer la requete pour SQLite
2926
-	 *
2927
-	 * Enlève les textes, transforme la requête pour quelle soit
2928
-	 * bien interprétée par SQLite, puis remet les textes
2929
-	 * la fonction affecte `$this->query`
2930
-	 */
2931
-	public function traduire_requete() {
2932
-		//
2933
-		// 1) Protection des textes en les remplacant par des codes
2934
-		//
2935
-		// enlever les 'textes' et initialiser avec
2936
-		list($this->query, $textes) = query_echappe_textes($this->query);
2937
-
2938
-		//
2939
-		// 2) Corrections de la requete
2940
-		//
2941
-		// Correction Create Database
2942
-		// Create Database -> requete ignoree
2943
-		if (strpos($this->query, 'CREATE DATABASE') === 0) {
2944
-			spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.' . _LOG_AVERTISSEMENT);
2945
-			$this->query = "SELECT 1";
2946
-		}
2947
-
2948
-		// Correction Insert Ignore
2949
-		// INSERT IGNORE -> insert (tout court et pas 'insert or replace')
2950
-		if (strpos($this->query, 'INSERT IGNORE') === 0) {
2951
-			spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.' . _LOG_DEBUG);
2952
-			$this->query = 'INSERT ' . substr($this->query, '13');
2953
-		}
2954
-
2955
-		// Correction des dates avec INTERVAL
2956
-		// utiliser sql_date_proche() de preference
2957
-		if (strpos($this->query, 'INTERVAL') !== false) {
2958
-			$this->query = preg_replace_callback("/DATE_(ADD|SUB)(.*)INTERVAL\s+(\d+)\s+([a-zA-Z]+)\)/U",
2959
-				array(&$this, '_remplacerDateParTime'),
2960
-				$this->query);
2961
-		}
2962
-
2963
-		if (strpos($this->query, 'LEFT(') !== false) {
2964
-			$this->query = str_replace('LEFT(', '_LEFT(', $this->query);
2965
-		}
2966
-
2967
-		if (strpos($this->query, 'TIMESTAMPDIFF(') !== false) {
2968
-			$this->query = preg_replace('/TIMESTAMPDIFF\(\s*([^,]*)\s*,/Uims', "TIMESTAMPDIFF('\\1',", $this->query);
2969
-		}
2970
-
2971
-
2972
-		// Correction Using
2973
-		// USING (non reconnu en sqlite2)
2974
-		// problematique car la jointure ne se fait pas du coup.
2975
-		if (($this->sqlite_version == 2) && (strpos($this->query, "USING") !== false)) {
2976
-			spip_log("'USING (champ)' n'est pas reconnu en SQLite 2. Utilisez 'ON table1.champ = table2.champ'",
2977
-				'sqlite.' . _LOG_ERREUR);
2978
-			$this->query = preg_replace('/USING\s*\([^\)]*\)/', '', $this->query);
2979
-		}
2980
-
2981
-		// Correction Field
2982
-		// remplace FIELD(table,i,j,k...) par CASE WHEN table=i THEN n ... ELSE 0 END
2983
-		if (strpos($this->query, 'FIELD') !== false) {
2984
-			$this->query = preg_replace_callback('/FIELD\s*\(([^\)]*)\)/',
2985
-				array(&$this, '_remplacerFieldParCase'),
2986
-				$this->query);
2987
-		}
2988
-
2989
-		// Correction des noms de tables FROM
2990
-		// mettre les bons noms de table dans from, update, insert, replace...
2991
-		if (preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/iS', $this->query, $regs)) {
2992
-			$suite = strstr($this->query, $regs[0]);
2993
-			$this->query = substr($this->query, 0, -strlen($suite));
2994
-		} else {
2995
-			$suite = '';
2996
-		}
2997
-		$pref = ($this->prefixe) ? $this->prefixe . "_" : "";
2998
-		$this->query = preg_replace('/([,\s])spip_/S', '\1' . $pref, $this->query) . $suite;
2999
-
3000
-		// Correction zero AS x
3001
-		// pg n'aime pas 0+x AS alias, sqlite, dans le meme style, 
3002
-		// n'apprecie pas du tout SELECT 0 as x ... ORDER BY x
3003
-		// il dit que x ne doit pas être un integer dans le order by !
3004
-		// on remplace du coup x par vide() dans ce cas uniquement
3005
-		//
3006
-		// rien que pour public/vertebrer.php ?
3007
-		if ((strpos($this->query, "0 AS") !== false)) {
3008
-			// on ne remplace que dans ORDER BY ou GROUP BY
3009
-			if (preg_match('/\s(ORDER|GROUP) BY\s/i', $this->query, $regs)) {
3010
-				$suite = strstr($this->query, $regs[0]);
3011
-				$this->query = substr($this->query, 0, -strlen($suite));
3012
-
3013
-				// on cherche les noms des x dans 0 AS x
3014
-				// on remplace dans $suite le nom par vide()
3015
-				preg_match_all('/\b0 AS\s*([^\s,]+)/', $this->query, $matches, PREG_PATTERN_ORDER);
3016
-				foreach ($matches[1] as $m) {
3017
-					$suite = str_replace($m, 'VIDE()', $suite);
3018
-				}
3019
-				$this->query .= $suite;
3020
-			}
3021
-		}
3022
-
3023
-		// Correction possible des divisions entieres
3024
-		// Le standard SQL (lequel? ou?) semble indiquer que
3025
-		// a/b=c doit donner c entier si a et b sont entiers 4/3=1.
3026
-		// C'est ce que retournent effectivement SQL Server et SQLite
3027
-		// Ce n'est pas ce qu'applique MySQL qui retourne un reel : 4/3=1.333...
3028
-		// 
3029
-		// On peut forcer la conversion en multipliant par 1.0 avant la division
3030
-		// /!\ SQLite 3.5.9 Debian/Ubuntu est victime d'un bug en plus ! 
3031
-		// cf. https://bugs.launchpad.net/ubuntu/+source/sqlite3/+bug/254228
3032
-		//     http://www.sqlite.org/cvstrac/tktview?tn=3202
3033
-		// (4*1.0/3) n'est pas rendu dans ce cas !
3034
-		# $this->query = str_replace('/','* 1.00 / ',$this->query);
3035
-
3036
-
3037
-		// Correction critere REGEXP, non reconnu en sqlite2
3038
-		if (($this->sqlite_version == 2) && (strpos($this->query, 'REGEXP') !== false)) {
3039
-			$this->query = preg_replace('/([^\s\(]*)(\s*)REGEXP(\s*)([^\s\)]*)/', 'REGEXP($4, $1)', $this->query);
3040
-		}
3041
-
3042
-		//
3043
-		// 3) Remise en place des textes d'origine
3044
-		//
3045
-		// Correction Antiquotes et echappements
3046
-		// ` => rien
3047
-		if (strpos($this->query, '`') !== false) {
3048
-			$this->query = str_replace('`', '', $this->query);
3049
-		}
3050
-
3051
-		$this->query = query_reinjecte_textes($this->query, $textes);
3052
-
3053
-		return $this->query;
3054
-	}
3055
-
3056
-
3057
-	/**
3058
-	 * Callback pour remplacer `DATE_` / `INTERVAL`
3059
-	 * par `DATE ... strtotime`
3060
-	 *
3061
-	 * @param array $matches Captures
3062
-	 * @return string Texte de date compris par SQLite
3063
-	 */
3064
-	public function _remplacerDateParTime($matches) {
3065
-		$op = strtoupper($matches[1] == 'ADD') ? '+' : '-';
3066
-
3067
-		return "datetime$matches[2] '$op$matches[3] $matches[4]')";
3068
-	}
3069
-
3070
-	/**
3071
-	 * Callback pour remplacer `FIELD(table,i,j,k...)`
3072
-	 * par `CASE WHEN table=i THEN n ... ELSE 0 END`
3073
-	 *
3074
-	 * @param array $matches Captures
3075
-	 * @return string Texte de liste ordonnée compris par SQLite
3076
-	 */
3077
-	public function _remplacerFieldParCase($matches) {
3078
-		$fields = substr($matches[0], 6, -1); // ne recuperer que l'interieur X de field(X)
3079
-		$t = explode(',', $fields);
3080
-		$index = array_shift($t);
3081
-
3082
-		$res = '';
3083
-		$n = 0;
3084
-		foreach ($t as $v) {
3085
-			$n++;
3086
-			$res .= "\nWHEN $index=$v THEN $n";
3087
-		}
3088
-
3089
-		return "CASE $res ELSE 0 END ";
3090
-	}
2898
+    /** @var string $query Texte de la requête */
2899
+    public $query = '';
2900
+    /** @var string $prefixe Préfixe des tables */
2901
+    public $prefixe = '';
2902
+    /** @var string $sqlite_version Version de sqlite (2 ou 3) */
2903
+    public $sqlite_version = '';
2904
+
2905
+    /** Pour les corrections à effectuer sur les requêtes : array(code=>'texte') trouvé
2906
+     *
2907
+     * @var array
2908
+     */
2909
+    public $textes = array();
2910
+
2911
+    /**
2912
+     * Constructeur
2913
+     *
2914
+     * @param string $query Requête à préparer
2915
+     * @param string $prefixe Prefixe des tables à utiliser
2916
+     * @param string $sqlite_version Version SQLite (2 ou 3)
2917
+     */
2918
+    public function __construct($query, $prefixe, $sqlite_version) {
2919
+        $this->query = $query;
2920
+        $this->prefixe = $prefixe;
2921
+        $this->sqlite_version = $sqlite_version;
2922
+    }
2923
+
2924
+    /**
2925
+     * Transformer la requete pour SQLite
2926
+     *
2927
+     * Enlève les textes, transforme la requête pour quelle soit
2928
+     * bien interprétée par SQLite, puis remet les textes
2929
+     * la fonction affecte `$this->query`
2930
+     */
2931
+    public function traduire_requete() {
2932
+        //
2933
+        // 1) Protection des textes en les remplacant par des codes
2934
+        //
2935
+        // enlever les 'textes' et initialiser avec
2936
+        list($this->query, $textes) = query_echappe_textes($this->query);
2937
+
2938
+        //
2939
+        // 2) Corrections de la requete
2940
+        //
2941
+        // Correction Create Database
2942
+        // Create Database -> requete ignoree
2943
+        if (strpos($this->query, 'CREATE DATABASE') === 0) {
2944
+            spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.' . _LOG_AVERTISSEMENT);
2945
+            $this->query = "SELECT 1";
2946
+        }
2947
+
2948
+        // Correction Insert Ignore
2949
+        // INSERT IGNORE -> insert (tout court et pas 'insert or replace')
2950
+        if (strpos($this->query, 'INSERT IGNORE') === 0) {
2951
+            spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.' . _LOG_DEBUG);
2952
+            $this->query = 'INSERT ' . substr($this->query, '13');
2953
+        }
2954
+
2955
+        // Correction des dates avec INTERVAL
2956
+        // utiliser sql_date_proche() de preference
2957
+        if (strpos($this->query, 'INTERVAL') !== false) {
2958
+            $this->query = preg_replace_callback("/DATE_(ADD|SUB)(.*)INTERVAL\s+(\d+)\s+([a-zA-Z]+)\)/U",
2959
+                array(&$this, '_remplacerDateParTime'),
2960
+                $this->query);
2961
+        }
2962
+
2963
+        if (strpos($this->query, 'LEFT(') !== false) {
2964
+            $this->query = str_replace('LEFT(', '_LEFT(', $this->query);
2965
+        }
2966
+
2967
+        if (strpos($this->query, 'TIMESTAMPDIFF(') !== false) {
2968
+            $this->query = preg_replace('/TIMESTAMPDIFF\(\s*([^,]*)\s*,/Uims', "TIMESTAMPDIFF('\\1',", $this->query);
2969
+        }
2970
+
2971
+
2972
+        // Correction Using
2973
+        // USING (non reconnu en sqlite2)
2974
+        // problematique car la jointure ne se fait pas du coup.
2975
+        if (($this->sqlite_version == 2) && (strpos($this->query, "USING") !== false)) {
2976
+            spip_log("'USING (champ)' n'est pas reconnu en SQLite 2. Utilisez 'ON table1.champ = table2.champ'",
2977
+                'sqlite.' . _LOG_ERREUR);
2978
+            $this->query = preg_replace('/USING\s*\([^\)]*\)/', '', $this->query);
2979
+        }
2980
+
2981
+        // Correction Field
2982
+        // remplace FIELD(table,i,j,k...) par CASE WHEN table=i THEN n ... ELSE 0 END
2983
+        if (strpos($this->query, 'FIELD') !== false) {
2984
+            $this->query = preg_replace_callback('/FIELD\s*\(([^\)]*)\)/',
2985
+                array(&$this, '_remplacerFieldParCase'),
2986
+                $this->query);
2987
+        }
2988
+
2989
+        // Correction des noms de tables FROM
2990
+        // mettre les bons noms de table dans from, update, insert, replace...
2991
+        if (preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/iS', $this->query, $regs)) {
2992
+            $suite = strstr($this->query, $regs[0]);
2993
+            $this->query = substr($this->query, 0, -strlen($suite));
2994
+        } else {
2995
+            $suite = '';
2996
+        }
2997
+        $pref = ($this->prefixe) ? $this->prefixe . "_" : "";
2998
+        $this->query = preg_replace('/([,\s])spip_/S', '\1' . $pref, $this->query) . $suite;
2999
+
3000
+        // Correction zero AS x
3001
+        // pg n'aime pas 0+x AS alias, sqlite, dans le meme style, 
3002
+        // n'apprecie pas du tout SELECT 0 as x ... ORDER BY x
3003
+        // il dit que x ne doit pas être un integer dans le order by !
3004
+        // on remplace du coup x par vide() dans ce cas uniquement
3005
+        //
3006
+        // rien que pour public/vertebrer.php ?
3007
+        if ((strpos($this->query, "0 AS") !== false)) {
3008
+            // on ne remplace que dans ORDER BY ou GROUP BY
3009
+            if (preg_match('/\s(ORDER|GROUP) BY\s/i', $this->query, $regs)) {
3010
+                $suite = strstr($this->query, $regs[0]);
3011
+                $this->query = substr($this->query, 0, -strlen($suite));
3012
+
3013
+                // on cherche les noms des x dans 0 AS x
3014
+                // on remplace dans $suite le nom par vide()
3015
+                preg_match_all('/\b0 AS\s*([^\s,]+)/', $this->query, $matches, PREG_PATTERN_ORDER);
3016
+                foreach ($matches[1] as $m) {
3017
+                    $suite = str_replace($m, 'VIDE()', $suite);
3018
+                }
3019
+                $this->query .= $suite;
3020
+            }
3021
+        }
3022
+
3023
+        // Correction possible des divisions entieres
3024
+        // Le standard SQL (lequel? ou?) semble indiquer que
3025
+        // a/b=c doit donner c entier si a et b sont entiers 4/3=1.
3026
+        // C'est ce que retournent effectivement SQL Server et SQLite
3027
+        // Ce n'est pas ce qu'applique MySQL qui retourne un reel : 4/3=1.333...
3028
+        // 
3029
+        // On peut forcer la conversion en multipliant par 1.0 avant la division
3030
+        // /!\ SQLite 3.5.9 Debian/Ubuntu est victime d'un bug en plus ! 
3031
+        // cf. https://bugs.launchpad.net/ubuntu/+source/sqlite3/+bug/254228
3032
+        //     http://www.sqlite.org/cvstrac/tktview?tn=3202
3033
+        // (4*1.0/3) n'est pas rendu dans ce cas !
3034
+        # $this->query = str_replace('/','* 1.00 / ',$this->query);
3035
+
3036
+
3037
+        // Correction critere REGEXP, non reconnu en sqlite2
3038
+        if (($this->sqlite_version == 2) && (strpos($this->query, 'REGEXP') !== false)) {
3039
+            $this->query = preg_replace('/([^\s\(]*)(\s*)REGEXP(\s*)([^\s\)]*)/', 'REGEXP($4, $1)', $this->query);
3040
+        }
3041
+
3042
+        //
3043
+        // 3) Remise en place des textes d'origine
3044
+        //
3045
+        // Correction Antiquotes et echappements
3046
+        // ` => rien
3047
+        if (strpos($this->query, '`') !== false) {
3048
+            $this->query = str_replace('`', '', $this->query);
3049
+        }
3050
+
3051
+        $this->query = query_reinjecte_textes($this->query, $textes);
3052
+
3053
+        return $this->query;
3054
+    }
3055
+
3056
+
3057
+    /**
3058
+     * Callback pour remplacer `DATE_` / `INTERVAL`
3059
+     * par `DATE ... strtotime`
3060
+     *
3061
+     * @param array $matches Captures
3062
+     * @return string Texte de date compris par SQLite
3063
+     */
3064
+    public function _remplacerDateParTime($matches) {
3065
+        $op = strtoupper($matches[1] == 'ADD') ? '+' : '-';
3066
+
3067
+        return "datetime$matches[2] '$op$matches[3] $matches[4]')";
3068
+    }
3069
+
3070
+    /**
3071
+     * Callback pour remplacer `FIELD(table,i,j,k...)`
3072
+     * par `CASE WHEN table=i THEN n ... ELSE 0 END`
3073
+     *
3074
+     * @param array $matches Captures
3075
+     * @return string Texte de liste ordonnée compris par SQLite
3076
+     */
3077
+    public function _remplacerFieldParCase($matches) {
3078
+        $fields = substr($matches[0], 6, -1); // ne recuperer que l'interieur X de field(X)
3079
+        $t = explode(',', $fields);
3080
+        $index = array_shift($t);
3081
+
3082
+        $res = '';
3083
+        $n = 0;
3084
+        foreach ($t as $v) {
3085
+            $n++;
3086
+            $res .= "\nWHEN $index=$v THEN $n";
3087
+        }
3088
+
3089
+        return "CASE $res ELSE 0 END ";
3090
+    }
3091 3091
 
3092 3092
 }
Please login to merge, or discard this patch.
ecrire/inc/filtres_mini.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -147,7 +147,7 @@
 block discarded – undo
147 147
 /**
148 148
  * Verifier qu'une url est absolue et que son protocole est bien parmi une liste autorisee
149 149
  * @param string $url_absolue
150
- * @param array $protocoles_autorises
150
+ * @param string[] $protocoles_autorises
151 151
  * @return bool
152 152
  */
153 153
 function protocole_verifier($url_absolue, $protocoles_autorises = array('http','https')) {
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -44,10 +44,10 @@  discard block
 block discarded – undo
44 44
 	}
45 45
 
46 46
 	if ($query) {
47
-		$url .= '?' . $query;
47
+		$url .= '?'.$query;
48 48
 	}
49 49
 
50
-	return '/' . preg_replace(',^/,S', '', $url);
50
+	return '/'.preg_replace(',^/,S', '', $url);
51 51
 }
52 52
 
53 53
 
@@ -74,7 +74,7 @@  discard block
 block discarded – undo
74 74
 	if (preg_match(';^((?:[a-z]{3,33}:)?//.*?)(/.*)?$;iS', $lien, $r)) {
75 75
 		$r = array_pad($r, 3, null);
76 76
 
77
-		return $r[1] . resolve_path($r[2]);
77
+		return $r[1].resolve_path($r[2]);
78 78
 	}
79 79
 
80 80
 	# L'url site spip est un lien absolu aussi
@@ -93,13 +93,13 @@  discard block
 block discarded – undo
93 93
 	}
94 94
 	switch (substr($lien, 0, 1)) {
95 95
 		case '/':
96
-			return $debut . resolve_path($lien);
96
+			return $debut.resolve_path($lien);
97 97
 		case '#':
98
-			return $debut . resolve_path($dir . $mot . $get . $lien);
98
+			return $debut.resolve_path($dir.$mot.$get.$lien);
99 99
 		case '':
100
-			return $debut . resolve_path($dir . $mot . $get . $hash);
100
+			return $debut.resolve_path($dir.$mot.$get.$hash);
101 101
 		default:
102
-			return $debut . resolve_path($dir . $lien);
102
+			return $debut.resolve_path($dir.$lien);
103 103
 	}
104 104
 }
105 105
 
@@ -127,7 +127,7 @@  discard block
 block discarded – undo
127 127
 		return '';
128 128
 	}
129 129
 	if (!$base) {
130
-		$base = url_de_base() . (_DIR_RACINE ? _DIR_RESTREINT_ABS : '');
130
+		$base = url_de_base().(_DIR_RACINE ? _DIR_RESTREINT_ABS : '');
131 131
 	}
132 132
 
133 133
 	return suivre_lien($base, $url);
@@ -150,7 +150,7 @@  discard block
 block discarded – undo
150 150
  * @param array $protocoles_autorises
151 151
  * @return bool
152 152
  */
153
-function protocole_verifier($url_absolue, $protocoles_autorises = array('http','https')) {
153
+function protocole_verifier($url_absolue, $protocoles_autorises = array('http', 'https')) {
154 154
 
155 155
 	if (preg_match(';^([a-z]{3,7})://;i', $url_absolue, $m)) {
156 156
 		$protocole = $m[1];
@@ -230,7 +230,7 @@  discard block
 block discarded – undo
230 230
  */
231 231
 function spip_htmlspecialchars($string, $flags = null, $encoding = 'UTF-8', $double_encode = true) {
232 232
 	if (is_null($flags)) {
233
-		$flags = ENT_COMPAT|ENT_HTML401;
233
+		$flags = ENT_COMPAT | ENT_HTML401;
234 234
 	}
235 235
 
236 236
 	return htmlspecialchars($string, $flags, $encoding, $double_encode);
@@ -247,7 +247,7 @@  discard block
 block discarded – undo
247 247
  */
248 248
 function spip_htmlentities($string, $flags = null, $encoding = 'UTF-8', $double_encode = true) {
249 249
 	if (is_null($flags)) {
250
-		$flags = ENT_COMPAT|ENT_HTML401;
250
+		$flags = ENT_COMPAT | ENT_HTML401;
251 251
 	}
252 252
 
253 253
 	return htmlentities($string, $flags, $encoding, $double_encode);
Please login to merge, or discard this patch.
Indentation   +93 added lines, -93 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
@@ -35,19 +35,19 @@  discard block
 block discarded – undo
35 35
  * @return string URL nettoyée
36 36
  **/
37 37
 function resolve_path($url) {
38
-	list($url, $query) = array_pad(explode('?', $url, 2), 2, null);
39
-	while (preg_match(',/\.?/,', $url, $regs)    # supprime // et /./
40
-		or preg_match(',/[^/]*/\.\./,S', $url, $regs)  # supprime /toto/../
41
-		or preg_match(',^/\.\./,S', $url, $regs) # supprime les /../ du haut
42
-	) {
43
-		$url = str_replace($regs[0], '/', $url);
44
-	}
38
+    list($url, $query) = array_pad(explode('?', $url, 2), 2, null);
39
+    while (preg_match(',/\.?/,', $url, $regs)    # supprime // et /./
40
+        or preg_match(',/[^/]*/\.\./,S', $url, $regs)  # supprime /toto/../
41
+        or preg_match(',^/\.\./,S', $url, $regs) # supprime les /../ du haut
42
+    ) {
43
+        $url = str_replace($regs[0], '/', $url);
44
+    }
45 45
 
46
-	if ($query) {
47
-		$url .= '?' . $query;
48
-	}
46
+    if ($query) {
47
+        $url .= '?' . $query;
48
+    }
49 49
 
50
-	return '/' . preg_replace(',^/,S', '', $url);
50
+    return '/' . preg_replace(',^/,S', '', $url);
51 51
 }
52 52
 
53 53
 
@@ -68,41 +68,41 @@  discard block
 block discarded – undo
68 68
  **/
69 69
 function suivre_lien($url, $lien) {
70 70
 
71
-	if (preg_match(',^(mailto|javascript|data|tel|callto|file|ftp):,iS', $lien)) {
72
-		return $lien;
73
-	}
74
-	if (preg_match(';^((?:[a-z]{3,33}:)?//.*?)(/.*)?$;iS', $lien, $r)) {
75
-		$r = array_pad($r, 3, null);
71
+    if (preg_match(',^(mailto|javascript|data|tel|callto|file|ftp):,iS', $lien)) {
72
+        return $lien;
73
+    }
74
+    if (preg_match(';^((?:[a-z]{3,33}:)?//.*?)(/.*)?$;iS', $lien, $r)) {
75
+        $r = array_pad($r, 3, null);
76 76
 
77
-		return $r[1] . resolve_path($r[2]);
78
-	}
77
+        return $r[1] . resolve_path($r[2]);
78
+    }
79 79
 
80
-	# L'url site spip est un lien absolu aussi
81
-	if (isset($GLOBALS['meta']['adresse_site']) and $lien == $GLOBALS['meta']['adresse_site']) {
82
-		return $lien;
83
-	}
80
+    # L'url site spip est un lien absolu aussi
81
+    if (isset($GLOBALS['meta']['adresse_site']) and $lien == $GLOBALS['meta']['adresse_site']) {
82
+        return $lien;
83
+    }
84 84
 
85
-	# lien relatif, il faut verifier l'url de base
86
-	# commencer par virer la chaine de get de l'url de base
87
-	$dir = '/';
88
-	$debut = '';
89
-	if (preg_match(';^((?:[a-z]{3,7}:)?//[^/]+)(/.*?/?)?([^/#?]*)([?][^#]*)?(#.*)?$;S', $url, $regs)) {
90
-		$debut = $regs[1];
91
-		$dir = !strlen($regs[2]) ? '/' : $regs[2];
92
-		$mot = $regs[3];
93
-		$get = isset($regs[4]) ? $regs[4] : '';
94
-		$hash = isset($regs[5]) ? $regs[5] : '';
95
-	}
96
-	switch (substr($lien, 0, 1)) {
97
-		case '/':
98
-			return $debut . resolve_path($lien);
99
-		case '#':
100
-			return $debut . resolve_path($dir . $mot . $get . $lien);
101
-		case '':
102
-			return $debut . resolve_path($dir . $mot . $get . $hash);
103
-		default:
104
-			return $debut . resolve_path($dir . $lien);
105
-	}
85
+    # lien relatif, il faut verifier l'url de base
86
+    # commencer par virer la chaine de get de l'url de base
87
+    $dir = '/';
88
+    $debut = '';
89
+    if (preg_match(';^((?:[a-z]{3,7}:)?//[^/]+)(/.*?/?)?([^/#?]*)([?][^#]*)?(#.*)?$;S', $url, $regs)) {
90
+        $debut = $regs[1];
91
+        $dir = !strlen($regs[2]) ? '/' : $regs[2];
92
+        $mot = $regs[3];
93
+        $get = isset($regs[4]) ? $regs[4] : '';
94
+        $hash = isset($regs[5]) ? $regs[5] : '';
95
+    }
96
+    switch (substr($lien, 0, 1)) {
97
+        case '/':
98
+            return $debut . resolve_path($lien);
99
+        case '#':
100
+            return $debut . resolve_path($dir . $mot . $get . $lien);
101
+        case '':
102
+            return $debut . resolve_path($dir . $mot . $get . $hash);
103
+        default:
104
+            return $debut . resolve_path($dir . $lien);
105
+    }
106 106
 }
107 107
 
108 108
 
@@ -125,14 +125,14 @@  discard block
 block discarded – undo
125 125
  * @return string Texte ou URL (en absolus)
126 126
  **/
127 127
 function url_absolue($url, $base = '') {
128
-	if (strlen($url = trim($url)) == 0) {
129
-		return '';
130
-	}
131
-	if (!$base) {
132
-		$base = url_de_base() . (_DIR_RACINE ? _DIR_RESTREINT_ABS : '');
133
-	}
128
+    if (strlen($url = trim($url)) == 0) {
129
+        return '';
130
+    }
131
+    if (!$base) {
132
+        $base = url_de_base() . (_DIR_RACINE ? _DIR_RESTREINT_ABS : '');
133
+    }
134 134
 
135
-	return suivre_lien($base, $url);
135
+    return suivre_lien($base, $url);
136 136
 }
137 137
 
138 138
 /**
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
  * @return string
144 144
  */
145 145
 function protocole_implicite($url_absolue) {
146
-	return preg_replace(';^[a-z]{3,7}://;i', '//', $url_absolue);
146
+    return preg_replace(';^[a-z]{3,7}://;i', '//', $url_absolue);
147 147
 }
148 148
 
149 149
 /**
@@ -154,14 +154,14 @@  discard block
 block discarded – undo
154 154
  */
155 155
 function protocole_verifier($url_absolue, $protocoles_autorises = array('http','https')) {
156 156
 
157
-	if (preg_match(';^([a-z]{3,7})://;i', $url_absolue, $m)) {
158
-		$protocole = $m[1];
159
-		if (in_array($protocole, $protocoles_autorises)
160
-		  or in_array(strtolower($protocole), array_map('strtolower', $protocoles_autorises))) {
161
-			return true;
162
-		}
163
-	}
164
-	return false;
157
+    if (preg_match(';^([a-z]{3,7})://;i', $url_absolue, $m)) {
158
+        $protocole = $m[1];
159
+        if (in_array($protocole, $protocoles_autorises)
160
+          or in_array(strtolower($protocole), array_map('strtolower', $protocoles_autorises))) {
161
+            return true;
162
+        }
163
+    }
164
+    return false;
165 165
 }
166 166
 
167 167
 /**
@@ -178,27 +178,27 @@  discard block
 block discarded – undo
178 178
  * @return string Texte avec des URLs absolues
179 179
  **/
180 180
 function liens_absolus($texte, $base = '') {
181
-	if (preg_match_all(',(<(a|link|image|img|script)\s[^<>]*(href|src)=[^<>]*>),imsS', $texte, $liens, PREG_SET_ORDER)) {
182
-		if (!function_exists('extraire_attribut')) {
183
-			include_spip('inc/filtres');
184
-		}
185
-		foreach ($liens as $lien) {
186
-			foreach (array('href', 'src') as $attr) {
187
-				$href = extraire_attribut($lien[0], $attr);
188
-				if (strlen($href) > 0) {
189
-					if (!preg_match(';^((?:[a-z]{3,7}:)?//);iS', $href)) {
190
-						$abs = url_absolue($href, $base);
191
-						if (rtrim($href, '/') !== rtrim($abs, '/') and !preg_match('/^#/', $href)) {
192
-							$texte_lien = inserer_attribut($lien[0], $attr, $abs);
193
-							$texte = str_replace($lien[0], $texte_lien, $texte);
194
-						}
195
-					}
196
-				}
197
-			}
198
-		}
199
-	}
181
+    if (preg_match_all(',(<(a|link|image|img|script)\s[^<>]*(href|src)=[^<>]*>),imsS', $texte, $liens, PREG_SET_ORDER)) {
182
+        if (!function_exists('extraire_attribut')) {
183
+            include_spip('inc/filtres');
184
+        }
185
+        foreach ($liens as $lien) {
186
+            foreach (array('href', 'src') as $attr) {
187
+                $href = extraire_attribut($lien[0], $attr);
188
+                if (strlen($href) > 0) {
189
+                    if (!preg_match(';^((?:[a-z]{3,7}:)?//);iS', $href)) {
190
+                        $abs = url_absolue($href, $base);
191
+                        if (rtrim($href, '/') !== rtrim($abs, '/') and !preg_match('/^#/', $href)) {
192
+                            $texte_lien = inserer_attribut($lien[0], $attr, $abs);
193
+                            $texte = str_replace($lien[0], $texte_lien, $texte);
194
+                        }
195
+                    }
196
+                }
197
+            }
198
+        }
199
+    }
200 200
 
201
-	return $texte;
201
+    return $texte;
202 202
 }
203 203
 
204 204
 
@@ -214,11 +214,11 @@  discard block
 block discarded – undo
214 214
  * @return string Texte ou URL (en absolus)
215 215
  **/
216 216
 function abs_url($texte, $base = '') {
217
-	if ($GLOBALS['mode_abs_url'] == 'url') {
218
-		return url_absolue($texte, $base);
219
-	} else {
220
-		return liens_absolus($texte, $base);
221
-	}
217
+    if ($GLOBALS['mode_abs_url'] == 'url') {
218
+        return url_absolue($texte, $base);
219
+    } else {
220
+        return liens_absolus($texte, $base);
221
+    }
222 222
 }
223 223
 
224 224
 /**
@@ -231,11 +231,11 @@  discard block
 block discarded – undo
231 231
  * @return string
232 232
  */
233 233
 function spip_htmlspecialchars($string, $flags = null, $encoding = 'UTF-8', $double_encode = true) {
234
-	if (is_null($flags)) {
235
-		$flags = ENT_COMPAT|ENT_HTML401;
236
-	}
234
+    if (is_null($flags)) {
235
+        $flags = ENT_COMPAT|ENT_HTML401;
236
+    }
237 237
 
238
-	return htmlspecialchars($string, $flags, $encoding, $double_encode);
238
+    return htmlspecialchars($string, $flags, $encoding, $double_encode);
239 239
 }
240 240
 
241 241
 /**
@@ -248,9 +248,9 @@  discard block
 block discarded – undo
248 248
  * @return string
249 249
  */
250 250
 function spip_htmlentities($string, $flags = null, $encoding = 'UTF-8', $double_encode = true) {
251
-	if (is_null($flags)) {
252
-		$flags = ENT_COMPAT|ENT_HTML401;
253
-	}
251
+    if (is_null($flags)) {
252
+        $flags = ENT_COMPAT|ENT_HTML401;
253
+    }
254 254
 
255
-	return htmlentities($string, $flags, $encoding, $double_encode);
255
+    return htmlentities($string, $flags, $encoding, $double_encode);
256 256
 }
Please login to merge, or discard this patch.