Completed
Push — master ( 3a7980...c8fa57 )
by cam
04:18
created
ecrire/inc/acces.php 4 patches
Doc Comments   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -261,7 +261,7 @@  discard block
 block discarded – undo
261 261
 /**
262 262
  * Initialiser la globale htsalt si cela n'a pas déjà été fait.
263 263
  *
264
- * @return void|bool
264
+ * @return string
265 265
  */
266 266
 function initialiser_sel() {
267 267
 	if (!isset($GLOBALS['htsalt'])) {
@@ -317,7 +317,7 @@  discard block
 block discarded – undo
317 317
 
318 318
 /**
319 319
  * Generer le fichier de htpasswd contenant les htpass
320
- * @param $htpasswd
320
+ * @param string $htpasswd
321 321
  * @param $htpasswd_admin
322 322
  */
323 323
 function generer_htpasswd_files($htpasswd, $htpasswd_admin) {
Please login to merge, or discard this patch.
Spacing   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
  *     Mot de passe
32 32
  **/
33 33
 function creer_pass_aleatoire($longueur = 16, $sel = '') {
34
-	$seed = (int)round(((float)microtime() + 1) * time());
34
+	$seed = (int) round(((float) microtime() + 1) * time());
35 35
 
36 36
 	mt_srand($seed);
37 37
 	srand($seed);
@@ -43,9 +43,9 @@  discard block
 block discarded – undo
43 43
 			if (!$s) {
44 44
 				$s = rand();
45 45
 			}
46
-			$s = substr(md5(uniqid($s) . $sel), 0, 16);
46
+			$s = substr(md5(uniqid($s).$sel), 0, 16);
47 47
 		}
48
-		$r = unpack('Cr', pack('H2', $s . $s));
48
+		$r = unpack('Cr', pack('H2', $s.$s));
49 49
 		$x = $r['r'] & 63;
50 50
 		if ($x < 10) {
51 51
 			$x = chr($x + 48);
@@ -83,7 +83,7 @@  discard block
 block discarded – undo
83 83
 	static $seeded;
84 84
 
85 85
 	if (!$seeded) {
86
-		$seed = (int)round(((float)microtime() + 1) * time());
86
+		$seed = (int) round(((float) microtime() + 1) * time());
87 87
 		mt_srand($seed);
88 88
 		srand($seed);
89 89
 		$seeded = true;
@@ -192,9 +192,9 @@  discard block
 block discarded – undo
192 192
 	foreach ($args as $val => $var) {
193 193
 		if ($var) {
194 194
 			if ($val <> 'statut') {
195
-				$a .= ':' . $val . '-' . $var;
195
+				$a .= ':'.$val.'-'.$var;
196 196
 			}
197
-			$b .= $val . '=' . $var . '&';
197
+			$b .= $val.'='.$var.'&';
198 198
 		}
199 199
 	}
200 200
 	$a = substr($a, 1);
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
  *     Clé
225 225
  **/
226 226
 function afficher_low_sec($id_auteur, $action = '') {
227
-	return substr(md5($action . low_sec($id_auteur)), 0, 8);
227
+	return substr(md5($action.low_sec($id_auteur)), 0, 8);
228 228
 }
229 229
 
230 230
 /**
@@ -266,7 +266,7 @@  discard block
 block discarded – undo
266 266
 function initialiser_sel() {
267 267
 	if (!isset($GLOBALS['htsalt'])) {
268 268
 		if (CRYPT_MD5) {
269
-			$GLOBALS['htsalt'] = '$1$' . creer_pass_aleatoire();
269
+			$GLOBALS['htsalt'] = '$1$'.creer_pass_aleatoire();
270 270
 		} else {
271 271
 			$GLOBALS['htsalt'] = '';
272 272
 		}
@@ -288,8 +288,8 @@  discard block
 block discarded – undo
288 288
  *     - void sinon.
289 289
  **/
290 290
 function ecrire_acces() {
291
-	$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
292
-	$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
291
+	$htaccess = _DIR_RESTREINT._ACCESS_FILE_NAME;
292
+	$htpasswd = _DIR_TMP._AUTH_USER_FILE;
293 293
 
294 294
 	// Cette variable de configuration peut etre posee par un plugin
295 295
 	// par exemple acces_restreint ;
@@ -299,7 +299,7 @@  discard block
 block discarded – undo
299 299
 		and !@file_exists($htaccess)
300 300
 	) {
301 301
 		spip_unlink($htpasswd);
302
-		spip_unlink($htpasswd . '-admin');
302
+		spip_unlink($htpasswd.'-admin');
303 303
 		return;
304 304
 	}
305 305
 
@@ -331,7 +331,7 @@  discard block
 block discarded – undo
331 331
 	$res = sql_select('login, htpass, statut', 'spip_auteurs', "htpass!='' AND login!='' AND ".sql_in('statut', ['1comite', '0minirezo', 'nouveau']));
332 332
 	while ($row = sql_fetch($res)) {
333 333
 		if (strlen($row['login']) and strlen($row['htpass'])) {
334
-			$ligne = $row['login'] . ':' . $row['htpass'] . "\n";
334
+			$ligne = $row['login'].':'.$row['htpass']."\n";
335 335
 			$pwd_all .= $ligne;
336 336
 			if ($row['statut'] == '0minirezo') {
337 337
 				$pwd_admin .= $ligne;
@@ -376,7 +376,7 @@  discard block
 block discarded – undo
376 376
  * @return boolean
377 377
  */
378 378
 function verifier_htaccess($rep, $force = false) {
379
-	$htaccess = rtrim($rep, '/') . '/' . _ACCESS_FILE_NAME;
379
+	$htaccess = rtrim($rep, '/').'/'._ACCESS_FILE_NAME;
380 380
 	if (((@file_exists($htaccess)) or defined('_TEST_DIRS')) and !$force) {
381 381
 		return true;
382 382
 	}
@@ -403,19 +403,19 @@  discard block
 block discarded – undo
403 403
 		fputs($ht, $deny);
404 404
 		fclose($ht);
405 405
 		@chmod($htaccess, _SPIP_CHMOD & 0666);
406
-		$t = rtrim($rep, '/') . '/.ok';
406
+		$t = rtrim($rep, '/').'/.ok';
407 407
 		if ($ht = @fopen($t, 'w')) {
408 408
 			@fclose($ht);
409 409
 			include_spip('inc/distant');
410 410
 			$t = substr($t, strlen(_DIR_RACINE));
411
-			$t = url_de_base() . $t;
411
+			$t = url_de_base().$t;
412 412
 			$ht = recuperer_lapage($t, false, 'HEAD', 0);
413 413
 			// htaccess inoperant si on a recupere des entetes HTTP
414 414
 			// (ignorer la reussite si connexion par fopen)
415 415
 			$ht = !(isset($ht[0]) and $ht[0]);
416 416
 		}
417 417
 	}
418
-	spip_log("Creation de $htaccess " . ($ht ? ' reussie' : ' manquee'));
418
+	spip_log("Creation de $htaccess ".($ht ? ' reussie' : ' manquee'));
419 419
 
420 420
 	return $ht;
421 421
 }
@@ -441,11 +441,11 @@  discard block
 block discarded – undo
441 441
 	$dirs = sql_allfetsel('extension', 'spip_types_documents');
442 442
 	$dirs[] = array('extension' => 'distant');
443 443
 	foreach ($dirs as $e) {
444
-		if (is_dir($dir = _DIR_IMG . $e['extension'])) {
444
+		if (is_dir($dir = _DIR_IMG.$e['extension'])) {
445 445
 			if ($f) {
446 446
 				verifier_htaccess($dir);
447 447
 			} else {
448
-				spip_unlink($dir . '/' . _ACCESS_FILE_NAME);
448
+				spip_unlink($dir.'/'._ACCESS_FILE_NAME);
449 449
 			}
450 450
 		}
451 451
 	}
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -359,8 +359,7 @@
 block discarded – undo
359 359
 function generer_htpass($pass) {
360 360
 	if ($generer_htpass = charger_fonction('generer_htpass', 'inc', true)) {
361 361
 		return $generer_htpass($pass);
362
-	}
363
-	elseif (function_exists('crypt')) {
362
+	} elseif (function_exists('crypt')) {
364 363
 		return crypt($pass, initialiser_sel());
365 364
 	}
366 365
 	return '';
Please login to merge, or discard this patch.
Indentation   +235 added lines, -235 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
 /**
@@ -31,47 +31,47 @@  discard block
 block discarded – undo
31 31
  *     Mot de passe
32 32
  **/
33 33
 function creer_pass_aleatoire($longueur = 16, $sel = '') {
34
-	$seed = (int)round(((float)microtime() + 1) * time());
35
-
36
-	mt_srand($seed);
37
-	srand($seed);
38
-	$s = '';
39
-	$pass = '';
40
-	for ($i = 0; $i < $longueur; $i++) {
41
-		if (!$s) {
42
-			$s = mt_rand();
43
-			if (!$s) {
44
-				$s = rand();
45
-			}
46
-			$s = substr(md5(uniqid($s) . $sel), 0, 16);
47
-		}
48
-		$r = unpack('Cr', pack('H2', $s . $s));
49
-		$x = $r['r'] & 63;
50
-		if ($x < 10) {
51
-			$x = chr($x + 48);
52
-		} else {
53
-			if ($x < 36) {
54
-				$x = chr($x + 55);
55
-			} else {
56
-				if ($x < 62) {
57
-					$x = chr($x + 61);
58
-				} else {
59
-					if ($x == 63) {
60
-						$x = '/';
61
-					} else {
62
-						$x = '.';
63
-					}
64
-				}
65
-			}
66
-		}
67
-		$pass .= $x;
68
-		$s = substr($s, 2);
69
-	}
70
-	$pass = preg_replace('@[./]@', 'a', $pass);
71
-	$pass = preg_replace('@[I1l]@', 'L', $pass);
72
-	$pass = preg_replace('@[0O]@', 'o', $pass);
73
-
74
-	return $pass;
34
+    $seed = (int)round(((float)microtime() + 1) * time());
35
+
36
+    mt_srand($seed);
37
+    srand($seed);
38
+    $s = '';
39
+    $pass = '';
40
+    for ($i = 0; $i < $longueur; $i++) {
41
+        if (!$s) {
42
+            $s = mt_rand();
43
+            if (!$s) {
44
+                $s = rand();
45
+            }
46
+            $s = substr(md5(uniqid($s) . $sel), 0, 16);
47
+        }
48
+        $r = unpack('Cr', pack('H2', $s . $s));
49
+        $x = $r['r'] & 63;
50
+        if ($x < 10) {
51
+            $x = chr($x + 48);
52
+        } else {
53
+            if ($x < 36) {
54
+                $x = chr($x + 55);
55
+            } else {
56
+                if ($x < 62) {
57
+                    $x = chr($x + 61);
58
+                } else {
59
+                    if ($x == 63) {
60
+                        $x = '/';
61
+                    } else {
62
+                        $x = '.';
63
+                    }
64
+                }
65
+            }
66
+        }
67
+        $pass .= $x;
68
+        $s = substr($s, 2);
69
+    }
70
+    $pass = preg_replace('@[./]@', 'a', $pass);
71
+    $pass = preg_replace('@[I1l]@', 'L', $pass);
72
+    $pass = preg_replace('@[0O]@', 'o', $pass);
73
+
74
+    return $pass;
75 75
 }
76 76
 
77 77
 /**
@@ -80,21 +80,21 @@  discard block
 block discarded – undo
80 80
  * @return string Identifiant
81 81
  */
82 82
 function creer_uniqid() {
83
-	static $seeded;
83
+    static $seeded;
84 84
 
85
-	if (!$seeded) {
86
-		$seed = (int)round(((float)microtime() + 1) * time());
87
-		mt_srand($seed);
88
-		srand($seed);
89
-		$seeded = true;
90
-	}
85
+    if (!$seeded) {
86
+        $seed = (int)round(((float)microtime() + 1) * time());
87
+        mt_srand($seed);
88
+        srand($seed);
89
+        $seeded = true;
90
+    }
91 91
 
92
-	$s = mt_rand();
93
-	if (!$s) {
94
-		$s = rand();
95
-	}
92
+    $s = mt_rand();
93
+    if (!$s) {
94
+        $s = rand();
95
+    }
96 96
 
97
-	return uniqid($s, 1);
97
+    return uniqid($s, 1);
98 98
 }
99 99
 
100 100
 /**
@@ -108,38 +108,38 @@  discard block
 block discarded – undo
108 108
  * @return string Retourne l'alea éphemère actuel au passage
109 109
  */
110 110
 function charger_aleas() {
111
-	if (!isset($GLOBALS['meta']['alea_ephemere'])) {
112
-		include_spip('base/abstract_sql');
113
-		$aleas = sql_allfetsel(
114
-			array('nom', 'valeur'),
115
-			'spip_meta',
116
-			sql_in("nom", array('alea_ephemere', 'alea_ephemere_ancien')),
117
-			'', '', '', '', '',
118
-			'continue'
119
-		);
120
-		if ($aleas) {
121
-			foreach ($aleas as $a) {
122
-				$GLOBALS['meta'][$a['nom']] = $a['valeur'];
123
-			}
124
-			return $GLOBALS['meta']['alea_ephemere'];
125
-		} else {
126
-			spip_log("aleas indisponibles", "session");
127
-			return "";
128
-		}
129
-	}
130
-	return $GLOBALS['meta']['alea_ephemere'];
111
+    if (!isset($GLOBALS['meta']['alea_ephemere'])) {
112
+        include_spip('base/abstract_sql');
113
+        $aleas = sql_allfetsel(
114
+            array('nom', 'valeur'),
115
+            'spip_meta',
116
+            sql_in("nom", array('alea_ephemere', 'alea_ephemere_ancien')),
117
+            '', '', '', '', '',
118
+            'continue'
119
+        );
120
+        if ($aleas) {
121
+            foreach ($aleas as $a) {
122
+                $GLOBALS['meta'][$a['nom']] = $a['valeur'];
123
+            }
124
+            return $GLOBALS['meta']['alea_ephemere'];
125
+        } else {
126
+            spip_log("aleas indisponibles", "session");
127
+            return "";
128
+        }
129
+    }
130
+    return $GLOBALS['meta']['alea_ephemere'];
131 131
 }
132 132
 
133 133
 /**
134 134
  * Renouveller l'alea (utilisé pour sécuriser les scripts du répertoire `action/`)
135 135
  **/
136 136
 function renouvelle_alea() {
137
-	charger_aleas();
138
-	ecrire_meta('alea_ephemere_ancien', @$GLOBALS['meta']['alea_ephemere'], 'non');
139
-	$GLOBALS['meta']['alea_ephemere'] = md5(creer_uniqid());
140
-	ecrire_meta('alea_ephemere', $GLOBALS['meta']['alea_ephemere'], 'non');
141
-	ecrire_meta('alea_ephemere_date', time(), 'non');
142
-	spip_log("renouvellement de l'alea_ephemere");
137
+    charger_aleas();
138
+    ecrire_meta('alea_ephemere_ancien', @$GLOBALS['meta']['alea_ephemere'], 'non');
139
+    $GLOBALS['meta']['alea_ephemere'] = md5(creer_uniqid());
140
+    ecrire_meta('alea_ephemere', $GLOBALS['meta']['alea_ephemere'], 'non');
141
+    ecrire_meta('alea_ephemere_date', time(), 'non');
142
+    spip_log("renouvellement de l'alea_ephemere");
143 143
 }
144 144
 
145 145
 
@@ -159,21 +159,21 @@  discard block
 block discarded – undo
159 159
  *     Clé de sécurité.
160 160
  **/
161 161
 function low_sec($id_auteur) {
162
-	// Pas d'id_auteur : low_sec
163
-	if (!$id_auteur = intval($id_auteur)) {
164
-		include_spip('inc/config');
165
-		if (!$low_sec = lire_config('low_sec')) {
166
-			ecrire_meta('low_sec', $low_sec = creer_pass_aleatoire());
167
-		}
168
-	} else {
169
-		$low_sec = sql_getfetsel('low_sec', 'spip_auteurs', 'id_auteur = '.intval($id_auteur));
170
-		if (!$low_sec) {
171
-			$low_sec = creer_pass_aleatoire();
172
-			sql_updateq('spip_auteurs', array('low_sec' => $low_sec), 'id_auteur = '.intval($id_auteur));
173
-		}
174
-	}
175
-
176
-	return $low_sec;
162
+    // Pas d'id_auteur : low_sec
163
+    if (!$id_auteur = intval($id_auteur)) {
164
+        include_spip('inc/config');
165
+        if (!$low_sec = lire_config('low_sec')) {
166
+            ecrire_meta('low_sec', $low_sec = creer_pass_aleatoire());
167
+        }
168
+    } else {
169
+        $low_sec = sql_getfetsel('low_sec', 'spip_auteurs', 'id_auteur = '.intval($id_auteur));
170
+        if (!$low_sec) {
171
+            $low_sec = creer_pass_aleatoire();
172
+            sql_updateq('spip_auteurs', array('low_sec' => $low_sec), 'id_auteur = '.intval($id_auteur));
173
+        }
174
+    }
175
+
176
+    return $low_sec;
177 177
 }
178 178
 
179 179
 /**
@@ -189,27 +189,27 @@  discard block
 block discarded – undo
189 189
  * @return string
190 190
  */
191 191
 function param_low_sec($op, $args = array(), $lang = '', $mime = 'rss') {
192
-	$a = $b = '';
193
-	foreach ($args as $val => $var) {
194
-		if ($var) {
195
-			if ($val <> 'statut') {
196
-				$a .= ':' . $val . '-' . $var;
197
-			}
198
-			$b .= $val . '=' . $var . '&';
199
-		}
200
-	}
201
-	$a = substr($a, 1);
202
-	$id = intval(@$GLOBALS['connect_id_auteur']);
203
-
204
-	return $b
205
-	. 'op='
206
-	. $op
207
-	. '&id='
208
-	. $id
209
-	. '&cle='
210
-	. afficher_low_sec($id, "$mime $op $a")
211
-	. (!$a ? '' : "&args=$a")
212
-	. (!$lang ? '' : "&lang=$lang");
192
+    $a = $b = '';
193
+    foreach ($args as $val => $var) {
194
+        if ($var) {
195
+            if ($val <> 'statut') {
196
+                $a .= ':' . $val . '-' . $var;
197
+            }
198
+            $b .= $val . '=' . $var . '&';
199
+        }
200
+    }
201
+    $a = substr($a, 1);
202
+    $id = intval(@$GLOBALS['connect_id_auteur']);
203
+
204
+    return $b
205
+    . 'op='
206
+    . $op
207
+    . '&id='
208
+    . $id
209
+    . '&cle='
210
+    . afficher_low_sec($id, "$mime $op $a")
211
+    . (!$a ? '' : "&args=$a")
212
+    . (!$lang ? '' : "&lang=$lang");
213 213
 }
214 214
 
215 215
 /**
@@ -225,7 +225,7 @@  discard block
 block discarded – undo
225 225
  *     Clé
226 226
  **/
227 227
 function afficher_low_sec($id_auteur, $action = '') {
228
-	return substr(md5($action . low_sec($id_auteur)), 0, 8);
228
+    return substr(md5($action . low_sec($id_auteur)), 0, 8);
229 229
 }
230 230
 
231 231
 /**
@@ -243,7 +243,7 @@  discard block
 block discarded – undo
243 243
  *     true si les clés corresponde, false sinon
244 244
  **/
245 245
 function verifier_low_sec($id_auteur, $cle, $action = '') {
246
-	return ($cle == afficher_low_sec($id_auteur, $action));
246
+    return ($cle == afficher_low_sec($id_auteur, $action));
247 247
 }
248 248
 
249 249
 /**
@@ -253,10 +253,10 @@  discard block
 block discarded – undo
253 253
  *     Identifiant de l'auteur
254 254
  **/
255 255
 function effacer_low_sec($id_auteur) {
256
-	if (!$id_auteur = intval($id_auteur)) {
257
-		return;
258
-	} // jamais trop prudent ;)
259
-	sql_updateq('spip_auteurs', array('low_sec' => ''), 'id_auteur = '.intval($id_auteur));
256
+    if (!$id_auteur = intval($id_auteur)) {
257
+        return;
258
+    } // jamais trop prudent ;)
259
+    sql_updateq('spip_auteurs', array('low_sec' => ''), 'id_auteur = '.intval($id_auteur));
260 260
 }
261 261
 
262 262
 /**
@@ -265,14 +265,14 @@  discard block
 block discarded – undo
265 265
  * @return void|bool
266 266
  */
267 267
 function initialiser_sel() {
268
-	if (!isset($GLOBALS['htsalt'])) {
269
-		if (CRYPT_MD5) {
270
-			$GLOBALS['htsalt'] = '$1$' . creer_pass_aleatoire();
271
-		} else {
272
-			$GLOBALS['htsalt'] = '';
273
-		}
274
-	}
275
-	return $GLOBALS['htsalt'];
268
+    if (!isset($GLOBALS['htsalt'])) {
269
+        if (CRYPT_MD5) {
270
+            $GLOBALS['htsalt'] = '$1$' . creer_pass_aleatoire();
271
+        } else {
272
+            $GLOBALS['htsalt'] = '';
273
+        }
274
+    }
275
+    return $GLOBALS['htsalt'];
276 276
 }
277 277
 
278 278
 /**
@@ -289,31 +289,31 @@  discard block
 block discarded – undo
289 289
  *     - void sinon.
290 290
  **/
291 291
 function ecrire_acces() {
292
-	$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
293
-	$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
294
-
295
-	// Cette variable de configuration peut etre posee par un plugin
296
-	// par exemple acces_restreint ;
297
-	// si .htaccess existe, outrepasser spip_meta
298
-	if ((!isset($GLOBALS['meta']['creer_htpasswd'])
299
-			or ($GLOBALS['meta']['creer_htpasswd'] != 'oui'))
300
-		and !@file_exists($htaccess)
301
-	) {
302
-		spip_unlink($htpasswd);
303
-		spip_unlink($htpasswd . '-admin');
304
-		return;
305
-	}
306
-
307
-	# remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
308
-	# de devenir redacteur le cas echeant (auth http)... a nettoyer
309
-	// attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
310
-	// TODO: factoriser avec auth/spip qui fait deja ce job et generaliser le test spip_connect_ldap()
311
-
312
-	if (spip_connect_ldap()) {
313
-		return;
314
-	}
315
-
316
-	generer_htpasswd_files($htpasswd, "$htpasswd-admin");
292
+    $htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
293
+    $htpasswd = _DIR_TMP . _AUTH_USER_FILE;
294
+
295
+    // Cette variable de configuration peut etre posee par un plugin
296
+    // par exemple acces_restreint ;
297
+    // si .htaccess existe, outrepasser spip_meta
298
+    if ((!isset($GLOBALS['meta']['creer_htpasswd'])
299
+            or ($GLOBALS['meta']['creer_htpasswd'] != 'oui'))
300
+        and !@file_exists($htaccess)
301
+    ) {
302
+        spip_unlink($htpasswd);
303
+        spip_unlink($htpasswd . '-admin');
304
+        return;
305
+    }
306
+
307
+    # remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
308
+    # de devenir redacteur le cas echeant (auth http)... a nettoyer
309
+    // attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
310
+    // TODO: factoriser avec auth/spip qui fait deja ce job et generaliser le test spip_connect_ldap()
311
+
312
+    if (spip_connect_ldap()) {
313
+        return;
314
+    }
315
+
316
+    generer_htpasswd_files($htpasswd, "$htpasswd-admin");
317 317
 }
318 318
 
319 319
 /**
@@ -322,29 +322,29 @@  discard block
 block discarded – undo
322 322
  * @param $htpasswd_admin
323 323
  */
324 324
 function generer_htpasswd_files($htpasswd, $htpasswd_admin) {
325
-	if ($generer_htpasswd = charger_fonction('generer_htpasswd_files', 'inc', true)) {
326
-		$generer_htpasswd($htpasswd, $htpasswd_admin);
327
-	}
328
-
329
-	$pwd_all = ''; // login:htpass pour tous
330
-	$pwd_admin = ''; // login:htpass pour les admins
331
-
332
-	$res = sql_select('login, htpass, statut', 'spip_auteurs', "htpass!='' AND login!='' AND ".sql_in('statut', ['1comite', '0minirezo', 'nouveau']));
333
-	while ($row = sql_fetch($res)) {
334
-		if (strlen($row['login']) and strlen($row['htpass'])) {
335
-			$ligne = $row['login'] . ':' . $row['htpass'] . "\n";
336
-			$pwd_all .= $ligne;
337
-			if ($row['statut'] == '0minirezo') {
338
-				$pwd_admin .= $ligne;
339
-			}
340
-		}
341
-	}
342
-
343
-	if ($pwd_all) {
344
-		ecrire_fichier($htpasswd, $pwd_all);
345
-		ecrire_fichier($htpasswd_admin, $pwd_admin);
346
-		spip_log("Ecriture de $htpasswd et $htpasswd_admin", 'htpass');
347
-	}
325
+    if ($generer_htpasswd = charger_fonction('generer_htpasswd_files', 'inc', true)) {
326
+        $generer_htpasswd($htpasswd, $htpasswd_admin);
327
+    }
328
+
329
+    $pwd_all = ''; // login:htpass pour tous
330
+    $pwd_admin = ''; // login:htpass pour les admins
331
+
332
+    $res = sql_select('login, htpass, statut', 'spip_auteurs', "htpass!='' AND login!='' AND ".sql_in('statut', ['1comite', '0minirezo', 'nouveau']));
333
+    while ($row = sql_fetch($res)) {
334
+        if (strlen($row['login']) and strlen($row['htpass'])) {
335
+            $ligne = $row['login'] . ':' . $row['htpass'] . "\n";
336
+            $pwd_all .= $ligne;
337
+            if ($row['statut'] == '0minirezo') {
338
+                $pwd_admin .= $ligne;
339
+            }
340
+        }
341
+    }
342
+
343
+    if ($pwd_all) {
344
+        ecrire_fichier($htpasswd, $pwd_all);
345
+        ecrire_fichier($htpasswd_admin, $pwd_admin);
346
+        spip_log("Ecriture de $htpasswd et $htpasswd_admin", 'htpass');
347
+    }
348 348
 }
349 349
 
350 350
 /**
@@ -358,13 +358,13 @@  discard block
 block discarded – undo
358 358
  *  La chaîne hachée si fonction crypt présente, rien sinon.
359 359
  */
360 360
 function generer_htpass($pass) {
361
-	if ($generer_htpass = charger_fonction('generer_htpass', 'inc', true)) {
362
-		return $generer_htpass($pass);
363
-	}
364
-	elseif (function_exists('crypt')) {
365
-		return crypt($pass, initialiser_sel());
366
-	}
367
-	return '';
361
+    if ($generer_htpass = charger_fonction('generer_htpass', 'inc', true)) {
362
+        return $generer_htpass($pass);
363
+    }
364
+    elseif (function_exists('crypt')) {
365
+        return crypt($pass, initialiser_sel());
366
+    }
367
+    return '';
368 368
 }
369 369
 
370 370
 /**
@@ -377,14 +377,14 @@  discard block
 block discarded – undo
377 377
  * @return boolean
378 378
  */
379 379
 function verifier_htaccess($rep, $force = false) {
380
-	$htaccess = rtrim($rep, '/') . '/' . _ACCESS_FILE_NAME;
381
-	if (((@file_exists($htaccess)) or defined('_TEST_DIRS')) and !$force) {
382
-		return true;
383
-	}
384
-
385
-	// directive deny compatible Apache 2.0+
386
-	$deny =
387
-		'# Deny all requests from Apache 2.4+.
380
+    $htaccess = rtrim($rep, '/') . '/' . _ACCESS_FILE_NAME;
381
+    if (((@file_exists($htaccess)) or defined('_TEST_DIRS')) and !$force) {
382
+        return true;
383
+    }
384
+
385
+    // directive deny compatible Apache 2.0+
386
+    $deny =
387
+        '# Deny all requests from Apache 2.4+.
388 388
 <IfModule mod_authz_core.c>
389 389
   Require all denied
390 390
 </IfModule>
@@ -393,32 +393,32 @@  discard block
 block discarded – undo
393 393
   Deny from all
394 394
 </IfModule>
395 395
 ';
396
-	// support des vieilles versions Apache 1.x mais uniquement si elles l'annoncent (pas en mode PROD)
397
-	if (function_exists('apache_get_version')
398
-		and $v = apache_get_version()
399
-		and strncmp($v, 'Apache/1.', 9) == 0) {
400
-		$deny = "deny from all\n";
401
-	}
402
-
403
-	if ($ht = @fopen($htaccess, 'w')) {
404
-		fputs($ht, $deny);
405
-		fclose($ht);
406
-		@chmod($htaccess, _SPIP_CHMOD & 0666);
407
-		$t = rtrim($rep, '/') . '/.ok';
408
-		if ($ht = @fopen($t, 'w')) {
409
-			@fclose($ht);
410
-			include_spip('inc/distant');
411
-			$t = substr($t, strlen(_DIR_RACINE));
412
-			$t = url_de_base() . $t;
413
-			$ht = recuperer_lapage($t, false, 'HEAD', 0);
414
-			// htaccess inoperant si on a recupere des entetes HTTP
415
-			// (ignorer la reussite si connexion par fopen)
416
-			$ht = !(isset($ht[0]) and $ht[0]);
417
-		}
418
-	}
419
-	spip_log("Creation de $htaccess " . ($ht ? ' reussie' : ' manquee'));
420
-
421
-	return $ht;
396
+    // support des vieilles versions Apache 1.x mais uniquement si elles l'annoncent (pas en mode PROD)
397
+    if (function_exists('apache_get_version')
398
+        and $v = apache_get_version()
399
+        and strncmp($v, 'Apache/1.', 9) == 0) {
400
+        $deny = "deny from all\n";
401
+    }
402
+
403
+    if ($ht = @fopen($htaccess, 'w')) {
404
+        fputs($ht, $deny);
405
+        fclose($ht);
406
+        @chmod($htaccess, _SPIP_CHMOD & 0666);
407
+        $t = rtrim($rep, '/') . '/.ok';
408
+        if ($ht = @fopen($t, 'w')) {
409
+            @fclose($ht);
410
+            include_spip('inc/distant');
411
+            $t = substr($t, strlen(_DIR_RACINE));
412
+            $t = url_de_base() . $t;
413
+            $ht = recuperer_lapage($t, false, 'HEAD', 0);
414
+            // htaccess inoperant si on a recupere des entetes HTTP
415
+            // (ignorer la reussite si connexion par fopen)
416
+            $ht = !(isset($ht[0]) and $ht[0]);
417
+        }
418
+    }
419
+    spip_log("Creation de $htaccess " . ($ht ? ' reussie' : ' manquee'));
420
+
421
+    return $ht;
422 422
 }
423 423
 
424 424
 /**
@@ -436,21 +436,21 @@  discard block
 block discarded – undo
436 436
  *         Valeur de la configuration `creer_htaccess`
437 437
  */
438 438
 function gerer_htaccess() {
439
-	// Cette variable de configuration peut etre posee par un plugin
440
-	// par exemple acces_restreint
441
-	$f = (isset($GLOBALS['meta']['creer_htaccess']) and ($GLOBALS['meta']['creer_htaccess'] === 'oui'));
442
-	$dirs = sql_allfetsel('extension', 'spip_types_documents');
443
-	$dirs[] = array('extension' => 'distant');
444
-	foreach ($dirs as $e) {
445
-		if (is_dir($dir = _DIR_IMG . $e['extension'])) {
446
-			if ($f) {
447
-				verifier_htaccess($dir);
448
-			} else {
449
-				spip_unlink($dir . '/' . _ACCESS_FILE_NAME);
450
-			}
451
-		}
452
-	}
453
-
454
-	return isset($GLOBALS['meta']['creer_htaccess']) ? $GLOBALS['meta']['creer_htaccess'] : '';
439
+    // Cette variable de configuration peut etre posee par un plugin
440
+    // par exemple acces_restreint
441
+    $f = (isset($GLOBALS['meta']['creer_htaccess']) and ($GLOBALS['meta']['creer_htaccess'] === 'oui'));
442
+    $dirs = sql_allfetsel('extension', 'spip_types_documents');
443
+    $dirs[] = array('extension' => 'distant');
444
+    foreach ($dirs as $e) {
445
+        if (is_dir($dir = _DIR_IMG . $e['extension'])) {
446
+            if ($f) {
447
+                verifier_htaccess($dir);
448
+            } else {
449
+                spip_unlink($dir . '/' . _ACCESS_FILE_NAME);
450
+            }
451
+        }
452
+    }
453
+
454
+    return isset($GLOBALS['meta']['creer_htaccess']) ? $GLOBALS['meta']['creer_htaccess'] : '';
455 455
 }
456 456
 
Please login to merge, or discard this patch.
prive/formulaires/editer_rubrique.php 1 patch
Indentation   +80 added lines, -80 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
 include_spip('inc/actions');
@@ -47,30 +47,30 @@  discard block
 block discarded – undo
47 47
  *     Environnement du formulaire
48 48
  **/
49 49
 function formulaires_editer_rubrique_charger_dist(
50
-	$id_rubrique = 'new',
51
-	$id_parent = 0,
52
-	$retour = '',
53
-	$lier_trad = 0,
54
-	$config_fonc = 'rubriques_edit_config',
55
-	$row = array(),
56
-	$hidden = ''
50
+    $id_rubrique = 'new',
51
+    $id_parent = 0,
52
+    $retour = '',
53
+    $lier_trad = 0,
54
+    $config_fonc = 'rubriques_edit_config',
55
+    $row = array(),
56
+    $hidden = ''
57 57
 ) {
58
-	$valeurs = formulaires_editer_objet_charger(
59
-		'rubrique',
60
-		$id_rubrique,
61
-		$id_parent,
62
-		$lier_trad,
63
-		$retour,
64
-		$config_fonc,
65
-		$row,
66
-		$hidden
67
-	);
68
-
69
-	if (intval($id_rubrique) and !autoriser('modifier', 'rubrique', intval($id_rubrique))) {
70
-		$valeurs['editable'] = '';
71
-	}
72
-
73
-	return $valeurs;
58
+    $valeurs = formulaires_editer_objet_charger(
59
+        'rubrique',
60
+        $id_rubrique,
61
+        $id_parent,
62
+        $lier_trad,
63
+        $retour,
64
+        $config_fonc,
65
+        $row,
66
+        $hidden
67
+    );
68
+
69
+    if (intval($id_rubrique) and !autoriser('modifier', 'rubrique', intval($id_rubrique))) {
70
+        $valeurs['editable'] = '';
71
+    }
72
+
73
+    return $valeurs;
74 74
 }
75 75
 
76 76
 /**
@@ -82,15 +82,15 @@  discard block
 block discarded – undo
82 82
  *     Configuration pour le formulaire
83 83
  */
84 84
 function rubriques_edit_config($row) {
85
-	global $spip_lang;
85
+    global $spip_lang;
86 86
 
87
-	$config = $GLOBALS['meta'];
88
-	$config['lignes'] = 8;
89
-	$config['langue'] = $spip_lang;
87
+    $config = $GLOBALS['meta'];
88
+    $config['lignes'] = 8;
89
+    $config['langue'] = $spip_lang;
90 90
 
91
-	$config['restreint'] = (!$GLOBALS['connect_toutes_rubriques']);
91
+    $config['restreint'] = (!$GLOBALS['connect_toutes_rubriques']);
92 92
 
93
-	return $config;
93
+    return $config;
94 94
 }
95 95
 
96 96
 /**
@@ -115,15 +115,15 @@  discard block
 block discarded – undo
115 115
  *     Hash du formulaire
116 116
  */
117 117
 function formulaires_editer_rubrique_identifier_dist(
118
-	$id_rubrique = 'new',
119
-	$id_parent = 0,
120
-	$retour = '',
121
-	$lier_trad = 0,
122
-	$config_fonc = 'rubriques_edit_config',
123
-	$row = array(),
124
-	$hidden = ''
118
+    $id_rubrique = 'new',
119
+    $id_parent = 0,
120
+    $retour = '',
121
+    $lier_trad = 0,
122
+    $config_fonc = 'rubriques_edit_config',
123
+    $row = array(),
124
+    $hidden = ''
125 125
 ) {
126
-	return serialize(array(intval($id_rubrique), $lier_trad));
126
+    return serialize(array(intval($id_rubrique), $lier_trad));
127 127
 }
128 128
 
129 129
 /**
@@ -149,32 +149,32 @@  discard block
 block discarded – undo
149 149
  *     Erreurs du formulaire
150 150
  **/
151 151
 function formulaires_editer_rubrique_verifier_dist(
152
-	$id_rubrique = 'new',
153
-	$id_parent = 0,
154
-	$retour = '',
155
-	$lier_trad = 0,
156
-	$config_fonc = 'rubriques_edit_config',
157
-	$row = array(),
158
-	$hidden = ''
152
+    $id_rubrique = 'new',
153
+    $id_parent = 0,
154
+    $retour = '',
155
+    $lier_trad = 0,
156
+    $config_fonc = 'rubriques_edit_config',
157
+    $row = array(),
158
+    $hidden = ''
159 159
 ) {
160
-	// auto-renseigner le titre si il n'existe pas
161
-	titre_automatique('titre', array('descriptif', 'texte'));
162
-	// on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_rubrique si vide
163
-	$erreurs = formulaires_editer_objet_verifier('rubrique', $id_rubrique, array());
164
-
165
-	// s'assurer qu'on ne s'auto-designe pas comme parent !
166
-	if (intval($id_rubrique)
167
-	  and empty($erreurs['id_parent'])
168
-		and $id_parent = _request('id_parent')) {
169
-		include_spip('inc/rubriques');
170
-		$branche = calcul_branche_in($id_rubrique);
171
-		$branche = explode(',', $branche);
172
-		if (in_array($id_parent, $branche)) {
173
-			$erreurs['id_parent'] = _L("Impossible de déplacer une rubrique dans sa propre branche, on tourne en rond !");
174
-		}
175
-	}
176
-
177
-	return $erreurs;
160
+    // auto-renseigner le titre si il n'existe pas
161
+    titre_automatique('titre', array('descriptif', 'texte'));
162
+    // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_rubrique si vide
163
+    $erreurs = formulaires_editer_objet_verifier('rubrique', $id_rubrique, array());
164
+
165
+    // s'assurer qu'on ne s'auto-designe pas comme parent !
166
+    if (intval($id_rubrique)
167
+      and empty($erreurs['id_parent'])
168
+        and $id_parent = _request('id_parent')) {
169
+        include_spip('inc/rubriques');
170
+        $branche = calcul_branche_in($id_rubrique);
171
+        $branche = explode(',', $branche);
172
+        if (in_array($id_parent, $branche)) {
173
+            $erreurs['id_parent'] = _L("Impossible de déplacer une rubrique dans sa propre branche, on tourne en rond !");
174
+        }
175
+    }
176
+
177
+    return $erreurs;
178 178
 }
179 179
 
180 180
 /**
@@ -200,22 +200,22 @@  discard block
 block discarded – undo
200 200
  *     Retour des traitements
201 201
  **/
202 202
 function formulaires_editer_rubrique_traiter_dist(
203
-	$id_rubrique = 'new',
204
-	$id_parent = 0,
205
-	$retour = '',
206
-	$lier_trad = 0,
207
-	$config_fonc = 'rubriques_edit_config',
208
-	$row = array(),
209
-	$hidden = ''
203
+    $id_rubrique = 'new',
204
+    $id_parent = 0,
205
+    $retour = '',
206
+    $lier_trad = 0,
207
+    $config_fonc = 'rubriques_edit_config',
208
+    $row = array(),
209
+    $hidden = ''
210 210
 ) {
211
-	return formulaires_editer_objet_traiter(
212
-		'rubrique',
213
-		$id_rubrique,
214
-		$id_parent,
215
-		$lier_trad,
216
-		$retour,
217
-		$config_fonc,
218
-		$row,
219
-		$hidden
220
-	);
211
+    return formulaires_editer_objet_traiter(
212
+        'rubrique',
213
+        $id_rubrique,
214
+        $id_parent,
215
+        $lier_trad,
216
+        $retour,
217
+        $config_fonc,
218
+        $row,
219
+        $hidden
220
+    );
221 221
 }
Please login to merge, or discard this patch.
ecrire/inc_version.php 2 patches
Indentation   +203 added lines, -203 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,8 +36,8 @@  discard block
 block discarded – undo
36 36
 define('_PHP_MIN', '7.3.0');
37 37
 
38 38
 if (!defined('_DIR_RESTREINT_ABS')) {
39
-	/** le nom du repertoire ecrire/ */
40
-	define('_DIR_RESTREINT_ABS', 'ecrire/');
39
+    /** le nom du repertoire ecrire/ */
40
+    define('_DIR_RESTREINT_ABS', 'ecrire/');
41 41
 }
42 42
 
43 43
 /** Chemin relatif pour aller dans ecrire
@@ -57,8 +57,8 @@  discard block
 block discarded – undo
57 57
 
58 58
 // Icones
59 59
 if (!defined('_NOM_IMG_PACK')) {
60
-	/** Nom du dossier images */
61
-	define('_NOM_IMG_PACK', 'images/');
60
+    /** Nom du dossier images */
61
+    define('_NOM_IMG_PACK', 'images/');
62 62
 }
63 63
 /** le chemin http (relatif) vers les images standard */
64 64
 define('_DIR_IMG_PACK', (_DIR_RACINE . 'prive/' . _NOM_IMG_PACK));
@@ -67,8 +67,8 @@  discard block
 block discarded – undo
67 67
 define('_ROOT_IMG_PACK', dirname(__DIR__) . '/prive/' . _NOM_IMG_PACK);
68 68
 
69 69
 if (!defined('_JAVASCRIPT')) {
70
-	/** Nom du repertoire des  bibliotheques JavaScript */
71
-	define('_JAVASCRIPT', 'javascript/');
70
+    /** Nom du repertoire des  bibliotheques JavaScript */
71
+    define('_JAVASCRIPT', 'javascript/');
72 72
 } // utilisable avec #CHEMIN et find_in_path
73 73
 /** le nom du repertoire des  bibliotheques JavaScript du prive */
74 74
 define('_DIR_JAVASCRIPT', (_DIR_RACINE . 'prive/' . _JAVASCRIPT));
@@ -78,46 +78,46 @@  discard block
 block discarded – undo
78 78
 # mais on peut les mettre ailleurs et changer completement les noms
79 79
 
80 80
 if (!defined('_NOM_TEMPORAIRES_INACCESSIBLES')) {
81
-	/** Nom du repertoire des fichiers Temporaires Inaccessibles par http:// */
82
-	define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/");
81
+    /** Nom du repertoire des fichiers Temporaires Inaccessibles par http:// */
82
+    define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/");
83 83
 }
84 84
 if (!defined('_NOM_TEMPORAIRES_ACCESSIBLES')) {
85
-	/** Nom du repertoire des fichiers Temporaires Accessibles par http:// */
86
-	define('_NOM_TEMPORAIRES_ACCESSIBLES', "local/");
85
+    /** Nom du repertoire des fichiers Temporaires Accessibles par http:// */
86
+    define('_NOM_TEMPORAIRES_ACCESSIBLES', "local/");
87 87
 }
88 88
 if (!defined('_NOM_PERMANENTS_INACCESSIBLES')) {
89
-	/** Nom du repertoire des fichiers Permanents Inaccessibles par http:// */
90
-	define('_NOM_PERMANENTS_INACCESSIBLES', "config/");
89
+    /** Nom du repertoire des fichiers Permanents Inaccessibles par http:// */
90
+    define('_NOM_PERMANENTS_INACCESSIBLES', "config/");
91 91
 }
92 92
 if (!defined('_NOM_PERMANENTS_ACCESSIBLES')) {
93
-	/** Nom du repertoire des fichiers Permanents Accessibles par http:// */
94
-	define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/");
93
+    /** Nom du repertoire des fichiers Permanents Accessibles par http:// */
94
+    define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/");
95 95
 }
96 96
 
97 97
 
98 98
 /** Le nom du fichier de personnalisation */
99 99
 if (!defined('_NOM_CONFIG')) {
100
-	define('_NOM_CONFIG', 'mes_options');
100
+    define('_NOM_CONFIG', 'mes_options');
101 101
 }
102 102
 
103 103
 // Son emplacement absolu si on le trouve
104 104
 if (@file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php')
105
-	or (@file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . '.php'))
105
+    or (@file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . '.php'))
106 106
 ) {
107
-	/** Emplacement absolu du fichier d'option */
108
-	define('_FILE_OPTIONS', $f);
107
+    /** Emplacement absolu du fichier d'option */
108
+    define('_FILE_OPTIONS', $f);
109 109
 } else {
110
-	define('_FILE_OPTIONS', '');
110
+    define('_FILE_OPTIONS', '');
111 111
 }
112 112
 
113 113
 if (!defined('MODULES_IDIOMES')) {
114
-	/**
115
-	 * Modules par défaut pour la traduction.
116
-	 *
117
-	 * Constante utilisée par le compilateur et le décompilateur
118
-	 * sa valeur etant traitée par inc_traduire_dist
119
-	 */
120
-	define('MODULES_IDIOMES', 'public|spip|ecrire');
114
+    /**
115
+     * Modules par défaut pour la traduction.
116
+     *
117
+     * Constante utilisée par le compilateur et le décompilateur
118
+     * sa valeur etant traitée par inc_traduire_dist
119
+     */
120
+    define('MODULES_IDIOMES', 'public|spip|ecrire');
121 121
 }
122 122
 
123 123
 // *** Fin des define *** //
@@ -125,9 +125,9 @@  discard block
 block discarded – undo
125 125
 
126 126
 // Inclure l'ecran de securite
127 127
 if (!defined('_ECRAN_SECURITE')
128
-	and @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_securite.php')
128
+    and @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_securite.php')
129 129
 ) {
130
-	include $f;
130
+    include $f;
131 131
 }
132 132
 
133 133
 
@@ -135,26 +135,26 @@  discard block
 block discarded – undo
135 135
  * Détecteur de robot d'indexation
136 136
  */
137 137
 if (!defined('_IS_BOT')) {
138
-	define('_IS_BOT',
139
-		isset($_SERVER['HTTP_USER_AGENT'])
140
-		and preg_match(
141
-			// mots generiques
142
-			',bot|slurp|crawler|spider|webvac|yandex|'
143
-			// MSIE 6.0 est un botnet 99,9% du temps, on traite donc ce USER_AGENT comme un bot
144
-			. 'MSIE 6\.0|'
145
-			// UA plus cibles
146
-			. '80legs|accoona|AltaVista|ASPSeek|Baidu|Charlotte|EC2LinkFinder|eStyle|facebook|flipboard|hootsuite|FunWebProducts|Google|Genieo|INA dlweb|InfegyAtlas|Java VM|LiteFinder|Lycos|MetaURI|Moreover|Rambler|Scooter|ScrubbyBloglines|Yahoo|Yeti'
147
-			. ',i', (string)$_SERVER['HTTP_USER_AGENT'])
148
-	);
138
+    define('_IS_BOT',
139
+        isset($_SERVER['HTTP_USER_AGENT'])
140
+        and preg_match(
141
+            // mots generiques
142
+            ',bot|slurp|crawler|spider|webvac|yandex|'
143
+            // MSIE 6.0 est un botnet 99,9% du temps, on traite donc ce USER_AGENT comme un bot
144
+            . 'MSIE 6\.0|'
145
+            // UA plus cibles
146
+            . '80legs|accoona|AltaVista|ASPSeek|Baidu|Charlotte|EC2LinkFinder|eStyle|facebook|flipboard|hootsuite|FunWebProducts|Google|Genieo|INA dlweb|InfegyAtlas|Java VM|LiteFinder|Lycos|MetaURI|Moreover|Rambler|Scooter|ScrubbyBloglines|Yahoo|Yeti'
147
+            . ',i', (string)$_SERVER['HTTP_USER_AGENT'])
148
+    );
149 149
 }
150 150
 
151 151
 if (!defined('_IS_CLI')) {
152
-	define('_IS_CLI',
153
-	  !isset($_SERVER['HTTP_HOST'])
154
-	  and !strlen($_SERVER['DOCUMENT_ROOT'])
155
-	  and !empty($_SERVER['argv'])
156
-	  and empty($_SERVER['REQUEST_METHOD'])
157
-	);
152
+    define('_IS_CLI',
153
+        !isset($_SERVER['HTTP_HOST'])
154
+      and !strlen($_SERVER['DOCUMENT_ROOT'])
155
+      and !empty($_SERVER['argv'])
156
+      and empty($_SERVER['REQUEST_METHOD'])
157
+    );
158 158
 }
159 159
 
160 160
 // *** Parametrage par defaut de SPIP ***
@@ -166,61 +166,61 @@  discard block
 block discarded – undo
166 166
 // Ne pas les rendre indefinies.
167 167
 
168 168
 global
169
-	$nombre_de_logs,
170
-	$taille_des_logs,
171
-	$table_prefix,
172
-	$cookie_prefix,
173
-	$dossier_squelettes,
174
-	$filtrer_javascript,
175
-	$type_urls,
176
-	$debut_date_publication,
177
-	$ip,
178
-	$mysql_rappel_connexion,
179
-	$mysql_rappel_nom_base,
180
-	$test_i18n,
181
-	$ignore_auth_http,
182
-	$ignore_remote_user,
183
-	$derniere_modif_invalide,
184
-	$home_server,
185
-	$help_server,
186
-	$url_glossaire_externe,
187
-	$tex_server,
188
-	$traiter_math,
189
-	$xhtml,
190
-	$xml_indent,
191
-	$source_vignettes,
192
-	$formats_logos,
193
-	$controler_dates_rss,
194
-	$spip_pipeline,
195
-	$spip_matrice,
196
-	$plugins,
197
-	$surcharges,
198
-	$exceptions_des_tables,
199
-	$tables_principales,
200
-	$table_des_tables,
201
-	$tables_auxiliaires,
202
-	$table_primary,
203
-	$table_date,
204
-	$table_titre,
205
-	$tables_jointures,
206
-	$liste_des_statuts,
207
-	$liste_des_etats,
208
-	$liste_des_authentifications,
209
-	$spip_version_branche,
210
-	$spip_version_code,
211
-	$spip_version_base,
212
-	$spip_sql_version,
213
-	$spip_version_affichee,
214
-	$visiteur_session,
215
-	$auteur_session,
216
-	$connect_statut,
217
-	$connect_toutes_rubriques,
218
-	$hash_recherche,
219
-	$hash_recherche_strict,
220
-	$ldap_present,
221
-	$meta,
222
-	$connect_id_rubrique,
223
-	$puce;
169
+    $nombre_de_logs,
170
+    $taille_des_logs,
171
+    $table_prefix,
172
+    $cookie_prefix,
173
+    $dossier_squelettes,
174
+    $filtrer_javascript,
175
+    $type_urls,
176
+    $debut_date_publication,
177
+    $ip,
178
+    $mysql_rappel_connexion,
179
+    $mysql_rappel_nom_base,
180
+    $test_i18n,
181
+    $ignore_auth_http,
182
+    $ignore_remote_user,
183
+    $derniere_modif_invalide,
184
+    $home_server,
185
+    $help_server,
186
+    $url_glossaire_externe,
187
+    $tex_server,
188
+    $traiter_math,
189
+    $xhtml,
190
+    $xml_indent,
191
+    $source_vignettes,
192
+    $formats_logos,
193
+    $controler_dates_rss,
194
+    $spip_pipeline,
195
+    $spip_matrice,
196
+    $plugins,
197
+    $surcharges,
198
+    $exceptions_des_tables,
199
+    $tables_principales,
200
+    $table_des_tables,
201
+    $tables_auxiliaires,
202
+    $table_primary,
203
+    $table_date,
204
+    $table_titre,
205
+    $tables_jointures,
206
+    $liste_des_statuts,
207
+    $liste_des_etats,
208
+    $liste_des_authentifications,
209
+    $spip_version_branche,
210
+    $spip_version_code,
211
+    $spip_version_base,
212
+    $spip_sql_version,
213
+    $spip_version_affichee,
214
+    $visiteur_session,
215
+    $auteur_session,
216
+    $connect_statut,
217
+    $connect_toutes_rubriques,
218
+    $hash_recherche,
219
+    $hash_recherche_strict,
220
+    $ldap_present,
221
+    $meta,
222
+    $connect_id_rubrique,
223
+    $puce;
224 224
 
225 225
 # comment on logge, defaut 4 tmp/spip.log de 100k, 0 ou 0 suppriment le log
226 226
 $nombre_de_logs = 4;
@@ -275,48 +275,48 @@  discard block
 block discarded – undo
275 275
 // Prendre en compte les entetes HTTP_X_FORWARDED_XX
276 276
 //
277 277
 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO']==='https'){
278
-	if (empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
279
-		$_SERVER['HTTP_X_FORWARDED_HOST'] = $_SERVER['HTTP_HOST'];
280
-	}
281
-	if (empty($_SERVER['HTTP_X_FORWARDED_PORT'])) {
282
-		$_SERVER['HTTP_X_FORWARDED_PORT'] = 443;
283
-	}
278
+    if (empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
279
+        $_SERVER['HTTP_X_FORWARDED_HOST'] = $_SERVER['HTTP_HOST'];
280
+    }
281
+    if (empty($_SERVER['HTTP_X_FORWARDED_PORT'])) {
282
+        $_SERVER['HTTP_X_FORWARDED_PORT'] = 443;
283
+    }
284 284
 }
285 285
 if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])){
286
-	if (isset($_SERVER['HTTP_X_FORWARDED_PORT']) and is_numeric($_SERVER['HTTP_X_FORWARDED_PORT'])){
287
-		$_SERVER['SERVER_PORT'] = $_SERVER['HTTP_X_FORWARDED_PORT'];
288
-		if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO']==='https'){
289
-			$_SERVER['HTTPS'] = 'on';
290
-			if (isset($_SERVER['REQUEST_SCHEME'])) {
291
-				$_SERVER['REQUEST_SCHEME'] = 'https';
292
-			}
293
-		}
294
-	}
295
-	$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
296
-	if (strpos($host,',')!==false){
297
-		$h = explode(',',$host);
298
-		$host = trim(reset($h));
299
-	}
300
-	// securite sur le contenu de l'entete
301
-	$host = strtr($host, "<>?\"\{\}\$'` \r\n", '____________');
302
-	$_SERVER['HTTP_HOST'] = $host;
286
+    if (isset($_SERVER['HTTP_X_FORWARDED_PORT']) and is_numeric($_SERVER['HTTP_X_FORWARDED_PORT'])){
287
+        $_SERVER['SERVER_PORT'] = $_SERVER['HTTP_X_FORWARDED_PORT'];
288
+        if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO']==='https'){
289
+            $_SERVER['HTTPS'] = 'on';
290
+            if (isset($_SERVER['REQUEST_SCHEME'])) {
291
+                $_SERVER['REQUEST_SCHEME'] = 'https';
292
+            }
293
+        }
294
+    }
295
+    $host = $_SERVER['HTTP_X_FORWARDED_HOST'];
296
+    if (strpos($host,',')!==false){
297
+        $h = explode(',',$host);
298
+        $host = trim(reset($h));
299
+    }
300
+    // securite sur le contenu de l'entete
301
+    $host = strtr($host, "<>?\"\{\}\$'` \r\n", '____________');
302
+    $_SERVER['HTTP_HOST'] = $host;
303 303
 }
304 304
 //
305 305
 // On note le numero IP du client dans la variable $ip
306 306
 //
307 307
 if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
308
-	$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
309
-	if (strpos($ip,',')!==false){
310
-		$ip = explode(',',$ip);
311
-		$ip = reset($ip);
312
-	}
313
-	// ecraser $_SERVER['REMOTE_ADDR'] si elle est en localhost
314
-	if (isset($_SERVER['REMOTE_ADDR']) AND $_SERVER['REMOTE_ADDR']==='127.0.0.1'){
315
-		$_SERVER['REMOTE_ADDR'] = $ip;
316
-	}
308
+    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
309
+    if (strpos($ip,',')!==false){
310
+        $ip = explode(',',$ip);
311
+        $ip = reset($ip);
312
+    }
313
+    // ecraser $_SERVER['REMOTE_ADDR'] si elle est en localhost
314
+    if (isset($_SERVER['REMOTE_ADDR']) AND $_SERVER['REMOTE_ADDR']==='127.0.0.1'){
315
+        $_SERVER['REMOTE_ADDR'] = $ip;
316
+    }
317 317
 }
318 318
 if (isset($_SERVER['REMOTE_ADDR'])) {
319
-	$ip = $_SERVER['REMOTE_ADDR'];
319
+    $ip = $_SERVER['REMOTE_ADDR'];
320 320
 }
321 321
 
322 322
 // Pour renforcer la privacy, decommentez la ligne ci-dessous (ou recopiez-la
@@ -401,24 +401,24 @@  discard block
 block discarded – undo
401 401
 
402 402
 // Liste des statuts.
403 403
 $liste_des_statuts = array(
404
-	"info_administrateurs" => '0minirezo',
405
-	"info_redacteurs" => '1comite',
406
-	"info_visiteurs" => '6forum',
407
-	"texte_statut_poubelle" => '5poubelle'
404
+    "info_administrateurs" => '0minirezo',
405
+    "info_redacteurs" => '1comite',
406
+    "info_visiteurs" => '6forum',
407
+    "texte_statut_poubelle" => '5poubelle'
408 408
 );
409 409
 
410 410
 $liste_des_etats = array(
411
-	'texte_statut_en_cours_redaction' => 'prepa',
412
-	'texte_statut_propose_evaluation' => 'prop',
413
-	'texte_statut_publie' => 'publie',
414
-	'texte_statut_poubelle' => 'poubelle',
415
-	'texte_statut_refuse' => 'refuse'
411
+    'texte_statut_en_cours_redaction' => 'prepa',
412
+    'texte_statut_propose_evaluation' => 'prop',
413
+    'texte_statut_publie' => 'publie',
414
+    'texte_statut_poubelle' => 'poubelle',
415
+    'texte_statut_refuse' => 'refuse'
416 416
 );
417 417
 
418 418
 // liste des methodes d'authentifications
419 419
 $liste_des_authentifications = array(
420
-	'spip' => 'spip',
421
-	'ldap' => 'ldap'
420
+    'spip' => 'spip',
421
+    'ldap' => 'ldap'
422 422
 );
423 423
 
424 424
 // Experimental : pour supprimer systematiquement l'affichage des numeros
@@ -468,12 +468,12 @@  discard block
 block discarded – undo
468 468
 // Definition personnelles eventuelles
469 469
 
470 470
 if (_FILE_OPTIONS) {
471
-	include_once _FILE_OPTIONS;
471
+    include_once _FILE_OPTIONS;
472 472
 }
473 473
 
474 474
 if (!defined('SPIP_ERREUR_REPORT')) {
475
-	/** Masquer les warning */
476
-	define('SPIP_ERREUR_REPORT', E_ALL ^ E_NOTICE ^ E_DEPRECATED);
475
+    /** Masquer les warning */
476
+    define('SPIP_ERREUR_REPORT', E_ALL ^ E_NOTICE ^ E_DEPRECATED);
477 477
 }
478 478
 error_reporting(SPIP_ERREUR_REPORT);
479 479
 
@@ -486,10 +486,10 @@  discard block
 block discarded – undo
486 486
 // ===> on execute en neutralisant les messages d'erreur
487 487
 
488 488
 spip_initialisation_core(
489
-	(_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
490
-	(_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
491
-	(_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
492
-	(_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
489
+    (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
490
+    (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
491
+    (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
492
+    (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
493 493
 );
494 494
 
495 495
 
@@ -499,69 +499,69 @@  discard block
 block discarded – undo
499 499
 // donc il faut avoir tout fini ici avant de charger les plugins
500 500
 
501 501
 if (@is_readable(_CACHE_PLUGINS_OPT) and @is_readable(_CACHE_PLUGINS_PATH)) {
502
-	// chargement optimise precompile
503
-	include_once(_CACHE_PLUGINS_OPT);
502
+    // chargement optimise precompile
503
+    include_once(_CACHE_PLUGINS_OPT);
504 504
 } else {
505
-	spip_initialisation_suite();
506
-	include_spip('inc/plugin');
507
-	// generer les fichiers php precompiles
508
-	// de chargement des plugins et des pipelines
509
-	actualise_plugins_actifs();
505
+    spip_initialisation_suite();
506
+    include_spip('inc/plugin');
507
+    // generer les fichiers php precompiles
508
+    // de chargement des plugins et des pipelines
509
+    actualise_plugins_actifs();
510 510
 }
511 511
 
512 512
 // Initialisations non critiques surchargeables par les plugins
513 513
 spip_initialisation_suite();
514 514
 
515 515
 if (!defined('_LOG_FILTRE_GRAVITE')) {
516
-	/** niveau maxi d'enregistrement des logs */
517
-	define('_LOG_FILTRE_GRAVITE', _LOG_INFO_IMPORTANTE);
516
+    /** niveau maxi d'enregistrement des logs */
517
+    define('_LOG_FILTRE_GRAVITE', _LOG_INFO_IMPORTANTE);
518 518
 }
519 519
 
520 520
 if (!defined('_OUTILS_DEVELOPPEURS')) {
521
-	/** Activer des outils pour développeurs ? */
522
-	define('_OUTILS_DEVELOPPEURS', false);
521
+    /** Activer des outils pour développeurs ? */
522
+    define('_OUTILS_DEVELOPPEURS', false);
523 523
 }
524 524
 
525 525
 // charger systematiquement inc/autoriser dans l'espace restreint
526 526
 if (test_espace_prive()) {
527
-	include_spip('inc/autoriser');
527
+    include_spip('inc/autoriser');
528 528
 }
529 529
 //
530 530
 // Installer Spip si pas installe... sauf si justement on est en train
531 531
 //
532 532
 if (!(_FILE_CONNECT
533
-	or autoriser_sans_cookie(_request('exec'))
534
-	or _request('action') == 'cookie'
535
-	or _request('action') == 'converser'
536
-	or _request('action') == 'test_dirs')
533
+    or autoriser_sans_cookie(_request('exec'))
534
+    or _request('action') == 'cookie'
535
+    or _request('action') == 'converser'
536
+    or _request('action') == 'test_dirs')
537 537
 ) {
538 538
 
539
-	// Si on peut installer, on lance illico
540
-	if (test_espace_prive()) {
541
-		include_spip('inc/headers');
542
-		redirige_url_ecrire("install");
543
-	} else {
544
-		// Si on est dans le site public, dire que qq s'en occupe
545
-		include_spip('inc/minipres');
546
-		utiliser_langue_visiteur();
547
-		echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>" . _T('info_travaux_texte') . "</p>", array('status' => 503));
548
-		exit;
549
-	}
550
-	// autrement c'est une install ad hoc (spikini...), on sait pas faire
539
+    // Si on peut installer, on lance illico
540
+    if (test_espace_prive()) {
541
+        include_spip('inc/headers');
542
+        redirige_url_ecrire("install");
543
+    } else {
544
+        // Si on est dans le site public, dire que qq s'en occupe
545
+        include_spip('inc/minipres');
546
+        utiliser_langue_visiteur();
547
+        echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>" . _T('info_travaux_texte') . "</p>", array('status' => 503));
548
+        exit;
549
+    }
550
+    // autrement c'est une install ad hoc (spikini...), on sait pas faire
551 551
 }
552 552
 
553 553
 // memoriser un tri sessionne eventuel
554 554
 if (isset($_REQUEST['var_memotri'])
555
-	and $t = $_REQUEST['var_memotri']
556
-	and (strncmp($t, 'trisession', 10) == 0 or strncmp($t, 'senssession', 11) == 0)
555
+    and $t = $_REQUEST['var_memotri']
556
+    and (strncmp($t, 'trisession', 10) == 0 or strncmp($t, 'senssession', 11) == 0)
557 557
 ) {
558
-	if (!function_exists('session_set')) {
559
-		include_spip('inc/session');
560
-	}
561
-	$t = preg_replace(",\W,","_", $t);
562
-	if ($v = _request($t)) {
563
-		session_set($t, $v);
564
-	}
558
+    if (!function_exists('session_set')) {
559
+        include_spip('inc/session');
560
+    }
561
+    $t = preg_replace(",\W,","_", $t);
562
+    if ($v = _request($t)) {
563
+        session_set($t, $v);
564
+    }
565 565
 }
566 566
 
567 567
 /**
@@ -571,22 +571,22 @@  discard block
 block discarded – undo
571 571
  * La globale $spip_header_silencieux permet de rendre le header minimal pour raisons de securite
572 572
  */
573 573
 if (!defined('_HEADER_COMPOSED_BY')) {
574
-	define('_HEADER_COMPOSED_BY', "Composed-By: SPIP");
574
+    define('_HEADER_COMPOSED_BY', "Composed-By: SPIP");
575 575
 }
576 576
 if (!headers_sent() and _HEADER_COMPOSED_BY) {
577
-	if (!defined('_HEADER_VARY')) {
578
-		define('_HEADER_VARY', "Vary: Cookie, Accept-Encoding");
579
-	}
580
-	if (_HEADER_VARY) {
581
-		header(_HEADER_VARY);
582
-	}
583
-	if (!isset($GLOBALS['spip_header_silencieux']) or !$GLOBALS['spip_header_silencieux']) {
584
-		include_spip('inc/filtres_mini');
585
-		header(_HEADER_COMPOSED_BY . " $spip_version_affichee @ www.spip.net + " . url_absolue(_DIR_VAR . "config.txt"));
586
-	} else {
587
-		// header minimal
588
-		header(_HEADER_COMPOSED_BY . " @ www.spip.net");
589
-	}
577
+    if (!defined('_HEADER_VARY')) {
578
+        define('_HEADER_VARY', "Vary: Cookie, Accept-Encoding");
579
+    }
580
+    if (_HEADER_VARY) {
581
+        header(_HEADER_VARY);
582
+    }
583
+    if (!isset($GLOBALS['spip_header_silencieux']) or !$GLOBALS['spip_header_silencieux']) {
584
+        include_spip('inc/filtres_mini');
585
+        header(_HEADER_COMPOSED_BY . " $spip_version_affichee @ www.spip.net + " . url_absolue(_DIR_VAR . "config.txt"));
586
+    } else {
587
+        // header minimal
588
+        header(_HEADER_COMPOSED_BY . " @ www.spip.net");
589
+    }
590 590
 }
591 591
 
592 592
 $methode = (isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : ((php_sapi_name() == 'cli') ? 'cli' : ''));
Please login to merge, or discard this patch.
Spacing   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -49,11 +49,11 @@  discard block
 block discarded – undo
49 49
 define('_DIR_RACINE', _DIR_RESTREINT ? '' : '../');
50 50
 
51 51
 /** chemin absolu vers la racine */
52
-define('_ROOT_RACINE', dirname(__DIR__) . '/');
52
+define('_ROOT_RACINE', dirname(__DIR__).'/');
53 53
 /** chemin absolu vers le repertoire de travail */
54
-define('_ROOT_CWD', getcwd() . '/');
54
+define('_ROOT_CWD', getcwd().'/');
55 55
 /** chemin absolu vers ecrire */
56
-define('_ROOT_RESTREINT', _ROOT_CWD . _DIR_RESTREINT);
56
+define('_ROOT_RESTREINT', _ROOT_CWD._DIR_RESTREINT);
57 57
 
58 58
 // Icones
59 59
 if (!defined('_NOM_IMG_PACK')) {
@@ -61,17 +61,17 @@  discard block
 block discarded – undo
61 61
 	define('_NOM_IMG_PACK', 'images/');
62 62
 }
63 63
 /** le chemin http (relatif) vers les images standard */
64
-define('_DIR_IMG_PACK', (_DIR_RACINE . 'prive/' . _NOM_IMG_PACK));
64
+define('_DIR_IMG_PACK', (_DIR_RACINE.'prive/'._NOM_IMG_PACK));
65 65
 
66 66
 /** le chemin php (absolu) vers les images standard (pour hebergement centralise) */
67
-define('_ROOT_IMG_PACK', dirname(__DIR__) . '/prive/' . _NOM_IMG_PACK);
67
+define('_ROOT_IMG_PACK', dirname(__DIR__).'/prive/'._NOM_IMG_PACK);
68 68
 
69 69
 if (!defined('_JAVASCRIPT')) {
70 70
 	/** Nom du repertoire des  bibliotheques JavaScript */
71 71
 	define('_JAVASCRIPT', 'javascript/');
72 72
 } // utilisable avec #CHEMIN et find_in_path
73 73
 /** le nom du repertoire des  bibliotheques JavaScript du prive */
74
-define('_DIR_JAVASCRIPT', (_DIR_RACINE . 'prive/' . _JAVASCRIPT));
74
+define('_DIR_JAVASCRIPT', (_DIR_RACINE.'prive/'._JAVASCRIPT));
75 75
 
76 76
 # Le nom des 4 repertoires modifiables par les scripts lances par httpd
77 77
 # Par defaut ces 4 noms seront suffixes par _DIR_RACINE (cf plus bas)
@@ -101,8 +101,8 @@  discard block
 block discarded – undo
101 101
 }
102 102
 
103 103
 // Son emplacement absolu si on le trouve
104
-if (@file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php')
105
-	or (@file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . '.php'))
104
+if (@file_exists($f = _ROOT_RACINE._NOM_PERMANENTS_INACCESSIBLES._NOM_CONFIG.'.php')
105
+	or (@file_exists($f = _ROOT_RESTREINT._NOM_CONFIG.'.php'))
106 106
 ) {
107 107
 	/** Emplacement absolu du fichier d'option */
108 108
 	define('_FILE_OPTIONS', $f);
@@ -125,7 +125,7 @@  discard block
 block discarded – undo
125 125
 
126 126
 // Inclure l'ecran de securite
127 127
 if (!defined('_ECRAN_SECURITE')
128
-	and @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_securite.php')
128
+	and @file_exists($f = _ROOT_RACINE._NOM_PERMANENTS_INACCESSIBLES.'ecran_securite.php')
129 129
 ) {
130 130
 	include $f;
131 131
 }
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
 			. 'MSIE 6\.0|'
145 145
 			// UA plus cibles
146 146
 			. '80legs|accoona|AltaVista|ASPSeek|Baidu|Charlotte|EC2LinkFinder|eStyle|facebook|flipboard|hootsuite|FunWebProducts|Google|Genieo|INA dlweb|InfegyAtlas|Java VM|LiteFinder|Lycos|MetaURI|Moreover|Rambler|Scooter|ScrubbyBloglines|Yahoo|Yeti'
147
-			. ',i', (string)$_SERVER['HTTP_USER_AGENT'])
147
+			. ',i', (string) $_SERVER['HTTP_USER_AGENT'])
148 148
 	);
149 149
 }
150 150
 
@@ -274,7 +274,7 @@  discard block
 block discarded – undo
274 274
 //
275 275
 // Prendre en compte les entetes HTTP_X_FORWARDED_XX
276 276
 //
277
-if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO']==='https'){
277
+if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
278 278
 	if (empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
279 279
 		$_SERVER['HTTP_X_FORWARDED_HOST'] = $_SERVER['HTTP_HOST'];
280 280
 	}
@@ -282,10 +282,10 @@  discard block
 block discarded – undo
282 282
 		$_SERVER['HTTP_X_FORWARDED_PORT'] = 443;
283 283
 	}
284 284
 }
285
-if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])){
286
-	if (isset($_SERVER['HTTP_X_FORWARDED_PORT']) and is_numeric($_SERVER['HTTP_X_FORWARDED_PORT'])){
285
+if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
286
+	if (isset($_SERVER['HTTP_X_FORWARDED_PORT']) and is_numeric($_SERVER['HTTP_X_FORWARDED_PORT'])) {
287 287
 		$_SERVER['SERVER_PORT'] = $_SERVER['HTTP_X_FORWARDED_PORT'];
288
-		if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO']==='https'){
288
+		if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
289 289
 			$_SERVER['HTTPS'] = 'on';
290 290
 			if (isset($_SERVER['REQUEST_SCHEME'])) {
291 291
 				$_SERVER['REQUEST_SCHEME'] = 'https';
@@ -293,8 +293,8 @@  discard block
 block discarded – undo
293 293
 		}
294 294
 	}
295 295
 	$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
296
-	if (strpos($host,',')!==false){
297
-		$h = explode(',',$host);
296
+	if (strpos($host, ',') !== false) {
297
+		$h = explode(',', $host);
298 298
 		$host = trim(reset($h));
299 299
 	}
300 300
 	// securite sur le contenu de l'entete
@@ -306,12 +306,12 @@  discard block
 block discarded – undo
306 306
 //
307 307
 if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
308 308
 	$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
309
-	if (strpos($ip,',')!==false){
310
-		$ip = explode(',',$ip);
309
+	if (strpos($ip, ',') !== false) {
310
+		$ip = explode(',', $ip);
311 311
 		$ip = reset($ip);
312 312
 	}
313 313
 	// ecraser $_SERVER['REMOTE_ADDR'] si elle est en localhost
314
-	if (isset($_SERVER['REMOTE_ADDR']) AND $_SERVER['REMOTE_ADDR']==='127.0.0.1'){
314
+	if (isset($_SERVER['REMOTE_ADDR']) AND $_SERVER['REMOTE_ADDR'] === '127.0.0.1') {
315 315
 		$_SERVER['REMOTE_ADDR'] = $ip;
316 316
 	}
317 317
 }
@@ -384,7 +384,7 @@  discard block
 block discarded – undo
384 384
 # la matrice standard (fichiers definissant les fonctions a inclure)
385 385
 $spip_matrice = array();
386 386
 # les plugins a activer
387
-$plugins = array();  // voir le contenu du repertoire /plugins/
387
+$plugins = array(); // voir le contenu du repertoire /plugins/
388 388
 # les surcharges de include_spip()
389 389
 $surcharges = array(); // format 'inc_truc' => '/plugins/chose/inc_truc2.php'
390 390
 
@@ -462,8 +462,8 @@  discard block
 block discarded – undo
462 462
 //
463 463
 // Charger les fonctions liees aux serveurs Http et Sql.
464 464
 //
465
-require_once _ROOT_RESTREINT . 'inc/utils.php';
466
-require_once _ROOT_RESTREINT . 'base/connect_sql.php';
465
+require_once _ROOT_RESTREINT.'inc/utils.php';
466
+require_once _ROOT_RESTREINT.'base/connect_sql.php';
467 467
 
468 468
 // Definition personnelles eventuelles
469 469
 
@@ -486,10 +486,10 @@  discard block
 block discarded – undo
486 486
 // ===> on execute en neutralisant les messages d'erreur
487 487
 
488 488
 spip_initialisation_core(
489
-	(_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
490
-	(_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
491
-	(_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
492
-	(_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
489
+	(_DIR_RACINE._NOM_PERMANENTS_INACCESSIBLES),
490
+	(_DIR_RACINE._NOM_PERMANENTS_ACCESSIBLES),
491
+	(_DIR_RACINE._NOM_TEMPORAIRES_INACCESSIBLES),
492
+	(_DIR_RACINE._NOM_TEMPORAIRES_ACCESSIBLES)
493 493
 );
494 494
 
495 495
 
@@ -544,7 +544,7 @@  discard block
 block discarded – undo
544 544
 		// Si on est dans le site public, dire que qq s'en occupe
545 545
 		include_spip('inc/minipres');
546 546
 		utiliser_langue_visiteur();
547
-		echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>" . _T('info_travaux_texte') . "</p>", array('status' => 503));
547
+		echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>"._T('info_travaux_texte')."</p>", array('status' => 503));
548 548
 		exit;
549 549
 	}
550 550
 	// autrement c'est une install ad hoc (spikini...), on sait pas faire
@@ -558,7 +558,7 @@  discard block
 block discarded – undo
558 558
 	if (!function_exists('session_set')) {
559 559
 		include_spip('inc/session');
560 560
 	}
561
-	$t = preg_replace(",\W,","_", $t);
561
+	$t = preg_replace(",\W,", "_", $t);
562 562
 	if ($v = _request($t)) {
563 563
 		session_set($t, $v);
564 564
 	}
@@ -582,12 +582,12 @@  discard block
 block discarded – undo
582 582
 	}
583 583
 	if (!isset($GLOBALS['spip_header_silencieux']) or !$GLOBALS['spip_header_silencieux']) {
584 584
 		include_spip('inc/filtres_mini');
585
-		header(_HEADER_COMPOSED_BY . " $spip_version_affichee @ www.spip.net + " . url_absolue(_DIR_VAR . "config.txt"));
585
+		header(_HEADER_COMPOSED_BY." $spip_version_affichee @ www.spip.net + ".url_absolue(_DIR_VAR."config.txt"));
586 586
 	} else {
587 587
 		// header minimal
588
-		header(_HEADER_COMPOSED_BY . " @ www.spip.net");
588
+		header(_HEADER_COMPOSED_BY." @ www.spip.net");
589 589
 	}
590 590
 }
591 591
 
592 592
 $methode = (isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : ((php_sapi_name() == 'cli') ? 'cli' : ''));
593
-spip_log($methode . ' ' . self() . ' - ' . _FILE_CONNECT, _LOG_DEBUG);
593
+spip_log($methode.' '.self().' - '._FILE_CONNECT, _LOG_DEBUG);
Please login to merge, or discard this patch.
ecrire/lang/public_de.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' => 'Startseite',
14
-	'article' => 'Artikel',
15
-	'articles' => 'Artikel',
16
-	'articles_auteur' => 'Artikel dieses Autors',
17
-	'articles_populaires' => 'Die beliebtesten Artikel',
18
-	'articles_rubrique' => 'Artikel dieser Rubrik',
19
-	'aucun_article' => 'Unter dieser Adresse gibt es keinen Artikel.',
20
-	'aucun_auteur' => 'Unter dieser Adresse gibt es keinen Autor.',
21
-	'aucun_site' => 'Unter dieser Adresse gibt es keien Website.',
22
-	'aucune_breve' => 'Unter dieser Adresse gibt es keine Meldung.',
23
-	'aucune_rubrique' => 'Unter dieser Adresse gibt es keine Rubrik.',
24
-	'auteur' => 'Autor',
25
-	'autres' => 'Andere',
26
-	'autres_breves' => 'Weitere Meldungen.',
27
-	'autres_groupes_mots_clefs' => 'Weitere Schlagwortgruppen',
28
-	'autres_sites' => 'Weitere Websites',
29
-
30
-	// B
31
-	'bonjour' => 'Hallo',
32
-
33
-	// C
34
-	'commenter_site' => 'Website kommentieren',
35
-	'contact' => 'Kontakt',
36
-	'copie_document_impossible' => 'Dokument kann nicht kopiert werden',
37
-
38
-	// D
39
-	'date' => 'Datum',
40
-	'dernier_ajout' => 'Neuester Eintrag',
41
-	'dernieres_breves' => 'Neue Meldungen',
42
-	'derniers_articles' => 'Neueste Artikel',
43
-	'derniers_commentaires' => 'Neueste Kommentare',
44
-	'derniers_messages_forum' => 'Neue Forumsbeiträge',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'Im Textmodus bearbeiten ',
48
-	'en_reponse' => 'Antwort auf:',
49
-	'en_resume' => 'Als Zusammenfassung',
50
-	'envoyer_message' => 'Nachricht senden',
51
-	'espace_prive' => 'Redaktion',
52
-
53
-	// F
54
-	'formats_acceptes' => 'Akzeptierte Formate: @formats@.',
55
-
56
-	// H
57
-	'hierarchie_site' => 'Baumstruktur der Website',
58
-
59
-	// J
60
-	'jours' => 'Tage',
61
-
62
-	// L
63
-	'lien_connecter' => 'Login',
64
-
65
-	// M
66
-	'meme_auteur' => 'Vom gleichen Autor',
67
-	'meme_rubrique' => 'In der gleichen Rubrik',
68
-	'memes_auteurs' => 'Von den gleichen Autoren',
69
-	'message' => 'Nachricht',
70
-	'messages_forum' => 'Nachrichten',
71
-	'messages_recents' => 'Neue Forumsbeiträge',
72
-	'mots_clef' => 'Schlagwort',
73
-	'mots_clefs' => 'Schlagworte',
74
-	'mots_clefs_meme_groupe' => 'Schlagworte der gleichen Kategorie',
75
-
76
-	// N
77
-	'navigation' => 'Navigation',
78
-	'nom' => 'Name',
79
-	'nouveautes' => 'Neuigkeiten',
80
-	'nouveautes_web' => 'Neues im WWW',
81
-	'nouveaux_articles' => 'Neue Artikel',
82
-	'nouvelles_breves' => 'Neue Meldungen',
83
-
84
-	// P
85
-	'page_precedente' => 'vorige Seite',
86
-	'page_suivante' => 'nächste Seite',
87
-	'par_auteur' => 'von ',
88
-	'participer_site' => 'Sie können bei dieser Website mitmachen, wenn Sie sich anmelden. Sie erhalten sofort eine E-Mail mit den Zugangsdaten zum Redaktionssystem.',
89
-	'plan_site' => 'Sitemap',
90
-	'popularite' => 'Beliebtheit',
91
-	'poster_message' => 'Nachricht senden',
92
-	'proposer_site' => 'Sie können in dieser Rubrik eine Seite vorschlagen :',
93
-
94
-	// R
95
-	'repondre_article' => 'auf diesen Artikel antworten',
96
-	'repondre_breve' => 'auf diese Meldung antworten',
97
-	'resultats_recherche' => 'Suchergebnis(se)',
98
-	'retour_debut_forums' => 'Zurück zum Beginn des Forums',
99
-	'rubrique' => 'Rubrik',
100
-	'rubriques' => 'Rubriken',
101
-
102
-	// S
103
-	'signatures_petition' => 'Unterschrift',
104
-	'site_realise_avec_spip' => 'Realisiert mit SPIP',
105
-	'sites_web' => 'Websites',
106
-	'sous_rubriques' => 'Unterrubriken',
107
-	'spam' => 'SPAM',
108
-	'suite' => 'weiter',
109
-	'sur_web' => 'Im WWW',
110
-	'syndiquer_rubrique' => 'Diese Rubrik per RSS einbinden',
111
-	'syndiquer_site' => 'Die ganze Website mit RSS einbinden',
112
-
113
-	// T
114
-	'texte_lettre_information' => 'Dies ist der Newsletter der Website ',
115
-	'texte_lettre_information_2' => 'Diese Mail informiert über die Neuerscheinungen der letzten',
116
-
117
-	// V
118
-	'ver_imprimer' => 'Druckversion',
119
-	'voir_en_ligne' => 'Online ansehen',
120
-	'voir_squelette' => 'Layoutvorlage dieser Seite ansehen'
12
+    // A
13
+    'accueil_site' => 'Startseite',
14
+    'article' => 'Artikel',
15
+    'articles' => 'Artikel',
16
+    'articles_auteur' => 'Artikel dieses Autors',
17
+    'articles_populaires' => 'Die beliebtesten Artikel',
18
+    'articles_rubrique' => 'Artikel dieser Rubrik',
19
+    'aucun_article' => 'Unter dieser Adresse gibt es keinen Artikel.',
20
+    'aucun_auteur' => 'Unter dieser Adresse gibt es keinen Autor.',
21
+    'aucun_site' => 'Unter dieser Adresse gibt es keien Website.',
22
+    'aucune_breve' => 'Unter dieser Adresse gibt es keine Meldung.',
23
+    'aucune_rubrique' => 'Unter dieser Adresse gibt es keine Rubrik.',
24
+    'auteur' => 'Autor',
25
+    'autres' => 'Andere',
26
+    'autres_breves' => 'Weitere Meldungen.',
27
+    'autres_groupes_mots_clefs' => 'Weitere Schlagwortgruppen',
28
+    'autres_sites' => 'Weitere Websites',
29
+
30
+    // B
31
+    'bonjour' => 'Hallo',
32
+
33
+    // C
34
+    'commenter_site' => 'Website kommentieren',
35
+    'contact' => 'Kontakt',
36
+    'copie_document_impossible' => 'Dokument kann nicht kopiert werden',
37
+
38
+    // D
39
+    'date' => 'Datum',
40
+    'dernier_ajout' => 'Neuester Eintrag',
41
+    'dernieres_breves' => 'Neue Meldungen',
42
+    'derniers_articles' => 'Neueste Artikel',
43
+    'derniers_commentaires' => 'Neueste Kommentare',
44
+    'derniers_messages_forum' => 'Neue Forumsbeiträge',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'Im Textmodus bearbeiten ',
48
+    'en_reponse' => 'Antwort auf:',
49
+    'en_resume' => 'Als Zusammenfassung',
50
+    'envoyer_message' => 'Nachricht senden',
51
+    'espace_prive' => 'Redaktion',
52
+
53
+    // F
54
+    'formats_acceptes' => 'Akzeptierte Formate: @formats@.',
55
+
56
+    // H
57
+    'hierarchie_site' => 'Baumstruktur der Website',
58
+
59
+    // J
60
+    'jours' => 'Tage',
61
+
62
+    // L
63
+    'lien_connecter' => 'Login',
64
+
65
+    // M
66
+    'meme_auteur' => 'Vom gleichen Autor',
67
+    'meme_rubrique' => 'In der gleichen Rubrik',
68
+    'memes_auteurs' => 'Von den gleichen Autoren',
69
+    'message' => 'Nachricht',
70
+    'messages_forum' => 'Nachrichten',
71
+    'messages_recents' => 'Neue Forumsbeiträge',
72
+    'mots_clef' => 'Schlagwort',
73
+    'mots_clefs' => 'Schlagworte',
74
+    'mots_clefs_meme_groupe' => 'Schlagworte der gleichen Kategorie',
75
+
76
+    // N
77
+    'navigation' => 'Navigation',
78
+    'nom' => 'Name',
79
+    'nouveautes' => 'Neuigkeiten',
80
+    'nouveautes_web' => 'Neues im WWW',
81
+    'nouveaux_articles' => 'Neue Artikel',
82
+    'nouvelles_breves' => 'Neue Meldungen',
83
+
84
+    // P
85
+    'page_precedente' => 'vorige Seite',
86
+    'page_suivante' => 'nächste Seite',
87
+    'par_auteur' => 'von ',
88
+    'participer_site' => 'Sie können bei dieser Website mitmachen, wenn Sie sich anmelden. Sie erhalten sofort eine E-Mail mit den Zugangsdaten zum Redaktionssystem.',
89
+    'plan_site' => 'Sitemap',
90
+    'popularite' => 'Beliebtheit',
91
+    'poster_message' => 'Nachricht senden',
92
+    'proposer_site' => 'Sie können in dieser Rubrik eine Seite vorschlagen :',
93
+
94
+    // R
95
+    'repondre_article' => 'auf diesen Artikel antworten',
96
+    'repondre_breve' => 'auf diese Meldung antworten',
97
+    'resultats_recherche' => 'Suchergebnis(se)',
98
+    'retour_debut_forums' => 'Zurück zum Beginn des Forums',
99
+    'rubrique' => 'Rubrik',
100
+    'rubriques' => 'Rubriken',
101
+
102
+    // S
103
+    'signatures_petition' => 'Unterschrift',
104
+    'site_realise_avec_spip' => 'Realisiert mit SPIP',
105
+    'sites_web' => 'Websites',
106
+    'sous_rubriques' => 'Unterrubriken',
107
+    'spam' => 'SPAM',
108
+    'suite' => 'weiter',
109
+    'sur_web' => 'Im WWW',
110
+    'syndiquer_rubrique' => 'Diese Rubrik per RSS einbinden',
111
+    'syndiquer_site' => 'Die ganze Website mit RSS einbinden',
112
+
113
+    // T
114
+    'texte_lettre_information' => 'Dies ist der Newsletter der Website ',
115
+    'texte_lettre_information_2' => 'Diese Mail informiert über die Neuerscheinungen der letzten',
116
+
117
+    // V
118
+    'ver_imprimer' => 'Druckversion',
119
+    'voir_en_ligne' => 'Online ansehen',
120
+    'voir_squelette' => 'Layoutvorlage dieser Seite ansehen'
121 121
 );
Please login to merge, or discard this patch.
ecrire/req/sqlite_fonctions.php 3 patches
Doc Comments   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -33,7 +33,7 @@  discard block
 block discarded – undo
33 33
  * @link http://www.sqlite.org/lang_corefunc.html Liste des fonctions natives
34 34
  * @link http://sqlite.org/changes.html Liste des évolutions
35 35
  * 
36
- * @param PDO|resource $sqlite Représente la connexion Sqlite
36
+ * @param PDO $sqlite Représente la connexion Sqlite
37 37
  * @return false|void
38 38
  */
39 39
 function _sqlite_init_functions(&$sqlite) {
@@ -337,7 +337,7 @@  discard block
 block discarded – undo
337 337
  * soit inadapté.
338 338
  *
339 339
  * @param string $conv
340
- * @return void
340
+ * @return string
341 341
  */
342 342
 function _sqlite_func_strftime_format_converter(string $conv) : string {
343 343
 	// ok : %a %b %d %e %H %I %l %j %k %m %p %r %S %T %w %y %Y
Please login to merge, or discard this patch.
Indentation   +228 added lines, -228 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
 /**
@@ -38,93 +38,93 @@  discard block
 block discarded – undo
38 38
  */
39 39
 function _sqlite_init_functions(&$sqlite) {
40 40
 
41
-	if (!$sqlite) {
42
-		return false;
43
-	}
41
+    if (!$sqlite) {
42
+        return false;
43
+    }
44 44
 
45 45
 
46
-	$fonctions = array(
47
-		// A
48
-		'ACOS'  => array('acos', 1),
49
-		'ASIN'  => array('asin', 1),
50
-		'ATAN'  => array('atan', 1), // mysql accepte 2 params comme atan2… hum ?
51
-		'ATAN2' => array('atan2', 2),
46
+    $fonctions = array(
47
+        // A
48
+        'ACOS'  => array('acos', 1),
49
+        'ASIN'  => array('asin', 1),
50
+        'ATAN'  => array('atan', 1), // mysql accepte 2 params comme atan2… hum ?
51
+        'ATAN2' => array('atan2', 2),
52 52
 
53
-		// C
54
-		'CEIL'   => array('_sqlite_func_ceil', 1),
55
-		'CONCAT' => array('_sqlite_func_concat', -1),
56
-		'COS'    => array('cos', 1),
53
+        // C
54
+        'CEIL'   => array('_sqlite_func_ceil', 1),
55
+        'CONCAT' => array('_sqlite_func_concat', -1),
56
+        'COS'    => array('cos', 1),
57 57
 
58
-		// D
59
-		'DATE_FORMAT' => array('_sqlite_func_strftime', 2),
60
-		'DAYOFMONTH'  => array('_sqlite_func_dayofmonth', 1),
61
-		'DEGREES'     => array('rad2deg', 1),
58
+        // D
59
+        'DATE_FORMAT' => array('_sqlite_func_strftime', 2),
60
+        'DAYOFMONTH'  => array('_sqlite_func_dayofmonth', 1),
61
+        'DEGREES'     => array('rad2deg', 1),
62 62
 
63
-		// E
64
-		'EXTRAIRE_MULTI' => array('_sqlite_func_extraire_multi', 2), // specifique a SPIP/sql_multi()
65
-		'EXP'            => array('exp', 1),
63
+        // E
64
+        'EXTRAIRE_MULTI' => array('_sqlite_func_extraire_multi', 2), // specifique a SPIP/sql_multi()
65
+        'EXP'            => array('exp', 1),
66 66
 
67
-		// F
68
-		'FIND_IN_SET' => array('_sqlite_func_find_in_set', 2),
69
-		'FLOOR'       => array('_sqlite_func_floor', 1),
67
+        // F
68
+        'FIND_IN_SET' => array('_sqlite_func_find_in_set', 2),
69
+        'FLOOR'       => array('_sqlite_func_floor', 1),
70 70
 
71
-		// I
72
-		'IF'     => array('_sqlite_func_if', 3),
73
-		'INSERT' => array('_sqlite_func_insert', 4),
74
-		'INSTR'  => array('_sqlite_func_instr', 2),
71
+        // I
72
+        'IF'     => array('_sqlite_func_if', 3),
73
+        'INSERT' => array('_sqlite_func_insert', 4),
74
+        'INSTR'  => array('_sqlite_func_instr', 2),
75 75
 
76
-		// L
77
-		'LEAST'  => array('_sqlite_func_least', 3),
78
-		'_LEFT'  => array('_sqlite_func_left', 2),
76
+        // L
77
+        'LEAST'  => array('_sqlite_func_least', 3),
78
+        '_LEFT'  => array('_sqlite_func_left', 2),
79 79
 #		'LENGTH' => array('strlen', 1), // present v1.0.4
80 80
 #		'LOWER'  => array('strtolower', 1), // present v2.4
81 81
 #		'LTRIM'  => array('ltrim', 1), // present
82 82
 
83
-		// N
84
-		'NOW' => array('_sqlite_func_now', 0),
83
+        // N
84
+        'NOW' => array('_sqlite_func_now', 0),
85 85
 
86
-		// M
87
-		'MD5'   => array('md5', 1),
88
-		'MONTH' => array('_sqlite_func_month', 1),
86
+        // M
87
+        'MD5'   => array('md5', 1),
88
+        'MONTH' => array('_sqlite_func_month', 1),
89 89
 
90
-		// P
91
-		'PREG_REPLACE' => array('_sqlite_func_preg_replace', 3),
90
+        // P
91
+        'PREG_REPLACE' => array('_sqlite_func_preg_replace', 3),
92 92
 
93
-		// R
94
-		'RADIANS' => array('deg2rad', 1),
95
-		'RAND'    => array('_sqlite_func_rand', 0), // sinon random() v2.4
96
-		'REGEXP'  => array('_sqlite_func_regexp_match', 2), // critere REGEXP supporte a partir de v3.3.2
97
-		'RIGHT'   => array('_sqlite_func_right', 2),
93
+        // R
94
+        'RADIANS' => array('deg2rad', 1),
95
+        'RAND'    => array('_sqlite_func_rand', 0), // sinon random() v2.4
96
+        'REGEXP'  => array('_sqlite_func_regexp_match', 2), // critere REGEXP supporte a partir de v3.3.2
97
+        'RIGHT'   => array('_sqlite_func_right', 2),
98 98
 #		'RTRIM'   => array('rtrim', 1), // present
99 99
 
100
-		// S
101
-		'SETTYPE'   => array('settype', 2), // CAST present en v3.2.3
102
-		'SIN'       => array('sin', 1),
103
-		'SQRT'      => array('sqrt', 1),
104
-		'SUBSTRING' => array('_sqlite_func_substring' /*, 3*/), // peut etre appelee avec 2 ou 3 arguments, index base 1 et non 0
100
+        // S
101
+        'SETTYPE'   => array('settype', 2), // CAST present en v3.2.3
102
+        'SIN'       => array('sin', 1),
103
+        'SQRT'      => array('sqrt', 1),
104
+        'SUBSTRING' => array('_sqlite_func_substring' /*, 3*/), // peut etre appelee avec 2 ou 3 arguments, index base 1 et non 0
105 105
 
106
-		// T
107
-		'TAN'           => array('tan', 1),
108
-		'TIMESTAMPDIFF' => array('_sqlite_timestampdiff'    /*, 3*/),
109
-		'TO_DAYS'       => array('_sqlite_func_to_days', 1),
106
+        // T
107
+        'TAN'           => array('tan', 1),
108
+        'TIMESTAMPDIFF' => array('_sqlite_timestampdiff'    /*, 3*/),
109
+        'TO_DAYS'       => array('_sqlite_func_to_days', 1),
110 110
 #		'TRIM'          => array('trim', 1), // present
111 111
 
112
-		// U
113
-		'UNIX_TIMESTAMP' => array('_sqlite_func_unix_timestamp', 1),
112
+        // U
113
+        'UNIX_TIMESTAMP' => array('_sqlite_func_unix_timestamp', 1),
114 114
 #		'UPPER'          => array('strtoupper', 1), // present v2.4
115 115
 
116
-		// V
117
-		'VIDE' => array('_sqlite_func_vide', 0), // du vide pour SELECT 0 as x ... ORDER BY x -> ORDER BY vide()
116
+        // V
117
+        'VIDE' => array('_sqlite_func_vide', 0), // du vide pour SELECT 0 as x ... ORDER BY x -> ORDER BY vide()
118 118
 
119
-		// Y
120
-		'YEAR' => array('_sqlite_func_year', 1)
121
-	);
119
+        // Y
120
+        'YEAR' => array('_sqlite_func_year', 1)
121
+    );
122 122
 
123
-	foreach ($fonctions as $f => $r) {
124
-		_sqlite_add_function($sqlite, $f, $r);
125
-	}
123
+    foreach ($fonctions as $f => $r) {
124
+        _sqlite_add_function($sqlite, $f, $r);
125
+    }
126 126
 
127
-	#spip_log('functions sqlite chargees ','sqlite.'._LOG_DEBUG);
127
+    #spip_log('functions sqlite chargees ','sqlite.'._LOG_DEBUG);
128 128
 }
129 129
 
130 130
 
@@ -145,9 +145,9 @@  discard block
 block discarded – undo
145 145
  * 
146 146
 **/
147 147
 function _sqlite_add_function(&$sqlite, &$f, &$r) {
148
-	isset($r[1])
149
-		? $sqlite->sqliteCreateFunction($f, $r[0], $r[1])
150
-		: $sqlite->sqliteCreateFunction($f, $r[0]);
148
+    isset($r[1])
149
+        ? $sqlite->sqliteCreateFunction($f, $r[0], $r[1])
150
+        : $sqlite->sqliteCreateFunction($f, $r[0]);
151 151
 }
152 152
 
153 153
 //
@@ -156,43 +156,43 @@  discard block
 block discarded – undo
156 156
 //
157 157
 
158 158
 function _sqlite_func_ceil($a) {
159
-	return ceil($a);
159
+    return ceil($a);
160 160
 }
161 161
 
162 162
 // https://code.spip.net/@_sqlite_func_concat
163 163
 function _sqlite_func_concat() {
164
-	$args = func_get_args();
164
+    $args = func_get_args();
165 165
 
166
-	return join('', $args);
166
+    return join('', $args);
167 167
 }
168 168
 
169 169
 
170 170
 // https://code.spip.net/@_sqlite_func_dayofmonth
171 171
 function _sqlite_func_dayofmonth($d) {
172
-	return _sqlite_func_date("d", $d);
172
+    return _sqlite_func_date("d", $d);
173 173
 }
174 174
 
175 175
 
176 176
 // https://code.spip.net/@_sqlite_func_find_in_set
177 177
 function _sqlite_func_find_in_set($num, $set) {
178
-	$rank = 0;
179
-	foreach (explode(",", $set) as $v) {
180
-		if ($v == $num) {
181
-			return (++$rank);
182
-		}
183
-		$rank++;
184
-	}
185
-
186
-	return 0;
178
+    $rank = 0;
179
+    foreach (explode(",", $set) as $v) {
180
+        if ($v == $num) {
181
+            return (++$rank);
182
+        }
183
+        $rank++;
184
+    }
185
+
186
+    return 0;
187 187
 }
188 188
 
189 189
 function _sqlite_func_floor($a) {
190
-	return floor($a);
190
+    return floor($a);
191 191
 }
192 192
 
193 193
 // https://code.spip.net/@_sqlite_func_if
194 194
 function _sqlite_func_if($bool, $oui, $non) {
195
-	return ($bool) ? $oui : $non;
195
+    return ($bool) ? $oui : $non;
196 196
 }
197 197
 
198 198
 
@@ -203,59 +203,59 @@  discard block
 block discarded – undo
203 203
  */
204 204
 // https://code.spip.net/@_sqlite_func_insert
205 205
 function _sqlite_func_insert($s, $index, $longueur, $chaine) {
206
-	return
207
-		substr($s, 0, $index)
208
-		. $chaine
209
-		. substr(substr($s, $index), $longueur);
206
+    return
207
+        substr($s, 0, $index)
208
+        . $chaine
209
+        . substr(substr($s, $index), $longueur);
210 210
 }
211 211
 
212 212
 
213 213
 // https://code.spip.net/@_sqlite_func_instr
214 214
 function _sqlite_func_instr($s, $search) {
215
-	return strpos($s, $search);
215
+    return strpos($s, $search);
216 216
 }
217 217
 
218 218
 
219 219
 // https://code.spip.net/@_sqlite_func_least
220 220
 function _sqlite_func_least() {
221
-	$arg_list = func_get_args();
222
-	$least = min($arg_list);
221
+    $arg_list = func_get_args();
222
+    $least = min($arg_list);
223 223
 
224
-	#spip_log("Passage avec LEAST : $least",'sqlite.'._LOG_DEBUG);
225
-	return $least;
224
+    #spip_log("Passage avec LEAST : $least",'sqlite.'._LOG_DEBUG);
225
+    return $least;
226 226
 }
227 227
 
228 228
 
229 229
 // https://code.spip.net/@_sqlite_func_left
230 230
 function _sqlite_func_left($s, $lenght) {
231
-	return substr($s, $lenght);
231
+    return substr($s, $lenght);
232 232
 }
233 233
 
234 234
 
235 235
 // https://code.spip.net/@_sqlite_func_now
236 236
 function _sqlite_func_now() {
237
-	static $now = null;
238
-	if (is_null($now)) {
239
-		$now = date("Y-m-d H:i:s");
240
-	}
237
+    static $now = null;
238
+    if (is_null($now)) {
239
+        $now = date("Y-m-d H:i:s");
240
+    }
241 241
 
242
-	#spip_log("Passage avec NOW : $now",'sqlite.'._LOG_DEBUG);
243
-	return $now;
242
+    #spip_log("Passage avec NOW : $now",'sqlite.'._LOG_DEBUG);
243
+    return $now;
244 244
 }
245 245
 
246 246
 
247 247
 // https://code.spip.net/@_sqlite_func_month
248 248
 function _sqlite_func_month($d) {
249
-	return _sqlite_func_date("m", $d);
249
+    return _sqlite_func_date("m", $d);
250 250
 }
251 251
 
252 252
 
253 253
 // https://code.spip.net/@_sqlite_func_preg_replace
254 254
 function _sqlite_func_preg_replace($quoi, $cherche, $remplace) {
255
-	$return = preg_replace('%' . $cherche . '%', $remplace, $quoi);
255
+    $return = preg_replace('%' . $cherche . '%', $remplace, $quoi);
256 256
 
257
-	#spip_log("preg_replace : $quoi, $cherche, $remplace, $return",'sqlite.'._LOG_DEBUG);
258
-	return $return;
257
+    #spip_log("preg_replace : $quoi, $cherche, $remplace, $return",'sqlite.'._LOG_DEBUG);
258
+    return $return;
259 259
 }
260 260
 
261 261
 /**
@@ -266,52 +266,52 @@  discard block
 block discarded – undo
266 266
  * @return string, l'extrait trouve.
267 267
  **/
268 268
 function _sqlite_func_extraire_multi($quoi, $lang) {
269
-	if (!defined('_EXTRAIRE_MULTI')) {
270
-		include_spip('inc/filtres');
271
-	}
272
-	if (!function_exists('approcher_langue')) {
273
-		include_spip('inc/lang');
274
-	}
275
-	if (preg_match_all(_EXTRAIRE_MULTI, $quoi, $regs, PREG_SET_ORDER)) {
276
-		foreach ($regs as $reg) {
277
-			// chercher la version de la langue courante
278
-			$trads = extraire_trads($reg[1]);
279
-			if ($l = approcher_langue($trads, $lang)) {
280
-				$trad = $trads[$l];
281
-			} else {
282
-				$trad = reset($trads);
283
-			}
284
-			$quoi = str_replace($reg[0], $trad, $quoi);
285
-		}
286
-	}
287
-
288
-	return $quoi;
269
+    if (!defined('_EXTRAIRE_MULTI')) {
270
+        include_spip('inc/filtres');
271
+    }
272
+    if (!function_exists('approcher_langue')) {
273
+        include_spip('inc/lang');
274
+    }
275
+    if (preg_match_all(_EXTRAIRE_MULTI, $quoi, $regs, PREG_SET_ORDER)) {
276
+        foreach ($regs as $reg) {
277
+            // chercher la version de la langue courante
278
+            $trads = extraire_trads($reg[1]);
279
+            if ($l = approcher_langue($trads, $lang)) {
280
+                $trad = $trads[$l];
281
+            } else {
282
+                $trad = reset($trads);
283
+            }
284
+            $quoi = str_replace($reg[0], $trad, $quoi);
285
+        }
286
+    }
287
+
288
+    return $quoi;
289 289
 }
290 290
 
291 291
 
292 292
 // https://code.spip.net/@_sqlite_func_rand
293 293
 function _sqlite_func_rand() {
294
-	return rand();
294
+    return rand();
295 295
 }
296 296
 
297 297
 
298 298
 // https://code.spip.net/@_sqlite_func_right
299 299
 function _sqlite_func_right($s, $length) {
300
-	return substr($s, 0 - $length);
300
+    return substr($s, 0 - $length);
301 301
 }
302 302
 
303 303
 
304 304
 // https://code.spip.net/@_sqlite_func_regexp_match
305 305
 function _sqlite_func_regexp_match($cherche, $quoi) {
306
-	// optimiser un cas tres courant avec les requetes en base
307
-	if (!$quoi and !strlen($quoi)) {
308
-		return false;
309
-	}
310
-	$u = isset($GLOBALS['meta']['pcre_u']) ? $GLOBALS['meta']['pcre_u'] : 'u';
311
-	$return = preg_match('%' . $cherche . '%imsS' . $u, $quoi);
312
-
313
-	#spip_log("regexp_replace : $quoi, $cherche, $remplace, $return",'sqlite.'._LOG_DEBUG);
314
-	return $return;
306
+    // optimiser un cas tres courant avec les requetes en base
307
+    if (!$quoi and !strlen($quoi)) {
308
+        return false;
309
+    }
310
+    $u = isset($GLOBALS['meta']['pcre_u']) ? $GLOBALS['meta']['pcre_u'] : 'u';
311
+    $return = preg_match('%' . $cherche . '%imsS' . $u, $quoi);
312
+
313
+    #spip_log("regexp_replace : $quoi, $cherche, $remplace, $return",'sqlite.'._LOG_DEBUG);
314
+    return $return;
315 315
 }
316 316
 
317 317
 
@@ -323,8 +323,8 @@  discard block
 block discarded – undo
323 323
  * @return string
324 324
  */
325 325
 function _sqlite_func_strftime($date, $conv) {
326
-	$conv = _sqlite_func_strftime_format_converter($conv);
327
-	return strftime($conv, is_int($date) ? $date : strtotime($date));
326
+    $conv = _sqlite_func_strftime_format_converter($conv);
327
+    return strftime($conv, is_int($date) ? $date : strtotime($date));
328 328
 }
329 329
 
330 330
 /**
@@ -340,28 +340,28 @@  discard block
 block discarded – undo
340 340
  * @return void
341 341
  */
342 342
 function _sqlite_func_strftime_format_converter(string $conv) : string {
343
-	// ok : %a %b %d %e %H %I %l %j %k %m %p %r %S %T %w %y %Y
344
-	// on ne sait pas en gérer certains...
345
-	static $mysql_to_strftime_not_ok = ['%c', '%D', '%f', '%U', '%V', '%W', '%X'];
346
-	static $mysql_to_strftime = [
347
-		'%h' => '%I',
348
-		'%i' => '%M',
349
-		'%M' => '%B',
350
-		'%s' => '%S',
351
-		'%u' => '%U',
352
-		'%v' => '%V',
353
-		'%x' => '%G',
354
-	];
355
-	static $to_strftime = [];
356
-	if (!isset($to_strftime[$conv])) {
357
-		$count = 0;
358
-		str_replace($mysql_to_strftime_not_ok, '', $conv, $count);
359
-		if ($count > 0) {
360
-			spip_log("DATE_FORMAT : At least one parameter can't be parsed by strftime with format '$conv'", 'sqlite.' . _LOG_ERREUR);
361
-		}
362
-		$to_strftime[$conv] = str_replace(array_keys($mysql_to_strftime), $mysql_to_strftime, $conv);
363
-	}
364
-	return $to_strftime[$conv];
343
+    // ok : %a %b %d %e %H %I %l %j %k %m %p %r %S %T %w %y %Y
344
+    // on ne sait pas en gérer certains...
345
+    static $mysql_to_strftime_not_ok = ['%c', '%D', '%f', '%U', '%V', '%W', '%X'];
346
+    static $mysql_to_strftime = [
347
+        '%h' => '%I',
348
+        '%i' => '%M',
349
+        '%M' => '%B',
350
+        '%s' => '%S',
351
+        '%u' => '%U',
352
+        '%v' => '%V',
353
+        '%x' => '%G',
354
+    ];
355
+    static $to_strftime = [];
356
+    if (!isset($to_strftime[$conv])) {
357
+        $count = 0;
358
+        str_replace($mysql_to_strftime_not_ok, '', $conv, $count);
359
+        if ($count > 0) {
360
+            spip_log("DATE_FORMAT : At least one parameter can't be parsed by strftime with format '$conv'", 'sqlite.' . _LOG_ERREUR);
361
+        }
362
+        $to_strftime[$conv] = str_replace(array_keys($mysql_to_strftime), $mysql_to_strftime, $conv);
363
+    }
364
+    return $to_strftime[$conv];
365 365
 }
366 366
 
367 367
 /**
@@ -373,21 +373,21 @@  discard block
 block discarded – undo
373 373
  * @return int
374 374
  */
375 375
 function _sqlite_func_to_days($d) {
376
-	static $offset = 719528; // nb de jour entre 0000-00-00 et timestamp 0=1970-01-01
377
-	$result = $offset + (int)ceil(_sqlite_func_unix_timestamp($d) / (24 * 3600));
376
+    static $offset = 719528; // nb de jour entre 0000-00-00 et timestamp 0=1970-01-01
377
+    $result = $offset + (int)ceil(_sqlite_func_unix_timestamp($d) / (24 * 3600));
378 378
 
379
-	#spip_log("Passage avec TO_DAYS : $d, $result",'sqlite.'._LOG_DEBUG);
380
-	return $result;
379
+    #spip_log("Passage avec TO_DAYS : $d, $result",'sqlite.'._LOG_DEBUG);
380
+    return $result;
381 381
 }
382 382
 
383 383
 function _sqlite_func_substring($string, $start, $len = null) {
384
-	// SQL compte a partir de 1, php a partir de 0
385
-	$start = ($start > 0) ? $start - 1 : $start;
386
-	if (is_null($len)) {
387
-		return substr($string, $start);
388
-	} else {
389
-		return substr($string, $start, $len);
390
-	}
384
+    // SQL compte a partir de 1, php a partir de 0
385
+    $start = ($start > 0) ? $start - 1 : $start;
386
+    if (is_null($len)) {
387
+        return substr($string, $start);
388
+    } else {
389
+        return substr($string, $start, $len);
390
+    }
391 391
 }
392 392
 
393 393
 /**
@@ -401,61 +401,61 @@  discard block
 block discarded – undo
401 401
  * @return int
402 402
  */
403 403
 function _sqlite_timestampdiff($unit, $date1, $date2) {
404
-	$d1 = date_create($date1);
405
-	$d2 = date_create($date2);
406
-	$diff = date_diff($d1, $d2);
407
-	$inv = $diff->invert ? -1 : 1;
408
-	switch ($unit) {
409
-		case "YEAR":
410
-			return $inv * $diff->y;
411
-		case "QUARTER":
412
-			return $inv * (4 * $diff->y + intval(floor($diff->m / 3)));
413
-		case "MONTH":
414
-			return $inv * (12 * $diff->y + $diff->m);
415
-		case "WEEK":
416
-			return $inv * intval(floor($diff->days / 7));
417
-		case "DAY":
418
-			#var_dump($inv*$diff->days);
419
-			return $inv * $diff->days;
420
-		case "HOUR":
421
-			return $inv * (24 * $diff->days + $diff->h);
422
-		case "MINUTE":
423
-			return $inv * ((24 * $diff->days + $diff->h) * 60 + $diff->i);
424
-		case "SECOND":
425
-			return $inv * (((24 * $diff->days + $diff->h) * 60 + $diff->i) * 60 + $diff->s);
426
-		case "MICROSECOND":
427
-			return $inv * (((24 * $diff->days + $diff->h) * 60 + $diff->i) * 60 + $diff->s) * 1000000;
428
-	}
429
-
430
-	return 0;
404
+    $d1 = date_create($date1);
405
+    $d2 = date_create($date2);
406
+    $diff = date_diff($d1, $d2);
407
+    $inv = $diff->invert ? -1 : 1;
408
+    switch ($unit) {
409
+        case "YEAR":
410
+            return $inv * $diff->y;
411
+        case "QUARTER":
412
+            return $inv * (4 * $diff->y + intval(floor($diff->m / 3)));
413
+        case "MONTH":
414
+            return $inv * (12 * $diff->y + $diff->m);
415
+        case "WEEK":
416
+            return $inv * intval(floor($diff->days / 7));
417
+        case "DAY":
418
+            #var_dump($inv*$diff->days);
419
+            return $inv * $diff->days;
420
+        case "HOUR":
421
+            return $inv * (24 * $diff->days + $diff->h);
422
+        case "MINUTE":
423
+            return $inv * ((24 * $diff->days + $diff->h) * 60 + $diff->i);
424
+        case "SECOND":
425
+            return $inv * (((24 * $diff->days + $diff->h) * 60 + $diff->i) * 60 + $diff->s);
426
+        case "MICROSECOND":
427
+            return $inv * (((24 * $diff->days + $diff->h) * 60 + $diff->i) * 60 + $diff->s) * 1000000;
428
+    }
429
+
430
+    return 0;
431 431
 }
432 432
 
433 433
 // https://code.spip.net/@_sqlite_func_unix_timestamp
434 434
 function _sqlite_func_unix_timestamp($d) {
435
-	static $mem = array();
436
-	static $n = 0;
437
-	if (isset($mem[$d])) {
438
-		return $mem[$d];
439
-	}
440
-	if ($n++ > 100) {
441
-		$mem = array();
442
-		$n = 0;
443
-	}
444
-
445
-	//2005-12-02 20:53:53
446
-	#spip_log("Passage avec UNIX_TIMESTAMP : $d",'sqlite.'._LOG_DEBUG);
447
-	if (!$d) {
448
-		return $mem[$d] = mktime();
449
-	}
450
-
451
-	// une pile plus grosse n'accelere pas le calcul
452
-	return $mem[$d] = strtotime($d);
435
+    static $mem = array();
436
+    static $n = 0;
437
+    if (isset($mem[$d])) {
438
+        return $mem[$d];
439
+    }
440
+    if ($n++ > 100) {
441
+        $mem = array();
442
+        $n = 0;
443
+    }
444
+
445
+    //2005-12-02 20:53:53
446
+    #spip_log("Passage avec UNIX_TIMESTAMP : $d",'sqlite.'._LOG_DEBUG);
447
+    if (!$d) {
448
+        return $mem[$d] = mktime();
449
+    }
450
+
451
+    // une pile plus grosse n'accelere pas le calcul
452
+    return $mem[$d] = strtotime($d);
453 453
 }
454 454
 
455 455
 
456 456
 // https://code.spip.net/@_sqlite_func_year
457 457
 function _sqlite_func_year($d) {
458
-	return _sqlite_func_date("Y", $d);
458
+    return _sqlite_func_date("Y", $d);
459 459
 }
460 460
 
461 461
 /**
@@ -469,23 +469,23 @@  discard block
 block discarded – undo
469 469
  * @return int
470 470
  */
471 471
 function _sqlite_func_date($quoi, $d) {
472
-	static $mem = array();
473
-	static $n = 0;
474
-	if (isset($mem[$d])) {
475
-		return $mem[$d][$quoi];
476
-	}
477
-	if ($n++ > 100) {
478
-		$mem = array();
479
-		$n = 0;
480
-	}
481
-
482
-	$dec = date("Y-m-d", _sqlite_func_unix_timestamp($d));
483
-	$mem[$d] = array("Y" => substr($dec, 0, 4), "m" => substr($dec, 5, 2), "d" => substr($dec, 8, 2));
484
-
485
-	return $mem[$d][$quoi];
472
+    static $mem = array();
473
+    static $n = 0;
474
+    if (isset($mem[$d])) {
475
+        return $mem[$d][$quoi];
476
+    }
477
+    if ($n++ > 100) {
478
+        $mem = array();
479
+        $n = 0;
480
+    }
481
+
482
+    $dec = date("Y-m-d", _sqlite_func_unix_timestamp($d));
483
+    $mem[$d] = array("Y" => substr($dec, 0, 4), "m" => substr($dec, 5, 2), "d" => substr($dec, 8, 2));
484
+
485
+    return $mem[$d][$quoi];
486 486
 }
487 487
 
488 488
 // https://code.spip.net/@_sqlite_func_vide
489 489
 function _sqlite_func_vide() {
490
-	return;
490
+    return;
491 491
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -252,7 +252,7 @@  discard block
 block discarded – undo
252 252
 
253 253
 // https://code.spip.net/@_sqlite_func_preg_replace
254 254
 function _sqlite_func_preg_replace($quoi, $cherche, $remplace) {
255
-	$return = preg_replace('%' . $cherche . '%', $remplace, $quoi);
255
+	$return = preg_replace('%'.$cherche.'%', $remplace, $quoi);
256 256
 
257 257
 	#spip_log("preg_replace : $quoi, $cherche, $remplace, $return",'sqlite.'._LOG_DEBUG);
258 258
 	return $return;
@@ -308,7 +308,7 @@  discard block
 block discarded – undo
308 308
 		return false;
309 309
 	}
310 310
 	$u = isset($GLOBALS['meta']['pcre_u']) ? $GLOBALS['meta']['pcre_u'] : 'u';
311
-	$return = preg_match('%' . $cherche . '%imsS' . $u, $quoi);
311
+	$return = preg_match('%'.$cherche.'%imsS'.$u, $quoi);
312 312
 
313 313
 	#spip_log("regexp_replace : $quoi, $cherche, $remplace, $return",'sqlite.'._LOG_DEBUG);
314 314
 	return $return;
@@ -357,7 +357,7 @@  discard block
 block discarded – undo
357 357
 		$count = 0;
358 358
 		str_replace($mysql_to_strftime_not_ok, '', $conv, $count);
359 359
 		if ($count > 0) {
360
-			spip_log("DATE_FORMAT : At least one parameter can't be parsed by strftime with format '$conv'", 'sqlite.' . _LOG_ERREUR);
360
+			spip_log("DATE_FORMAT : At least one parameter can't be parsed by strftime with format '$conv'", 'sqlite.'._LOG_ERREUR);
361 361
 		}
362 362
 		$to_strftime[$conv] = str_replace(array_keys($mysql_to_strftime), $mysql_to_strftime, $conv);
363 363
 	}
@@ -374,7 +374,7 @@  discard block
 block discarded – undo
374 374
  */
375 375
 function _sqlite_func_to_days($d) {
376 376
 	static $offset = 719528; // nb de jour entre 0000-00-00 et timestamp 0=1970-01-01
377
-	$result = $offset + (int)ceil(_sqlite_func_unix_timestamp($d) / (24 * 3600));
377
+	$result = $offset + (int) ceil(_sqlite_func_unix_timestamp($d) / (24 * 3600));
378 378
 
379 379
 	#spip_log("Passage avec TO_DAYS : $d, $result",'sqlite.'._LOG_DEBUG);
380 380
 	return $result;
Please login to merge, or discard this patch.
ecrire/inc/admin.php 2 patches
Indentation   +126 added lines, -126 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,28 +45,28 @@  discard block
 block discarded – undo
45 45
  *     sinon code HTML de la page après le traitement effectué.
46 46
  **/
47 47
 function inc_admin_dist($script, $titre, $comment = '', $anonymous = false) {
48
-	$reprise = true;
49
-	if (!isset($GLOBALS['meta'][$script])
50
-		or !isset($GLOBALS['meta']['admin'])
51
-	) {
52
-		$reprise = false;
53
-		$res = debut_admin($script, $titre, $comment);
54
-		if ($res) {
55
-			return $res;
56
-		}
57
-		spip_log("meta: $script " . print_r($_POST, true));
58
-		ecrire_meta($script, serialize($_POST));
59
-	}
48
+    $reprise = true;
49
+    if (!isset($GLOBALS['meta'][$script])
50
+        or !isset($GLOBALS['meta']['admin'])
51
+    ) {
52
+        $reprise = false;
53
+        $res = debut_admin($script, $titre, $comment);
54
+        if ($res) {
55
+            return $res;
56
+        }
57
+        spip_log("meta: $script " . print_r($_POST, true));
58
+        ecrire_meta($script, serialize($_POST));
59
+    }
60 60
 
61
-	$res = admin_verifie_session($script, $anonymous);
62
-	if ($res) {
63
-		return $res;
64
-	}
65
-	$base = charger_fonction($script, 'base');
66
-	$base($titre, $reprise);
67
-	fin_admin($script);
61
+    $res = admin_verifie_session($script, $anonymous);
62
+    if ($res) {
63
+        return $res;
64
+    }
65
+    $base = charger_fonction($script, 'base');
66
+    $base($titre, $reprise);
67
+    fin_admin($script);
68 68
 
69
-	return '';
69
+    return '';
70 70
 }
71 71
 
72 72
 /**
@@ -97,34 +97,34 @@  discard block
 block discarded – undo
97 97
  *     Code HTML si message d'erreur, '' sinon;
98 98
  */
99 99
 function admin_verifie_session($script, $anonymous = false) {
100
-	include_spip('base/abstract_sql');
101
-	$pref = sprintf('_%d_', $GLOBALS['visiteur_session']['id_auteur']);
102
-	$signal = fichier_admin($script, "$script$pref");
103
-	$valeur = sql_getfetsel('valeur', 'spip_meta', "nom='admin'");
104
-	if ($valeur === null) {
105
-		ecrire_meta('admin', $signal, 'non');
106
-	} else {
107
-		if (!$anonymous and ($valeur != $signal)) {
108
-			if (!preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']['admin'], $l)
109
-				or intval($l[2]) != $GLOBALS['visiteur_session']['id_auteur']
110
-			) {
111
-				include_spip('inc/minipres');
112
-				spip_log("refus de lancer $script, priorite a $valeur");
100
+    include_spip('base/abstract_sql');
101
+    $pref = sprintf('_%d_', $GLOBALS['visiteur_session']['id_auteur']);
102
+    $signal = fichier_admin($script, "$script$pref");
103
+    $valeur = sql_getfetsel('valeur', 'spip_meta', "nom='admin'");
104
+    if ($valeur === null) {
105
+        ecrire_meta('admin', $signal, 'non');
106
+    } else {
107
+        if (!$anonymous and ($valeur != $signal)) {
108
+            if (!preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']['admin'], $l)
109
+                or intval($l[2]) != $GLOBALS['visiteur_session']['id_auteur']
110
+            ) {
111
+                include_spip('inc/minipres');
112
+                spip_log("refus de lancer $script, priorite a $valeur");
113 113
 
114
-				return minipres(_T('info_travaux_texte'), '', array('status' => 503));
115
-			}
116
-		}
117
-	}
118
-	$journal = 'spip';
119
-	if (autoriser('configurer')) {
120
-		// c'est une action webmestre, soit par ftp soit par statut webmestre
121
-		$journal = 'webmestre';
122
-	}
123
-	// on pourrait statuer automatiquement les webmestres a l'init d'une action auth par ftp ... ?
114
+                return minipres(_T('info_travaux_texte'), '', array('status' => 503));
115
+            }
116
+        }
117
+    }
118
+    $journal = 'spip';
119
+    if (autoriser('configurer')) {
120
+        // c'est une action webmestre, soit par ftp soit par statut webmestre
121
+        $journal = 'webmestre';
122
+    }
123
+    // on pourrait statuer automatiquement les webmestres a l'init d'une action auth par ftp ... ?
124 124
 
125
-	spip_log("admin $pref" . ($valeur ? ' (reprise)' : ' (init)'), $journal);
125
+    spip_log("admin $pref" . ($valeur ? ' (reprise)' : ' (init)'), $journal);
126 126
 
127
-	return '';
127
+    return '';
128 128
 }
129 129
 
130 130
 /**
@@ -137,11 +137,11 @@  discard block
 block discarded – undo
137 137
  *     Chemin du répertoire.
138 138
  **/
139 139
 function dir_admin() {
140
-	if (autoriser('configurer')) {
141
-		return _DIR_TMP;
142
-	} else {
143
-		return _DIR_TRANSFERT . $GLOBALS['visiteur_session']['login'] . '/';
144
-	}
140
+    if (autoriser('configurer')) {
141
+        return _DIR_TMP;
142
+    } else {
143
+        return _DIR_TRANSFERT . $GLOBALS['visiteur_session']['login'] . '/';
144
+    }
145 145
 }
146 146
 
147 147
 /**
@@ -158,8 +158,8 @@  discard block
 block discarded – undo
158 158
  *     Nom du fichier
159 159
  **/
160 160
 function fichier_admin($action, $pref = 'admin_') {
161
-	return $pref .
162
-	substr(md5($action . (time() & ~2047) . $GLOBALS['visiteur_session']['login']), 0, 10);
161
+    return $pref .
162
+    substr(md5($action . (time() & ~2047) . $GLOBALS['visiteur_session']['login']), 0, 10);
163 163
 }
164 164
 
165 165
 /**
@@ -185,72 +185,72 @@  discard block
 block discarded – undo
185 185
  *     sinon chaîne vide si déjà fait.
186 186
  **/
187 187
 function debut_admin($script, $action = '', $corps = '') {
188
-	if ((!$action) || !(autoriser('webmestre') or autoriser('chargerftp'))) {
189
-		include_spip('inc/minipres');
188
+    if ((!$action) || !(autoriser('webmestre') or autoriser('chargerftp'))) {
189
+        include_spip('inc/minipres');
190 190
 
191
-		return minipres();
192
-	} else {
193
-		$dir = dir_admin();
194
-		$signal = fichier_admin($script);
195
-		if (@file_exists($dir . $signal)) {
196
-			spip_log("Action admin: $action");
191
+        return minipres();
192
+    } else {
193
+        $dir = dir_admin();
194
+        $signal = fichier_admin($script);
195
+        if (@file_exists($dir . $signal)) {
196
+            spip_log("Action admin: $action");
197 197
 
198
-			return '';
199
-		}
200
-		include_spip('inc/minipres');
198
+            return '';
199
+        }
200
+        include_spip('inc/minipres');
201 201
 
202
-		// Si on est un super-admin, un bouton de validation suffit
203
-		// sauf dans les cas destroy
204
-		if ((autoriser('webmestre') or $script === 'repair')
205
-			and $script != 'delete_all'
206
-		) {
207
-			if (_request('validation_admin') == $signal) {
208
-				spip_log("Action super-admin: $action");
202
+        // Si on est un super-admin, un bouton de validation suffit
203
+        // sauf dans les cas destroy
204
+        if ((autoriser('webmestre') or $script === 'repair')
205
+            and $script != 'delete_all'
206
+        ) {
207
+            if (_request('validation_admin') == $signal) {
208
+                spip_log("Action super-admin: $action");
209 209
 
210
-				return '';
211
-			}
212
-			$corps .= '<input type="hidden" name="validation_admin" value="' . $signal . '" />';
213
-			$suivant = _T('bouton_valider');
214
-			$js = '';
215
-		} else {
216
-			// cet appel permet d'assurer un copier-coller du nom du repertoire a creer dans tmp (esj)
217
-			// l'insertion du script a cet endroit n'est pas xhtml licite
218
-			// mais evite de l'embarquer dans toutes les pages minipres
219
-			$corps .= http_script('', 'spip_barre.js');
210
+                return '';
211
+            }
212
+            $corps .= '<input type="hidden" name="validation_admin" value="' . $signal . '" />';
213
+            $suivant = _T('bouton_valider');
214
+            $js = '';
215
+        } else {
216
+            // cet appel permet d'assurer un copier-coller du nom du repertoire a creer dans tmp (esj)
217
+            // l'insertion du script a cet endroit n'est pas xhtml licite
218
+            // mais evite de l'embarquer dans toutes les pages minipres
219
+            $corps .= http_script('', 'spip_barre.js');
220 220
 
221
-			$corps .= '<fieldset><legend>'
222
-				. _T('info_authentification_ftp')
223
-				. aider('ftp_auth')
224
-				. "</legend>\n<label for='fichier'>"
225
-				. _T('info_creer_repertoire')
226
-				. "</label>\n"
227
-				. "<span id='signal' class='formo'>" . $signal . '</span>'
228
-				. "<input type='hidden' id='fichier' name='fichier' value='"
229
-				. $signal
230
-				. "' />"
231
-				. _T('info_creer_repertoire_2', array('repertoire' => joli_repertoire($dir)))
232
-				. '</fieldset>';
221
+            $corps .= '<fieldset><legend>'
222
+                . _T('info_authentification_ftp')
223
+                . aider('ftp_auth')
224
+                . "</legend>\n<label for='fichier'>"
225
+                . _T('info_creer_repertoire')
226
+                . "</label>\n"
227
+                . "<span id='signal' class='formo'>" . $signal . '</span>'
228
+                . "<input type='hidden' id='fichier' name='fichier' value='"
229
+                . $signal
230
+                . "' />"
231
+                . _T('info_creer_repertoire_2', array('repertoire' => joli_repertoire($dir)))
232
+                . '</fieldset>';
233 233
 
234
-			$suivant = _T('bouton_recharger_page');
234
+            $suivant = _T('bouton_recharger_page');
235 235
 
236
-			// code volontairement tordu:
237
-			// provoquer la copie dans le presse papier du nom du repertoire
238
-			// en remettant a vide le champ pour que ca marche aussi en cas
239
-			// de JavaScript inactif.
240
-			$js = " onload='var range=document.createRange(); var signal = document.getElementById(\"signal\"); var userSelection = window.getSelection(); range.setStart(signal,0); range.setEnd(signal,1); userSelection.addRange(range);'";
241
-		}
236
+            // code volontairement tordu:
237
+            // provoquer la copie dans le presse papier du nom du repertoire
238
+            // en remettant a vide le champ pour que ca marche aussi en cas
239
+            // de JavaScript inactif.
240
+            $js = " onload='var range=document.createRange(); var signal = document.getElementById(\"signal\"); var userSelection = window.getSelection(); range.setStart(signal,0); range.setEnd(signal,1); userSelection.addRange(range);'";
241
+        }
242 242
 
243
-		// admin/xxx correspond
244
-		// a exec/base_xxx de preference
245
-		// et exec/xxx sinon (compat)
246
-		if (tester_url_ecrire("base_$script")) {
247
-			$script = "base_$script";
248
-		}
249
-		$form = copy_request($script, $corps, $suivant);
250
-		$info_action = _T('info_action', array('action' => "$action"));
243
+        // admin/xxx correspond
244
+        // a exec/base_xxx de preference
245
+        // et exec/xxx sinon (compat)
246
+        if (tester_url_ecrire("base_$script")) {
247
+            $script = "base_$script";
248
+        }
249
+        $form = copy_request($script, $corps, $suivant);
250
+        $info_action = _T('info_action', array('action' => "$action"));
251 251
 
252
-		return minipres($info_action, $form, $js);
253
-	}
252
+        return minipres($info_action, $form, $js);
253
+    }
254 254
 }
255 255
 
256 256
 /**
@@ -261,13 +261,13 @@  discard block
 block discarded – undo
261 261
  *     Nom de l'action (en base) qui a été exécutée
262 262
  **/
263 263
 function fin_admin($action) {
264
-	$signal = dir_admin() . fichier_admin($action);
265
-	spip_unlink($signal);
266
-	if ($action != 'delete_all') {
267
-		effacer_meta($action);
268
-		effacer_meta('admin');
269
-		spip_log("efface les meta admin et $action ");
270
-	}
264
+    $signal = dir_admin() . fichier_admin($action);
265
+    spip_unlink($signal);
266
+    if ($action != 'delete_all') {
267
+        effacer_meta($action);
268
+        effacer_meta('admin');
269
+        spip_log("efface les meta admin et $action ");
270
+    }
271 271
 }
272 272
 
273 273
 /**
@@ -286,14 +286,14 @@  discard block
 block discarded – undo
286 286
  *     Code HTML du formulaire
287 287
  **/
288 288
 function copy_request($script, $suite, $submit = '') {
289
-	include_spip('inc/filtres');
290
-	foreach (array_merge($_POST, $_GET) as $n => $c) {
291
-		if (!in_array($n, array('fichier', 'exec', 'validation_admin')) and !is_array($c)) {
292
-			$suite .= "\n<input type='hidden' name='" . spip_htmlspecialchars($n) . "' value='" .
293
-				entites_html($c) .
294
-				"'  />";
295
-		}
296
-	}
289
+    include_spip('inc/filtres');
290
+    foreach (array_merge($_POST, $_GET) as $n => $c) {
291
+        if (!in_array($n, array('fichier', 'exec', 'validation_admin')) and !is_array($c)) {
292
+            $suite .= "\n<input type='hidden' name='" . spip_htmlspecialchars($n) . "' value='" .
293
+                entites_html($c) .
294
+                "'  />";
295
+        }
296
+    }
297 297
 
298
-	return generer_form_ecrire($script, $suite, '', $submit);
298
+    return generer_form_ecrire($script, $suite, '', $submit);
299 299
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -54,7 +54,7 @@  discard block
 block discarded – undo
54 54
 		if ($res) {
55 55
 			return $res;
56 56
 		}
57
-		spip_log("meta: $script " . print_r($_POST, true));
57
+		spip_log("meta: $script ".print_r($_POST, true));
58 58
 		ecrire_meta($script, serialize($_POST));
59 59
 	}
60 60
 
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
 	}
123 123
 	// on pourrait statuer automatiquement les webmestres a l'init d'une action auth par ftp ... ?
124 124
 
125
-	spip_log("admin $pref" . ($valeur ? ' (reprise)' : ' (init)'), $journal);
125
+	spip_log("admin $pref".($valeur ? ' (reprise)' : ' (init)'), $journal);
126 126
 
127 127
 	return '';
128 128
 }
@@ -140,7 +140,7 @@  discard block
 block discarded – undo
140 140
 	if (autoriser('configurer')) {
141 141
 		return _DIR_TMP;
142 142
 	} else {
143
-		return _DIR_TRANSFERT . $GLOBALS['visiteur_session']['login'] . '/';
143
+		return _DIR_TRANSFERT.$GLOBALS['visiteur_session']['login'].'/';
144 144
 	}
145 145
 }
146 146
 
@@ -158,8 +158,8 @@  discard block
 block discarded – undo
158 158
  *     Nom du fichier
159 159
  **/
160 160
 function fichier_admin($action, $pref = 'admin_') {
161
-	return $pref .
162
-	substr(md5($action . (time() & ~2047) . $GLOBALS['visiteur_session']['login']), 0, 10);
161
+	return $pref.
162
+	substr(md5($action.(time() & ~2047).$GLOBALS['visiteur_session']['login']), 0, 10);
163 163
 }
164 164
 
165 165
 /**
@@ -192,7 +192,7 @@  discard block
 block discarded – undo
192 192
 	} else {
193 193
 		$dir = dir_admin();
194 194
 		$signal = fichier_admin($script);
195
-		if (@file_exists($dir . $signal)) {
195
+		if (@file_exists($dir.$signal)) {
196 196
 			spip_log("Action admin: $action");
197 197
 
198 198
 			return '';
@@ -209,7 +209,7 @@  discard block
 block discarded – undo
209 209
 
210 210
 				return '';
211 211
 			}
212
-			$corps .= '<input type="hidden" name="validation_admin" value="' . $signal . '" />';
212
+			$corps .= '<input type="hidden" name="validation_admin" value="'.$signal.'" />';
213 213
 			$suivant = _T('bouton_valider');
214 214
 			$js = '';
215 215
 		} else {
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
 				. "</legend>\n<label for='fichier'>"
225 225
 				. _T('info_creer_repertoire')
226 226
 				. "</label>\n"
227
-				. "<span id='signal' class='formo'>" . $signal . '</span>'
227
+				. "<span id='signal' class='formo'>".$signal.'</span>'
228 228
 				. "<input type='hidden' id='fichier' name='fichier' value='"
229 229
 				. $signal
230 230
 				. "' />"
@@ -261,7 +261,7 @@  discard block
 block discarded – undo
261 261
  *     Nom de l'action (en base) qui a été exécutée
262 262
  **/
263 263
 function fin_admin($action) {
264
-	$signal = dir_admin() . fichier_admin($action);
264
+	$signal = dir_admin().fichier_admin($action);
265 265
 	spip_unlink($signal);
266 266
 	if ($action != 'delete_all') {
267 267
 		effacer_meta($action);
@@ -289,8 +289,8 @@  discard block
 block discarded – undo
289 289
 	include_spip('inc/filtres');
290 290
 	foreach (array_merge($_POST, $_GET) as $n => $c) {
291 291
 		if (!in_array($n, array('fichier', 'exec', 'validation_admin')) and !is_array($c)) {
292
-			$suite .= "\n<input type='hidden' name='" . spip_htmlspecialchars($n) . "' value='" .
293
-				entites_html($c) .
292
+			$suite .= "\n<input type='hidden' name='".spip_htmlspecialchars($n)."' value='".
293
+				entites_html($c).
294 294
 				"'  />";
295 295
 		}
296 296
 	}
Please login to merge, or discard this patch.
ecrire/lang/spip_fr.php 1 patch
Indentation   +666 added lines, -666 removed lines patch added patch discarded remove patch
@@ -2,247 +2,247 @@  discard block
 block discarded – undo
2 2
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
3 3
 // Fichier source, a modifier dans https://git.spip.net/spip/spip.git
4 4
 if (!defined('_ECRIRE_INC_VERSION')) {
5
-	return;
5
+    return;
6 6
 }
7 7
 
8 8
 $GLOBALS[$GLOBALS['idx_lang']] = array(
9 9
 
10
-	// A
11
-	'access_interface_graphique' => 'Retour à l’interface graphique complète',
12
-	'access_mode_texte' => 'Afficher l’interface textuelle simplifiée',
13
-	'admin_debug' => 'debug',
14
-	'admin_modifier_article' => 'Modifier cet article',
15
-	'admin_modifier_auteur' => 'Modifier cet auteur',
16
-	'admin_modifier_breve' => 'Modifier cette brève',
17
-	'admin_modifier_mot' => 'Modifier ce mot-clé',
18
-	'admin_modifier_rubrique' => 'Modifier cette rubrique',
19
-	'admin_recalculer' => 'Recalculer cette page',
20
-	'afficher_calendrier' => 'Afficher le calendrier',
21
-	'afficher_trad' => 'afficher les traductions',
22
-	'alerte_maj_impossible' => '<b>Alerte !</b> La mise à jour de la base SQL vers la version @version@ est impossible, peut-être à cause d’un problème de droit de modification sur la base de données. Veuillez contacter votre hébergeur.',
23
-	'alerte_modif_info_concourante' => 'ATTENTION : Cette information a été modifiée par ailleurs. La valeur actuelle est :',
24
-	'analyse_xml' => 'Analyse XML',
25
-	'annuler' => 'Annuler',
26
-	'antispam_champ_vide' => 'Veuillez laisser ce champ vide :',
27
-	'articles_recents' => 'Articles les plus récents',
28
-	'attention_champ_mini_nb_caractères' => 'Attention ! @nb@ caractères au minimum',
29
-	'avis_1_erreur_saisie' => 'Il y a 1 erreur dans votre saisie, veuillez vérifier les informations.',
30
-	'avis_archive_incorrect' => 'le fichier archive n’est pas un fichier SPIP',
31
-	'avis_archive_invalide' => 'le fichier archive n’est pas valide',
32
-	'avis_attention' => 'ATTENTION !',
33
-	'avis_champ_incorrect_type_objet' => 'Nom de champ incorrect @name@ pour objet de type @type@',
34
-	'avis_colonne_inexistante' => 'La colonne @col@ n’existe pas',
35
-	'avis_erreur' => 'Erreur : voir ci-dessous',
36
-	'avis_erreur_connexion' => 'Erreur de connexion',
37
-	'avis_erreur_cookie' => 'problème de cookie',
38
-	'avis_erreur_fonction_contexte' => 'Erreur de programmation. Cette fonction ne doit pas être appelée dans ce contexte.',
39
-	'avis_erreur_mysql' => 'Erreur SQL',
40
-	'avis_erreur_sauvegarde' => 'Erreur dans la sauvegarde (@type@ @id_objet@) !',
41
-	'avis_erreur_visiteur' => 'Problème d’accès à l’espace privé',
42
-	'avis_nb_erreurs_saisie' => 'Il y a @nb@ erreurs dans votre saisie, veuillez vérifier les informations.',
10
+    // A
11
+    'access_interface_graphique' => 'Retour à l’interface graphique complète',
12
+    'access_mode_texte' => 'Afficher l’interface textuelle simplifiée',
13
+    'admin_debug' => 'debug',
14
+    'admin_modifier_article' => 'Modifier cet article',
15
+    'admin_modifier_auteur' => 'Modifier cet auteur',
16
+    'admin_modifier_breve' => 'Modifier cette brève',
17
+    'admin_modifier_mot' => 'Modifier ce mot-clé',
18
+    'admin_modifier_rubrique' => 'Modifier cette rubrique',
19
+    'admin_recalculer' => 'Recalculer cette page',
20
+    'afficher_calendrier' => 'Afficher le calendrier',
21
+    'afficher_trad' => 'afficher les traductions',
22
+    'alerte_maj_impossible' => '<b>Alerte !</b> La mise à jour de la base SQL vers la version @version@ est impossible, peut-être à cause d’un problème de droit de modification sur la base de données. Veuillez contacter votre hébergeur.',
23
+    'alerte_modif_info_concourante' => 'ATTENTION : Cette information a été modifiée par ailleurs. La valeur actuelle est :',
24
+    'analyse_xml' => 'Analyse XML',
25
+    'annuler' => 'Annuler',
26
+    'antispam_champ_vide' => 'Veuillez laisser ce champ vide :',
27
+    'articles_recents' => 'Articles les plus récents',
28
+    'attention_champ_mini_nb_caractères' => 'Attention ! @nb@ caractères au minimum',
29
+    'avis_1_erreur_saisie' => 'Il y a 1 erreur dans votre saisie, veuillez vérifier les informations.',
30
+    'avis_archive_incorrect' => 'le fichier archive n’est pas un fichier SPIP',
31
+    'avis_archive_invalide' => 'le fichier archive n’est pas valide',
32
+    'avis_attention' => 'ATTENTION !',
33
+    'avis_champ_incorrect_type_objet' => 'Nom de champ incorrect @name@ pour objet de type @type@',
34
+    'avis_colonne_inexistante' => 'La colonne @col@ n’existe pas',
35
+    'avis_erreur' => 'Erreur : voir ci-dessous',
36
+    'avis_erreur_connexion' => 'Erreur de connexion',
37
+    'avis_erreur_cookie' => 'problème de cookie',
38
+    'avis_erreur_fonction_contexte' => 'Erreur de programmation. Cette fonction ne doit pas être appelée dans ce contexte.',
39
+    'avis_erreur_mysql' => 'Erreur SQL',
40
+    'avis_erreur_sauvegarde' => 'Erreur dans la sauvegarde (@type@ @id_objet@) !',
41
+    'avis_erreur_visiteur' => 'Problème d’accès à l’espace privé',
42
+    'avis_nb_erreurs_saisie' => 'Il y a @nb@ erreurs dans votre saisie, veuillez vérifier les informations.',
43 43
 
44
-	// B
45
-	'barre_a_accent_grave' => 'Insérer un A accent grave majuscule',
46
-	'barre_aide' => 'Utilisez les raccourcis typographiques pour enrichir votre mise en page',
47
-	'barre_e_accent_aigu' => 'Insérer un E accent aigu majuscule',
48
-	'barre_eo' => 'Insérer un E dans l’O',
49
-	'barre_eo_maj' => 'Insérer un E dans l’O majuscule',
50
-	'barre_euro' => 'Insérer le symbole €',
51
-	'barre_gras' => 'Mettre en {{gras}}',
52
-	'barre_guillemets' => 'Entourer de « guillemets »',
53
-	'barre_guillemets_simples' => 'Entourer de “guillemets de second niveau”',
54
-	'barre_intertitre' => 'Transformer en {{{intertitre}}}',
55
-	'barre_italic' => 'Mettre en {italique}',
56
-	'barre_lien' => 'Transformer en [lien hypertexte->http://...]',
57
-	'barre_lien_input' => 'Veuillez indiquer l’adresse de votre lien (vous pouvez indiquer une adresse Web sous la forme http://www.monsite/com ou simplement indiquer le numéro d’un article de ce site.',
58
-	'barre_note' => 'Transformer en [[Note de bas de page]]',
59
-	'barre_paragraphe' => 'Créer un paragraphe',
60
-	'barre_quote' => '<quote>Citer un message</quote>',
61
-	'bouton_changer' => 'Changer',
62
-	'bouton_chercher' => 'Chercher',
63
-	'bouton_choisir' => 'Choisir',
64
-	'bouton_deplacer' => 'Déplacer',
65
-	'bouton_download' => 'Télécharger',
66
-	'bouton_enregistrer' => 'Enregistrer',
67
-	'bouton_radio_desactiver_messagerie_interne' => 'Désactiver la messagerie interne',
68
-	'bouton_radio_envoi_annonces' => 'Envoyer les annonces éditoriales',
69
-	'bouton_radio_non_envoi_annonces' => 'Ne pas envoyer d’annonces',
70
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
71
-	'bouton_recharger_page' => 'recharger cette page',
72
-	'bouton_telecharger' => 'Télécharger',
73
-	'bouton_upload' => 'Téléverser',
74
-	'bouton_valider' => 'Valider',
44
+    // B
45
+    'barre_a_accent_grave' => 'Insérer un A accent grave majuscule',
46
+    'barre_aide' => 'Utilisez les raccourcis typographiques pour enrichir votre mise en page',
47
+    'barre_e_accent_aigu' => 'Insérer un E accent aigu majuscule',
48
+    'barre_eo' => 'Insérer un E dans l’O',
49
+    'barre_eo_maj' => 'Insérer un E dans l’O majuscule',
50
+    'barre_euro' => 'Insérer le symbole €',
51
+    'barre_gras' => 'Mettre en {{gras}}',
52
+    'barre_guillemets' => 'Entourer de « guillemets »',
53
+    'barre_guillemets_simples' => 'Entourer de “guillemets de second niveau”',
54
+    'barre_intertitre' => 'Transformer en {{{intertitre}}}',
55
+    'barre_italic' => 'Mettre en {italique}',
56
+    'barre_lien' => 'Transformer en [lien hypertexte->http://...]',
57
+    'barre_lien_input' => 'Veuillez indiquer l’adresse de votre lien (vous pouvez indiquer une adresse Web sous la forme http://www.monsite/com ou simplement indiquer le numéro d’un article de ce site.',
58
+    'barre_note' => 'Transformer en [[Note de bas de page]]',
59
+    'barre_paragraphe' => 'Créer un paragraphe',
60
+    'barre_quote' => '<quote>Citer un message</quote>',
61
+    'bouton_changer' => 'Changer',
62
+    'bouton_chercher' => 'Chercher',
63
+    'bouton_choisir' => 'Choisir',
64
+    'bouton_deplacer' => 'Déplacer',
65
+    'bouton_download' => 'Télécharger',
66
+    'bouton_enregistrer' => 'Enregistrer',
67
+    'bouton_radio_desactiver_messagerie_interne' => 'Désactiver la messagerie interne',
68
+    'bouton_radio_envoi_annonces' => 'Envoyer les annonces éditoriales',
69
+    'bouton_radio_non_envoi_annonces' => 'Ne pas envoyer d’annonces',
70
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
71
+    'bouton_recharger_page' => 'recharger cette page',
72
+    'bouton_telecharger' => 'Télécharger',
73
+    'bouton_upload' => 'Téléverser',
74
+    'bouton_valider' => 'Valider',
75 75
 
76
-	// C
77
-	'cal_apresmidi' => 'après-midi',
78
-	'cal_jour_entier' => 'jour entier',
79
-	'cal_matin' => 'matin',
80
-	'cal_par_jour' => 'calendrier par jour',
81
-	'cal_par_mois' => 'calendrier par mois',
82
-	'cal_par_semaine' => 'calendrier par semaine',
83
-	'choix_couleur_interface' => 'couleur ',
84
-	'choix_interface' => 'choix  de l’interface',
85
-	'colonne' => 'Colonne',
86
-	'confirm_changer_statut' => 'Attention, vous avez demandé à changer le statut de cet élément. Souhaitez-vous continuer ?',
87
-	'correcte' => 'correcte', # chaine utilisée dans le debugueur : "validation .. impossible" ou "validation .. correcte"
76
+    // C
77
+    'cal_apresmidi' => 'après-midi',
78
+    'cal_jour_entier' => 'jour entier',
79
+    'cal_matin' => 'matin',
80
+    'cal_par_jour' => 'calendrier par jour',
81
+    'cal_par_mois' => 'calendrier par mois',
82
+    'cal_par_semaine' => 'calendrier par semaine',
83
+    'choix_couleur_interface' => 'couleur ',
84
+    'choix_interface' => 'choix  de l’interface',
85
+    'colonne' => 'Colonne',
86
+    'confirm_changer_statut' => 'Attention, vous avez demandé à changer le statut de cet élément. Souhaitez-vous continuer ?',
87
+    'correcte' => 'correcte', # chaine utilisée dans le debugueur : "validation .. impossible" ou "validation .. correcte"
88 88
 
89
-	// D
90
-	'date_aujourdhui' => 'aujourd’hui',
91
-	'date_avant_jc' => 'av. J.C.',
92
-	'date_dans' => 'dans @delai@',
93
-	'date_de_mois_1' => '@j@ @nommois@',
94
-	'date_de_mois_10' => '@j@ @nommois@',
95
-	'date_de_mois_11' => '@j@ @nommois@',
96
-	'date_de_mois_12' => '@j@ @nommois@',
97
-	'date_de_mois_2' => '@j@ @nommois@',
98
-	'date_de_mois_3' => '@j@ @nommois@',
99
-	'date_de_mois_4' => '@j@ @nommois@',
100
-	'date_de_mois_5' => '@j@ @nommois@',
101
-	'date_de_mois_6' => '@j@ @nommois@',
102
-	'date_de_mois_7' => '@j@ @nommois@',
103
-	'date_de_mois_8' => '@j@ @nommois@',
104
-	'date_de_mois_9' => '@j@ @nommois@',
105
-	'date_demain' => 'demain',
106
-	'date_fmt_heures_minutes' => '@h@h@m@min',
107
-	'date_fmt_heures_minutes_court' => '@h@h@m@',
108
-	'date_fmt_jour' => '@nomjour@ @jour@',
109
-	'date_fmt_jour_heure' => '@jour@ à @heure@',
110
-	'date_fmt_jour_heure_debut_fin' => '@jour@ de @heure_debut@ à @heure_fin@',
111
-	'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ de @heure_debut@@dtabbr@ à @dtend@@heure_fin@@dtabbr@',
112
-	'date_fmt_jour_mois' => '@jour@ @nommois@',
113
-	'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
114
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
115
-	'date_fmt_nomjour' => '@nomjour@ @date@',
116
-	'date_fmt_nomjour_date' => 'le @nomjour@ @date@',
117
-	'date_fmt_periode' => 'Du @date_debut@ au @date_fin@',
118
-	'date_fmt_periode_abbr' => 'Du @dtart@@date_debut@@dtabbr@ au @dtend@@date_fin@@dtabbr@',
119
-	'date_fmt_periode_from' => 'Du',
120
-	'date_fmt_periode_to' => 'au',
121
-	'date_fmt_saison_annee' => '@saison@ @annee@',
122
-	'date_heures' => 'heures',
123
-	'date_hier' => 'hier',
124
-	'date_il_y_a' => 'il y a @delai@',
125
-	'date_jnum1' => '1er',
126
-	'date_jnum10' => '10',
127
-	'date_jnum11' => '11',
128
-	'date_jnum12' => '12',
129
-	'date_jnum13' => '13',
130
-	'date_jnum14' => '14',
131
-	'date_jnum15' => '15',
132
-	'date_jnum16' => '16',
133
-	'date_jnum17' => '17',
134
-	'date_jnum18' => '18',
135
-	'date_jnum19' => '19',
136
-	'date_jnum2' => '2',
137
-	'date_jnum20' => '20',
138
-	'date_jnum21' => '21',
139
-	'date_jnum22' => '22',
140
-	'date_jnum23' => '23',
141
-	'date_jnum24' => '24',
142
-	'date_jnum25' => '25',
143
-	'date_jnum26' => '26',
144
-	'date_jnum27' => '27',
145
-	'date_jnum28' => '28',
146
-	'date_jnum29' => '29',
147
-	'date_jnum3' => '3',
148
-	'date_jnum30' => '30',
149
-	'date_jnum31' => '31',
150
-	'date_jnum4' => '4',
151
-	'date_jnum5' => '5',
152
-	'date_jnum6' => '6',
153
-	'date_jnum7' => '7',
154
-	'date_jnum8' => '8',
155
-	'date_jnum9' => '9',
156
-	'date_jour_1' => 'dimanche',
157
-	'date_jour_1_abbr' => 'dim.',
158
-	'date_jour_1_initiale' => 'd.',
159
-	'date_jour_2' => 'lundi',
160
-	'date_jour_2_abbr' => 'lun.',
161
-	'date_jour_2_initiale' => 'l.',
162
-	'date_jour_3' => 'mardi',
163
-	'date_jour_3_abbr' => 'mar.',
164
-	'date_jour_3_initiale' => 'm.',
165
-	'date_jour_4' => 'mercredi',
166
-	'date_jour_4_abbr' => 'mer.',
167
-	'date_jour_4_initiale' => 'm.',
168
-	'date_jour_5' => 'jeudi',
169
-	'date_jour_5_abbr' => 'jeu.',
170
-	'date_jour_5_initiale' => 'j.',
171
-	'date_jour_6' => 'vendredi',
172
-	'date_jour_6_abbr' => 'ven.',
173
-	'date_jour_6_initiale' => 'v.',
174
-	'date_jour_7' => 'samedi',
175
-	'date_jour_7_abbr' => 'sam.',
176
-	'date_jour_7_initiale' => 's.',
177
-	'date_jours' => 'jours',
178
-	'date_minutes' => 'minutes',
179
-	'date_mois' => 'mois',
180
-	'date_mois_1' => 'janvier',
181
-	'date_mois_10' => 'octobre',
182
-	'date_mois_10_abbr' => 'oct.',
183
-	'date_mois_11' => 'novembre',
184
-	'date_mois_11_abbr' => 'nov.',
185
-	'date_mois_12' => 'décembre',
186
-	'date_mois_12_abbr' => 'déc.',
187
-	'date_mois_1_abbr' => 'janv.',
188
-	'date_mois_2' => 'février',
189
-	'date_mois_2_abbr' => 'févr.',
190
-	'date_mois_3' => 'mars',
191
-	'date_mois_3_abbr' => 'mars',
192
-	'date_mois_4' => 'avril',
193
-	'date_mois_4_abbr' => 'avr.',
194
-	'date_mois_5' => 'mai',
195
-	'date_mois_5_abbr' => 'mai',
196
-	'date_mois_6' => 'juin',
197
-	'date_mois_6_abbr' => 'juin',
198
-	'date_mois_7' => 'juillet',
199
-	'date_mois_7_abbr' => 'juil.',
200
-	'date_mois_8' => 'août',
201
-	'date_mois_8_abbr' => 'août',
202
-	'date_mois_9' => 'septembre',
203
-	'date_mois_9_abbr' => 'sept.',
204
-	'date_saison_1' => 'hiver',
205
-	'date_saison_2' => 'printemps',
206
-	'date_saison_3' => 'été',
207
-	'date_saison_4' => 'automne',
208
-	'date_secondes' => 'secondes',
209
-	'date_semaines' => 'semaines',
210
-	'date_un_mois' => 'mois',
211
-	'date_une_heure' => 'heure',
212
-	'date_une_minute' => 'minute',
213
-	'date_une_seconde' => 'seconde',
214
-	'date_une_semaine' => 'semaine',
215
-	'dirs_commencer' => ' afin de commencer réellement l’installation',
216
-	'dirs_preliminaire' => 'Préliminaire : <b>Régler les droits d’accès</b>',
217
-	'dirs_probleme_droits' => 'Problème de droits d’accès',
218
-	'dirs_repertoires_absents' => '<p><b>Les répertoires suivants n’ont pas été trouvés :</b></p><ul>@bad_dirs@</ul>
89
+    // D
90
+    'date_aujourdhui' => 'aujourd’hui',
91
+    'date_avant_jc' => 'av. J.C.',
92
+    'date_dans' => 'dans @delai@',
93
+    'date_de_mois_1' => '@j@ @nommois@',
94
+    'date_de_mois_10' => '@j@ @nommois@',
95
+    'date_de_mois_11' => '@j@ @nommois@',
96
+    'date_de_mois_12' => '@j@ @nommois@',
97
+    'date_de_mois_2' => '@j@ @nommois@',
98
+    'date_de_mois_3' => '@j@ @nommois@',
99
+    'date_de_mois_4' => '@j@ @nommois@',
100
+    'date_de_mois_5' => '@j@ @nommois@',
101
+    'date_de_mois_6' => '@j@ @nommois@',
102
+    'date_de_mois_7' => '@j@ @nommois@',
103
+    'date_de_mois_8' => '@j@ @nommois@',
104
+    'date_de_mois_9' => '@j@ @nommois@',
105
+    'date_demain' => 'demain',
106
+    'date_fmt_heures_minutes' => '@h@h@m@min',
107
+    'date_fmt_heures_minutes_court' => '@h@h@m@',
108
+    'date_fmt_jour' => '@nomjour@ @jour@',
109
+    'date_fmt_jour_heure' => '@jour@ à @heure@',
110
+    'date_fmt_jour_heure_debut_fin' => '@jour@ de @heure_debut@ à @heure_fin@',
111
+    'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ de @heure_debut@@dtabbr@ à @dtend@@heure_fin@@dtabbr@',
112
+    'date_fmt_jour_mois' => '@jour@ @nommois@',
113
+    'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
114
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
115
+    'date_fmt_nomjour' => '@nomjour@ @date@',
116
+    'date_fmt_nomjour_date' => 'le @nomjour@ @date@',
117
+    'date_fmt_periode' => 'Du @date_debut@ au @date_fin@',
118
+    'date_fmt_periode_abbr' => 'Du @dtart@@date_debut@@dtabbr@ au @dtend@@date_fin@@dtabbr@',
119
+    'date_fmt_periode_from' => 'Du',
120
+    'date_fmt_periode_to' => 'au',
121
+    'date_fmt_saison_annee' => '@saison@ @annee@',
122
+    'date_heures' => 'heures',
123
+    'date_hier' => 'hier',
124
+    'date_il_y_a' => 'il y a @delai@',
125
+    'date_jnum1' => '1er',
126
+    'date_jnum10' => '10',
127
+    'date_jnum11' => '11',
128
+    'date_jnum12' => '12',
129
+    'date_jnum13' => '13',
130
+    'date_jnum14' => '14',
131
+    'date_jnum15' => '15',
132
+    'date_jnum16' => '16',
133
+    'date_jnum17' => '17',
134
+    'date_jnum18' => '18',
135
+    'date_jnum19' => '19',
136
+    'date_jnum2' => '2',
137
+    'date_jnum20' => '20',
138
+    'date_jnum21' => '21',
139
+    'date_jnum22' => '22',
140
+    'date_jnum23' => '23',
141
+    'date_jnum24' => '24',
142
+    'date_jnum25' => '25',
143
+    'date_jnum26' => '26',
144
+    'date_jnum27' => '27',
145
+    'date_jnum28' => '28',
146
+    'date_jnum29' => '29',
147
+    'date_jnum3' => '3',
148
+    'date_jnum30' => '30',
149
+    'date_jnum31' => '31',
150
+    'date_jnum4' => '4',
151
+    'date_jnum5' => '5',
152
+    'date_jnum6' => '6',
153
+    'date_jnum7' => '7',
154
+    'date_jnum8' => '8',
155
+    'date_jnum9' => '9',
156
+    'date_jour_1' => 'dimanche',
157
+    'date_jour_1_abbr' => 'dim.',
158
+    'date_jour_1_initiale' => 'd.',
159
+    'date_jour_2' => 'lundi',
160
+    'date_jour_2_abbr' => 'lun.',
161
+    'date_jour_2_initiale' => 'l.',
162
+    'date_jour_3' => 'mardi',
163
+    'date_jour_3_abbr' => 'mar.',
164
+    'date_jour_3_initiale' => 'm.',
165
+    'date_jour_4' => 'mercredi',
166
+    'date_jour_4_abbr' => 'mer.',
167
+    'date_jour_4_initiale' => 'm.',
168
+    'date_jour_5' => 'jeudi',
169
+    'date_jour_5_abbr' => 'jeu.',
170
+    'date_jour_5_initiale' => 'j.',
171
+    'date_jour_6' => 'vendredi',
172
+    'date_jour_6_abbr' => 'ven.',
173
+    'date_jour_6_initiale' => 'v.',
174
+    'date_jour_7' => 'samedi',
175
+    'date_jour_7_abbr' => 'sam.',
176
+    'date_jour_7_initiale' => 's.',
177
+    'date_jours' => 'jours',
178
+    'date_minutes' => 'minutes',
179
+    'date_mois' => 'mois',
180
+    'date_mois_1' => 'janvier',
181
+    'date_mois_10' => 'octobre',
182
+    'date_mois_10_abbr' => 'oct.',
183
+    'date_mois_11' => 'novembre',
184
+    'date_mois_11_abbr' => 'nov.',
185
+    'date_mois_12' => 'décembre',
186
+    'date_mois_12_abbr' => 'déc.',
187
+    'date_mois_1_abbr' => 'janv.',
188
+    'date_mois_2' => 'février',
189
+    'date_mois_2_abbr' => 'févr.',
190
+    'date_mois_3' => 'mars',
191
+    'date_mois_3_abbr' => 'mars',
192
+    'date_mois_4' => 'avril',
193
+    'date_mois_4_abbr' => 'avr.',
194
+    'date_mois_5' => 'mai',
195
+    'date_mois_5_abbr' => 'mai',
196
+    'date_mois_6' => 'juin',
197
+    'date_mois_6_abbr' => 'juin',
198
+    'date_mois_7' => 'juillet',
199
+    'date_mois_7_abbr' => 'juil.',
200
+    'date_mois_8' => 'août',
201
+    'date_mois_8_abbr' => 'août',
202
+    'date_mois_9' => 'septembre',
203
+    'date_mois_9_abbr' => 'sept.',
204
+    'date_saison_1' => 'hiver',
205
+    'date_saison_2' => 'printemps',
206
+    'date_saison_3' => 'été',
207
+    'date_saison_4' => 'automne',
208
+    'date_secondes' => 'secondes',
209
+    'date_semaines' => 'semaines',
210
+    'date_un_mois' => 'mois',
211
+    'date_une_heure' => 'heure',
212
+    'date_une_minute' => 'minute',
213
+    'date_une_seconde' => 'seconde',
214
+    'date_une_semaine' => 'semaine',
215
+    'dirs_commencer' => ' afin de commencer réellement l’installation',
216
+    'dirs_preliminaire' => 'Préliminaire : <b>Régler les droits d’accès</b>',
217
+    'dirs_probleme_droits' => 'Problème de droits d’accès',
218
+    'dirs_repertoires_absents' => '<p><b>Les répertoires suivants n’ont pas été trouvés :</b></p><ul>@bad_dirs@</ul>
219 219
   <p>Il est probable que cela soit dû à un problème de mauvaise mise en majuscules ou minuscules.
220 220
   Vérifiez que les minuscules et majuscules de ces répertoires concordent bien avec ce qui est affiché
221 221
   ci-dessus ; si ce n’est pas le cas, renommez les répertoires avec votre logiciel FTP de façon à corriger l’erreur.</p>
222 222
   <p>Une fois cette manipulation effectuée, vous pourrez ',
223
-	'dirs_repertoires_suivants' => '<p><b>Les répertoires suivants ne sont pas accessibles en écriture :</b></p> <ul>@bad_dirs@</ul>
223
+    'dirs_repertoires_suivants' => '<p><b>Les répertoires suivants ne sont pas accessibles en écriture :</b></p> <ul>@bad_dirs@</ul>
224 224
   <p>Pour y remédier, utilisez votre client FTP afin de régler les droits d’accès de chacun
225 225
   de ces répertoires. La procédure est expliquée en détail dans le guide d’installation.</p>
226 226
   <p>Une fois cette manipulation effectuée, vous pourrez ',
227
-	'double_occurrence' => 'Double occurrence de @balise@',
227
+    'double_occurrence' => 'Double occurrence de @balise@',
228 228
 
229
-	// E
230
-	'en_cours' => 'en cours',
231
-	'envoi_via_le_site' => 'Envoi via le site',
232
-	'erreur' => 'Erreur',
233
-	'erreur_balise_non_fermee' => 'dernière balise non refermée :',
234
-	'erreur_technique_ajaxform' => 'Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.',
235
-	'erreur_technique_enregistrement_champs' => 'Une erreur technique a empêché l’enregistrement correct du champ @champs@.',
236
-	'erreur_technique_enregistrement_impossible' => 'Une erreur technique a empêché l’enregistrement.',
237
-	'erreur_texte' => 'erreur(s)',
238
-	'etape' => 'Étape',
229
+    // E
230
+    'en_cours' => 'en cours',
231
+    'envoi_via_le_site' => 'Envoi via le site',
232
+    'erreur' => 'Erreur',
233
+    'erreur_balise_non_fermee' => 'dernière balise non refermée :',
234
+    'erreur_technique_ajaxform' => 'Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.',
235
+    'erreur_technique_enregistrement_champs' => 'Une erreur technique a empêché l’enregistrement correct du champ @champs@.',
236
+    'erreur_technique_enregistrement_impossible' => 'Une erreur technique a empêché l’enregistrement.',
237
+    'erreur_texte' => 'erreur(s)',
238
+    'etape' => 'Étape',
239 239
 
240
-	// F
241
-	'fichier_introuvable' => 'Fichier @fichier@ introuvable',
242
-	'form_auteur_confirmation' => 'Confirmez votre adresse email',
243
-	'form_auteur_email_modifie' => 'Votre adresse email a été modifiée.',
244
-	'form_auteur_envoi_mail_confirmation' => 'Un courrier électronique de confirmation vient d’être envoyé à @email@. Vous devrez visiter l’adresse Web mentionnée dans ce courrier pour valider votre adresse mail.',
245
-	'form_auteur_mail_confirmation' => 'Bonjour,
240
+    // F
241
+    'fichier_introuvable' => 'Fichier @fichier@ introuvable',
242
+    'form_auteur_confirmation' => 'Confirmez votre adresse email',
243
+    'form_auteur_email_modifie' => 'Votre adresse email a été modifiée.',
244
+    'form_auteur_envoi_mail_confirmation' => 'Un courrier électronique de confirmation vient d’être envoyé à @email@. Vous devrez visiter l’adresse Web mentionnée dans ce courrier pour valider votre adresse mail.',
245
+    'form_auteur_mail_confirmation' => 'Bonjour,
246 246
 
247 247
 Vous avez demandé à changer votre adresse email.
248 248
 Pour confirmer votre nouvelle adresse, il suffit de vous connecter à
@@ -251,345 +251,345 @@  discard block
 block discarded – undo
251 251
 
252 252
     @url@
253 253
 ',
254
-	'form_deja_inscrit' => 'Vous êtes déjà inscrit.',
255
-	'form_email_non_valide' => 'Votre adresse email n’est pas valide.',
256
-	'form_forum_access_refuse' => 'Vous n’avez plus accès à ce site.',
257
-	'form_forum_bonjour' => 'Bonjour @nom@,',
258
-	'form_forum_confirmer_email' => 'Pour confirmer votre adresse email, rendez-vous à cette adresse : @url_confirm@',
259
-	'form_forum_email_deja_enregistre' => 'Cette adresse email est déjà enregistrée, vous pouvez donc utiliser votre mot de passe habituel.',
260
-	'form_forum_identifiant_mail' => 'Votre nouvel identifiant vient de vous être envoyé par email.',
261
-	'form_forum_identifiants' => 'Identifiants personnels',
262
-	'form_forum_indiquer_nom_email' => 'Indiquez ici votre nom et votre adresse email. Votre identifiant personnel vous parviendra rapidement, par courrier électronique.',
263
-	'form_forum_login' => 'login :',
264
-	'form_forum_message_auto' => '(ceci est un message automatique)',
265
-	'form_forum_pass' => 'mot de passe :',
266
-	'form_forum_probleme_mail' => 'Problème de mail : l’identifiant ne peut pas être envoyé.',
267
-	'form_forum_voici1' => 'Voici vos identifiants pour pouvoir participer à la vie du site "@nom_site_spip@" (@adresse_site@) :',
268
-	'form_forum_voici2' => 'Voici vos identifiants pour proposer des articles sur
254
+    'form_deja_inscrit' => 'Vous êtes déjà inscrit.',
255
+    'form_email_non_valide' => 'Votre adresse email n’est pas valide.',
256
+    'form_forum_access_refuse' => 'Vous n’avez plus accès à ce site.',
257
+    'form_forum_bonjour' => 'Bonjour @nom@,',
258
+    'form_forum_confirmer_email' => 'Pour confirmer votre adresse email, rendez-vous à cette adresse : @url_confirm@',
259
+    'form_forum_email_deja_enregistre' => 'Cette adresse email est déjà enregistrée, vous pouvez donc utiliser votre mot de passe habituel.',
260
+    'form_forum_identifiant_mail' => 'Votre nouvel identifiant vient de vous être envoyé par email.',
261
+    'form_forum_identifiants' => 'Identifiants personnels',
262
+    'form_forum_indiquer_nom_email' => 'Indiquez ici votre nom et votre adresse email. Votre identifiant personnel vous parviendra rapidement, par courrier électronique.',
263
+    'form_forum_login' => 'login :',
264
+    'form_forum_message_auto' => '(ceci est un message automatique)',
265
+    'form_forum_pass' => 'mot de passe :',
266
+    'form_forum_probleme_mail' => 'Problème de mail : l’identifiant ne peut pas être envoyé.',
267
+    'form_forum_voici1' => 'Voici vos identifiants pour pouvoir participer à la vie du site "@nom_site_spip@" (@adresse_site@) :',
268
+    'form_forum_voici2' => 'Voici vos identifiants pour proposer des articles sur
269 269
 le site "@nom_site_spip@" (@adresse_login@) :',
270
-	'form_indiquer_email' => 'Veuillez indiquer votre adresse email.',
271
-	'form_indiquer_nom' => 'Veuillez indiquer votre nom.',
272
-	'form_indiquer_nom_site' => 'Veuillez indiquer le nom de votre site.',
273
-	'form_pet_deja_enregistre' => 'Ce site est déjà enregistré',
274
-	'form_pet_signature_pasprise' => 'Votre signature n’est pas prise en compte.',
275
-	'form_prop_confirmer_envoi' => 'Confirmer l’envoi',
276
-	'form_prop_description' => 'Description/commentaire',
277
-	'form_prop_enregistre' => 'Votre proposition est enregistrée, elle apparaîtra en ligne après validation par les responsables de ce site.',
278
-	'form_prop_envoyer' => 'Envoyer un message',
279
-	'form_prop_indiquer_email' => 'Veuillez indiquer une adresse email valide',
280
-	'form_prop_indiquer_nom_site' => 'Veuillez indiquer le nom du site.',
281
-	'form_prop_indiquer_sujet' => 'Veuillez indiquer un sujet',
282
-	'form_prop_message_envoye' => 'Message envoyé',
283
-	'form_prop_non_enregistre' => 'Votre proposition n’a pas été enregistrée.',
284
-	'form_prop_sujet' => 'Sujet',
285
-	'form_prop_url_site' => 'Adresse URL du site',
286
-	'format_date_attendu' => 'Saisir une date au format jj/mm/aaaa.',
287
-	'format_date_incorrecte' => 'La date ou son format est incorrect',
288
-	'format_heure_attendu' => 'Saisir une heure au format hh:mm.',
289
-	'format_heure_incorrecte' => 'L’heure ou son format est incorrect',
290
-	'forum_non_inscrit' => 'Vous n’êtes pas inscrit, ou l’adresse ou le mot de passe sont erronés.',
291
-	'forum_par_auteur' => 'par @auteur@',
292
-	'forum_titre_erreur' => 'Erreur...',
270
+    'form_indiquer_email' => 'Veuillez indiquer votre adresse email.',
271
+    'form_indiquer_nom' => 'Veuillez indiquer votre nom.',
272
+    'form_indiquer_nom_site' => 'Veuillez indiquer le nom de votre site.',
273
+    'form_pet_deja_enregistre' => 'Ce site est déjà enregistré',
274
+    'form_pet_signature_pasprise' => 'Votre signature n’est pas prise en compte.',
275
+    'form_prop_confirmer_envoi' => 'Confirmer l’envoi',
276
+    'form_prop_description' => 'Description/commentaire',
277
+    'form_prop_enregistre' => 'Votre proposition est enregistrée, elle apparaîtra en ligne après validation par les responsables de ce site.',
278
+    'form_prop_envoyer' => 'Envoyer un message',
279
+    'form_prop_indiquer_email' => 'Veuillez indiquer une adresse email valide',
280
+    'form_prop_indiquer_nom_site' => 'Veuillez indiquer le nom du site.',
281
+    'form_prop_indiquer_sujet' => 'Veuillez indiquer un sujet',
282
+    'form_prop_message_envoye' => 'Message envoyé',
283
+    'form_prop_non_enregistre' => 'Votre proposition n’a pas été enregistrée.',
284
+    'form_prop_sujet' => 'Sujet',
285
+    'form_prop_url_site' => 'Adresse URL du site',
286
+    'format_date_attendu' => 'Saisir une date au format jj/mm/aaaa.',
287
+    'format_date_incorrecte' => 'La date ou son format est incorrect',
288
+    'format_heure_attendu' => 'Saisir une heure au format hh:mm.',
289
+    'format_heure_incorrecte' => 'L’heure ou son format est incorrect',
290
+    'forum_non_inscrit' => 'Vous n’êtes pas inscrit, ou l’adresse ou le mot de passe sont erronés.',
291
+    'forum_par_auteur' => 'par @auteur@',
292
+    'forum_titre_erreur' => 'Erreur...',
293 293
 
294
-	// I
295
-	'ical_texte_rss_articles' => 'Le fichier « backend » des articles de ce site se trouve à l’adresse :',
296
-	'ical_texte_rss_articles2' => 'Vous pouvez également obtenir des fichiers « backend » pour les articles de chaque rubrique du site :',
297
-	'ical_texte_rss_breves' => 'Il existe de plus un fichier contenant les brèves du site. En précisant un numéro de rubrique, vous obtiendrez uniquement les brèves de cette rubrique.',
298
-	'icone_a_suivre' => 'À suivre',
299
-	'icone_admin_site' => 'Administration du site',
300
-	'icone_agenda' => 'Agenda',
301
-	'icone_aide_ligne' => 'Aide',
302
-	'icone_articles' => 'Articles',
303
-	'icone_auteurs' => 'Auteurs',
304
-	'icone_brouteur' => 'Navigation rapide',
305
-	'icone_configuration_site' => 'Configuration',
306
-	'icone_configurer_site' => 'Configurer votre site',
307
-	'icone_creer_nouvel_auteur' => 'Créer un nouvel auteur',
308
-	'icone_creer_rubrique' => 'Créer une rubrique',
309
-	'icone_creer_sous_rubrique' => 'Créer une sous-rubrique',
310
-	'icone_deconnecter' => 'Se déconnecter',
311
-	'icone_discussions' => 'Discussions',
312
-	'icone_doc_rubrique' => 'Documents des rubriques',
313
-	'icone_ecrire_article' => 'Écrire un nouvel article',
314
-	'icone_edition_site' => 'Édition',
315
-	'icone_gestion_langues' => 'Gestion des langues',
316
-	'icone_informations_personnelles' => 'Informations personnelles',
317
-	'icone_interface_complet' => 'interface complète',
318
-	'icone_interface_simple' => 'Interface simplifiée',
319
-	'icone_maintenance_site' => 'Maintenance du site',
320
-	'icone_messagerie_personnelle' => 'Messagerie personnelle',
321
-	'icone_repartition_debut' => 'Afficher la répartition depuis le début',
322
-	'icone_rubriques' => 'Rubriques',
323
-	'icone_sauver_site' => 'Sauvegarde du site',
324
-	'icone_site_entier' => 'Tout le site',
325
-	'icone_sites_references' => 'Sites référencés',
326
-	'icone_statistiques' => 'Statistiques du site',
327
-	'icone_suivi_activite' => 'Suivre la vie du site',
328
-	'icone_suivi_actualite' => 'Évolution du site',
329
-	'icone_suivi_pettions' => 'Suivre/gérer les pétitions',
330
-	'icone_suivi_revisions' => 'Modifications des articles',
331
-	'icone_supprimer_document' => 'Supprimer ce document',
332
-	'icone_supprimer_image' => 'Supprimer cette image',
333
-	'icone_tous_articles' => 'Tous vos articles',
334
-	'icone_tous_auteur' => 'Tous les auteurs',
335
-	'icone_tous_visiteur' => 'Tous les visiteurs',
336
-	'icone_visiter_site' => 'Voir le site public',
337
-	'icone_voir_en_ligne' => 'Voir en ligne',
338
-	'img_indisponible' => 'image indisponible',
339
-	'impossible' => 'impossible',
340
-	'info_a_suivre' => 'À SUIVRE »',
341
-	'info_acces_interdit' => 'Accès interdit',
342
-	'info_acces_refuse' => 'Accès refusé',
343
-	'info_action' => 'Action : @action@',
344
-	'info_administrer_rubriques' => 'Vous pouvez administrer cette rubrique et ses sous-rubriques',
345
-	'info_adresse_non_indiquee' => 'Vous n’avez pas indiqué d’adresse à tester !',
346
-	'info_aide' => 'AIDE :',
347
-	'info_ajouter_mot' => 'Ajouter ce mot',
348
-	'info_annonce' => 'ANNONCE',
349
-	'info_annonces_generales' => 'Annonces générales :',
350
-	'info_article_propose' => 'Article proposé',
351
-	'info_article_publie' => 'Article publié',
352
-	'info_article_redaction' => 'Article en cours de rédaction',
353
-	'info_article_refuse' => 'Article refusé',
354
-	'info_article_supprime' => 'Article supprimé',
355
-	'info_articles' => 'Articles',
356
-	'info_articles_a_valider' => 'Les articles à valider',
357
-	'info_articles_nb' => '@nb@ articles',
358
-	'info_articles_proposes' => 'Articles proposés',
359
-	'info_articles_un' => '1 article',
360
-	'info_auteurs_nombre' => 'auteur(s) :',
361
-	'info_authentification_ftp' => 'Authentification (par FTP).',
362
-	'info_breves_2' => 'brèves',
363
-	'info_breves_nb' => '@nb@ brèves',
364
-	'info_breves_un' => '1 brève',
365
-	'info_connexion_refusee' => 'Connexion refusée',
366
-	'info_contact_developpeur' => 'Veuillez contacter un développeur.',
367
-	'info_contenance' => 'Ce site contient :',
368
-	'info_contribution' => 'contributions',
369
-	'info_copyright' => '@spip@ est un logiciel libre distribué @lien_gpl@.',
370
-	'info_copyright_doc' => 'Pour plus d’informations, voir le site <a href="@spipnet@">@spipnet_affiche@</a>.',
371
-	'info_copyright_gpl' => 'sous licence GPL',
372
-	'info_cours_edition' => 'En cours de modification',
373
-	'info_creer_repertoire' => 'Veuillez créer un fichier ou un répertoire nommé :',
374
-	'info_creer_repertoire_2' => 'à l’intérieur du sous-répertoire <b>@repertoire@</b>, puis :',
375
-	'info_creer_vignette' => 'création automatique de la vignette',
376
-	'info_creerdansrubrique_non_autorise' => 'Vous n’avez pas de droits suffisants pour créer un contenu dans cette rubrique',
377
-	'info_deplier' => 'Déplier',
378
-	'info_descriptif_nombre' => 'descriptif(s) :',
379
-	'info_description' => 'Description :',
380
-	'info_description_2' => 'Description :',
381
-	'info_dimension' => 'Dimensions :',
382
-	'info_documents_nb' => '@nb@ documents',
383
-	'info_documents_un' => '1 document',
384
-	'info_ecire_message_prive' => 'Écrire un message privé',
385
-	'info_email_invalide' => 'Adresse email invalide.',
386
-	'info_en_cours_validation' => 'Vos articles en cours de rédaction',
387
-	'info_en_ligne' => 'Actuellement en ligne :',
388
-	'info_envoyer_message_prive' => 'Envoyer un message privé à cet auteur',
389
-	'info_erreur_requete' => 'Erreur dans la requête :',
390
-	'info_erreur_squelette2' => 'Aucun squelette <b>@fichier@</b> n’est disponible...',
391
-	'info_erreur_systeme' => 'Erreur système (errno @errsys@)',
392
-	'info_erreur_systeme2' => 'Le disque dur est peut-être plein, ou la base de données endommagée.<br />
294
+    // I
295
+    'ical_texte_rss_articles' => 'Le fichier « backend » des articles de ce site se trouve à l’adresse :',
296
+    'ical_texte_rss_articles2' => 'Vous pouvez également obtenir des fichiers « backend » pour les articles de chaque rubrique du site :',
297
+    'ical_texte_rss_breves' => 'Il existe de plus un fichier contenant les brèves du site. En précisant un numéro de rubrique, vous obtiendrez uniquement les brèves de cette rubrique.',
298
+    'icone_a_suivre' => 'À suivre',
299
+    'icone_admin_site' => 'Administration du site',
300
+    'icone_agenda' => 'Agenda',
301
+    'icone_aide_ligne' => 'Aide',
302
+    'icone_articles' => 'Articles',
303
+    'icone_auteurs' => 'Auteurs',
304
+    'icone_brouteur' => 'Navigation rapide',
305
+    'icone_configuration_site' => 'Configuration',
306
+    'icone_configurer_site' => 'Configurer votre site',
307
+    'icone_creer_nouvel_auteur' => 'Créer un nouvel auteur',
308
+    'icone_creer_rubrique' => 'Créer une rubrique',
309
+    'icone_creer_sous_rubrique' => 'Créer une sous-rubrique',
310
+    'icone_deconnecter' => 'Se déconnecter',
311
+    'icone_discussions' => 'Discussions',
312
+    'icone_doc_rubrique' => 'Documents des rubriques',
313
+    'icone_ecrire_article' => 'Écrire un nouvel article',
314
+    'icone_edition_site' => 'Édition',
315
+    'icone_gestion_langues' => 'Gestion des langues',
316
+    'icone_informations_personnelles' => 'Informations personnelles',
317
+    'icone_interface_complet' => 'interface complète',
318
+    'icone_interface_simple' => 'Interface simplifiée',
319
+    'icone_maintenance_site' => 'Maintenance du site',
320
+    'icone_messagerie_personnelle' => 'Messagerie personnelle',
321
+    'icone_repartition_debut' => 'Afficher la répartition depuis le début',
322
+    'icone_rubriques' => 'Rubriques',
323
+    'icone_sauver_site' => 'Sauvegarde du site',
324
+    'icone_site_entier' => 'Tout le site',
325
+    'icone_sites_references' => 'Sites référencés',
326
+    'icone_statistiques' => 'Statistiques du site',
327
+    'icone_suivi_activite' => 'Suivre la vie du site',
328
+    'icone_suivi_actualite' => 'Évolution du site',
329
+    'icone_suivi_pettions' => 'Suivre/gérer les pétitions',
330
+    'icone_suivi_revisions' => 'Modifications des articles',
331
+    'icone_supprimer_document' => 'Supprimer ce document',
332
+    'icone_supprimer_image' => 'Supprimer cette image',
333
+    'icone_tous_articles' => 'Tous vos articles',
334
+    'icone_tous_auteur' => 'Tous les auteurs',
335
+    'icone_tous_visiteur' => 'Tous les visiteurs',
336
+    'icone_visiter_site' => 'Voir le site public',
337
+    'icone_voir_en_ligne' => 'Voir en ligne',
338
+    'img_indisponible' => 'image indisponible',
339
+    'impossible' => 'impossible',
340
+    'info_a_suivre' => 'À SUIVRE »',
341
+    'info_acces_interdit' => 'Accès interdit',
342
+    'info_acces_refuse' => 'Accès refusé',
343
+    'info_action' => 'Action : @action@',
344
+    'info_administrer_rubriques' => 'Vous pouvez administrer cette rubrique et ses sous-rubriques',
345
+    'info_adresse_non_indiquee' => 'Vous n’avez pas indiqué d’adresse à tester !',
346
+    'info_aide' => 'AIDE :',
347
+    'info_ajouter_mot' => 'Ajouter ce mot',
348
+    'info_annonce' => 'ANNONCE',
349
+    'info_annonces_generales' => 'Annonces générales :',
350
+    'info_article_propose' => 'Article proposé',
351
+    'info_article_publie' => 'Article publié',
352
+    'info_article_redaction' => 'Article en cours de rédaction',
353
+    'info_article_refuse' => 'Article refusé',
354
+    'info_article_supprime' => 'Article supprimé',
355
+    'info_articles' => 'Articles',
356
+    'info_articles_a_valider' => 'Les articles à valider',
357
+    'info_articles_nb' => '@nb@ articles',
358
+    'info_articles_proposes' => 'Articles proposés',
359
+    'info_articles_un' => '1 article',
360
+    'info_auteurs_nombre' => 'auteur(s) :',
361
+    'info_authentification_ftp' => 'Authentification (par FTP).',
362
+    'info_breves_2' => 'brèves',
363
+    'info_breves_nb' => '@nb@ brèves',
364
+    'info_breves_un' => '1 brève',
365
+    'info_connexion_refusee' => 'Connexion refusée',
366
+    'info_contact_developpeur' => 'Veuillez contacter un développeur.',
367
+    'info_contenance' => 'Ce site contient :',
368
+    'info_contribution' => 'contributions',
369
+    'info_copyright' => '@spip@ est un logiciel libre distribué @lien_gpl@.',
370
+    'info_copyright_doc' => 'Pour plus d’informations, voir le site <a href="@spipnet@">@spipnet_affiche@</a>.',
371
+    'info_copyright_gpl' => 'sous licence GPL',
372
+    'info_cours_edition' => 'En cours de modification',
373
+    'info_creer_repertoire' => 'Veuillez créer un fichier ou un répertoire nommé :',
374
+    'info_creer_repertoire_2' => 'à l’intérieur du sous-répertoire <b>@repertoire@</b>, puis :',
375
+    'info_creer_vignette' => 'création automatique de la vignette',
376
+    'info_creerdansrubrique_non_autorise' => 'Vous n’avez pas de droits suffisants pour créer un contenu dans cette rubrique',
377
+    'info_deplier' => 'Déplier',
378
+    'info_descriptif_nombre' => 'descriptif(s) :',
379
+    'info_description' => 'Description :',
380
+    'info_description_2' => 'Description :',
381
+    'info_dimension' => 'Dimensions :',
382
+    'info_documents_nb' => '@nb@ documents',
383
+    'info_documents_un' => '1 document',
384
+    'info_ecire_message_prive' => 'Écrire un message privé',
385
+    'info_email_invalide' => 'Adresse email invalide.',
386
+    'info_en_cours_validation' => 'Vos articles en cours de rédaction',
387
+    'info_en_ligne' => 'Actuellement en ligne :',
388
+    'info_envoyer_message_prive' => 'Envoyer un message privé à cet auteur',
389
+    'info_erreur_requete' => 'Erreur dans la requête :',
390
+    'info_erreur_squelette2' => 'Aucun squelette <b>@fichier@</b> n’est disponible...',
391
+    'info_erreur_systeme' => 'Erreur système (errno @errsys@)',
392
+    'info_erreur_systeme2' => 'Le disque dur est peut-être plein, ou la base de données endommagée.<br />
393 393
 <span style="color:red;">Essayez de <a href=\'@script@\'>réparer la base</a>, ou contactez votre hébergeur.</span>',
394
-	'info_fini' => 'C’est fini !',
395
-	'info_format_image' => 'Formats d’images pouvant être utilisées pour créer des vignettes : @gd_formats@.',
396
-	'info_format_non_defini' => 'format non défini',
397
-	'info_grand_ecran' => 'Grand écran',
398
-	'info_image_aide' => 'AIDE',
399
-	'info_image_process_titre' => 'Méthode de fabrication des vignettes',
400
-	'info_impossible_lire_page' => '<b>Erreur !</b> Impossible de lire la page <tt><html>@test_proxy@</html></tt> à travers le proxy ',
401
-	'info_installation_systeme_publication' => 'Installation du système de publication...',
402
-	'info_installer_documents' => 'Vous pouvez installer automatiquement tous les documents contenus dans le dossier @upload@.',
403
-	'info_installer_ftp' => 'En tant qu’administrateur, vous pouvez installer (par FTP) des fichiers dans le dossier @upload@ pour ensuite les sélectionner directement ici.',
404
-	'info_installer_images' => 'Vous pouvez installer des images aux formats JPEG, GIF et PNG.',
405
-	'info_installer_images_dossier' => 'Installer des images dans le dossier @upload@ pour pouvoir les sélectionner ici.',
406
-	'info_interface_complete' => 'interface complète',
407
-	'info_interface_simple' => 'Interface simplifiée',
408
-	'info_joindre_document_article' => 'Vous pouvez joindre à cet article des documents de type',
409
-	'info_joindre_document_rubrique' => 'Vous pouvez ajouter dans cette rubrique des documents de type',
410
-	'info_joindre_documents_article' => 'Vous pouvez joindre à votre article des documents de type :',
411
-	'info_l_article' => 'l’article',
412
-	'info_la_breve' => 'la brève',
413
-	'info_la_rubrique' => 'la rubrique',
414
-	'info_langue_principale' => 'Langue principale du site',
415
-	'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels',
416
-	'info_les_auteurs_1' => 'par @les_auteurs@',
417
-	'info_logo_format_interdit' => 'Seuls les logos aux formats @formats@ sont autorisés.',
418
-	'info_logo_max_poids' => 'Les logos doivent obligatoirement faire moins de @maxi@ (ce fichier fait @actuel@).',
419
-	'info_mail_fournisseur' => '[email protected]',
420
-	'info_message_2' => 'MESSAGE',
421
-	'info_message_supprime' => 'MESSAGE SUPPRIMÉ',
422
-	'info_messages_nb' => '@nb@ messages',
423
-	'info_messages_un' => '1 message',
424
-	'info_mise_en_ligne' => 'Date de mise en ligne :',
425
-	'info_modification_parametres_securite' => 'modifications des paramètres de sécurité',
426
-	'info_mois_courant' => 'Dans le courant du mois :',
427
-	'info_mot_cle_ajoute' => 'Le mot-clé suivant a été ajouté à',
428
-	'info_multi_herit' => 'Langue par défaut',
429
-	'info_multi_langues_soulignees' => 'Les <u>langues soulignées</u> bénéficient d’une traduction totale ou partielle des textes de l’interface. Si vous sélectionnez ces langues, de nombreux éléments du site public (dates, formulaires) seront automatiquement traduits. Pour les langues non soulignées, ces éléments apparaîtront dans la langue principale du site.',
430
-	'info_multilinguisme' => 'Multilinguisme',
431
-	'info_nom_non_utilisateurs_connectes' => 'Votre nom n’apparaît pas dans la liste des utilisateurs connectés.',
432
-	'info_nom_utilisateurs_connectes' => 'Votre nom apparaît dans la liste des utilisateurs connectés.',
433
-	'info_nombre_en_ligne' => 'Actuellement en ligne :',
434
-	'info_non_resultat' => 'Aucun résultat pour "@cherche_mot@"',
435
-	'info_non_utilisation_messagerie' => 'Vous n’utilisez pas la messagerie interne de ce site.',
436
-	'info_nouveau_message' => 'VOUS AVEZ UN NOUVEAU MESSAGE',
437
-	'info_nouveaux_messages' => 'VOUS AVEZ @total_messages@ NOUVEAUX MESSAGES',
438
-	'info_numero_abbreviation' => 'N° ',
439
-	'info_obligatoire' => 'Cette information est obligatoire',
440
-	'info_page_actuelle' => 'Page actuelle',
441
-	'info_pense_bete' => 'PENSE-BÊTE',
442
-	'info_petit_ecran' => 'Petit écran',
443
-	'info_petition_close' => 'Pétition close',
444
-	'info_pixels' => 'pixels',
445
-	'info_plusieurs_mots_trouves' => 'Plusieurs mots-clés trouvés pour "@cherche_mot@" :',
446
-	'info_portfolio_automatique' => 'Portfolio automatique :',
447
-	'info_premier_resultat' => '[@debut_limit@ premiers résultats sur @total@]',
448
-	'info_premier_resultat_sur' => '[@debut_limit@ premiers résultats sur @total@]',
449
-	'info_propose_1' => '[@nom_site_spip@] Propose : @titre@',
450
-	'info_propose_2' => 'Article proposé
394
+    'info_fini' => 'C’est fini !',
395
+    'info_format_image' => 'Formats d’images pouvant être utilisées pour créer des vignettes : @gd_formats@.',
396
+    'info_format_non_defini' => 'format non défini',
397
+    'info_grand_ecran' => 'Grand écran',
398
+    'info_image_aide' => 'AIDE',
399
+    'info_image_process_titre' => 'Méthode de fabrication des vignettes',
400
+    'info_impossible_lire_page' => '<b>Erreur !</b> Impossible de lire la page <tt><html>@test_proxy@</html></tt> à travers le proxy ',
401
+    'info_installation_systeme_publication' => 'Installation du système de publication...',
402
+    'info_installer_documents' => 'Vous pouvez installer automatiquement tous les documents contenus dans le dossier @upload@.',
403
+    'info_installer_ftp' => 'En tant qu’administrateur, vous pouvez installer (par FTP) des fichiers dans le dossier @upload@ pour ensuite les sélectionner directement ici.',
404
+    'info_installer_images' => 'Vous pouvez installer des images aux formats JPEG, GIF et PNG.',
405
+    'info_installer_images_dossier' => 'Installer des images dans le dossier @upload@ pour pouvoir les sélectionner ici.',
406
+    'info_interface_complete' => 'interface complète',
407
+    'info_interface_simple' => 'Interface simplifiée',
408
+    'info_joindre_document_article' => 'Vous pouvez joindre à cet article des documents de type',
409
+    'info_joindre_document_rubrique' => 'Vous pouvez ajouter dans cette rubrique des documents de type',
410
+    'info_joindre_documents_article' => 'Vous pouvez joindre à votre article des documents de type :',
411
+    'info_l_article' => 'l’article',
412
+    'info_la_breve' => 'la brève',
413
+    'info_la_rubrique' => 'la rubrique',
414
+    'info_langue_principale' => 'Langue principale du site',
415
+    'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels',
416
+    'info_les_auteurs_1' => 'par @les_auteurs@',
417
+    'info_logo_format_interdit' => 'Seuls les logos aux formats @formats@ sont autorisés.',
418
+    'info_logo_max_poids' => 'Les logos doivent obligatoirement faire moins de @maxi@ (ce fichier fait @actuel@).',
419
+    'info_mail_fournisseur' => '[email protected]',
420
+    'info_message_2' => 'MESSAGE',
421
+    'info_message_supprime' => 'MESSAGE SUPPRIMÉ',
422
+    'info_messages_nb' => '@nb@ messages',
423
+    'info_messages_un' => '1 message',
424
+    'info_mise_en_ligne' => 'Date de mise en ligne :',
425
+    'info_modification_parametres_securite' => 'modifications des paramètres de sécurité',
426
+    'info_mois_courant' => 'Dans le courant du mois :',
427
+    'info_mot_cle_ajoute' => 'Le mot-clé suivant a été ajouté à',
428
+    'info_multi_herit' => 'Langue par défaut',
429
+    'info_multi_langues_soulignees' => 'Les <u>langues soulignées</u> bénéficient d’une traduction totale ou partielle des textes de l’interface. Si vous sélectionnez ces langues, de nombreux éléments du site public (dates, formulaires) seront automatiquement traduits. Pour les langues non soulignées, ces éléments apparaîtront dans la langue principale du site.',
430
+    'info_multilinguisme' => 'Multilinguisme',
431
+    'info_nom_non_utilisateurs_connectes' => 'Votre nom n’apparaît pas dans la liste des utilisateurs connectés.',
432
+    'info_nom_utilisateurs_connectes' => 'Votre nom apparaît dans la liste des utilisateurs connectés.',
433
+    'info_nombre_en_ligne' => 'Actuellement en ligne :',
434
+    'info_non_resultat' => 'Aucun résultat pour "@cherche_mot@"',
435
+    'info_non_utilisation_messagerie' => 'Vous n’utilisez pas la messagerie interne de ce site.',
436
+    'info_nouveau_message' => 'VOUS AVEZ UN NOUVEAU MESSAGE',
437
+    'info_nouveaux_messages' => 'VOUS AVEZ @total_messages@ NOUVEAUX MESSAGES',
438
+    'info_numero_abbreviation' => 'N° ',
439
+    'info_obligatoire' => 'Cette information est obligatoire',
440
+    'info_page_actuelle' => 'Page actuelle',
441
+    'info_pense_bete' => 'PENSE-BÊTE',
442
+    'info_petit_ecran' => 'Petit écran',
443
+    'info_petition_close' => 'Pétition close',
444
+    'info_pixels' => 'pixels',
445
+    'info_plusieurs_mots_trouves' => 'Plusieurs mots-clés trouvés pour "@cherche_mot@" :',
446
+    'info_portfolio_automatique' => 'Portfolio automatique :',
447
+    'info_premier_resultat' => '[@debut_limit@ premiers résultats sur @total@]',
448
+    'info_premier_resultat_sur' => '[@debut_limit@ premiers résultats sur @total@]',
449
+    'info_propose_1' => '[@nom_site_spip@] Propose : @titre@',
450
+    'info_propose_2' => 'Article proposé
451 451
 ---------------',
452
-	'info_propose_3' => 'L’article "@titre@" est proposé à la publication.',
453
-	'info_propose_4' => 'Vous êtes invité à venir le consulter et à donner votre opinion',
454
-	'info_propose_5' => 'dans le forum qui lui est attaché. Il est disponible à l’adresse :',
455
-	'info_publie_01' => 'L’article "@titre@" a été validé par @connect_nom@.',
456
-	'info_publie_1' => '[@nom_site_spip@] PUBLIE : @titre@',
457
-	'info_publie_2' => 'Article publié
452
+    'info_propose_3' => 'L’article "@titre@" est proposé à la publication.',
453
+    'info_propose_4' => 'Vous êtes invité à venir le consulter et à donner votre opinion',
454
+    'info_propose_5' => 'dans le forum qui lui est attaché. Il est disponible à l’adresse :',
455
+    'info_publie_01' => 'L’article "@titre@" a été validé par @connect_nom@.',
456
+    'info_publie_1' => '[@nom_site_spip@] PUBLIE : @titre@',
457
+    'info_publie_2' => 'Article publié
458 458
 --------------',
459
-	'info_rechercher' => 'Rechercher',
460
-	'info_rechercher_02' => 'Rechercher :',
461
-	'info_remplacer_vignette' => 'Remplacer la vignette par défaut par un logo personnalisé :',
462
-	'info_rubriques_nb' => '@nb@ rubriques',
463
-	'info_rubriques_un' => '1 rubrique',
464
-	'info_sans_titre_2' => 'sans titre',
465
-	'info_selectionner_fichier' => 'Vous pouvez sélectionner un fichier du dossier @upload@',
466
-	'info_selectionner_fichier_2' => 'Sélectionner un fichier :',
467
-	'info_sites_nb' => '@nb@ sites',
468
-	'info_sites_un' => '1 site',
469
-	'info_supprimer_vignette' => 'supprimer la vignette',
470
-	'info_symbole_bleu' => 'Le symbole <b>bleu</b> indique un <b>pense-bête</b> : c’est-à-dire un message à votre usage personnel.',
471
-	'info_symbole_jaune' => 'Le symbole <b>jaune</b> indique une <b>annonce à tous les rédacteurs</b> : modifiable par tous les administrateurs, et visible par tous les rédacteurs.',
472
-	'info_symbole_vert' => 'Le symbole <b>vert</b> indique les <b>messages échangés avec d’autres utilisateurs</b> du site.',
473
-	'info_telecharger_nouveau_logo' => 'Télécharger un nouveau logo :',
474
-	'info_telecharger_ordinateur' => 'Télécharger depuis votre ordinateur :',
475
-	'info_tous_resultats_enregistres' => '[tous les résultats sont enregistrés]',
476
-	'info_tout_afficher' => 'Tout afficher',
477
-	'info_travaux_texte' => 'Ce site n’est pas encore configuré. Revenez plus tard...',
478
-	'info_travaux_titre' => 'Site en travaux',
479
-	'info_trop_resultat' => 'Trop de résultats pour "@cherche_mot@" ; veuillez affiner la recherche.',
480
-	'info_utilisation_messagerie_interne' => 'Vous utilisez la messagerie interne de ce site.',
481
-	'info_valider_lien' => 'valider ce lien',
482
-	'info_verifier_image' => ', veuillez vérifier que vos images ont été transférées correctement.',
483
-	'info_vignette_defaut' => 'Vignette par défaut',
484
-	'info_vignette_personnalisee' => 'Vignette personnalisée',
485
-	'info_visite' => 'visite :',
486
-	'info_vos_rendez_vous' => 'Vos rendez-vous à venir',
487
-	'infos_vos_pense_bete' => 'Vos pense-bêtes',
459
+    'info_rechercher' => 'Rechercher',
460
+    'info_rechercher_02' => 'Rechercher :',
461
+    'info_remplacer_vignette' => 'Remplacer la vignette par défaut par un logo personnalisé :',
462
+    'info_rubriques_nb' => '@nb@ rubriques',
463
+    'info_rubriques_un' => '1 rubrique',
464
+    'info_sans_titre_2' => 'sans titre',
465
+    'info_selectionner_fichier' => 'Vous pouvez sélectionner un fichier du dossier @upload@',
466
+    'info_selectionner_fichier_2' => 'Sélectionner un fichier :',
467
+    'info_sites_nb' => '@nb@ sites',
468
+    'info_sites_un' => '1 site',
469
+    'info_supprimer_vignette' => 'supprimer la vignette',
470
+    'info_symbole_bleu' => 'Le symbole <b>bleu</b> indique un <b>pense-bête</b> : c’est-à-dire un message à votre usage personnel.',
471
+    'info_symbole_jaune' => 'Le symbole <b>jaune</b> indique une <b>annonce à tous les rédacteurs</b> : modifiable par tous les administrateurs, et visible par tous les rédacteurs.',
472
+    'info_symbole_vert' => 'Le symbole <b>vert</b> indique les <b>messages échangés avec d’autres utilisateurs</b> du site.',
473
+    'info_telecharger_nouveau_logo' => 'Télécharger un nouveau logo :',
474
+    'info_telecharger_ordinateur' => 'Télécharger depuis votre ordinateur :',
475
+    'info_tous_resultats_enregistres' => '[tous les résultats sont enregistrés]',
476
+    'info_tout_afficher' => 'Tout afficher',
477
+    'info_travaux_texte' => 'Ce site n’est pas encore configuré. Revenez plus tard...',
478
+    'info_travaux_titre' => 'Site en travaux',
479
+    'info_trop_resultat' => 'Trop de résultats pour "@cherche_mot@" ; veuillez affiner la recherche.',
480
+    'info_utilisation_messagerie_interne' => 'Vous utilisez la messagerie interne de ce site.',
481
+    'info_valider_lien' => 'valider ce lien',
482
+    'info_verifier_image' => ', veuillez vérifier que vos images ont été transférées correctement.',
483
+    'info_vignette_defaut' => 'Vignette par défaut',
484
+    'info_vignette_personnalisee' => 'Vignette personnalisée',
485
+    'info_visite' => 'visite :',
486
+    'info_vos_rendez_vous' => 'Vos rendez-vous à venir',
487
+    'infos_vos_pense_bete' => 'Vos pense-bêtes',
488 488
 
489
-	// L
490
-	'label_ajout_id_rapide' => 'Ajout rapide',
491
-	'label_poids_fichier' => 'Taille',
492
-	'lien_afficher_icones_seuls' => 'Afficher uniquement les icones',
493
-	'lien_afficher_texte_icones' => 'Afficher les icones et le texte',
494
-	'lien_afficher_texte_seul' => 'Afficher uniquement le texte',
495
-	'lien_aller_a_la_derniere_page' => 'Aller à la dernière page',
496
-	'lien_aller_a_la_page_nb' => 'Aller à la page @nb@',
497
-	'lien_aller_a_la_page_precedente' => 'Aller à la page précédente',
498
-	'lien_aller_a_la_page_suivante' => 'Aller à la page suivante',
499
-	'lien_aller_a_la_premiere_page' => 'Aller à la première page',
500
-	'lien_liberer' => 'libérer',
501
-	'lien_liberer_tous' => 'Tout libérer',
502
-	'lien_nouvea_pense_bete' => 'NOUVEAU PENSE-BÊTE',
503
-	'lien_nouveau_message' => 'NOUVEAU MESSAGE',
504
-	'lien_nouvelle_annonce' => 'NOUVELLE ANNONCE',
505
-	'lien_petitions' => 'PÉTITION',
506
-	'lien_popularite' => 'popularité : @popularite@%',
507
-	'lien_racine_site' => 'RACINE DU SITE',
508
-	'lien_reessayer' => 'réessayer',
509
-	'lien_repondre_message' => 'Répondre à ce message',
510
-	'lien_supprimer' => 'supprimer',
511
-	'lien_tout_afficher' => 'Tout afficher',
512
-	'lien_visite_site' => 'visiter ce site',
513
-	'lien_visites' => '@visites@ visites',
514
-	'lien_voir_auteur' => 'Voir cet auteur',
515
-	'ligne' => 'Ligne',
516
-	'login' => 'Connexion',
517
-	'login_acces_prive' => 'accès à l’espace privé',
518
-	'login_autre_identifiant' => 'se connecter sous un autre identifiant',
519
-	'login_cookie_accepte' => 'Veuillez régler votre navigateur pour qu’il les accepte (au moins pour ce site).',
520
-	'login_cookie_oblige' => 'Pour vous identifier de façon sûre sur ce site, vous devez accepter les cookies.',
521
-	'login_deconnexion_ok' => 'Déconnexion effectuée.',
522
-	'login_erreur_pass' => 'Erreur de mot de passe.',
523
-	'login_espace_prive' => 'espace privé',
524
-	'login_identifiant_inconnu' => 'L’identifiant « @login@ » est inconnu.',
525
-	'login_login' => 'Login :',
526
-	'login_login2' => 'Login ou adresse email :',
527
-	'login_login_pass_incorrect' => '(Login ou mot de passe incorrect.)',
528
-	'login_motpasseoublie' => 'mot de passe oublié ?',
529
-	'login_non_securise' => 'Attention, ce formulaire n’est pas sécurisé.
489
+    // L
490
+    'label_ajout_id_rapide' => 'Ajout rapide',
491
+    'label_poids_fichier' => 'Taille',
492
+    'lien_afficher_icones_seuls' => 'Afficher uniquement les icones',
493
+    'lien_afficher_texte_icones' => 'Afficher les icones et le texte',
494
+    'lien_afficher_texte_seul' => 'Afficher uniquement le texte',
495
+    'lien_aller_a_la_derniere_page' => 'Aller à la dernière page',
496
+    'lien_aller_a_la_page_nb' => 'Aller à la page @nb@',
497
+    'lien_aller_a_la_page_precedente' => 'Aller à la page précédente',
498
+    'lien_aller_a_la_page_suivante' => 'Aller à la page suivante',
499
+    'lien_aller_a_la_premiere_page' => 'Aller à la première page',
500
+    'lien_liberer' => 'libérer',
501
+    'lien_liberer_tous' => 'Tout libérer',
502
+    'lien_nouvea_pense_bete' => 'NOUVEAU PENSE-BÊTE',
503
+    'lien_nouveau_message' => 'NOUVEAU MESSAGE',
504
+    'lien_nouvelle_annonce' => 'NOUVELLE ANNONCE',
505
+    'lien_petitions' => 'PÉTITION',
506
+    'lien_popularite' => 'popularité : @popularite@%',
507
+    'lien_racine_site' => 'RACINE DU SITE',
508
+    'lien_reessayer' => 'réessayer',
509
+    'lien_repondre_message' => 'Répondre à ce message',
510
+    'lien_supprimer' => 'supprimer',
511
+    'lien_tout_afficher' => 'Tout afficher',
512
+    'lien_visite_site' => 'visiter ce site',
513
+    'lien_visites' => '@visites@ visites',
514
+    'lien_voir_auteur' => 'Voir cet auteur',
515
+    'ligne' => 'Ligne',
516
+    'login' => 'Connexion',
517
+    'login_acces_prive' => 'accès à l’espace privé',
518
+    'login_autre_identifiant' => 'se connecter sous un autre identifiant',
519
+    'login_cookie_accepte' => 'Veuillez régler votre navigateur pour qu’il les accepte (au moins pour ce site).',
520
+    'login_cookie_oblige' => 'Pour vous identifier de façon sûre sur ce site, vous devez accepter les cookies.',
521
+    'login_deconnexion_ok' => 'Déconnexion effectuée.',
522
+    'login_erreur_pass' => 'Erreur de mot de passe.',
523
+    'login_espace_prive' => 'espace privé',
524
+    'login_identifiant_inconnu' => 'L’identifiant « @login@ » est inconnu.',
525
+    'login_login' => 'Login :',
526
+    'login_login2' => 'Login ou adresse email :',
527
+    'login_login_pass_incorrect' => '(Login ou mot de passe incorrect.)',
528
+    'login_motpasseoublie' => 'mot de passe oublié ?',
529
+    'login_non_securise' => 'Attention, ce formulaire n’est pas sécurisé.
530 530
 			Si vous ne voulez pas que votre mot de passe puisse être
531 531
 			intercepté sur le réseau, veuillez activer Javascript
532 532
 			dans votre navigateur et',
533
-	'login_nouvelle_tentative' => 'Nouvelle tentative',
534
-	'login_par_ici' => 'Vous êtes enregistré... par ici...',
535
-	'login_pass2' => 'Mot de passe :',
536
-	'login_preferez_refuser' => '<b>Si vous préférez refuser les cookies</b>, une autre méthode de connexion (moins sécurisée) est à votre disposition :',
537
-	'login_recharger' => 'recharger cette page',
538
-	'login_rester_identifie' => 'Se souvenir de moi',
539
-	'login_retour_public' => 'Retour au site public',
540
-	'login_retour_site' => 'Retour au site public',
541
-	'login_retoursitepublic' => 'retour au site public',
542
-	'login_sans_cookie' => 'Identification sans cookie',
543
-	'login_securise' => 'Login sécurisé',
544
-	'login_sinscrire' => 's’inscrire',
545
-	'login_test_navigateur' => 'test navigateur/reconnexion',
546
-	'login_verifiez_navigateur' => '(Vérifiez toutefois que votre navigateur n’a pas mémorisé votre mot de passe...)',
533
+    'login_nouvelle_tentative' => 'Nouvelle tentative',
534
+    'login_par_ici' => 'Vous êtes enregistré... par ici...',
535
+    'login_pass2' => 'Mot de passe :',
536
+    'login_preferez_refuser' => '<b>Si vous préférez refuser les cookies</b>, une autre méthode de connexion (moins sécurisée) est à votre disposition :',
537
+    'login_recharger' => 'recharger cette page',
538
+    'login_rester_identifie' => 'Se souvenir de moi',
539
+    'login_retour_public' => 'Retour au site public',
540
+    'login_retour_site' => 'Retour au site public',
541
+    'login_retoursitepublic' => 'retour au site public',
542
+    'login_sans_cookie' => 'Identification sans cookie',
543
+    'login_securise' => 'Login sécurisé',
544
+    'login_sinscrire' => 's’inscrire',
545
+    'login_test_navigateur' => 'test navigateur/reconnexion',
546
+    'login_verifiez_navigateur' => '(Vérifiez toutefois que votre navigateur n’a pas mémorisé votre mot de passe...)',
547 547
 
548
-	// M
549
-	'masquer_colonne' => 'Masquer cette colonne',
550
-	'masquer_trad' => 'masquer les traductions',
551
-	'message_nouveaux_identifiants_echec' => 'Impossible de générer de nouveaux identifiants.',
552
-	'message_nouveaux_identifiants_echec_envoi' => 'Les nouveaux identifiants de connexion n’ont pas pu être envoyés.',
553
-	'message_nouveaux_identifiants_ok' => 'Les nouveaux identifiants de connexion ont été envoyés à @email@.',
554
-	'module_fichiers_langues' => 'Fichiers de langue',
548
+    // M
549
+    'masquer_colonne' => 'Masquer cette colonne',
550
+    'masquer_trad' => 'masquer les traductions',
551
+    'message_nouveaux_identifiants_echec' => 'Impossible de générer de nouveaux identifiants.',
552
+    'message_nouveaux_identifiants_echec_envoi' => 'Les nouveaux identifiants de connexion n’ont pas pu être envoyés.',
553
+    'message_nouveaux_identifiants_ok' => 'Les nouveaux identifiants de connexion ont été envoyés à @email@.',
554
+    'module_fichiers_langues' => 'Fichiers de langue',
555 555
 
556
-	// N
557
-	'navigateur_pas_redirige' => 'Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.',
558
-	'numero' => 'Numéro',
556
+    // N
557
+    'navigateur_pas_redirige' => 'Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.',
558
+    'numero' => 'Numéro',
559 559
 
560
-	// O
561
-	'occurence' => 'Occurrence',
562
-	'onglet_affacer_base' => 'Effacer la base',
563
-	'onglet_auteur' => 'L’auteur',
564
-	'onglet_contenu_site' => 'Contenu du site',
565
-	'onglet_evolution_visite_mod' => 'Évolution',
566
-	'onglet_fonctions_avances' => 'Fonctions avancées',
567
-	'onglet_informations_personnelles' => 'Informations personnelles',
568
-	'onglet_interactivite' => 'Interactivité',
569
-	'onglet_messagerie' => 'Messagerie',
570
-	'onglet_repartition_rubrique' => 'Répartition par rubriques',
571
-	'onglet_save_restaur_base' => 'Sauvegarder/restaurer la base',
572
-	'onglet_vider_cache' => 'Vider le cache',
560
+    // O
561
+    'occurence' => 'Occurrence',
562
+    'onglet_affacer_base' => 'Effacer la base',
563
+    'onglet_auteur' => 'L’auteur',
564
+    'onglet_contenu_site' => 'Contenu du site',
565
+    'onglet_evolution_visite_mod' => 'Évolution',
566
+    'onglet_fonctions_avances' => 'Fonctions avancées',
567
+    'onglet_informations_personnelles' => 'Informations personnelles',
568
+    'onglet_interactivite' => 'Interactivité',
569
+    'onglet_messagerie' => 'Messagerie',
570
+    'onglet_repartition_rubrique' => 'Répartition par rubriques',
571
+    'onglet_save_restaur_base' => 'Sauvegarder/restaurer la base',
572
+    'onglet_vider_cache' => 'Vider le cache',
573 573
 
574
-	// P
575
-	'pass_choix_pass' => 'Veuillez choisir votre nouveau mot de passe :',
576
-	'pass_erreur' => 'Erreur',
577
-	'pass_erreur_acces_refuse' => '<b>Erreur :</b> vous n’avez plus accès à ce site.',
578
-	'pass_erreur_code_inconnu' => '<b>Erreur :</b> ce code ne correspond à aucun des visiteurs ayant accès à ce site.',
579
-	'pass_erreur_non_enregistre' => '<b>Erreur :</b> l’adresse <tt>@email_oubli@</tt> n’est pas enregistrée sur ce site.',
580
-	'pass_erreur_non_valide' => '<b>Erreur :</b> cet email <tt>@email_oubli@</tt> n’est pas valide !',
581
-	'pass_erreur_probleme_technique' => '<b>Erreur :</b> à cause d’un problème technique, l’email ne peut pas être envoyé.',
582
-	'pass_espace_prive_bla' => 'L’espace privé de ce site est ouvert aux
574
+    // P
575
+    'pass_choix_pass' => 'Veuillez choisir votre nouveau mot de passe :',
576
+    'pass_erreur' => 'Erreur',
577
+    'pass_erreur_acces_refuse' => '<b>Erreur :</b> vous n’avez plus accès à ce site.',
578
+    'pass_erreur_code_inconnu' => '<b>Erreur :</b> ce code ne correspond à aucun des visiteurs ayant accès à ce site.',
579
+    'pass_erreur_non_enregistre' => '<b>Erreur :</b> l’adresse <tt>@email_oubli@</tt> n’est pas enregistrée sur ce site.',
580
+    'pass_erreur_non_valide' => '<b>Erreur :</b> cet email <tt>@email_oubli@</tt> n’est pas valide !',
581
+    'pass_erreur_probleme_technique' => '<b>Erreur :</b> à cause d’un problème technique, l’email ne peut pas être envoyé.',
582
+    'pass_espace_prive_bla' => 'L’espace privé de ce site est ouvert aux
583 583
 		visiteurs, après inscription. Une fois enregistré,
584 584
 		vous pourrez consulter les articles en cours de rédaction,
585 585
 		proposer des articles et participer à tous les forums.',
586
-	'pass_forum_bla' => 'Vous avez demandé à intervenir sur un forum
586
+    'pass_forum_bla' => 'Vous avez demandé à intervenir sur un forum
587 587
 		réservé aux visiteurs enregistrés.',
588
-	'pass_indiquez_cidessous' => 'Indiquez ci-dessous l’adresse email sous laquelle vous
588
+    'pass_indiquez_cidessous' => 'Indiquez ci-dessous l’adresse email sous laquelle vous
589 589
 			vous êtes précédemment enregistré. Vous
590 590
 			recevrez un email vous indiquant la marche à suivre pour
591 591
 			récupérer votre accès.',
592
-	'pass_mail_passcookie' => '(ceci est un message automatique)
592
+    'pass_mail_passcookie' => '(ceci est un message automatique)
593 593
 Pour retrouver votre accès au site
594 594
 @nom_site_spip@ (@adresse_site@)
595 595
 
@@ -601,145 +601,145 @@  discard block
 block discarded – undo
601 601
 et vous reconnecter au site.
602 602
 
603 603
 ',
604
-	'pass_mot_oublie' => 'Mot de passe oublié',
605
-	'pass_nouveau_enregistre' => 'Votre nouveau mot de passe a été enregistré.',
606
-	'pass_nouveau_pass' => 'Nouveau mot de passe',
607
-	'pass_ok' => 'OK',
608
-	'pass_oubli_mot' => 'Oubli du mot de passe',
609
-	'pass_procedure_changer' => 'Pour modifier votre mot de passe, merci d’indiquer l’adresse email associée à votre compte.',
610
-	'pass_quitter_fenetre' => 'Quitter cette fenêtre',
611
-	'pass_rappel_login' => 'Rappel : votre identifiant (login) est « @login@ ».',
612
-	'pass_recevoir_mail' => 'Un lien de réinitialisation de votre mot de passe vous a été envoyé sur votre adresse email (si celle-ci est valide).',
613
-	'pass_retour_public' => 'Retour sur le site public',
614
-	'pass_rien_a_faire_ici' => 'Rien à faire ici.',
615
-	'pass_vousinscrire' => 'Vous inscrire sur ce site',
616
-	'precedent' => 'précédent',
617
-	'previsualisation' => 'Prévisualisation',
618
-	'previsualiser' => 'Prévisualiser',
604
+    'pass_mot_oublie' => 'Mot de passe oublié',
605
+    'pass_nouveau_enregistre' => 'Votre nouveau mot de passe a été enregistré.',
606
+    'pass_nouveau_pass' => 'Nouveau mot de passe',
607
+    'pass_ok' => 'OK',
608
+    'pass_oubli_mot' => 'Oubli du mot de passe',
609
+    'pass_procedure_changer' => 'Pour modifier votre mot de passe, merci d’indiquer l’adresse email associée à votre compte.',
610
+    'pass_quitter_fenetre' => 'Quitter cette fenêtre',
611
+    'pass_rappel_login' => 'Rappel : votre identifiant (login) est « @login@ ».',
612
+    'pass_recevoir_mail' => 'Un lien de réinitialisation de votre mot de passe vous a été envoyé sur votre adresse email (si celle-ci est valide).',
613
+    'pass_retour_public' => 'Retour sur le site public',
614
+    'pass_rien_a_faire_ici' => 'Rien à faire ici.',
615
+    'pass_vousinscrire' => 'Vous inscrire sur ce site',
616
+    'precedent' => 'précédent',
617
+    'previsualisation' => 'Prévisualisation',
618
+    'previsualiser' => 'Prévisualiser',
619 619
 
620
-	// R
621
-	'retour' => 'Retour',
620
+    // R
621
+    'retour' => 'Retour',
622 622
 
623
-	// S
624
-	'spip_conforme_dtd' => 'SPIP considère ce document comme conforme à son DOCTYPE :',
625
-	'squelette' => 'squelette',
626
-	'squelette_inclus_ligne' => 'squelette inclus, ligne',
627
-	'squelette_ligne' => 'squelette, ligne',
628
-	'stats_visites_et_popularite' => '@visites@ visites ; popularité : @popularite@',
629
-	'suivant' => 'suivant',
623
+    // S
624
+    'spip_conforme_dtd' => 'SPIP considère ce document comme conforme à son DOCTYPE :',
625
+    'squelette' => 'squelette',
626
+    'squelette_inclus_ligne' => 'squelette inclus, ligne',
627
+    'squelette_ligne' => 'squelette, ligne',
628
+    'stats_visites_et_popularite' => '@visites@ visites ; popularité : @popularite@',
629
+    'suivant' => 'suivant',
630 630
 
631
-	// T
632
-	'taille_go' => '@taille@ Go',
633
-	'taille_ko' => '@taille@ ko',
634
-	'taille_mo' => '@taille@ Mo',
635
-	'taille_octets' => '@taille@ octets',
636
-	'texte_actualite_site_1' => 'Quand vous serez familiarisé(e) avec l’interface, vous pourrez cliquer sur « ',
637
-	'texte_actualite_site_2' => 'interface complète',
638
-	'texte_actualite_site_3' => ' » pour ouvrir plus de possibilités.',
639
-	'texte_creation_automatique_vignette' => 'La création automatique de vignettes de prévisualisation est activée sur ce site. Si vous installez à partir de ce formulaire des images au(x) format(s) @gd_formats@, elles seront accompagnées d’une vignette d’une taille maximale de @taille_preview@ pixels.',
640
-	'texte_documents_associes' => 'Les documents suivants sont associés à l’article,
631
+    // T
632
+    'taille_go' => '@taille@ Go',
633
+    'taille_ko' => '@taille@ ko',
634
+    'taille_mo' => '@taille@ Mo',
635
+    'taille_octets' => '@taille@ octets',
636
+    'texte_actualite_site_1' => 'Quand vous serez familiarisé(e) avec l’interface, vous pourrez cliquer sur « ',
637
+    'texte_actualite_site_2' => 'interface complète',
638
+    'texte_actualite_site_3' => ' » pour ouvrir plus de possibilités.',
639
+    'texte_creation_automatique_vignette' => 'La création automatique de vignettes de prévisualisation est activée sur ce site. Si vous installez à partir de ce formulaire des images au(x) format(s) @gd_formats@, elles seront accompagnées d’une vignette d’une taille maximale de @taille_preview@ pixels.',
640
+    'texte_documents_associes' => 'Les documents suivants sont associés à l’article,
641 641
 				mais ils n’y ont pas été directement
642 642
 				insérés. Selon la mise en page du site public,
643 643
 				ils pourront apparaître sous forme de documents joints.',
644
-	'texte_erreur_mise_niveau_base' => 'Erreur de base de données lors de la mise à niveau.
644
+    'texte_erreur_mise_niveau_base' => 'Erreur de base de données lors de la mise à niveau.
645 645
 		L’image <b>@fichier@</b> n’est pas passée (article @id_article@).
646 646
 		Notez bien cette référence, réessayez la mise à
647 647
 		niveau, et enfin vérifiez que les images apparaissent
648 648
 		toujours dans les articles.',
649
-	'texte_erreur_visiteur' => 'Vous avez tenté d’accéder à l’espace privé avec un login qui ne le permet pas.',
650
-	'texte_inc_auth_1' => 'Vous êtes identifié sous le
649
+    'texte_erreur_visiteur' => 'Vous avez tenté d’accéder à l’espace privé avec un login qui ne le permet pas.',
650
+    'texte_inc_auth_1' => 'Vous êtes identifié sous le
651 651
 		login <b>@auth_login@</b>, mais celui-ci n’existe pas/plus dans la base.
652 652
 		Essayez de vous',
653
-	'texte_inc_auth_2' => 'reconnecter',
654
-	'texte_inc_auth_3' => ', après avoir éventuellement quitté puis
653
+    'texte_inc_auth_2' => 'reconnecter',
654
+    'texte_inc_auth_3' => ', après avoir éventuellement quitté puis
655 655
 		redémarré votre navigateur.',
656
-	'texte_inc_config' => 'Les modifications effectuées dans ces pages influent notablement sur le
656
+    'texte_inc_config' => 'Les modifications effectuées dans ces pages influent notablement sur le
657 657
  fonctionnement de votre site. Nous vous recommandons de ne pas y intervenir tant que vous n’êtes pas
658 658
  familier du fonctionnement du système SPIP. <br /><br /><b>Plus
659 659
  généralement, il est fortement conseillé
660 660
  de laisser la charge de ces pages au webmestre principal de votre site.</b>',
661
-	'texte_inc_meta_1' => 'Le système a rencontré une erreur lors de l’écriture du fichier <code>@fichier@</code>. Veuillez, en tant qu’administrateur du site,',
662
-	'texte_inc_meta_2' => 'vérifier les droits d’écriture',
663
-	'texte_inc_meta_3' => 'sur le répertoire <code>@repertoire@</code>.',
664
-	'texte_statut_en_cours_redaction' => 'en cours de rédaction',
665
-	'texte_statut_poubelle' => 'à la poubelle',
666
-	'texte_statut_propose_evaluation' => 'proposé à l’évaluation',
667
-	'texte_statut_publie' => 'publié en ligne',
668
-	'texte_statut_refuse' => 'refusé',
669
-	'titre_ajouter_mot_cle' => 'AJOUTER UN MOT-CLÉ :',
670
-	'titre_cadre_raccourcis' => 'RACCOURCIS :',
671
-	'titre_changer_couleur_interface' => 'Changer la couleur de l’interface',
672
-	'titre_image_admin_article' => 'Vous pouvez administrer cet article',
673
-	'titre_image_administrateur' => 'Administrateur',
674
-	'titre_image_aide' => 'De l’aide sur cet élément',
675
-	'titre_image_auteur_supprime' => 'Auteur supprimé',
676
-	'titre_image_redacteur' => 'Rédacteur sans accès',
677
-	'titre_image_redacteur_02' => 'Rédacteur',
678
-	'titre_image_selecteur' => 'Afficher la liste',
679
-	'titre_image_visiteur' => 'Visiteur',
680
-	'titre_joindre_document' => 'JOINDRE UN DOCUMENT',
681
-	'titre_mots_cles' => 'MOTS-CLÉS',
682
-	'titre_probleme_technique' => 'Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de votre compréhension.',
683
-	'titre_publier_document' => 'PUBLIER UN DOCUMENT DANS CETTE RUBRIQUE',
684
-	'titre_signatures_attente' => 'Signatures en attente de validation',
685
-	'titre_signatures_confirmees' => 'Signatures confirmées',
686
-	'titre_statistiques' => 'Statistiques du site',
687
-	'titre_titre_document' => 'Titre du document :',
688
-	'todo' => 'à venir',
689
-	'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions',
690
-	'trad_reference' => '(référence des traductions)',
661
+    'texte_inc_meta_1' => 'Le système a rencontré une erreur lors de l’écriture du fichier <code>@fichier@</code>. Veuillez, en tant qu’administrateur du site,',
662
+    'texte_inc_meta_2' => 'vérifier les droits d’écriture',
663
+    'texte_inc_meta_3' => 'sur le répertoire <code>@repertoire@</code>.',
664
+    'texte_statut_en_cours_redaction' => 'en cours de rédaction',
665
+    'texte_statut_poubelle' => 'à la poubelle',
666
+    'texte_statut_propose_evaluation' => 'proposé à l’évaluation',
667
+    'texte_statut_publie' => 'publié en ligne',
668
+    'texte_statut_refuse' => 'refusé',
669
+    'titre_ajouter_mot_cle' => 'AJOUTER UN MOT-CLÉ :',
670
+    'titre_cadre_raccourcis' => 'RACCOURCIS :',
671
+    'titre_changer_couleur_interface' => 'Changer la couleur de l’interface',
672
+    'titre_image_admin_article' => 'Vous pouvez administrer cet article',
673
+    'titre_image_administrateur' => 'Administrateur',
674
+    'titre_image_aide' => 'De l’aide sur cet élément',
675
+    'titre_image_auteur_supprime' => 'Auteur supprimé',
676
+    'titre_image_redacteur' => 'Rédacteur sans accès',
677
+    'titre_image_redacteur_02' => 'Rédacteur',
678
+    'titre_image_selecteur' => 'Afficher la liste',
679
+    'titre_image_visiteur' => 'Visiteur',
680
+    'titre_joindre_document' => 'JOINDRE UN DOCUMENT',
681
+    'titre_mots_cles' => 'MOTS-CLÉS',
682
+    'titre_probleme_technique' => 'Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de votre compréhension.',
683
+    'titre_publier_document' => 'PUBLIER UN DOCUMENT DANS CETTE RUBRIQUE',
684
+    'titre_signatures_attente' => 'Signatures en attente de validation',
685
+    'titre_signatures_confirmees' => 'Signatures confirmées',
686
+    'titre_statistiques' => 'Statistiques du site',
687
+    'titre_titre_document' => 'Titre du document :',
688
+    'todo' => 'à venir',
689
+    'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions',
690
+    'trad_reference' => '(référence des traductions)',
691 691
 
692
-	// U
693
-	'upload_limit' => 'Ce fichier est trop gros pour le serveur ; la taille maximum autorisée en <i>upload</i> est de @max@.',
692
+    // U
693
+    'upload_limit' => 'Ce fichier est trop gros pour le serveur ; la taille maximum autorisée en <i>upload</i> est de @max@.',
694 694
 
695
-	// Z
696
-	'zbug_balise_b_aval' => ' : balise B en aval',
697
-	'zbug_balise_inexistante' => 'Balise @balise@ mal déclarée pour @from@',
698
-	'zbug_balise_sans_argument' => 'Argument manquant dans la balise @balise@',
699
-	'zbug_boucle' => 'boucle',
700
-	'zbug_boucle_recursive_undef' => 'Boucle récursive non définie : @nom@',
701
-	'zbug_calcul' => 'calcul',
702
-	'zbug_champ_hors_boucle' => 'Champ @champ@ hors boucle',
703
-	'zbug_champ_hors_critere' => 'Champ @champ@ hors critère @critere@',
704
-	'zbug_champ_hors_motif' => 'Champ @champ@ hors d’un contexte @motif@',
705
-	'zbug_code' => 'code',
706
-	'zbug_critere_inconnu' => 'Critère inconnu @critere@',
707
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} sur une table sans clef primaire atomique',
708
-	'zbug_distant_interdit' => 'Externe interdit', # Contexte : une base de données "externe", pas gérée par SPIP, mais que SPIP 1.8 sait utiliser dans ses boucles -- seul problèmes certaines manipulations sont interdites sur ces bases-là.
709
-	'zbug_doublon_table_sans_cle_primaire' => 'Doublons sur une table sans clef primaire atomique',
710
-	'zbug_doublon_table_sans_index' => 'Doublons sur une table sans index',
711
-	'zbug_erreur_boucle_double' => 'Double définition de la boucle @id@',
712
-	'zbug_erreur_boucle_fermant' => 'Boucle @id@ non fermée',
713
-	'zbug_erreur_boucle_syntaxe' => 'Syntaxe de la boucle @id@ incorrecte',
714
-	'zbug_erreur_compilation' => 'Erreur de compilation',
715
-	'zbug_erreur_execution_page' => 'Erreur d’exécution',
716
-	'zbug_erreur_filtre' => 'Filtre @filtre@ non défini',
717
-	'zbug_erreur_meme_parent' => 'Le critère {meme_parent} ne s’applique qu’aux boucles (FORUMS) ou (RUBRIQUES)',
718
-	'zbug_erreur_squelette' => 'Erreur(s) dans le squelette',
719
-	'zbug_hors_compilation' => 'Hors Compilation',
720
-	'zbug_info_erreur_squelette' => 'Erreur sur le site',
721
-	'zbug_inversion_ordre_inexistant' => 'Inversion d’un ordre inexistant',
722
-	'zbug_pagination_sans_critere' => 'Balise #PAGINATION sans critère {pagination} ou employé dans une boucle récursive',
723
-	'zbug_parametres_inclus_incorrects' => 'Paramètre d’inclusion incorrect : @param@',
724
-	'zbug_profile' => 'Temps de calcul : @time@',
725
-	'zbug_resultat' => 'résultat',
726
-	'zbug_serveur_indefini' => 'Serveur SQL indéfini',
727
-	'zbug_statistiques' => 'Statistiques des requêtes SQL classées par durée',
728
-	'zbug_table_inconnue' => 'Table SQL « @table@ » inconnue',
729
-	'zxml_connus_attributs' => 'attributs connus',
730
-	'zxml_de' => 'de',
731
-	'zxml_inconnu_attribut' => 'attribut inconnu',
732
-	'zxml_inconnu_balise' => 'balise inconnue',
733
-	'zxml_inconnu_entite' => 'entité inconnue',
734
-	'zxml_inconnu_id' => 'ID inconnu',
735
-	'zxml_mais_de' => 'mais de',
736
-	'zxml_non_conforme' => 'n’est pas conforme au motif',
737
-	'zxml_non_fils' => 'n’est pas un fils de',
738
-	'zxml_nonvide_balise' => 'balise non vide',
739
-	'zxml_obligatoire_attribut' => 'attribut obligatoire mais absent dans',
740
-	'zxml_succession_fils_incorrecte' => 'succession des fils incorrecte',
741
-	'zxml_survoler' => 'survoler pour voir les corrects',
742
-	'zxml_valeur_attribut' => 'valeur de l’attribut',
743
-	'zxml_vide_balise' => 'balise vide',
744
-	'zxml_vu' => 'vu auparavant'
695
+    // Z
696
+    'zbug_balise_b_aval' => ' : balise B en aval',
697
+    'zbug_balise_inexistante' => 'Balise @balise@ mal déclarée pour @from@',
698
+    'zbug_balise_sans_argument' => 'Argument manquant dans la balise @balise@',
699
+    'zbug_boucle' => 'boucle',
700
+    'zbug_boucle_recursive_undef' => 'Boucle récursive non définie : @nom@',
701
+    'zbug_calcul' => 'calcul',
702
+    'zbug_champ_hors_boucle' => 'Champ @champ@ hors boucle',
703
+    'zbug_champ_hors_critere' => 'Champ @champ@ hors critère @critere@',
704
+    'zbug_champ_hors_motif' => 'Champ @champ@ hors d’un contexte @motif@',
705
+    'zbug_code' => 'code',
706
+    'zbug_critere_inconnu' => 'Critère inconnu @critere@',
707
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} sur une table sans clef primaire atomique',
708
+    'zbug_distant_interdit' => 'Externe interdit', # Contexte : une base de données "externe", pas gérée par SPIP, mais que SPIP 1.8 sait utiliser dans ses boucles -- seul problèmes certaines manipulations sont interdites sur ces bases-là.
709
+    'zbug_doublon_table_sans_cle_primaire' => 'Doublons sur une table sans clef primaire atomique',
710
+    'zbug_doublon_table_sans_index' => 'Doublons sur une table sans index',
711
+    'zbug_erreur_boucle_double' => 'Double définition de la boucle @id@',
712
+    'zbug_erreur_boucle_fermant' => 'Boucle @id@ non fermée',
713
+    'zbug_erreur_boucle_syntaxe' => 'Syntaxe de la boucle @id@ incorrecte',
714
+    'zbug_erreur_compilation' => 'Erreur de compilation',
715
+    'zbug_erreur_execution_page' => 'Erreur d’exécution',
716
+    'zbug_erreur_filtre' => 'Filtre @filtre@ non défini',
717
+    'zbug_erreur_meme_parent' => 'Le critère {meme_parent} ne s’applique qu’aux boucles (FORUMS) ou (RUBRIQUES)',
718
+    'zbug_erreur_squelette' => 'Erreur(s) dans le squelette',
719
+    'zbug_hors_compilation' => 'Hors Compilation',
720
+    'zbug_info_erreur_squelette' => 'Erreur sur le site',
721
+    'zbug_inversion_ordre_inexistant' => 'Inversion d’un ordre inexistant',
722
+    'zbug_pagination_sans_critere' => 'Balise #PAGINATION sans critère {pagination} ou employé dans une boucle récursive',
723
+    'zbug_parametres_inclus_incorrects' => 'Paramètre d’inclusion incorrect : @param@',
724
+    'zbug_profile' => 'Temps de calcul : @time@',
725
+    'zbug_resultat' => 'résultat',
726
+    'zbug_serveur_indefini' => 'Serveur SQL indéfini',
727
+    'zbug_statistiques' => 'Statistiques des requêtes SQL classées par durée',
728
+    'zbug_table_inconnue' => 'Table SQL « @table@ » inconnue',
729
+    'zxml_connus_attributs' => 'attributs connus',
730
+    'zxml_de' => 'de',
731
+    'zxml_inconnu_attribut' => 'attribut inconnu',
732
+    'zxml_inconnu_balise' => 'balise inconnue',
733
+    'zxml_inconnu_entite' => 'entité inconnue',
734
+    'zxml_inconnu_id' => 'ID inconnu',
735
+    'zxml_mais_de' => 'mais de',
736
+    'zxml_non_conforme' => 'n’est pas conforme au motif',
737
+    'zxml_non_fils' => 'n’est pas un fils de',
738
+    'zxml_nonvide_balise' => 'balise non vide',
739
+    'zxml_obligatoire_attribut' => 'attribut obligatoire mais absent dans',
740
+    'zxml_succession_fils_incorrecte' => 'succession des fils incorrecte',
741
+    'zxml_survoler' => 'survoler pour voir les corrects',
742
+    'zxml_valeur_attribut' => 'valeur de l’attribut',
743
+    'zxml_vide_balise' => 'balise vide',
744
+    'zxml_vu' => 'vu auparavant'
745 745
 );
Please login to merge, or discard this patch.
ecrire/base/objets.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1578,7 +1578,7 @@
 block discarded – undo
1578 1578
 /**
1579 1579
  * Donne les informations de parenté directe d'un type d'objet si on en trouve
1580 1580
  * 
1581
- * @param $objet
1581
+ * @param string $objet
1582 1582
  *     Type de l'objet dont on cherche les informations de parent
1583 1583
  * @return array|false
1584 1584
  *     Retourne un tableau de tableau contenant les informations de type et de champ pour trouver le parent ou false sinon
Please login to merge, or discard this patch.
Braces   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -981,8 +981,9 @@  discard block
 block discarded – undo
981 981
 	static $tables = array();
982 982
 	if (!isset($tables[$serveur])){
983 983
 		$tables[$serveur] = array();
984
-		if (!function_exists("sql_alltable"))
985
-			include_spip("base/abstract_sql");
984
+		if (!function_exists("sql_alltable")) {
985
+					include_spip("base/abstract_sql");
986
+		}
986 987
 		$ts = sql_alltable('%',$serveur); // toutes les tables
987 988
 		foreach ($ts as $t){
988 989
 			$tables[$serveur][$t] = $t;
@@ -1384,8 +1385,7 @@  discard block
 block discarded – undo
1384 1385
 							'champ' 	=> $parent_methode['champ'],
1385 1386
 							'table'    => $table,
1386 1387
 						);
1387
-					}
1388
-					elseif (isset($parent_methode['champ_type'])) {
1388
+					} elseif (isset($parent_methode['champ_type'])) {
1389 1389
 						$parent = array(
1390 1390
 							'objet' 	 => $ligne[$parent_methode['champ_type']],
1391 1391
 							'id_objet' 	 => intval($ligne[$parent_methode['champ']]),
Please login to merge, or discard this patch.
Indentation   +1237 added lines, -1237 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
 /**
@@ -32,11 +32,11 @@  discard block
 block discarded – undo
32 32
  * @return void
33 33
  **/
34 34
 function array_set_merge(&$table, $index, $valeur) {
35
-	if (!isset($table[$index])) {
36
-		$table[$index] = $valeur;
37
-	} else {
38
-		$table[$index] = array_merge($table[$index], $valeur);
39
-	}
35
+    if (!isset($table[$index])) {
36
+        $table[$index] = $valeur;
37
+    } else {
38
+        $table[$index] = array_merge($table[$index], $valeur);
39
+    }
40 40
 }
41 41
 
42 42
 /**
@@ -53,439 +53,439 @@  discard block
 block discarded – undo
53 53
  * @return array|bool
54 54
  */
55 55
 function lister_tables_objets_sql($table_sql = null, $desc = array()) {
56
-	static $deja_la = false;
57
-	static $infos_tables = null;
58
-	static $md5 = null;
59
-	static $plugin_hash = null;
60
-
61
-	// plugins hash connu ? non si _CACHE_PLUGINS_OPT est pas encore chargé.
62
-	$_PLUGINS_HASH = defined('_PLUGINS_HASH') ? _PLUGINS_HASH : '!_CACHE_PLUGINS_OPT';
63
-
64
-	// prealablement recuperer les tables_principales
65
-	if (is_null($infos_tables) or $plugin_hash !== $_PLUGINS_HASH) {
66
-		// pas de reentrance (cas base/serial)
67
-		if ($deja_la) {
68
-			spip_log('Re-entrance anormale sur lister_tables_objets_sql : '
69
-				. var_export(debug_backtrace(), true), _LOG_CRITIQUE);
70
-
71
-			return ($table_sql === '::md5' ? $md5 : array());
72
-		}
73
-		$deja_la = true;
74
-		$plugin_hash = $_PLUGINS_HASH; // avant de lancer les pipelines
75
-
76
-		// recuperer les declarations explicites ancienne mode
77
-		// qui servent a completer declarer_tables_objets_sql
78
-		base_serial($GLOBALS['tables_principales']);
79
-		base_auxiliaires($GLOBALS['tables_auxiliaires']);
80
-		$infos_tables = array(
81
-			'spip_articles' => array(
82
-				'page' => 'article',
83
-				'texte_retour' => 'icone_retour_article',
84
-				'texte_modifier' => 'icone_modifier_article',
85
-				'texte_creer' => 'icone_ecrire_article',
86
-				'texte_objets' => 'public:articles',
87
-				'texte_objet' => 'public:article',
88
-				'texte_signale_edition' => 'texte_travail_article',
89
-				'info_aucun_objet' => 'info_aucun_article',
90
-				'info_1_objet' => 'info_1_article',
91
-				'info_nb_objets' => 'info_nb_articles',
92
-				'texte_logo_objet' => 'logo_article',
93
-				'texte_langue_objet' => 'titre_langue_article',
94
-				'texte_definir_comme_traduction_objet' => 'trad_lier',
95
-				'titre' => 'titre, lang',
96
-				'date' => 'date',
97
-				'principale' => 'oui',
98
-				'introduction_longueur' => '500',
99
-				'champs_editables' => array(
100
-					'surtitre',
101
-					'titre',
102
-					'soustitre',
103
-					'descriptif',
104
-					'nom_site',
105
-					'url_site',
106
-					'chapo',
107
-					'texte',
108
-					'ps',
109
-					'virtuel'
110
-				),
111
-				'champs_versionnes' => array(
112
-					'id_rubrique',
113
-					'surtitre',
114
-					'titre',
115
-					'soustitre',
116
-					'jointure_auteurs',
117
-					'descriptif',
118
-					'nom_site',
119
-					'url_site',
120
-					'chapo',
121
-					'texte',
122
-					'ps'
123
-				),
124
-				'field' => array(
125
-					'id_article' => 'bigint(21) NOT NULL',
126
-					'surtitre' => "text DEFAULT '' NOT NULL",
127
-					'titre' => "text DEFAULT '' NOT NULL",
128
-					'soustitre' => "text DEFAULT '' NOT NULL",
129
-					'id_rubrique' => "bigint(21) DEFAULT '0' NOT NULL",
130
-					'descriptif' => "text DEFAULT '' NOT NULL",
131
-					'chapo' => "mediumtext DEFAULT '' NOT NULL",
132
-					'texte' => "longtext DEFAULT '' NOT NULL",
133
-					'ps' => "mediumtext DEFAULT '' NOT NULL",
134
-					'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
135
-					'statut' => "varchar(10) DEFAULT '0' NOT NULL",
136
-					'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
137
-					'maj' => 'TIMESTAMP',
138
-					'export' => "VARCHAR(10) DEFAULT 'oui'",
139
-					'date_redac' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
140
-					'visites' => "integer DEFAULT '0' NOT NULL",
141
-					'referers' => "integer DEFAULT '0' NOT NULL",
142
-					'popularite' => "DOUBLE DEFAULT '0' NOT NULL",
143
-					'accepter_forum' => "CHAR(3) DEFAULT '' NOT NULL",
144
-					'date_modif' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
145
-					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
146
-					'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
147
-					'id_trad' => "bigint(21) DEFAULT '0' NOT NULL",
148
-					'nom_site' => "tinytext DEFAULT '' NOT NULL",
149
-					'url_site' => "text DEFAULT '' NOT NULL",
150
-					'virtuel' => "text DEFAULT '' NOT NULL",
151
-				),
152
-				'key' => array(
153
-					'PRIMARY KEY' => 'id_article',
154
-					'KEY id_rubrique' => 'id_rubrique',
155
-					'KEY id_secteur' => 'id_secteur',
156
-					'KEY id_trad' => 'id_trad',
157
-					'KEY lang' => 'lang',
158
-					'KEY statut' => 'statut, date',
159
-				),
160
-				'join' => array(
161
-					'id_article' => 'id_article',
162
-					'id_rubrique' => 'id_rubrique'
163
-				),
164
-				'parent' => [
165
-					['type' => 'rubrique', 'champ' => 'id_rubrique']
166
-				],
167
-				'rechercher_champs' => array(
168
-					'surtitre' => 5,
169
-					'titre' => 8,
170
-					'soustitre' => 5,
171
-					'chapo' => 3,
172
-					'texte' => 1,
173
-					'ps' => 1,
174
-					'nom_site' => 1,
175
-					'url_site' => 1,
176
-					'descriptif' => 4
177
-				),
178
-				'rechercher_jointures' => array(
179
-					'auteur' => array('nom' => 10),
180
-				),
181
-				'statut' => array(
182
-					array(
183
-						'champ' => 'statut',
184
-						'publie' => 'publie',
185
-						'previsu' => 'publie,prop,prepa/auteur',
186
-						'post_date' => 'date',
187
-						'exception' => array('statut', 'tout')
188
-					)
189
-				),
190
-				'statut_titres' => array(
191
-					'prepa' => 'info_article_redaction',
192
-					'prop' => 'info_article_propose',
193
-					'publie' => 'info_article_publie',
194
-					'refuse' => 'info_article_refuse',
195
-					'poubelle' => 'info_article_supprime'
196
-				),
197
-				'statut_textes_instituer' => array(
198
-					'prepa' => 'texte_statut_en_cours_redaction',
199
-					'prop' => 'texte_statut_propose_evaluation',
200
-					'publie' => 'texte_statut_publie',
201
-					'refuse' => 'texte_statut_refuse',
202
-					'poubelle' => 'texte_statut_poubelle',
203
-				),
204
-				'texte_changer_statut' => 'texte_article_statut',
205
-				'aide_changer_statut' => 'artstatut',
206
-				'tables_jointures' => array(
207
-					'profondeur' => 'rubriques',
208
-					#'id_auteur' => 'auteurs_liens' // declaration generique plus bas
209
-				),
210
-			),
211
-			'spip_auteurs' => array(
212
-				'page' => 'auteur',
213
-				'texte_retour' => 'icone_retour',
214
-				'texte_ajouter' => 'titre_ajouter_un_auteur',
215
-				'texte_modifier' => 'admin_modifier_auteur',
216
-				'texte_objets' => 'icone_auteurs',
217
-				'texte_objet' => 'public:auteur',
218
-				'info_aucun_objet' => 'info_aucun_auteur',
219
-				'info_1_objet' => 'info_1_auteur',
220
-				'info_nb_objets' => 'info_nb_auteurs',
221
-				'texte_logo_objet' => 'logo_auteur',
222
-				'texte_creer_associer' => 'creer_et_associer_un_auteur',
223
-				'titre' => "nom AS titre, '' AS lang",
224
-				'date' => 'date',
225
-				'principale' => 'oui',
226
-				'champs_editables' => array('nom', 'email', 'bio', 'nom_site', 'url_site', 'imessage', 'pgp'),
227
-				'champs_versionnes' => array('nom', 'bio', 'email', 'nom_site', 'url_site', 'login'),
228
-				'field' => array(
229
-					'id_auteur' => 'bigint(21) NOT NULL',
230
-					'nom' => "text DEFAULT '' NOT NULL",
231
-					'bio' => "text DEFAULT '' NOT NULL",
232
-					'email' => "tinytext DEFAULT '' NOT NULL",
233
-					'nom_site' => "tinytext DEFAULT '' NOT NULL",
234
-					'url_site' => "text DEFAULT '' NOT NULL",
235
-					'login' => 'VARCHAR(255) BINARY',
236
-					'pass' => "tinytext DEFAULT '' NOT NULL",
237
-					'low_sec' => "tinytext DEFAULT '' NOT NULL",
238
-					'statut' => "varchar(255)  DEFAULT '0' NOT NULL",
239
-					'webmestre' => "varchar(3)  DEFAULT 'non' NOT NULL",
240
-					'maj' => 'TIMESTAMP',
241
-					'pgp' => "TEXT DEFAULT '' NOT NULL",
242
-					'htpass' => "tinytext DEFAULT '' NOT NULL",
243
-					'en_ligne' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
244
-					'alea_actuel' => 'tinytext',
245
-					'alea_futur' => 'tinytext',
246
-					'prefs' => 'text',
247
-					'cookie_oubli' => 'tinytext',
248
-					'source' => "VARCHAR(10) DEFAULT 'spip' NOT NULL",
249
-					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
250
-					'imessage' => "VARCHAR(3) DEFAULT '' NOT NULL"
251
-				),
252
-				'key' => array(
253
-					'PRIMARY KEY' => 'id_auteur',
254
-					'KEY login' => 'login',
255
-					'KEY statut' => 'statut',
256
-					'KEY en_ligne' => 'en_ligne',
257
-				),
258
-				'join' => array(
259
-					'id_auteur' => 'id_auteur',
260
-					'login' => 'login'
261
-				),
262
-				'rechercher_champs' => array(
263
-					'nom' => 5,
264
-					'bio' => 1,
265
-					'email' => 1,
266
-					'nom_site' => 1,
267
-					'url_site' => 1,
268
-					'login' => 1
269
-				),
270
-				// 2 conditions pour les auteurs : statut!=poubelle,
271
-				// et avoir des articles publies
272
-				'statut' => array(
273
-					array(
274
-						'champ' => 'statut',
275
-						'publie' => '!5poubelle',
276
-						'previsu' => '!5poubelle',
277
-						'exception' => 'statut'
278
-					),
279
-					array(
280
-						'champ' => array(
281
-							array('spip_auteurs_liens', 'id_auteur'),
282
-							array(
283
-								'spip_articles',
284
-								array('id_objet', 'id_article', 'objet', 'article')
285
-							),
286
-							'statut'
287
-						),
288
-						'publie' => 'publie',
289
-						'previsu' => '!',
290
-						'post_date' => 'date',
291
-						'exception' => array('statut', 'lien', 'tout')
292
-					),
293
-				),
294
-				'statut_images' => array(
295
-					'auteur-6forum-16.png',
296
-					'0minirezo' => 'auteur-0minirezo-16.png',
297
-					'1comite' => 'auteur-1comite-16.png',
298
-					'6forum' => 'auteur-6forum-16.png',
299
-					'5poubelle' => 'auteur-5poubelle-16.png',
300
-					'nouveau' => ''
301
-				),
302
-				'statut_titres' => array(
303
-					'titre_image_visiteur',
304
-					'0minirezo' => 'titre_image_administrateur',
305
-					'1comite' => 'titre_image_redacteur_02',
306
-					'6forum' => 'titre_image_visiteur',
307
-					'5poubelle' => 'titre_image_auteur_supprime',
308
-				),
309
-				'tables_jointures' => array(#'auteurs_liens' // declaration generique plus bas
310
-				),
311
-			),
312
-			'spip_rubriques' => array(
313
-				'page' => 'rubrique',
314
-				'url_voir' => 'rubrique',
315
-				'url_edit' => 'rubrique_edit',
316
-				'texte_retour' => 'icone_retour',
317
-				'texte_objets' => 'public:rubriques',
318
-				'texte_objet' => 'public:rubrique',
319
-				'texte_modifier' => 'icone_modifier_rubrique',
320
-				'texte_creer' => 'icone_creer_rubrique',
321
-				'texte_ajouter' => 'titre_ajouter_une_rubrique',
322
-				'texte_creer_associer' => 'creer_et_associer_une_rubrique',
323
-				'info_aucun_objet' => 'info_aucun_rubrique',
324
-				'info_1_objet' => 'info_1_rubrique',
325
-				'info_nb_objets' => 'info_nb_rubriques',
326
-				'texte_logo_objet' => 'logo_rubrique',
327
-				'texte_langue_objet' => 'titre_langue_rubrique',
328
-				'texte_definir_comme_traduction_objet' => 'texte_definir_comme_traduction_rubrique',
329
-				'titre' => 'titre, lang',
330
-				'date' => 'date',
331
-				'principale' => 'oui',
332
-				'introduction_longueur' => '600',
333
-				'champs_editables' => array('titre', 'texte', 'descriptif', 'extra'),
334
-				'champs_versionnes' => array('titre', 'descriptif', 'texte'),
335
-				'field' => array(
336
-					'id_rubrique' => 'bigint(21) NOT NULL',
337
-					'id_parent' => "bigint(21) DEFAULT '0' NOT NULL",
338
-					'titre' => "text DEFAULT '' NOT NULL",
339
-					'descriptif' => "text DEFAULT '' NOT NULL",
340
-					'texte' => "longtext DEFAULT '' NOT NULL",
341
-					'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
342
-					'maj' => 'TIMESTAMP',
343
-					'statut' => "varchar(10) DEFAULT '0' NOT NULL",
344
-					'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
345
-					'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
346
-					'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
347
-					'statut_tmp' => "varchar(10) DEFAULT '0' NOT NULL",
348
-					'date_tmp' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
349
-					'profondeur' => "smallint(5) DEFAULT '0' NOT NULL"
350
-				),
351
-				'key' => array(
352
-					'PRIMARY KEY' => 'id_rubrique',
353
-					'KEY lang' => 'lang',
354
-					'KEY id_parent' => 'id_parent',
355
-				),
356
-				'parent' => [
357
-					['type' => 'rubrique', 'champ' => 'id_parent']
358
-				],
359
-				'rechercher_champs' => array(
360
-					'titre' => 8,
361
-					'descriptif' => 5,
362
-					'texte' => 1
363
-				),
364
-				'statut' => array(
365
-					array(
366
-						'champ' => 'statut',
367
-						'publie' => 'publie',
368
-						'previsu' => '!',
369
-						'exception' => array('statut', 'tout')
370
-					),
371
-				),
372
-				'tables_jointures' => array(#'id_auteur' => 'auteurs_liens' // declaration generique plus bas
373
-				),
374
-			),
375
-			// toutes les tables ont le droit a une jointure sur les auteurs
376
-			array('tables_jointures' => array('id_auteur' => 'auteurs_liens'))
377
-		);
378
-
379
-		// avant d'appeller les pipeline qui peuvent generer une reentrance a l'install
380
-		// initialiser la signature
381
-		$md5 = md5(serialize($infos_tables));
382
-
383
-		$GLOBALS['tables_principales'] = pipeline('declarer_tables_principales', $GLOBALS['tables_principales']);
384
-		$GLOBALS['tables_auxiliaires'] = pipeline('declarer_tables_auxiliaires', $GLOBALS['tables_auxiliaires']);
385
-		$infos_tables = pipeline('declarer_tables_objets_sql', $infos_tables);
386
-
387
-		// completer les informations manquantes ou implicites
388
-		$all = array();
389
-		foreach (array_keys($infos_tables) as $t) {
390
-			// les cles numeriques servent a declarer
391
-			// les proprietes applicables a tous les objets
392
-			// on les mets de cote
393
-			if (is_numeric($t)) {
394
-				$all = array_merge_recursive($all, $infos_tables[$t]);
395
-				unset($infos_tables[$t]);
396
-			} else {
397
-				$infos_tables[$t] = renseigner_table_objet_sql($t, $infos_tables[$t]);
398
-			}
399
-		}
400
-
401
-		// repercuter les proprietes generales communes a tous les objets
402
-		foreach (array_keys($infos_tables) as $t) {
403
-			foreach ($all as $i => $v) {
404
-				if (in_array($i, array('tables_jointures', 'champs_versionnes'))) {
405
-					$add = $all[$i];
406
-					// eviter les doublons de declaration de table jointure (ex des mots sur auteurs)
407
-					// pour les declarations generiques avec cles numeriques
408
-					if ($i == 'tables_jointures' and isset($infos_tables[$t][$i]) and count($infos_tables[$t][$i])) {
409
-						$doublons = array_intersect($infos_tables[$t][$i], $add);
410
-						foreach ($doublons as $d) {
411
-							if (is_numeric(array_search($d, $infos_tables[$t][$i]))
412
-								and is_numeric($k = array_search($d, $add))
413
-							) {
414
-								unset($add[$k]);
415
-							}
416
-						}
417
-					}
418
-					$infos_tables[$t][$i] = array_merge(isset($infos_tables[$t][$i]) ? $infos_tables[$t][$i] : array(), $add);
419
-				} else {
420
-					$infos_tables[$t][$i] = array_merge_recursive(
421
-						isset($infos_tables[$t][$i]) ? $infos_tables[$t][$i] : array(),
422
-						$all[$i]
423
-					);
424
-				}
425
-			}
426
-		}
427
-
428
-		// completer les tables principales et auxiliaires
429
-		// avec celles declarees uniquement dans declarer_table_objets_sql
430
-		// pour assurer la compat en transition
431
-		foreach ($infos_tables as $table => $infos) {
432
-			$principale_ou_auxiliaire = ($infos['principale'] ? 'tables_principales' : 'tables_auxiliaires');
433
-			// memoriser des champs eventuels declares par des plugins dans le pipeline tables_xxx
434
-			// qui a ete appelle avant
435
-			$mem = (isset($GLOBALS[$principale_ou_auxiliaire][$table]) ? $GLOBALS[$principale_ou_auxiliaire][$table] : array());
436
-			// l'ajouter au tableau
437
-			$GLOBALS[$principale_ou_auxiliaire][$table] = array();
438
-			if (isset($infos['field']) and isset($infos['key'])) {
439
-				foreach (array('field', 'key', 'join') as $k) {
440
-					if (isset($infos_tables[$table][$k])) {
441
-						$GLOBALS[$principale_ou_auxiliaire][$table][$k] = &$infos_tables[$table][$k];
442
-					}
443
-				}
444
-			} else {
445
-				// ici on ne renvoie que les declarations, donc RIEN
446
-				// pour avoir la vrai description en base, il faut passer par trouver_table
447
-				$GLOBALS[$principale_ou_auxiliaire][$table] = array();
448
-			}
449
-			if (count($mem)) {
450
-				foreach (array_keys($mem) as $k) {
451
-					if (isset($GLOBALS[$principale_ou_auxiliaire][$table][$k])) {
452
-						$GLOBALS[$principale_ou_auxiliaire][$table][$k] = array_merge(
453
-							$GLOBALS[$principale_ou_auxiliaire][$table][$k],
454
-							$mem[$k]
455
-						);
456
-					} else {
457
-						$GLOBALS[$principale_ou_auxiliaire][$table][$k] = $mem[$k];
458
-					}
459
-				}
460
-			}
461
-		}
462
-
463
-		// recuperer les interfaces (table_titre, table_date)
464
-		// on ne le fait que dans un second temps pour que table_objet soit fonctionnel
465
-		// dans le pipeline de declarer_tables_interfaces
466
-		include_spip('public/interfaces');
467
-		foreach (array_keys($infos_tables) as $t) {
468
-			$infos_tables[$t] = renseigner_table_objet_interfaces($t, $infos_tables[$t]);
469
-		}
470
-
471
-		$deja_la = false;
472
-		// signature
473
-		$md5 = md5(serialize($infos_tables));
474
-	}
475
-	if ($table_sql === '::md5') {
476
-		return $md5;
477
-	}
478
-	if ($table_sql and !isset($infos_tables[$table_sql])) {
479
-		#$desc = renseigner_table_objet_sql($table_sql,$desc);
480
-		$desc = renseigner_table_objet_interfaces($table_sql, $desc);
481
-
482
-		return $desc;
483
-	}
484
-	if ($table_sql) {
485
-		return isset($infos_tables[$table_sql]) ? $infos_tables[$table_sql] : array();
486
-	}
487
-
488
-	return $infos_tables;
56
+    static $deja_la = false;
57
+    static $infos_tables = null;
58
+    static $md5 = null;
59
+    static $plugin_hash = null;
60
+
61
+    // plugins hash connu ? non si _CACHE_PLUGINS_OPT est pas encore chargé.
62
+    $_PLUGINS_HASH = defined('_PLUGINS_HASH') ? _PLUGINS_HASH : '!_CACHE_PLUGINS_OPT';
63
+
64
+    // prealablement recuperer les tables_principales
65
+    if (is_null($infos_tables) or $plugin_hash !== $_PLUGINS_HASH) {
66
+        // pas de reentrance (cas base/serial)
67
+        if ($deja_la) {
68
+            spip_log('Re-entrance anormale sur lister_tables_objets_sql : '
69
+                . var_export(debug_backtrace(), true), _LOG_CRITIQUE);
70
+
71
+            return ($table_sql === '::md5' ? $md5 : array());
72
+        }
73
+        $deja_la = true;
74
+        $plugin_hash = $_PLUGINS_HASH; // avant de lancer les pipelines
75
+
76
+        // recuperer les declarations explicites ancienne mode
77
+        // qui servent a completer declarer_tables_objets_sql
78
+        base_serial($GLOBALS['tables_principales']);
79
+        base_auxiliaires($GLOBALS['tables_auxiliaires']);
80
+        $infos_tables = array(
81
+            'spip_articles' => array(
82
+                'page' => 'article',
83
+                'texte_retour' => 'icone_retour_article',
84
+                'texte_modifier' => 'icone_modifier_article',
85
+                'texte_creer' => 'icone_ecrire_article',
86
+                'texte_objets' => 'public:articles',
87
+                'texte_objet' => 'public:article',
88
+                'texte_signale_edition' => 'texte_travail_article',
89
+                'info_aucun_objet' => 'info_aucun_article',
90
+                'info_1_objet' => 'info_1_article',
91
+                'info_nb_objets' => 'info_nb_articles',
92
+                'texte_logo_objet' => 'logo_article',
93
+                'texte_langue_objet' => 'titre_langue_article',
94
+                'texte_definir_comme_traduction_objet' => 'trad_lier',
95
+                'titre' => 'titre, lang',
96
+                'date' => 'date',
97
+                'principale' => 'oui',
98
+                'introduction_longueur' => '500',
99
+                'champs_editables' => array(
100
+                    'surtitre',
101
+                    'titre',
102
+                    'soustitre',
103
+                    'descriptif',
104
+                    'nom_site',
105
+                    'url_site',
106
+                    'chapo',
107
+                    'texte',
108
+                    'ps',
109
+                    'virtuel'
110
+                ),
111
+                'champs_versionnes' => array(
112
+                    'id_rubrique',
113
+                    'surtitre',
114
+                    'titre',
115
+                    'soustitre',
116
+                    'jointure_auteurs',
117
+                    'descriptif',
118
+                    'nom_site',
119
+                    'url_site',
120
+                    'chapo',
121
+                    'texte',
122
+                    'ps'
123
+                ),
124
+                'field' => array(
125
+                    'id_article' => 'bigint(21) NOT NULL',
126
+                    'surtitre' => "text DEFAULT '' NOT NULL",
127
+                    'titre' => "text DEFAULT '' NOT NULL",
128
+                    'soustitre' => "text DEFAULT '' NOT NULL",
129
+                    'id_rubrique' => "bigint(21) DEFAULT '0' NOT NULL",
130
+                    'descriptif' => "text DEFAULT '' NOT NULL",
131
+                    'chapo' => "mediumtext DEFAULT '' NOT NULL",
132
+                    'texte' => "longtext DEFAULT '' NOT NULL",
133
+                    'ps' => "mediumtext DEFAULT '' NOT NULL",
134
+                    'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
135
+                    'statut' => "varchar(10) DEFAULT '0' NOT NULL",
136
+                    'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
137
+                    'maj' => 'TIMESTAMP',
138
+                    'export' => "VARCHAR(10) DEFAULT 'oui'",
139
+                    'date_redac' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
140
+                    'visites' => "integer DEFAULT '0' NOT NULL",
141
+                    'referers' => "integer DEFAULT '0' NOT NULL",
142
+                    'popularite' => "DOUBLE DEFAULT '0' NOT NULL",
143
+                    'accepter_forum' => "CHAR(3) DEFAULT '' NOT NULL",
144
+                    'date_modif' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
145
+                    'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
146
+                    'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
147
+                    'id_trad' => "bigint(21) DEFAULT '0' NOT NULL",
148
+                    'nom_site' => "tinytext DEFAULT '' NOT NULL",
149
+                    'url_site' => "text DEFAULT '' NOT NULL",
150
+                    'virtuel' => "text DEFAULT '' NOT NULL",
151
+                ),
152
+                'key' => array(
153
+                    'PRIMARY KEY' => 'id_article',
154
+                    'KEY id_rubrique' => 'id_rubrique',
155
+                    'KEY id_secteur' => 'id_secteur',
156
+                    'KEY id_trad' => 'id_trad',
157
+                    'KEY lang' => 'lang',
158
+                    'KEY statut' => 'statut, date',
159
+                ),
160
+                'join' => array(
161
+                    'id_article' => 'id_article',
162
+                    'id_rubrique' => 'id_rubrique'
163
+                ),
164
+                'parent' => [
165
+                    ['type' => 'rubrique', 'champ' => 'id_rubrique']
166
+                ],
167
+                'rechercher_champs' => array(
168
+                    'surtitre' => 5,
169
+                    'titre' => 8,
170
+                    'soustitre' => 5,
171
+                    'chapo' => 3,
172
+                    'texte' => 1,
173
+                    'ps' => 1,
174
+                    'nom_site' => 1,
175
+                    'url_site' => 1,
176
+                    'descriptif' => 4
177
+                ),
178
+                'rechercher_jointures' => array(
179
+                    'auteur' => array('nom' => 10),
180
+                ),
181
+                'statut' => array(
182
+                    array(
183
+                        'champ' => 'statut',
184
+                        'publie' => 'publie',
185
+                        'previsu' => 'publie,prop,prepa/auteur',
186
+                        'post_date' => 'date',
187
+                        'exception' => array('statut', 'tout')
188
+                    )
189
+                ),
190
+                'statut_titres' => array(
191
+                    'prepa' => 'info_article_redaction',
192
+                    'prop' => 'info_article_propose',
193
+                    'publie' => 'info_article_publie',
194
+                    'refuse' => 'info_article_refuse',
195
+                    'poubelle' => 'info_article_supprime'
196
+                ),
197
+                'statut_textes_instituer' => array(
198
+                    'prepa' => 'texte_statut_en_cours_redaction',
199
+                    'prop' => 'texte_statut_propose_evaluation',
200
+                    'publie' => 'texte_statut_publie',
201
+                    'refuse' => 'texte_statut_refuse',
202
+                    'poubelle' => 'texte_statut_poubelle',
203
+                ),
204
+                'texte_changer_statut' => 'texte_article_statut',
205
+                'aide_changer_statut' => 'artstatut',
206
+                'tables_jointures' => array(
207
+                    'profondeur' => 'rubriques',
208
+                    #'id_auteur' => 'auteurs_liens' // declaration generique plus bas
209
+                ),
210
+            ),
211
+            'spip_auteurs' => array(
212
+                'page' => 'auteur',
213
+                'texte_retour' => 'icone_retour',
214
+                'texte_ajouter' => 'titre_ajouter_un_auteur',
215
+                'texte_modifier' => 'admin_modifier_auteur',
216
+                'texte_objets' => 'icone_auteurs',
217
+                'texte_objet' => 'public:auteur',
218
+                'info_aucun_objet' => 'info_aucun_auteur',
219
+                'info_1_objet' => 'info_1_auteur',
220
+                'info_nb_objets' => 'info_nb_auteurs',
221
+                'texte_logo_objet' => 'logo_auteur',
222
+                'texte_creer_associer' => 'creer_et_associer_un_auteur',
223
+                'titre' => "nom AS titre, '' AS lang",
224
+                'date' => 'date',
225
+                'principale' => 'oui',
226
+                'champs_editables' => array('nom', 'email', 'bio', 'nom_site', 'url_site', 'imessage', 'pgp'),
227
+                'champs_versionnes' => array('nom', 'bio', 'email', 'nom_site', 'url_site', 'login'),
228
+                'field' => array(
229
+                    'id_auteur' => 'bigint(21) NOT NULL',
230
+                    'nom' => "text DEFAULT '' NOT NULL",
231
+                    'bio' => "text DEFAULT '' NOT NULL",
232
+                    'email' => "tinytext DEFAULT '' NOT NULL",
233
+                    'nom_site' => "tinytext DEFAULT '' NOT NULL",
234
+                    'url_site' => "text DEFAULT '' NOT NULL",
235
+                    'login' => 'VARCHAR(255) BINARY',
236
+                    'pass' => "tinytext DEFAULT '' NOT NULL",
237
+                    'low_sec' => "tinytext DEFAULT '' NOT NULL",
238
+                    'statut' => "varchar(255)  DEFAULT '0' NOT NULL",
239
+                    'webmestre' => "varchar(3)  DEFAULT 'non' NOT NULL",
240
+                    'maj' => 'TIMESTAMP',
241
+                    'pgp' => "TEXT DEFAULT '' NOT NULL",
242
+                    'htpass' => "tinytext DEFAULT '' NOT NULL",
243
+                    'en_ligne' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
244
+                    'alea_actuel' => 'tinytext',
245
+                    'alea_futur' => 'tinytext',
246
+                    'prefs' => 'text',
247
+                    'cookie_oubli' => 'tinytext',
248
+                    'source' => "VARCHAR(10) DEFAULT 'spip' NOT NULL",
249
+                    'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
250
+                    'imessage' => "VARCHAR(3) DEFAULT '' NOT NULL"
251
+                ),
252
+                'key' => array(
253
+                    'PRIMARY KEY' => 'id_auteur',
254
+                    'KEY login' => 'login',
255
+                    'KEY statut' => 'statut',
256
+                    'KEY en_ligne' => 'en_ligne',
257
+                ),
258
+                'join' => array(
259
+                    'id_auteur' => 'id_auteur',
260
+                    'login' => 'login'
261
+                ),
262
+                'rechercher_champs' => array(
263
+                    'nom' => 5,
264
+                    'bio' => 1,
265
+                    'email' => 1,
266
+                    'nom_site' => 1,
267
+                    'url_site' => 1,
268
+                    'login' => 1
269
+                ),
270
+                // 2 conditions pour les auteurs : statut!=poubelle,
271
+                // et avoir des articles publies
272
+                'statut' => array(
273
+                    array(
274
+                        'champ' => 'statut',
275
+                        'publie' => '!5poubelle',
276
+                        'previsu' => '!5poubelle',
277
+                        'exception' => 'statut'
278
+                    ),
279
+                    array(
280
+                        'champ' => array(
281
+                            array('spip_auteurs_liens', 'id_auteur'),
282
+                            array(
283
+                                'spip_articles',
284
+                                array('id_objet', 'id_article', 'objet', 'article')
285
+                            ),
286
+                            'statut'
287
+                        ),
288
+                        'publie' => 'publie',
289
+                        'previsu' => '!',
290
+                        'post_date' => 'date',
291
+                        'exception' => array('statut', 'lien', 'tout')
292
+                    ),
293
+                ),
294
+                'statut_images' => array(
295
+                    'auteur-6forum-16.png',
296
+                    '0minirezo' => 'auteur-0minirezo-16.png',
297
+                    '1comite' => 'auteur-1comite-16.png',
298
+                    '6forum' => 'auteur-6forum-16.png',
299
+                    '5poubelle' => 'auteur-5poubelle-16.png',
300
+                    'nouveau' => ''
301
+                ),
302
+                'statut_titres' => array(
303
+                    'titre_image_visiteur',
304
+                    '0minirezo' => 'titre_image_administrateur',
305
+                    '1comite' => 'titre_image_redacteur_02',
306
+                    '6forum' => 'titre_image_visiteur',
307
+                    '5poubelle' => 'titre_image_auteur_supprime',
308
+                ),
309
+                'tables_jointures' => array(#'auteurs_liens' // declaration generique plus bas
310
+                ),
311
+            ),
312
+            'spip_rubriques' => array(
313
+                'page' => 'rubrique',
314
+                'url_voir' => 'rubrique',
315
+                'url_edit' => 'rubrique_edit',
316
+                'texte_retour' => 'icone_retour',
317
+                'texte_objets' => 'public:rubriques',
318
+                'texte_objet' => 'public:rubrique',
319
+                'texte_modifier' => 'icone_modifier_rubrique',
320
+                'texte_creer' => 'icone_creer_rubrique',
321
+                'texte_ajouter' => 'titre_ajouter_une_rubrique',
322
+                'texte_creer_associer' => 'creer_et_associer_une_rubrique',
323
+                'info_aucun_objet' => 'info_aucun_rubrique',
324
+                'info_1_objet' => 'info_1_rubrique',
325
+                'info_nb_objets' => 'info_nb_rubriques',
326
+                'texte_logo_objet' => 'logo_rubrique',
327
+                'texte_langue_objet' => 'titre_langue_rubrique',
328
+                'texte_definir_comme_traduction_objet' => 'texte_definir_comme_traduction_rubrique',
329
+                'titre' => 'titre, lang',
330
+                'date' => 'date',
331
+                'principale' => 'oui',
332
+                'introduction_longueur' => '600',
333
+                'champs_editables' => array('titre', 'texte', 'descriptif', 'extra'),
334
+                'champs_versionnes' => array('titre', 'descriptif', 'texte'),
335
+                'field' => array(
336
+                    'id_rubrique' => 'bigint(21) NOT NULL',
337
+                    'id_parent' => "bigint(21) DEFAULT '0' NOT NULL",
338
+                    'titre' => "text DEFAULT '' NOT NULL",
339
+                    'descriptif' => "text DEFAULT '' NOT NULL",
340
+                    'texte' => "longtext DEFAULT '' NOT NULL",
341
+                    'id_secteur' => "bigint(21) DEFAULT '0' NOT NULL",
342
+                    'maj' => 'TIMESTAMP',
343
+                    'statut' => "varchar(10) DEFAULT '0' NOT NULL",
344
+                    'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
345
+                    'lang' => "VARCHAR(10) DEFAULT '' NOT NULL",
346
+                    'langue_choisie' => "VARCHAR(3) DEFAULT 'non'",
347
+                    'statut_tmp' => "varchar(10) DEFAULT '0' NOT NULL",
348
+                    'date_tmp' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
349
+                    'profondeur' => "smallint(5) DEFAULT '0' NOT NULL"
350
+                ),
351
+                'key' => array(
352
+                    'PRIMARY KEY' => 'id_rubrique',
353
+                    'KEY lang' => 'lang',
354
+                    'KEY id_parent' => 'id_parent',
355
+                ),
356
+                'parent' => [
357
+                    ['type' => 'rubrique', 'champ' => 'id_parent']
358
+                ],
359
+                'rechercher_champs' => array(
360
+                    'titre' => 8,
361
+                    'descriptif' => 5,
362
+                    'texte' => 1
363
+                ),
364
+                'statut' => array(
365
+                    array(
366
+                        'champ' => 'statut',
367
+                        'publie' => 'publie',
368
+                        'previsu' => '!',
369
+                        'exception' => array('statut', 'tout')
370
+                    ),
371
+                ),
372
+                'tables_jointures' => array(#'id_auteur' => 'auteurs_liens' // declaration generique plus bas
373
+                ),
374
+            ),
375
+            // toutes les tables ont le droit a une jointure sur les auteurs
376
+            array('tables_jointures' => array('id_auteur' => 'auteurs_liens'))
377
+        );
378
+
379
+        // avant d'appeller les pipeline qui peuvent generer une reentrance a l'install
380
+        // initialiser la signature
381
+        $md5 = md5(serialize($infos_tables));
382
+
383
+        $GLOBALS['tables_principales'] = pipeline('declarer_tables_principales', $GLOBALS['tables_principales']);
384
+        $GLOBALS['tables_auxiliaires'] = pipeline('declarer_tables_auxiliaires', $GLOBALS['tables_auxiliaires']);
385
+        $infos_tables = pipeline('declarer_tables_objets_sql', $infos_tables);
386
+
387
+        // completer les informations manquantes ou implicites
388
+        $all = array();
389
+        foreach (array_keys($infos_tables) as $t) {
390
+            // les cles numeriques servent a declarer
391
+            // les proprietes applicables a tous les objets
392
+            // on les mets de cote
393
+            if (is_numeric($t)) {
394
+                $all = array_merge_recursive($all, $infos_tables[$t]);
395
+                unset($infos_tables[$t]);
396
+            } else {
397
+                $infos_tables[$t] = renseigner_table_objet_sql($t, $infos_tables[$t]);
398
+            }
399
+        }
400
+
401
+        // repercuter les proprietes generales communes a tous les objets
402
+        foreach (array_keys($infos_tables) as $t) {
403
+            foreach ($all as $i => $v) {
404
+                if (in_array($i, array('tables_jointures', 'champs_versionnes'))) {
405
+                    $add = $all[$i];
406
+                    // eviter les doublons de declaration de table jointure (ex des mots sur auteurs)
407
+                    // pour les declarations generiques avec cles numeriques
408
+                    if ($i == 'tables_jointures' and isset($infos_tables[$t][$i]) and count($infos_tables[$t][$i])) {
409
+                        $doublons = array_intersect($infos_tables[$t][$i], $add);
410
+                        foreach ($doublons as $d) {
411
+                            if (is_numeric(array_search($d, $infos_tables[$t][$i]))
412
+                                and is_numeric($k = array_search($d, $add))
413
+                            ) {
414
+                                unset($add[$k]);
415
+                            }
416
+                        }
417
+                    }
418
+                    $infos_tables[$t][$i] = array_merge(isset($infos_tables[$t][$i]) ? $infos_tables[$t][$i] : array(), $add);
419
+                } else {
420
+                    $infos_tables[$t][$i] = array_merge_recursive(
421
+                        isset($infos_tables[$t][$i]) ? $infos_tables[$t][$i] : array(),
422
+                        $all[$i]
423
+                    );
424
+                }
425
+            }
426
+        }
427
+
428
+        // completer les tables principales et auxiliaires
429
+        // avec celles declarees uniquement dans declarer_table_objets_sql
430
+        // pour assurer la compat en transition
431
+        foreach ($infos_tables as $table => $infos) {
432
+            $principale_ou_auxiliaire = ($infos['principale'] ? 'tables_principales' : 'tables_auxiliaires');
433
+            // memoriser des champs eventuels declares par des plugins dans le pipeline tables_xxx
434
+            // qui a ete appelle avant
435
+            $mem = (isset($GLOBALS[$principale_ou_auxiliaire][$table]) ? $GLOBALS[$principale_ou_auxiliaire][$table] : array());
436
+            // l'ajouter au tableau
437
+            $GLOBALS[$principale_ou_auxiliaire][$table] = array();
438
+            if (isset($infos['field']) and isset($infos['key'])) {
439
+                foreach (array('field', 'key', 'join') as $k) {
440
+                    if (isset($infos_tables[$table][$k])) {
441
+                        $GLOBALS[$principale_ou_auxiliaire][$table][$k] = &$infos_tables[$table][$k];
442
+                    }
443
+                }
444
+            } else {
445
+                // ici on ne renvoie que les declarations, donc RIEN
446
+                // pour avoir la vrai description en base, il faut passer par trouver_table
447
+                $GLOBALS[$principale_ou_auxiliaire][$table] = array();
448
+            }
449
+            if (count($mem)) {
450
+                foreach (array_keys($mem) as $k) {
451
+                    if (isset($GLOBALS[$principale_ou_auxiliaire][$table][$k])) {
452
+                        $GLOBALS[$principale_ou_auxiliaire][$table][$k] = array_merge(
453
+                            $GLOBALS[$principale_ou_auxiliaire][$table][$k],
454
+                            $mem[$k]
455
+                        );
456
+                    } else {
457
+                        $GLOBALS[$principale_ou_auxiliaire][$table][$k] = $mem[$k];
458
+                    }
459
+                }
460
+            }
461
+        }
462
+
463
+        // recuperer les interfaces (table_titre, table_date)
464
+        // on ne le fait que dans un second temps pour que table_objet soit fonctionnel
465
+        // dans le pipeline de declarer_tables_interfaces
466
+        include_spip('public/interfaces');
467
+        foreach (array_keys($infos_tables) as $t) {
468
+            $infos_tables[$t] = renseigner_table_objet_interfaces($t, $infos_tables[$t]);
469
+        }
470
+
471
+        $deja_la = false;
472
+        // signature
473
+        $md5 = md5(serialize($infos_tables));
474
+    }
475
+    if ($table_sql === '::md5') {
476
+        return $md5;
477
+    }
478
+    if ($table_sql and !isset($infos_tables[$table_sql])) {
479
+        #$desc = renseigner_table_objet_sql($table_sql,$desc);
480
+        $desc = renseigner_table_objet_interfaces($table_sql, $desc);
481
+
482
+        return $desc;
483
+    }
484
+    if ($table_sql) {
485
+        return isset($infos_tables[$table_sql]) ? $infos_tables[$table_sql] : array();
486
+    }
487
+
488
+    return $infos_tables;
489 489
 }
490 490
 
491 491
 
@@ -500,27 +500,27 @@  discard block
 block discarded – undo
500 500
  **/
501 501
 function base_serial(&$tables_principales) {
502 502
 
503
-	$spip_jobs = array(
504
-		'id_job' => 'bigint(21) NOT NULL',
505
-		'descriptif' => "text DEFAULT '' NOT NULL",
506
-		'fonction' => 'varchar(255) NOT NULL', //nom de la fonction
507
-		'args' => "longblob DEFAULT '' NOT NULL", // arguments
508
-		'md5args' => "char(32) NOT NULL default ''", // signature des arguments
509
-		'inclure' => 'varchar(255) NOT NULL', // fichier a inclure ou path/ pour charger_fonction
510
-		'priorite' => 'smallint(6) NOT NULL default 0',
511
-		'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // date au plus tot
512
-		'status' => 'tinyint NOT NULL default 1',
513
-	);
514
-
515
-	$spip_jobs_key = array(
516
-		'PRIMARY KEY' => 'id_job',
517
-		'KEY date' => 'date',
518
-		'KEY status' => 'status',
519
-	);
520
-
521
-	/// Attention: mes_fonctions peut avoir deja defini cette variable
522
-	/// il faut donc rajouter, mais pas reinitialiser
523
-	$tables_principales['spip_jobs'] = array('field' => &$spip_jobs, 'key' => &$spip_jobs_key);
503
+    $spip_jobs = array(
504
+        'id_job' => 'bigint(21) NOT NULL',
505
+        'descriptif' => "text DEFAULT '' NOT NULL",
506
+        'fonction' => 'varchar(255) NOT NULL', //nom de la fonction
507
+        'args' => "longblob DEFAULT '' NOT NULL", // arguments
508
+        'md5args' => "char(32) NOT NULL default ''", // signature des arguments
509
+        'inclure' => 'varchar(255) NOT NULL', // fichier a inclure ou path/ pour charger_fonction
510
+        'priorite' => 'smallint(6) NOT NULL default 0',
511
+        'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // date au plus tot
512
+        'status' => 'tinyint NOT NULL default 1',
513
+    );
514
+
515
+    $spip_jobs_key = array(
516
+        'PRIMARY KEY' => 'id_job',
517
+        'KEY date' => 'date',
518
+        'KEY status' => 'status',
519
+    );
520
+
521
+    /// Attention: mes_fonctions peut avoir deja defini cette variable
522
+    /// il faut donc rajouter, mais pas reinitialiser
523
+    $tables_principales['spip_jobs'] = array('field' => &$spip_jobs, 'key' => &$spip_jobs_key);
524 524
 }
525 525
 
526 526
 
@@ -532,71 +532,71 @@  discard block
 block discarded – undo
532 532
  * @return void
533 533
  **/
534 534
 function base_auxiliaires(&$tables_auxiliaires) {
535
-	$spip_resultats = array(
536
-		'recherche' => "char(16) DEFAULT '' NOT NULL",
537
-		'id' => 'INT UNSIGNED NOT NULL',
538
-		'points' => "INT UNSIGNED DEFAULT '0' NOT NULL",
539
-		'table_objet' => "varchar(30) DEFAULT '' NOT NULL",
540
-		'serveur' => "char(16) DEFAULT '' NOT NULL", // hash md5 partiel du serveur de base ('' pour le serveur principal)
541
-		'maj' => 'TIMESTAMP'
542
-	);
543
-
544
-	$spip_resultats_key = array(// pas de cle ni index, ca fait des insertions plus rapides et les requetes jointes utilisees en recheche ne sont pas plus lentes ...
545
-	);
546
-
547
-	$spip_auteurs_liens = array(
548
-		'id_auteur' => "bigint(21) DEFAULT '0' NOT NULL",
549
-		'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
550
-		'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
551
-		'vu' => "VARCHAR(6) DEFAULT 'non' NOT NULL"
552
-	);
553
-
554
-	$spip_auteurs_liens_key = array(
555
-		'PRIMARY KEY' => 'id_auteur,id_objet,objet',
556
-		'KEY id_auteur' => 'id_auteur',
557
-		'KEY id_objet' => 'id_objet',
558
-		'KEY objet' => 'objet',
559
-	);
560
-
561
-	$spip_meta = array(
562
-		'nom' => 'VARCHAR (255) NOT NULL',
563
-		'valeur' => "text DEFAULT ''",
564
-		'impt' => "ENUM('non', 'oui') DEFAULT 'oui' NOT NULL",
565
-		'maj' => 'TIMESTAMP'
566
-	);
567
-
568
-	$spip_meta_key = array(
569
-		'PRIMARY KEY' => 'nom'
570
-	);
571
-
572
-	$spip_jobs_liens = array(
573
-		'id_job' => "bigint(21) DEFAULT '0' NOT NULL",
574
-		'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
575
-		'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
576
-	);
577
-
578
-	$spip_jobs_liens_key = array(
579
-		'PRIMARY KEY' => 'id_job,id_objet,objet',
580
-		'KEY id_job' => 'id_job'
581
-	);
582
-
583
-	$tables_auxiliaires['spip_auteurs_liens'] = array(
584
-		'field' => &$spip_auteurs_liens,
585
-		'key' => &$spip_auteurs_liens_key
586
-	);
587
-
588
-	$tables_auxiliaires['spip_meta'] = array(
589
-		'field' => &$spip_meta,
590
-		'key' => &$spip_meta_key
591
-	);
592
-	$tables_auxiliaires['spip_resultats'] = array(
593
-		'field' => &$spip_resultats,
594
-		'key' => &$spip_resultats_key
595
-	);
596
-	$tables_auxiliaires['spip_jobs_liens'] = array(
597
-		'field' => &$spip_jobs_liens,
598
-		'key' => &$spip_jobs_liens_key
599
-	);
535
+    $spip_resultats = array(
536
+        'recherche' => "char(16) DEFAULT '' NOT NULL",
537
+        'id' => 'INT UNSIGNED NOT NULL',
538
+        'points' => "INT UNSIGNED DEFAULT '0' NOT NULL",
539
+        'table_objet' => "varchar(30) DEFAULT '' NOT NULL",
540
+        'serveur' => "char(16) DEFAULT '' NOT NULL", // hash md5 partiel du serveur de base ('' pour le serveur principal)
541
+        'maj' => 'TIMESTAMP'
542
+    );
543
+
544
+    $spip_resultats_key = array(// pas de cle ni index, ca fait des insertions plus rapides et les requetes jointes utilisees en recheche ne sont pas plus lentes ...
545
+    );
546
+
547
+    $spip_auteurs_liens = array(
548
+        'id_auteur' => "bigint(21) DEFAULT '0' NOT NULL",
549
+        'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
550
+        'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
551
+        'vu' => "VARCHAR(6) DEFAULT 'non' NOT NULL"
552
+    );
553
+
554
+    $spip_auteurs_liens_key = array(
555
+        'PRIMARY KEY' => 'id_auteur,id_objet,objet',
556
+        'KEY id_auteur' => 'id_auteur',
557
+        'KEY id_objet' => 'id_objet',
558
+        'KEY objet' => 'objet',
559
+    );
560
+
561
+    $spip_meta = array(
562
+        'nom' => 'VARCHAR (255) NOT NULL',
563
+        'valeur' => "text DEFAULT ''",
564
+        'impt' => "ENUM('non', 'oui') DEFAULT 'oui' NOT NULL",
565
+        'maj' => 'TIMESTAMP'
566
+    );
567
+
568
+    $spip_meta_key = array(
569
+        'PRIMARY KEY' => 'nom'
570
+    );
571
+
572
+    $spip_jobs_liens = array(
573
+        'id_job' => "bigint(21) DEFAULT '0' NOT NULL",
574
+        'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
575
+        'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
576
+    );
577
+
578
+    $spip_jobs_liens_key = array(
579
+        'PRIMARY KEY' => 'id_job,id_objet,objet',
580
+        'KEY id_job' => 'id_job'
581
+    );
582
+
583
+    $tables_auxiliaires['spip_auteurs_liens'] = array(
584
+        'field' => &$spip_auteurs_liens,
585
+        'key' => &$spip_auteurs_liens_key
586
+    );
587
+
588
+    $tables_auxiliaires['spip_meta'] = array(
589
+        'field' => &$spip_meta,
590
+        'key' => &$spip_meta_key
591
+    );
592
+    $tables_auxiliaires['spip_resultats'] = array(
593
+        'field' => &$spip_resultats,
594
+        'key' => &$spip_resultats_key
595
+    );
596
+    $tables_auxiliaires['spip_jobs_liens'] = array(
597
+        'field' => &$spip_jobs_liens,
598
+        'key' => &$spip_jobs_liens_key
599
+    );
600 600
 
601 601
 }
602 602
 
@@ -654,129 +654,129 @@  discard block
 block discarded – undo
654 654
  * @return array
655 655
  */
656 656
 function renseigner_table_objet_sql($table_sql, &$infos) {
657
-	if (!isset($infos['type'])) {
658
-		// si on arrive de base/trouver_table, on a la cle primaire :
659
-		// s'en servir pour extrapoler le type
660
-		if (isset($infos['key']['PRIMARY KEY'])) {
661
-			$primary = $infos['key']['PRIMARY KEY'];
662
-			$primary = explode(',', $primary);
663
-			$primary = reset($primary);
664
-			$infos['type'] = preg_replace(',^spip_|^id_|s$,', '', $primary);
665
-		} else {
666
-			$infos['type'] = preg_replace(',^spip_|s$,', '', $table_sql);
667
-		}
668
-	}
669
-	if (!isset($infos['type_surnoms'])) {
670
-		$infos['type_surnoms'] = array();
671
-	}
672
-
673
-	if (!isset($infos['table_objet'])) {
674
-		$infos['table_objet'] = preg_replace(',^spip_,', '', $table_sql);
675
-	}
676
-	if (!isset($infos['table_objet_surnoms'])) {
677
-		$infos['table_objet_surnoms'] = array();
678
-	}
679
-
680
-	if (!isset($infos['principale'])) {
681
-		$infos['principale'] = (isset($GLOBALS['tables_principales'][$table_sql]) ? 'oui' : false);
682
-	}
683
-
684
-	// normaliser pour pouvoir tester en php $infos['principale']?
685
-	// et dans une boucle {principale=oui}
686
-	$infos['principale'] = (($infos['principale'] and $infos['principale'] != 'non') ? 'oui' : false);
687
-
688
-	// declarer et normaliser pour pouvoir tester en php $infos['editable']?
689
-	// et dans une boucle {editable=oui}
690
-	if (!isset($infos['editable'])) {
691
-		$infos['editable'] = 'oui';
692
-	}
693
-
694
-	$infos['editable'] = (($infos['editable'] and $infos['editable'] != 'non') ? 'oui' : false);
695
-
696
-	// les urls publiques sont par defaut page=type pour les tables principales, et rien pour les autres
697
-	// seules les exceptions sont donc a declarer
698
-	if (!isset($infos['page'])) {
699
-		$infos['page'] = ($infos['principale'] ? $infos['type'] : '');
700
-	}
701
-
702
-	if (!isset($infos['url_voir'])) {
703
-		$infos['url_voir'] = $infos['type'];
704
-	}
705
-	if (!isset($infos['url_edit'])) {
706
-		$infos['url_edit'] = $infos['url_voir'] . ($infos['editable'] ? '_edit' : '');
707
-	}
708
-	if (!isset($infos['icone_objet'])) {
709
-		$infos['icone_objet'] = $infos['type'];
710
-	}
711
-
712
-	// chaines de langue
713
-	// par defaut : objet:icone_xxx_objet
714
-	if (!isset($infos['texte_retour'])) {
715
-		$infos['texte_retour'] = 'icone_retour';
716
-	}
717
-	if (!isset($infos['texte_modifier'])) {
718
-		$infos['texte_modifier'] = $infos['type'] . ':' . 'icone_modifier_' . $infos['type'];
719
-	}
720
-	if (!isset($infos['texte_creer'])) {
721
-		$infos['texte_creer'] = $infos['type'] . ':' . 'icone_creer_' . $infos['type'];
722
-	}
723
-	if (!isset($infos['texte_creer_associer'])) {
724
-		$infos['texte_creer_associer'] = $infos['type'] . ':' . 'texte_creer_associer_' . $infos['type'];
725
-	}
726
-	if (!isset($infos['texte_ajouter'])) {
727
-		// Ajouter un X
728
-		$infos['texte_ajouter'] = $infos['type'] . ':' . 'texte_ajouter_' . $infos['type'];
729
-	}
730
-	if (!isset($infos['texte_objets'])) {
731
-		$infos['texte_objets'] = $infos['type'] . ':' . 'titre_' . $infos['table_objet'];
732
-	}
733
-	if (!isset($infos['texte_objet'])) {
734
-		$infos['texte_objet'] = $infos['type'] . ':' . 'titre_' . $infos['type'];
735
-	}
736
-	if (!isset($infos['texte_logo_objet'])) {
737
-		// objet:titre_logo_objet "Logo de ce X"
738
-		$infos['texte_logo_objet'] = $infos['type'] . ':' . 'titre_logo_' . $infos['type'];
739
-	}
740
-	if (!isset($infos['texte_langue_objet'])) {
741
-		// objet:texte_langue_objet "Langue de ce X"
742
-		$infos['texte_langue_objet'] = $infos['type'] . ':' . 'titre_langue_' . $infos['type'];
743
-	}
744
-	if (!isset($infos['texte_definir_comme_traduction_objet'])) {
745
-		// "Ce X est une traduction du X numéro :"
746
-		$infos['texte_definir_comme_traduction_objet'] = $infos['type'] . ':' . 'texte_definir_comme_traduction_' . $infos['type'];
747
-	}
748
-
749
-	// objet:info_aucun_objet
750
-	if (!isset($infos['info_aucun_objet'])) {
751
-		$infos['info_aucun_objet'] = $infos['type'] . ':' . 'info_aucun_' . $infos['type'];
752
-	}
753
-	// objet:info_1_objet
754
-	if (!isset($infos['info_1_objet'])) {
755
-		$infos['info_1_objet'] = $infos['type'] . ':' . 'info_1_' . $infos['type'];
756
-	}
757
-	// objet:info_nb_objets
758
-	if (!isset($infos['info_nb_objets'])) {
759
-		$infos['info_nb_objets'] = $infos['type'] . ':' . 'info_nb_' . $infos['table_objet'];
760
-	}
761
-
762
-	if (!isset($infos['champs_editables'])) {
763
-		$infos['champs_editables'] = array();
764
-	}
765
-	if (!isset($infos['champs_versionnes'])) {
766
-		$infos['champs_versionnes'] = array();
767
-	}
768
-	if (!isset($infos['rechercher_champs'])) {
769
-		$infos['rechercher_champs'] = array();
770
-	}
771
-	if (!isset($infos['rechercher_jointures'])) {
772
-		$infos['rechercher_jointures'] = array();
773
-	}
774
-
775
-	if (!isset($infos['modeles'])) {
776
-		$infos['modeles'] = array($infos['type']);
777
-	}
778
-
779
-	return $infos;
657
+    if (!isset($infos['type'])) {
658
+        // si on arrive de base/trouver_table, on a la cle primaire :
659
+        // s'en servir pour extrapoler le type
660
+        if (isset($infos['key']['PRIMARY KEY'])) {
661
+            $primary = $infos['key']['PRIMARY KEY'];
662
+            $primary = explode(',', $primary);
663
+            $primary = reset($primary);
664
+            $infos['type'] = preg_replace(',^spip_|^id_|s$,', '', $primary);
665
+        } else {
666
+            $infos['type'] = preg_replace(',^spip_|s$,', '', $table_sql);
667
+        }
668
+    }
669
+    if (!isset($infos['type_surnoms'])) {
670
+        $infos['type_surnoms'] = array();
671
+    }
672
+
673
+    if (!isset($infos['table_objet'])) {
674
+        $infos['table_objet'] = preg_replace(',^spip_,', '', $table_sql);
675
+    }
676
+    if (!isset($infos['table_objet_surnoms'])) {
677
+        $infos['table_objet_surnoms'] = array();
678
+    }
679
+
680
+    if (!isset($infos['principale'])) {
681
+        $infos['principale'] = (isset($GLOBALS['tables_principales'][$table_sql]) ? 'oui' : false);
682
+    }
683
+
684
+    // normaliser pour pouvoir tester en php $infos['principale']?
685
+    // et dans une boucle {principale=oui}
686
+    $infos['principale'] = (($infos['principale'] and $infos['principale'] != 'non') ? 'oui' : false);
687
+
688
+    // declarer et normaliser pour pouvoir tester en php $infos['editable']?
689
+    // et dans une boucle {editable=oui}
690
+    if (!isset($infos['editable'])) {
691
+        $infos['editable'] = 'oui';
692
+    }
693
+
694
+    $infos['editable'] = (($infos['editable'] and $infos['editable'] != 'non') ? 'oui' : false);
695
+
696
+    // les urls publiques sont par defaut page=type pour les tables principales, et rien pour les autres
697
+    // seules les exceptions sont donc a declarer
698
+    if (!isset($infos['page'])) {
699
+        $infos['page'] = ($infos['principale'] ? $infos['type'] : '');
700
+    }
701
+
702
+    if (!isset($infos['url_voir'])) {
703
+        $infos['url_voir'] = $infos['type'];
704
+    }
705
+    if (!isset($infos['url_edit'])) {
706
+        $infos['url_edit'] = $infos['url_voir'] . ($infos['editable'] ? '_edit' : '');
707
+    }
708
+    if (!isset($infos['icone_objet'])) {
709
+        $infos['icone_objet'] = $infos['type'];
710
+    }
711
+
712
+    // chaines de langue
713
+    // par defaut : objet:icone_xxx_objet
714
+    if (!isset($infos['texte_retour'])) {
715
+        $infos['texte_retour'] = 'icone_retour';
716
+    }
717
+    if (!isset($infos['texte_modifier'])) {
718
+        $infos['texte_modifier'] = $infos['type'] . ':' . 'icone_modifier_' . $infos['type'];
719
+    }
720
+    if (!isset($infos['texte_creer'])) {
721
+        $infos['texte_creer'] = $infos['type'] . ':' . 'icone_creer_' . $infos['type'];
722
+    }
723
+    if (!isset($infos['texte_creer_associer'])) {
724
+        $infos['texte_creer_associer'] = $infos['type'] . ':' . 'texte_creer_associer_' . $infos['type'];
725
+    }
726
+    if (!isset($infos['texte_ajouter'])) {
727
+        // Ajouter un X
728
+        $infos['texte_ajouter'] = $infos['type'] . ':' . 'texte_ajouter_' . $infos['type'];
729
+    }
730
+    if (!isset($infos['texte_objets'])) {
731
+        $infos['texte_objets'] = $infos['type'] . ':' . 'titre_' . $infos['table_objet'];
732
+    }
733
+    if (!isset($infos['texte_objet'])) {
734
+        $infos['texte_objet'] = $infos['type'] . ':' . 'titre_' . $infos['type'];
735
+    }
736
+    if (!isset($infos['texte_logo_objet'])) {
737
+        // objet:titre_logo_objet "Logo de ce X"
738
+        $infos['texte_logo_objet'] = $infos['type'] . ':' . 'titre_logo_' . $infos['type'];
739
+    }
740
+    if (!isset($infos['texte_langue_objet'])) {
741
+        // objet:texte_langue_objet "Langue de ce X"
742
+        $infos['texte_langue_objet'] = $infos['type'] . ':' . 'titre_langue_' . $infos['type'];
743
+    }
744
+    if (!isset($infos['texte_definir_comme_traduction_objet'])) {
745
+        // "Ce X est une traduction du X numéro :"
746
+        $infos['texte_definir_comme_traduction_objet'] = $infos['type'] . ':' . 'texte_definir_comme_traduction_' . $infos['type'];
747
+    }
748
+
749
+    // objet:info_aucun_objet
750
+    if (!isset($infos['info_aucun_objet'])) {
751
+        $infos['info_aucun_objet'] = $infos['type'] . ':' . 'info_aucun_' . $infos['type'];
752
+    }
753
+    // objet:info_1_objet
754
+    if (!isset($infos['info_1_objet'])) {
755
+        $infos['info_1_objet'] = $infos['type'] . ':' . 'info_1_' . $infos['type'];
756
+    }
757
+    // objet:info_nb_objets
758
+    if (!isset($infos['info_nb_objets'])) {
759
+        $infos['info_nb_objets'] = $infos['type'] . ':' . 'info_nb_' . $infos['table_objet'];
760
+    }
761
+
762
+    if (!isset($infos['champs_editables'])) {
763
+        $infos['champs_editables'] = array();
764
+    }
765
+    if (!isset($infos['champs_versionnes'])) {
766
+        $infos['champs_versionnes'] = array();
767
+    }
768
+    if (!isset($infos['rechercher_champs'])) {
769
+        $infos['rechercher_champs'] = array();
770
+    }
771
+    if (!isset($infos['rechercher_jointures'])) {
772
+        $infos['rechercher_jointures'] = array();
773
+    }
774
+
775
+    if (!isset($infos['modeles'])) {
776
+        $infos['modeles'] = array($infos['type']);
777
+    }
778
+
779
+    return $infos;
780 780
 }
781 781
 
782 782
 /**
@@ -793,32 +793,32 @@  discard block
 block discarded – undo
793 793
  * @return array
794 794
  */
795 795
 function renseigner_table_objet_interfaces($table_sql, &$infos) {
796
-	if (!isset($infos['titre'])) {
797
-		if (isset($infos['table_objet']) and isset($GLOBALS['table_titre'][$infos['table_objet']])) {
798
-			$infos['titre'] = $GLOBALS['table_titre'][$infos['table_objet']];
799
-		} else {
800
-			$infos['titre'] = ((isset($infos['field']['titre'])) ? 'titre,' : "'' as titre,");
801
-			$infos['titre'] .= ((isset($infos['field']['lang'])) ? 'lang' : "'' as lang");
802
-		}
803
-	}
804
-	if (!isset($infos['date'])) {
805
-		if (isset($infos['table_objet']) and isset($GLOBALS['table_date'][$infos['table_objet']])) {
806
-			$infos['date'] = $GLOBALS['table_date'][$infos['table_objet']];
807
-		} else {
808
-			$infos['date'] = ((isset($infos['field']['date'])) ? 'date' : '');
809
-		}
810
-	}
811
-	if (!isset($infos['statut'])) {
812
-		$infos['statut'] = isset($GLOBALS['table_statut'][$table_sql]) ? $GLOBALS['table_statut'][$table_sql] : '';
813
-	}
814
-	if (!isset($infos['tables_jointures'])) {
815
-		$infos['tables_jointures'] = array();
816
-	}
817
-	if (isset($GLOBALS['tables_jointures'][$table_sql])) {
818
-		$infos['tables_jointures'] = array_merge($infos['tables_jointures'], $GLOBALS['tables_jointures'][$table_sql]);
819
-	}
820
-
821
-	return $infos;
796
+    if (!isset($infos['titre'])) {
797
+        if (isset($infos['table_objet']) and isset($GLOBALS['table_titre'][$infos['table_objet']])) {
798
+            $infos['titre'] = $GLOBALS['table_titre'][$infos['table_objet']];
799
+        } else {
800
+            $infos['titre'] = ((isset($infos['field']['titre'])) ? 'titre,' : "'' as titre,");
801
+            $infos['titre'] .= ((isset($infos['field']['lang'])) ? 'lang' : "'' as lang");
802
+        }
803
+    }
804
+    if (!isset($infos['date'])) {
805
+        if (isset($infos['table_objet']) and isset($GLOBALS['table_date'][$infos['table_objet']])) {
806
+            $infos['date'] = $GLOBALS['table_date'][$infos['table_objet']];
807
+        } else {
808
+            $infos['date'] = ((isset($infos['field']['date'])) ? 'date' : '');
809
+        }
810
+    }
811
+    if (!isset($infos['statut'])) {
812
+        $infos['statut'] = isset($GLOBALS['table_statut'][$table_sql]) ? $GLOBALS['table_statut'][$table_sql] : '';
813
+    }
814
+    if (!isset($infos['tables_jointures'])) {
815
+        $infos['tables_jointures'] = array();
816
+    }
817
+    if (isset($GLOBALS['tables_jointures'][$table_sql])) {
818
+        $infos['tables_jointures'] = array_merge($infos['tables_jointures'], $GLOBALS['tables_jointures'][$table_sql]);
819
+    }
820
+
821
+    return $infos;
822 822
 }
823 823
 
824 824
 /**
@@ -829,13 +829,13 @@  discard block
 block discarded – undo
829 829
  *     Liste et descriptions des tables principales
830 830
  **/
831 831
 function lister_tables_principales() {
832
-	static $done = false;
833
-	if (!$done or !count($GLOBALS['tables_principales'])) {
834
-		lister_tables_objets_sql();
835
-		$done = true;
836
-	}
832
+    static $done = false;
833
+    if (!$done or !count($GLOBALS['tables_principales'])) {
834
+        lister_tables_objets_sql();
835
+        $done = true;
836
+    }
837 837
 
838
-	return $GLOBALS['tables_principales'];
838
+    return $GLOBALS['tables_principales'];
839 839
 }
840 840
 
841 841
 /**
@@ -846,13 +846,13 @@  discard block
 block discarded – undo
846 846
  *     Liste et descriptions des tables auxiliaires
847 847
  **/
848 848
 function lister_tables_auxiliaires() {
849
-	static $done = false;
850
-	if (!$done or !count($GLOBALS['tables_auxiliaires'])) {
851
-		lister_tables_objets_sql();
852
-		$done = true;
853
-	}
849
+    static $done = false;
850
+    if (!$done or !count($GLOBALS['tables_auxiliaires'])) {
851
+        lister_tables_objets_sql();
852
+        $done = true;
853
+    }
854 854
 
855
-	return $GLOBALS['tables_auxiliaires'];
855
+    return $GLOBALS['tables_auxiliaires'];
856 856
 }
857 857
 
858 858
 /**
@@ -861,44 +861,44 @@  discard block
 block discarded – undo
861 861
  * @return array
862 862
  */
863 863
 function lister_tables_objets_surnoms() {
864
-	static $surnoms = null;
865
-	static $md5 = null;
866
-	if (!$surnoms
867
-		or $md5 != lister_tables_objets_sql('::md5')
868
-	) {
869
-		// passer dans un pipeline qui permet aux plugins de declarer leurs exceptions
870
-		// pour compatibilite, car il faut dorenavent utiliser
871
-		// declarer_table_objets_sql
872
-		$surnoms = pipeline(
873
-			'declarer_tables_objets_surnoms',
874
-			array(
875
-				# pour les modeles
876
-				# a enlever ?
877
-				'doc' => 'documents',
878
-				'img' => 'documents',
879
-				'emb' => 'documents',
880
-			)
881
-		);
882
-		$infos_tables = lister_tables_objets_sql();
883
-		foreach ($infos_tables as $t => $infos) {
884
-			// cas de base type=>table
885
-			// et preg_replace(',^spip_|^id_|s$,',table)=>table
886
-			if ($infos['table_objet']) { // securite, si la fonction est appelee trop tot, c'est vide
887
-				// optimisations pour table_objet
888
-				//$surnoms[$infos['type']] = $infos['table_objet'];
889
-				$surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['table_objet'])] = $infos['table_objet'];
890
-				$surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['type'])] = $infos['table_objet'];
891
-				if (is_array($infos['table_objet_surnoms']) and count($infos['table_objet_surnoms'])) {
892
-					foreach ($infos['table_objet_surnoms'] as $surnom) {
893
-						$surnoms[$surnom] = $infos['table_objet'];
894
-					}
895
-				}
896
-			}
897
-		}
898
-		$md5 = lister_tables_objets_sql('::md5');
899
-	}
900
-
901
-	return $surnoms;
864
+    static $surnoms = null;
865
+    static $md5 = null;
866
+    if (!$surnoms
867
+        or $md5 != lister_tables_objets_sql('::md5')
868
+    ) {
869
+        // passer dans un pipeline qui permet aux plugins de declarer leurs exceptions
870
+        // pour compatibilite, car il faut dorenavent utiliser
871
+        // declarer_table_objets_sql
872
+        $surnoms = pipeline(
873
+            'declarer_tables_objets_surnoms',
874
+            array(
875
+                # pour les modeles
876
+                # a enlever ?
877
+                'doc' => 'documents',
878
+                'img' => 'documents',
879
+                'emb' => 'documents',
880
+            )
881
+        );
882
+        $infos_tables = lister_tables_objets_sql();
883
+        foreach ($infos_tables as $t => $infos) {
884
+            // cas de base type=>table
885
+            // et preg_replace(',^spip_|^id_|s$,',table)=>table
886
+            if ($infos['table_objet']) { // securite, si la fonction est appelee trop tot, c'est vide
887
+                // optimisations pour table_objet
888
+                //$surnoms[$infos['type']] = $infos['table_objet'];
889
+                $surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['table_objet'])] = $infos['table_objet'];
890
+                $surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['type'])] = $infos['table_objet'];
891
+                if (is_array($infos['table_objet_surnoms']) and count($infos['table_objet_surnoms'])) {
892
+                    foreach ($infos['table_objet_surnoms'] as $surnom) {
893
+                        $surnoms[$surnom] = $infos['table_objet'];
894
+                    }
895
+                }
896
+            }
897
+        }
898
+        $md5 = lister_tables_objets_sql('::md5');
899
+    }
900
+
901
+    return $surnoms;
902 902
 }
903 903
 
904 904
 /**
@@ -907,34 +907,34 @@  discard block
 block discarded – undo
907 907
  * @return array
908 908
  */
909 909
 function lister_types_surnoms() {
910
-	static $surnoms = null;
911
-	static $md5 = null;
912
-	if (!$surnoms
913
-		or $md5 != lister_tables_objets_sql('::md5')
914
-	) {
915
-		// passer dans un pipeline qui permet aux plugins de declarer leurs exceptions
916
-		// pour compatibilite, car il faut dorenavent utiliser
917
-		// declarer_table_objets_sql
918
-		$surnoms = pipeline('declarer_type_surnoms', array('racine-site' => 'site'));
919
-		$infos_tables = lister_tables_objets_sql();
920
-		foreach ($infos_tables as $t => $infos) {
921
-			if ($infos['type']) { // securite, si la fonction est appelee trop tot, c'est vide
922
-				// optimisations pour objet_type
923
-				//$surnoms[$infos['type']] = $infos['type'];
924
-				$surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['table_objet'])] = $infos['type'];
925
-				$surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['type'])] = $infos['type'];
926
-				// surnoms declares
927
-				if (is_array($infos['type_surnoms']) and count($infos['type_surnoms'])) {
928
-					foreach ($infos['type_surnoms'] as $surnom) {
929
-						$surnoms[$surnom] = $infos['type'];
930
-					}
931
-				}
932
-			}
933
-		}
934
-		$md5 = lister_tables_objets_sql('::md5');
935
-	}
936
-
937
-	return $surnoms;
910
+    static $surnoms = null;
911
+    static $md5 = null;
912
+    if (!$surnoms
913
+        or $md5 != lister_tables_objets_sql('::md5')
914
+    ) {
915
+        // passer dans un pipeline qui permet aux plugins de declarer leurs exceptions
916
+        // pour compatibilite, car il faut dorenavent utiliser
917
+        // declarer_table_objets_sql
918
+        $surnoms = pipeline('declarer_type_surnoms', array('racine-site' => 'site'));
919
+        $infos_tables = lister_tables_objets_sql();
920
+        foreach ($infos_tables as $t => $infos) {
921
+            if ($infos['type']) { // securite, si la fonction est appelee trop tot, c'est vide
922
+                // optimisations pour objet_type
923
+                //$surnoms[$infos['type']] = $infos['type'];
924
+                $surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['table_objet'])] = $infos['type'];
925
+                $surnoms[preg_replace(',^spip_|^id_|s$,', '', $infos['type'])] = $infos['type'];
926
+                // surnoms declares
927
+                if (is_array($infos['type_surnoms']) and count($infos['type_surnoms'])) {
928
+                    foreach ($infos['type_surnoms'] as $surnom) {
929
+                        $surnoms[$surnom] = $infos['type'];
930
+                    }
931
+                }
932
+            }
933
+        }
934
+        $md5 = lister_tables_objets_sql('::md5');
935
+    }
936
+
937
+    return $surnoms;
938 938
 }
939 939
 
940 940
 /**
@@ -948,22 +948,22 @@  discard block
 block discarded – undo
948 948
  *     Couples (nom de la table SQL => même nom, sans 'spip_' devant)
949 949
  **/
950 950
 function lister_tables_spip($serveur = '') {
951
-	static $tables = array();
952
-	if (!isset($tables[$serveur])) {
953
-		$tables[$serveur] = array();
954
-		if (!function_exists('sql_alltable')) {
955
-			include_spip('base/abstract_sql');
956
-		}
957
-		$ts = sql_alltable(null, $serveur); // toutes les tables "spip_" (ou prefixe perso)
958
-		$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
959
-		$spip = $connexion['prefixe'] . '_';
960
-		foreach ($ts as $t) {
961
-			$t = substr($t, strlen($spip));
962
-			$tables[$serveur]["spip_$t"] = $t;
963
-		}
964
-	}
965
-
966
-	return $tables[$serveur];
951
+    static $tables = array();
952
+    if (!isset($tables[$serveur])) {
953
+        $tables[$serveur] = array();
954
+        if (!function_exists('sql_alltable')) {
955
+            include_spip('base/abstract_sql');
956
+        }
957
+        $ts = sql_alltable(null, $serveur); // toutes les tables "spip_" (ou prefixe perso)
958
+        $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
959
+        $spip = $connexion['prefixe'] . '_';
960
+        foreach ($ts as $t) {
961
+            $t = substr($t, strlen($spip));
962
+            $tables[$serveur]["spip_$t"] = $t;
963
+        }
964
+    }
965
+
966
+    return $tables[$serveur];
967 967
 }
968 968
 
969 969
 
@@ -978,17 +978,17 @@  discard block
 block discarded – undo
978 978
  *     Couples (nom de la table SQL => même nom)
979 979
  **/
980 980
 function lister_toutes_tables($serveur){
981
-	static $tables = array();
982
-	if (!isset($tables[$serveur])){
983
-		$tables[$serveur] = array();
984
-		if (!function_exists("sql_alltable"))
985
-			include_spip("base/abstract_sql");
986
-		$ts = sql_alltable('%',$serveur); // toutes les tables
987
-		foreach ($ts as $t){
988
-			$tables[$serveur][$t] = $t;
989
-		}
990
-	}
991
-	return $tables[$serveur];
981
+    static $tables = array();
982
+    if (!isset($tables[$serveur])){
983
+        $tables[$serveur] = array();
984
+        if (!function_exists("sql_alltable"))
985
+            include_spip("base/abstract_sql");
986
+        $ts = sql_alltable('%',$serveur); // toutes les tables
987
+        foreach ($ts as $t){
988
+            $tables[$serveur][$t] = $t;
989
+        }
990
+    }
991
+    return $tables[$serveur];
992 992
 }
993 993
 
994 994
 /**
@@ -1008,34 +1008,34 @@  discard block
 block discarded – undo
1008 1008
  *     Nom de l'objet
1009 1009
  **/
1010 1010
 function table_objet($type, $serveur = '') {
1011
-	$surnoms = lister_tables_objets_surnoms();
1012
-	$type = preg_replace(',^spip_|^id_|s$,', '', $type);
1013
-	if (!$type) {
1014
-		return;
1015
-	}
1016
-	if (isset($surnoms[$type])) {
1017
-		return $surnoms[$type];
1018
-	}
1019
-
1020
-	if ($serveur !== false) {
1021
-		$t = lister_tables_spip($serveur);
1022
-		$trouver_table = charger_fonction('trouver_table', 'base');
1023
-		$typetrim = rtrim($type, 's') . 's';
1024
-		if ((isset($t[$typetrim]) or in_array($typetrim, $t))
1025
-			and ($desc = $trouver_table(rtrim($type, 's') . 's', $serveur))
1026
-		) {
1027
-			return $desc['id_table'];
1028
-		} elseif ((isset($t[$type]) or in_array($type, $t))
1029
-			and ($desc = $trouver_table($type, $serveur))
1030
-		) {
1031
-			return $desc['id_table'];
1032
-		}
1033
-
1034
-		spip_log('table_objet(' . $type . ') calculee sans verification');
1035
-		#spip_log(debug_backtrace(),'db');
1036
-	}
1037
-
1038
-	return rtrim($type, 's') . 's'; # cas historique ne devant plus servir, sauf si $serveur=false
1011
+    $surnoms = lister_tables_objets_surnoms();
1012
+    $type = preg_replace(',^spip_|^id_|s$,', '', $type);
1013
+    if (!$type) {
1014
+        return;
1015
+    }
1016
+    if (isset($surnoms[$type])) {
1017
+        return $surnoms[$type];
1018
+    }
1019
+
1020
+    if ($serveur !== false) {
1021
+        $t = lister_tables_spip($serveur);
1022
+        $trouver_table = charger_fonction('trouver_table', 'base');
1023
+        $typetrim = rtrim($type, 's') . 's';
1024
+        if ((isset($t[$typetrim]) or in_array($typetrim, $t))
1025
+            and ($desc = $trouver_table(rtrim($type, 's') . 's', $serveur))
1026
+        ) {
1027
+            return $desc['id_table'];
1028
+        } elseif ((isset($t[$type]) or in_array($type, $t))
1029
+            and ($desc = $trouver_table($type, $serveur))
1030
+        ) {
1031
+            return $desc['id_table'];
1032
+        }
1033
+
1034
+        spip_log('table_objet(' . $type . ') calculee sans verification');
1035
+        #spip_log(debug_backtrace(),'db');
1036
+    }
1037
+
1038
+    return rtrim($type, 's') . 's'; # cas historique ne devant plus servir, sauf si $serveur=false
1039 1039
 }
1040 1040
 
1041 1041
 /**
@@ -1056,30 +1056,30 @@  discard block
 block discarded – undo
1056 1056
  **/
1057 1057
 function table_objet_sql($type, $serveur = '') {
1058 1058
 
1059
-	$nom = table_objet($type, $serveur);
1060
-	if (!isset($GLOBALS['table_des_tables']['articles'])) {
1061
-		// eviter de multiples inclusions
1062
-		include_spip('public/interfaces');
1063
-	}
1064
-	if (isset($GLOBALS['table_des_tables'][$nom])) {
1065
-		$nom = $GLOBALS['table_des_tables'][$nom];
1066
-		$nom = "spip_$nom";
1067
-	} else {
1068
-		$infos_tables = lister_tables_objets_sql();
1069
-		if (isset($infos_tables["spip_$nom"])) {
1070
-			$nom = "spip_$nom";
1071
-		} elseif ($serveur !== false) {
1072
-			$t = lister_tables_spip($serveur);
1073
-			if (isset($t[$nom]) or in_array($nom, $t)) {
1074
-				$trouver_table = charger_fonction('trouver_table', 'base');
1075
-				if ($desc = $trouver_table($nom, $serveur)) {
1076
-					return $desc['table_sql'];
1077
-				}
1078
-			}
1079
-		}
1080
-	}
1081
-
1082
-	return $nom;
1059
+    $nom = table_objet($type, $serveur);
1060
+    if (!isset($GLOBALS['table_des_tables']['articles'])) {
1061
+        // eviter de multiples inclusions
1062
+        include_spip('public/interfaces');
1063
+    }
1064
+    if (isset($GLOBALS['table_des_tables'][$nom])) {
1065
+        $nom = $GLOBALS['table_des_tables'][$nom];
1066
+        $nom = "spip_$nom";
1067
+    } else {
1068
+        $infos_tables = lister_tables_objets_sql();
1069
+        if (isset($infos_tables["spip_$nom"])) {
1070
+            $nom = "spip_$nom";
1071
+        } elseif ($serveur !== false) {
1072
+            $t = lister_tables_spip($serveur);
1073
+            if (isset($t[$nom]) or in_array($nom, $t)) {
1074
+                $trouver_table = charger_fonction('trouver_table', 'base');
1075
+                if ($desc = $trouver_table($nom, $serveur)) {
1076
+                    return $desc['table_sql'];
1077
+                }
1078
+            }
1079
+        }
1080
+    }
1081
+
1082
+    return $nom;
1083 1083
 }
1084 1084
 
1085 1085
 /**
@@ -1098,35 +1098,35 @@  discard block
 block discarded – undo
1098 1098
  *     Nom de la clé primaire
1099 1099
  **/
1100 1100
 function id_table_objet($type, $serveur = '') {
1101
-	static $trouver_table = null;
1102
-	$type = objet_type($type, $serveur);
1103
-	if (!$type) {
1104
-		return;
1105
-	}
1106
-	$t = table_objet($type);
1107
-	if (!$trouver_table) {
1108
-		$trouver_table = charger_fonction('trouver_table', 'base');
1109
-	}
1110
-
1111
-	$ts = lister_tables_spip($serveur);
1112
-	if (
1113
-		in_array($t, $ts)
1114
-		or in_array($t, lister_toutes_tables($serveur))
1115
-	){
1116
-		$desc = $trouver_table($t, $serveur);
1117
-		if (isset($desc['key']['PRIMARY KEY'])) {
1118
-			return $desc['key']['PRIMARY KEY'];
1119
-		}
1120
-		if (!$desc or isset($desc['field']["id_$type"])) {
1121
-			return "id_$type";
1122
-		}
1123
-		// sinon renvoyer le premier champ de la table...
1124
-		$keys = array_keys($desc['field']);
1125
-
1126
-		return array_shift($keys);
1127
-	}
1128
-
1129
-	return "id_$type";
1101
+    static $trouver_table = null;
1102
+    $type = objet_type($type, $serveur);
1103
+    if (!$type) {
1104
+        return;
1105
+    }
1106
+    $t = table_objet($type);
1107
+    if (!$trouver_table) {
1108
+        $trouver_table = charger_fonction('trouver_table', 'base');
1109
+    }
1110
+
1111
+    $ts = lister_tables_spip($serveur);
1112
+    if (
1113
+        in_array($t, $ts)
1114
+        or in_array($t, lister_toutes_tables($serveur))
1115
+    ){
1116
+        $desc = $trouver_table($t, $serveur);
1117
+        if (isset($desc['key']['PRIMARY KEY'])) {
1118
+            return $desc['key']['PRIMARY KEY'];
1119
+        }
1120
+        if (!$desc or isset($desc['field']["id_$type"])) {
1121
+            return "id_$type";
1122
+        }
1123
+        // sinon renvoyer le premier champ de la table...
1124
+        $keys = array_keys($desc['field']);
1125
+
1126
+        return array_shift($keys);
1127
+    }
1128
+
1129
+    return "id_$type";
1130 1130
 }
1131 1131
 
1132 1132
 /**
@@ -1145,59 +1145,59 @@  discard block
 block discarded – undo
1145 1145
  *     Type de l'objet
1146 1146
  **/
1147 1147
 function objet_type($table_objet, $serveur = '') {
1148
-	if (!$table_objet) {
1149
-		return;
1150
-	}
1151
-	$surnoms = lister_types_surnoms();
1152
-
1153
-	// scenario de base
1154
-	// le type est decline a partir du nom de la table en enlevant le prefixe eventuel
1155
-	// et la marque du pluriel
1156
-	// on accepte id_xx en entree aussi
1157
-	$type = preg_replace(',^spip_|^id_|s$,', '', $table_objet);
1158
-	if (isset($surnoms[$type])) {
1159
-		return $surnoms[$type];
1160
-	}
1161
-
1162
-	// securite : eliminer les caracteres non \w
1163
-	$type = preg_replace(',[^\w-],', '', $type);
1164
-
1165
-	// si le type redonne bien la table c'est bon
1166
-	// oui si table_objet ressemblait deja a un type
1167
-	if ($type == $table_objet
1168
-		or (table_objet($type, $serveur) == $table_objet)
1169
-		or (table_objet_sql($type, $serveur) == $table_objet)
1170
-	) {
1171
-		return $type;
1172
-	}
1173
-
1174
-	// si on ne veut pas chercher en base
1175
-	if ($serveur === false) {
1176
-		return $type;
1177
-	}
1178
-
1179
-	// sinon on passe par la cle primaire id_xx pour trouver le type
1180
-	// car le s a la fin est incertain
1181
-	// notamment en cas de pluriel derogatoire
1182
-	// id_jeu/spip_jeux id_journal/spip_journaux qui necessitent tout deux
1183
-	// une declaration jeu => jeux, journal => journaux
1184
-	// dans le pipeline declarer_tables_objets_surnoms
1185
-	$trouver_table = charger_fonction('trouver_table', 'base');
1186
-	$ts = lister_tables_spip($serveur);
1187
-	$desc = false;
1188
-	if (in_array($table_objet, $ts)) {
1189
-		$desc = $trouver_table($table_objet);
1190
-	}
1191
-	if (!$desc and in_array($table_objet = table_objet($type, $serveur), $ts)) {
1192
-		$desc = $trouver_table($table_objet, $serveur);
1193
-	}
1194
-	// si le type est declare : bingo !
1195
-	if ($desc and isset($desc['type'])) {
1196
-		return $desc['type'];
1197
-	}
1198
-
1199
-	// on a fait ce qu'on a pu
1200
-	return $type;
1148
+    if (!$table_objet) {
1149
+        return;
1150
+    }
1151
+    $surnoms = lister_types_surnoms();
1152
+
1153
+    // scenario de base
1154
+    // le type est decline a partir du nom de la table en enlevant le prefixe eventuel
1155
+    // et la marque du pluriel
1156
+    // on accepte id_xx en entree aussi
1157
+    $type = preg_replace(',^spip_|^id_|s$,', '', $table_objet);
1158
+    if (isset($surnoms[$type])) {
1159
+        return $surnoms[$type];
1160
+    }
1161
+
1162
+    // securite : eliminer les caracteres non \w
1163
+    $type = preg_replace(',[^\w-],', '', $type);
1164
+
1165
+    // si le type redonne bien la table c'est bon
1166
+    // oui si table_objet ressemblait deja a un type
1167
+    if ($type == $table_objet
1168
+        or (table_objet($type, $serveur) == $table_objet)
1169
+        or (table_objet_sql($type, $serveur) == $table_objet)
1170
+    ) {
1171
+        return $type;
1172
+    }
1173
+
1174
+    // si on ne veut pas chercher en base
1175
+    if ($serveur === false) {
1176
+        return $type;
1177
+    }
1178
+
1179
+    // sinon on passe par la cle primaire id_xx pour trouver le type
1180
+    // car le s a la fin est incertain
1181
+    // notamment en cas de pluriel derogatoire
1182
+    // id_jeu/spip_jeux id_journal/spip_journaux qui necessitent tout deux
1183
+    // une declaration jeu => jeux, journal => journaux
1184
+    // dans le pipeline declarer_tables_objets_surnoms
1185
+    $trouver_table = charger_fonction('trouver_table', 'base');
1186
+    $ts = lister_tables_spip($serveur);
1187
+    $desc = false;
1188
+    if (in_array($table_objet, $ts)) {
1189
+        $desc = $trouver_table($table_objet);
1190
+    }
1191
+    if (!$desc and in_array($table_objet = table_objet($type, $serveur), $ts)) {
1192
+        $desc = $trouver_table($table_objet, $serveur);
1193
+    }
1194
+    // si le type est declare : bingo !
1195
+    if ($desc and isset($desc['type'])) {
1196
+        return $desc['type'];
1197
+    }
1198
+
1199
+    // on a fait ce qu'on a pu
1200
+    return $type;
1201 1201
 }
1202 1202
 
1203 1203
 /**
@@ -1213,60 +1213,60 @@  discard block
 block discarded – undo
1213 1213
  * @return bool
1214 1214
  */
1215 1215
 function objet_test_si_publie($objet, $id_objet, $serveur = '') {
1216
-	// voir si une fonction est definie pour faire le boulot
1217
-	// elle a la priorite dans ce cas
1218
-	if ($f = charger_fonction($objet . '_test_si_publie', 'base', true)) {
1219
-		return $f($objet, $id_objet, $serveur);
1220
-	}
1221
-
1222
-	// sinon on se fie a la declaration de l'objet si presente
1223
-	$id_table = $table_objet = table_objet($objet);
1224
-	$id_table_objet = id_table_objet($objet, $serveur);
1225
-	$trouver_table = charger_fonction('trouver_table', 'base');
1226
-	if ($desc = $trouver_table($table_objet, $serveur)
1227
-		and isset($desc['statut'])
1228
-		and $desc['statut']
1229
-	) {
1230
-		$boucle = new Boucle();
1231
-		$boucle->show = $desc;
1232
-		$boucle->nom = 'objet_test_si_publie';
1233
-		$boucle->id_boucle = $id_table;
1234
-		$boucle->id_table = $id_table;
1235
-		$boucle->sql_serveur = $serveur;
1236
-		$boucle->select[] = $id_table_objet;
1237
-		$boucle->from[$table_objet] = table_objet_sql($objet, $serveur);
1238
-		$boucle->where[] = $id_table . '.' . $id_table_objet . '=' . intval($id_objet);
1239
-
1240
-		$boucle->descr['nom'] = 'objet_test_si_publie'; // eviter notice php
1241
-		$boucle->descr['sourcefile'] = 'internal';
1242
-		$boucle->descr['gram'] = 'html';
1243
-
1244
-		include_spip('public/compiler');
1245
-		include_spip('public/composer');
1246
-		instituer_boucle($boucle, false, true);
1247
-		$res = calculer_select(
1248
-			$boucle->select,
1249
-			$boucle->from,
1250
-			$boucle->from_type,
1251
-			$boucle->where,
1252
-			$boucle->join,
1253
-			$boucle->group,
1254
-			$boucle->order,
1255
-			$boucle->limit,
1256
-			$boucle->having,
1257
-			$table_objet,
1258
-			$id_table,
1259
-			$serveur
1260
-		);
1261
-		if (sql_fetch($res)) {
1262
-			return true;
1263
-		}
1264
-
1265
-		return false;
1266
-	}
1267
-
1268
-	// si pas d'info statut ni de fonction : l'objet est publie
1269
-	return true;
1216
+    // voir si une fonction est definie pour faire le boulot
1217
+    // elle a la priorite dans ce cas
1218
+    if ($f = charger_fonction($objet . '_test_si_publie', 'base', true)) {
1219
+        return $f($objet, $id_objet, $serveur);
1220
+    }
1221
+
1222
+    // sinon on se fie a la declaration de l'objet si presente
1223
+    $id_table = $table_objet = table_objet($objet);
1224
+    $id_table_objet = id_table_objet($objet, $serveur);
1225
+    $trouver_table = charger_fonction('trouver_table', 'base');
1226
+    if ($desc = $trouver_table($table_objet, $serveur)
1227
+        and isset($desc['statut'])
1228
+        and $desc['statut']
1229
+    ) {
1230
+        $boucle = new Boucle();
1231
+        $boucle->show = $desc;
1232
+        $boucle->nom = 'objet_test_si_publie';
1233
+        $boucle->id_boucle = $id_table;
1234
+        $boucle->id_table = $id_table;
1235
+        $boucle->sql_serveur = $serveur;
1236
+        $boucle->select[] = $id_table_objet;
1237
+        $boucle->from[$table_objet] = table_objet_sql($objet, $serveur);
1238
+        $boucle->where[] = $id_table . '.' . $id_table_objet . '=' . intval($id_objet);
1239
+
1240
+        $boucle->descr['nom'] = 'objet_test_si_publie'; // eviter notice php
1241
+        $boucle->descr['sourcefile'] = 'internal';
1242
+        $boucle->descr['gram'] = 'html';
1243
+
1244
+        include_spip('public/compiler');
1245
+        include_spip('public/composer');
1246
+        instituer_boucle($boucle, false, true);
1247
+        $res = calculer_select(
1248
+            $boucle->select,
1249
+            $boucle->from,
1250
+            $boucle->from_type,
1251
+            $boucle->where,
1252
+            $boucle->join,
1253
+            $boucle->group,
1254
+            $boucle->order,
1255
+            $boucle->limit,
1256
+            $boucle->having,
1257
+            $table_objet,
1258
+            $id_table,
1259
+            $serveur
1260
+        );
1261
+        if (sql_fetch($res)) {
1262
+            return true;
1263
+        }
1264
+
1265
+        return false;
1266
+    }
1267
+
1268
+    // si pas d'info statut ni de fonction : l'objet est publie
1269
+    return true;
1270 1270
 }
1271 1271
 
1272 1272
 
@@ -1301,125 +1301,125 @@  discard block
 block discarded – undo
1301 1301
  *     Retourne un tableau décrivant les parents trouvés
1302 1302
  */
1303 1303
 function objet_lister_parents($objet, $id_objet, $parent_direct_seulement = false) {
1304
-	$parents = [];
1305
-
1306
-	// Si on trouve une ou des méthodes de parent
1307
-	if ($parent_methodes = objet_type_decrire_infos_parents($objet)) {
1308
-
1309
-		// On identifie les informations sur l'objet source dont on cherche le parent.
1310
-		include_spip('base/abstract_sql');
1311
-		$table_objet = table_objet_sql($objet);
1312
-		$cle_objet = id_table_objet($objet);
1313
-		$id_objet = intval($id_objet);
1314
-
1315
-		// On teste chacun méthode dans l'ordre, et dès qu'on a trouvé un parent on s'arrête
1316
-		foreach ($parent_methodes as $parent_methode) {
1317
-			// Champ identifiant le parent (id et éventuellement le type)
1318
-			// -- cette identification ne dépend pas du fait que le parent soit stocké dans une table de différente
1319
-			//    de celle de l'objet source
1320
-			$select = array();
1321
-			if (isset($parent_methode['champ'])) {
1322
-				$select[] = $parent_methode['champ'];
1323
-			}
1324
-			if (isset($parent_methode['champ_type'])) {
1325
-				$select[] = $parent_methode['champ_type'];
1326
-			}
1327
-
1328
-			// Détermination de la table du parent et des conditions sur l'objet source et le parent.
1329
-			$condition_objet_invalide = false;
1330
-			$where = array();
1331
-			if (!isset($parent_methode['table'])) {
1332
-				// Le parent est stocké dans la même table que l'objet source :
1333
-				// -- toutes les conditions s'appliquent à la table source.
1334
-				$table = $table_objet;
1335
-				$where = array("$cle_objet = $id_objet");
1336
-				// -- Condition supplémentaire sur la détection du parent
1337
-				if (isset($parent_methode['condition'])) {
1338
-					$where[] = $parent_methode['condition'];
1339
-				}
1340
-			} elseif (!$parent_direct_seulement) {
1341
-				// Le parent est stocké dans une table différente de l'objet source.
1342
-				// -- on vérifie d'emblée si il y a une condition sur l'objet source et si celle-ci est vérifiée
1343
-				//    Si non, on peut arrêter le traitement.
1344
-				if (isset($parent_methode['condition'])) {
1345
-					$where = array(
1346
-						"$cle_objet = $id_objet",
1347
-						$parent_methode['condition']
1348
-					);
1349
-					if (!sql_countsel($table_objet, $where)) {
1350
-						$condition_objet_invalide = true;
1351
-					}
1352
-				}
1353
-
1354
-				// Si pas de condition sur l'objet source ou que la condition est vérifiée, on peut construire
1355
-				// la requête sur la table qui accueille le parent.
1356
-				if (!$condition_objet_invalide) {
1357
-					$table = $parent_methode['table'];
1358
-					// On construit les conditions en fonction de l'identification de l'objet source
1359
-					$where = array();
1360
-					// -- si le champ_source de l'id n'est pas précisé c'est qu'il est déjà connu et donc que c'est
1361
-					//    le même que celui de l'objet source.
1362
-					$where[] = isset($parent_methode['source_champ'])
1363
-						? "{$parent_methode['source_champ']} = $id_objet"
1364
-						: "${cle_objet} = $id_objet";
1365
-					if (isset($parent_methode['source_champ_type'])) {
1366
-						$where[] = "{$parent_methode['source_champ_type']} = " . sql_quote($objet);
1367
-					}
1368
-					// -- Condition supplémentaire sur la détection du parent
1369
-					if (isset($parent_methode['table_condition'])) {
1370
-						$where[] = $parent_methode['table_condition'];
1371
-					}
1372
-				}
1373
-			}
1374
-
1375
-			// On lance la requête de récupération du parent
1376
-			$is_table_lien = (strpos($table, '_liens') !== false and substr($table, -6) === '_liens');
1377
-			if (
1378
-				!$condition_objet_invalide
1379
-				and $where
1380
-				and ($lignes = sql_allfetsel( $is_table_lien ? '*' : $select, $table, $where))
1381
-			) {
1382
-				foreach ($lignes as $ligne) {
1383
-					// Si le type est fixe
1384
-					if (isset($parent_methode['type'])) {
1385
-						$parent = array(
1386
-							'objet' 	=> $parent_methode['type'],
1387
-							'id_objet'	=> intval($ligne[$parent_methode['champ']]),
1388
-							'champ' 	=> $parent_methode['champ'],
1389
-							'table'    => $table,
1390
-						);
1391
-					}
1392
-					elseif (isset($parent_methode['champ_type'])) {
1393
-						$parent = array(
1394
-							'objet' 	 => $ligne[$parent_methode['champ_type']],
1395
-							'id_objet' 	 => intval($ligne[$parent_methode['champ']]),
1396
-							'champ' 	 => $parent_methode['champ'],
1397
-							'champ_type' => $parent_methode['champ_type'],
1398
-							'table'    => $table,
1399
-						);
1400
-					}
1401
-					if ($is_table_lien) {
1402
-						$parent['lien'] = $ligne;
1403
-					}
1404
-					$parents[] = $parent;
1405
-				}
1406
-			}
1407
-		}
1408
-	}
1409
-
1410
-	// On passe par un pipeline avant de retourner
1411
-	$parents = pipeline(
1412
-		'objet_lister_parents',
1413
-		array(
1414
-			'args' => array(
1415
-				'objet' => $objet,
1416
-				'id_objet' => $id_objet,
1417
-			),
1418
-			'data' => $parents,
1419
-		)
1420
-	);
1421
-
1422
-	return $parents;
1304
+    $parents = [];
1305
+
1306
+    // Si on trouve une ou des méthodes de parent
1307
+    if ($parent_methodes = objet_type_decrire_infos_parents($objet)) {
1308
+
1309
+        // On identifie les informations sur l'objet source dont on cherche le parent.
1310
+        include_spip('base/abstract_sql');
1311
+        $table_objet = table_objet_sql($objet);
1312
+        $cle_objet = id_table_objet($objet);
1313
+        $id_objet = intval($id_objet);
1314
+
1315
+        // On teste chacun méthode dans l'ordre, et dès qu'on a trouvé un parent on s'arrête
1316
+        foreach ($parent_methodes as $parent_methode) {
1317
+            // Champ identifiant le parent (id et éventuellement le type)
1318
+            // -- cette identification ne dépend pas du fait que le parent soit stocké dans une table de différente
1319
+            //    de celle de l'objet source
1320
+            $select = array();
1321
+            if (isset($parent_methode['champ'])) {
1322
+                $select[] = $parent_methode['champ'];
1323
+            }
1324
+            if (isset($parent_methode['champ_type'])) {
1325
+                $select[] = $parent_methode['champ_type'];
1326
+            }
1327
+
1328
+            // Détermination de la table du parent et des conditions sur l'objet source et le parent.
1329
+            $condition_objet_invalide = false;
1330
+            $where = array();
1331
+            if (!isset($parent_methode['table'])) {
1332
+                // Le parent est stocké dans la même table que l'objet source :
1333
+                // -- toutes les conditions s'appliquent à la table source.
1334
+                $table = $table_objet;
1335
+                $where = array("$cle_objet = $id_objet");
1336
+                // -- Condition supplémentaire sur la détection du parent
1337
+                if (isset($parent_methode['condition'])) {
1338
+                    $where[] = $parent_methode['condition'];
1339
+                }
1340
+            } elseif (!$parent_direct_seulement) {
1341
+                // Le parent est stocké dans une table différente de l'objet source.
1342
+                // -- on vérifie d'emblée si il y a une condition sur l'objet source et si celle-ci est vérifiée
1343
+                //    Si non, on peut arrêter le traitement.
1344
+                if (isset($parent_methode['condition'])) {
1345
+                    $where = array(
1346
+                        "$cle_objet = $id_objet",
1347
+                        $parent_methode['condition']
1348
+                    );
1349
+                    if (!sql_countsel($table_objet, $where)) {
1350
+                        $condition_objet_invalide = true;
1351
+                    }
1352
+                }
1353
+
1354
+                // Si pas de condition sur l'objet source ou que la condition est vérifiée, on peut construire
1355
+                // la requête sur la table qui accueille le parent.
1356
+                if (!$condition_objet_invalide) {
1357
+                    $table = $parent_methode['table'];
1358
+                    // On construit les conditions en fonction de l'identification de l'objet source
1359
+                    $where = array();
1360
+                    // -- si le champ_source de l'id n'est pas précisé c'est qu'il est déjà connu et donc que c'est
1361
+                    //    le même que celui de l'objet source.
1362
+                    $where[] = isset($parent_methode['source_champ'])
1363
+                        ? "{$parent_methode['source_champ']} = $id_objet"
1364
+                        : "${cle_objet} = $id_objet";
1365
+                    if (isset($parent_methode['source_champ_type'])) {
1366
+                        $where[] = "{$parent_methode['source_champ_type']} = " . sql_quote($objet);
1367
+                    }
1368
+                    // -- Condition supplémentaire sur la détection du parent
1369
+                    if (isset($parent_methode['table_condition'])) {
1370
+                        $where[] = $parent_methode['table_condition'];
1371
+                    }
1372
+                }
1373
+            }
1374
+
1375
+            // On lance la requête de récupération du parent
1376
+            $is_table_lien = (strpos($table, '_liens') !== false and substr($table, -6) === '_liens');
1377
+            if (
1378
+                !$condition_objet_invalide
1379
+                and $where
1380
+                and ($lignes = sql_allfetsel( $is_table_lien ? '*' : $select, $table, $where))
1381
+            ) {
1382
+                foreach ($lignes as $ligne) {
1383
+                    // Si le type est fixe
1384
+                    if (isset($parent_methode['type'])) {
1385
+                        $parent = array(
1386
+                            'objet' 	=> $parent_methode['type'],
1387
+                            'id_objet'	=> intval($ligne[$parent_methode['champ']]),
1388
+                            'champ' 	=> $parent_methode['champ'],
1389
+                            'table'    => $table,
1390
+                        );
1391
+                    }
1392
+                    elseif (isset($parent_methode['champ_type'])) {
1393
+                        $parent = array(
1394
+                            'objet' 	 => $ligne[$parent_methode['champ_type']],
1395
+                            'id_objet' 	 => intval($ligne[$parent_methode['champ']]),
1396
+                            'champ' 	 => $parent_methode['champ'],
1397
+                            'champ_type' => $parent_methode['champ_type'],
1398
+                            'table'    => $table,
1399
+                        );
1400
+                    }
1401
+                    if ($is_table_lien) {
1402
+                        $parent['lien'] = $ligne;
1403
+                    }
1404
+                    $parents[] = $parent;
1405
+                }
1406
+            }
1407
+        }
1408
+    }
1409
+
1410
+    // On passe par un pipeline avant de retourner
1411
+    $parents = pipeline(
1412
+        'objet_lister_parents',
1413
+        array(
1414
+            'args' => array(
1415
+                'objet' => $objet,
1416
+                'id_objet' => $id_objet,
1417
+            ),
1418
+            'data' => $parents,
1419
+        )
1420
+    );
1421
+
1422
+    return $parents;
1423 1423
 }
1424 1424
 
1425 1425
 /**
@@ -1431,17 +1431,17 @@  discard block
 block discarded – undo
1431 1431
  * @return array
1432 1432
  */
1433 1433
 function objet_lister_parents_par_type($objet, $id_objet) {
1434
-	$parents = objet_lister_parents($objet, $id_objet);
1434
+    $parents = objet_lister_parents($objet, $id_objet);
1435 1435
 
1436
-	$parents_par_type = [];
1437
-	foreach ($parents as $parent) {
1438
-		if (!isset($parents_par_type[$parent['objet']])) {
1439
-			$parents_par_type[$parent['objet']] = [];
1440
-		}
1441
-		$parents_par_type[$parent['objet']][] = $parent['id_objet'];
1442
-	}
1436
+    $parents_par_type = [];
1437
+    foreach ($parents as $parent) {
1438
+        if (!isset($parents_par_type[$parent['objet']])) {
1439
+            $parents_par_type[$parent['objet']] = [];
1440
+        }
1441
+        $parents_par_type[$parent['objet']][] = $parent['id_objet'];
1442
+    }
1443 1443
 
1444
-	return $parents_par_type;
1444
+    return $parents_par_type;
1445 1445
 }
1446 1446
 
1447 1447
 
@@ -1474,87 +1474,87 @@  discard block
 block discarded – undo
1474 1474
  *     Retourne un tableau de tableaux, avec comme clés les types des objets, et dans chacun un tableau des identifiants trouvés
1475 1475
  */
1476 1476
 function objet_lister_enfants($objet, $id_objet) {
1477
-	$enfants = array();
1477
+    $enfants = array();
1478 1478
 	
1479
-	// Si on trouve des types d'enfants et leurs méthodes
1480
-	if ($enfants_methodes = objet_type_decrire_infos_enfants($objet)) {
1481
-		include_spip('base/abstract_sql');
1482
-		$id_objet = intval($id_objet);
1479
+    // Si on trouve des types d'enfants et leurs méthodes
1480
+    if ($enfants_methodes = objet_type_decrire_infos_enfants($objet)) {
1481
+        include_spip('base/abstract_sql');
1482
+        $id_objet = intval($id_objet);
1483 1483
 		
1484
-		// On parcourt tous les types d'enfants trouvés
1485
-		foreach ($enfants_methodes as $objet_enfant => $_methode_parent) {
1486
-			// On construit les conditions d'identification du parent
1487
-			$where = array();
1488
-			// -- L'identifiant du parent
1489
-			if (isset($_methode_parent['champ'])) {
1490
-				$where[] = $_methode_parent['champ'] . ' = ' . $id_objet;
1491
-			}
1492
-			// -- Si le parent est variable
1493
-			if (isset($_methode_parent['champ_type'])) {
1494
-				$where[] = $_methode_parent['champ_type'] . ' = ' . sql_quote($objet);
1495
-			}
1496
-
1497
-			// On détermine la table, le champ id des enfants et on complète éventuellement les conditions
1498
-			if (!isset($_methode_parent['table'])) {
1499
-				// Les enfants sont stockés dans la même table que l'objet parent :
1500
-				$table_enfant = table_objet_sql($objet_enfant);
1501
-				$cle_objet_enfant = id_table_objet($objet_enfant);
1502
-
1503
-				// S'il y a une condition supplémentaire
1504
-				if (isset($_methode_parent['condition'])) {
1505
-					$where[] = $_methode_parent['condition'];
1506
-				}
1507
-			} else {
1508
-				// Les enfants sont stockés dans une table différente de l'objet parent.
1509
-				$table_enfant = $_methode_parent['table'];
1510
-				$cle_objet_enfant = isset($_methode_parent['source_champ'])
1511
-					? $_methode_parent['source_champ']
1512
-					: id_table_objet($objet_enfant);
1513
-
1514
-				// S'il y a une condition supplémentaire
1515
-				if (isset($_methode_parent['table_condition'])) {
1516
-					$where[] = $_methode_parent['table_condition'];
1517
-				}
1518
-			}
1519
-
1520
-			// On lance la requête
1521
-			$is_table_lien = (strpos($table_enfant, '_liens') !== false and substr($table_enfant, -6) === '_liens');
1522
-			if ($rows = sql_allfetsel($is_table_lien ? '*' : $cle_objet_enfant, $table_enfant, $where)) {
1523
-				$enfant = [
1524
-					'objet' => $objet_enfant,
1525
-					'id_objet' => 0,
1526
-					'table' => $table_enfant
1527
-				];
1528
-				if (isset($_methode_parent['champ'])) {
1529
-					$enfant['champ'] = $_methode_parent['champ'];
1530
-				}
1531
-				if (isset($_methode_parent['champ_type'])) {
1532
-					$enfant['champ_type'] = $_methode_parent['champ_type'];
1533
-				}
1534
-				foreach ($rows as $row) {
1535
-					$enfant['id_objet'] = intval($row[$cle_objet_enfant]);
1536
-					if ($is_table_lien) {
1537
-						$enfant['lien'] = $row;
1538
-					}
1539
-					$enfants[] = $enfant;
1540
-				}
1541
-			}
1542
-		}
1543
-	}
1544
-
1545
-	// On passe par un pipeline avant de retourner
1546
-	$enfants = pipeline(
1547
-		'objet_lister_enfants',
1548
-		array(
1549
-			'args' => array(
1550
-				'objet' => $objet,
1551
-				'id_objet' => $id_objet,
1552
-			),
1553
-			'data' => $enfants,
1554
-		)
1555
-	);
1556
-
1557
-	return $enfants;
1484
+        // On parcourt tous les types d'enfants trouvés
1485
+        foreach ($enfants_methodes as $objet_enfant => $_methode_parent) {
1486
+            // On construit les conditions d'identification du parent
1487
+            $where = array();
1488
+            // -- L'identifiant du parent
1489
+            if (isset($_methode_parent['champ'])) {
1490
+                $where[] = $_methode_parent['champ'] . ' = ' . $id_objet;
1491
+            }
1492
+            // -- Si le parent est variable
1493
+            if (isset($_methode_parent['champ_type'])) {
1494
+                $where[] = $_methode_parent['champ_type'] . ' = ' . sql_quote($objet);
1495
+            }
1496
+
1497
+            // On détermine la table, le champ id des enfants et on complète éventuellement les conditions
1498
+            if (!isset($_methode_parent['table'])) {
1499
+                // Les enfants sont stockés dans la même table que l'objet parent :
1500
+                $table_enfant = table_objet_sql($objet_enfant);
1501
+                $cle_objet_enfant = id_table_objet($objet_enfant);
1502
+
1503
+                // S'il y a une condition supplémentaire
1504
+                if (isset($_methode_parent['condition'])) {
1505
+                    $where[] = $_methode_parent['condition'];
1506
+                }
1507
+            } else {
1508
+                // Les enfants sont stockés dans une table différente de l'objet parent.
1509
+                $table_enfant = $_methode_parent['table'];
1510
+                $cle_objet_enfant = isset($_methode_parent['source_champ'])
1511
+                    ? $_methode_parent['source_champ']
1512
+                    : id_table_objet($objet_enfant);
1513
+
1514
+                // S'il y a une condition supplémentaire
1515
+                if (isset($_methode_parent['table_condition'])) {
1516
+                    $where[] = $_methode_parent['table_condition'];
1517
+                }
1518
+            }
1519
+
1520
+            // On lance la requête
1521
+            $is_table_lien = (strpos($table_enfant, '_liens') !== false and substr($table_enfant, -6) === '_liens');
1522
+            if ($rows = sql_allfetsel($is_table_lien ? '*' : $cle_objet_enfant, $table_enfant, $where)) {
1523
+                $enfant = [
1524
+                    'objet' => $objet_enfant,
1525
+                    'id_objet' => 0,
1526
+                    'table' => $table_enfant
1527
+                ];
1528
+                if (isset($_methode_parent['champ'])) {
1529
+                    $enfant['champ'] = $_methode_parent['champ'];
1530
+                }
1531
+                if (isset($_methode_parent['champ_type'])) {
1532
+                    $enfant['champ_type'] = $_methode_parent['champ_type'];
1533
+                }
1534
+                foreach ($rows as $row) {
1535
+                    $enfant['id_objet'] = intval($row[$cle_objet_enfant]);
1536
+                    if ($is_table_lien) {
1537
+                        $enfant['lien'] = $row;
1538
+                    }
1539
+                    $enfants[] = $enfant;
1540
+                }
1541
+            }
1542
+        }
1543
+    }
1544
+
1545
+    // On passe par un pipeline avant de retourner
1546
+    $enfants = pipeline(
1547
+        'objet_lister_enfants',
1548
+        array(
1549
+            'args' => array(
1550
+                'objet' => $objet,
1551
+                'id_objet' => $id_objet,
1552
+            ),
1553
+            'data' => $enfants,
1554
+        )
1555
+    );
1556
+
1557
+    return $enfants;
1558 1558
 }
1559 1559
 
1560 1560
 /**
@@ -1566,17 +1566,17 @@  discard block
 block discarded – undo
1566 1566
  * @return array
1567 1567
  */
1568 1568
 function objet_lister_enfants_par_type($objet, $id_objet) {
1569
-	$enfants = objet_lister_enfants($objet, $id_objet);
1569
+    $enfants = objet_lister_enfants($objet, $id_objet);
1570 1570
 
1571
-	$enfants_par_type = [];
1572
-	foreach ($enfants as $enfant) {
1573
-		if (!isset($enfants_par_type[$enfant['objet']])) {
1574
-			$enfants_par_type[$enfant['objet']] = [];
1575
-		}
1576
-		$enfants_par_type[$enfant['objet']][] = $enfant['id_objet'];
1577
-	}
1571
+    $enfants_par_type = [];
1572
+    foreach ($enfants as $enfant) {
1573
+        if (!isset($enfants_par_type[$enfant['objet']])) {
1574
+            $enfants_par_type[$enfant['objet']] = [];
1575
+        }
1576
+        $enfants_par_type[$enfant['objet']][] = $enfant['id_objet'];
1577
+    }
1578 1578
 
1579
-	return $enfants_par_type;
1579
+    return $enfants_par_type;
1580 1580
 }
1581 1581
 
1582 1582
 /**
@@ -1588,35 +1588,35 @@  discard block
 block discarded – undo
1588 1588
  *     Retourne un tableau de tableau contenant les informations de type et de champ pour trouver le parent ou false sinon
1589 1589
  */
1590 1590
 function objet_type_decrire_infos_parents($objet) {
1591
-	static $parents = array();
1591
+    static $parents = array();
1592 1592
 	
1593
-	// Si on ne l'a pas encore cherché pour cet objet
1594
-	if (!isset($parents[$objet])) {
1595
-		$parents[$objet] = false;
1596
-		$table = table_objet_sql($objet);
1593
+    // Si on ne l'a pas encore cherché pour cet objet
1594
+    if (!isset($parents[$objet])) {
1595
+        $parents[$objet] = false;
1596
+        $table = table_objet_sql($objet);
1597 1597
 		
1598
-		// Si on trouve bien la description de cet objet
1599
-		if ($infos = lister_tables_objets_sql($table)) {
1600
-			if (isset($infos['parent']) and is_array($infos['parent'])) {
1601
-				// S'il y a une description explicite de parent, c'est prioritaire
1602
-				// -- on traite les cas où il y a une ou plusieurs description mais on renvoie toujours un tableau
1603
-				//    de description
1604
-				if (!isset($infos['parent'][0])) {
1605
-					$parents[$objet] = array($infos['parent']);
1606
-				} else {
1607
-					$parents[$objet] = $infos['parent'];
1608
-				}
1609
-			} elseif (isset($infos['field']['id_rubrique'])) {
1610
-				// Sinon on cherche des cas courants connus magiquement, à commencer par id_rubrique
1611
-				$parents[$objet] = array(array('type' => 'rubrique', 'champ' => 'id_rubrique'));
1612
-			} elseif (isset($infos['field']['id_parent'])) {
1613
-				// Sinon on cherche un champ id_parent, ce qui signifie que l'objet est parent de lui-même
1614
-				$parents[$objet] = array(array('type' => $objet, 'champ' => 'id_parent'));
1615
-			}
1616
-		}
1617
-	}
1598
+        // Si on trouve bien la description de cet objet
1599
+        if ($infos = lister_tables_objets_sql($table)) {
1600
+            if (isset($infos['parent']) and is_array($infos['parent'])) {
1601
+                // S'il y a une description explicite de parent, c'est prioritaire
1602
+                // -- on traite les cas où il y a une ou plusieurs description mais on renvoie toujours un tableau
1603
+                //    de description
1604
+                if (!isset($infos['parent'][0])) {
1605
+                    $parents[$objet] = array($infos['parent']);
1606
+                } else {
1607
+                    $parents[$objet] = $infos['parent'];
1608
+                }
1609
+            } elseif (isset($infos['field']['id_rubrique'])) {
1610
+                // Sinon on cherche des cas courants connus magiquement, à commencer par id_rubrique
1611
+                $parents[$objet] = array(array('type' => 'rubrique', 'champ' => 'id_rubrique'));
1612
+            } elseif (isset($infos['field']['id_parent'])) {
1613
+                // Sinon on cherche un champ id_parent, ce qui signifie que l'objet est parent de lui-même
1614
+                $parents[$objet] = array(array('type' => $objet, 'champ' => 'id_parent'));
1615
+            }
1616
+        }
1617
+    }
1618 1618
 	
1619
-	return $parents[$objet];
1619
+    return $parents[$objet];
1620 1620
 }
1621 1621
 
1622 1622
 /**
@@ -1628,36 +1628,36 @@  discard block
 block discarded – undo
1628 1628
  *     Retourne un tableau de tableaux contenant chacun les informations d'un type d'enfant
1629 1629
  */
1630 1630
 function objet_type_decrire_infos_enfants($objet) {
1631
-	static $enfants = array();
1631
+    static $enfants = array();
1632 1632
 	
1633
-	// Si on a déjà fait la recherche pour ce type d'objet
1634
-	if (!isset($enfants[$objet])) {
1635
-		$enfants[$objet] = array();
1636
-		$tables = lister_tables_objets_sql();
1633
+    // Si on a déjà fait la recherche pour ce type d'objet
1634
+    if (!isset($enfants[$objet])) {
1635
+        $enfants[$objet] = array();
1636
+        $tables = lister_tables_objets_sql();
1637 1637
 		
1638
-		// On parcourt toutes les tables d'objet, et on cherche si chacune peut être enfant
1639
-		foreach ($tables as $table => $infos) {
1640
-			$objet_enfant = objet_type($table);
1638
+        // On parcourt toutes les tables d'objet, et on cherche si chacune peut être enfant
1639
+        foreach ($tables as $table => $infos) {
1640
+            $objet_enfant = objet_type($table);
1641 1641
 			
1642
-			// On ne va pas refaire les tests des différents cas, on réutilise
1643
-			if ($parent_methodes = objet_type_decrire_infos_parents($objet_enfant)) {
1644
-				// On parcourt les différents cas possible, si certains peuvent concerner l'objet demandé
1645
-				foreach ($parent_methodes as $parent_methode) {
1646
-					// Si la méthode qu'on teste n'exclut pas le parent demandé
1647
-					if (!isset($parent_methode['exclus']) or !in_array($objet, $parent_methode['exclus'])) {
1648
-						// Si le type du parent est fixe et directement l'objet demandé
1649
-						if (isset($parent_methode['type']) and isset($parent_methode['champ']) and $parent_methode['type'] == $objet) {
1650
-							$enfants[$objet][$objet_enfant] = $parent_methode;
1651
-						}
1652
-						// Si le type est variable, alors l'objet demandé peut forcément être parent
1653
-						elseif (isset($parent_methode['champ_type']) and isset($parent_methode['champ'])) {
1654
-							$enfants[$objet][$objet_enfant] = $parent_methode;
1655
-						}
1656
-					}
1657
-				}
1658
-			}
1659
-		}
1660
-	}
1642
+            // On ne va pas refaire les tests des différents cas, on réutilise
1643
+            if ($parent_methodes = objet_type_decrire_infos_parents($objet_enfant)) {
1644
+                // On parcourt les différents cas possible, si certains peuvent concerner l'objet demandé
1645
+                foreach ($parent_methodes as $parent_methode) {
1646
+                    // Si la méthode qu'on teste n'exclut pas le parent demandé
1647
+                    if (!isset($parent_methode['exclus']) or !in_array($objet, $parent_methode['exclus'])) {
1648
+                        // Si le type du parent est fixe et directement l'objet demandé
1649
+                        if (isset($parent_methode['type']) and isset($parent_methode['champ']) and $parent_methode['type'] == $objet) {
1650
+                            $enfants[$objet][$objet_enfant] = $parent_methode;
1651
+                        }
1652
+                        // Si le type est variable, alors l'objet demandé peut forcément être parent
1653
+                        elseif (isset($parent_methode['champ_type']) and isset($parent_methode['champ'])) {
1654
+                            $enfants[$objet][$objet_enfant] = $parent_methode;
1655
+                        }
1656
+                    }
1657
+                }
1658
+            }
1659
+        }
1660
+    }
1661 1661
 	
1662
-	return $enfants[$objet];
1662
+    return $enfants[$objet];
1663 1663
 }
Please login to merge, or discard this patch.
Spacing   +29 added lines, -29 removed lines patch added patch discarded remove patch
@@ -703,7 +703,7 @@  discard block
 block discarded – undo
703 703
 		$infos['url_voir'] = $infos['type'];
704 704
 	}
705 705
 	if (!isset($infos['url_edit'])) {
706
-		$infos['url_edit'] = $infos['url_voir'] . ($infos['editable'] ? '_edit' : '');
706
+		$infos['url_edit'] = $infos['url_voir'].($infos['editable'] ? '_edit' : '');
707 707
 	}
708 708
 	if (!isset($infos['icone_objet'])) {
709 709
 		$infos['icone_objet'] = $infos['type'];
@@ -715,48 +715,48 @@  discard block
 block discarded – undo
715 715
 		$infos['texte_retour'] = 'icone_retour';
716 716
 	}
717 717
 	if (!isset($infos['texte_modifier'])) {
718
-		$infos['texte_modifier'] = $infos['type'] . ':' . 'icone_modifier_' . $infos['type'];
718
+		$infos['texte_modifier'] = $infos['type'].':'.'icone_modifier_'.$infos['type'];
719 719
 	}
720 720
 	if (!isset($infos['texte_creer'])) {
721
-		$infos['texte_creer'] = $infos['type'] . ':' . 'icone_creer_' . $infos['type'];
721
+		$infos['texte_creer'] = $infos['type'].':'.'icone_creer_'.$infos['type'];
722 722
 	}
723 723
 	if (!isset($infos['texte_creer_associer'])) {
724
-		$infos['texte_creer_associer'] = $infos['type'] . ':' . 'texte_creer_associer_' . $infos['type'];
724
+		$infos['texte_creer_associer'] = $infos['type'].':'.'texte_creer_associer_'.$infos['type'];
725 725
 	}
726 726
 	if (!isset($infos['texte_ajouter'])) {
727 727
 		// Ajouter un X
728
-		$infos['texte_ajouter'] = $infos['type'] . ':' . 'texte_ajouter_' . $infos['type'];
728
+		$infos['texte_ajouter'] = $infos['type'].':'.'texte_ajouter_'.$infos['type'];
729 729
 	}
730 730
 	if (!isset($infos['texte_objets'])) {
731
-		$infos['texte_objets'] = $infos['type'] . ':' . 'titre_' . $infos['table_objet'];
731
+		$infos['texte_objets'] = $infos['type'].':'.'titre_'.$infos['table_objet'];
732 732
 	}
733 733
 	if (!isset($infos['texte_objet'])) {
734
-		$infos['texte_objet'] = $infos['type'] . ':' . 'titre_' . $infos['type'];
734
+		$infos['texte_objet'] = $infos['type'].':'.'titre_'.$infos['type'];
735 735
 	}
736 736
 	if (!isset($infos['texte_logo_objet'])) {
737 737
 		// objet:titre_logo_objet "Logo de ce X"
738
-		$infos['texte_logo_objet'] = $infos['type'] . ':' . 'titre_logo_' . $infos['type'];
738
+		$infos['texte_logo_objet'] = $infos['type'].':'.'titre_logo_'.$infos['type'];
739 739
 	}
740 740
 	if (!isset($infos['texte_langue_objet'])) {
741 741
 		// objet:texte_langue_objet "Langue de ce X"
742
-		$infos['texte_langue_objet'] = $infos['type'] . ':' . 'titre_langue_' . $infos['type'];
742
+		$infos['texte_langue_objet'] = $infos['type'].':'.'titre_langue_'.$infos['type'];
743 743
 	}
744 744
 	if (!isset($infos['texte_definir_comme_traduction_objet'])) {
745 745
 		// "Ce X est une traduction du X numéro :"
746
-		$infos['texte_definir_comme_traduction_objet'] = $infos['type'] . ':' . 'texte_definir_comme_traduction_' . $infos['type'];
746
+		$infos['texte_definir_comme_traduction_objet'] = $infos['type'].':'.'texte_definir_comme_traduction_'.$infos['type'];
747 747
 	}
748 748
 
749 749
 	// objet:info_aucun_objet
750 750
 	if (!isset($infos['info_aucun_objet'])) {
751
-		$infos['info_aucun_objet'] = $infos['type'] . ':' . 'info_aucun_' . $infos['type'];
751
+		$infos['info_aucun_objet'] = $infos['type'].':'.'info_aucun_'.$infos['type'];
752 752
 	}
753 753
 	// objet:info_1_objet
754 754
 	if (!isset($infos['info_1_objet'])) {
755
-		$infos['info_1_objet'] = $infos['type'] . ':' . 'info_1_' . $infos['type'];
755
+		$infos['info_1_objet'] = $infos['type'].':'.'info_1_'.$infos['type'];
756 756
 	}
757 757
 	// objet:info_nb_objets
758 758
 	if (!isset($infos['info_nb_objets'])) {
759
-		$infos['info_nb_objets'] = $infos['type'] . ':' . 'info_nb_' . $infos['table_objet'];
759
+		$infos['info_nb_objets'] = $infos['type'].':'.'info_nb_'.$infos['table_objet'];
760 760
 	}
761 761
 
762 762
 	if (!isset($infos['champs_editables'])) {
@@ -956,7 +956,7 @@  discard block
 block discarded – undo
956 956
 		}
957 957
 		$ts = sql_alltable(null, $serveur); // toutes les tables "spip_" (ou prefixe perso)
958 958
 		$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
959
-		$spip = $connexion['prefixe'] . '_';
959
+		$spip = $connexion['prefixe'].'_';
960 960
 		foreach ($ts as $t) {
961 961
 			$t = substr($t, strlen($spip));
962 962
 			$tables[$serveur]["spip_$t"] = $t;
@@ -977,14 +977,14 @@  discard block
 block discarded – undo
977 977
  * @return array
978 978
  *     Couples (nom de la table SQL => même nom)
979 979
  **/
980
-function lister_toutes_tables($serveur){
980
+function lister_toutes_tables($serveur) {
981 981
 	static $tables = array();
982
-	if (!isset($tables[$serveur])){
982
+	if (!isset($tables[$serveur])) {
983 983
 		$tables[$serveur] = array();
984 984
 		if (!function_exists("sql_alltable"))
985 985
 			include_spip("base/abstract_sql");
986
-		$ts = sql_alltable('%',$serveur); // toutes les tables
987
-		foreach ($ts as $t){
986
+		$ts = sql_alltable('%', $serveur); // toutes les tables
987
+		foreach ($ts as $t) {
988 988
 			$tables[$serveur][$t] = $t;
989 989
 		}
990 990
 	}
@@ -1020,9 +1020,9 @@  discard block
 block discarded – undo
1020 1020
 	if ($serveur !== false) {
1021 1021
 		$t = lister_tables_spip($serveur);
1022 1022
 		$trouver_table = charger_fonction('trouver_table', 'base');
1023
-		$typetrim = rtrim($type, 's') . 's';
1023
+		$typetrim = rtrim($type, 's').'s';
1024 1024
 		if ((isset($t[$typetrim]) or in_array($typetrim, $t))
1025
-			and ($desc = $trouver_table(rtrim($type, 's') . 's', $serveur))
1025
+			and ($desc = $trouver_table(rtrim($type, 's').'s', $serveur))
1026 1026
 		) {
1027 1027
 			return $desc['id_table'];
1028 1028
 		} elseif ((isset($t[$type]) or in_array($type, $t))
@@ -1031,11 +1031,11 @@  discard block
 block discarded – undo
1031 1031
 			return $desc['id_table'];
1032 1032
 		}
1033 1033
 
1034
-		spip_log('table_objet(' . $type . ') calculee sans verification');
1034
+		spip_log('table_objet('.$type.') calculee sans verification');
1035 1035
 		#spip_log(debug_backtrace(),'db');
1036 1036
 	}
1037 1037
 
1038
-	return rtrim($type, 's') . 's'; # cas historique ne devant plus servir, sauf si $serveur=false
1038
+	return rtrim($type, 's').'s'; # cas historique ne devant plus servir, sauf si $serveur=false
1039 1039
 }
1040 1040
 
1041 1041
 /**
@@ -1112,7 +1112,7 @@  discard block
 block discarded – undo
1112 1112
 	if (
1113 1113
 		in_array($t, $ts)
1114 1114
 		or in_array($t, lister_toutes_tables($serveur))
1115
-	){
1115
+	) {
1116 1116
 		$desc = $trouver_table($t, $serveur);
1117 1117
 		if (isset($desc['key']['PRIMARY KEY'])) {
1118 1118
 			return $desc['key']['PRIMARY KEY'];
@@ -1215,7 +1215,7 @@  discard block
 block discarded – undo
1215 1215
 function objet_test_si_publie($objet, $id_objet, $serveur = '') {
1216 1216
 	// voir si une fonction est definie pour faire le boulot
1217 1217
 	// elle a la priorite dans ce cas
1218
-	if ($f = charger_fonction($objet . '_test_si_publie', 'base', true)) {
1218
+	if ($f = charger_fonction($objet.'_test_si_publie', 'base', true)) {
1219 1219
 		return $f($objet, $id_objet, $serveur);
1220 1220
 	}
1221 1221
 
@@ -1235,7 +1235,7 @@  discard block
 block discarded – undo
1235 1235
 		$boucle->sql_serveur = $serveur;
1236 1236
 		$boucle->select[] = $id_table_objet;
1237 1237
 		$boucle->from[$table_objet] = table_objet_sql($objet, $serveur);
1238
-		$boucle->where[] = $id_table . '.' . $id_table_objet . '=' . intval($id_objet);
1238
+		$boucle->where[] = $id_table.'.'.$id_table_objet.'='.intval($id_objet);
1239 1239
 
1240 1240
 		$boucle->descr['nom'] = 'objet_test_si_publie'; // eviter notice php
1241 1241
 		$boucle->descr['sourcefile'] = 'internal';
@@ -1363,7 +1363,7 @@  discard block
 block discarded – undo
1363 1363
 						? "{$parent_methode['source_champ']} = $id_objet"
1364 1364
 						: "${cle_objet} = $id_objet";
1365 1365
 					if (isset($parent_methode['source_champ_type'])) {
1366
-						$where[] = "{$parent_methode['source_champ_type']} = " . sql_quote($objet);
1366
+						$where[] = "{$parent_methode['source_champ_type']} = ".sql_quote($objet);
1367 1367
 					}
1368 1368
 					// -- Condition supplémentaire sur la détection du parent
1369 1369
 					if (isset($parent_methode['table_condition'])) {
@@ -1377,7 +1377,7 @@  discard block
 block discarded – undo
1377 1377
 			if (
1378 1378
 				!$condition_objet_invalide
1379 1379
 				and $where
1380
-				and ($lignes = sql_allfetsel( $is_table_lien ? '*' : $select, $table, $where))
1380
+				and ($lignes = sql_allfetsel($is_table_lien ? '*' : $select, $table, $where))
1381 1381
 			) {
1382 1382
 				foreach ($lignes as $ligne) {
1383 1383
 					// Si le type est fixe
@@ -1487,11 +1487,11 @@  discard block
 block discarded – undo
1487 1487
 			$where = array();
1488 1488
 			// -- L'identifiant du parent
1489 1489
 			if (isset($_methode_parent['champ'])) {
1490
-				$where[] = $_methode_parent['champ'] . ' = ' . $id_objet;
1490
+				$where[] = $_methode_parent['champ'].' = '.$id_objet;
1491 1491
 			}
1492 1492
 			// -- Si le parent est variable
1493 1493
 			if (isset($_methode_parent['champ_type'])) {
1494
-				$where[] = $_methode_parent['champ_type'] . ' = ' . sql_quote($objet);
1494
+				$where[] = $_methode_parent['champ_type'].' = '.sql_quote($objet);
1495 1495
 			}
1496 1496
 
1497 1497
 			// On détermine la table, le champ id des enfants et on complète éventuellement les conditions
Please login to merge, or discard this patch.
ecrire/lang/ecrire_fr.php 1 patch
Indentation   +830 added lines, -830 removed lines patch added patch discarded remove patch
@@ -2,430 +2,430 @@  discard block
 block discarded – undo
2 2
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
3 3
 // Fichier source, a modifier dans https://git.spip.net/spip/spip.git
4 4
 if (!defined('_ECRIRE_INC_VERSION')) {
5
-	return;
5
+    return;
6 6
 }
7 7
 
8 8
 $GLOBALS[$GLOBALS['idx_lang']] = array(
9 9
 
10
-	// A
11
-	'activer_plugin' => 'Activer le plugin',
12
-	'affichage' => 'Affichage',
13
-	'aide_non_disponible' => 'Cette partie de l’aide en ligne n’est pas encore disponible dans cette langue.',
14
-	'annuler_recherche' => 'Annuler la recherche',
15
-	'auteur' => 'Auteur :',
16
-	'avis_acces_interdit' => 'Accès interdit.',
17
-	'avis_acces_interdit_prive' => 'Vous n’avez pas le droit d’accéder à la page <b>@exec@</b>.',
18
-	'avis_article_modifie' => 'Attention, @nom_auteur_modif@ a travaillé sur cet article il y a @date_diff@ minutes',
19
-	'avis_aucun_resultat' => 'Aucun résultat.',
20
-	'avis_base_inaccessible' => 'Impossible de se connecter à la base de données @base@.',
21
-	'avis_chemin_invalide_1' => 'Le chemin que vous avez choisi',
22
-	'avis_chemin_invalide_2' => 'ne semble pas valide. Veuillez retourner à la page précédente et vérifier les informations fournies.',
23
-	'avis_connexion_echec_1' => 'La connexion  à la base de données a échoué.',
24
-	'avis_connexion_echec_2' => 'Revenez à la page précédente, et vérifiez les informations que vous avez fournies.',
25
-	'avis_connexion_echec_3' => '<b>N.B.</b> Sur de nombreux serveurs, vous devez <b>demander</b> l’activation de votre accès à la base de données avant de pouvoir l’utiliser. Si vous ne pouvez vous connecter, vérifiez que vous avez effectué cette démarche.',
26
-	'avis_connexion_erreur_creer_base' => 'La base de données n’a pas pu être créée.',
27
-	'avis_connexion_erreur_nom_base' => 'Le nom de la base ne peut contenir que des lettres, des chiffres et des tirets',
28
-	'avis_connexion_ldap_echec_1' => 'La connexion au serveur LDAP a échoué.',
29
-	'avis_connexion_ldap_echec_2' => 'Revenez à la page précédente, et vérifiez les informations que vous avez fournies.',
30
-	'avis_connexion_ldap_echec_3' => 'Alternativement, n’utilisez pas le support LDAP pour importer des utilisateurs.',
31
-	'avis_deplacement_rubrique' => 'Attention ! Cette rubrique contient @contient_breves@ brève@scb@ : si vous la déplacez, veuillez cocher cette case de confirmation.',
32
-	'avis_erreur_connexion_mysql' => 'Erreur de connexion SQL',
33
-	'avis_espace_interdit' => '<b>Espace interdit</b> <div>SPIP est déjà installé.</div>',
34
-	'avis_lecture_noms_bases_1' => 'Le programme d’installation n’a pas pu lire les noms des bases de données installées.',
35
-	'avis_lecture_noms_bases_2' => 'Soit aucune base n’est disponible, soit la fonction permettant de lister les bases a été désactivée
10
+    // A
11
+    'activer_plugin' => 'Activer le plugin',
12
+    'affichage' => 'Affichage',
13
+    'aide_non_disponible' => 'Cette partie de l’aide en ligne n’est pas encore disponible dans cette langue.',
14
+    'annuler_recherche' => 'Annuler la recherche',
15
+    'auteur' => 'Auteur :',
16
+    'avis_acces_interdit' => 'Accès interdit.',
17
+    'avis_acces_interdit_prive' => 'Vous n’avez pas le droit d’accéder à la page <b>@exec@</b>.',
18
+    'avis_article_modifie' => 'Attention, @nom_auteur_modif@ a travaillé sur cet article il y a @date_diff@ minutes',
19
+    'avis_aucun_resultat' => 'Aucun résultat.',
20
+    'avis_base_inaccessible' => 'Impossible de se connecter à la base de données @base@.',
21
+    'avis_chemin_invalide_1' => 'Le chemin que vous avez choisi',
22
+    'avis_chemin_invalide_2' => 'ne semble pas valide. Veuillez retourner à la page précédente et vérifier les informations fournies.',
23
+    'avis_connexion_echec_1' => 'La connexion  à la base de données a échoué.',
24
+    'avis_connexion_echec_2' => 'Revenez à la page précédente, et vérifiez les informations que vous avez fournies.',
25
+    'avis_connexion_echec_3' => '<b>N.B.</b> Sur de nombreux serveurs, vous devez <b>demander</b> l’activation de votre accès à la base de données avant de pouvoir l’utiliser. Si vous ne pouvez vous connecter, vérifiez que vous avez effectué cette démarche.',
26
+    'avis_connexion_erreur_creer_base' => 'La base de données n’a pas pu être créée.',
27
+    'avis_connexion_erreur_nom_base' => 'Le nom de la base ne peut contenir que des lettres, des chiffres et des tirets',
28
+    'avis_connexion_ldap_echec_1' => 'La connexion au serveur LDAP a échoué.',
29
+    'avis_connexion_ldap_echec_2' => 'Revenez à la page précédente, et vérifiez les informations que vous avez fournies.',
30
+    'avis_connexion_ldap_echec_3' => 'Alternativement, n’utilisez pas le support LDAP pour importer des utilisateurs.',
31
+    'avis_deplacement_rubrique' => 'Attention ! Cette rubrique contient @contient_breves@ brève@scb@ : si vous la déplacez, veuillez cocher cette case de confirmation.',
32
+    'avis_erreur_connexion_mysql' => 'Erreur de connexion SQL',
33
+    'avis_espace_interdit' => '<b>Espace interdit</b> <div>SPIP est déjà installé.</div>',
34
+    'avis_lecture_noms_bases_1' => 'Le programme d’installation n’a pas pu lire les noms des bases de données installées.',
35
+    'avis_lecture_noms_bases_2' => 'Soit aucune base n’est disponible, soit la fonction permettant de lister les bases a été désactivée
36 36
 		pour des raisons de sécurité (ce qui est le cas chez de nombreux hébergeurs).',
37
-	'avis_lecture_noms_bases_3' => 'Dans la seconde alternative, il est probable qu’une base portant votre nom de login soit utilisable :',
38
-	'avis_non_acces_page' => 'Vous n’avez pas accès à cette page.',
39
-	'avis_operation_echec' => 'L’opération a échoué.',
40
-	'avis_operation_impossible' => 'Opération impossible',
41
-	'avis_suppression_base' => 'ATTENTION, la suppression des données est irréversible',
37
+    'avis_lecture_noms_bases_3' => 'Dans la seconde alternative, il est probable qu’une base portant votre nom de login soit utilisable :',
38
+    'avis_non_acces_page' => 'Vous n’avez pas accès à cette page.',
39
+    'avis_operation_echec' => 'L’opération a échoué.',
40
+    'avis_operation_impossible' => 'Opération impossible',
41
+    'avis_suppression_base' => 'ATTENTION, la suppression des données est irréversible',
42 42
 
43
-	// B
44
-	'bouton_acces_ldap' => 'Ajouter l’accès à LDAP',
45
-	'bouton_ajouter' => 'Ajouter',
46
-	'bouton_annuler' => 'Annuler',
47
-	'bouton_cache_activer' => 'Réactiver le cache',
48
-	'bouton_cache_desactiver' => 'Désactiver temporairement le cache',
49
-	'bouton_demande_publication' => 'Demander la publication de cet article',
50
-	'bouton_desactive_tout' => 'Tout désactiver',
51
-	'bouton_desinstaller' => 'Désinstaller',
52
-	'bouton_effacer_tout' => 'Effacer TOUT',
53
-	'bouton_envoyer_message' => 'Message définitif : envoyer',
54
-	'bouton_fermer' => 'Fermer',
55
-	'bouton_mettre_a_jour_base' => 'Mettre à jour la base de données',
56
-	'bouton_modifier' => 'Modifier',
57
-	'bouton_radio_afficher' => 'Afficher',
58
-	'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Apparaître dans la liste des rédacteurs connectés',
59
-	'bouton_radio_envoi_annonces_adresse' => 'Envoyer les annonces à l’adresse :',
60
-	'bouton_radio_envoi_liste_nouveautes' => 'Envoyer la liste des nouveautés',
61
-	'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Ne pas apparaître dans la liste des rédacteurs',
62
-	'bouton_radio_non_envoi_annonces_editoriales' => 'Ne pas envoyer d’annonces éditoriales',
63
-	'bouton_redirection' => 'REDIRECTION',
64
-	'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Réinitialiser aux valeurs par défaut',
65
-	'bouton_relancer_inscription' => 'Relancer l’inscription',
66
-	'bouton_relancer_inscriptions' => 'Relancer les inscriptions',
67
-	'bouton_relancer_installation' => 'Relancer l’installation',
68
-	'bouton_reset_password' => 'Générer un nouveau mot de passe et l’envoyer par email',
69
-	'bouton_suivant' => 'Suivant',
70
-	'bouton_tenter_recuperation' => 'Tenter une réparation',
71
-	'bouton_test_proxy' => 'Essayer le proxy',
72
-	'bouton_vider_cache' => 'Vider le cache',
43
+    // B
44
+    'bouton_acces_ldap' => 'Ajouter l’accès à LDAP',
45
+    'bouton_ajouter' => 'Ajouter',
46
+    'bouton_annuler' => 'Annuler',
47
+    'bouton_cache_activer' => 'Réactiver le cache',
48
+    'bouton_cache_desactiver' => 'Désactiver temporairement le cache',
49
+    'bouton_demande_publication' => 'Demander la publication de cet article',
50
+    'bouton_desactive_tout' => 'Tout désactiver',
51
+    'bouton_desinstaller' => 'Désinstaller',
52
+    'bouton_effacer_tout' => 'Effacer TOUT',
53
+    'bouton_envoyer_message' => 'Message définitif : envoyer',
54
+    'bouton_fermer' => 'Fermer',
55
+    'bouton_mettre_a_jour_base' => 'Mettre à jour la base de données',
56
+    'bouton_modifier' => 'Modifier',
57
+    'bouton_radio_afficher' => 'Afficher',
58
+    'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Apparaître dans la liste des rédacteurs connectés',
59
+    'bouton_radio_envoi_annonces_adresse' => 'Envoyer les annonces à l’adresse :',
60
+    'bouton_radio_envoi_liste_nouveautes' => 'Envoyer la liste des nouveautés',
61
+    'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Ne pas apparaître dans la liste des rédacteurs',
62
+    'bouton_radio_non_envoi_annonces_editoriales' => 'Ne pas envoyer d’annonces éditoriales',
63
+    'bouton_redirection' => 'REDIRECTION',
64
+    'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Réinitialiser aux valeurs par défaut',
65
+    'bouton_relancer_inscription' => 'Relancer l’inscription',
66
+    'bouton_relancer_inscriptions' => 'Relancer les inscriptions',
67
+    'bouton_relancer_installation' => 'Relancer l’installation',
68
+    'bouton_reset_password' => 'Générer un nouveau mot de passe et l’envoyer par email',
69
+    'bouton_suivant' => 'Suivant',
70
+    'bouton_tenter_recuperation' => 'Tenter une réparation',
71
+    'bouton_test_proxy' => 'Essayer le proxy',
72
+    'bouton_vider_cache' => 'Vider le cache',
73 73
 
74
-	// C
75
-	'cache_modifiable_webmestre' => 'Ce paramètre est modifiable par le webmestre du site.',
76
-	'calendrier_synchro' => 'Si vous utilisez un logiciel d’agenda compatible <b>iCal</b>, vous pouvez le synchroniser avec les informations de ce site.',
77
-	'config_activer_champs' => 'Activer les champs suivants',
78
-	'config_choix_base_sup' => 'indiquer une base sur ce serveur',
79
-	'config_erreur_base_sup' => 'SPIP n’a pas accès à la liste des bases accessibles',
80
-	'config_info_base_sup' => 'Si vous avez d’autres bases de données à interroger à travers SPIP, avec son serveur SQL ou avec un autre, le formulaire ci-dessous, vous permet de les déclarer. Si vous laissez certains champs vides, les identifiants de connexion à la base principale seront utilisés.',
81
-	'config_info_base_sup_disponibles' => 'Bases supplémentaires déjà interrogeables :',
82
-	'config_info_enregistree' => 'La nouvelle configuration a été enregistrée',
83
-	'config_info_logos' => 'Chaque élément du site peut avoir un logo, ainsi qu’un « logo de survol »',
84
-	'config_info_logos_utiliser' => 'Utiliser les logos',
85
-	'config_info_logos_utiliser_non' => 'Ne pas utiliser les logos',
86
-	'config_info_logos_utiliser_survol' => 'Utiliser les logos de survol',
87
-	'config_info_logos_utiliser_survol_non' => 'Ne pas utiliser les logos de survol',
88
-	'config_info_redirection' => 'En activant cette option, vous pourrez créer des articles virtuels, simples références d’articles publiés sur d’autres sites ou hors de SPIP.',
89
-	'config_redirection' => 'Articles virtuels',
90
-	'config_titre_base_sup' => 'Déclaration d’une base supplémentaire',
91
-	'config_titre_base_sup_choix' => 'Choisissez une base supplémentaire',
92
-	'connexion_ldap' => 'Connexion :',
93
-	'creer_et_associer_un_auteur' => 'Créer et associer un auteur',
74
+    // C
75
+    'cache_modifiable_webmestre' => 'Ce paramètre est modifiable par le webmestre du site.',
76
+    'calendrier_synchro' => 'Si vous utilisez un logiciel d’agenda compatible <b>iCal</b>, vous pouvez le synchroniser avec les informations de ce site.',
77
+    'config_activer_champs' => 'Activer les champs suivants',
78
+    'config_choix_base_sup' => 'indiquer une base sur ce serveur',
79
+    'config_erreur_base_sup' => 'SPIP n’a pas accès à la liste des bases accessibles',
80
+    'config_info_base_sup' => 'Si vous avez d’autres bases de données à interroger à travers SPIP, avec son serveur SQL ou avec un autre, le formulaire ci-dessous, vous permet de les déclarer. Si vous laissez certains champs vides, les identifiants de connexion à la base principale seront utilisés.',
81
+    'config_info_base_sup_disponibles' => 'Bases supplémentaires déjà interrogeables :',
82
+    'config_info_enregistree' => 'La nouvelle configuration a été enregistrée',
83
+    'config_info_logos' => 'Chaque élément du site peut avoir un logo, ainsi qu’un « logo de survol »',
84
+    'config_info_logos_utiliser' => 'Utiliser les logos',
85
+    'config_info_logos_utiliser_non' => 'Ne pas utiliser les logos',
86
+    'config_info_logos_utiliser_survol' => 'Utiliser les logos de survol',
87
+    'config_info_logos_utiliser_survol_non' => 'Ne pas utiliser les logos de survol',
88
+    'config_info_redirection' => 'En activant cette option, vous pourrez créer des articles virtuels, simples références d’articles publiés sur d’autres sites ou hors de SPIP.',
89
+    'config_redirection' => 'Articles virtuels',
90
+    'config_titre_base_sup' => 'Déclaration d’une base supplémentaire',
91
+    'config_titre_base_sup_choix' => 'Choisissez une base supplémentaire',
92
+    'connexion_ldap' => 'Connexion :',
93
+    'creer_et_associer_un_auteur' => 'Créer et associer un auteur',
94 94
 
95
-	// D
96
-	'date_mot_heures' => 'heures',
95
+    // D
96
+    'date_mot_heures' => 'heures',
97 97
 
98
-	// E
99
-	'ecran_securite' => ' + écran de sécurité @version@',
100
-	'email' => 'email',
101
-	'email_2' => 'email :',
102
-	'en_savoir_plus' => 'En savoir plus',
103
-	'entree_adresse_annuaire' => 'Adresse de l’annuaire',
104
-	'entree_adresse_email' => 'Votre adresse email',
105
-	'entree_adresse_email_2' => 'Adresse email',
106
-	'entree_base_donnee_1' => 'Adresse de la base de données',
107
-	'entree_base_donnee_2' => '(Souvent cette adresse correspond à celle de votre site, parfois elle correspond à la mention « localhost », parfois elle est laissée totalement vide.)',
108
-	'entree_biographie' => 'Courte biographie en quelques mots.',
109
-	'entree_chemin_acces' => '<b>Entrer</b> le chemin d’accès :',
110
-	'entree_cle_pgp' => 'Votre clé PGP',
111
-	'entree_cle_pgp_2' => 'Clé PGP',
112
-	'entree_contenu_rubrique' => '(Contenu de la rubrique en quelques mots.)',
113
-	'entree_identifiants_connexion' => 'Vos identifiants de connexion...',
114
-	'entree_identifiants_connexion_2' => 'Identifiants de connexion',
115
-	'entree_informations_connexion_ldap' => 'Veuillez entrer dans ce formulaire les informations de connexion à votre annuaire LDAP.
98
+    // E
99
+    'ecran_securite' => ' + écran de sécurité @version@',
100
+    'email' => 'email',
101
+    'email_2' => 'email :',
102
+    'en_savoir_plus' => 'En savoir plus',
103
+    'entree_adresse_annuaire' => 'Adresse de l’annuaire',
104
+    'entree_adresse_email' => 'Votre adresse email',
105
+    'entree_adresse_email_2' => 'Adresse email',
106
+    'entree_base_donnee_1' => 'Adresse de la base de données',
107
+    'entree_base_donnee_2' => '(Souvent cette adresse correspond à celle de votre site, parfois elle correspond à la mention « localhost », parfois elle est laissée totalement vide.)',
108
+    'entree_biographie' => 'Courte biographie en quelques mots.',
109
+    'entree_chemin_acces' => '<b>Entrer</b> le chemin d’accès :',
110
+    'entree_cle_pgp' => 'Votre clé PGP',
111
+    'entree_cle_pgp_2' => 'Clé PGP',
112
+    'entree_contenu_rubrique' => '(Contenu de la rubrique en quelques mots.)',
113
+    'entree_identifiants_connexion' => 'Vos identifiants de connexion...',
114
+    'entree_identifiants_connexion_2' => 'Identifiants de connexion',
115
+    'entree_informations_connexion_ldap' => 'Veuillez entrer dans ce formulaire les informations de connexion à votre annuaire LDAP.
116 116
 	Ces informations doivent pouvoir vous être fournies par l’administrateur du système,
117 117
 	ou du réseau.',
118
-	'entree_infos_perso' => 'Qui êtes-vous ?',
119
-	'entree_infos_perso_2' => 'Qui est l’auteur ?',
120
-	'entree_interieur_rubrique' => 'À l’intérieur de la rubrique :',
121
-	'entree_liens_sites' => '<b>Lien hypertexte</b> (référence, site à visiter...)',
122
-	'entree_login' => 'Votre login',
123
-	'entree_login_connexion_1' => 'Le login de connexion',
124
-	'entree_login_connexion_2' => '(Correspond parfois à votre login d’accès au FTP ; parfois laissé vide)',
125
-	'entree_mot_passe' => 'Votre mot de passe',
126
-	'entree_mot_passe_1' => 'Le mot de passe de connexion',
127
-	'entree_mot_passe_2' => '(Correspond parfois à votre mot de passe pour le FTP ; parfois laissé vide)',
128
-	'entree_nom_fichier' => 'Veuillez entrer le nom du fichier @texte_compresse@ :',
129
-	'entree_nom_pseudo' => 'Votre nom ou votre pseudo',
130
-	'entree_nom_pseudo_1' => '(Votre nom ou votre pseudo)',
131
-	'entree_nom_pseudo_2' => 'Nom ou pseudo',
132
-	'entree_nom_site' => 'Le nom de votre site',
133
-	'entree_nom_site_2' => 'Nom du site de l’auteur',
134
-	'entree_nouveau_passe' => 'Nouveau mot de passe',
135
-	'entree_passe_ldap' => 'Mot de passe',
136
-	'entree_port_annuaire' => 'Le numéro de port de l’annuaire',
137
-	'entree_signature' => 'Signature',
138
-	'entree_titre_obligatoire' => '<b>Titre</b> [Obligatoire]<br />',
139
-	'entree_url' => 'L’adresse (URL) de votre site',
140
-	'entree_url_2' => 'Adresse (URL) du site',
141
-	'erreur_connect_deja_existant' => 'Un serveur existe déjà avec ce nom',
142
-	'erreur_contenu_suspect' => 'Texte échappé',
143
-	'erreur_email_deja_existant' => 'Cette adresse email est déjà enregistrée.',
144
-	'erreur_nom_connect_incorrect' => 'Ce nom de serveur n’est pas autorisé',
145
-	'erreur_plugin_attribut_balise_manquant' => 'Attribut @attribut@ manquant dans la balise @balise@.',
146
-	'erreur_plugin_desinstalation_echouee' => 'La désinstallation du plugin a échoué. Vous pouvez néanmoins le désactiver.',
147
-	'erreur_plugin_fichier_absent' => 'Fichier absent',
148
-	'erreur_plugin_fichier_def_absent' => 'Fichier de définition absent',
149
-	'erreur_plugin_nom_fonction_interdit' => 'Nom de fonction interdit',
150
-	'erreur_plugin_nom_manquant' => 'Nom du plugin manquant',
151
-	'erreur_plugin_prefix_manquant' => 'Espace de nommage du plugin non défini',
152
-	'erreur_plugin_tag_plugin_absent' => '&lt;plugin&gt; manquant dans le fichier de définition',
153
-	'erreur_plugin_version_manquant' => 'Version du plugin manquante',
118
+    'entree_infos_perso' => 'Qui êtes-vous ?',
119
+    'entree_infos_perso_2' => 'Qui est l’auteur ?',
120
+    'entree_interieur_rubrique' => 'À l’intérieur de la rubrique :',
121
+    'entree_liens_sites' => '<b>Lien hypertexte</b> (référence, site à visiter...)',
122
+    'entree_login' => 'Votre login',
123
+    'entree_login_connexion_1' => 'Le login de connexion',
124
+    'entree_login_connexion_2' => '(Correspond parfois à votre login d’accès au FTP ; parfois laissé vide)',
125
+    'entree_mot_passe' => 'Votre mot de passe',
126
+    'entree_mot_passe_1' => 'Le mot de passe de connexion',
127
+    'entree_mot_passe_2' => '(Correspond parfois à votre mot de passe pour le FTP ; parfois laissé vide)',
128
+    'entree_nom_fichier' => 'Veuillez entrer le nom du fichier @texte_compresse@ :',
129
+    'entree_nom_pseudo' => 'Votre nom ou votre pseudo',
130
+    'entree_nom_pseudo_1' => '(Votre nom ou votre pseudo)',
131
+    'entree_nom_pseudo_2' => 'Nom ou pseudo',
132
+    'entree_nom_site' => 'Le nom de votre site',
133
+    'entree_nom_site_2' => 'Nom du site de l’auteur',
134
+    'entree_nouveau_passe' => 'Nouveau mot de passe',
135
+    'entree_passe_ldap' => 'Mot de passe',
136
+    'entree_port_annuaire' => 'Le numéro de port de l’annuaire',
137
+    'entree_signature' => 'Signature',
138
+    'entree_titre_obligatoire' => '<b>Titre</b> [Obligatoire]<br />',
139
+    'entree_url' => 'L’adresse (URL) de votre site',
140
+    'entree_url_2' => 'Adresse (URL) du site',
141
+    'erreur_connect_deja_existant' => 'Un serveur existe déjà avec ce nom',
142
+    'erreur_contenu_suspect' => 'Texte échappé',
143
+    'erreur_email_deja_existant' => 'Cette adresse email est déjà enregistrée.',
144
+    'erreur_nom_connect_incorrect' => 'Ce nom de serveur n’est pas autorisé',
145
+    'erreur_plugin_attribut_balise_manquant' => 'Attribut @attribut@ manquant dans la balise @balise@.',
146
+    'erreur_plugin_desinstalation_echouee' => 'La désinstallation du plugin a échoué. Vous pouvez néanmoins le désactiver.',
147
+    'erreur_plugin_fichier_absent' => 'Fichier absent',
148
+    'erreur_plugin_fichier_def_absent' => 'Fichier de définition absent',
149
+    'erreur_plugin_nom_fonction_interdit' => 'Nom de fonction interdit',
150
+    'erreur_plugin_nom_manquant' => 'Nom du plugin manquant',
151
+    'erreur_plugin_prefix_manquant' => 'Espace de nommage du plugin non défini',
152
+    'erreur_plugin_tag_plugin_absent' => '&lt;plugin&gt; manquant dans le fichier de définition',
153
+    'erreur_plugin_version_manquant' => 'Version du plugin manquante',
154 154
 
155
-	// H
156
-	'htaccess_a_simuler' => 'Avertissement : la configuration de votre serveur HTTP ne tient pas compte des fichiers @htaccess@. Pour pouvoir assurer une bonne sécurité, il faut que vous modifiiez cette configuration sur ce point, ou bien que les constantes @constantes@ (définissables dans le fichier mes_options.php) aient comme valeur des répertoires en dehors de @document_root@.',
157
-	'htaccess_inoperant' => 'htaccess inopérant',
155
+    // H
156
+    'htaccess_a_simuler' => 'Avertissement : la configuration de votre serveur HTTP ne tient pas compte des fichiers @htaccess@. Pour pouvoir assurer une bonne sécurité, il faut que vous modifiiez cette configuration sur ce point, ou bien que les constantes @constantes@ (définissables dans le fichier mes_options.php) aient comme valeur des répertoires en dehors de @document_root@.',
157
+    'htaccess_inoperant' => 'htaccess inopérant',
158 158
 
159
-	// I
160
-	'ical_info1' => 'Cette page présente plusieurs méthodes pour rester en contact avec la vie de ce site.',
161
-	'ical_info2' => 'Pour plus de renseignements sur toutes ces techniques, n’hésitez pas à consulter <a href="@spipnet@">la documentation de SPIP</a>.',
162
-	'ical_info_calendrier' => 'Deux calendriers sont à votre disposition. Le premier est un plan du site annonçant tous les articles publiés. Le second contient les annonces éditoriales ainsi que vos derniers messages privés : il vous est réservé grâce à une clé personnelle, que vous pouvez modifier à tout moment en renouvelant votre mot de passe.',
163
-	'ical_methode_http' => 'Téléchargement',
164
-	'ical_methode_webcal' => 'Synchronisation (webcal://)',
165
-	'ical_texte_js' => 'Une ligne de javascript vous permet d’afficher très simplement, sur n’importe quel site vous appartenant, les articles récents publiés sur ce site.',
166
-	'ical_texte_prive' => 'Ce calendrier, à usage strictement personnel, vous informe de l’activité éditoriale privée de ce site (tâches et rendez-vous personnels, articles et brèves proposés...).',
167
-	'ical_texte_public' => 'Ce calendrier vous permet de suivre l’activité publique de ce site (articles et brèves publiés).',
168
-	'ical_texte_rss' => 'Vous pouvez syndiquer les nouveautés de ce site dans n’importe quel lecteur de fichiers au format XML/RSS (Rich Site Summary). C’est aussi le format qui permet à SPIP de lire les nouveautés publiées sur d’autres sites utilisant un format d’échange compatible (sites syndiqués).',
169
-	'ical_titre_js' => 'Javascript',
170
-	'ical_titre_mailing' => 'Mailing-list',
171
-	'ical_titre_rss' => 'Fichiers de syndication',
172
-	'icone_accueil' => 'Accueil',
173
-	'icone_activer_cookie' => 'Activer le cookie de correspondance',
174
-	'icone_activite' => 'Activité',
175
-	'icone_admin_plugin' => 'Gestion des plugins',
176
-	'icone_administration' => 'Maintenance',
177
-	'icone_afficher_auteurs' => 'Afficher les auteurs',
178
-	'icone_afficher_visiteurs' => 'Afficher les visiteurs',
179
-	'icone_arret_discussion' => 'Ne plus participer à cette discussion',
180
-	'icone_calendrier' => 'Calendrier',
181
-	'icone_configuration' => 'Configuration',
182
-	'icone_creer_auteur' => 'Créer un nouvel auteur et l’associer à cet article',
183
-	'icone_creer_mot_cle' => 'Créer un nouveau mot-clé et le lier à cet article',
184
-	'icone_creer_rubrique_2' => 'Créer une nouvelle rubrique',
185
-	'icone_developpement' => 'Développement',
186
-	'icone_edition' => 'Édition',
187
-	'icone_ma_langue' => 'Ma langue',
188
-	'icone_mes_infos' => 'Mes informations',
189
-	'icone_mes_preferences' => 'Mes préférences',
190
-	'icone_modifier_article' => 'Modifier cet article',
191
-	'icone_modifier_rubrique' => 'Modifier cette rubrique',
192
-	'icone_publication' => 'Publication',
193
-	'icone_relancer_signataire' => 'Relancer le signataire',
194
-	'icone_retour' => 'Retour',
195
-	'icone_retour_article' => 'Retour à l’article',
196
-	'icone_squelette' => 'Squelettes',
197
-	'icone_suivi_publication' => 'Suivi de la publication',
198
-	'icone_supprimer_cookie' => 'Supprimer le cookie de correspondance',
199
-	'icone_supprimer_rubrique' => 'Supprimer cette rubrique',
200
-	'icone_supprimer_signature' => 'Supprimer cette signature',
201
-	'icone_valider_signature' => 'Valider cette signature',
202
-	'image_administrer_rubrique' => 'Vous pouvez administrer cette rubrique',
203
-	'impossible_modifier_login_auteur' => 'Impossible de modifier le login.',
204
-	'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.',
205
-	'info_1_article' => '1 article',
206
-	'info_1_auteur' => '1 auteur',
207
-	'info_1_message' => '1 message',
208
-	'info_1_mot_cle' => '1 mot-clé',
209
-	'info_1_rubrique' => '1 rubrique',
210
-	'info_1_visiteur' => '1 visiteur',
211
-	'info_activer_cookie' => 'Vous pouvez activer un <b>cookie de correspondance</b>, ce qui vous
159
+    // I
160
+    'ical_info1' => 'Cette page présente plusieurs méthodes pour rester en contact avec la vie de ce site.',
161
+    'ical_info2' => 'Pour plus de renseignements sur toutes ces techniques, n’hésitez pas à consulter <a href="@spipnet@">la documentation de SPIP</a>.',
162
+    'ical_info_calendrier' => 'Deux calendriers sont à votre disposition. Le premier est un plan du site annonçant tous les articles publiés. Le second contient les annonces éditoriales ainsi que vos derniers messages privés : il vous est réservé grâce à une clé personnelle, que vous pouvez modifier à tout moment en renouvelant votre mot de passe.',
163
+    'ical_methode_http' => 'Téléchargement',
164
+    'ical_methode_webcal' => 'Synchronisation (webcal://)',
165
+    'ical_texte_js' => 'Une ligne de javascript vous permet d’afficher très simplement, sur n’importe quel site vous appartenant, les articles récents publiés sur ce site.',
166
+    'ical_texte_prive' => 'Ce calendrier, à usage strictement personnel, vous informe de l’activité éditoriale privée de ce site (tâches et rendez-vous personnels, articles et brèves proposés...).',
167
+    'ical_texte_public' => 'Ce calendrier vous permet de suivre l’activité publique de ce site (articles et brèves publiés).',
168
+    'ical_texte_rss' => 'Vous pouvez syndiquer les nouveautés de ce site dans n’importe quel lecteur de fichiers au format XML/RSS (Rich Site Summary). C’est aussi le format qui permet à SPIP de lire les nouveautés publiées sur d’autres sites utilisant un format d’échange compatible (sites syndiqués).',
169
+    'ical_titre_js' => 'Javascript',
170
+    'ical_titre_mailing' => 'Mailing-list',
171
+    'ical_titre_rss' => 'Fichiers de syndication',
172
+    'icone_accueil' => 'Accueil',
173
+    'icone_activer_cookie' => 'Activer le cookie de correspondance',
174
+    'icone_activite' => 'Activité',
175
+    'icone_admin_plugin' => 'Gestion des plugins',
176
+    'icone_administration' => 'Maintenance',
177
+    'icone_afficher_auteurs' => 'Afficher les auteurs',
178
+    'icone_afficher_visiteurs' => 'Afficher les visiteurs',
179
+    'icone_arret_discussion' => 'Ne plus participer à cette discussion',
180
+    'icone_calendrier' => 'Calendrier',
181
+    'icone_configuration' => 'Configuration',
182
+    'icone_creer_auteur' => 'Créer un nouvel auteur et l’associer à cet article',
183
+    'icone_creer_mot_cle' => 'Créer un nouveau mot-clé et le lier à cet article',
184
+    'icone_creer_rubrique_2' => 'Créer une nouvelle rubrique',
185
+    'icone_developpement' => 'Développement',
186
+    'icone_edition' => 'Édition',
187
+    'icone_ma_langue' => 'Ma langue',
188
+    'icone_mes_infos' => 'Mes informations',
189
+    'icone_mes_preferences' => 'Mes préférences',
190
+    'icone_modifier_article' => 'Modifier cet article',
191
+    'icone_modifier_rubrique' => 'Modifier cette rubrique',
192
+    'icone_publication' => 'Publication',
193
+    'icone_relancer_signataire' => 'Relancer le signataire',
194
+    'icone_retour' => 'Retour',
195
+    'icone_retour_article' => 'Retour à l’article',
196
+    'icone_squelette' => 'Squelettes',
197
+    'icone_suivi_publication' => 'Suivi de la publication',
198
+    'icone_supprimer_cookie' => 'Supprimer le cookie de correspondance',
199
+    'icone_supprimer_rubrique' => 'Supprimer cette rubrique',
200
+    'icone_supprimer_signature' => 'Supprimer cette signature',
201
+    'icone_valider_signature' => 'Valider cette signature',
202
+    'image_administrer_rubrique' => 'Vous pouvez administrer cette rubrique',
203
+    'impossible_modifier_login_auteur' => 'Impossible de modifier le login.',
204
+    'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.',
205
+    'info_1_article' => '1 article',
206
+    'info_1_auteur' => '1 auteur',
207
+    'info_1_message' => '1 message',
208
+    'info_1_mot_cle' => '1 mot-clé',
209
+    'info_1_rubrique' => '1 rubrique',
210
+    'info_1_visiteur' => '1 visiteur',
211
+    'info_activer_cookie' => 'Vous pouvez activer un <b>cookie de correspondance</b>, ce qui vous
212 212
 	permettra de passer facilement du site public au site privé.',
213
-	'info_activer_menu_developpement' => 'Afficher le menu Développement',
214
-	'info_admin_etre_webmestre' => 'Me donner les droits de webmestre',
215
-	'info_admin_je_suis_webmestre' => 'Je suis <b>webmestre</b>',
216
-	'info_admin_statuer_webmestre' => 'Donner à cet administrateur les droits de webmestre',
217
-	'info_admin_webmestre' => 'Cet administrateur est <b>webmestre</b>',
218
-	'info_administrateur' => 'Administrateur',
219
-	'info_administrateur_1' => 'Administrateur',
220
-	'info_administrateur_2' => 'du site (<i>utilisez avec précaution</i>)',
221
-	'info_administrateur_site_01' => 'Si vous êtes administrateur du site, veuillez',
222
-	'info_administrateur_site_02' => 'cliquer sur ce lien',
223
-	'info_administrateurs' => 'Administrateurs',
224
-	'info_administrer_rubrique' => 'Vous pouvez administrer cette rubrique',
225
-	'info_adresse' => 'à l’adresse :',
226
-	'info_adresse_desinscription' => 'Adresse de désinscription :',
227
-	'info_adresse_url' => 'Adresse (URL) du site public',
228
-	'info_afficher_par_nb' => 'Afficher par',
229
-	'info_aide_en_ligne' => 'Aide en ligne SPIP',
230
-	'info_ajout_image' => 'Lorsque vous ajoutez des images en tant que documents joints à un article,
213
+    'info_activer_menu_developpement' => 'Afficher le menu Développement',
214
+    'info_admin_etre_webmestre' => 'Me donner les droits de webmestre',
215
+    'info_admin_je_suis_webmestre' => 'Je suis <b>webmestre</b>',
216
+    'info_admin_statuer_webmestre' => 'Donner à cet administrateur les droits de webmestre',
217
+    'info_admin_webmestre' => 'Cet administrateur est <b>webmestre</b>',
218
+    'info_administrateur' => 'Administrateur',
219
+    'info_administrateur_1' => 'Administrateur',
220
+    'info_administrateur_2' => 'du site (<i>utilisez avec précaution</i>)',
221
+    'info_administrateur_site_01' => 'Si vous êtes administrateur du site, veuillez',
222
+    'info_administrateur_site_02' => 'cliquer sur ce lien',
223
+    'info_administrateurs' => 'Administrateurs',
224
+    'info_administrer_rubrique' => 'Vous pouvez administrer cette rubrique',
225
+    'info_adresse' => 'à l’adresse :',
226
+    'info_adresse_desinscription' => 'Adresse de désinscription :',
227
+    'info_adresse_url' => 'Adresse (URL) du site public',
228
+    'info_afficher_par_nb' => 'Afficher par',
229
+    'info_aide_en_ligne' => 'Aide en ligne SPIP',
230
+    'info_ajout_image' => 'Lorsque vous ajoutez des images en tant que documents joints à un article,
231 231
 		SPIP peut créer pour vous, automatiquement, des vignettes (miniatures) des
232 232
 		images insérées. Cela permet par exemple de créer
233 233
 		automatiquement une galerie ou un portfolio.',
234
-	'info_ajouter_rubrique' => 'Ajouter une autre rubrique à administrer :',
235
-	'info_annonce_nouveautes' => 'Annonce des nouveautés',
236
-	'info_article' => 'article',
237
-	'info_article_2' => 'articles',
238
-	'info_article_a_paraitre' => 'Les articles post-datés à paraître',
239
-	'info_articles_02' => 'articles',
240
-	'info_articles_2' => 'Articles',
241
-	'info_articles_auteur' => 'Les articles de cet auteur',
242
-	'info_articles_miens' => 'Mes articles',
243
-	'info_articles_tous' => 'Tous les articles',
244
-	'info_articles_trouves' => 'Articles trouvés',
245
-	'info_attente_validation' => 'Vos articles en attente de validation',
246
-	'info_aucun_article' => 'Aucun article',
247
-	'info_aucun_auteur' => 'Aucun auteur',
248
-	'info_aucun_message' => 'Aucun message',
249
-	'info_aucun_rubrique' => 'Aucune rubrique',
250
-	'info_aujourdhui' => 'aujourd’hui :',
251
-	'info_auteur_gere_rubriques' => 'Cet auteur gère les rubriques suivantes :',
252
-	'info_auteur_gere_toutes_rubriques' => 'Cet auteur gère <b>toutes les rubriques</b>',
253
-	'info_auteur_gere_toutes_rubriques_2' => 'Je gère <b>toutes les rubriques</b>',
254
-	'info_auteurs' => 'Les auteurs',
255
-	'info_auteurs_par_tri' => 'Auteurs@partri@',
256
-	'info_auteurs_trouves' => 'Auteurs trouvés',
257
-	'info_authentification_externe' => 'Authentification externe',
258
-	'info_avertissement' => 'Avertissement',
259
-	'info_barre_outils' => 'avec sa barre d’outils ?',
260
-	'info_base_installee' => 'La structure de votre base de données est installée.',
261
-	'info_bio' => 'Biographie',
262
-	'info_cache_desactive' => 'Le cache est temporairement désactivé.',
263
-	'info_chapeau' => 'Chapeau',
264
-	'info_chapeau_2' => 'Chapeau :',
265
-	'info_chemin_acces_1' => 'Options : <b>Chemin d’accès dans l’annuaire</b>',
266
-	'info_chemin_acces_2' => 'Vous devez désormais configurer le chemin d’accès aux informations dans l’annuaire. Cette information est indispensable pour lire les profils utilisateurs stockés dans l’annuaire.',
267
-	'info_chemin_acces_annuaire' => 'Options : <b>Chemin d’accès dans l’annuaire</b>',
268
-	'info_choix_base' => 'Troisième étape :',
269
-	'info_classement_1' => '<sup>er</sup> sur @liste@',
270
-	'info_classement_2' => '<sup>e</sup> sur @liste@',
271
-	'info_code_acces' => 'N’oubliez pas vos propres codes d’accès !',
272
-	'info_config_suivi' => 'Si cette adresse correspond à une mailing-list, vous pouvez indiquer ci-dessous l’adresse à laquelle les participants au site peuvent s’inscrire. Cette adresse peut être une URL (par exemple la page d’inscription à la liste par le Web), ou une adresse email dotée d’un sujet spécifique (par exemple : <tt>@adresse_suivi@?subject=subscribe</tt>) :',
273
-	'info_config_suivi_explication' => 'Vous pouvez vous abonner à la mailing-list de ce site. Vous recevrez alors par courrier électronique les annonces d’articles et de brèves proposés à la publication.',
274
-	'info_confirmer_passe' => 'Confirmer ce nouveau mot de passe :',
275
-	'info_conflit_edition_avis_non_sauvegarde' => 'Attention, les champs suivants ont été modifiés par ailleurs. Vos modifications sur ces champs n’ont donc pas été enregistrées.',
276
-	'info_conflit_edition_differences' => 'Différences :',
277
-	'info_conflit_edition_version_enregistree' => 'La version enregistrée :',
278
-	'info_conflit_edition_votre_version' => 'Votre version :',
279
-	'info_connexion_base' => 'Essai de connexion à la base',
280
-	'info_connexion_base_donnee' => 'Connexion à votre base de données',
281
-	'info_connexion_ldap_ok' => '<b>La connexion LDAP a réussi.</b><p> Vous pouvez passer à l’étape suivante.</p>',
282
-	'info_connexion_mysql' => 'Votre connexion SQL',
283
-	'info_connexion_ok' => 'La connexion a réussi.',
284
-	'info_contact' => 'Contact',
285
-	'info_contenu_articles' => 'Contenu des articles',
286
-	'info_contributions' => 'Contributions',
287
-	'info_creation_paragraphe' => 'Pour créer des paragraphes, laissez simplement des lignes vides.',
288
-	'info_creation_rubrique' => 'Avant de pouvoir écrire des articles,<br /> vous devez créer au moins une rubrique.<br />',
289
-	'info_creation_tables' => 'Création des tables de la base',
290
-	'info_creer_base' => '<b>Créer</b> une nouvelle base de données :',
291
-	'info_dans_rubrique' => 'Dans la rubrique :',
292
-	'info_date_publication_anterieure' => 'Date de rédaction antérieure :',
293
-	'info_date_referencement' => 'DATE DE RÉFÉRENCEMENT DE CE SITE :',
294
-	'info_derniere_etape' => 'C’est terminé !',
295
-	'info_descriptif' => 'Descriptif :',
296
-	'info_desinstaller_plugin' => 'supprime les données et désactive le plugin',
297
-	'info_discussion_cours' => 'Discussions en cours',
298
-	'info_ecrire_article' => 'Avant de pouvoir écrire des articles, vous devez créer au moins une rubrique.',
299
-	'info_email_envoi' => 'Adresse email d’envoi (optionnel)',
300
-	'info_email_envoi_txt' => 'Indiquez ici l’adresse à utiliser pour envoyer les emails (à défaut, l’adresse destinataire sera utilisée comme adresse d’envoi) :',
301
-	'info_email_webmestre' => 'Adresse email du webmestre',
302
-	'info_envoi_email_automatique' => 'Envoi de mails automatique',
303
-	'info_envoyer_maintenant' => 'Envoyer maintenant',
304
-	'info_etape_suivante' => 'Passer à l’étape suivante',
305
-	'info_etape_suivante_1' => 'Vous pouvez passer à l’étape suivante.',
306
-	'info_etape_suivante_2' => 'Vous pouvez passer à l’étape suivante.',
307
-	'info_exceptions_proxy' => 'Exceptions pour le proxy',
308
-	'info_exportation_base' => 'exportation de la base vers @archive@',
309
-	'info_facilite_suivi_activite' => 'Afin de faciliter le suivi de l’activité
234
+    'info_ajouter_rubrique' => 'Ajouter une autre rubrique à administrer :',
235
+    'info_annonce_nouveautes' => 'Annonce des nouveautés',
236
+    'info_article' => 'article',
237
+    'info_article_2' => 'articles',
238
+    'info_article_a_paraitre' => 'Les articles post-datés à paraître',
239
+    'info_articles_02' => 'articles',
240
+    'info_articles_2' => 'Articles',
241
+    'info_articles_auteur' => 'Les articles de cet auteur',
242
+    'info_articles_miens' => 'Mes articles',
243
+    'info_articles_tous' => 'Tous les articles',
244
+    'info_articles_trouves' => 'Articles trouvés',
245
+    'info_attente_validation' => 'Vos articles en attente de validation',
246
+    'info_aucun_article' => 'Aucun article',
247
+    'info_aucun_auteur' => 'Aucun auteur',
248
+    'info_aucun_message' => 'Aucun message',
249
+    'info_aucun_rubrique' => 'Aucune rubrique',
250
+    'info_aujourdhui' => 'aujourd’hui :',
251
+    'info_auteur_gere_rubriques' => 'Cet auteur gère les rubriques suivantes :',
252
+    'info_auteur_gere_toutes_rubriques' => 'Cet auteur gère <b>toutes les rubriques</b>',
253
+    'info_auteur_gere_toutes_rubriques_2' => 'Je gère <b>toutes les rubriques</b>',
254
+    'info_auteurs' => 'Les auteurs',
255
+    'info_auteurs_par_tri' => 'Auteurs@partri@',
256
+    'info_auteurs_trouves' => 'Auteurs trouvés',
257
+    'info_authentification_externe' => 'Authentification externe',
258
+    'info_avertissement' => 'Avertissement',
259
+    'info_barre_outils' => 'avec sa barre d’outils ?',
260
+    'info_base_installee' => 'La structure de votre base de données est installée.',
261
+    'info_bio' => 'Biographie',
262
+    'info_cache_desactive' => 'Le cache est temporairement désactivé.',
263
+    'info_chapeau' => 'Chapeau',
264
+    'info_chapeau_2' => 'Chapeau :',
265
+    'info_chemin_acces_1' => 'Options : <b>Chemin d’accès dans l’annuaire</b>',
266
+    'info_chemin_acces_2' => 'Vous devez désormais configurer le chemin d’accès aux informations dans l’annuaire. Cette information est indispensable pour lire les profils utilisateurs stockés dans l’annuaire.',
267
+    'info_chemin_acces_annuaire' => 'Options : <b>Chemin d’accès dans l’annuaire</b>',
268
+    'info_choix_base' => 'Troisième étape :',
269
+    'info_classement_1' => '<sup>er</sup> sur @liste@',
270
+    'info_classement_2' => '<sup>e</sup> sur @liste@',
271
+    'info_code_acces' => 'N’oubliez pas vos propres codes d’accès !',
272
+    'info_config_suivi' => 'Si cette adresse correspond à une mailing-list, vous pouvez indiquer ci-dessous l’adresse à laquelle les participants au site peuvent s’inscrire. Cette adresse peut être une URL (par exemple la page d’inscription à la liste par le Web), ou une adresse email dotée d’un sujet spécifique (par exemple : <tt>@adresse_suivi@?subject=subscribe</tt>) :',
273
+    'info_config_suivi_explication' => 'Vous pouvez vous abonner à la mailing-list de ce site. Vous recevrez alors par courrier électronique les annonces d’articles et de brèves proposés à la publication.',
274
+    'info_confirmer_passe' => 'Confirmer ce nouveau mot de passe :',
275
+    'info_conflit_edition_avis_non_sauvegarde' => 'Attention, les champs suivants ont été modifiés par ailleurs. Vos modifications sur ces champs n’ont donc pas été enregistrées.',
276
+    'info_conflit_edition_differences' => 'Différences :',
277
+    'info_conflit_edition_version_enregistree' => 'La version enregistrée :',
278
+    'info_conflit_edition_votre_version' => 'Votre version :',
279
+    'info_connexion_base' => 'Essai de connexion à la base',
280
+    'info_connexion_base_donnee' => 'Connexion à votre base de données',
281
+    'info_connexion_ldap_ok' => '<b>La connexion LDAP a réussi.</b><p> Vous pouvez passer à l’étape suivante.</p>',
282
+    'info_connexion_mysql' => 'Votre connexion SQL',
283
+    'info_connexion_ok' => 'La connexion a réussi.',
284
+    'info_contact' => 'Contact',
285
+    'info_contenu_articles' => 'Contenu des articles',
286
+    'info_contributions' => 'Contributions',
287
+    'info_creation_paragraphe' => 'Pour créer des paragraphes, laissez simplement des lignes vides.',
288
+    'info_creation_rubrique' => 'Avant de pouvoir écrire des articles,<br /> vous devez créer au moins une rubrique.<br />',
289
+    'info_creation_tables' => 'Création des tables de la base',
290
+    'info_creer_base' => '<b>Créer</b> une nouvelle base de données :',
291
+    'info_dans_rubrique' => 'Dans la rubrique :',
292
+    'info_date_publication_anterieure' => 'Date de rédaction antérieure :',
293
+    'info_date_referencement' => 'DATE DE RÉFÉRENCEMENT DE CE SITE :',
294
+    'info_derniere_etape' => 'C’est terminé !',
295
+    'info_descriptif' => 'Descriptif :',
296
+    'info_desinstaller_plugin' => 'supprime les données et désactive le plugin',
297
+    'info_discussion_cours' => 'Discussions en cours',
298
+    'info_ecrire_article' => 'Avant de pouvoir écrire des articles, vous devez créer au moins une rubrique.',
299
+    'info_email_envoi' => 'Adresse email d’envoi (optionnel)',
300
+    'info_email_envoi_txt' => 'Indiquez ici l’adresse à utiliser pour envoyer les emails (à défaut, l’adresse destinataire sera utilisée comme adresse d’envoi) :',
301
+    'info_email_webmestre' => 'Adresse email du webmestre',
302
+    'info_envoi_email_automatique' => 'Envoi de mails automatique',
303
+    'info_envoyer_maintenant' => 'Envoyer maintenant',
304
+    'info_etape_suivante' => 'Passer à l’étape suivante',
305
+    'info_etape_suivante_1' => 'Vous pouvez passer à l’étape suivante.',
306
+    'info_etape_suivante_2' => 'Vous pouvez passer à l’étape suivante.',
307
+    'info_exceptions_proxy' => 'Exceptions pour le proxy',
308
+    'info_exportation_base' => 'exportation de la base vers @archive@',
309
+    'info_facilite_suivi_activite' => 'Afin de faciliter le suivi de l’activité
310 310
 		éditoriale du site, SPIP peut faire parvenir par mail, par exemple
311 311
 		à une mailing-list des rédacteurs, l’annonce des demandes de
312 312
 		publication et des validations d’articles.',
313
-	'info_fichiers_authent' => 'Fichiers d’authentification « .htpasswd »',
314
-	'info_forums_abo_invites' => 'Votre site comporte des forums sur abonnement ; les visiteurs sont donc invités à s’enregistrer sur le site public.',
315
-	'info_gauche_admin_tech' => '<b>Cette page est uniquement accessible aux responsables du site.</b><p> Elle donne accès aux différentes
313
+    'info_fichiers_authent' => 'Fichiers d’authentification « .htpasswd »',
314
+    'info_forums_abo_invites' => 'Votre site comporte des forums sur abonnement ; les visiteurs sont donc invités à s’enregistrer sur le site public.',
315
+    'info_gauche_admin_tech' => '<b>Cette page est uniquement accessible aux responsables du site.</b><p> Elle donne accès aux différentes
316 316
 fonctions de maintenance technique. Certaines d’entre elles donnent lieu à un processus d’authentification spécifique, qui
317 317
 exige d’avoir un accès FTP au site Web.</p>',
318
-	'info_gauche_admin_vider' => '<b>Cette page est uniquement accessible aux responsables du site.</b><p> Elle donne accès aux différentes
318
+    'info_gauche_admin_vider' => '<b>Cette page est uniquement accessible aux responsables du site.</b><p> Elle donne accès aux différentes
319 319
 fonctions de maintenance technique. Certaines d’entre elles donnent lieu à un processus d’authentification spécifique, qui
320 320
 exige d’avoir un accès FTP au site Web.</p>',
321
-	'info_gauche_auteurs' => 'Vous trouverez ici tous les auteurs du site.
321
+    'info_gauche_auteurs' => 'Vous trouverez ici tous les auteurs du site.
322 322
  Leur statut est indiqué par la couleur de leur icone (administrateur = vert ; rédacteur = jaune).',
323
-	'info_gauche_auteurs_exterieurs' => 'Les auteurs extérieurs, sans accès au site, sont indiqués par une icone bleue ;
323
+    'info_gauche_auteurs_exterieurs' => 'Les auteurs extérieurs, sans accès au site, sont indiqués par une icone bleue ;
324 324
 		les auteurs effacés par une icone grise.',
325
-	'info_gauche_messagerie' => 'La messagerie vous permet d’échanger des messages entre rédacteurs, de conserver des pense-bêtes (pour votre usage personnel) ou d’afficher des annonces sur la page d’accueil de l’espace privé (si vous êtes administrateur).',
326
-	'info_gauche_statistiques_referers' => 'Cette page présente la liste des <i>referers</i>, c’est-à-dire des sites contenant des liens menant vers votre propre site, uniquement pour hier et aujourd’hui ; cette liste est remise à zéro toutes les 24 heures.',
327
-	'info_gauche_visiteurs_enregistres' => 'Vous trouverez ici les visiteurs enregistrés
325
+    'info_gauche_messagerie' => 'La messagerie vous permet d’échanger des messages entre rédacteurs, de conserver des pense-bêtes (pour votre usage personnel) ou d’afficher des annonces sur la page d’accueil de l’espace privé (si vous êtes administrateur).',
326
+    'info_gauche_statistiques_referers' => 'Cette page présente la liste des <i>referers</i>, c’est-à-dire des sites contenant des liens menant vers votre propre site, uniquement pour hier et aujourd’hui ; cette liste est remise à zéro toutes les 24 heures.',
327
+    'info_gauche_visiteurs_enregistres' => 'Vous trouverez ici les visiteurs enregistrés
328 328
 	dans l’espace public du site (forums sur abonnement).',
329
-	'info_generation_miniatures_images' => 'Génération de miniatures des images',
330
-	'info_gerer_trad_objets' => '@objets@ : gérer les liens de traduction',
331
-	'info_hebergeur_desactiver_envoi_email' => 'Certains hébergeurs désactivent l’envoi automatique de
329
+    'info_generation_miniatures_images' => 'Génération de miniatures des images',
330
+    'info_gerer_trad_objets' => '@objets@ : gérer les liens de traduction',
331
+    'info_hebergeur_desactiver_envoi_email' => 'Certains hébergeurs désactivent l’envoi automatique de
332 332
 		mails depuis leurs serveurs. Dans ce cas, les fonctionnalités suivantes
333 333
 		de SPIP ne fonctionneront pas.',
334
-	'info_hier' => 'hier :',
335
-	'info_identification_publique' => 'Votre identité publique...',
336
-	'info_image_process' => 'Veuillez sélectionner la meilleure méthode de fabrication des vignettes en cliquant sur l’image correspondante.',
337
-	'info_image_process2' => 'Si aucune image n’apparaît, alors le serveur qui héberge votre site n’a pas été configuré pour utiliser de tels outils. Si vous souhaitez utiliser ces fonctions, contactez le responsable technique et demandez les extensions « GD » ou « Imagick ».',
338
-	'info_images_auto' => 'Images calculées automatiquement',
339
-	'info_informations_personnelles' => 'Informations personnelles',
340
-	'info_inscription' => 'Inscription le',
341
-	'info_inscription_automatique' => 'Inscription automatique de nouveaux rédacteurs',
342
-	'info_jeu_caractere' => 'Jeu de caractères du site',
343
-	'info_jours' => 'jours',
344
-	'info_laisser_champs_vides' => 'laisser ces champs vides)',
345
-	'info_langues' => 'Langues du site',
346
-	'info_ldap_ok' => 'L’authentification LDAP est installée.',
347
-	'info_lien_hypertexte' => 'Lien hypertexte :',
348
-	'info_liste_nouveautes_envoyee' => 'La liste des nouveautés a été envoyée',
349
-	'info_liste_redacteurs_connectes' => 'Liste des rédacteurs connectés',
350
-	'info_login_existant' => 'Ce login existe déjà.',
351
-	'info_login_trop_court' => 'Login trop court.',
352
-	'info_login_trop_court_car_pluriel' => 'Le login doit contenir au moins @nb@ caractères.',
353
-	'info_logos' => 'Les logos',
354
-	'info_maximum' => 'maximum :',
355
-	'info_meme_rubrique' => 'Dans la même rubrique',
356
-	'info_message_en_redaction' => 'Vos messages en cours de rédaction',
357
-	'info_message_technique' => 'Message technique :',
358
-	'info_messagerie_interne' => 'Messagerie interne',
359
-	'info_mise_a_niveau_base' => 'mise à niveau de votre base SQL',
360
-	'info_mise_a_niveau_base_2' => '{{Attention !}} Vous avez installé une version
334
+    'info_hier' => 'hier :',
335
+    'info_identification_publique' => 'Votre identité publique...',
336
+    'info_image_process' => 'Veuillez sélectionner la meilleure méthode de fabrication des vignettes en cliquant sur l’image correspondante.',
337
+    'info_image_process2' => 'Si aucune image n’apparaît, alors le serveur qui héberge votre site n’a pas été configuré pour utiliser de tels outils. Si vous souhaitez utiliser ces fonctions, contactez le responsable technique et demandez les extensions « GD » ou « Imagick ».',
338
+    'info_images_auto' => 'Images calculées automatiquement',
339
+    'info_informations_personnelles' => 'Informations personnelles',
340
+    'info_inscription' => 'Inscription le',
341
+    'info_inscription_automatique' => 'Inscription automatique de nouveaux rédacteurs',
342
+    'info_jeu_caractere' => 'Jeu de caractères du site',
343
+    'info_jours' => 'jours',
344
+    'info_laisser_champs_vides' => 'laisser ces champs vides)',
345
+    'info_langues' => 'Langues du site',
346
+    'info_ldap_ok' => 'L’authentification LDAP est installée.',
347
+    'info_lien_hypertexte' => 'Lien hypertexte :',
348
+    'info_liste_nouveautes_envoyee' => 'La liste des nouveautés a été envoyée',
349
+    'info_liste_redacteurs_connectes' => 'Liste des rédacteurs connectés',
350
+    'info_login_existant' => 'Ce login existe déjà.',
351
+    'info_login_trop_court' => 'Login trop court.',
352
+    'info_login_trop_court_car_pluriel' => 'Le login doit contenir au moins @nb@ caractères.',
353
+    'info_logos' => 'Les logos',
354
+    'info_maximum' => 'maximum :',
355
+    'info_meme_rubrique' => 'Dans la même rubrique',
356
+    'info_message_en_redaction' => 'Vos messages en cours de rédaction',
357
+    'info_message_technique' => 'Message technique :',
358
+    'info_messagerie_interne' => 'Messagerie interne',
359
+    'info_mise_a_niveau_base' => 'mise à niveau de votre base SQL',
360
+    'info_mise_a_niveau_base_2' => '{{Attention !}} Vous avez installé une version
361 361
 		des fichiers SPIP {antérieure} à celle qui se trouvait
362 362
 		auparavant sur ce site : votre base de données risque d’être
363 363
 		perdue et votre site ne fonctionnera plus.<br />{{Réinstallez les
364 364
 		fichiers de SPIP.}}',
365
-	'info_modification_enregistree' => 'Votre modification a été enregistrée',
366
-	'info_modifier_auteur' => 'Modifier l’auteur :',
367
-	'info_modifier_rubrique' => 'Modifier la rubrique :',
368
-	'info_modifier_titre' => 'Modifier : @titre@',
369
-	'info_mon_site_spip' => 'Mon site SPIP',
370
-	'info_moyenne' => 'moyenne :',
371
-	'info_multi_cet_article' => 'Langue de cet article :',
372
-	'info_multi_langues_choisies' => 'Veuillez sélectionner ci-après les langues à disposition des rédacteurs de votre site.
365
+    'info_modification_enregistree' => 'Votre modification a été enregistrée',
366
+    'info_modifier_auteur' => 'Modifier l’auteur :',
367
+    'info_modifier_rubrique' => 'Modifier la rubrique :',
368
+    'info_modifier_titre' => 'Modifier : @titre@',
369
+    'info_mon_site_spip' => 'Mon site SPIP',
370
+    'info_moyenne' => 'moyenne :',
371
+    'info_multi_cet_article' => 'Langue de cet article :',
372
+    'info_multi_langues_choisies' => 'Veuillez sélectionner ci-après les langues à disposition des rédacteurs de votre site.
373 373
 		Les langues déjà utilisées dans votre site (affichées en premier) ne peuvent pas être désactivées.',
374
-	'info_multi_objets' => '@objets@ : activer le menu de langue',
375
-	'info_multi_secteurs' => '... seulement pour les rubriques situées à la racine ?',
376
-	'info_nb_articles' => '@nb@ articles',
377
-	'info_nb_auteurs' => '@nb@ auteurs',
378
-	'info_nb_messages' => '@nb@ messages',
379
-	'info_nb_mots_cles' => '@nb@ mots-clés',
380
-	'info_nb_rubriques' => '@nb@ rubriques',
381
-	'info_nb_visiteurs' => '@nb@ visiteurs',
382
-	'info_nom' => 'Nom',
383
-	'info_nom_destinataire' => 'Nom du destinataire',
384
-	'info_nom_pas_conforme' => 'les tags html ne sont pas autorisés',
385
-	'info_nom_site' => 'Nom de votre site',
386
-	'info_nombre_articles' => '@nb_articles@ articles,',
387
-	'info_nombre_rubriques' => '@nb_rubriques@ rubriques,',
388
-	'info_nombre_sites' => '@nb_sites@ sites,',
389
-	'info_non_deplacer' => 'Ne pas déplacer...',
390
-	'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP peut envoyer, régulièrement, l’annonce des dernières nouveautés du site
374
+    'info_multi_objets' => '@objets@ : activer le menu de langue',
375
+    'info_multi_secteurs' => '... seulement pour les rubriques situées à la racine ?',
376
+    'info_nb_articles' => '@nb@ articles',
377
+    'info_nb_auteurs' => '@nb@ auteurs',
378
+    'info_nb_messages' => '@nb@ messages',
379
+    'info_nb_mots_cles' => '@nb@ mots-clés',
380
+    'info_nb_rubriques' => '@nb@ rubriques',
381
+    'info_nb_visiteurs' => '@nb@ visiteurs',
382
+    'info_nom' => 'Nom',
383
+    'info_nom_destinataire' => 'Nom du destinataire',
384
+    'info_nom_pas_conforme' => 'les tags html ne sont pas autorisés',
385
+    'info_nom_site' => 'Nom de votre site',
386
+    'info_nombre_articles' => '@nb_articles@ articles,',
387
+    'info_nombre_rubriques' => '@nb_rubriques@ rubriques,',
388
+    'info_nombre_sites' => '@nb_sites@ sites,',
389
+    'info_non_deplacer' => 'Ne pas déplacer...',
390
+    'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP peut envoyer, régulièrement, l’annonce des dernières nouveautés du site
391 391
 		(articles et brèves récemment publiés).',
392
-	'info_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
393
-	'info_non_modifiable' => 'ne peut pas être modifié',
394
-	'info_non_suppression_mot_cle' => 'je ne veux pas supprimer ce mot-clé.',
395
-	'info_notes' => 'Notes',
396
-	'info_nouvel_article' => 'Nouvel article',
397
-	'info_nouvelle_traduction' => 'Nouvelle traduction :',
398
-	'info_numero_article' => 'ARTICLE NUMÉRO :',
399
-	'info_obligatoire_02' => '(obligatoire)',
400
-	'info_option_accepter_visiteurs' => 'Accepter l’inscription de visiteurs du site public',
401
-	'info_option_ne_pas_accepter_visiteurs' => 'Refuser l’inscription des visiteurs',
402
-	'info_options_avancees' => 'OPTIONS AVANCÉES',
403
-	'info_ou' => 'ou...',
404
-	'info_page_interdite' => 'Page interdite',
405
-	'info_par_nom' => 'par nom',
406
-	'info_par_nombre_article' => 'par nombre d’articles',
407
-	'info_par_statut' => 'par statut',
408
-	'info_par_tri' => '’(par @tri@)’',
409
-	'info_passe_trop_court' => 'Mot de passe trop court.',
410
-	'info_passe_trop_court_car_pluriel' => 'Le mot de passe doit contenir au moins @nb@ caractères.',
411
-	'info_passes_identiques' => 'Les deux mots de passe ne sont pas identiques.',
412
-	'info_plus_cinq_car' => 'plus de 5 caractères',
413
-	'info_plus_cinq_car_2' => '(Plus de 5 caractères)',
414
-	'info_plus_trois_car' => '(Plus de 3 caractères)',
415
-	'info_popularite' => 'popularité : @popularite@ ; visites : @visites@',
416
-	'info_post_scriptum' => 'Post-Scriptum',
417
-	'info_post_scriptum_2' => 'Post-scriptum :',
418
-	'info_pour' => 'pour',
419
-	'info_preview_texte' => 'Il est possible de prévisualiser les différents éléments éditoriaux du site ayant au moins le statut « proposé », ainsi que les éléments en cours de rédaction dont on est l’auteur. Cette fonctionnalité doit-elle être disponible pour les administrateurs, les rédacteurs, ou personne ?',
420
-	'info_procedez_par_etape' => 'procédez étape par étape',
421
-	'info_procedure_maj_version' => 'la procédure de mise à jour doit être lancée afin d’adapter
392
+    'info_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
393
+    'info_non_modifiable' => 'ne peut pas être modifié',
394
+    'info_non_suppression_mot_cle' => 'je ne veux pas supprimer ce mot-clé.',
395
+    'info_notes' => 'Notes',
396
+    'info_nouvel_article' => 'Nouvel article',
397
+    'info_nouvelle_traduction' => 'Nouvelle traduction :',
398
+    'info_numero_article' => 'ARTICLE NUMÉRO :',
399
+    'info_obligatoire_02' => '(obligatoire)',
400
+    'info_option_accepter_visiteurs' => 'Accepter l’inscription de visiteurs du site public',
401
+    'info_option_ne_pas_accepter_visiteurs' => 'Refuser l’inscription des visiteurs',
402
+    'info_options_avancees' => 'OPTIONS AVANCÉES',
403
+    'info_ou' => 'ou...',
404
+    'info_page_interdite' => 'Page interdite',
405
+    'info_par_nom' => 'par nom',
406
+    'info_par_nombre_article' => 'par nombre d’articles',
407
+    'info_par_statut' => 'par statut',
408
+    'info_par_tri' => '’(par @tri@)’',
409
+    'info_passe_trop_court' => 'Mot de passe trop court.',
410
+    'info_passe_trop_court_car_pluriel' => 'Le mot de passe doit contenir au moins @nb@ caractères.',
411
+    'info_passes_identiques' => 'Les deux mots de passe ne sont pas identiques.',
412
+    'info_plus_cinq_car' => 'plus de 5 caractères',
413
+    'info_plus_cinq_car_2' => '(Plus de 5 caractères)',
414
+    'info_plus_trois_car' => '(Plus de 3 caractères)',
415
+    'info_popularite' => 'popularité : @popularite@ ; visites : @visites@',
416
+    'info_post_scriptum' => 'Post-Scriptum',
417
+    'info_post_scriptum_2' => 'Post-scriptum :',
418
+    'info_pour' => 'pour',
419
+    'info_preview_texte' => 'Il est possible de prévisualiser les différents éléments éditoriaux du site ayant au moins le statut « proposé », ainsi que les éléments en cours de rédaction dont on est l’auteur. Cette fonctionnalité doit-elle être disponible pour les administrateurs, les rédacteurs, ou personne ?',
420
+    'info_procedez_par_etape' => 'procédez étape par étape',
421
+    'info_procedure_maj_version' => 'la procédure de mise à jour doit être lancée afin d’adapter
422 422
 	la base de données à la nouvelle version de SPIP.',
423
-	'info_proxy_ok' => 'Test du proxy réussi.',
424
-	'info_ps' => 'P.-S.',
425
-	'info_publier' => 'publier',
426
-	'info_publies' => 'Vos articles publiés en ligne',
427
-	'info_question_accepter_visiteurs' => 'Si les squelettes de votre site prévoient l’enregistrement de visiteurs sans accès à l’espace privé, veuillez activer l’option ci-dessous :',
428
-	'info_question_inscription_nouveaux_redacteurs' => 'Acceptez-vous les inscriptions de nouveaux rédacteurs à
423
+    'info_proxy_ok' => 'Test du proxy réussi.',
424
+    'info_ps' => 'P.-S.',
425
+    'info_publier' => 'publier',
426
+    'info_publies' => 'Vos articles publiés en ligne',
427
+    'info_question_accepter_visiteurs' => 'Si les squelettes de votre site prévoient l’enregistrement de visiteurs sans accès à l’espace privé, veuillez activer l’option ci-dessous :',
428
+    'info_question_inscription_nouveaux_redacteurs' => 'Acceptez-vous les inscriptions de nouveaux rédacteurs à
429 429
   partir du site public ? Si vous acceptez, les visiteurs pourront s’inscrire
430 430
   depuis un formulaire automatisé et accéderont alors à l’espace privé pour
431 431
   proposer leurs propres articles. <div class="notice">Lors de la phase d’inscription,
@@ -434,404 +434,404 @@  discard block
 block discarded – undo
434 434
   hébergeurs désactivent l’envoi de mails depuis leurs
435 435
   serveurs : dans ce cas, l’inscription automatique est
436 436
   impossible.</div>',
437
-	'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes',
438
-	'info_racine_site' => 'Racine du site',
439
-	'info_recharger_page' => 'Veuillez recharger cette page dans quelques instants.',
440
-	'info_recherche_auteur_zero' => 'Aucun résultat pour « @cherche_auteur@ ».',
441
-	'info_recommencer' => 'Veuillez recommencer.',
442
-	'info_redacteur_1' => 'Rédacteur',
443
-	'info_redacteur_2' => 'ayant accès à l’espace privé (<i>recommandé</i>)',
444
-	'info_redacteurs' => 'Rédacteurs',
445
-	'info_redaction_en_cours' => 'EN COURS DE RÉDACTION',
446
-	'info_redirection' => 'Redirection',
447
-	'info_redirection_activee' => 'La redirection est activée.',
448
-	'info_redirection_boucle' => 'Vous essayez de rediriger l’article sur lui-même.',
449
-	'info_redirection_desactivee' => 'La redirection a été supprimée.',
450
-	'info_refuses' => 'Vos articles refusés',
451
-	'info_reglage_ldap' => 'Options : <b>Réglage de l’importation LDAP</b>',
452
-	'info_renvoi_article' => '<b>Redirection.</b> Cet article renvoie à la page :',
453
-	'info_reserve_admin' => 'Seuls les administrateurs peuvent modifier cette adresse.',
454
-	'info_restreindre_rubrique' => 'Restreindre la gestion à la rubrique :',
455
-	'info_resultat_recherche' => 'Résultats de la recherche :',
456
-	'info_rubriques' => 'Rubriques',
457
-	'info_rubriques_02' => 'rubriques',
458
-	'info_rubriques_trouvees' => 'Rubriques trouvées',
459
-	'info_sans_titre' => 'Sans titre',
460
-	'info_selection_chemin_acces' => '<b>Sélectionnez</b> ci-après le chemin d’accès dans l’annuaire :',
461
-	'info_signatures' => 'signatures',
462
-	'info_site' => 'Site',
463
-	'info_site_2' => 'site :',
464
-	'info_site_min' => 'site',
465
-	'info_site_reference_2' => 'Site référencé',
466
-	'info_site_web' => 'Site Web :',
467
-	'info_sites' => 'sites',
468
-	'info_sites_lies_mot' => 'Les sites référencés liés à ce mot-clé',
469
-	'info_sites_proxy' => 'Utiliser un proxy',
470
-	'info_sites_trouves' => 'Sites trouvés',
471
-	'info_sous_titre' => 'Soustitre :',
472
-	'info_statut_administrateur' => 'Administrateur',
473
-	'info_statut_auteur' => 'Statut de cet auteur :',
474
-	'info_statut_auteur_2' => 'Je suis',
475
-	'info_statut_auteur_a_confirmer' => 'Inscription à confirmer',
476
-	'info_statut_auteur_autre' => 'Autre statut :',
477
-	'info_statut_redacteur' => 'Rédacteur',
478
-	'info_statut_utilisateurs_1' => 'Statut par défaut des utilisateurs importés',
479
-	'info_statut_utilisateurs_2' => 'Choisissez le statut qui est attribué aux personnes présentes dans l’annuaire LDAP lorsqu’elles se connectent pour la première fois. Vous pourrez par la suite modifier cette valeur pour chaque auteur au cas par cas.',
480
-	'info_suivi_activite' => 'Suivi de l’activité éditoriale',
481
-	'info_surtitre' => 'Surtitre :',
482
-	'info_syndication_integrale_1' => 'Votre site propose des fichiers de syndication (voir « <a href="@url@">@titre@</a> »).',
483
-	'info_syndication_integrale_2' => 'Souhaitez-vous transmettre les articles dans leur intégralité, ou ne diffuser qu’un résumé de quelques centaines de caractères ?',
484
-	'info_table_prefix' => 'Vous pouvez modifier le préfixe du nom des tables de données (ceci est indispensable lorsque l’on souhaite installer plusieurs sites dans la même base de données). Ce préfixe s’écrit en lettres minuscules, non accentuées, et sans espace.',
485
-	'info_taille_maximale_images' => 'SPIP va tester la taille maximale des images qu’il peut traiter (en millions de pixels).<br /> Les images plus grandes ne seront pas réduites.',
486
-	'info_taille_maximale_vignette' => 'Taille maximale des vignettes générées par le système :',
487
-	'info_terminer_installation' => 'Vous pouvez maintenant terminer la procédure d’installation standard.',
488
-	'info_texte' => 'Texte',
489
-	'info_texte_explicatif' => 'Texte explicatif',
490
-	'info_texte_long' => '(le texte est long : il apparaît donc en plusieurs parties qui seront recollées après validation.)',
491
-	'info_texte_message' => 'Texte de votre message',
492
-	'info_texte_message_02' => 'Texte du message',
493
-	'info_titre' => 'Titre :',
494
-	'info_total' => 'total :',
495
-	'info_tous_articles_en_redaction' => 'Tous les articles en cours de rédaction',
496
-	'info_tous_articles_presents' => 'Tous les articles publiés dans cette rubrique',
497
-	'info_tous_articles_refuses' => 'Tous les articles refusés',
498
-	'info_tous_les' => 'tous les :',
499
-	'info_tout_site' => 'Tout le site',
500
-	'info_tout_site2' => 'L’article n’a pas été traduit dans cette langue.',
501
-	'info_tout_site3' => 'L’article a été traduit dans cette langue, mais des modifications ont été apportées par la suite à l’article de référence. La traduction doit être mise à jour.',
502
-	'info_tout_site4' => 'L’article a été traduit dans cette langue, et la traduction est à jour.',
503
-	'info_tout_site5' => 'Article original.',
504
-	'info_tout_site6' => '<b>Attention :</b> seuls les articles originaux sont affichés.
437
+    'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes',
438
+    'info_racine_site' => 'Racine du site',
439
+    'info_recharger_page' => 'Veuillez recharger cette page dans quelques instants.',
440
+    'info_recherche_auteur_zero' => 'Aucun résultat pour « @cherche_auteur@ ».',
441
+    'info_recommencer' => 'Veuillez recommencer.',
442
+    'info_redacteur_1' => 'Rédacteur',
443
+    'info_redacteur_2' => 'ayant accès à l’espace privé (<i>recommandé</i>)',
444
+    'info_redacteurs' => 'Rédacteurs',
445
+    'info_redaction_en_cours' => 'EN COURS DE RÉDACTION',
446
+    'info_redirection' => 'Redirection',
447
+    'info_redirection_activee' => 'La redirection est activée.',
448
+    'info_redirection_boucle' => 'Vous essayez de rediriger l’article sur lui-même.',
449
+    'info_redirection_desactivee' => 'La redirection a été supprimée.',
450
+    'info_refuses' => 'Vos articles refusés',
451
+    'info_reglage_ldap' => 'Options : <b>Réglage de l’importation LDAP</b>',
452
+    'info_renvoi_article' => '<b>Redirection.</b> Cet article renvoie à la page :',
453
+    'info_reserve_admin' => 'Seuls les administrateurs peuvent modifier cette adresse.',
454
+    'info_restreindre_rubrique' => 'Restreindre la gestion à la rubrique :',
455
+    'info_resultat_recherche' => 'Résultats de la recherche :',
456
+    'info_rubriques' => 'Rubriques',
457
+    'info_rubriques_02' => 'rubriques',
458
+    'info_rubriques_trouvees' => 'Rubriques trouvées',
459
+    'info_sans_titre' => 'Sans titre',
460
+    'info_selection_chemin_acces' => '<b>Sélectionnez</b> ci-après le chemin d’accès dans l’annuaire :',
461
+    'info_signatures' => 'signatures',
462
+    'info_site' => 'Site',
463
+    'info_site_2' => 'site :',
464
+    'info_site_min' => 'site',
465
+    'info_site_reference_2' => 'Site référencé',
466
+    'info_site_web' => 'Site Web :',
467
+    'info_sites' => 'sites',
468
+    'info_sites_lies_mot' => 'Les sites référencés liés à ce mot-clé',
469
+    'info_sites_proxy' => 'Utiliser un proxy',
470
+    'info_sites_trouves' => 'Sites trouvés',
471
+    'info_sous_titre' => 'Soustitre :',
472
+    'info_statut_administrateur' => 'Administrateur',
473
+    'info_statut_auteur' => 'Statut de cet auteur :',
474
+    'info_statut_auteur_2' => 'Je suis',
475
+    'info_statut_auteur_a_confirmer' => 'Inscription à confirmer',
476
+    'info_statut_auteur_autre' => 'Autre statut :',
477
+    'info_statut_redacteur' => 'Rédacteur',
478
+    'info_statut_utilisateurs_1' => 'Statut par défaut des utilisateurs importés',
479
+    'info_statut_utilisateurs_2' => 'Choisissez le statut qui est attribué aux personnes présentes dans l’annuaire LDAP lorsqu’elles se connectent pour la première fois. Vous pourrez par la suite modifier cette valeur pour chaque auteur au cas par cas.',
480
+    'info_suivi_activite' => 'Suivi de l’activité éditoriale',
481
+    'info_surtitre' => 'Surtitre :',
482
+    'info_syndication_integrale_1' => 'Votre site propose des fichiers de syndication (voir « <a href="@url@">@titre@</a> »).',
483
+    'info_syndication_integrale_2' => 'Souhaitez-vous transmettre les articles dans leur intégralité, ou ne diffuser qu’un résumé de quelques centaines de caractères ?',
484
+    'info_table_prefix' => 'Vous pouvez modifier le préfixe du nom des tables de données (ceci est indispensable lorsque l’on souhaite installer plusieurs sites dans la même base de données). Ce préfixe s’écrit en lettres minuscules, non accentuées, et sans espace.',
485
+    'info_taille_maximale_images' => 'SPIP va tester la taille maximale des images qu’il peut traiter (en millions de pixels).<br /> Les images plus grandes ne seront pas réduites.',
486
+    'info_taille_maximale_vignette' => 'Taille maximale des vignettes générées par le système :',
487
+    'info_terminer_installation' => 'Vous pouvez maintenant terminer la procédure d’installation standard.',
488
+    'info_texte' => 'Texte',
489
+    'info_texte_explicatif' => 'Texte explicatif',
490
+    'info_texte_long' => '(le texte est long : il apparaît donc en plusieurs parties qui seront recollées après validation.)',
491
+    'info_texte_message' => 'Texte de votre message',
492
+    'info_texte_message_02' => 'Texte du message',
493
+    'info_titre' => 'Titre :',
494
+    'info_total' => 'total :',
495
+    'info_tous_articles_en_redaction' => 'Tous les articles en cours de rédaction',
496
+    'info_tous_articles_presents' => 'Tous les articles publiés dans cette rubrique',
497
+    'info_tous_articles_refuses' => 'Tous les articles refusés',
498
+    'info_tous_les' => 'tous les :',
499
+    'info_tout_site' => 'Tout le site',
500
+    'info_tout_site2' => 'L’article n’a pas été traduit dans cette langue.',
501
+    'info_tout_site3' => 'L’article a été traduit dans cette langue, mais des modifications ont été apportées par la suite à l’article de référence. La traduction doit être mise à jour.',
502
+    'info_tout_site4' => 'L’article a été traduit dans cette langue, et la traduction est à jour.',
503
+    'info_tout_site5' => 'Article original.',
504
+    'info_tout_site6' => '<b>Attention :</b> seuls les articles originaux sont affichés.
505 505
 Les traductions sont associées à l’original,
506 506
 dans une couleur qui indique leur état :',
507
-	'info_traductions' => 'Traductions',
508
-	'info_travail_colaboratif' => 'Travail collaboratif sur les articles',
509
-	'info_un_article' => 'un article,',
510
-	'info_un_site' => 'un site,',
511
-	'info_une_rubrique' => 'une rubrique,',
512
-	'info_une_rubrique_02' => '1 rubrique',
513
-	'info_url' => 'URL :',
514
-	'info_url_proxy' => 'URL du proxy',
515
-	'info_url_proxy_pas_conforme' => 'l’URL du proxy n’est pas valide.',
516
-	'info_url_site_pas_conforme' => 'l’URL du site n’est pas valide.',
517
-	'info_url_test_proxy' => 'URL de test',
518
-	'info_urlref' => 'Lien hypertexte :',
519
-	'info_utilisation_spip' => 'Vous pouvez maintenant commencer à utiliser le système de publication assistée...',
520
-	'info_visites_par_mois' => 'Affichage par mois :',
521
-	'info_visiteur_1' => 'Visiteur',
522
-	'info_visiteur_2' => 'du site public',
523
-	'info_visiteurs' => 'Visiteurs',
524
-	'info_visiteurs_02' => 'Visiteurs du site public',
525
-	'info_webmestre_forces' => 'Les webmestres sont actuellement définis dans <tt>@file_options@</tt>.',
526
-	'install_adresse_base_hebergeur' => 'Adresse de la base de données attribuée par l’hébergeur',
527
-	'install_connect_ok' => 'La nouvelle base a bien été déclarée sous le nom de serveur @connect@.',
528
-	'install_echec_annonce' => 'L’installation va probablement échouer, ou aboutir à un site non fonctionnel...',
529
-	'install_extension_mbstring' => 'SPIP ne fonctionne pas avec :',
530
-	'install_extension_php_obligatoire' => 'SPIP exige l’extension php :',
531
-	'install_login_base_hebergeur' => 'Login de connexion attribué par l’hébergeur',
532
-	'install_nom_base_hebergeur' => 'Nom de la base attribué par l’hébergeur :',
533
-	'install_pas_table' => 'Base actuellement sans tables',
534
-	'install_pass_base_hebergeur' => 'Mot de passe de connexion attribué par l’hébergeur',
535
-	'install_php_version' => 'PHP version @version@ insuffisant (minimum = @minimum@)',
536
-	'install_select_langue' => 'Sélectionnez une langue puis cliquez sur le bouton « suivant » pour lancer la procédure d’installation.',
537
-	'install_select_type_db' => 'Indiquer le type de base de données :',
538
-	'install_select_type_mysql' => 'MySQL',
539
-	'install_select_type_pg' => 'PostgreSQL',
540
-	'install_select_type_sqlite2' => 'SQLite 2',
541
-	'install_select_type_sqlite3' => 'SQLite 3',
542
-	'install_serveur_hebergeur' => 'Serveur de base de données attribué par l’hébergeur',
543
-	'install_table_prefix_hebergeur' => 'Préfixe de table attribué par l’hébergeur :',
544
-	'install_tables_base' => 'Tables de la base',
545
-	'install_types_db_connus' => 'SPIP sait utiliser <b>MySQL</b> (le plus répandu) et <b>SQLite</b>.',
546
-	'install_types_db_connus_avertissement' => 'Le support de <b>PostgreSQL</b> est également proposé à titre experimental',
547
-	'instituer_erreur_statut_a_change' => 'Le statut a déjà été modifié',
548
-	'instituer_erreur_statut_non_autorise' => 'Vous ne pouvez pas choisir ce statut',
549
-	'intem_redacteur' => 'rédacteur',
550
-	'intitule_licence' => 'Licence',
551
-	'item_accepter_inscriptions' => 'Accepter les inscriptions',
552
-	'item_activer_messages_avertissement' => 'Activer les messages d’avertissement',
553
-	'item_administrateur_2' => 'administrateur',
554
-	'item_afficher_calendrier' => 'Afficher dans le calendrier',
555
-	'item_autoriser_syndication_integrale' => 'Diffuser l’intégralité des articles dans les fichiers de syndication',
556
-	'item_choix_administrateurs' => 'les administrateurs',
557
-	'item_choix_generation_miniature' => 'Générer automatiquement les miniatures des images.',
558
-	'item_choix_non_generation_miniature' => 'Ne pas générer de miniatures des images.',
559
-	'item_choix_redacteurs' => 'les rédacteurs',
560
-	'item_choix_visiteurs' => 'les visiteurs du site public',
561
-	'item_creer_fichiers_authent' => 'Créer les fichiers .htpasswd',
562
-	'item_login' => 'Login',
563
-	'item_messagerie_agenda' => 'Activer la messagerie et l’agenda',
564
-	'item_mots_cles_association_articles' => 'aux articles',
565
-	'item_mots_cles_association_rubriques' => 'aux rubriques',
566
-	'item_mots_cles_association_sites' => 'aux sites référencés ou syndiqués.',
567
-	'item_non' => 'Non',
568
-	'item_non_accepter_inscriptions' => 'Ne pas accepter les inscriptions',
569
-	'item_non_activer_messages_avertissement' => 'Pas de messages d’avertissement',
570
-	'item_non_afficher_calendrier' => 'Ne pas afficher dans le calendrier',
571
-	'item_non_autoriser_syndication_integrale' => 'Ne diffuser qu’un résumé',
572
-	'item_non_creer_fichiers_authent' => 'Ne pas créer ces fichiers',
573
-	'item_non_messagerie_agenda' => 'Désactiver la messagerie et l’agenda',
574
-	'item_non_publier_articles' => 'Ne pas publier les articles avant la date de publication fixée.',
575
-	'item_nouvel_auteur' => 'Nouvel auteur',
576
-	'item_nouvelle_rubrique' => 'Nouvelle rubrique',
577
-	'item_oui' => 'Oui',
578
-	'item_publier_articles' => 'Publier les articles, quelle que soit leur date de publication.',
579
-	'item_reponse_article' => 'Réponse à l’article',
580
-	'item_visiteur' => 'visiteur',
507
+    'info_traductions' => 'Traductions',
508
+    'info_travail_colaboratif' => 'Travail collaboratif sur les articles',
509
+    'info_un_article' => 'un article,',
510
+    'info_un_site' => 'un site,',
511
+    'info_une_rubrique' => 'une rubrique,',
512
+    'info_une_rubrique_02' => '1 rubrique',
513
+    'info_url' => 'URL :',
514
+    'info_url_proxy' => 'URL du proxy',
515
+    'info_url_proxy_pas_conforme' => 'l’URL du proxy n’est pas valide.',
516
+    'info_url_site_pas_conforme' => 'l’URL du site n’est pas valide.',
517
+    'info_url_test_proxy' => 'URL de test',
518
+    'info_urlref' => 'Lien hypertexte :',
519
+    'info_utilisation_spip' => 'Vous pouvez maintenant commencer à utiliser le système de publication assistée...',
520
+    'info_visites_par_mois' => 'Affichage par mois :',
521
+    'info_visiteur_1' => 'Visiteur',
522
+    'info_visiteur_2' => 'du site public',
523
+    'info_visiteurs' => 'Visiteurs',
524
+    'info_visiteurs_02' => 'Visiteurs du site public',
525
+    'info_webmestre_forces' => 'Les webmestres sont actuellement définis dans <tt>@file_options@</tt>.',
526
+    'install_adresse_base_hebergeur' => 'Adresse de la base de données attribuée par l’hébergeur',
527
+    'install_connect_ok' => 'La nouvelle base a bien été déclarée sous le nom de serveur @connect@.',
528
+    'install_echec_annonce' => 'L’installation va probablement échouer, ou aboutir à un site non fonctionnel...',
529
+    'install_extension_mbstring' => 'SPIP ne fonctionne pas avec :',
530
+    'install_extension_php_obligatoire' => 'SPIP exige l’extension php :',
531
+    'install_login_base_hebergeur' => 'Login de connexion attribué par l’hébergeur',
532
+    'install_nom_base_hebergeur' => 'Nom de la base attribué par l’hébergeur :',
533
+    'install_pas_table' => 'Base actuellement sans tables',
534
+    'install_pass_base_hebergeur' => 'Mot de passe de connexion attribué par l’hébergeur',
535
+    'install_php_version' => 'PHP version @version@ insuffisant (minimum = @minimum@)',
536
+    'install_select_langue' => 'Sélectionnez une langue puis cliquez sur le bouton « suivant » pour lancer la procédure d’installation.',
537
+    'install_select_type_db' => 'Indiquer le type de base de données :',
538
+    'install_select_type_mysql' => 'MySQL',
539
+    'install_select_type_pg' => 'PostgreSQL',
540
+    'install_select_type_sqlite2' => 'SQLite 2',
541
+    'install_select_type_sqlite3' => 'SQLite 3',
542
+    'install_serveur_hebergeur' => 'Serveur de base de données attribué par l’hébergeur',
543
+    'install_table_prefix_hebergeur' => 'Préfixe de table attribué par l’hébergeur :',
544
+    'install_tables_base' => 'Tables de la base',
545
+    'install_types_db_connus' => 'SPIP sait utiliser <b>MySQL</b> (le plus répandu) et <b>SQLite</b>.',
546
+    'install_types_db_connus_avertissement' => 'Le support de <b>PostgreSQL</b> est également proposé à titre experimental',
547
+    'instituer_erreur_statut_a_change' => 'Le statut a déjà été modifié',
548
+    'instituer_erreur_statut_non_autorise' => 'Vous ne pouvez pas choisir ce statut',
549
+    'intem_redacteur' => 'rédacteur',
550
+    'intitule_licence' => 'Licence',
551
+    'item_accepter_inscriptions' => 'Accepter les inscriptions',
552
+    'item_activer_messages_avertissement' => 'Activer les messages d’avertissement',
553
+    'item_administrateur_2' => 'administrateur',
554
+    'item_afficher_calendrier' => 'Afficher dans le calendrier',
555
+    'item_autoriser_syndication_integrale' => 'Diffuser l’intégralité des articles dans les fichiers de syndication',
556
+    'item_choix_administrateurs' => 'les administrateurs',
557
+    'item_choix_generation_miniature' => 'Générer automatiquement les miniatures des images.',
558
+    'item_choix_non_generation_miniature' => 'Ne pas générer de miniatures des images.',
559
+    'item_choix_redacteurs' => 'les rédacteurs',
560
+    'item_choix_visiteurs' => 'les visiteurs du site public',
561
+    'item_creer_fichiers_authent' => 'Créer les fichiers .htpasswd',
562
+    'item_login' => 'Login',
563
+    'item_messagerie_agenda' => 'Activer la messagerie et l’agenda',
564
+    'item_mots_cles_association_articles' => 'aux articles',
565
+    'item_mots_cles_association_rubriques' => 'aux rubriques',
566
+    'item_mots_cles_association_sites' => 'aux sites référencés ou syndiqués.',
567
+    'item_non' => 'Non',
568
+    'item_non_accepter_inscriptions' => 'Ne pas accepter les inscriptions',
569
+    'item_non_activer_messages_avertissement' => 'Pas de messages d’avertissement',
570
+    'item_non_afficher_calendrier' => 'Ne pas afficher dans le calendrier',
571
+    'item_non_autoriser_syndication_integrale' => 'Ne diffuser qu’un résumé',
572
+    'item_non_creer_fichiers_authent' => 'Ne pas créer ces fichiers',
573
+    'item_non_messagerie_agenda' => 'Désactiver la messagerie et l’agenda',
574
+    'item_non_publier_articles' => 'Ne pas publier les articles avant la date de publication fixée.',
575
+    'item_nouvel_auteur' => 'Nouvel auteur',
576
+    'item_nouvelle_rubrique' => 'Nouvelle rubrique',
577
+    'item_oui' => 'Oui',
578
+    'item_publier_articles' => 'Publier les articles, quelle que soit leur date de publication.',
579
+    'item_reponse_article' => 'Réponse à l’article',
580
+    'item_visiteur' => 'visiteur',
581 581
 
582
-	// J
583
-	'jour_non_connu_nc' => 'n.c.',
582
+    // J
583
+    'jour_non_connu_nc' => 'n.c.',
584 584
 
585
-	// L
586
-	'label_bando_outils' => 'Barre d’outils',
587
-	'label_bando_outils_afficher' => 'Afficher les outils',
588
-	'label_bando_outils_masquer' => 'Masquer les outils',
589
-	'label_choix_langue' => 'Sélectionnez votre langue',
590
-	'label_nom_fichier_connect' => 'Indiquez le nom utilisé pour ce serveur',
591
-	'label_slogan_site' => 'Slogan du site',
592
-	'label_taille_ecran' => 'Largeur de l’écran',
593
-	'label_texte_et_icones_navigation' => 'Menu de navigation',
594
-	'label_texte_et_icones_page' => 'Affichage dans la page',
595
-	'ldap_correspondance' => 'héritage du champ @champ@',
596
-	'ldap_correspondance_1' => 'Héritage des champs LDAP',
597
-	'ldap_correspondance_2' => 'Pour chacun des champs SPIP suivants, indiquer le nom du champ LDAP correspondant. Laisser vide pour ne pas le remplir, séparer par des espaces ou des virgules pour essayer plusieurs champs LDAP.',
598
-	'lien_ajouter_auteur' => 'Ajouter cet auteur',
599
-	'lien_ajouter_une_rubrique' => 'Ajouter cette rubrique',
600
-	'lien_email' => 'email',
601
-	'lien_nom_site' => 'NOM DU SITE :',
602
-	'lien_rapide_contenu' => 'Aller au contenu',
603
-	'lien_rapide_navigation' => 'Aller à la navigation',
604
-	'lien_rapide_recherche' => 'Aller à la recherche',
605
-	'lien_retirer_auteur' => 'Retirer l’auteur',
606
-	'lien_retirer_rubrique' => 'Retirer la rubrique',
607
-	'lien_retirer_tous_auteurs' => 'Retirer tous les auteurs',
608
-	'lien_retirer_toutes_rubriques' => 'Retirer toutes les rubriques',
609
-	'lien_site' => 'site',
610
-	'lien_tout_decocher' => 'Tout décocher',
611
-	'lien_tout_deplier' => 'Tout déplier',
612
-	'lien_tout_replier' => 'Tout replier',
613
-	'lien_tout_supprimer' => 'Tout supprimer',
614
-	'lien_trier_nom' => 'Trier par nom',
615
-	'lien_trier_nombre_articles' => 'Trier par nombre d’articles',
616
-	'lien_trier_statut' => 'Trier par statut',
617
-	'lien_voir_en_ligne' => 'VOIR EN LIGNE :',
618
-	'logo_article' => 'Logo de l’article',
619
-	'logo_auteur' => 'Logo de l’auteur',
620
-	'logo_rubrique' => 'Logo de la rubrique',
621
-	'logo_site' => 'Logo de ce site',
622
-	'logo_standard_rubrique' => 'Logo standard des rubriques',
623
-	'logo_survol' => 'Logo pour survol',
585
+    // L
586
+    'label_bando_outils' => 'Barre d’outils',
587
+    'label_bando_outils_afficher' => 'Afficher les outils',
588
+    'label_bando_outils_masquer' => 'Masquer les outils',
589
+    'label_choix_langue' => 'Sélectionnez votre langue',
590
+    'label_nom_fichier_connect' => 'Indiquez le nom utilisé pour ce serveur',
591
+    'label_slogan_site' => 'Slogan du site',
592
+    'label_taille_ecran' => 'Largeur de l’écran',
593
+    'label_texte_et_icones_navigation' => 'Menu de navigation',
594
+    'label_texte_et_icones_page' => 'Affichage dans la page',
595
+    'ldap_correspondance' => 'héritage du champ @champ@',
596
+    'ldap_correspondance_1' => 'Héritage des champs LDAP',
597
+    'ldap_correspondance_2' => 'Pour chacun des champs SPIP suivants, indiquer le nom du champ LDAP correspondant. Laisser vide pour ne pas le remplir, séparer par des espaces ou des virgules pour essayer plusieurs champs LDAP.',
598
+    'lien_ajouter_auteur' => 'Ajouter cet auteur',
599
+    'lien_ajouter_une_rubrique' => 'Ajouter cette rubrique',
600
+    'lien_email' => 'email',
601
+    'lien_nom_site' => 'NOM DU SITE :',
602
+    'lien_rapide_contenu' => 'Aller au contenu',
603
+    'lien_rapide_navigation' => 'Aller à la navigation',
604
+    'lien_rapide_recherche' => 'Aller à la recherche',
605
+    'lien_retirer_auteur' => 'Retirer l’auteur',
606
+    'lien_retirer_rubrique' => 'Retirer la rubrique',
607
+    'lien_retirer_tous_auteurs' => 'Retirer tous les auteurs',
608
+    'lien_retirer_toutes_rubriques' => 'Retirer toutes les rubriques',
609
+    'lien_site' => 'site',
610
+    'lien_tout_decocher' => 'Tout décocher',
611
+    'lien_tout_deplier' => 'Tout déplier',
612
+    'lien_tout_replier' => 'Tout replier',
613
+    'lien_tout_supprimer' => 'Tout supprimer',
614
+    'lien_trier_nom' => 'Trier par nom',
615
+    'lien_trier_nombre_articles' => 'Trier par nombre d’articles',
616
+    'lien_trier_statut' => 'Trier par statut',
617
+    'lien_voir_en_ligne' => 'VOIR EN LIGNE :',
618
+    'logo_article' => 'Logo de l’article',
619
+    'logo_auteur' => 'Logo de l’auteur',
620
+    'logo_rubrique' => 'Logo de la rubrique',
621
+    'logo_site' => 'Logo de ce site',
622
+    'logo_standard_rubrique' => 'Logo standard des rubriques',
623
+    'logo_survol' => 'Logo pour survol',
624 624
 
625
-	// M
626
-	'menu_aide_installation_choix_base' => 'Choix de votre base',
627
-	'module_fichier_langue' => 'Fichier de langue',
628
-	'module_raccourci' => 'Raccourci',
629
-	'module_texte_affiche' => 'Texte affiché',
630
-	'module_texte_explicatif' => 'Vous pouvez insérer les raccourcis suivants dans les squelettes de votre site public. Ils seront automatiquement traduits dans les différentes langues pour lesquelles il existe un fichier de langue.',
631
-	'module_texte_traduction' => 'Le fichier de langue « @module@ » est disponible en :',
632
-	'mois_non_connu' => 'non connu',
625
+    // M
626
+    'menu_aide_installation_choix_base' => 'Choix de votre base',
627
+    'module_fichier_langue' => 'Fichier de langue',
628
+    'module_raccourci' => 'Raccourci',
629
+    'module_texte_affiche' => 'Texte affiché',
630
+    'module_texte_explicatif' => 'Vous pouvez insérer les raccourcis suivants dans les squelettes de votre site public. Ils seront automatiquement traduits dans les différentes langues pour lesquelles il existe un fichier de langue.',
631
+    'module_texte_traduction' => 'Le fichier de langue « @module@ » est disponible en :',
632
+    'mois_non_connu' => 'non connu',
633 633
 
634
-	// N
635
-	'nouvelle_version_spip' => 'La mise à jour @version@ de SPIP est disponible',
636
-	'nouvelle_version_spip_majeure' => 'Une nouvelle version SPIP @version@ est disponible',
634
+    // N
635
+    'nouvelle_version_spip' => 'La mise à jour @version@ de SPIP est disponible',
636
+    'nouvelle_version_spip_majeure' => 'Une nouvelle version SPIP @version@ est disponible',
637 637
 
638
-	// O
639
-	'onglet_contenu' => 'Contenu',
640
-	'onglet_declarer_une_autre_base' => 'Déclarer une autre base',
641
-	'onglet_discuter' => 'Discuter',
642
-	'onglet_interactivite' => 'Interactivité',
643
-	'onglet_proprietes' => 'Propriétés',
644
-	'onglet_repartition_actuelle' => 'actuellement',
645
-	'onglet_sous_rubriques' => 'Sous-rubriques',
638
+    // O
639
+    'onglet_contenu' => 'Contenu',
640
+    'onglet_declarer_une_autre_base' => 'Déclarer une autre base',
641
+    'onglet_discuter' => 'Discuter',
642
+    'onglet_interactivite' => 'Interactivité',
643
+    'onglet_proprietes' => 'Propriétés',
644
+    'onglet_repartition_actuelle' => 'actuellement',
645
+    'onglet_sous_rubriques' => 'Sous-rubriques',
646 646
 
647
-	// P
648
-	'page_pas_proxy' => 'Cette page ne doit pas passer par le proxy',
649
-	'pas_de_proxy_pour' => 'Au besoin, indiquez les machines ou domaines pour lesquels ce proxy ne doit pas s’appliquer (par exemple : @exemple@)',
650
-	'phpinfo' => 'Configuration PHP',
651
-	'plugin_charge_paquet' => 'Chargement du paquet @name@',
652
-	'plugin_charger' => 'Télécharger',
653
-	'plugin_erreur_charger' => 'erreur : impossible de charger @zip@',
654
-	'plugin_erreur_droit1' => 'Le répertoire <code>@dest@</code> n’est pas accessible en écriture.',
655
-	'plugin_erreur_droit2' => 'Veuillez vérifier les droits sur ce répertoire (et le créer le cas échéant), ou installer les fichiers par FTP.',
656
-	'plugin_erreur_zip' => 'échec pclzip : erreur @status@',
657
-	'plugin_etat_developpement' => 'en développement',
658
-	'plugin_etat_experimental' => 'expérimental',
659
-	'plugin_etat_stable' => 'stable',
660
-	'plugin_etat_test' => 'en test',
661
-	'plugin_impossible_activer' => 'Impossible d’activer le plugin @plugin@',
662
-	'plugin_info_automatique1' => 'Si vous souhaitez autoriser l’installation automatique des plugins, veuillez :',
663
-	'plugin_info_automatique1_lib' => 'Si vous souhaitez autoriser l’installation automatique de cette librairie, veuillez :',
664
-	'plugin_info_automatique2' => 'créer un répertoire <code>@rep@</code> ;',
665
-	'plugin_info_automatique3' => 'vérifier que le serveur est autorisé à écrire dans ce répertoire.',
666
-	'plugin_info_automatique_creer' => 'à créer à la racine du site.',
667
-	'plugin_info_automatique_exemples' => 'exemples :',
668
-	'plugin_info_automatique_ftp' => 'Vous pouvez installer des plugins, par FTP, dans le répertoire <tt>@rep@</tt>',
669
-	'plugin_info_automatique_lib' => 'Certains plugins demandent aussi à pouvoir télécharger des fichiers dans le répertoire <code>lib/</code>, à créer le cas échéant à la racine du site.',
670
-	'plugin_info_automatique_liste' => 'Vos listes de plugins :',
671
-	'plugin_info_automatique_liste_officielle' => 'les plugins officiels',
672
-	'plugin_info_automatique_liste_update' => 'Mettre à jour les listes',
673
-	'plugin_info_automatique_ou' => 'ou...',
674
-	'plugin_info_automatique_select' => 'Sélectionnez ci-dessous un plugin : SPIP le téléchargera et l’installera dans le répertoire <code>@rep@</code> ; si ce plugin existe déjà, il sera mis à jour.',
675
-	'plugin_info_credit' => 'Crédits',
676
-	'plugin_info_erreur_xml' => 'La déclaration de ce plugin est incorrecte',
677
-	'plugin_info_install_ok' => 'Installation réussie',
678
-	'plugin_info_necessite' => 'Nécessite :',
679
-	'plugin_info_non_compatible_spip' => 'Ce plugin n’est pas compatible avec cette version de SPIP',
680
-	'plugin_info_plugins_dist_1' => 'Les plugins ci-dessous sont chargés et activés dans le répertoire @plugins_dist@.',
681
-	'plugin_info_plugins_dist_2' => 'Ils ne sont pas désactivables.',
682
-	'plugin_info_telecharger' => 'à télécharger depuis @url@ et à installer dans @rep@',
683
-	'plugin_info_upgrade_ok' => 'Mise à jour réussie',
684
-	'plugin_librairies_installees' => 'Librairies installées',
685
-	'plugin_necessite_extension_php' => 'Nécessite l’extension PHP @plugin@ en version @version@.',
686
-	'plugin_necessite_extension_php_sans_version' => 'Nécessite l’extension PHP @plugin@',
687
-	'plugin_necessite_lib' => 'Ce plugin nécessite la librairie @lib@',
688
-	'plugin_necessite_php' => 'Nécessite @plugin@ en version @version@.',
689
-	'plugin_necessite_plugin' => 'Nécessite le plugin @plugin@ en version @version@.',
690
-	'plugin_necessite_plugin_sans_version' => 'Nécessite le plugin @plugin@',
691
-	'plugin_necessite_spip' => 'Nécessite SPIP en version @version@ minimum.',
692
-	'plugin_source' => 'source : ',
693
-	'plugin_titre_automatique' => 'Installation automatique',
694
-	'plugin_titre_automatique_ajouter' => 'Ajouter des plugins',
695
-	'plugin_titre_installation' => 'Installation du plugin @plugin@',
696
-	'plugin_titre_modifier' => 'Mes plugins',
697
-	'plugin_utilise_extension_php' => 'L’extension PHP @plugin@ doit être en version @version@.',
698
-	'plugin_utilise_php' => '@plugin@ doit être en version @version@.',
699
-	'plugin_utilise_plugin' => 'Le plugin @plugin@ doit être en version @version@.',
700
-	'plugin_zip_active' => 'Continuez pour l’activer',
701
-	'plugin_zip_adresse' => 'indiquez ci-dessous l’adresse d’un fichier zip de plugin à télécharger, ou encore l’adresse d’une liste de plugins.',
702
-	'plugin_zip_adresse_champ' => 'Adresse du plugin ou de la liste ',
703
-	'plugin_zip_content' => 'Il contient les fichiers suivants (@taille@),<br />prêts à installer dans le répertoire <code>@rep@</code>',
704
-	'plugin_zip_installe_finie' => 'Le fichier @zip@ a été décompacté et installé.',
705
-	'plugin_zip_installe_rep_finie' => 'Le fichier @zip@ a été décompacté et installé dans le répertoire @rep@',
706
-	'plugin_zip_installer' => 'Vous pouvez maintenant l’installer.',
707
-	'plugin_zip_telecharge' => 'Le fichier @zip@ a été téléchargé',
708
-	'plugins_actif_aucun' => 'Aucun plugin activé.',
709
-	'plugins_actif_un' => 'Un plugin activé.',
710
-	'plugins_actifs' => '@count@ plugins activés.',
711
-	'plugins_actifs_liste' => 'Actifs',
712
-	'plugins_compte' => '@count@ plugins',
713
-	'plugins_disponible_un' => 'Un plugin disponible.',
714
-	'plugins_disponibles' => '@count@ plugins disponibles.',
715
-	'plugins_erreur' => 'Erreur dans les plugins : @plugins@',
716
-	'plugins_liste' => 'Liste des plugins',
717
-	'plugins_liste_dist' => 'Plugins verrouillés',
718
-	'plugins_recents' => 'Plugins récents.',
719
-	'plugins_tous_liste' => 'Tous',
720
-	'plugins_vue_hierarchie' => 'Hiérarchie',
721
-	'plugins_vue_liste' => 'Liste',
722
-	'protocole_ldap' => 'Version du protocole :',
647
+    // P
648
+    'page_pas_proxy' => 'Cette page ne doit pas passer par le proxy',
649
+    'pas_de_proxy_pour' => 'Au besoin, indiquez les machines ou domaines pour lesquels ce proxy ne doit pas s’appliquer (par exemple : @exemple@)',
650
+    'phpinfo' => 'Configuration PHP',
651
+    'plugin_charge_paquet' => 'Chargement du paquet @name@',
652
+    'plugin_charger' => 'Télécharger',
653
+    'plugin_erreur_charger' => 'erreur : impossible de charger @zip@',
654
+    'plugin_erreur_droit1' => 'Le répertoire <code>@dest@</code> n’est pas accessible en écriture.',
655
+    'plugin_erreur_droit2' => 'Veuillez vérifier les droits sur ce répertoire (et le créer le cas échéant), ou installer les fichiers par FTP.',
656
+    'plugin_erreur_zip' => 'échec pclzip : erreur @status@',
657
+    'plugin_etat_developpement' => 'en développement',
658
+    'plugin_etat_experimental' => 'expérimental',
659
+    'plugin_etat_stable' => 'stable',
660
+    'plugin_etat_test' => 'en test',
661
+    'plugin_impossible_activer' => 'Impossible d’activer le plugin @plugin@',
662
+    'plugin_info_automatique1' => 'Si vous souhaitez autoriser l’installation automatique des plugins, veuillez :',
663
+    'plugin_info_automatique1_lib' => 'Si vous souhaitez autoriser l’installation automatique de cette librairie, veuillez :',
664
+    'plugin_info_automatique2' => 'créer un répertoire <code>@rep@</code> ;',
665
+    'plugin_info_automatique3' => 'vérifier que le serveur est autorisé à écrire dans ce répertoire.',
666
+    'plugin_info_automatique_creer' => 'à créer à la racine du site.',
667
+    'plugin_info_automatique_exemples' => 'exemples :',
668
+    'plugin_info_automatique_ftp' => 'Vous pouvez installer des plugins, par FTP, dans le répertoire <tt>@rep@</tt>',
669
+    'plugin_info_automatique_lib' => 'Certains plugins demandent aussi à pouvoir télécharger des fichiers dans le répertoire <code>lib/</code>, à créer le cas échéant à la racine du site.',
670
+    'plugin_info_automatique_liste' => 'Vos listes de plugins :',
671
+    'plugin_info_automatique_liste_officielle' => 'les plugins officiels',
672
+    'plugin_info_automatique_liste_update' => 'Mettre à jour les listes',
673
+    'plugin_info_automatique_ou' => 'ou...',
674
+    'plugin_info_automatique_select' => 'Sélectionnez ci-dessous un plugin : SPIP le téléchargera et l’installera dans le répertoire <code>@rep@</code> ; si ce plugin existe déjà, il sera mis à jour.',
675
+    'plugin_info_credit' => 'Crédits',
676
+    'plugin_info_erreur_xml' => 'La déclaration de ce plugin est incorrecte',
677
+    'plugin_info_install_ok' => 'Installation réussie',
678
+    'plugin_info_necessite' => 'Nécessite :',
679
+    'plugin_info_non_compatible_spip' => 'Ce plugin n’est pas compatible avec cette version de SPIP',
680
+    'plugin_info_plugins_dist_1' => 'Les plugins ci-dessous sont chargés et activés dans le répertoire @plugins_dist@.',
681
+    'plugin_info_plugins_dist_2' => 'Ils ne sont pas désactivables.',
682
+    'plugin_info_telecharger' => 'à télécharger depuis @url@ et à installer dans @rep@',
683
+    'plugin_info_upgrade_ok' => 'Mise à jour réussie',
684
+    'plugin_librairies_installees' => 'Librairies installées',
685
+    'plugin_necessite_extension_php' => 'Nécessite l’extension PHP @plugin@ en version @version@.',
686
+    'plugin_necessite_extension_php_sans_version' => 'Nécessite l’extension PHP @plugin@',
687
+    'plugin_necessite_lib' => 'Ce plugin nécessite la librairie @lib@',
688
+    'plugin_necessite_php' => 'Nécessite @plugin@ en version @version@.',
689
+    'plugin_necessite_plugin' => 'Nécessite le plugin @plugin@ en version @version@.',
690
+    'plugin_necessite_plugin_sans_version' => 'Nécessite le plugin @plugin@',
691
+    'plugin_necessite_spip' => 'Nécessite SPIP en version @version@ minimum.',
692
+    'plugin_source' => 'source : ',
693
+    'plugin_titre_automatique' => 'Installation automatique',
694
+    'plugin_titre_automatique_ajouter' => 'Ajouter des plugins',
695
+    'plugin_titre_installation' => 'Installation du plugin @plugin@',
696
+    'plugin_titre_modifier' => 'Mes plugins',
697
+    'plugin_utilise_extension_php' => 'L’extension PHP @plugin@ doit être en version @version@.',
698
+    'plugin_utilise_php' => '@plugin@ doit être en version @version@.',
699
+    'plugin_utilise_plugin' => 'Le plugin @plugin@ doit être en version @version@.',
700
+    'plugin_zip_active' => 'Continuez pour l’activer',
701
+    'plugin_zip_adresse' => 'indiquez ci-dessous l’adresse d’un fichier zip de plugin à télécharger, ou encore l’adresse d’une liste de plugins.',
702
+    'plugin_zip_adresse_champ' => 'Adresse du plugin ou de la liste ',
703
+    'plugin_zip_content' => 'Il contient les fichiers suivants (@taille@),<br />prêts à installer dans le répertoire <code>@rep@</code>',
704
+    'plugin_zip_installe_finie' => 'Le fichier @zip@ a été décompacté et installé.',
705
+    'plugin_zip_installe_rep_finie' => 'Le fichier @zip@ a été décompacté et installé dans le répertoire @rep@',
706
+    'plugin_zip_installer' => 'Vous pouvez maintenant l’installer.',
707
+    'plugin_zip_telecharge' => 'Le fichier @zip@ a été téléchargé',
708
+    'plugins_actif_aucun' => 'Aucun plugin activé.',
709
+    'plugins_actif_un' => 'Un plugin activé.',
710
+    'plugins_actifs' => '@count@ plugins activés.',
711
+    'plugins_actifs_liste' => 'Actifs',
712
+    'plugins_compte' => '@count@ plugins',
713
+    'plugins_disponible_un' => 'Un plugin disponible.',
714
+    'plugins_disponibles' => '@count@ plugins disponibles.',
715
+    'plugins_erreur' => 'Erreur dans les plugins : @plugins@',
716
+    'plugins_liste' => 'Liste des plugins',
717
+    'plugins_liste_dist' => 'Plugins verrouillés',
718
+    'plugins_recents' => 'Plugins récents.',
719
+    'plugins_tous_liste' => 'Tous',
720
+    'plugins_vue_hierarchie' => 'Hiérarchie',
721
+    'plugins_vue_liste' => 'Liste',
722
+    'protocole_ldap' => 'Version du protocole :',
723 723
 
724
-	// Q
725
-	'queue_executer_maintenant' => 'Exécuter maintenant',
726
-	'queue_info_purger' => 'Vous pouvez supprimer toutes les tâches de fond en attente et réinitialiser la liste avec les tâches périodiques',
727
-	'queue_nb_jobs_in_queue' => '@nb@ tâches en attente',
728
-	'queue_next_job_in_nb_sec' => 'Prochaine tâche dans @nb@ s',
729
-	'queue_no_job_in_queue' => 'Aucune tâche en attente',
730
-	'queue_one_job_in_queue' => '1 tâche en attente',
731
-	'queue_priorite_tache' => 'priorité',
732
-	'queue_purger_queue' => 'Réinitialiser la liste des tâches',
733
-	'queue_titre' => 'Tâches de fond',
724
+    // Q
725
+    'queue_executer_maintenant' => 'Exécuter maintenant',
726
+    'queue_info_purger' => 'Vous pouvez supprimer toutes les tâches de fond en attente et réinitialiser la liste avec les tâches périodiques',
727
+    'queue_nb_jobs_in_queue' => '@nb@ tâches en attente',
728
+    'queue_next_job_in_nb_sec' => 'Prochaine tâche dans @nb@ s',
729
+    'queue_no_job_in_queue' => 'Aucune tâche en attente',
730
+    'queue_one_job_in_queue' => '1 tâche en attente',
731
+    'queue_priorite_tache' => 'priorité',
732
+    'queue_purger_queue' => 'Réinitialiser la liste des tâches',
733
+    'queue_titre' => 'Tâches de fond',
734 734
 
735
-	// R
736
-	'repertoire_plugins' => 'Répertoire :',
737
-	'required' => '(obligatoire)',
735
+    // R
736
+    'repertoire_plugins' => 'Répertoire :',
737
+    'required' => '(obligatoire)',
738 738
 
739
-	// S
740
-	'sans_heure' => 'sans heure',
741
-	'statut_admin_restreint' => 'admin restreint',
742
-	'statut_webmestre' => 'webmestre',
739
+    // S
740
+    'sans_heure' => 'sans heure',
741
+    'statut_admin_restreint' => 'admin restreint',
742
+    'statut_webmestre' => 'webmestre',
743 743
 
744
-	// T
745
-	'tache_cron_asap' => 'Tâche CRON @function@ (ASAP)',
746
-	'tache_cron_secondes' => 'Tâche CRON @function@ (toutes les @nb@ s)',
747
-	'taille_cache_image' => 'Les images calculées automatiquement par SPIP (vignettes des documents, titres présentés sous forme graphique, fonctions mathématiques au format TeX...) occupent dans le répertoire @dir@ un total de @taille@.',
748
-	'taille_cache_infinie' => 'Ce site ne prévoit pas de limitation de taille du répertoire du cache.',
749
-	'taille_cache_maxi' => 'SPIP essaie de limiter la taille du répertoire du cache de ce site à environ <b>@octets@</b> de données.',
750
-	'taille_cache_moins_de' => 'La taille du cache est de moins de @octets@.',
751
-	'taille_cache_octets' => 'La taille du cache est actuellement de @octets@ environ.',
752
-	'taille_cache_vide' => 'Le cache est vide.',
753
-	'taille_repertoire_cache' => 'Taille du répertoire cache',
754
-	'text_article_propose_publication' => 'Article proposé pour la publication.',
755
-	'texte_acces_ldap_anonyme_1' => 'Certains serveurs LDAP n’acceptent aucun accès anonyme. Dans ce cas il faut spécifier un identifiant d’accès initial afin de pouvoir ensuite rechercher des informations dans l’annuaire. Dans la plupart des cas néanmoins, les champs suivants pourront être laissés vides.',
756
-	'texte_admin_effacer_01' => 'Cette commande efface <i>tout</i> le contenu de la base de données,
744
+    // T
745
+    'tache_cron_asap' => 'Tâche CRON @function@ (ASAP)',
746
+    'tache_cron_secondes' => 'Tâche CRON @function@ (toutes les @nb@ s)',
747
+    'taille_cache_image' => 'Les images calculées automatiquement par SPIP (vignettes des documents, titres présentés sous forme graphique, fonctions mathématiques au format TeX...) occupent dans le répertoire @dir@ un total de @taille@.',
748
+    'taille_cache_infinie' => 'Ce site ne prévoit pas de limitation de taille du répertoire du cache.',
749
+    'taille_cache_maxi' => 'SPIP essaie de limiter la taille du répertoire du cache de ce site à environ <b>@octets@</b> de données.',
750
+    'taille_cache_moins_de' => 'La taille du cache est de moins de @octets@.',
751
+    'taille_cache_octets' => 'La taille du cache est actuellement de @octets@ environ.',
752
+    'taille_cache_vide' => 'Le cache est vide.',
753
+    'taille_repertoire_cache' => 'Taille du répertoire cache',
754
+    'text_article_propose_publication' => 'Article proposé pour la publication.',
755
+    'texte_acces_ldap_anonyme_1' => 'Certains serveurs LDAP n’acceptent aucun accès anonyme. Dans ce cas il faut spécifier un identifiant d’accès initial afin de pouvoir ensuite rechercher des informations dans l’annuaire. Dans la plupart des cas néanmoins, les champs suivants pourront être laissés vides.',
756
+    'texte_admin_effacer_01' => 'Cette commande efface <i>tout</i> le contenu de la base de données,
757 757
 y compris <i>tous</i> les accès rédacteurs et administrateurs. Après l’avoir exécutée, vous devrez lancer la
758 758
 réinstallation de SPIP pour recréer une nouvelle base ainsi qu’un premier accès administrateur.',
759
-	'texte_adresse_annuaire_1' => '(Si votre annuaire est installé sur la même machine que ce site Web, il s’agit probablement de « localhost ».)',
760
-	'texte_ajout_auteur' => 'L’auteur suivant a été ajouté à l’article :',
761
-	'texte_annuaire_ldap_1' => 'Si vous avez accès à un annuaire (LDAP), vous pouvez l’utiliser pour importer automatiquement des utilisateurs sous SPIP.',
762
-	'texte_article_statut' => 'Cet article est :',
763
-	'texte_article_virtuel' => 'Article virtuel',
764
-	'texte_article_virtuel_reference' => '<b>Article virtuel :</b> article référencé dans votre site SPIP, mais redirigé vers une autre URL. Pour supprimer la redirection, effacez l’URL ci-dessus.',
765
-	'texte_aucun_resultat_auteur' => 'Aucun résultat pour "@cherche_auteur@"',
766
-	'texte_auteur_messagerie' => 'Ce site peut vous indiquer en permanence la liste des rédacteurs connectés, ce qui vous permet d’échanger des messages en direct. Vous pouvez décider de ne pas apparaître dans cette liste (vous êtes « invisible » pour les autres utilisateurs).',
767
-	'texte_auteurs' => 'LES AUTEURS',
768
-	'texte_choix_base_1' => 'Choisissez votre base :',
769
-	'texte_choix_base_2' => 'Le serveur SQL contient plusieurs bases de données.',
770
-	'texte_choix_base_3' => '<b>Sélectionnez</b> ci-après celle qui vous a été attribuée par votre hébergeur :',
771
-	'texte_choix_table_prefix' => 'Préfixe des tables :',
772
-	'texte_compte_element' => '@count@ élément',
773
-	'texte_compte_elements' => '@count@ éléments',
774
-	'texte_conflit_edition_correction' => 'Veuillez contrôler ci-dessous les différences entre les deux versions du texte ; vous pouvez aussi copier vos modifications, puis recommencer.',
775
-	'texte_connexion_mysql' => 'Consultez les informations fournies par votre hébergeur : vous devez y trouver le serveur de base de données qu’il propose et vos identifiants personnels pour vous y connecter.',
776
-	'texte_contenu_article' => '(Contenu de l’article en quelques mots.)',
777
-	'texte_contenu_articles' => 'Selon la maquette adoptée pour votre site, vous pouvez décider
759
+    'texte_adresse_annuaire_1' => '(Si votre annuaire est installé sur la même machine que ce site Web, il s’agit probablement de « localhost ».)',
760
+    'texte_ajout_auteur' => 'L’auteur suivant a été ajouté à l’article :',
761
+    'texte_annuaire_ldap_1' => 'Si vous avez accès à un annuaire (LDAP), vous pouvez l’utiliser pour importer automatiquement des utilisateurs sous SPIP.',
762
+    'texte_article_statut' => 'Cet article est :',
763
+    'texte_article_virtuel' => 'Article virtuel',
764
+    'texte_article_virtuel_reference' => '<b>Article virtuel :</b> article référencé dans votre site SPIP, mais redirigé vers une autre URL. Pour supprimer la redirection, effacez l’URL ci-dessus.',
765
+    'texte_aucun_resultat_auteur' => 'Aucun résultat pour "@cherche_auteur@"',
766
+    'texte_auteur_messagerie' => 'Ce site peut vous indiquer en permanence la liste des rédacteurs connectés, ce qui vous permet d’échanger des messages en direct. Vous pouvez décider de ne pas apparaître dans cette liste (vous êtes « invisible » pour les autres utilisateurs).',
767
+    'texte_auteurs' => 'LES AUTEURS',
768
+    'texte_choix_base_1' => 'Choisissez votre base :',
769
+    'texte_choix_base_2' => 'Le serveur SQL contient plusieurs bases de données.',
770
+    'texte_choix_base_3' => '<b>Sélectionnez</b> ci-après celle qui vous a été attribuée par votre hébergeur :',
771
+    'texte_choix_table_prefix' => 'Préfixe des tables :',
772
+    'texte_compte_element' => '@count@ élément',
773
+    'texte_compte_elements' => '@count@ éléments',
774
+    'texte_conflit_edition_correction' => 'Veuillez contrôler ci-dessous les différences entre les deux versions du texte ; vous pouvez aussi copier vos modifications, puis recommencer.',
775
+    'texte_connexion_mysql' => 'Consultez les informations fournies par votre hébergeur : vous devez y trouver le serveur de base de données qu’il propose et vos identifiants personnels pour vous y connecter.',
776
+    'texte_contenu_article' => '(Contenu de l’article en quelques mots.)',
777
+    'texte_contenu_articles' => 'Selon la maquette adoptée pour votre site, vous pouvez décider
778 778
 		que certains éléments des articles ne sont pas utilisés.
779 779
 		Utilisez la liste ci-dessous pour indiquer quels éléments sont disponibles.',
780
-	'texte_crash_base' => 'Si votre base de données a
780
+    'texte_crash_base' => 'Si votre base de données a
781 781
 			crashé, vous pouvez tenter une réparation
782 782
 			automatique.',
783
-	'texte_creer_rubrique' => 'Avant de pouvoir écrire des articles,<br /> vous devez créer une rubrique.',
784
-	'texte_date_creation_article' => 'DATE DE CRÉATION DE L’ARTICLE :', # on ajoute le ":"
785
-	'texte_date_creation_objet' => 'Date de création :', # on ajoute le ":"
786
-	'texte_date_publication_anterieure' => 'Date de rédaction antérieure :',
787
-	'texte_date_publication_anterieure_nonaffichee' => 'Ne pas afficher de date de rédaction antérieure.',
788
-	'texte_date_publication_article' => 'DATE DE PUBLICATION EN LIGNE :',
789
-	'texte_date_publication_objet' => 'Date de publication en ligne :',
790
-	'texte_definir_comme_traduction_rubrique' => 'Cette rubrique est une traduction de la rubrique numéro :',
791
-	'texte_descriptif_rapide' => 'Descriptif rapide',
792
-	'texte_effacer_base' => 'Effacer la base de données SPIP',
793
-	'texte_effacer_statistiques' => 'Effacer les statistiques',
794
-	'texte_en_cours_validation' => 'Les contenus ci-dessous sont en attente de validation.',
795
-	'texte_enrichir_mise_a_jour' => 'Vous pouvez enrichir la mise en page de votre texte en utilisant des « raccourcis typographiques ».',
796
-	'texte_fichier_authent' => '<b>SPIP doit-il créer les fichiers spéciaux
783
+    'texte_creer_rubrique' => 'Avant de pouvoir écrire des articles,<br /> vous devez créer une rubrique.',
784
+    'texte_date_creation_article' => 'DATE DE CRÉATION DE L’ARTICLE :', # on ajoute le ":"
785
+    'texte_date_creation_objet' => 'Date de création :', # on ajoute le ":"
786
+    'texte_date_publication_anterieure' => 'Date de rédaction antérieure :',
787
+    'texte_date_publication_anterieure_nonaffichee' => 'Ne pas afficher de date de rédaction antérieure.',
788
+    'texte_date_publication_article' => 'DATE DE PUBLICATION EN LIGNE :',
789
+    'texte_date_publication_objet' => 'Date de publication en ligne :',
790
+    'texte_definir_comme_traduction_rubrique' => 'Cette rubrique est une traduction de la rubrique numéro :',
791
+    'texte_descriptif_rapide' => 'Descriptif rapide',
792
+    'texte_effacer_base' => 'Effacer la base de données SPIP',
793
+    'texte_effacer_statistiques' => 'Effacer les statistiques',
794
+    'texte_en_cours_validation' => 'Les contenus ci-dessous sont en attente de validation.',
795
+    'texte_enrichir_mise_a_jour' => 'Vous pouvez enrichir la mise en page de votre texte en utilisant des « raccourcis typographiques ».',
796
+    'texte_fichier_authent' => '<b>SPIP doit-il créer les fichiers spéciaux
797 797
 <tt>.htpasswd</tt> et <tt>.htpasswd-admin</tt> dans le répertoire @dossier@ ?</b>
798 798
 <p>Ces fichiers peuvent vous servir à restreindre l’accès aux auteurs et administrateurs en d’autres endroits de votre site (programme externe de statistiques, par exemple).</p>
799 799
 <p>Si vous n’en avez pas l’utilité, vous pouvez laisser cette option à sa valeur par défaut (pas de création des fichiers).</p>',
800
-	'texte_informations_personnelles_1' => 'Le système va maintenant vous créer un accès personnalisé au site.',
801
-	'texte_informations_personnelles_2' => '(Note : il s’agit d’une réinstallation, si votre accès marche toujours vous pouvez',
802
-	'texte_introductif_article' => '(Texte introductif de l’article.)',
803
-	'texte_jeu_caractere' => 'Il est conseillé d’employer, sur votre site, l’alphabet universel (<tt>utf-8</tt>) : celui-ci permet l’affichage de textes dans toutes les langues, et ne pose plus de problèmes de compatibilité avec les navigateurs modernes.',
804
-	'texte_jeu_caractere_3' => 'Votre site est actuellement installé dans le jeu de caractères :',
805
-	'texte_jeu_caractere_4' => 'Si cela ne correspond pas à la réalité de vos données (suite, par exemple, à une restauration de base de données), ou si <em>vous démarrez ce site</em> et souhaitez partir sur un autre jeu de caractères, veuillez indiquer ce dernier ici :',
806
-	'texte_login_ldap_1' => '(Laisser vide pour un accès anonyme, ou entrer le chemin complet, par exemple « <tt>uid=dupont, ou=users, dc=mon-domaine, dc=com</tt> ».)',
807
-	'texte_login_precaution' => 'Attention ! Ceci est le login sous lequel vous êtes connecté actuellement.
800
+    'texte_informations_personnelles_1' => 'Le système va maintenant vous créer un accès personnalisé au site.',
801
+    'texte_informations_personnelles_2' => '(Note : il s’agit d’une réinstallation, si votre accès marche toujours vous pouvez',
802
+    'texte_introductif_article' => '(Texte introductif de l’article.)',
803
+    'texte_jeu_caractere' => 'Il est conseillé d’employer, sur votre site, l’alphabet universel (<tt>utf-8</tt>) : celui-ci permet l’affichage de textes dans toutes les langues, et ne pose plus de problèmes de compatibilité avec les navigateurs modernes.',
804
+    'texte_jeu_caractere_3' => 'Votre site est actuellement installé dans le jeu de caractères :',
805
+    'texte_jeu_caractere_4' => 'Si cela ne correspond pas à la réalité de vos données (suite, par exemple, à une restauration de base de données), ou si <em>vous démarrez ce site</em> et souhaitez partir sur un autre jeu de caractères, veuillez indiquer ce dernier ici :',
806
+    'texte_login_ldap_1' => '(Laisser vide pour un accès anonyme, ou entrer le chemin complet, par exemple « <tt>uid=dupont, ou=users, dc=mon-domaine, dc=com</tt> ».)',
807
+    'texte_login_precaution' => 'Attention ! Ceci est le login sous lequel vous êtes connecté actuellement.
808 808
 	Utilisez ce formulaire avec précaution...',
809
-	'texte_messagerie_agenda' => 'Une messagerie permet aux rédacteurs du site de communiquer entre eux directement dans l’espace privé du site. Elle est associée à un agenda.',
810
-	'texte_mise_a_niveau_base_1' => 'Vous venez de mettre à jour les fichiers SPIP.
809
+    'texte_messagerie_agenda' => 'Une messagerie permet aux rédacteurs du site de communiquer entre eux directement dans l’espace privé du site. Elle est associée à un agenda.',
810
+    'texte_mise_a_niveau_base_1' => 'Vous venez de mettre à jour les fichiers SPIP.
811 811
 	Il faut maintenant mettre à niveau la base de données
812 812
 	du site.',
813
-	'texte_modifier_article' => 'Modifier l’article :',
814
-	'texte_multilinguisme' => 'Si vous souhaitez gérer des objets en plusieurs langues, avec une navigation complexe, vous pouvez ajouter un menu de sélection de langue sur ces objets, en fonction de l’organisation de votre site.',
815
-	'texte_multilinguisme_trad' => 'Vous pouvez également activer un système de gestion de liens entre les différentes traductions sur certains objets.',
816
-	'texte_non_compresse' => '<i>non compressé</i> (votre serveur ne supportant pas cette fonctionnalité)',
817
-	'texte_nouvelle_version_spip_1' => 'Vous avez installé une nouvelle version de SPIP.',
818
-	'texte_nouvelle_version_spip_2' => 'Cette nouvelle version nécessite une mise à jour plus complète qu’à l’accoutumée. Si vous êtes webmestre du site, veuillez effacer le fichier @connect@ et reprendre l’installation afin de mettre à jour vos paramètres de connexion à la base de données.<p> (NB. : si vous avez oublié vos paramètres de connexion, jetez un œil au fichier @connect@ avant de le supprimer...)</p>',
819
-	'texte_operation_echec' => 'Retournez à la page précédente, sélectionnez une autre base ou créez-en une nouvelle. Vérifiez les informations fournies par votre hébergeur.',
820
-	'texte_plus_trois_car' => 'plus de 3 caractères',
821
-	'texte_plusieurs_articles' => 'Plusieurs auteurs trouvés pour "@cherche_auteur@" :',
822
-	'texte_port_annuaire' => '(La valeur indiquée par défaut convient généralement.)',
823
-	'texte_presente_plugin' => 'Cette page liste les plugins disponibles sur le site. Vous pouvez activer les plugins nécessaires en cochant la case correspondante.',
824
-	'texte_proposer_publication' => 'Lorsque votre article est terminé,<br /> vous pouvez proposer sa publication.',
825
-	'texte_proxy' => 'Dans certains cas (intranet, réseaux protégés), les sites distants (documentation de SPIP, sites syndiqués, etc.) ne sont accessibles qu’à travers un <i>proxy HTTP</i>. Le cas échéant, indiquez ci-dessous son adresse, sous la forme @proxy_en_cours@. En général, vous laisserez cette case vide.',
826
-	'texte_publication_articles_post_dates' => 'Quel comportement SPIP doit-il adopter face aux articles dont la
813
+    'texte_modifier_article' => 'Modifier l’article :',
814
+    'texte_multilinguisme' => 'Si vous souhaitez gérer des objets en plusieurs langues, avec une navigation complexe, vous pouvez ajouter un menu de sélection de langue sur ces objets, en fonction de l’organisation de votre site.',
815
+    'texte_multilinguisme_trad' => 'Vous pouvez également activer un système de gestion de liens entre les différentes traductions sur certains objets.',
816
+    'texte_non_compresse' => '<i>non compressé</i> (votre serveur ne supportant pas cette fonctionnalité)',
817
+    'texte_nouvelle_version_spip_1' => 'Vous avez installé une nouvelle version de SPIP.',
818
+    'texte_nouvelle_version_spip_2' => 'Cette nouvelle version nécessite une mise à jour plus complète qu’à l’accoutumée. Si vous êtes webmestre du site, veuillez effacer le fichier @connect@ et reprendre l’installation afin de mettre à jour vos paramètres de connexion à la base de données.<p> (NB. : si vous avez oublié vos paramètres de connexion, jetez un œil au fichier @connect@ avant de le supprimer...)</p>',
819
+    'texte_operation_echec' => 'Retournez à la page précédente, sélectionnez une autre base ou créez-en une nouvelle. Vérifiez les informations fournies par votre hébergeur.',
820
+    'texte_plus_trois_car' => 'plus de 3 caractères',
821
+    'texte_plusieurs_articles' => 'Plusieurs auteurs trouvés pour "@cherche_auteur@" :',
822
+    'texte_port_annuaire' => '(La valeur indiquée par défaut convient généralement.)',
823
+    'texte_presente_plugin' => 'Cette page liste les plugins disponibles sur le site. Vous pouvez activer les plugins nécessaires en cochant la case correspondante.',
824
+    'texte_proposer_publication' => 'Lorsque votre article est terminé,<br /> vous pouvez proposer sa publication.',
825
+    'texte_proxy' => 'Dans certains cas (intranet, réseaux protégés), les sites distants (documentation de SPIP, sites syndiqués, etc.) ne sont accessibles qu’à travers un <i>proxy HTTP</i>. Le cas échéant, indiquez ci-dessous son adresse, sous la forme @proxy_en_cours@. En général, vous laisserez cette case vide.',
826
+    'texte_publication_articles_post_dates' => 'Quel comportement SPIP doit-il adopter face aux articles dont la
827 827
 		date de publication a été fixée à une
828 828
 		échéance future ?',
829
-	'texte_rappel_selection_champs' => '[N’oubliez pas de sélectionner correctement ce champ.]',
830
-	'texte_recalcul_page' => 'Si vous voulez
829
+    'texte_rappel_selection_champs' => '[N’oubliez pas de sélectionner correctement ce champ.]',
830
+    'texte_recalcul_page' => 'Si vous voulez
831 831
 recalculer une seule page, passez plutôt par l’espace public et utilisez-y le bouton « recalculer ».',
832
-	'texte_recuperer_base' => 'Réparer la base de données',
833
-	'texte_reference_mais_redirige' => 'article référencé dans votre site SPIP, mais redirigé vers une autre URL.',
834
-	'texte_requetes_echouent' => '<b>Lorsque certaines requêtes SQL échouent
832
+    'texte_recuperer_base' => 'Réparer la base de données',
833
+    'texte_reference_mais_redirige' => 'article référencé dans votre site SPIP, mais redirigé vers une autre URL.',
834
+    'texte_requetes_echouent' => '<b>Lorsque certaines requêtes SQL échouent
835 835
   systématiquement et sans raison apparente, il est possible
836 836
   que ce soit à cause de la base de données
837 837
   elle-même.</b><p>
@@ -842,90 +842,90 @@  discard block
 block discarded – undo
842 842
   peut-être des indices de ce qui ne va pas...</p><p>
843 843
   Si le problème persiste, prenez contact avec votre
844 844
   hébergeur.</p>',
845
-	'texte_selection_langue_principale' => 'Vous pouvez sélectionner ci-dessous la « langue principale » du site. Ce choix ne vous oblige - heureusement ! - pas à écrire vos articles dans la langue sélectionnée, mais permet de déterminer :
845
+    'texte_selection_langue_principale' => 'Vous pouvez sélectionner ci-dessous la « langue principale » du site. Ce choix ne vous oblige - heureusement ! - pas à écrire vos articles dans la langue sélectionnée, mais permet de déterminer :
846 846
 	<ul><li> le format par défaut des dates sur le site public ;</li>
847 847
 	<li> la nature du moteur typographique que SPIP doit utiliser pour le rendu des textes ;</li>
848 848
 	<li> la langue utilisée dans les formulaires du site public ;</li>
849 849
 	<li> la langue présentée par défaut dans l’espace privé.</li></ul>',
850
-	'texte_sous_titre' => 'Sous-titre',
851
-	'texte_statistiques_visites' => '(barres foncées :  dimanche / courbe foncée : évolution de la moyenne)',
852
-	'texte_statut_attente_validation' => 'en attente de validation',
853
-	'texte_statut_publies' => 'publiés en ligne',
854
-	'texte_statut_refuses' => 'refusés',
855
-	'texte_suppression_fichiers' => 'Utilisez cette commande afin de supprimer tous les fichiers présents
850
+    'texte_sous_titre' => 'Sous-titre',
851
+    'texte_statistiques_visites' => '(barres foncées :  dimanche / courbe foncée : évolution de la moyenne)',
852
+    'texte_statut_attente_validation' => 'en attente de validation',
853
+    'texte_statut_publies' => 'publiés en ligne',
854
+    'texte_statut_refuses' => 'refusés',
855
+    'texte_suppression_fichiers' => 'Utilisez cette commande afin de supprimer tous les fichiers présents
856 856
 dans le cache SPIP. Cela permet par exemple de forcer un recalcul de toutes les pages si vous
857 857
 avez fait des modifications importantes de graphisme ou de structure du site.',
858
-	'texte_sur_titre' => 'Sur-titre',
859
-	'texte_table_ok' => ' : cette table est OK.',
860
-	'texte_tentative_recuperation' => 'Tentative de réparation',
861
-	'texte_tenter_reparation' => 'Tenter une réparation de la base de données',
862
-	'texte_test_proxy' => 'Pour faire un essai de ce proxy, indiquez ici l’adresse d’un site Web
858
+    'texte_sur_titre' => 'Sur-titre',
859
+    'texte_table_ok' => ' : cette table est OK.',
860
+    'texte_tentative_recuperation' => 'Tentative de réparation',
861
+    'texte_tenter_reparation' => 'Tenter une réparation de la base de données',
862
+    'texte_test_proxy' => 'Pour faire un essai de ce proxy, indiquez ici l’adresse d’un site Web
863 863
 				que vous souhaitez tester.',
864
-	'texte_titre_02' => 'Titre :',
865
-	'texte_titre_obligatoire' => '<b>Titre</b> [Obligatoire]',
866
-	'texte_travail_article' => '@nom_auteur_modif@ a travaillé sur cet article il y a @date_diff@ minutes',
867
-	'texte_travail_collaboratif' => 'S’il est fréquent que plusieurs rédacteurs
864
+    'texte_titre_02' => 'Titre :',
865
+    'texte_titre_obligatoire' => '<b>Titre</b> [Obligatoire]',
866
+    'texte_travail_article' => '@nom_auteur_modif@ a travaillé sur cet article il y a @date_diff@ minutes',
867
+    'texte_travail_collaboratif' => 'S’il est fréquent que plusieurs rédacteurs
868 868
 		travaillent sur le même article, le système
869 869
 		peut afficher les articles récemment « ouverts »
870 870
 		afin d’éviter les modifications simultanées.
871 871
 		Cette option est désactivée par défaut
872 872
 		afin d’éviter d’afficher des messages d’avertissement
873 873
 		intempestifs.',
874
-	'texte_vide' => 'vide',
875
-	'texte_vider_cache' => 'Vider le cache',
876
-	'titre_admin_tech' => 'Maintenance technique',
877
-	'titre_admin_vider' => 'Maintenance technique',
878
-	'titre_ajouter_un_auteur' => 'Ajouter un auteur',
879
-	'titre_ajouter_un_mot' => 'Ajouter un mot-clé',
880
-	'titre_cadre_afficher_article' => 'Afficher les articles',
881
-	'titre_cadre_afficher_traductions' => 'Afficher l’état des traductions pour les langues suivantes :',
882
-	'titre_cadre_ajouter_auteur' => 'AJOUTER UN AUTEUR :',
883
-	'titre_cadre_interieur_rubrique' => 'À l’intérieur de la rubrique',
884
-	'titre_cadre_numero_auteur' => 'AUTEUR NUMÉRO',
885
-	'titre_cadre_numero_objet' => '@objet@ NUMÉRO :',
886
-	'titre_cadre_signature_obligatoire' => '<b>Signature</b> [Obligatoire]<br />',
887
-	'titre_config_contenu_notifications' => 'Notifications',
888
-	'titre_config_contenu_prive' => 'Dans l’espace privé',
889
-	'titre_config_contenu_public' => 'Sur le site public',
890
-	'titre_config_fonctions' => 'Configuration du site',
891
-	'titre_config_langage' => 'Configurer la langue',
892
-	'titre_configuration' => 'Configuration du site',
893
-	'titre_configurer_preferences' => 'Configurer vos préférences',
894
-	'titre_configurer_preferences_menus' => 'Configurer vos préférences de menus',
895
-	'titre_conflit_edition' => 'Conflit lors de l’édition',
896
-	'titre_connexion_ldap' => 'Options : <b>Votre connexion LDAP</b>',
897
-	'titre_groupe_mots' => 'GROUPE DE MOTS :',
898
-	'titre_identite_site' => 'Identité du site',
899
-	'titre_langue_article' => 'Langue de l’article',
900
-	'titre_langue_rubrique' => 'Langue de la rubrique',
901
-	'titre_langue_trad_article' => 'LANGUE ET TRADUCTIONS DE L’ARTICLE',
902
-	'titre_les_articles' => 'LES ARTICLES',
903
-	'titre_messagerie_agenda' => 'Messagerie et agenda',
904
-	'titre_naviguer_dans_le_site' => 'Naviguer dans le site...',
905
-	'titre_nouvelle_rubrique' => 'Nouvelle rubrique',
906
-	'titre_numero_rubrique' => 'RUBRIQUE NUMÉRO :',
907
-	'titre_page_articles_edit' => 'Modifier : @titre@',
908
-	'titre_page_articles_page' => 'Les articles',
909
-	'titre_page_articles_tous' => 'Tout le site',
910
-	'titre_page_calendrier' => 'Calendrier @nom_mois@ @annee@',
911
-	'titre_page_config_contenu' => 'Configuration du site',
912
-	'titre_page_delete_all' => 'suppression totale et irréversible',
913
-	'titre_page_recherche' => 'Résultats de la recherche @recherche@',
914
-	'titre_page_statistiques_referers' => 'Statistiques (liens entrants)',
915
-	'titre_page_upgrade' => 'Mise à niveau de SPIP',
916
-	'titre_preference_menus_favoris' => 'Menus favoris',
917
-	'titre_publication_articles_post_dates' => 'Publication des articles post-datés',
918
-	'titre_reparation' => 'Réparation',
919
-	'titre_suivi_petition' => 'Suivi des pétitions',
920
-	'tls_ldap' => 'Transport Layer Security :',
921
-	'trad_article_traduction' => 'Toutes les versions de cet article :',
922
-	'trad_delier' => 'Ne plus lier à ces traductions',
923
-	'trad_lier' => 'Cet article est une traduction de l’article numéro :',
924
-	'trad_new' => 'Écrire une nouvelle traduction',
874
+    'texte_vide' => 'vide',
875
+    'texte_vider_cache' => 'Vider le cache',
876
+    'titre_admin_tech' => 'Maintenance technique',
877
+    'titre_admin_vider' => 'Maintenance technique',
878
+    'titre_ajouter_un_auteur' => 'Ajouter un auteur',
879
+    'titre_ajouter_un_mot' => 'Ajouter un mot-clé',
880
+    'titre_cadre_afficher_article' => 'Afficher les articles',
881
+    'titre_cadre_afficher_traductions' => 'Afficher l’état des traductions pour les langues suivantes :',
882
+    'titre_cadre_ajouter_auteur' => 'AJOUTER UN AUTEUR :',
883
+    'titre_cadre_interieur_rubrique' => 'À l’intérieur de la rubrique',
884
+    'titre_cadre_numero_auteur' => 'AUTEUR NUMÉRO',
885
+    'titre_cadre_numero_objet' => '@objet@ NUMÉRO :',
886
+    'titre_cadre_signature_obligatoire' => '<b>Signature</b> [Obligatoire]<br />',
887
+    'titre_config_contenu_notifications' => 'Notifications',
888
+    'titre_config_contenu_prive' => 'Dans l’espace privé',
889
+    'titre_config_contenu_public' => 'Sur le site public',
890
+    'titre_config_fonctions' => 'Configuration du site',
891
+    'titre_config_langage' => 'Configurer la langue',
892
+    'titre_configuration' => 'Configuration du site',
893
+    'titre_configurer_preferences' => 'Configurer vos préférences',
894
+    'titre_configurer_preferences_menus' => 'Configurer vos préférences de menus',
895
+    'titre_conflit_edition' => 'Conflit lors de l’édition',
896
+    'titre_connexion_ldap' => 'Options : <b>Votre connexion LDAP</b>',
897
+    'titre_groupe_mots' => 'GROUPE DE MOTS :',
898
+    'titre_identite_site' => 'Identité du site',
899
+    'titre_langue_article' => 'Langue de l’article',
900
+    'titre_langue_rubrique' => 'Langue de la rubrique',
901
+    'titre_langue_trad_article' => 'LANGUE ET TRADUCTIONS DE L’ARTICLE',
902
+    'titre_les_articles' => 'LES ARTICLES',
903
+    'titre_messagerie_agenda' => 'Messagerie et agenda',
904
+    'titre_naviguer_dans_le_site' => 'Naviguer dans le site...',
905
+    'titre_nouvelle_rubrique' => 'Nouvelle rubrique',
906
+    'titre_numero_rubrique' => 'RUBRIQUE NUMÉRO :',
907
+    'titre_page_articles_edit' => 'Modifier : @titre@',
908
+    'titre_page_articles_page' => 'Les articles',
909
+    'titre_page_articles_tous' => 'Tout le site',
910
+    'titre_page_calendrier' => 'Calendrier @nom_mois@ @annee@',
911
+    'titre_page_config_contenu' => 'Configuration du site',
912
+    'titre_page_delete_all' => 'suppression totale et irréversible',
913
+    'titre_page_recherche' => 'Résultats de la recherche @recherche@',
914
+    'titre_page_statistiques_referers' => 'Statistiques (liens entrants)',
915
+    'titre_page_upgrade' => 'Mise à niveau de SPIP',
916
+    'titre_preference_menus_favoris' => 'Menus favoris',
917
+    'titre_publication_articles_post_dates' => 'Publication des articles post-datés',
918
+    'titre_reparation' => 'Réparation',
919
+    'titre_suivi_petition' => 'Suivi des pétitions',
920
+    'tls_ldap' => 'Transport Layer Security :',
921
+    'trad_article_traduction' => 'Toutes les versions de cet article :',
922
+    'trad_delier' => 'Ne plus lier à ces traductions',
923
+    'trad_lier' => 'Cet article est une traduction de l’article numéro :',
924
+    'trad_new' => 'Écrire une nouvelle traduction',
925 925
 
926
-	// U
927
-	'utf8_convert_erreur_orig' => 'Erreur : le jeu de caractères @charset@ n’est pas supporté.',
926
+    // U
927
+    'utf8_convert_erreur_orig' => 'Erreur : le jeu de caractères @charset@ n’est pas supporté.',
928 928
 
929
-	// V
930
-	'version' => 'Version :'
929
+    // V
930
+    'version' => 'Version :'
931 931
 );
Please login to merge, or discard this patch.