Completed
Push — master ( a56a38...81a660 )
by cam
01:36
created
ecrire/plugins/verifie_conformite.php 2 patches
Indentation   +195 added lines, -195 removed lines patch added patch discarded remove patch
@@ -10,207 +10,207 @@
 block discarded – undo
10 10
 \***************************************************************************/
11 11
 
12 12
 if (!defined('_ECRIRE_INC_VERSION')) {
13
-	return;
13
+    return;
14 14
 }
15 15
 
16 16
 include_spip('inc/xml');
17 17
 include_spip('inc/plugin');
18 18
 
19 19
 function plugins_verifie_conformite_dist($plug, &$arbre, $dir_plugins = _DIR_PLUGINS) {
20
-	$needs = null;
21
-	$compat_spip = null;
22
-	$uses = null;
23
-	$paths = null;
24
-	$trads = null;
25
-	static $etats = ['dev', 'experimental', 'test', 'stable'];
20
+    $needs = null;
21
+    $compat_spip = null;
22
+    $uses = null;
23
+    $paths = null;
24
+    $trads = null;
25
+    static $etats = ['dev', 'experimental', 'test', 'stable'];
26 26
 
27
-	$matches = [];
28
-	$silence = false;
29
-	$p = null;
30
-	// chercher la declaration <plugin spip='...'> a prendre pour cette version de SPIP
31
-	if ($n = spip_xml_match_nodes(',^plugin(\s|$),', $arbre, $matches)) {
32
-		// version de SPIP
33
-		$vspip = $GLOBALS['spip_version_branche'];
34
-		foreach ($matches as $tag => $sous) {
35
-			[$tagname, $atts] = spip_xml_decompose_tag($tag);
36
-			// On rajoute la condition sur $n :
37
-			// -- en effet si $n==1 on a pas plus a choisir la balise que l'on ait
38
-			//    un attribut spip ou pas. Cela permet de traiter tous les cas mono-balise
39
-			//    de la meme facon.
40
-			if (
41
-				$tagname == 'plugin'
42
-				&& is_array($sous)
43
-				&& (!isset($atts['spip']) || $n == 1 || plugin_version_compatible($atts['spip'], $vspip, 'spip'))
44
-			) {
45
-				// on prend la derniere declaration avec ce nom
46
-				$p = end($sous);
47
-				$compat_spip = $atts['spip'] ?? '';
48
-			}
49
-		}
50
-	}
51
-	if (is_null($p)) {
52
-		$arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent') . " : $plug"]];
53
-		$silence = true;
54
-	} else {
55
-		$arbre = $p;
56
-	}
57
-	if (!is_array($arbre)) {
58
-		$arbre = [];
59
-	}
60
-	// verification de la conformite du plugin avec quelques
61
-	// precautions elementaires
62
-	if (!isset($arbre['nom'])) {
63
-		if (!$silence) {
64
-			$arbre['erreur'][] = _T('erreur_plugin_nom_manquant');
65
-		}
66
-		$arbre['nom'] = [''];
67
-	}
68
-	if (!isset($arbre['version'])) {
69
-		if (!$silence) {
70
-			$arbre['erreur'][] = _T('erreur_plugin_version_manquant');
71
-		}
72
-		$arbre['version'] = [''];
73
-	}
74
-	if (!isset($arbre['prefix'])) {
75
-		if (!$silence) {
76
-			$arbre['erreur'][] = _T('erreur_plugin_prefix_manquant');
77
-		}
78
-		$arbre['prefix'] = [''];
79
-	} else {
80
-		$prefix = trim(end($arbre['prefix']));
81
-		if (strtoupper($prefix) == 'SPIP' && $plug != './') {
82
-			$arbre['erreur'][] = _T('erreur_plugin_prefix_interdit');
83
-		}
84
-		if (isset($arbre['etat'])) {
85
-			$etat = trim(end($arbre['etat']));
86
-			if (!in_array($etat, $etats)) {
87
-				$arbre['erreur'][] = _T('erreur_plugin_etat_inconnu') . " : '$etat'";
88
-			}
89
-		}
90
-		if (isset($arbre['options'])) {
91
-			foreach ($arbre['options'] as $optfile) {
92
-				$optfile = trim($optfile);
93
-				if (!@is_readable($dir_plugins . "$plug/$optfile") && !$silence) {
94
-					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
95
-				}
96
-			}
97
-		}
98
-		if (isset($arbre['fonctions'])) {
99
-			foreach ($arbre['fonctions'] as $optfile) {
100
-				$optfile = trim($optfile);
101
-				if (!@is_readable($dir_plugins . "$plug/$optfile") && !$silence) {
102
-					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
103
-				}
104
-			}
105
-		}
106
-		$fonctions = [];
107
-		if (isset($arbre['fonctions'])) {
108
-			$fonctions = $arbre['fonctions'];
109
-		}
110
-		$liste_methodes_reservees = [
111
-			'__construct',
112
-			'__destruct',
113
-			'plugin',
114
-			'install',
115
-			'uninstall',
116
-			strtolower($prefix)
117
-		];
27
+    $matches = [];
28
+    $silence = false;
29
+    $p = null;
30
+    // chercher la declaration <plugin spip='...'> a prendre pour cette version de SPIP
31
+    if ($n = spip_xml_match_nodes(',^plugin(\s|$),', $arbre, $matches)) {
32
+        // version de SPIP
33
+        $vspip = $GLOBALS['spip_version_branche'];
34
+        foreach ($matches as $tag => $sous) {
35
+            [$tagname, $atts] = spip_xml_decompose_tag($tag);
36
+            // On rajoute la condition sur $n :
37
+            // -- en effet si $n==1 on a pas plus a choisir la balise que l'on ait
38
+            //    un attribut spip ou pas. Cela permet de traiter tous les cas mono-balise
39
+            //    de la meme facon.
40
+            if (
41
+                $tagname == 'plugin'
42
+                && is_array($sous)
43
+                && (!isset($atts['spip']) || $n == 1 || plugin_version_compatible($atts['spip'], $vspip, 'spip'))
44
+            ) {
45
+                // on prend la derniere declaration avec ce nom
46
+                $p = end($sous);
47
+                $compat_spip = $atts['spip'] ?? '';
48
+            }
49
+        }
50
+    }
51
+    if (is_null($p)) {
52
+        $arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent') . " : $plug"]];
53
+        $silence = true;
54
+    } else {
55
+        $arbre = $p;
56
+    }
57
+    if (!is_array($arbre)) {
58
+        $arbre = [];
59
+    }
60
+    // verification de la conformite du plugin avec quelques
61
+    // precautions elementaires
62
+    if (!isset($arbre['nom'])) {
63
+        if (!$silence) {
64
+            $arbre['erreur'][] = _T('erreur_plugin_nom_manquant');
65
+        }
66
+        $arbre['nom'] = [''];
67
+    }
68
+    if (!isset($arbre['version'])) {
69
+        if (!$silence) {
70
+            $arbre['erreur'][] = _T('erreur_plugin_version_manquant');
71
+        }
72
+        $arbre['version'] = [''];
73
+    }
74
+    if (!isset($arbre['prefix'])) {
75
+        if (!$silence) {
76
+            $arbre['erreur'][] = _T('erreur_plugin_prefix_manquant');
77
+        }
78
+        $arbre['prefix'] = [''];
79
+    } else {
80
+        $prefix = trim(end($arbre['prefix']));
81
+        if (strtoupper($prefix) == 'SPIP' && $plug != './') {
82
+            $arbre['erreur'][] = _T('erreur_plugin_prefix_interdit');
83
+        }
84
+        if (isset($arbre['etat'])) {
85
+            $etat = trim(end($arbre['etat']));
86
+            if (!in_array($etat, $etats)) {
87
+                $arbre['erreur'][] = _T('erreur_plugin_etat_inconnu') . " : '$etat'";
88
+            }
89
+        }
90
+        if (isset($arbre['options'])) {
91
+            foreach ($arbre['options'] as $optfile) {
92
+                $optfile = trim($optfile);
93
+                if (!@is_readable($dir_plugins . "$plug/$optfile") && !$silence) {
94
+                    $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
95
+                }
96
+            }
97
+        }
98
+        if (isset($arbre['fonctions'])) {
99
+            foreach ($arbre['fonctions'] as $optfile) {
100
+                $optfile = trim($optfile);
101
+                if (!@is_readable($dir_plugins . "$plug/$optfile") && !$silence) {
102
+                    $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
103
+                }
104
+            }
105
+        }
106
+        $fonctions = [];
107
+        if (isset($arbre['fonctions'])) {
108
+            $fonctions = $arbre['fonctions'];
109
+        }
110
+        $liste_methodes_reservees = [
111
+            '__construct',
112
+            '__destruct',
113
+            'plugin',
114
+            'install',
115
+            'uninstall',
116
+            strtolower($prefix)
117
+        ];
118 118
 
119
-		$extraire_pipelines = charger_fonction('extraire_pipelines', 'plugins');
120
-		$arbre['pipeline'] = $extraire_pipelines($arbre);
121
-		foreach ($arbre['pipeline'] as $pipe) {
122
-			if (!isset($pipe['nom']) && !$silence) {
123
-				$arbre['erreur'][] = _T('erreur_plugin_nom_pipeline_non_defini');
124
-			}
125
-			$action = $pipe['action'] ?? $pipe['nom'];
126
-			// verif que la methode a un nom autorise
127
-			if (in_array(strtolower($action), $liste_methodes_reservees) && !$silence) {
128
-				$arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit') . " : $action";
129
-			}
130
-			if (isset($pipe['inclure'])) {
131
-				$inclure = $dir_plugins . "$plug/" . $pipe['inclure'];
132
-				if (!@is_readable($inclure) && !$silence) {
133
-					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $inclure";
134
-				}
135
-			}
136
-		}
137
-		$necessite = [];
138
-		$spip_trouve = false;
139
-		if (spip_xml_match_nodes(',^necessite,', $arbre, $needs)) {
140
-			foreach (array_keys($needs) as $tag) {
141
-				[$tag, $att] = spip_xml_decompose_tag($tag);
142
-				if (!isset($att['id'])) {
143
-					if (!$silence) {
144
-						$arbre['erreur'][] = _T(
145
-							'erreur_plugin_attribut_balise_manquant',
146
-							['attribut' => 'id', 'balise' => $att]
147
-						);
148
-					}
149
-				} else {
150
-					$necessite[] = $att;
151
-				}
152
-				if (strtolower($att['id']) == 'spip') {
153
-					$spip_trouve = true;
154
-				}
155
-			}
156
-		}
157
-		if ($compat_spip && !$spip_trouve) {
158
-			$necessite[] = ['id' => 'spip', 'version' => $compat_spip];
159
-		}
160
-		$arbre['necessite'] = $necessite;
161
-		$utilise = [];
162
-		if (spip_xml_match_nodes(',^utilise,', $arbre, $uses)) {
163
-			foreach (array_keys($uses) as $tag) {
164
-				[$tag, $att] = spip_xml_decompose_tag($tag);
165
-				if (!isset($att['id'])) {
166
-					if (!$silence) {
167
-						$arbre['erreur'][] = _T(
168
-							'erreur_plugin_attribut_balise_manquant',
169
-							['attribut' => 'id', 'balise' => $att]
170
-						);
171
-					}
172
-				} else {
173
-					$utilise[] = $att;
174
-				}
175
-			}
176
-		}
177
-		$arbre['utilise'] = $utilise;
178
-		$procure = [];
179
-		if (spip_xml_match_nodes(',^procure,', $arbre, $uses)) {
180
-			foreach (array_keys($uses) as $tag) {
181
-				[$tag, $att] = spip_xml_decompose_tag($tag);
182
-				$procure[] = $att;
183
-			}
184
-		}
185
-		$arbre['procure'] = $procure;
186
-		$path = [];
187
-		if (spip_xml_match_nodes(',^chemin,', $arbre, $paths)) {
188
-			foreach (array_keys($paths) as $tag) {
189
-				[$tag, $att] = spip_xml_decompose_tag($tag);
190
-				$att['path'] = $att['dir']; // ancienne syntaxe
191
-				$path[] = $att;
192
-			}
193
-		} else {
194
-			$path = [['dir' => '']];
195
-		} // initialiser par defaut
196
-		$arbre['path'] = $path;
197
-		// exposer les noisettes
198
-		if (isset($arbre['noisette'])) {
199
-			foreach ($arbre['noisette'] as $k => $nut) {
200
-				$nut = preg_replace(',[.]html$,uims', '', trim($nut));
201
-				$arbre['noisette'][$k] = $nut;
202
-				if (!@is_readable($dir_plugins . "$plug/$nut.html") && !$silence) {
203
-					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $nut";
204
-				}
205
-			}
206
-		}
207
-		$traduire = [];
208
-		if (spip_xml_match_nodes(',^traduire,', $arbre, $trads)) {
209
-			foreach (array_keys($trads) as $tag) {
210
-				[$tag, $att] = spip_xml_decompose_tag($tag);
211
-				$traduire[] = $att;
212
-			}
213
-		}
214
-		$arbre['traduire'] = $traduire;
215
-	}
119
+        $extraire_pipelines = charger_fonction('extraire_pipelines', 'plugins');
120
+        $arbre['pipeline'] = $extraire_pipelines($arbre);
121
+        foreach ($arbre['pipeline'] as $pipe) {
122
+            if (!isset($pipe['nom']) && !$silence) {
123
+                $arbre['erreur'][] = _T('erreur_plugin_nom_pipeline_non_defini');
124
+            }
125
+            $action = $pipe['action'] ?? $pipe['nom'];
126
+            // verif que la methode a un nom autorise
127
+            if (in_array(strtolower($action), $liste_methodes_reservees) && !$silence) {
128
+                $arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit') . " : $action";
129
+            }
130
+            if (isset($pipe['inclure'])) {
131
+                $inclure = $dir_plugins . "$plug/" . $pipe['inclure'];
132
+                if (!@is_readable($inclure) && !$silence) {
133
+                    $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $inclure";
134
+                }
135
+            }
136
+        }
137
+        $necessite = [];
138
+        $spip_trouve = false;
139
+        if (spip_xml_match_nodes(',^necessite,', $arbre, $needs)) {
140
+            foreach (array_keys($needs) as $tag) {
141
+                [$tag, $att] = spip_xml_decompose_tag($tag);
142
+                if (!isset($att['id'])) {
143
+                    if (!$silence) {
144
+                        $arbre['erreur'][] = _T(
145
+                            'erreur_plugin_attribut_balise_manquant',
146
+                            ['attribut' => 'id', 'balise' => $att]
147
+                        );
148
+                    }
149
+                } else {
150
+                    $necessite[] = $att;
151
+                }
152
+                if (strtolower($att['id']) == 'spip') {
153
+                    $spip_trouve = true;
154
+                }
155
+            }
156
+        }
157
+        if ($compat_spip && !$spip_trouve) {
158
+            $necessite[] = ['id' => 'spip', 'version' => $compat_spip];
159
+        }
160
+        $arbre['necessite'] = $necessite;
161
+        $utilise = [];
162
+        if (spip_xml_match_nodes(',^utilise,', $arbre, $uses)) {
163
+            foreach (array_keys($uses) as $tag) {
164
+                [$tag, $att] = spip_xml_decompose_tag($tag);
165
+                if (!isset($att['id'])) {
166
+                    if (!$silence) {
167
+                        $arbre['erreur'][] = _T(
168
+                            'erreur_plugin_attribut_balise_manquant',
169
+                            ['attribut' => 'id', 'balise' => $att]
170
+                        );
171
+                    }
172
+                } else {
173
+                    $utilise[] = $att;
174
+                }
175
+            }
176
+        }
177
+        $arbre['utilise'] = $utilise;
178
+        $procure = [];
179
+        if (spip_xml_match_nodes(',^procure,', $arbre, $uses)) {
180
+            foreach (array_keys($uses) as $tag) {
181
+                [$tag, $att] = spip_xml_decompose_tag($tag);
182
+                $procure[] = $att;
183
+            }
184
+        }
185
+        $arbre['procure'] = $procure;
186
+        $path = [];
187
+        if (spip_xml_match_nodes(',^chemin,', $arbre, $paths)) {
188
+            foreach (array_keys($paths) as $tag) {
189
+                [$tag, $att] = spip_xml_decompose_tag($tag);
190
+                $att['path'] = $att['dir']; // ancienne syntaxe
191
+                $path[] = $att;
192
+            }
193
+        } else {
194
+            $path = [['dir' => '']];
195
+        } // initialiser par defaut
196
+        $arbre['path'] = $path;
197
+        // exposer les noisettes
198
+        if (isset($arbre['noisette'])) {
199
+            foreach ($arbre['noisette'] as $k => $nut) {
200
+                $nut = preg_replace(',[.]html$,uims', '', trim($nut));
201
+                $arbre['noisette'][$k] = $nut;
202
+                if (!@is_readable($dir_plugins . "$plug/$nut.html") && !$silence) {
203
+                    $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $nut";
204
+                }
205
+            }
206
+        }
207
+        $traduire = [];
208
+        if (spip_xml_match_nodes(',^traduire,', $arbre, $trads)) {
209
+            foreach (array_keys($trads) as $tag) {
210
+                [$tag, $att] = spip_xml_decompose_tag($tag);
211
+                $traduire[] = $att;
212
+            }
213
+        }
214
+        $arbre['traduire'] = $traduire;
215
+    }
216 216
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -49,7 +49,7 @@  discard block
 block discarded – undo
49 49
 		}
50 50
 	}
51 51
 	if (is_null($p)) {
52
-		$arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent') . " : $plug"]];
52
+		$arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent')." : $plug"]];
53 53
 		$silence = true;
54 54
 	} else {
55 55
 		$arbre = $p;
@@ -84,22 +84,22 @@  discard block
 block discarded – undo
84 84
 		if (isset($arbre['etat'])) {
85 85
 			$etat = trim(end($arbre['etat']));
86 86
 			if (!in_array($etat, $etats)) {
87
-				$arbre['erreur'][] = _T('erreur_plugin_etat_inconnu') . " : '$etat'";
87
+				$arbre['erreur'][] = _T('erreur_plugin_etat_inconnu')." : '$etat'";
88 88
 			}
89 89
 		}
90 90
 		if (isset($arbre['options'])) {
91 91
 			foreach ($arbre['options'] as $optfile) {
92 92
 				$optfile = trim($optfile);
93
-				if (!@is_readable($dir_plugins . "$plug/$optfile") && !$silence) {
94
-					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
93
+				if (!@is_readable($dir_plugins."$plug/$optfile") && !$silence) {
94
+					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $optfile";
95 95
 				}
96 96
 			}
97 97
 		}
98 98
 		if (isset($arbre['fonctions'])) {
99 99
 			foreach ($arbre['fonctions'] as $optfile) {
100 100
 				$optfile = trim($optfile);
101
-				if (!@is_readable($dir_plugins . "$plug/$optfile") && !$silence) {
102
-					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
101
+				if (!@is_readable($dir_plugins."$plug/$optfile") && !$silence) {
102
+					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $optfile";
103 103
 				}
104 104
 			}
105 105
 		}
@@ -125,12 +125,12 @@  discard block
 block discarded – undo
125 125
 			$action = $pipe['action'] ?? $pipe['nom'];
126 126
 			// verif que la methode a un nom autorise
127 127
 			if (in_array(strtolower($action), $liste_methodes_reservees) && !$silence) {
128
-				$arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit') . " : $action";
128
+				$arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit')." : $action";
129 129
 			}
130 130
 			if (isset($pipe['inclure'])) {
131
-				$inclure = $dir_plugins . "$plug/" . $pipe['inclure'];
131
+				$inclure = $dir_plugins."$plug/".$pipe['inclure'];
132 132
 				if (!@is_readable($inclure) && !$silence) {
133
-					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $inclure";
133
+					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $inclure";
134 134
 				}
135 135
 			}
136 136
 		}
@@ -199,8 +199,8 @@  discard block
 block discarded – undo
199 199
 			foreach ($arbre['noisette'] as $k => $nut) {
200 200
 				$nut = preg_replace(',[.]html$,uims', '', trim($nut));
201 201
 				$arbre['noisette'][$k] = $nut;
202
-				if (!@is_readable($dir_plugins . "$plug/$nut.html") && !$silence) {
203
-					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $nut";
202
+				if (!@is_readable($dir_plugins."$plug/$nut.html") && !$silence) {
203
+					$arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $nut";
204 204
 				}
205 205
 			}
206 206
 		}
Please login to merge, or discard this patch.
ecrire/plugins/afficher_nom_plugin.php 2 patches
Indentation   +39 added lines, -39 removed lines patch added patch discarded remove patch
@@ -10,59 +10,59 @@
 block discarded – undo
10 10
 \***************************************************************************/
11 11
 
12 12
 if (!defined('_ECRIRE_INC_VERSION')) {
13
-	return;
13
+    return;
14 14
 }
15 15
 include_spip('inc/charsets');
16 16
 include_spip('inc/texte');
17 17
 include_spip('plugins/afficher_plugin');
18 18
 
19 19
 function plugins_afficher_nom_plugin_dist(
20
-	$url_page,
21
-	$plug_file,
22
-	$checked,
23
-	$actif,
24
-	$expose = false,
25
-	$class_li = 'item',
26
-	$dir_plugins = _DIR_PLUGINS
20
+    $url_page,
21
+    $plug_file,
22
+    $checked,
23
+    $actif,
24
+    $expose = false,
25
+    $class_li = 'item',
26
+    $dir_plugins = _DIR_PLUGINS
27 27
 ) {
28
-	static $id_input = 0;
29
-	static $versions = [];
28
+    static $id_input = 0;
29
+    static $versions = [];
30 30
 
31
-	$erreur = false;
32
-	$s = '';
31
+    $erreur = false;
32
+    $s = '';
33 33
 
34
-	$get_infos = charger_fonction('get_infos', 'plugins');
35
-	$info = $get_infos($plug_file, false, $dir_plugins);
34
+    $get_infos = charger_fonction('get_infos', 'plugins');
35
+    $info = $get_infos($plug_file, false, $dir_plugins);
36 36
 
37
-	// numerotons les occurences d'un meme prefix
38
-	$versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : '';
39
-	$id = $info['prefix'] . $versions[$info['prefix']];
37
+    // numerotons les occurences d'un meme prefix
38
+    $versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : '';
39
+    $id = $info['prefix'] . $versions[$info['prefix']];
40 40
 
41
-	$class = $class_li;
42
-	$class .= $actif ? ' actif' : '';
43
-	$class .= $expose ? ' on' : '';
44
-	$erreur = isset($info['erreur']);
45
-	if ($erreur) {
46
-		$class .= ' error';
47
-	}
48
-	$s .= "<li id='$id' class='$class'>";
41
+    $class = $class_li;
42
+    $class .= $actif ? ' actif' : '';
43
+    $class .= $expose ? ' on' : '';
44
+    $erreur = isset($info['erreur']);
45
+    if ($erreur) {
46
+        $class .= ' error';
47
+    }
48
+    $s .= "<li id='$id' class='$class'>";
49 49
 
50
-	// Cartouche Resume
51
-	$s .= "<div class='resume'>";
50
+    // Cartouche Resume
51
+    $s .= "<div class='resume'>";
52 52
 
53
-	$prefix = $info['prefix'];
54
-	$dir = "$dir_plugins$plug_file/lang/$prefix";
55
-	$desc = plugin_propre($info['description'], $dir);
56
-	$url_stat = parametre_url($url_page, 'plugin', $dir_plugins . $plug_file);
53
+    $prefix = $info['prefix'];
54
+    $dir = "$dir_plugins$plug_file/lang/$prefix";
55
+    $desc = plugin_propre($info['description'], $dir);
56
+    $url_stat = parametre_url($url_page, 'plugin', $dir_plugins . $plug_file);
57 57
 
58
-	$s .= "<strong class='nom'>" . typo($info['nom']) . '</strong>';
59
-	$s .= " <span class='version'>" . $info['version'] . '</span>';
60
-	$s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . '</span>';
61
-	$s .= '</div>';
58
+    $s .= "<strong class='nom'>" . typo($info['nom']) . '</strong>';
59
+    $s .= " <span class='version'>" . $info['version'] . '</span>';
60
+    $s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . '</span>';
61
+    $s .= '</div>';
62 62
 
63
-	if ($erreur) {
64
-		$s .= "<div class='erreur'>" . implode('<br >', $info['erreur']) . '</div>';
65
-	}
63
+    if ($erreur) {
64
+        $s .= "<div class='erreur'>" . implode('<br >', $info['erreur']) . '</div>';
65
+    }
66 66
 
67
-	return $s . '</li>';
67
+    return $s . '</li>';
68 68
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -36,7 +36,7 @@  discard block
 block discarded – undo
36 36
 
37 37
 	// numerotons les occurences d'un meme prefix
38 38
 	$versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : '';
39
-	$id = $info['prefix'] . $versions[$info['prefix']];
39
+	$id = $info['prefix'].$versions[$info['prefix']];
40 40
 
41 41
 	$class = $class_li;
42 42
 	$class .= $actif ? ' actif' : '';
@@ -53,16 +53,16 @@  discard block
 block discarded – undo
53 53
 	$prefix = $info['prefix'];
54 54
 	$dir = "$dir_plugins$plug_file/lang/$prefix";
55 55
 	$desc = plugin_propre($info['description'], $dir);
56
-	$url_stat = parametre_url($url_page, 'plugin', $dir_plugins . $plug_file);
56
+	$url_stat = parametre_url($url_page, 'plugin', $dir_plugins.$plug_file);
57 57
 
58
-	$s .= "<strong class='nom'>" . typo($info['nom']) . '</strong>';
59
-	$s .= " <span class='version'>" . $info['version'] . '</span>';
60
-	$s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . '</span>';
58
+	$s .= "<strong class='nom'>".typo($info['nom']).'</strong>';
59
+	$s .= " <span class='version'>".$info['version'].'</span>';
60
+	$s .= " <span class='etat'> - ".plugin_etat_en_clair($info['etat']).'</span>';
61 61
 	$s .= '</div>';
62 62
 
63 63
 	if ($erreur) {
64
-		$s .= "<div class='erreur'>" . implode('<br >', $info['erreur']) . '</div>';
64
+		$s .= "<div class='erreur'>".implode('<br >', $info['erreur']).'</div>';
65 65
 	}
66 66
 
67
-	return $s . '</li>';
67
+	return $s.'</li>';
68 68
 }
Please login to merge, or discard this patch.
config/ecran_securite.php 3 patches
Indentation   +459 added lines, -459 removed lines patch added patch discarded remove patch
@@ -15,11 +15,11 @@  discard block
 block discarded – undo
15 15
  * Test utilisateur
16 16
  */
17 17
 if (isset($_GET['test_ecran_securite'])) {
18
-	$ecran_securite_raison = 'test ' . _ECRAN_SECURITE;
18
+    $ecran_securite_raison = 'test ' . _ECRAN_SECURITE;
19 19
 }
20 20
 
21 21
 if (file_exists($f = __DIR__ . DIRECTORY_SEPARATOR  . 'ecran_securite_options.php')) {
22
-	include ($f);
22
+    include ($f);
23 23
 }
24 24
 
25 25
 /*
@@ -29,222 +29,222 @@  discard block
 block discarded – undo
29 29
  * le load depasse ECRAN_SECURITE_LOAD)
30 30
  */
31 31
 if (!defined('_IS_BOT') and isset($_GET['var_isbot'])) {
32
-	define('_IS_BOT', $_GET['var_isbot'] ? true : false);
32
+    define('_IS_BOT', $_GET['var_isbot'] ? true : false);
33 33
 }
34 34
 
35 35
 /*
36 36
  * Détecteur de robot d'indexation
37 37
  */
38 38
 if (!defined('_IS_BOT')) {
39
-	define(
40
-		'_IS_BOT',
41
-		isset($_SERVER['HTTP_USER_AGENT'])
42
-			and preg_match(
43
-				','
44
-					. implode('|', array(
45
-						// mots generiques
46
-						'bot',
47
-						'slurp',
48
-						'crawler',
49
-						'crwlr',
50
-						'java',
51
-						'monitoring',
52
-						'spider',
53
-						'webvac',
54
-						'yandex',
55
-						'MSIE 6\.0', // botnet 99,9% du temps
56
-						// UA plus cibles
57
-						'200please',
58
-						'80legs',
59
-						'a6-indexer',
60
-						'aboundex',
61
-						'accoona',
62
-						'acrylicapps',
63
-						'addthis',
64
-						'adressendeutschland',
65
-						'alexa',
66
-						'altavista',
67
-						'analyticsseo',
68
-						'antennapod',
69
-						'arachnys',
70
-						'archive',
71
-						'argclrint',
72
-						'aspseek',
73
-						'baidu',
74
-						'begunadvertising',
75
-						'bing',
76
-						'bloglines',
77
-						'buck',
78
-						'browsershots',
79
-						'bubing',
80
-						'butterfly',
81
-						'changedetection',
82
-						'charlotte',
83
-						'chilkat',
84
-						'china',
85
-						'coccoc',
86
-						'crowsnest',
87
-						'dataminr',
88
-						'daumoa',
89
-						'dlvr\.it',
90
-						'dlweb',
91
-						'drupal',
92
-						'ec2linkfinder',
93
-						'eset\.com',
94
-						'estyle',
95
-						'exalead',
96
-						'ezooms',
97
-						'facebookexternalhit',
98
-						'facebookplatform',
99
-						'fairshare',
100
-						'feedfetcher',
101
-						'feedfetcher-google',
102
-						'feedly',
103
-						'fetch',
104
-						'flipboardproxy',
105
-						'genieo',
106
-						'google',
107
-						'go-http-client',
108
-						'grapeshot',
109
-						'hatena-useragent',
110
-						'head',
111
-						'hosttracker',
112
-						'hubspot',
113
-						'ia_archiver',
114
-						'ichiro',
115
-						'iltrovatore-setaccio',
116
-						'immediatenet',
117
-						'ina',
118
-						'inoreader',
119
-						'infegyatlas',
120
-						'infohelfer',
121
-						'instapaper',
122
-						'jabse',
123
-						'james',
124
-						'jersey',
125
-						'kumkie',
126
-						'linkdex',
127
-						'linkfluence',
128
-						'linkwalker',
129
-						'litefinder',
130
-						'loadimpactpageanalyzer',
131
-						'ltx71',
132
-						'luminate',
133
-						'lycos',
134
-						'lycosa',
135
-						'mediapartners-google',
136
-						'msai',
137
-						'myapp',
138
-						'nativehost',
139
-						'najdi',
140
-						'netcraftsurveyagent',
141
-						'netestate',
142
-						'netseer',
143
-						'netnewswire',
144
-						'newspaper',
145
-						'newsblur',
146
-						'nuhk',
147
-						'nuzzel',
148
-						'okhttp',
149
-						'otmedia',
150
-						'owlin',
151
-						'owncloud',
152
-						'panscient',
153
-						'paper\.li',
154
-						'parsijoo',
155
-						'protopage',
156
-						'plukkie',
157
-						'proximic',
158
-						'pubsub',
159
-						'python',
160
-						'qirina',
161
-						'qoshe',
162
-						'qualidator',
163
-						'qwantify',
164
-						'rambler',
165
-						'readability',
166
-						'ruby',
167
-						'sbsearch',
168
-						'scoop\.it',
169
-						'scooter',
170
-						'scoutjet',
171
-						'scrapy',
172
-						'scrubby',
173
-						'scrubbybloglines',
174
-						'shareaholic',
175
-						'shopwiki',
176
-						'simplepie',
177
-						'sistrix',
178
-						'sitechecker',
179
-						'siteexplorer',
180
-						'snapshot',
181
-						'sogou',
182
-						'special_archiver',
183
-						'speedy',
184
-						'spinn3r',
185
-						'spreadtrum',
186
-						'steeler',
187
-						'subscriber',
188
-						'suma',
189
-						'superdownloads',
190
-						'svenska-webbsido',
191
-						'teoma',
192
-						'the knowledge AI',
193
-						'thumbshots',
194
-						'tineye',
195
-						'traackr',
196
-						'trendiction',
197
-						'trendsmap',
198
-						'tweetedtimes',
199
-						'tweetmeme',
200
-						'universalfeedparser',
201
-						'uaslinkchecker',
202
-						'undrip',
203
-						'unwindfetchor',
204
-						'upday',
205
-						'vedma',
206
-						'vkshare',
207
-						'vm',
208
-						'wch',
209
-						'webalta',
210
-						'webcookies',
211
-						'webparser',
212
-						'webthumbnail',
213
-						'wesee',
214
-						'wise-guys',
215
-						'woko',
216
-						'wordpress',
217
-						'wotbox',
218
-						'y!j-bri',
219
-						'y!j-bro',
220
-						'y!j-brw',
221
-						'y!j-bsc',
222
-						'yahoo',
223
-						'yahoo!',
224
-						'yahooysmcm',
225
-						'ymobactus',
226
-						'yats',
227
-						'yeti',
228
-						'zeerch'
229
-					)) . ',i',
230
-				(string)$_SERVER['HTTP_USER_AGENT']
231
-			)
232
-	);
39
+    define(
40
+        '_IS_BOT',
41
+        isset($_SERVER['HTTP_USER_AGENT'])
42
+            and preg_match(
43
+                ','
44
+                    . implode('|', array(
45
+                        // mots generiques
46
+                        'bot',
47
+                        'slurp',
48
+                        'crawler',
49
+                        'crwlr',
50
+                        'java',
51
+                        'monitoring',
52
+                        'spider',
53
+                        'webvac',
54
+                        'yandex',
55
+                        'MSIE 6\.0', // botnet 99,9% du temps
56
+                        // UA plus cibles
57
+                        '200please',
58
+                        '80legs',
59
+                        'a6-indexer',
60
+                        'aboundex',
61
+                        'accoona',
62
+                        'acrylicapps',
63
+                        'addthis',
64
+                        'adressendeutschland',
65
+                        'alexa',
66
+                        'altavista',
67
+                        'analyticsseo',
68
+                        'antennapod',
69
+                        'arachnys',
70
+                        'archive',
71
+                        'argclrint',
72
+                        'aspseek',
73
+                        'baidu',
74
+                        'begunadvertising',
75
+                        'bing',
76
+                        'bloglines',
77
+                        'buck',
78
+                        'browsershots',
79
+                        'bubing',
80
+                        'butterfly',
81
+                        'changedetection',
82
+                        'charlotte',
83
+                        'chilkat',
84
+                        'china',
85
+                        'coccoc',
86
+                        'crowsnest',
87
+                        'dataminr',
88
+                        'daumoa',
89
+                        'dlvr\.it',
90
+                        'dlweb',
91
+                        'drupal',
92
+                        'ec2linkfinder',
93
+                        'eset\.com',
94
+                        'estyle',
95
+                        'exalead',
96
+                        'ezooms',
97
+                        'facebookexternalhit',
98
+                        'facebookplatform',
99
+                        'fairshare',
100
+                        'feedfetcher',
101
+                        'feedfetcher-google',
102
+                        'feedly',
103
+                        'fetch',
104
+                        'flipboardproxy',
105
+                        'genieo',
106
+                        'google',
107
+                        'go-http-client',
108
+                        'grapeshot',
109
+                        'hatena-useragent',
110
+                        'head',
111
+                        'hosttracker',
112
+                        'hubspot',
113
+                        'ia_archiver',
114
+                        'ichiro',
115
+                        'iltrovatore-setaccio',
116
+                        'immediatenet',
117
+                        'ina',
118
+                        'inoreader',
119
+                        'infegyatlas',
120
+                        'infohelfer',
121
+                        'instapaper',
122
+                        'jabse',
123
+                        'james',
124
+                        'jersey',
125
+                        'kumkie',
126
+                        'linkdex',
127
+                        'linkfluence',
128
+                        'linkwalker',
129
+                        'litefinder',
130
+                        'loadimpactpageanalyzer',
131
+                        'ltx71',
132
+                        'luminate',
133
+                        'lycos',
134
+                        'lycosa',
135
+                        'mediapartners-google',
136
+                        'msai',
137
+                        'myapp',
138
+                        'nativehost',
139
+                        'najdi',
140
+                        'netcraftsurveyagent',
141
+                        'netestate',
142
+                        'netseer',
143
+                        'netnewswire',
144
+                        'newspaper',
145
+                        'newsblur',
146
+                        'nuhk',
147
+                        'nuzzel',
148
+                        'okhttp',
149
+                        'otmedia',
150
+                        'owlin',
151
+                        'owncloud',
152
+                        'panscient',
153
+                        'paper\.li',
154
+                        'parsijoo',
155
+                        'protopage',
156
+                        'plukkie',
157
+                        'proximic',
158
+                        'pubsub',
159
+                        'python',
160
+                        'qirina',
161
+                        'qoshe',
162
+                        'qualidator',
163
+                        'qwantify',
164
+                        'rambler',
165
+                        'readability',
166
+                        'ruby',
167
+                        'sbsearch',
168
+                        'scoop\.it',
169
+                        'scooter',
170
+                        'scoutjet',
171
+                        'scrapy',
172
+                        'scrubby',
173
+                        'scrubbybloglines',
174
+                        'shareaholic',
175
+                        'shopwiki',
176
+                        'simplepie',
177
+                        'sistrix',
178
+                        'sitechecker',
179
+                        'siteexplorer',
180
+                        'snapshot',
181
+                        'sogou',
182
+                        'special_archiver',
183
+                        'speedy',
184
+                        'spinn3r',
185
+                        'spreadtrum',
186
+                        'steeler',
187
+                        'subscriber',
188
+                        'suma',
189
+                        'superdownloads',
190
+                        'svenska-webbsido',
191
+                        'teoma',
192
+                        'the knowledge AI',
193
+                        'thumbshots',
194
+                        'tineye',
195
+                        'traackr',
196
+                        'trendiction',
197
+                        'trendsmap',
198
+                        'tweetedtimes',
199
+                        'tweetmeme',
200
+                        'universalfeedparser',
201
+                        'uaslinkchecker',
202
+                        'undrip',
203
+                        'unwindfetchor',
204
+                        'upday',
205
+                        'vedma',
206
+                        'vkshare',
207
+                        'vm',
208
+                        'wch',
209
+                        'webalta',
210
+                        'webcookies',
211
+                        'webparser',
212
+                        'webthumbnail',
213
+                        'wesee',
214
+                        'wise-guys',
215
+                        'woko',
216
+                        'wordpress',
217
+                        'wotbox',
218
+                        'y!j-bri',
219
+                        'y!j-bro',
220
+                        'y!j-brw',
221
+                        'y!j-bsc',
222
+                        'yahoo',
223
+                        'yahoo!',
224
+                        'yahooysmcm',
225
+                        'ymobactus',
226
+                        'yats',
227
+                        'yeti',
228
+                        'zeerch'
229
+                    )) . ',i',
230
+                (string)$_SERVER['HTTP_USER_AGENT']
231
+            )
232
+    );
233 233
 }
234 234
 if (!defined('_IS_BOT_FRIEND')) {
235
-	define(
236
-		'_IS_BOT_FRIEND',
237
-		isset($_SERVER['HTTP_USER_AGENT'])
238
-			and preg_match(
239
-				',' . implode('|', array(
240
-					'facebookexternalhit',
241
-					'twitterbot',
242
-					'flipboardproxy',
243
-					'wordpress'
244
-				)) . ',i',
245
-				(string)$_SERVER['HTTP_USER_AGENT']
246
-			)
247
-	);
235
+    define(
236
+        '_IS_BOT_FRIEND',
237
+        isset($_SERVER['HTTP_USER_AGENT'])
238
+            and preg_match(
239
+                ',' . implode('|', array(
240
+                    'facebookexternalhit',
241
+                    'twitterbot',
242
+                    'flipboardproxy',
243
+                    'wordpress'
244
+                )) . ',i',
245
+                (string)$_SERVER['HTTP_USER_AGENT']
246
+            )
247
+    );
248 248
 }
249 249
 
250 250
 /*
@@ -256,28 +256,28 @@  discard block
 block discarded – undo
256 256
  */
257 257
 $_exceptions = array('id_table', 'id_base', 'id_parent', 'id_article_pdf');
258 258
 foreach ($_GET as $var => $val) {
259
-	if (
260
-		$_GET[$var] and strncmp($var, "id_", 3) == 0
261
-		and !in_array($var, $_exceptions)
262
-	) {
263
-		$_GET[$var] = is_array($_GET[$var]) ? @array_map('intval', $_GET[$var]) : intval($_GET[$var]);
264
-	}
259
+    if (
260
+        $_GET[$var] and strncmp($var, "id_", 3) == 0
261
+        and !in_array($var, $_exceptions)
262
+    ) {
263
+        $_GET[$var] = is_array($_GET[$var]) ? @array_map('intval', $_GET[$var]) : intval($_GET[$var]);
264
+    }
265 265
 }
266 266
 foreach ($_POST as $var => $val) {
267
-	if (
268
-		$_POST[$var] and strncmp($var, "id_", 3) == 0
269
-		and !in_array($var, $_exceptions)
270
-	) {
271
-		$_POST[$var] = is_array($_POST[$var]) ? @array_map('intval', $_POST[$var]) : intval($_POST[$var]);
272
-	}
267
+    if (
268
+        $_POST[$var] and strncmp($var, "id_", 3) == 0
269
+        and !in_array($var, $_exceptions)
270
+    ) {
271
+        $_POST[$var] = is_array($_POST[$var]) ? @array_map('intval', $_POST[$var]) : intval($_POST[$var]);
272
+    }
273 273
 }
274 274
 foreach ($GLOBALS as $var => $val) {
275
-	if (
276
-		$GLOBALS[$var] and strncmp($var, "id_", 3) == 0
277
-		and !in_array($var, $_exceptions)
278
-	) {
279
-		$GLOBALS[$var] = is_array($GLOBALS[$var]) ? @array_map('intval', $GLOBALS[$var]) : intval($GLOBALS[$var]);
280
-	}
275
+    if (
276
+        $GLOBALS[$var] and strncmp($var, "id_", 3) == 0
277
+        and !in_array($var, $_exceptions)
278
+    ) {
279
+        $GLOBALS[$var] = is_array($GLOBALS[$var]) ? @array_map('intval', $GLOBALS[$var]) : intval($GLOBALS[$var]);
280
+    }
281 281
 }
282 282
 
283 283
 /*
@@ -290,116 +290,116 @@  discard block
 block discarded – undo
290 290
  * Contrôle de quelques variables (XSS)
291 291
  */
292 292
 foreach (array('lang', 'var_recherche', 'aide', 'var_lang_r', 'lang_r', 'var_ajax_ancre', 'nom_fichier') as $var) {
293
-	if (isset($_GET[$var])) {
294
-		$_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_GET[$var]);
295
-	}
296
-	if (isset($_POST[$var])) {
297
-		$_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_POST[$var]);
298
-	}
293
+    if (isset($_GET[$var])) {
294
+        $_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_GET[$var]);
295
+    }
296
+    if (isset($_POST[$var])) {
297
+        $_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_POST[$var]);
298
+    }
299 299
 }
300 300
 
301 301
 /*
302 302
  * Filtre l'accès à spip_acces_doc (injection SQL en 1.8.2x)
303 303
  */
304 304
 if (isset($_SERVER['REQUEST_URI'])) {
305
-	if (preg_match(',^(.*/)?spip_acces_doc\.,', (string)$_SERVER['REQUEST_URI'])) {
306
-		$file = addslashes((string)$_GET['file']);
307
-	}
305
+    if (preg_match(',^(.*/)?spip_acces_doc\.,', (string)$_SERVER['REQUEST_URI'])) {
306
+        $file = addslashes((string)$_GET['file']);
307
+    }
308 308
 }
309 309
 
310 310
 /*
311 311
  * Pas d'inscription abusive
312 312
  */
313 313
 if (
314
-	isset($_REQUEST['mode']) and isset($_REQUEST['page'])
315
-	and !in_array($_REQUEST['mode'], array("6forum", "1comite"))
316
-	and $_REQUEST['page'] == "identifiants"
314
+    isset($_REQUEST['mode']) and isset($_REQUEST['page'])
315
+    and !in_array($_REQUEST['mode'], array("6forum", "1comite"))
316
+    and $_REQUEST['page'] == "identifiants"
317 317
 ) {
318
-	$ecran_securite_raison = "identifiants";
318
+    $ecran_securite_raison = "identifiants";
319 319
 }
320 320
 
321 321
 /*
322 322
  * Agenda joue à l'injection php
323 323
  */
324 324
 if (
325
-	isset($_REQUEST['partie_cal'])
326
-	and $_REQUEST['partie_cal'] !== htmlentities((string)$_REQUEST['partie_cal'])
325
+    isset($_REQUEST['partie_cal'])
326
+    and $_REQUEST['partie_cal'] !== htmlentities((string)$_REQUEST['partie_cal'])
327 327
 ) {
328
-	$ecran_securite_raison = "partie_cal";
328
+    $ecran_securite_raison = "partie_cal";
329 329
 }
330 330
 if (
331
-	isset($_REQUEST['echelle'])
332
-	and $_REQUEST['echelle'] !== htmlentities((string)$_REQUEST['echelle'])
331
+    isset($_REQUEST['echelle'])
332
+    and $_REQUEST['echelle'] !== htmlentities((string)$_REQUEST['echelle'])
333 333
 ) {
334
-	$ecran_securite_raison = "echelle";
334
+    $ecran_securite_raison = "echelle";
335 335
 }
336 336
 
337 337
 /*
338 338
  * Espace privé
339 339
  */
340 340
 if (
341
-	isset($_REQUEST['exec'])
342
-	and !preg_match(',^[\w-]+$,', (string)$_REQUEST['exec'])
341
+    isset($_REQUEST['exec'])
342
+    and !preg_match(',^[\w-]+$,', (string)$_REQUEST['exec'])
343 343
 ) {
344
-	$ecran_securite_raison = "exec";
344
+    $ecran_securite_raison = "exec";
345 345
 }
346 346
 if (
347
-	isset($_REQUEST['cherche_auteur'])
348
-	and preg_match(',[<],', (string)$_REQUEST['cherche_auteur'])
347
+    isset($_REQUEST['cherche_auteur'])
348
+    and preg_match(',[<],', (string)$_REQUEST['cherche_auteur'])
349 349
 ) {
350
-	$ecran_securite_raison = "cherche_auteur";
350
+    $ecran_securite_raison = "cherche_auteur";
351 351
 }
352 352
 if (
353
-	isset($_REQUEST['exec'])
354
-	and $_REQUEST['exec'] == 'auteurs'
355
-	and isset($_REQUEST['recherche'])
356
-	and preg_match(',[<],', (string)$_REQUEST['recherche'])
353
+    isset($_REQUEST['exec'])
354
+    and $_REQUEST['exec'] == 'auteurs'
355
+    and isset($_REQUEST['recherche'])
356
+    and preg_match(',[<],', (string)$_REQUEST['recherche'])
357 357
 ) {
358
-	$ecran_securite_raison = "recherche";
358
+    $ecran_securite_raison = "recherche";
359 359
 }
360 360
 if (
361
-	isset($_REQUEST['exec'])
362
-	and $_REQUEST['exec'] == 'info_plugin'
363
-	and isset($_REQUEST['plugin'])
364
-	and preg_match(',[<],', (string)$_REQUEST['plugin'])
361
+    isset($_REQUEST['exec'])
362
+    and $_REQUEST['exec'] == 'info_plugin'
363
+    and isset($_REQUEST['plugin'])
364
+    and preg_match(',[<],', (string)$_REQUEST['plugin'])
365 365
 ) {
366
-	$ecran_securite_raison = "plugin";
366
+    $ecran_securite_raison = "plugin";
367 367
 }
368 368
 if (
369
-	isset($_REQUEST['exec'])
370
-	and $_REQUEST['exec'] == 'puce_statut'
371
-	and isset($_REQUEST['id'])
372
-	and !intval($_REQUEST['id'])
369
+    isset($_REQUEST['exec'])
370
+    and $_REQUEST['exec'] == 'puce_statut'
371
+    and isset($_REQUEST['id'])
372
+    and !intval($_REQUEST['id'])
373 373
 ) {
374
-	$ecran_securite_raison = "puce_statut";
374
+    $ecran_securite_raison = "puce_statut";
375 375
 }
376 376
 if (
377
-	isset($_REQUEST['action'])
378
-	and $_REQUEST['action'] == 'configurer'
377
+    isset($_REQUEST['action'])
378
+    and $_REQUEST['action'] == 'configurer'
379 379
 ) {
380
-	if (
381
-		@file_exists('inc_version.php')
382
-		or @file_exists('ecrire/inc_version.php')
383
-	) {
384
-		function action_configurer() {
385
-			include_spip('inc/autoriser');
386
-			if (!autoriser('configurer', _request('configuration'))) {
387
-				include_spip('inc/minipres');
388
-				echo minipres(_T('info_acces_interdit'));
389
-				exit;
390
-			}
391
-			require _DIR_RESTREINT . 'action/configurer.php';
392
-			action_configurer_dist();
393
-		}
394
-	}
380
+    if (
381
+        @file_exists('inc_version.php')
382
+        or @file_exists('ecrire/inc_version.php')
383
+    ) {
384
+        function action_configurer() {
385
+            include_spip('inc/autoriser');
386
+            if (!autoriser('configurer', _request('configuration'))) {
387
+                include_spip('inc/minipres');
388
+                echo minipres(_T('info_acces_interdit'));
389
+                exit;
390
+            }
391
+            require _DIR_RESTREINT . 'action/configurer.php';
392
+            action_configurer_dist();
393
+        }
394
+    }
395 395
 }
396 396
 if (
397
-	isset($_REQUEST['action'])
398
-	and $_REQUEST['action'] == 'ordonner_liens_documents'
399
-	and isset($_REQUEST['ordre'])
400
-	and is_string($_REQUEST['ordre'])
397
+    isset($_REQUEST['action'])
398
+    and $_REQUEST['action'] == 'ordonner_liens_documents'
399
+    and isset($_REQUEST['ordre'])
400
+    and is_string($_REQUEST['ordre'])
401 401
 ) {
402
-	$ecran_securite_raison = "ordre a la chaine";
402
+    $ecran_securite_raison = "ordre a la chaine";
403 403
 }
404 404
 
405 405
 
@@ -407,29 +407,29 @@  discard block
 block discarded – undo
407 407
  * Bloque les requêtes contenant %00 (manipulation d'include)
408 408
  */
409 409
 if (strpos(
410
-	(function_exists('get_magic_quotes_gpc') and @get_magic_quotes_gpc())
411
-		? stripslashes(serialize($_REQUEST))
412
-		: serialize($_REQUEST),
413
-	chr(0)
410
+    (function_exists('get_magic_quotes_gpc') and @get_magic_quotes_gpc())
411
+        ? stripslashes(serialize($_REQUEST))
412
+        : serialize($_REQUEST),
413
+    chr(0)
414 414
 ) !== false) {
415
-	$ecran_securite_raison = "%00";
415
+    $ecran_securite_raison = "%00";
416 416
 }
417 417
 
418 418
 /*
419 419
  * Bloque les requêtes fond=formulaire_
420 420
  */
421 421
 if (
422
-	isset($_REQUEST['fond'])
423
-	and preg_match(',^formulaire_,i', $_REQUEST['fond'])
422
+    isset($_REQUEST['fond'])
423
+    and preg_match(',^formulaire_,i', $_REQUEST['fond'])
424 424
 ) {
425
-	$ecran_securite_raison = "fond=formulaire_";
425
+    $ecran_securite_raison = "fond=formulaire_";
426 426
 }
427 427
 
428 428
 /*
429 429
  * Bloque les requêtes du type ?GLOBALS[type_urls]=toto (bug vieux php)
430 430
  */
431 431
 if (isset($_REQUEST['GLOBALS'])) {
432
-	$ecran_securite_raison = "GLOBALS[GLOBALS]";
432
+    $ecran_securite_raison = "GLOBALS[GLOBALS]";
433 433
 }
434 434
 
435 435
 /*
@@ -438,14 +438,14 @@  discard block
 block discarded – undo
438 438
  * les paginations entremélées
439 439
  */
440 440
 if (_IS_BOT) {
441
-	if (
442
-		(isset($_REQUEST['echelle']) and isset($_REQUEST['partie_cal']) and isset($_REQUEST['type']))
443
-		or (strpos((string)$_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string)$_SERVER['REQUEST_URI']))
444
-		or (isset($_REQUEST['calendrier_annee']) and strpos((string)$_SERVER['REQUEST_URI'], 'debut_'))
445
-		or (isset($_REQUEST['calendrier_annee']) and preg_match(',[?&]calendrier_annee=.*&calendrier_annee=,', (string)$_SERVER['REQUEST_URI']))
446
-	) {
447
-		$ecran_securite_raison = "robot agenda/double pagination";
448
-	}
441
+    if (
442
+        (isset($_REQUEST['echelle']) and isset($_REQUEST['partie_cal']) and isset($_REQUEST['type']))
443
+        or (strpos((string)$_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string)$_SERVER['REQUEST_URI']))
444
+        or (isset($_REQUEST['calendrier_annee']) and strpos((string)$_SERVER['REQUEST_URI'], 'debut_'))
445
+        or (isset($_REQUEST['calendrier_annee']) and preg_match(',[?&]calendrier_annee=.*&calendrier_annee=,', (string)$_SERVER['REQUEST_URI']))
446
+    ) {
447
+        $ecran_securite_raison = "robot agenda/double pagination";
448
+    }
449 449
 }
450 450
 
451 451
 /*
@@ -453,82 +453,82 @@  discard block
 block discarded – undo
453 453
  * Bloque un XSS sur une page inexistante
454 454
  */
455 455
 if (isset($_REQUEST['page'])) {
456
-	if ($_REQUEST['page'] == 'test_cfg') {
457
-		$ecran_securite_raison = "test_cfg";
458
-	}
459
-	if ($_REQUEST['page'] !== htmlspecialchars((string)$_REQUEST['page'])) {
460
-		$ecran_securite_raison = "xsspage";
461
-	}
462
-	if (
463
-		$_REQUEST['page'] == '404'
464
-		and isset($_REQUEST['erreur'])
465
-	) {
466
-		$ecran_securite_raison = "xss404";
467
-	}
456
+    if ($_REQUEST['page'] == 'test_cfg') {
457
+        $ecran_securite_raison = "test_cfg";
458
+    }
459
+    if ($_REQUEST['page'] !== htmlspecialchars((string)$_REQUEST['page'])) {
460
+        $ecran_securite_raison = "xsspage";
461
+    }
462
+    if (
463
+        $_REQUEST['page'] == '404'
464
+        and isset($_REQUEST['erreur'])
465
+    ) {
466
+        $ecran_securite_raison = "xss404";
467
+    }
468 468
 }
469 469
 
470 470
 /*
471 471
  * XSS par array
472 472
  */
473 473
 foreach (array('var_login') as $var) {
474
-	if (isset($_REQUEST[$var]) and is_array($_REQUEST[$var])) {
475
-		$ecran_securite_raison = "xss " . $var;
476
-	}
474
+    if (isset($_REQUEST[$var]) and is_array($_REQUEST[$var])) {
475
+        $ecran_securite_raison = "xss " . $var;
476
+    }
477 477
 }
478 478
 
479 479
 /*
480 480
  * Parade antivirale contre un cheval de troie
481 481
  */
482 482
 if (!function_exists('tmp_lkojfghx')) {
483
-	function tmp_lkojfghx() {}
484
-	function tmp_lkojfghx2($a = 0, $b = 0, $c = 0, $d = 0) {
485
-		// si jamais on est arrivé ici sur une erreur php
486
-		// et qu'un autre gestionnaire d'erreur est défini, l'appeller
487
-		if ($b && $GLOBALS['tmp_xhgfjokl']) {
488
-			call_user_func($GLOBALS['tmp_xhgfjokl'], $a, $b, $c, $d);
489
-		}
490
-	}
483
+    function tmp_lkojfghx() {}
484
+    function tmp_lkojfghx2($a = 0, $b = 0, $c = 0, $d = 0) {
485
+        // si jamais on est arrivé ici sur une erreur php
486
+        // et qu'un autre gestionnaire d'erreur est défini, l'appeller
487
+        if ($b && $GLOBALS['tmp_xhgfjokl']) {
488
+            call_user_func($GLOBALS['tmp_xhgfjokl'], $a, $b, $c, $d);
489
+        }
490
+    }
491 491
 }
492 492
 if (isset($_POST['tmp_lkojfghx3'])) {
493
-	$ecran_securite_raison = "gumblar";
493
+    $ecran_securite_raison = "gumblar";
494 494
 }
495 495
 
496 496
 /*
497 497
  * Outils XML mal sécurisés < 2.0.9
498 498
  */
499 499
 if (isset($_REQUEST['transformer_xml'])) {
500
-	$ecran_securite_raison = "transformer_xml";
500
+    $ecran_securite_raison = "transformer_xml";
501 501
 }
502 502
 
503 503
 /*
504 504
  * Outils XML mal sécurisés again
505 505
  */
506 506
 if (isset($_REQUEST['var_url']) and $_REQUEST['var_url'] and isset($_REQUEST['exec']) and $_REQUEST['exec'] == 'valider_xml') {
507
-	$url = trim($_REQUEST['var_url']);
508
-	if (
509
-		strncmp($url, '/', 1) == 0
510
-		or (($p = strpos($url, '..')) !== false and strpos($url, '..', $p + 3) !== false)
511
-		or (($p = strpos($url, '..')) !== false and strpos($url, 'IMG', $p + 3) !== false)
512
-		or (strpos($url, '://') !== false or strpos($url, ':\\') !== false)
513
-	) {
514
-		$ecran_securite_raison = 'URL interdite pour var_url';
515
-	}
507
+    $url = trim($_REQUEST['var_url']);
508
+    if (
509
+        strncmp($url, '/', 1) == 0
510
+        or (($p = strpos($url, '..')) !== false and strpos($url, '..', $p + 3) !== false)
511
+        or (($p = strpos($url, '..')) !== false and strpos($url, 'IMG', $p + 3) !== false)
512
+        or (strpos($url, '://') !== false or strpos($url, ':\\') !== false)
513
+    ) {
514
+        $ecran_securite_raison = 'URL interdite pour var_url';
515
+    }
516 516
 }
517 517
 
518 518
 /*
519 519
  * Sauvegarde mal securisée < 2.0.9
520 520
  */
521 521
 if (
522
-	isset($_REQUEST['nom_sauvegarde'])
523
-	and strstr((string)$_REQUEST['nom_sauvegarde'], '/')
522
+    isset($_REQUEST['nom_sauvegarde'])
523
+    and strstr((string)$_REQUEST['nom_sauvegarde'], '/')
524 524
 ) {
525
-	$ecran_securite_raison = 'nom_sauvegarde manipulee';
525
+    $ecran_securite_raison = 'nom_sauvegarde manipulee';
526 526
 }
527 527
 if (
528
-	isset($_REQUEST['znom_sauvegarde'])
529
-	and strstr((string)$_REQUEST['znom_sauvegarde'], '/')
528
+    isset($_REQUEST['znom_sauvegarde'])
529
+    and strstr((string)$_REQUEST['znom_sauvegarde'], '/')
530 530
 ) {
531
-	$ecran_securite_raison = 'znom_sauvegarde manipulee';
531
+    $ecran_securite_raison = 'znom_sauvegarde manipulee';
532 532
 }
533 533
 
534 534
 
@@ -537,57 +537,57 @@  discard block
 block discarded – undo
537 537
  * on vérifie 'page' pour ne pas bloquer ... drupal
538 538
  */
539 539
 if (
540
-	isset($_REQUEST['op']) and isset($_REQUEST['page'])
541
-	and $_REQUEST['op'] !== preg_replace('/[^\\-\w]/', '', $_REQUEST['op'])
540
+    isset($_REQUEST['op']) and isset($_REQUEST['page'])
541
+    and $_REQUEST['op'] !== preg_replace('/[^\\-\w]/', '', $_REQUEST['op'])
542 542
 ) {
543
-	$ecran_securite_raison = 'op';
543
+    $ecran_securite_raison = 'op';
544 544
 }
545 545
 
546 546
 /*
547 547
  * Forms & Table ne se méfiait pas assez des uploads de fichiers
548 548
  */
549 549
 if (count($_FILES)) {
550
-	foreach ($_FILES as $k => $v) {
551
-		if (
552
-			preg_match(',^fichier_\d+$,', $k)
553
-			and preg_match(',\.php,i', $v['name'])
554
-		) {
555
-			unset($_FILES[$k]);
556
-		}
557
-	}
550
+    foreach ($_FILES as $k => $v) {
551
+        if (
552
+            preg_match(',^fichier_\d+$,', $k)
553
+            and preg_match(',\.php,i', $v['name'])
554
+        ) {
555
+            unset($_FILES[$k]);
556
+        }
557
+    }
558 558
 }
559 559
 /*
560 560
  * et Contact trop laxiste avec une variable externe
561 561
  * on bloque pas le post pour eviter de perdre des donnees mais on unset la variable et c'est tout
562 562
  */
563 563
 if (isset($_REQUEST['pj_enregistrees_nom']) and $_REQUEST['pj_enregistrees_nom']) {
564
-	unset($_REQUEST['pj_enregistrees_nom']);
565
-	unset($_GET['pj_enregistrees_nom']);
566
-	unset($_POST['pj_enregistrees_nom']);
564
+    unset($_REQUEST['pj_enregistrees_nom']);
565
+    unset($_GET['pj_enregistrees_nom']);
566
+    unset($_POST['pj_enregistrees_nom']);
567 567
 }
568 568
 
569 569
 /*
570 570
  * reinstall=oui un peu trop permissif
571 571
  */
572 572
 if (
573
-	isset($_REQUEST['reinstall'])
574
-	and $_REQUEST['reinstall'] == 'oui'
573
+    isset($_REQUEST['reinstall'])
574
+    and $_REQUEST['reinstall'] == 'oui'
575 575
 ) {
576
-	$ecran_securite_raison = 'reinstall=oui';
576
+    $ecran_securite_raison = 'reinstall=oui';
577 577
 }
578 578
 
579 579
 /*
580 580
  * Pas d'action pendant l'install
581 581
  */
582 582
 if (isset($_REQUEST['exec']) and $_REQUEST['exec'] === 'install' and isset($_REQUEST['action'])) {
583
-	$ecran_securite_raison = 'install&action impossibles';
583
+    $ecran_securite_raison = 'install&action impossibles';
584 584
 }
585 585
 
586 586
 /*
587 587
  * Échappement xss referer
588 588
  */
589 589
 if (isset($_SERVER['HTTP_REFERER'])) {
590
-	$_SERVER['HTTP_REFERER'] = strtr($_SERVER['HTTP_REFERER'], '<>"\'', '[]##');
590
+    $_SERVER['HTTP_REFERER'] = strtr($_SERVER['HTTP_REFERER'], '<>"\'', '[]##');
591 591
 }
592 592
 
593 593
 
@@ -595,7 +595,7 @@  discard block
 block discarded – undo
595 595
  * Echappement HTTP_X_FORWARDED_HOST
596 596
  */
597 597
 if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
598
-	$_SERVER['HTTP_X_FORWARDED_HOST'] = strtr($_SERVER['HTTP_X_FORWARDED_HOST'], "<>?\"\{\}\$'` \r\n", '____________');
598
+    $_SERVER['HTTP_X_FORWARDED_HOST'] = strtr($_SERVER['HTTP_X_FORWARDED_HOST'], "<>?\"\{\}\$'` \r\n", '____________');
599 599
 }
600 600
 
601 601
 
@@ -603,9 +603,9 @@  discard block
 block discarded – undo
603 603
  * Pas d'erreur dans l'erreur
604 604
  */
605 605
 if (isset($_REQUEST['var_erreur']) and isset($_REQUEST['page']) and $_REQUEST['page'] === 'login') {
606
-	if (strlen($_REQUEST['var_erreur']) !== strcspn($_REQUEST['var_erreur'], '<>')) {
607
-		$ecran_securite_raison = 'var_erreur incorrecte';
608
-	}
606
+    if (strlen($_REQUEST['var_erreur']) !== strcspn($_REQUEST['var_erreur'], '<>')) {
607
+        $ecran_securite_raison = 'var_erreur incorrecte';
608
+    }
609 609
 }
610 610
 
611 611
 
@@ -613,30 +613,30 @@  discard block
 block discarded – undo
613 613
  * Réinjection des clés en html dans l'admin r19561
614 614
  */
615 615
 if (
616
-	(isset($_SERVER['REQUEST_URI']) and strpos($_SERVER['REQUEST_URI'], "ecrire/") !== false)
617
-	or isset($_REQUEST['var_memotri'])
616
+    (isset($_SERVER['REQUEST_URI']) and strpos($_SERVER['REQUEST_URI'], "ecrire/") !== false)
617
+    or isset($_REQUEST['var_memotri'])
618 618
 ) {
619
-	$zzzz = implode("", array_keys($_REQUEST));
620
-	if (strlen($zzzz) != strcspn($zzzz, '<>"\'')) {
621
-		$ecran_securite_raison = 'Cle incorrecte en $_REQUEST';
622
-	}
619
+    $zzzz = implode("", array_keys($_REQUEST));
620
+    if (strlen($zzzz) != strcspn($zzzz, '<>"\'')) {
621
+        $ecran_securite_raison = 'Cle incorrecte en $_REQUEST';
622
+    }
623 623
 }
624 624
 
625 625
 /*
626 626
  * Injection par connect
627 627
  */
628 628
 if (
629
-	isset($_REQUEST['connect'])
630
-	// cas qui permettent de sortir d'un commentaire PHP
631
-	and (
632
-		strpos($_REQUEST['connect'], "?") !== false
633
-		or strpos($_REQUEST['connect'], "<") !== false
634
-		or strpos($_REQUEST['connect'], ">") !== false
635
-		or strpos($_REQUEST['connect'], "\n") !== false
636
-		or strpos($_REQUEST['connect'], "\r") !== false
637
-	)
629
+    isset($_REQUEST['connect'])
630
+    // cas qui permettent de sortir d'un commentaire PHP
631
+    and (
632
+        strpos($_REQUEST['connect'], "?") !== false
633
+        or strpos($_REQUEST['connect'], "<") !== false
634
+        or strpos($_REQUEST['connect'], ">") !== false
635
+        or strpos($_REQUEST['connect'], "\n") !== false
636
+        or strpos($_REQUEST['connect'], "\r") !== false
637
+    )
638 638
 ) {
639
-	$ecran_securite_raison = "malformed connect argument";
639
+    $ecran_securite_raison = "malformed connect argument";
640 640
 }
641 641
 
642 642
 
@@ -644,73 +644,73 @@  discard block
 block discarded – undo
644 644
  * _oups donc
645 645
  */
646 646
 if (
647
-	isset($_REQUEST['_oups'])
648
-	and base64_decode($_REQUEST['_oups'], true) === false) {
649
-	$ecran_securite_raison = "malformed _oups argument";
647
+    isset($_REQUEST['_oups'])
648
+    and base64_decode($_REQUEST['_oups'], true) === false) {
649
+    $ecran_securite_raison = "malformed _oups argument";
650 650
 }
651 651
 
652 652
 if (
653
-	isset($_REQUEST['formulaire_action_args'])
653
+    isset($_REQUEST['formulaire_action_args'])
654 654
 ) {
655
-	foreach ($_REQUEST as $k => $v) {
656
-		if (is_string($v)
657
-		  and strpbrk($v, "&\"'<>") !== false
658
-		  and preg_match(',^[abis]:\d+[:;],', $v)
659
-		  and __ecran_test_if_serialized($v)
660
-		) {
661
-			$_REQUEST[$k] = htmlspecialchars($v, ENT_QUOTES);
662
-			if (isset($_POST[$k])) $_POST[$k] = $_REQUEST[$k];
663
-			if (isset($_GET[$k])) $_GET[$k] = $_REQUEST[$k];
664
-		}
665
-	}
655
+    foreach ($_REQUEST as $k => $v) {
656
+        if (is_string($v)
657
+          and strpbrk($v, "&\"'<>") !== false
658
+          and preg_match(',^[abis]:\d+[:;],', $v)
659
+          and __ecran_test_if_serialized($v)
660
+        ) {
661
+            $_REQUEST[$k] = htmlspecialchars($v, ENT_QUOTES);
662
+            if (isset($_POST[$k])) $_POST[$k] = $_REQUEST[$k];
663
+            if (isset($_GET[$k])) $_GET[$k] = $_REQUEST[$k];
664
+        }
665
+    }
666 666
 }
667 667
 /**
668 668
  * Version simplifiée de https://developer.wordpress.org/reference/functions/is_serialized/
669 669
  */
670 670
 function __ecran_test_if_serialized($data) {
671
-	$data = trim($data);
672
-	if ('N;' === $data) {return true;}
673
-	if (strlen($data) < 4) {return false;}
674
-	if (':' !== $data[1]) {return false;}
675
-	$semicolon = strpos($data, ';');
676
-	$brace = strpos($data, '}');
677
-	// Either ; or } must exist.
678
-	if (false === $semicolon && false === $brace) {return false;}
679
-	// But neither must be in the first X characters.
680
-	if (false !== $semicolon && $semicolon < 3) {return false;}
681
-	if (false !== $brace && $brace < 4) {return false;}
682
-	$token = $data[0];
683
-	if (in_array($token, array('s', 'S'))) {
684
-		if (false === strpos($data, '"')) {return false;}
685
-	} elseif (in_array($token, array('a', 'O', 'C', 'o', 'E'))) {
686
-		return (bool)preg_match("/^{$token}:[0-9]+:/s", $data);
687
-	} elseif (in_array($token, array('b', 'i', 'd'))) {
688
-		return (bool)preg_match("/^{$token}:[0-9.E+-]+;/", $data);
689
-	}
690
-	return false;
671
+    $data = trim($data);
672
+    if ('N;' === $data) {return true;}
673
+    if (strlen($data) < 4) {return false;}
674
+    if (':' !== $data[1]) {return false;}
675
+    $semicolon = strpos($data, ';');
676
+    $brace = strpos($data, '}');
677
+    // Either ; or } must exist.
678
+    if (false === $semicolon && false === $brace) {return false;}
679
+    // But neither must be in the first X characters.
680
+    if (false !== $semicolon && $semicolon < 3) {return false;}
681
+    if (false !== $brace && $brace < 4) {return false;}
682
+    $token = $data[0];
683
+    if (in_array($token, array('s', 'S'))) {
684
+        if (false === strpos($data, '"')) {return false;}
685
+    } elseif (in_array($token, array('a', 'O', 'C', 'o', 'E'))) {
686
+        return (bool)preg_match("/^{$token}:[0-9]+:/s", $data);
687
+    } elseif (in_array($token, array('b', 'i', 'd'))) {
688
+        return (bool)preg_match("/^{$token}:[0-9.E+-]+;/", $data);
689
+    }
690
+    return false;
691 691
 }
692 692
 
693 693
 /*
694 694
  * S'il y a une raison de mourir, mourons
695 695
  */
696 696
 if (isset($ecran_securite_raison)) {
697
-	header("HTTP/1.0 403 Forbidden");
698
-	header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
699
-	header("Cache-Control: no-cache, must-revalidate");
700
-	header("Pragma: no-cache");
701
-	header("Content-Type: text/html");
702
-	header("Connection: close");
703
-	die("<html><title>Error 403: Forbidden</title><body><h1>Error 403</h1><p>You are not authorized to view this page ($ecran_securite_raison)</p></body></html>");
697
+    header("HTTP/1.0 403 Forbidden");
698
+    header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
699
+    header("Cache-Control: no-cache, must-revalidate");
700
+    header("Pragma: no-cache");
701
+    header("Content-Type: text/html");
702
+    header("Connection: close");
703
+    die("<html><title>Error 403: Forbidden</title><body><h1>Error 403</h1><p>You are not authorized to view this page ($ecran_securite_raison)</p></body></html>");
704 704
 }
705 705
 
706 706
 /*
707 707
  * Un filtre filtrer_entites securise
708 708
  */
709 709
 if (!function_exists('filtre_filtrer_entites_dist')) {
710
-	function filtre_filtrer_entites_dist($t) {
711
-		include_spip('inc/texte');
712
-		return interdire_scripts(filtrer_entites($t));
713
-	}
710
+    function filtre_filtrer_entites_dist($t) {
711
+        include_spip('inc/texte');
712
+        return interdire_scripts(filtrer_entites($t));
713
+    }
714 714
 }
715 715
 
716 716
 
@@ -724,35 +724,35 @@  discard block
 block discarded – undo
724 724
  * Bloque les bots quand le load déborde
725 725
  */
726 726
 if (!defined('_ECRAN_SECURITE_LOAD')) {
727
-	define('_ECRAN_SECURITE_LOAD', 4);
727
+    define('_ECRAN_SECURITE_LOAD', 4);
728 728
 }
729 729
 
730 730
 if (
731
-	defined('_ECRAN_SECURITE_LOAD')
732
-	and _ECRAN_SECURITE_LOAD > 0
733
-	and _IS_BOT
734
-	and !_IS_BOT_FRIEND
735
-	and $_SERVER['REQUEST_METHOD'] === 'GET'
736
-	and (
737
-		(function_exists('sys_getloadavg')
738
-			and $load = sys_getloadavg()
739
-			and is_array($load)
740
-			and $load = array_shift($load))
741
-		or
742
-		(@is_readable('/proc/loadavg')
743
-			and $load = file_get_contents('/proc/loadavg')
744
-			and $load = floatval($load))
745
-	)
746
-	and $load > _ECRAN_SECURITE_LOAD // eviter l'evaluation suivante si de toute facon le load est inferieur a la limite
747
-	and rand(0, (int) ($load * $load)) > _ECRAN_SECURITE_LOAD * _ECRAN_SECURITE_LOAD
731
+    defined('_ECRAN_SECURITE_LOAD')
732
+    and _ECRAN_SECURITE_LOAD > 0
733
+    and _IS_BOT
734
+    and !_IS_BOT_FRIEND
735
+    and $_SERVER['REQUEST_METHOD'] === 'GET'
736
+    and (
737
+        (function_exists('sys_getloadavg')
738
+            and $load = sys_getloadavg()
739
+            and is_array($load)
740
+            and $load = array_shift($load))
741
+        or
742
+        (@is_readable('/proc/loadavg')
743
+            and $load = file_get_contents('/proc/loadavg')
744
+            and $load = floatval($load))
745
+    )
746
+    and $load > _ECRAN_SECURITE_LOAD // eviter l'evaluation suivante si de toute facon le load est inferieur a la limite
747
+    and rand(0, (int) ($load * $load)) > _ECRAN_SECURITE_LOAD * _ECRAN_SECURITE_LOAD
748 748
 ) {
749
-	//https://webmasters.stackexchange.com/questions/65674/should-i-return-a-429-or-503-status-code-to-a-bot
750
-	header("HTTP/1.0 429 Too Many Requests");
751
-	header("Retry-After: 300");
752
-	header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
753
-	header("Cache-Control: no-cache, must-revalidate");
754
-	header("Pragma: no-cache");
755
-	header("Content-Type: text/html");
756
-	header("Connection: close");
757
-	die("<html><title>Status 429: Too Many Requests</title><body><h1>Status 429</h1><p>Too Many Requests (try again soon)</p></body></html>");
749
+    //https://webmasters.stackexchange.com/questions/65674/should-i-return-a-429-or-503-status-code-to-a-bot
750
+    header("HTTP/1.0 429 Too Many Requests");
751
+    header("Retry-After: 300");
752
+    header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
753
+    header("Cache-Control: no-cache, must-revalidate");
754
+    header("Pragma: no-cache");
755
+    header("Content-Type: text/html");
756
+    header("Connection: close");
757
+    die("<html><title>Status 429: Too Many Requests</title><body><h1>Status 429</h1><p>Too Many Requests (try again soon)</p></body></html>");
758 758
 }
Please login to merge, or discard this patch.
Spacing   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -15,10 +15,10 @@  discard block
 block discarded – undo
15 15
  * Test utilisateur
16 16
  */
17 17
 if (isset($_GET['test_ecran_securite'])) {
18
-	$ecran_securite_raison = 'test ' . _ECRAN_SECURITE;
18
+	$ecran_securite_raison = 'test '._ECRAN_SECURITE;
19 19
 }
20 20
 
21
-if (file_exists($f = __DIR__ . DIRECTORY_SEPARATOR  . 'ecran_securite_options.php')) {
21
+if (file_exists($f = __DIR__.DIRECTORY_SEPARATOR.'ecran_securite_options.php')) {
22 22
 	include ($f);
23 23
 }
24 24
 
@@ -226,8 +226,8 @@  discard block
 block discarded – undo
226 226
 						'yats',
227 227
 						'yeti',
228 228
 						'zeerch'
229
-					)) . ',i',
230
-				(string)$_SERVER['HTTP_USER_AGENT']
229
+					)).',i',
230
+				(string) $_SERVER['HTTP_USER_AGENT']
231 231
 			)
232 232
 	);
233 233
 }
@@ -236,13 +236,13 @@  discard block
 block discarded – undo
236 236
 		'_IS_BOT_FRIEND',
237 237
 		isset($_SERVER['HTTP_USER_AGENT'])
238 238
 			and preg_match(
239
-				',' . implode('|', array(
239
+				','.implode('|', array(
240 240
 					'facebookexternalhit',
241 241
 					'twitterbot',
242 242
 					'flipboardproxy',
243 243
 					'wordpress'
244
-				)) . ',i',
245
-				(string)$_SERVER['HTTP_USER_AGENT']
244
+				)).',i',
245
+				(string) $_SERVER['HTTP_USER_AGENT']
246 246
 			)
247 247
 	);
248 248
 }
@@ -291,10 +291,10 @@  discard block
 block discarded – undo
291 291
  */
292 292
 foreach (array('lang', 'var_recherche', 'aide', 'var_lang_r', 'lang_r', 'var_ajax_ancre', 'nom_fichier') as $var) {
293 293
 	if (isset($_GET[$var])) {
294
-		$_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_GET[$var]);
294
+		$_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string) $_GET[$var]);
295 295
 	}
296 296
 	if (isset($_POST[$var])) {
297
-		$_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_POST[$var]);
297
+		$_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string) $_POST[$var]);
298 298
 	}
299 299
 }
300 300
 
@@ -302,8 +302,8 @@  discard block
 block discarded – undo
302 302
  * Filtre l'accès à spip_acces_doc (injection SQL en 1.8.2x)
303 303
  */
304 304
 if (isset($_SERVER['REQUEST_URI'])) {
305
-	if (preg_match(',^(.*/)?spip_acces_doc\.,', (string)$_SERVER['REQUEST_URI'])) {
306
-		$file = addslashes((string)$_GET['file']);
305
+	if (preg_match(',^(.*/)?spip_acces_doc\.,', (string) $_SERVER['REQUEST_URI'])) {
306
+		$file = addslashes((string) $_GET['file']);
307 307
 	}
308 308
 }
309 309
 
@@ -323,13 +323,13 @@  discard block
 block discarded – undo
323 323
  */
324 324
 if (
325 325
 	isset($_REQUEST['partie_cal'])
326
-	and $_REQUEST['partie_cal'] !== htmlentities((string)$_REQUEST['partie_cal'])
326
+	and $_REQUEST['partie_cal'] !== htmlentities((string) $_REQUEST['partie_cal'])
327 327
 ) {
328 328
 	$ecran_securite_raison = "partie_cal";
329 329
 }
330 330
 if (
331 331
 	isset($_REQUEST['echelle'])
332
-	and $_REQUEST['echelle'] !== htmlentities((string)$_REQUEST['echelle'])
332
+	and $_REQUEST['echelle'] !== htmlentities((string) $_REQUEST['echelle'])
333 333
 ) {
334 334
 	$ecran_securite_raison = "echelle";
335 335
 }
@@ -339,13 +339,13 @@  discard block
 block discarded – undo
339 339
  */
340 340
 if (
341 341
 	isset($_REQUEST['exec'])
342
-	and !preg_match(',^[\w-]+$,', (string)$_REQUEST['exec'])
342
+	and !preg_match(',^[\w-]+$,', (string) $_REQUEST['exec'])
343 343
 ) {
344 344
 	$ecran_securite_raison = "exec";
345 345
 }
346 346
 if (
347 347
 	isset($_REQUEST['cherche_auteur'])
348
-	and preg_match(',[<],', (string)$_REQUEST['cherche_auteur'])
348
+	and preg_match(',[<],', (string) $_REQUEST['cherche_auteur'])
349 349
 ) {
350 350
 	$ecran_securite_raison = "cherche_auteur";
351 351
 }
@@ -353,7 +353,7 @@  discard block
 block discarded – undo
353 353
 	isset($_REQUEST['exec'])
354 354
 	and $_REQUEST['exec'] == 'auteurs'
355 355
 	and isset($_REQUEST['recherche'])
356
-	and preg_match(',[<],', (string)$_REQUEST['recherche'])
356
+	and preg_match(',[<],', (string) $_REQUEST['recherche'])
357 357
 ) {
358 358
 	$ecran_securite_raison = "recherche";
359 359
 }
@@ -361,7 +361,7 @@  discard block
 block discarded – undo
361 361
 	isset($_REQUEST['exec'])
362 362
 	and $_REQUEST['exec'] == 'info_plugin'
363 363
 	and isset($_REQUEST['plugin'])
364
-	and preg_match(',[<],', (string)$_REQUEST['plugin'])
364
+	and preg_match(',[<],', (string) $_REQUEST['plugin'])
365 365
 ) {
366 366
 	$ecran_securite_raison = "plugin";
367 367
 }
@@ -388,7 +388,7 @@  discard block
 block discarded – undo
388 388
 				echo minipres(_T('info_acces_interdit'));
389 389
 				exit;
390 390
 			}
391
-			require _DIR_RESTREINT . 'action/configurer.php';
391
+			require _DIR_RESTREINT.'action/configurer.php';
392 392
 			action_configurer_dist();
393 393
 		}
394 394
 	}
@@ -440,9 +440,9 @@  discard block
 block discarded – undo
440 440
 if (_IS_BOT) {
441 441
 	if (
442 442
 		(isset($_REQUEST['echelle']) and isset($_REQUEST['partie_cal']) and isset($_REQUEST['type']))
443
-		or (strpos((string)$_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string)$_SERVER['REQUEST_URI']))
444
-		or (isset($_REQUEST['calendrier_annee']) and strpos((string)$_SERVER['REQUEST_URI'], 'debut_'))
445
-		or (isset($_REQUEST['calendrier_annee']) and preg_match(',[?&]calendrier_annee=.*&calendrier_annee=,', (string)$_SERVER['REQUEST_URI']))
443
+		or (strpos((string) $_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string) $_SERVER['REQUEST_URI']))
444
+		or (isset($_REQUEST['calendrier_annee']) and strpos((string) $_SERVER['REQUEST_URI'], 'debut_'))
445
+		or (isset($_REQUEST['calendrier_annee']) and preg_match(',[?&]calendrier_annee=.*&calendrier_annee=,', (string) $_SERVER['REQUEST_URI']))
446 446
 	) {
447 447
 		$ecran_securite_raison = "robot agenda/double pagination";
448 448
 	}
@@ -456,7 +456,7 @@  discard block
 block discarded – undo
456 456
 	if ($_REQUEST['page'] == 'test_cfg') {
457 457
 		$ecran_securite_raison = "test_cfg";
458 458
 	}
459
-	if ($_REQUEST['page'] !== htmlspecialchars((string)$_REQUEST['page'])) {
459
+	if ($_REQUEST['page'] !== htmlspecialchars((string) $_REQUEST['page'])) {
460 460
 		$ecran_securite_raison = "xsspage";
461 461
 	}
462 462
 	if (
@@ -472,7 +472,7 @@  discard block
 block discarded – undo
472 472
  */
473 473
 foreach (array('var_login') as $var) {
474 474
 	if (isset($_REQUEST[$var]) and is_array($_REQUEST[$var])) {
475
-		$ecran_securite_raison = "xss " . $var;
475
+		$ecran_securite_raison = "xss ".$var;
476 476
 	}
477 477
 }
478 478
 
@@ -520,13 +520,13 @@  discard block
 block discarded – undo
520 520
  */
521 521
 if (
522 522
 	isset($_REQUEST['nom_sauvegarde'])
523
-	and strstr((string)$_REQUEST['nom_sauvegarde'], '/')
523
+	and strstr((string) $_REQUEST['nom_sauvegarde'], '/')
524 524
 ) {
525 525
 	$ecran_securite_raison = 'nom_sauvegarde manipulee';
526 526
 }
527 527
 if (
528 528
 	isset($_REQUEST['znom_sauvegarde'])
529
-	and strstr((string)$_REQUEST['znom_sauvegarde'], '/')
529
+	and strstr((string) $_REQUEST['znom_sauvegarde'], '/')
530 530
 ) {
531 531
 	$ecran_securite_raison = 'znom_sauvegarde manipulee';
532 532
 }
@@ -669,23 +669,23 @@  discard block
 block discarded – undo
669 669
  */
670 670
 function __ecran_test_if_serialized($data) {
671 671
 	$data = trim($data);
672
-	if ('N;' === $data) {return true;}
673
-	if (strlen($data) < 4) {return false;}
674
-	if (':' !== $data[1]) {return false;}
672
+	if ('N;' === $data) {return true; }
673
+	if (strlen($data) < 4) {return false; }
674
+	if (':' !== $data[1]) {return false; }
675 675
 	$semicolon = strpos($data, ';');
676 676
 	$brace = strpos($data, '}');
677 677
 	// Either ; or } must exist.
678
-	if (false === $semicolon && false === $brace) {return false;}
678
+	if (false === $semicolon && false === $brace) {return false; }
679 679
 	// But neither must be in the first X characters.
680
-	if (false !== $semicolon && $semicolon < 3) {return false;}
681
-	if (false !== $brace && $brace < 4) {return false;}
680
+	if (false !== $semicolon && $semicolon < 3) {return false; }
681
+	if (false !== $brace && $brace < 4) {return false; }
682 682
 	$token = $data[0];
683 683
 	if (in_array($token, array('s', 'S'))) {
684
-		if (false === strpos($data, '"')) {return false;}
684
+		if (false === strpos($data, '"')) {return false; }
685 685
 	} elseif (in_array($token, array('a', 'O', 'C', 'o', 'E'))) {
686
-		return (bool)preg_match("/^{$token}:[0-9]+:/s", $data);
686
+		return (bool) preg_match("/^{$token}:[0-9]+:/s", $data);
687 687
 	} elseif (in_array($token, array('b', 'i', 'd'))) {
688
-		return (bool)preg_match("/^{$token}:[0-9.E+-]+;/", $data);
688
+		return (bool) preg_match("/^{$token}:[0-9.E+-]+;/", $data);
689 689
 	}
690 690
 	return false;
691 691
 }
Please login to merge, or discard this patch.
Braces   +6 added lines, -2 removed lines patch added patch discarded remove patch
@@ -659,8 +659,12 @@
 block discarded – undo
659 659
 		  and __ecran_test_if_serialized($v)
660 660
 		) {
661 661
 			$_REQUEST[$k] = htmlspecialchars($v, ENT_QUOTES);
662
-			if (isset($_POST[$k])) $_POST[$k] = $_REQUEST[$k];
663
-			if (isset($_GET[$k])) $_GET[$k] = $_REQUEST[$k];
662
+			if (isset($_POST[$k])) {
663
+			    $_POST[$k] = $_REQUEST[$k];
664
+			}
665
+			if (isset($_GET[$k])) {
666
+			    $_GET[$k] = $_REQUEST[$k];
667
+			}
664 668
 		}
665 669
 	}
666 670
 }
Please login to merge, or discard this patch.
ecrire/inc_version.php 2 patches
Indentation   +214 added lines, -214 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -36,15 +36,15 @@  discard block
 block discarded – undo
36 36
 define('_PHP_MAX', '8.2.99');
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
44 44
  *  vide si on est dans ecrire, 'ecrire/' sinon */
45 45
 define(
46
-	'_DIR_RESTREINT',
47
-	(!is_dir(_DIR_RESTREINT_ABS) ? '' : _DIR_RESTREINT_ABS)
46
+    '_DIR_RESTREINT',
47
+    (!is_dir(_DIR_RESTREINT_ABS) ? '' : _DIR_RESTREINT_ABS)
48 48
 );
49 49
 
50 50
 /** Chemin relatif pour aller à la racine */
@@ -61,28 +61,28 @@  discard block
 block discarded – undo
61 61
 # Par defaut ces 4 noms seront suffixes par _DIR_RACINE (cf plus bas)
62 62
 # mais on peut les mettre ailleurs et changer completement les noms
63 63
 if (!defined('_NOM_TEMPORAIRES_INACCESSIBLES')) {
64
-	/** Nom du repertoire des fichiers Temporaires Inaccessibles par http:// */
65
-	define('_NOM_TEMPORAIRES_INACCESSIBLES', 'tmp/');
64
+    /** Nom du repertoire des fichiers Temporaires Inaccessibles par http:// */
65
+    define('_NOM_TEMPORAIRES_INACCESSIBLES', 'tmp/');
66 66
 }
67 67
 if (!defined('_NOM_TEMPORAIRES_ACCESSIBLES')) {
68
-	/** Nom du repertoire des fichiers Temporaires Accessibles par http:// */
69
-	define('_NOM_TEMPORAIRES_ACCESSIBLES', 'local/');
68
+    /** Nom du repertoire des fichiers Temporaires Accessibles par http:// */
69
+    define('_NOM_TEMPORAIRES_ACCESSIBLES', 'local/');
70 70
 }
71 71
 if (!defined('_NOM_PERMANENTS_INACCESSIBLES')) {
72
-	/** Nom du repertoire des fichiers Permanents Inaccessibles par http:// */
73
-	define('_NOM_PERMANENTS_INACCESSIBLES', 'config/');
72
+    /** Nom du repertoire des fichiers Permanents Inaccessibles par http:// */
73
+    define('_NOM_PERMANENTS_INACCESSIBLES', 'config/');
74 74
 }
75 75
 if (!defined('_NOM_PERMANENTS_ACCESSIBLES')) {
76
-	/** Nom du repertoire des fichiers Permanents Accessibles par http:// */
77
-	define('_NOM_PERMANENTS_ACCESSIBLES', 'IMG/');
76
+    /** Nom du repertoire des fichiers Permanents Accessibles par http:// */
77
+    define('_NOM_PERMANENTS_ACCESSIBLES', 'IMG/');
78 78
 }
79 79
 
80 80
 // inclure l'ecran de securite si il n'a pas été inclus en prepend php
81 81
 if (
82
-	!defined('_ECRAN_SECURITE')
83
-	and @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_securite.php')
82
+    !defined('_ECRAN_SECURITE')
83
+    and @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_securite.php')
84 84
 ) {
85
-	include $f;
85
+    include $f;
86 86
 }
87 87
 
88 88
 // et on peut lancer l'autoloader
@@ -90,8 +90,8 @@  discard block
 block discarded – undo
90 90
 
91 91
 // Icones
92 92
 if (!defined('_NOM_IMG_PACK')) {
93
-	/** Nom du dossier images */
94
-	define('_NOM_IMG_PACK', 'images/');
93
+    /** Nom du dossier images */
94
+    define('_NOM_IMG_PACK', 'images/');
95 95
 }
96 96
 /** le chemin http (relatif) vers les images standard */
97 97
 define('_DIR_IMG_PACK', (_DIR_RACINE . 'prive/' . _NOM_IMG_PACK));
@@ -100,8 +100,8 @@  discard block
 block discarded – undo
100 100
 define('_ROOT_IMG_PACK', dirname(__DIR__) . '/prive/' . _NOM_IMG_PACK);
101 101
 
102 102
 if (!defined('_JAVASCRIPT')) {
103
-	/** Nom du repertoire des  bibliotheques JavaScript */
104
-	define('_JAVASCRIPT', 'javascript/');
103
+    /** Nom du repertoire des  bibliotheques JavaScript */
104
+    define('_JAVASCRIPT', 'javascript/');
105 105
 } // utilisable avec #CHEMIN et find_in_path
106 106
 /** le nom du repertoire des  bibliotheques JavaScript du prive */
107 107
 define('_DIR_JAVASCRIPT', (_DIR_RACINE . 'prive/' . _JAVASCRIPT));
@@ -109,28 +109,28 @@  discard block
 block discarded – undo
109 109
 
110 110
 /** Le nom du fichier de personnalisation */
111 111
 if (!defined('_NOM_CONFIG')) {
112
-	define('_NOM_CONFIG', 'mes_options');
112
+    define('_NOM_CONFIG', 'mes_options');
113 113
 }
114 114
 
115 115
 // Son emplacement absolu si on le trouve
116 116
 if (
117
-	@file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php')
118
-	or (@file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . '.php'))
117
+    @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php')
118
+    or (@file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . '.php'))
119 119
 ) {
120
-	/** Emplacement absolu du fichier d'option */
121
-	define('_FILE_OPTIONS', $f);
120
+    /** Emplacement absolu du fichier d'option */
121
+    define('_FILE_OPTIONS', $f);
122 122
 } else {
123
-	define('_FILE_OPTIONS', '');
123
+    define('_FILE_OPTIONS', '');
124 124
 }
125 125
 
126 126
 if (!defined('MODULES_IDIOMES')) {
127
-	/**
128
-	 * Modules par défaut pour la traduction.
129
-	 *
130
-	 * Constante utilisée par le compilateur et le décompilateur
131
-	 * sa valeur etant traitée par inc_traduire_dist
132
-	 */
133
-	define('MODULES_IDIOMES', 'public|spip|ecrire');
127
+    /**
128
+     * Modules par défaut pour la traduction.
129
+     *
130
+     * Constante utilisée par le compilateur et le décompilateur
131
+     * sa valeur etant traitée par inc_traduire_dist
132
+     */
133
+    define('MODULES_IDIOMES', 'public|spip|ecrire');
134 134
 }
135 135
 
136 136
 // *** Fin des define *** //
@@ -140,30 +140,30 @@  discard block
 block discarded – undo
140 140
  * Détecteur de robot d'indexation
141 141
  */
142 142
 if (!defined('_IS_BOT')) {
143
-	define(
144
-		'_IS_BOT',
145
-		isset($_SERVER['HTTP_USER_AGENT'])
146
-		and preg_match(
147
-			// mots generiques
148
-			',bot|slurp|crawler|spider|webvac|yandex|'
149
-			// MSIE 6.0 est un botnet 99,9% du temps, on traite donc ce USER_AGENT comme un bot
150
-			. 'MSIE 6\.0|'
151
-			// UA plus cibles
152
-			. '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'
153
-			. ',i',
154
-			(string)$_SERVER['HTTP_USER_AGENT']
155
-		)
156
-	);
143
+    define(
144
+        '_IS_BOT',
145
+        isset($_SERVER['HTTP_USER_AGENT'])
146
+        and preg_match(
147
+            // mots generiques
148
+            ',bot|slurp|crawler|spider|webvac|yandex|'
149
+            // MSIE 6.0 est un botnet 99,9% du temps, on traite donc ce USER_AGENT comme un bot
150
+            . 'MSIE 6\.0|'
151
+            // UA plus cibles
152
+            . '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'
153
+            . ',i',
154
+            (string)$_SERVER['HTTP_USER_AGENT']
155
+        )
156
+    );
157 157
 }
158 158
 
159 159
 if (!defined('_IS_CLI')) {
160
-	define(
161
-		'_IS_CLI',
162
-		!isset($_SERVER['HTTP_HOST'])
163
-		and !strlen($_SERVER['DOCUMENT_ROOT'])
164
-		and !empty($_SERVER['argv'])
165
-		and empty($_SERVER['REQUEST_METHOD'])
166
-	);
160
+    define(
161
+        '_IS_CLI',
162
+        !isset($_SERVER['HTTP_HOST'])
163
+        and !strlen($_SERVER['DOCUMENT_ROOT'])
164
+        and !empty($_SERVER['argv'])
165
+        and empty($_SERVER['REQUEST_METHOD'])
166
+    );
167 167
 }
168 168
 
169 169
 // *** Parametrage par defaut de SPIP ***
@@ -175,61 +175,61 @@  discard block
 block discarded – undo
175 175
 // Ne pas les rendre indefinies.
176 176
 
177 177
 global
178
-	$nombre_de_logs,
179
-	$taille_des_logs,
180
-	$table_prefix,
181
-	$cookie_prefix,
182
-	$dossier_squelettes,
183
-	$filtrer_javascript,
184
-	$type_urls,
185
-	$debut_date_publication,
186
-	$ip,
187
-	$mysql_rappel_connexion,
188
-	$mysql_rappel_nom_base,
189
-	$test_i18n,
190
-	$ignore_auth_http,
191
-	$ignore_remote_user,
192
-	$derniere_modif_invalide,
193
-	$home_server,
194
-	$help_server,
195
-	$url_glossaire_externe,
196
-	$tex_server,
197
-	$traiter_math,
198
-	$xhtml,
199
-	$xml_indent,
200
-	$source_vignettes,
201
-	$formats_logos,
202
-	$controler_dates_rss,
203
-	$spip_pipeline,
204
-	$spip_matrice,
205
-	$plugins,
206
-	$surcharges,
207
-	$exceptions_des_tables,
208
-	$tables_principales,
209
-	$table_des_tables,
210
-	$tables_auxiliaires,
211
-	$table_primary,
212
-	$table_date,
213
-	$table_titre,
214
-	$tables_jointures,
215
-	$liste_des_statuts,
216
-	$liste_des_etats,
217
-	$liste_des_authentifications,
218
-	$spip_version_branche,
219
-	$spip_version_code,
220
-	$spip_version_base,
221
-	$spip_sql_version,
222
-	$spip_version_affichee,
223
-	$visiteur_session,
224
-	$auteur_session,
225
-	$connect_statut,
226
-	$connect_toutes_rubriques,
227
-	$hash_recherche,
228
-	$hash_recherche_strict,
229
-	$ldap_present,
230
-	$meta,
231
-	$connect_id_rubrique,
232
-	$puce;
178
+    $nombre_de_logs,
179
+    $taille_des_logs,
180
+    $table_prefix,
181
+    $cookie_prefix,
182
+    $dossier_squelettes,
183
+    $filtrer_javascript,
184
+    $type_urls,
185
+    $debut_date_publication,
186
+    $ip,
187
+    $mysql_rappel_connexion,
188
+    $mysql_rappel_nom_base,
189
+    $test_i18n,
190
+    $ignore_auth_http,
191
+    $ignore_remote_user,
192
+    $derniere_modif_invalide,
193
+    $home_server,
194
+    $help_server,
195
+    $url_glossaire_externe,
196
+    $tex_server,
197
+    $traiter_math,
198
+    $xhtml,
199
+    $xml_indent,
200
+    $source_vignettes,
201
+    $formats_logos,
202
+    $controler_dates_rss,
203
+    $spip_pipeline,
204
+    $spip_matrice,
205
+    $plugins,
206
+    $surcharges,
207
+    $exceptions_des_tables,
208
+    $tables_principales,
209
+    $table_des_tables,
210
+    $tables_auxiliaires,
211
+    $table_primary,
212
+    $table_date,
213
+    $table_titre,
214
+    $tables_jointures,
215
+    $liste_des_statuts,
216
+    $liste_des_etats,
217
+    $liste_des_authentifications,
218
+    $spip_version_branche,
219
+    $spip_version_code,
220
+    $spip_version_base,
221
+    $spip_sql_version,
222
+    $spip_version_affichee,
223
+    $visiteur_session,
224
+    $auteur_session,
225
+    $connect_statut,
226
+    $connect_toutes_rubriques,
227
+    $hash_recherche,
228
+    $hash_recherche_strict,
229
+    $ldap_present,
230
+    $meta,
231
+    $connect_id_rubrique,
232
+    $puce;
233 233
 
234 234
 # comment on logge, defaut 4 tmp/spip.log de 100k, 0 ou 0 suppriment le log
235 235
 $nombre_de_logs = 4;
@@ -284,48 +284,48 @@  discard block
 block discarded – undo
284 284
 // Prendre en compte les entetes HTTP_X_FORWARDED_XX
285 285
 //
286 286
 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
287
-	if (empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
288
-		$_SERVER['HTTP_X_FORWARDED_HOST'] = $_SERVER['HTTP_HOST'];
289
-	}
290
-	if (empty($_SERVER['HTTP_X_FORWARDED_PORT'])) {
291
-		$_SERVER['HTTP_X_FORWARDED_PORT'] = 443;
292
-	}
287
+    if (empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
288
+        $_SERVER['HTTP_X_FORWARDED_HOST'] = $_SERVER['HTTP_HOST'];
289
+    }
290
+    if (empty($_SERVER['HTTP_X_FORWARDED_PORT'])) {
291
+        $_SERVER['HTTP_X_FORWARDED_PORT'] = 443;
292
+    }
293 293
 }
294 294
 if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
295
-	if (isset($_SERVER['HTTP_X_FORWARDED_PORT']) and is_numeric($_SERVER['HTTP_X_FORWARDED_PORT'])) {
296
-		$_SERVER['SERVER_PORT'] = $_SERVER['HTTP_X_FORWARDED_PORT'];
297
-		if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
298
-			$_SERVER['HTTPS'] = 'on';
299
-			if (isset($_SERVER['REQUEST_SCHEME'])) {
300
-				$_SERVER['REQUEST_SCHEME'] = 'https';
301
-			}
302
-		}
303
-	}
304
-	$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
305
-	if (strpos($host, ',') !== false) {
306
-		$h = explode(',', $host);
307
-		$host = trim(reset($h));
308
-	}
309
-	// securite sur le contenu de l'entete
310
-	$host = strtr($host, "<>?\"\{\}\$'` \r\n", '____________');
311
-	$_SERVER['HTTP_HOST'] = $host;
295
+    if (isset($_SERVER['HTTP_X_FORWARDED_PORT']) and is_numeric($_SERVER['HTTP_X_FORWARDED_PORT'])) {
296
+        $_SERVER['SERVER_PORT'] = $_SERVER['HTTP_X_FORWARDED_PORT'];
297
+        if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
298
+            $_SERVER['HTTPS'] = 'on';
299
+            if (isset($_SERVER['REQUEST_SCHEME'])) {
300
+                $_SERVER['REQUEST_SCHEME'] = 'https';
301
+            }
302
+        }
303
+    }
304
+    $host = $_SERVER['HTTP_X_FORWARDED_HOST'];
305
+    if (strpos($host, ',') !== false) {
306
+        $h = explode(',', $host);
307
+        $host = trim(reset($h));
308
+    }
309
+    // securite sur le contenu de l'entete
310
+    $host = strtr($host, "<>?\"\{\}\$'` \r\n", '____________');
311
+    $_SERVER['HTTP_HOST'] = $host;
312 312
 }
313 313
 //
314 314
 // On note le numero IP du client dans la variable $ip
315 315
 //
316 316
 if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
317
-	$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
318
-	if (strpos($ip, ',') !== false) {
319
-		$ip = explode(',', $ip);
320
-		$ip = reset($ip);
321
-	}
322
-	// ecraser $_SERVER['REMOTE_ADDR'] si elle est en localhost
323
-	if (isset($_SERVER['REMOTE_ADDR']) and $_SERVER['REMOTE_ADDR'] === '127.0.0.1') {
324
-		$_SERVER['REMOTE_ADDR'] = $ip;
325
-	}
317
+    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
318
+    if (strpos($ip, ',') !== false) {
319
+        $ip = explode(',', $ip);
320
+        $ip = reset($ip);
321
+    }
322
+    // ecraser $_SERVER['REMOTE_ADDR'] si elle est en localhost
323
+    if (isset($_SERVER['REMOTE_ADDR']) and $_SERVER['REMOTE_ADDR'] === '127.0.0.1') {
324
+        $_SERVER['REMOTE_ADDR'] = $ip;
325
+    }
326 326
 }
327 327
 if (isset($_SERVER['REMOTE_ADDR'])) {
328
-	$ip = $_SERVER['REMOTE_ADDR'];
328
+    $ip = $_SERVER['REMOTE_ADDR'];
329 329
 }
330 330
 
331 331
 // Pour renforcer la privacy, decommentez la ligne ci-dessous (ou recopiez-la
@@ -410,24 +410,24 @@  discard block
 block discarded – undo
410 410
 
411 411
 // Liste des statuts.
412 412
 $liste_des_statuts = [
413
-	'info_administrateurs' => '0minirezo',
414
-	'info_redacteurs' => '1comite',
415
-	'info_visiteurs' => '6forum',
416
-	'texte_statut_poubelle' => '5poubelle'
413
+    'info_administrateurs' => '0minirezo',
414
+    'info_redacteurs' => '1comite',
415
+    'info_visiteurs' => '6forum',
416
+    'texte_statut_poubelle' => '5poubelle'
417 417
 ];
418 418
 
419 419
 $liste_des_etats = [
420
-	'texte_statut_en_cours_redaction' => 'prepa',
421
-	'texte_statut_propose_evaluation' => 'prop',
422
-	'texte_statut_publie' => 'publie',
423
-	'texte_statut_poubelle' => 'poubelle',
424
-	'texte_statut_refuse' => 'refuse'
420
+    'texte_statut_en_cours_redaction' => 'prepa',
421
+    'texte_statut_propose_evaluation' => 'prop',
422
+    'texte_statut_publie' => 'publie',
423
+    'texte_statut_poubelle' => 'poubelle',
424
+    'texte_statut_refuse' => 'refuse'
425 425
 ];
426 426
 
427 427
 // liste des methodes d'authentifications
428 428
 $liste_des_authentifications = [
429
-	'spip' => 'spip',
430
-	'ldap' => 'ldap'
429
+    'spip' => 'spip',
430
+    'ldap' => 'ldap'
431 431
 ];
432 432
 
433 433
 // Experimental : pour supprimer systematiquement l'affichage des numeros
@@ -477,12 +477,12 @@  discard block
 block discarded – undo
477 477
 // Definition personnelles eventuelles
478 478
 
479 479
 if (_FILE_OPTIONS) {
480
-	include_once _FILE_OPTIONS;
480
+    include_once _FILE_OPTIONS;
481 481
 }
482 482
 
483 483
 if (!defined('SPIP_ERREUR_REPORT')) {
484
-	/** Masquer les warning */
485
-	define('SPIP_ERREUR_REPORT', E_ALL ^ E_NOTICE ^ E_DEPRECATED);
484
+    /** Masquer les warning */
485
+    define('SPIP_ERREUR_REPORT', E_ALL ^ E_NOTICE ^ E_DEPRECATED);
486 486
 }
487 487
 error_reporting(SPIP_ERREUR_REPORT);
488 488
 
@@ -495,10 +495,10 @@  discard block
 block discarded – undo
495 495
 // ===> on execute en neutralisant les messages d'erreur
496 496
 
497 497
 spip_initialisation_core(
498
-	(_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
499
-	(_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
500
-	(_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
501
-	(_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
498
+    (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
499
+    (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
500
+    (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
501
+    (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
502 502
 );
503 503
 
504 504
 
@@ -508,71 +508,71 @@  discard block
 block discarded – undo
508 508
 // donc il faut avoir tout fini ici avant de charger les plugins
509 509
 
510 510
 if (@is_readable(_CACHE_PLUGINS_OPT) and @is_readable(_CACHE_PLUGINS_PATH)) {
511
-	// chargement optimise precompile
512
-	include_once(_CACHE_PLUGINS_OPT);
511
+    // chargement optimise precompile
512
+    include_once(_CACHE_PLUGINS_OPT);
513 513
 } else {
514
-	spip_initialisation_suite();
515
-	include_spip('inc/plugin');
516
-	// generer les fichiers php precompiles
517
-	// de chargement des plugins et des pipelines
518
-	actualise_plugins_actifs();
514
+    spip_initialisation_suite();
515
+    include_spip('inc/plugin');
516
+    // generer les fichiers php precompiles
517
+    // de chargement des plugins et des pipelines
518
+    actualise_plugins_actifs();
519 519
 }
520 520
 
521 521
 // Initialisations non critiques surchargeables par les plugins
522 522
 spip_initialisation_suite();
523 523
 
524 524
 if (!defined('_LOG_FILTRE_GRAVITE')) {
525
-	/** niveau maxi d'enregistrement des logs */
526
-	define('_LOG_FILTRE_GRAVITE', _LOG_INFO_IMPORTANTE);
525
+    /** niveau maxi d'enregistrement des logs */
526
+    define('_LOG_FILTRE_GRAVITE', _LOG_INFO_IMPORTANTE);
527 527
 }
528 528
 
529 529
 if (!defined('_OUTILS_DEVELOPPEURS')) {
530
-	/** Activer des outils pour développeurs ? */
531
-	define('_OUTILS_DEVELOPPEURS', false);
530
+    /** Activer des outils pour développeurs ? */
531
+    define('_OUTILS_DEVELOPPEURS', false);
532 532
 }
533 533
 
534 534
 // charger systematiquement inc/autoriser dans l'espace restreint
535 535
 if (test_espace_prive()) {
536
-	include_spip('inc/autoriser');
536
+    include_spip('inc/autoriser');
537 537
 }
538 538
 //
539 539
 // Installer Spip si pas installe... sauf si justement on est en train
540 540
 //
541 541
 if (
542
-	!(_FILE_CONNECT
543
-	or autoriser_sans_cookie(_request('exec'))
544
-	or _request('action') == 'cookie'
545
-	or _request('action') == 'converser'
546
-	or _request('action') == 'test_dirs')
542
+    !(_FILE_CONNECT
543
+    or autoriser_sans_cookie(_request('exec'))
544
+    or _request('action') == 'cookie'
545
+    or _request('action') == 'converser'
546
+    or _request('action') == 'test_dirs')
547 547
 ) {
548
-	// Si on peut installer, on lance illico
549
-	if (test_espace_prive()) {
550
-		include_spip('inc/headers');
551
-		redirige_url_ecrire('install');
552
-	} else {
553
-		// Si on est dans le site public, dire que qq s'en occupe
554
-		include_spip('inc/lang');
555
-		utiliser_langue_visiteur();
556
-		include_spip('inc/minipres');
557
-		echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>" . _T('info_travaux_texte') . '</p>', ['status' => 503]);
558
-		exit;
559
-	}
560
-	// autrement c'est une install ad hoc (spikini...), on sait pas faire
548
+    // Si on peut installer, on lance illico
549
+    if (test_espace_prive()) {
550
+        include_spip('inc/headers');
551
+        redirige_url_ecrire('install');
552
+    } else {
553
+        // Si on est dans le site public, dire que qq s'en occupe
554
+        include_spip('inc/lang');
555
+        utiliser_langue_visiteur();
556
+        include_spip('inc/minipres');
557
+        echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>" . _T('info_travaux_texte') . '</p>', ['status' => 503]);
558
+        exit;
559
+    }
560
+    // autrement c'est une install ad hoc (spikini...), on sait pas faire
561 561
 }
562 562
 
563 563
 // memoriser un tri sessionne eventuel
564 564
 if (
565
-	isset($_REQUEST['var_memotri'])
566
-	and $t = $_REQUEST['var_memotri']
567
-	and (strncmp($t, 'trisession', 10) == 0 or strncmp($t, 'senssession', 11) == 0)
565
+    isset($_REQUEST['var_memotri'])
566
+    and $t = $_REQUEST['var_memotri']
567
+    and (strncmp($t, 'trisession', 10) == 0 or strncmp($t, 'senssession', 11) == 0)
568 568
 ) {
569
-	if (!function_exists('session_set')) {
570
-		include_spip('inc/session');
571
-	}
572
-	$t = preg_replace(',\W,', '_', $t);
573
-	if ($v = _request($t)) {
574
-		session_set($t, $v);
575
-	}
569
+    if (!function_exists('session_set')) {
570
+        include_spip('inc/session');
571
+    }
572
+    $t = preg_replace(',\W,', '_', $t);
573
+    if ($v = _request($t)) {
574
+        session_set($t, $v);
575
+    }
576 576
 }
577 577
 
578 578
 /**
@@ -582,22 +582,22 @@  discard block
 block discarded – undo
582 582
  * La globale $spip_header_silencieux permet de rendre le header minimal pour raisons de securite
583 583
  */
584 584
 if (!defined('_HEADER_COMPOSED_BY')) {
585
-	define('_HEADER_COMPOSED_BY', 'Composed-By: SPIP');
585
+    define('_HEADER_COMPOSED_BY', 'Composed-By: SPIP');
586 586
 }
587 587
 if (!headers_sent() and _HEADER_COMPOSED_BY) {
588
-	if (!defined('_HEADER_VARY')) {
589
-		define('_HEADER_VARY', 'Vary: Cookie, Accept-Encoding');
590
-	}
591
-	if (_HEADER_VARY) {
592
-		header(_HEADER_VARY);
593
-	}
594
-	if (!isset($GLOBALS['spip_header_silencieux']) or !$GLOBALS['spip_header_silencieux']) {
595
-		include_spip('inc/filtres_mini');
596
-		header(_HEADER_COMPOSED_BY . " $spip_version_affichee @ www.spip.net + " . url_absolue(_DIR_VAR . 'config.txt'));
597
-	} else {
598
-		// header minimal
599
-		header(_HEADER_COMPOSED_BY . ' @ www.spip.net');
600
-	}
588
+    if (!defined('_HEADER_VARY')) {
589
+        define('_HEADER_VARY', 'Vary: Cookie, Accept-Encoding');
590
+    }
591
+    if (_HEADER_VARY) {
592
+        header(_HEADER_VARY);
593
+    }
594
+    if (!isset($GLOBALS['spip_header_silencieux']) or !$GLOBALS['spip_header_silencieux']) {
595
+        include_spip('inc/filtres_mini');
596
+        header(_HEADER_COMPOSED_BY . " $spip_version_affichee @ www.spip.net + " . url_absolue(_DIR_VAR . 'config.txt'));
597
+    } else {
598
+        // header minimal
599
+        header(_HEADER_COMPOSED_BY . ' @ www.spip.net');
600
+    }
601 601
 }
602 602
 
603 603
 $methode = ($_SERVER['REQUEST_METHOD'] ?? ((php_sapi_name() == 'cli') ? 'cli' : ''));
Please login to merge, or discard this patch.
Spacing   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -51,11 +51,11 @@  discard block
 block discarded – undo
51 51
 define('_DIR_RACINE', _DIR_RESTREINT ? '' : '../');
52 52
 
53 53
 /** chemin absolu vers la racine */
54
-define('_ROOT_RACINE', dirname(__DIR__) . '/');
54
+define('_ROOT_RACINE', dirname(__DIR__).'/');
55 55
 /** chemin absolu vers le repertoire de travail */
56
-define('_ROOT_CWD', getcwd() . '/');
56
+define('_ROOT_CWD', getcwd().'/');
57 57
 /** chemin absolu vers ecrire */
58
-define('_ROOT_RESTREINT', _ROOT_CWD . _DIR_RESTREINT);
58
+define('_ROOT_RESTREINT', _ROOT_CWD._DIR_RESTREINT);
59 59
 
60 60
 # Le nom des 4 repertoires modifiables par les scripts lances par httpd
61 61
 # Par defaut ces 4 noms seront suffixes par _DIR_RACINE (cf plus bas)
@@ -80,13 +80,13 @@  discard block
 block discarded – undo
80 80
 // inclure l'ecran de securite si il n'a pas été inclus en prepend php
81 81
 if (
82 82
 	!defined('_ECRAN_SECURITE')
83
-	and @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_securite.php')
83
+	and @file_exists($f = _ROOT_RACINE._NOM_PERMANENTS_INACCESSIBLES.'ecran_securite.php')
84 84
 ) {
85 85
 	include $f;
86 86
 }
87 87
 
88 88
 // et on peut lancer l'autoloader
89
-require_once __DIR__ . '/../vendor/autoload.php';
89
+require_once __DIR__.'/../vendor/autoload.php';
90 90
 
91 91
 // Icones
92 92
 if (!defined('_NOM_IMG_PACK')) {
@@ -94,17 +94,17 @@  discard block
 block discarded – undo
94 94
 	define('_NOM_IMG_PACK', 'images/');
95 95
 }
96 96
 /** le chemin http (relatif) vers les images standard */
97
-define('_DIR_IMG_PACK', (_DIR_RACINE . 'prive/' . _NOM_IMG_PACK));
97
+define('_DIR_IMG_PACK', (_DIR_RACINE.'prive/'._NOM_IMG_PACK));
98 98
 
99 99
 /** le chemin php (absolu) vers les images standard (pour hebergement centralise) */
100
-define('_ROOT_IMG_PACK', dirname(__DIR__) . '/prive/' . _NOM_IMG_PACK);
100
+define('_ROOT_IMG_PACK', dirname(__DIR__).'/prive/'._NOM_IMG_PACK);
101 101
 
102 102
 if (!defined('_JAVASCRIPT')) {
103 103
 	/** Nom du repertoire des  bibliotheques JavaScript */
104 104
 	define('_JAVASCRIPT', 'javascript/');
105 105
 } // utilisable avec #CHEMIN et find_in_path
106 106
 /** le nom du repertoire des  bibliotheques JavaScript du prive */
107
-define('_DIR_JAVASCRIPT', (_DIR_RACINE . 'prive/' . _JAVASCRIPT));
107
+define('_DIR_JAVASCRIPT', (_DIR_RACINE.'prive/'._JAVASCRIPT));
108 108
 
109 109
 
110 110
 /** Le nom du fichier de personnalisation */
@@ -114,8 +114,8 @@  discard block
 block discarded – undo
114 114
 
115 115
 // Son emplacement absolu si on le trouve
116 116
 if (
117
-	@file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php')
118
-	or (@file_exists($f = _ROOT_RESTREINT . _NOM_CONFIG . '.php'))
117
+	@file_exists($f = _ROOT_RACINE._NOM_PERMANENTS_INACCESSIBLES._NOM_CONFIG.'.php')
118
+	or (@file_exists($f = _ROOT_RESTREINT._NOM_CONFIG.'.php'))
119 119
 ) {
120 120
 	/** Emplacement absolu du fichier d'option */
121 121
 	define('_FILE_OPTIONS', $f);
@@ -151,7 +151,7 @@  discard block
 block discarded – undo
151 151
 			// UA plus cibles
152 152
 			. '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'
153 153
 			. ',i',
154
-			(string)$_SERVER['HTTP_USER_AGENT']
154
+			(string) $_SERVER['HTTP_USER_AGENT']
155 155
 		)
156 156
 	);
157 157
 }
@@ -393,7 +393,7 @@  discard block
 block discarded – undo
393 393
 # la matrice standard (fichiers definissant les fonctions a inclure)
394 394
 $spip_matrice = [];
395 395
 # les plugins a activer
396
-$plugins = [];  // voir le contenu du repertoire /plugins/
396
+$plugins = []; // voir le contenu du repertoire /plugins/
397 397
 # les surcharges de include_spip()
398 398
 $surcharges = []; // format 'inc_truc' => '/plugins/chose/inc_truc2.php'
399 399
 
@@ -471,8 +471,8 @@  discard block
 block discarded – undo
471 471
 //
472 472
 // Charger les fonctions liees aux serveurs Http et Sql.
473 473
 //
474
-require_once _ROOT_RESTREINT . 'inc/utils.php';
475
-require_once _ROOT_RESTREINT . 'base/connect_sql.php';
474
+require_once _ROOT_RESTREINT.'inc/utils.php';
475
+require_once _ROOT_RESTREINT.'base/connect_sql.php';
476 476
 
477 477
 // Definition personnelles eventuelles
478 478
 
@@ -495,10 +495,10 @@  discard block
 block discarded – undo
495 495
 // ===> on execute en neutralisant les messages d'erreur
496 496
 
497 497
 spip_initialisation_core(
498
-	(_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
499
-	(_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
500
-	(_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
501
-	(_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
498
+	(_DIR_RACINE._NOM_PERMANENTS_INACCESSIBLES),
499
+	(_DIR_RACINE._NOM_PERMANENTS_ACCESSIBLES),
500
+	(_DIR_RACINE._NOM_TEMPORAIRES_INACCESSIBLES),
501
+	(_DIR_RACINE._NOM_TEMPORAIRES_ACCESSIBLES)
502 502
 );
503 503
 
504 504
 
@@ -554,7 +554,7 @@  discard block
 block discarded – undo
554 554
 		include_spip('inc/lang');
555 555
 		utiliser_langue_visiteur();
556 556
 		include_spip('inc/minipres');
557
-		echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>" . _T('info_travaux_texte') . '</p>', ['status' => 503]);
557
+		echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>"._T('info_travaux_texte').'</p>', ['status' => 503]);
558 558
 		exit;
559 559
 	}
560 560
 	// autrement c'est une install ad hoc (spikini...), on sait pas faire
@@ -593,12 +593,12 @@  discard block
 block discarded – undo
593 593
 	}
594 594
 	if (!isset($GLOBALS['spip_header_silencieux']) or !$GLOBALS['spip_header_silencieux']) {
595 595
 		include_spip('inc/filtres_mini');
596
-		header(_HEADER_COMPOSED_BY . " $spip_version_affichee @ www.spip.net + " . url_absolue(_DIR_VAR . 'config.txt'));
596
+		header(_HEADER_COMPOSED_BY." $spip_version_affichee @ www.spip.net + ".url_absolue(_DIR_VAR.'config.txt'));
597 597
 	} else {
598 598
 		// header minimal
599
-		header(_HEADER_COMPOSED_BY . ' @ www.spip.net');
599
+		header(_HEADER_COMPOSED_BY.' @ www.spip.net');
600 600
 	}
601 601
 }
602 602
 
603 603
 $methode = ($_SERVER['REQUEST_METHOD'] ?? ((php_sapi_name() == 'cli') ? 'cli' : ''));
604
-spip_log($methode . ' ' . self() . ' - ' . _FILE_CONNECT, _LOG_DEBUG);
604
+spip_log($methode.' '.self().' - '._FILE_CONNECT, _LOG_DEBUG);
Please login to merge, or discard this patch.
ecrire/balise/formulaire_.php 2 patches
Indentation   +257 added lines, -257 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Formulaires
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 include_spip('inc/filtres');
@@ -34,28 +34,28 @@  discard block
 block discarded – undo
34 34
  * @see spip_htmlspecialchars()
35 35
  */
36 36
 function protege_champ($valeur, $max_prof = 128) {
37
-	if (is_array($valeur)) {
38
-		if ($max_prof > 0) {
39
-			return array_map(
40
-				function($v) use ($max_prof) {
41
-					return protege_champ($v, $max_prof-1);
42
-				},
43
-				$valeur
44
-			);
45
-		}
46
-		// si on dépasse la prof max on tronque
47
-		return [];
48
-	} elseif ($valeur === null) {
49
-		return $valeur;
50
-	} elseif (is_bool($valeur)) {
51
-		return $valeur ? '1' : '';
52
-	} elseif (is_string($valeur) and $valeur) {
53
-		if (strpbrk($valeur, "&\"'<>") !== false) {
54
-			return spip_htmlspecialchars($valeur, ENT_QUOTES);
55
-		}
56
-	}
57
-
58
-	return $valeur;
37
+    if (is_array($valeur)) {
38
+        if ($max_prof > 0) {
39
+            return array_map(
40
+                function($v) use ($max_prof) {
41
+                    return protege_champ($v, $max_prof-1);
42
+                },
43
+                $valeur
44
+            );
45
+        }
46
+        // si on dépasse la prof max on tronque
47
+        return [];
48
+    } elseif ($valeur === null) {
49
+        return $valeur;
50
+    } elseif (is_bool($valeur)) {
51
+        return $valeur ? '1' : '';
52
+    } elseif (is_string($valeur) and $valeur) {
53
+        if (strpbrk($valeur, "&\"'<>") !== false) {
54
+            return spip_htmlspecialchars($valeur, ENT_QUOTES);
55
+        }
56
+    }
57
+
58
+    return $valeur;
59 59
 }
60 60
 
61 61
 /**
@@ -69,17 +69,17 @@  discard block
 block discarded – undo
69 69
  *     - false : pas de squelette trouvé
70 70
  **/
71 71
 function existe_formulaire($form) {
72
-	if (substr($form, 0, 11) == 'FORMULAIRE_') {
73
-		$form = strtolower(substr($form, 11));
74
-	} else {
75
-		$form = strtolower($form);
76
-	}
72
+    if (substr($form, 0, 11) == 'FORMULAIRE_') {
73
+        $form = strtolower(substr($form, 11));
74
+    } else {
75
+        $form = strtolower($form);
76
+    }
77 77
 
78
-	if (!$form) {
79
-		return '';
80
-	} // on ne sait pas, le nom du formulaire n'est pas fourni ici
78
+    if (!$form) {
79
+        return '';
80
+    } // on ne sait pas, le nom du formulaire n'est pas fourni ici
81 81
 
82
-	return trouver_fond($form, 'formulaires/') ? $form : false;
82
+    return trouver_fond($form, 'formulaires/') ? $form : false;
83 83
 }
84 84
 
85 85
 /**
@@ -88,31 +88,31 @@  discard block
 block discarded – undo
88 88
  * @return false|array
89 89
  */
90 90
 function test_formulaire_inclus_par_modele() {
91
-	$trace = debug_backtrace(0, 20);
92
-	$trace_fonctions = array_column($trace, 'function');
93
-	$trace_fonctions = array_map('strtolower', $trace_fonctions);
94
-
95
-	// regarder si un flag a ete leve juste avant l'appel de balise_FORMULAIRE_dyn
96
-	if (
97
-		function_exists('arguments_balise_dyn_depuis_modele')
98
-		and $form = arguments_balise_dyn_depuis_modele(null, 'read')
99
-	) {
100
-		if (in_array('balise_formulaire__dyn', $trace_fonctions)) {
101
-			$k = array_search('balise_formulaire__dyn', $trace_fonctions);
102
-			if ($trace[$k]['args'][0] === $form) {
103
-				return $trace[$k]['args'];
104
-			}
105
-		}
106
-	}
107
-
108
-	// fallback qui ne repose pas sur le flag lie a l'analyse de contexte_compil,
109
-	// mais ne marche pas si executer_balise_dynamique est appelee via du php dans le squelette
110
-	if (in_array('eval', $trace_fonctions) and in_array('inclure_modele', $trace_fonctions)) {
111
-		$k = array_search('inclure_modele', $trace_fonctions);
112
-		// les arguments de recuperer_fond() passes par inclure_modele()
113
-		return $trace[$k - 1]['args'][1]['args'];
114
-	}
115
-	return false;
91
+    $trace = debug_backtrace(0, 20);
92
+    $trace_fonctions = array_column($trace, 'function');
93
+    $trace_fonctions = array_map('strtolower', $trace_fonctions);
94
+
95
+    // regarder si un flag a ete leve juste avant l'appel de balise_FORMULAIRE_dyn
96
+    if (
97
+        function_exists('arguments_balise_dyn_depuis_modele')
98
+        and $form = arguments_balise_dyn_depuis_modele(null, 'read')
99
+    ) {
100
+        if (in_array('balise_formulaire__dyn', $trace_fonctions)) {
101
+            $k = array_search('balise_formulaire__dyn', $trace_fonctions);
102
+            if ($trace[$k]['args'][0] === $form) {
103
+                return $trace[$k]['args'];
104
+            }
105
+        }
106
+    }
107
+
108
+    // fallback qui ne repose pas sur le flag lie a l'analyse de contexte_compil,
109
+    // mais ne marche pas si executer_balise_dynamique est appelee via du php dans le squelette
110
+    if (in_array('eval', $trace_fonctions) and in_array('inclure_modele', $trace_fonctions)) {
111
+        $k = array_search('inclure_modele', $trace_fonctions);
112
+        // les arguments de recuperer_fond() passes par inclure_modele()
113
+        return $trace[$k - 1]['args'][1]['args'];
114
+    }
115
+    return false;
116 116
 }
117 117
 
118 118
 /**
@@ -127,19 +127,19 @@  discard block
 block discarded – undo
127 127
  **/
128 128
 function balise_FORMULAIRE__dist($p) {
129 129
 
130
-	// Cas d'un #FORMULAIRE_TOTO inexistant : renvoyer la chaine vide.
131
-	// mais si #FORMULAIRE_{toto} on ne peut pas savoir a la compilation, continuer
132
-	if (existe_formulaire($p->nom_champ) === false) {
133
-		$p->code = "''";
134
-		$p->interdire_scripts = false;
130
+    // Cas d'un #FORMULAIRE_TOTO inexistant : renvoyer la chaine vide.
131
+    // mais si #FORMULAIRE_{toto} on ne peut pas savoir a la compilation, continuer
132
+    if (existe_formulaire($p->nom_champ) === false) {
133
+        $p->code = "''";
134
+        $p->interdire_scripts = false;
135 135
 
136
-		return $p;
137
-	}
136
+        return $p;
137
+    }
138 138
 
139
-	// sinon renvoyer un code php dynamique
140
-	$p = calculer_balise_dynamique($p, $p->nom_champ, []);
139
+    // sinon renvoyer un code php dynamique
140
+    $p = calculer_balise_dynamique($p, $p->nom_champ, []);
141 141
 
142
-	return $p;
142
+    return $p;
143 143
 }
144 144
 
145 145
 /**
@@ -159,17 +159,17 @@  discard block
 block discarded – undo
159 159
  *     - string : texte à afficher directement
160 160
  */
161 161
 function balise_FORMULAIRE__dyn($form, ...$args) {
162
-	$form = existe_formulaire($form);
163
-	if (!$form) {
164
-		return '';
165
-	}
162
+    $form = existe_formulaire($form);
163
+    if (!$form) {
164
+        return '';
165
+    }
166 166
 
167
-	$contexte = balise_FORMULAIRE__contexte($form, $args);
168
-	if (!is_array($contexte)) {
169
-		return $contexte;
170
-	}
167
+    $contexte = balise_FORMULAIRE__contexte($form, $args);
168
+    if (!is_array($contexte)) {
169
+        return $contexte;
170
+    }
171 171
 
172
-	return ["formulaires/$form", 3600, $contexte];
172
+    return ["formulaires/$form", 3600, $contexte];
173 173
 }
174 174
 
175 175
 /**
@@ -184,85 +184,85 @@  discard block
 block discarded – undo
184 184
  *     string: Formulaire non applicable (message d’explication)
185 185
  **/
186 186
 function balise_FORMULAIRE__contexte($form, $args) {
187
-	// tester si ce formulaire vient d'etre poste (memes arguments)
188
-	// pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
189
-	// si poste, on recupere les erreurs
190
-
191
-	$je_suis_poste = false;
192
-	if (
193
-		$post_form = _request('formulaire_action')
194
-		and $post_form == $form
195
-		and $p = _request('formulaire_action_args')
196
-		and is_array($p = decoder_contexte_ajax($p, $post_form))
197
-	) {
198
-		// enlever le faux attribut de langue masque
199
-		array_shift($p);
200
-		if (formulaire__identifier($form, $args, $p)) {
201
-			$je_suis_poste = true;
202
-		}
203
-	}
204
-
205
-	$editable = true;
206
-	$erreurs = $post = [];
207
-	if ($je_suis_poste) {
208
-		$post = traiter_formulaires_dynamiques(true);
209
-		$e = "erreurs_$form";
210
-		$erreurs = $post[$e] ?? [];
211
-		$editable = "editable_$form";
212
-		$editable = (!isset($post[$e]))
213
-			|| (is_countable($erreurs) ? count($erreurs) : 0)
214
-			|| (isset($post[$editable]) && $post[$editable]);
215
-	}
216
-
217
-	$valeurs = formulaire__charger($form, $args, $je_suis_poste);
218
-
219
-	// si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
220
-	// C'est plus fort qu'editable qui est gere par le squelette
221
-	// Idealement $valeur doit etre alors un message explicatif.
222
-	if (!is_array($valeurs)) {
223
-		return is_string($valeurs) ? $valeurs : '';
224
-	}
225
-
226
-	// charger peut passer une action si le formulaire ne tourne pas sur self()
227
-	// ou une action vide si elle ne sert pas
228
-	$action = $valeurs['action'] ?? self('&amp;', true);
229
-	// bug IEx : si action finit par /
230
-	// IE croit que le <form ... action=../ > est autoferme
231
-	if (substr($action, -1) == '/') {
232
-		// on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
233
-		$action .= '#';
234
-	}
235
-
236
-	// recuperer la saisie en cours si erreurs
237
-	// seulement si c'est ce formulaire qui est poste
238
-	// ou si on le demande explicitement par le parametre _forcer_request = true
239
-	$dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
240
-	foreach (array_keys($valeurs) as $champ) {
241
-		if ($champ[0] !== '_' and !in_array($champ, ['message_ok', 'message_erreur', 'editable'])) {
242
-			if ($dispo and (($v = _request($champ)) !== null)) {
243
-				$valeurs[$champ] = $v;
244
-			}
245
-			// nettoyer l'url des champs qui vont etre saisis
246
-			if ($action) {
247
-				$action = parametre_url($action, $champ, '');
248
-			}
249
-			// proteger les ' et les " dans les champs que l'on va injecter
250
-			$valeurs[$champ] = protege_champ($valeurs[$champ]);
251
-		}
252
-	}
253
-
254
-	if ($action) {
255
-		// nettoyer l'url
256
-		$action = parametre_url($action, 'formulaire_action', '');
257
-		$action = parametre_url($action, 'formulaire_action_args', '');
258
-		$action = parametre_url($action, 'formulaire_action_sign', '');
259
-	}
260
-
261
-	/**
262
-	 * @deprecated 4.0
263
-	 * servait pour poster sur les actions de type editer_xxx() qui ne prenaient pas d'argument autrement que par _request('arg') et pour lesquelles il fallait donc passer un hash valide
264
-	 */
265
-	/*
187
+    // tester si ce formulaire vient d'etre poste (memes arguments)
188
+    // pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
189
+    // si poste, on recupere les erreurs
190
+
191
+    $je_suis_poste = false;
192
+    if (
193
+        $post_form = _request('formulaire_action')
194
+        and $post_form == $form
195
+        and $p = _request('formulaire_action_args')
196
+        and is_array($p = decoder_contexte_ajax($p, $post_form))
197
+    ) {
198
+        // enlever le faux attribut de langue masque
199
+        array_shift($p);
200
+        if (formulaire__identifier($form, $args, $p)) {
201
+            $je_suis_poste = true;
202
+        }
203
+    }
204
+
205
+    $editable = true;
206
+    $erreurs = $post = [];
207
+    if ($je_suis_poste) {
208
+        $post = traiter_formulaires_dynamiques(true);
209
+        $e = "erreurs_$form";
210
+        $erreurs = $post[$e] ?? [];
211
+        $editable = "editable_$form";
212
+        $editable = (!isset($post[$e]))
213
+            || (is_countable($erreurs) ? count($erreurs) : 0)
214
+            || (isset($post[$editable]) && $post[$editable]);
215
+    }
216
+
217
+    $valeurs = formulaire__charger($form, $args, $je_suis_poste);
218
+
219
+    // si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
220
+    // C'est plus fort qu'editable qui est gere par le squelette
221
+    // Idealement $valeur doit etre alors un message explicatif.
222
+    if (!is_array($valeurs)) {
223
+        return is_string($valeurs) ? $valeurs : '';
224
+    }
225
+
226
+    // charger peut passer une action si le formulaire ne tourne pas sur self()
227
+    // ou une action vide si elle ne sert pas
228
+    $action = $valeurs['action'] ?? self('&amp;', true);
229
+    // bug IEx : si action finit par /
230
+    // IE croit que le <form ... action=../ > est autoferme
231
+    if (substr($action, -1) == '/') {
232
+        // on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
233
+        $action .= '#';
234
+    }
235
+
236
+    // recuperer la saisie en cours si erreurs
237
+    // seulement si c'est ce formulaire qui est poste
238
+    // ou si on le demande explicitement par le parametre _forcer_request = true
239
+    $dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
240
+    foreach (array_keys($valeurs) as $champ) {
241
+        if ($champ[0] !== '_' and !in_array($champ, ['message_ok', 'message_erreur', 'editable'])) {
242
+            if ($dispo and (($v = _request($champ)) !== null)) {
243
+                $valeurs[$champ] = $v;
244
+            }
245
+            // nettoyer l'url des champs qui vont etre saisis
246
+            if ($action) {
247
+                $action = parametre_url($action, $champ, '');
248
+            }
249
+            // proteger les ' et les " dans les champs que l'on va injecter
250
+            $valeurs[$champ] = protege_champ($valeurs[$champ]);
251
+        }
252
+    }
253
+
254
+    if ($action) {
255
+        // nettoyer l'url
256
+        $action = parametre_url($action, 'formulaire_action', '');
257
+        $action = parametre_url($action, 'formulaire_action_args', '');
258
+        $action = parametre_url($action, 'formulaire_action_sign', '');
259
+    }
260
+
261
+    /**
262
+     * @deprecated 4.0
263
+     * servait pour poster sur les actions de type editer_xxx() qui ne prenaient pas d'argument autrement que par _request('arg') et pour lesquelles il fallait donc passer un hash valide
264
+     */
265
+    /*
266 266
 	if (isset($valeurs['_action'])) {
267 267
 		$securiser_action = charger_fonction('securiser_action', 'inc');
268 268
 		$secu = $securiser_action(reset($valeurs['_action']), end($valeurs['_action']), '', -1);
@@ -272,59 +272,59 @@  discard block
 block discarded – undo
272 272
 	}
273 273
 	*/
274 274
 
275
-	// empiler la lang en tant que premier argument implicite du CVT
276
-	// pour permettre de la restaurer au moment du Verifier et du Traiter
277
-	array_unshift($args, $GLOBALS['spip_lang']);
278
-
279
-	$valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form);
280
-	$valeurs['erreurs'] = $erreurs;
281
-	$valeurs['action'] = $action;
282
-	$valeurs['form'] = $form;
283
-
284
-	$valeurs['formulaire_sign'] = '';
285
-	if (!empty($GLOBALS['visiteur_session']['id_auteur'])) {
286
-		$securiser_action = charger_fonction('securiser_action', 'inc');
287
-		$secu = $securiser_action($valeurs['form'], $valeurs['formulaire_args'], '', -1);
288
-		$valeurs['formulaire_sign'] = $secu['hash'];
289
-	}
290
-
291
-	if (!isset($valeurs['id'])) {
292
-		$valeurs['id'] = 'new';
293
-	}
294
-	// editable peut venir de charger() ou de traiter() sinon
295
-	if (!isset($valeurs['editable'])) {
296
-		$valeurs['editable'] = $editable;
297
-	}
298
-	// dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
299
-	$valeurs['editable'] = ($valeurs['editable'] ? ' ' : '');
300
-
301
-	if ($je_suis_poste) {
302
-		$valeurs['message_erreur'] = '';
303
-		if (isset($erreurs['message_erreur'])) {
304
-			$valeurs['message_erreur'] = $erreurs['message_erreur'];
305
-		}
306
-
307
-		$valeurs['message_ok'] = '';
308
-		if (isset($post["message_ok_$form"])) {
309
-			$valeurs['message_ok'] = $post["message_ok_$form"];
310
-		} elseif (isset($erreurs['message_ok'])) {
311
-			$valeurs['message_ok'] = $erreurs['message_ok'];
312
-		}
313
-
314
-		// accessibilite : encapsuler toutes les erreurs dans un role='alert'
315
-		// uniquement si c'est une string et au premier niveau (on ne touche pas au tableaux)
316
-		// et si $k ne commence pas par un _ (c'est bien une vrai erreur sur un vrai champ)
317
-		if (html5_permis()) {
318
-			foreach ($erreurs as $k => $v) {
319
-				if (is_string($v) and strlen(trim($v)) and strpos($k, '_') !== 0) {
320
-					// on encapsule dans un span car ces messages sont en general simple, juste du texte, et deja dans un span dans le form
321
-					$valeurs['erreurs'][$k] = "<span role='alert'>" . $erreurs[$k] . '</span>';
322
-				}
323
-			}
324
-		}
325
-	}
326
-
327
-	return $valeurs;
275
+    // empiler la lang en tant que premier argument implicite du CVT
276
+    // pour permettre de la restaurer au moment du Verifier et du Traiter
277
+    array_unshift($args, $GLOBALS['spip_lang']);
278
+
279
+    $valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form);
280
+    $valeurs['erreurs'] = $erreurs;
281
+    $valeurs['action'] = $action;
282
+    $valeurs['form'] = $form;
283
+
284
+    $valeurs['formulaire_sign'] = '';
285
+    if (!empty($GLOBALS['visiteur_session']['id_auteur'])) {
286
+        $securiser_action = charger_fonction('securiser_action', 'inc');
287
+        $secu = $securiser_action($valeurs['form'], $valeurs['formulaire_args'], '', -1);
288
+        $valeurs['formulaire_sign'] = $secu['hash'];
289
+    }
290
+
291
+    if (!isset($valeurs['id'])) {
292
+        $valeurs['id'] = 'new';
293
+    }
294
+    // editable peut venir de charger() ou de traiter() sinon
295
+    if (!isset($valeurs['editable'])) {
296
+        $valeurs['editable'] = $editable;
297
+    }
298
+    // dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
299
+    $valeurs['editable'] = ($valeurs['editable'] ? ' ' : '');
300
+
301
+    if ($je_suis_poste) {
302
+        $valeurs['message_erreur'] = '';
303
+        if (isset($erreurs['message_erreur'])) {
304
+            $valeurs['message_erreur'] = $erreurs['message_erreur'];
305
+        }
306
+
307
+        $valeurs['message_ok'] = '';
308
+        if (isset($post["message_ok_$form"])) {
309
+            $valeurs['message_ok'] = $post["message_ok_$form"];
310
+        } elseif (isset($erreurs['message_ok'])) {
311
+            $valeurs['message_ok'] = $erreurs['message_ok'];
312
+        }
313
+
314
+        // accessibilite : encapsuler toutes les erreurs dans un role='alert'
315
+        // uniquement si c'est une string et au premier niveau (on ne touche pas au tableaux)
316
+        // et si $k ne commence pas par un _ (c'est bien une vrai erreur sur un vrai champ)
317
+        if (html5_permis()) {
318
+            foreach ($erreurs as $k => $v) {
319
+                if (is_string($v) and strlen(trim($v)) and strpos($k, '_') !== 0) {
320
+                    // on encapsule dans un span car ces messages sont en general simple, juste du texte, et deja dans un span dans le form
321
+                    $valeurs['erreurs'][$k] = "<span role='alert'>" . $erreurs[$k] . '</span>';
322
+                }
323
+            }
324
+        }
325
+    }
326
+
327
+    return $valeurs;
328 328
 }
329 329
 
330 330
 /**
@@ -336,51 +336,51 @@  discard block
 block discarded – undo
336 336
  * @return array
337 337
  */
338 338
 function formulaire__charger($form, $args, $poste) {
339
-	if ($charger_valeurs = charger_fonction('charger', "formulaires/$form", true)) {
340
-		$valeurs = $charger_valeurs(...$args);
341
-	} else {
342
-		$valeurs = [];
343
-	}
344
-
345
-	$valeurs = pipeline(
346
-		'formulaire_charger',
347
-		[
348
-			'args' => ['form' => $form, 'args' => $args, 'je_suis_poste' => $poste],
349
-			'data' => $valeurs
350
-		]
351
-	);
352
-
353
-	// prise en charge CVT multi etape
354
-	if (is_array($valeurs) and isset($valeurs['_etapes'])) {
355
-		include_spip('inc/cvt_multietapes');
356
-		$valeurs = cvtmulti_formulaire_charger_etapes(
357
-			['form' => $form, 'args' => $args, 'je_suis_poste' => $poste],
358
-			$valeurs
359
-		);
360
-	}
361
-
362
-	// si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
363
-	if (is_array($valeurs)) {
364
-		if (!isset($valeurs['_pipelines'])) {
365
-			$valeurs['_pipelines'] = [];
366
-		}
367
-		// l'ancien argument _pipeline devient maintenant _pipelines
368
-		// reinjectons le vieux _pipeline au debut de _pipelines
369
-		if (isset($valeurs['_pipeline'])) {
370
-			$pipe = is_array($valeurs['_pipeline']) ? reset($valeurs['_pipeline']) : $valeurs['_pipeline'];
371
-			$args = is_array($valeurs['_pipeline']) ? end($valeurs['_pipeline']) : [];
372
-
373
-			$pipelines = [$pipe => $args];
374
-			$valeurs['_pipelines'] = array_merge($pipelines, $valeurs['_pipelines']);
375
-		}
376
-
377
-		// et enfin, ajoutons systematiquement un pipeline sur le squelette du formulaire
378
-		// qui constitue le cas le plus courant d'utilisation du pipeline recuperer_fond
379
-		// (performance, cela evite de s'injecter dans recuperer_fond utilise pour *tous* les squelettes)
380
-		$valeurs['_pipelines']['formulaire_fond'] = ['form' => $form, 'args' => $args, 'je_suis_poste' => $poste];
381
-	}
382
-
383
-	return $valeurs;
339
+    if ($charger_valeurs = charger_fonction('charger', "formulaires/$form", true)) {
340
+        $valeurs = $charger_valeurs(...$args);
341
+    } else {
342
+        $valeurs = [];
343
+    }
344
+
345
+    $valeurs = pipeline(
346
+        'formulaire_charger',
347
+        [
348
+            'args' => ['form' => $form, 'args' => $args, 'je_suis_poste' => $poste],
349
+            'data' => $valeurs
350
+        ]
351
+    );
352
+
353
+    // prise en charge CVT multi etape
354
+    if (is_array($valeurs) and isset($valeurs['_etapes'])) {
355
+        include_spip('inc/cvt_multietapes');
356
+        $valeurs = cvtmulti_formulaire_charger_etapes(
357
+            ['form' => $form, 'args' => $args, 'je_suis_poste' => $poste],
358
+            $valeurs
359
+        );
360
+    }
361
+
362
+    // si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
363
+    if (is_array($valeurs)) {
364
+        if (!isset($valeurs['_pipelines'])) {
365
+            $valeurs['_pipelines'] = [];
366
+        }
367
+        // l'ancien argument _pipeline devient maintenant _pipelines
368
+        // reinjectons le vieux _pipeline au debut de _pipelines
369
+        if (isset($valeurs['_pipeline'])) {
370
+            $pipe = is_array($valeurs['_pipeline']) ? reset($valeurs['_pipeline']) : $valeurs['_pipeline'];
371
+            $args = is_array($valeurs['_pipeline']) ? end($valeurs['_pipeline']) : [];
372
+
373
+            $pipelines = [$pipe => $args];
374
+            $valeurs['_pipelines'] = array_merge($pipelines, $valeurs['_pipelines']);
375
+        }
376
+
377
+        // et enfin, ajoutons systematiquement un pipeline sur le squelette du formulaire
378
+        // qui constitue le cas le plus courant d'utilisation du pipeline recuperer_fond
379
+        // (performance, cela evite de s'injecter dans recuperer_fond utilise pour *tous* les squelettes)
380
+        $valeurs['_pipelines']['formulaire_fond'] = ['form' => $form, 'args' => $args, 'je_suis_poste' => $poste];
381
+    }
382
+
383
+    return $valeurs;
384 384
 }
385 385
 
386 386
 /**
@@ -399,9 +399,9 @@  discard block
 block discarded – undo
399 399
  * @return bool
400 400
  */
401 401
 function formulaire__identifier($form, $args, $p) {
402
-	if ($identifier_args = charger_fonction('identifier', "formulaires/$form", true)) {
403
-		return $identifier_args(...$args) === $identifier_args(...$p);
404
-	}
402
+    if ($identifier_args = charger_fonction('identifier', "formulaires/$form", true)) {
403
+        return $identifier_args(...$args) === $identifier_args(...$p);
404
+    }
405 405
 
406
-	return $args === $p;
406
+    return $args === $p;
407 407
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
 		if ($max_prof > 0) {
39 39
 			return array_map(
40 40
 				function($v) use ($max_prof) {
41
-					return protege_champ($v, $max_prof-1);
41
+					return protege_champ($v, $max_prof - 1);
42 42
 				},
43 43
 				$valeur
44 44
 			);
@@ -318,7 +318,7 @@  discard block
 block discarded – undo
318 318
 			foreach ($erreurs as $k => $v) {
319 319
 				if (is_string($v) and strlen(trim($v)) and strpos($k, '_') !== 0) {
320 320
 					// on encapsule dans un span car ces messages sont en general simple, juste du texte, et deja dans un span dans le form
321
-					$valeurs['erreurs'][$k] = "<span role='alert'>" . $erreurs[$k] . '</span>';
321
+					$valeurs['erreurs'][$k] = "<span role='alert'>".$erreurs[$k].'</span>';
322 322
 				}
323 323
 			}
324 324
 		}
Please login to merge, or discard this patch.
prive/formulaires/configurer_reducteur.php 2 patches
Indentation   +78 added lines, -78 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
 /**
@@ -27,24 +27,24 @@  discard block
 block discarded – undo
27 27
  *     Environnement du formulaire
28 28
  **/
29 29
 function formulaires_configurer_reducteur_charger_dist() {
30
-	$valeurs = [];
31
-	foreach (
32
-		[
33
-			'image_process',
34
-			'formats_graphiques',
35
-			'creer_preview',
36
-			'taille_preview',
37
-		] as $m
38
-	) {
39
-		$valeurs[$m] = $GLOBALS['meta'][$m] ?? null;
40
-	}
41
-
42
-	$valeurs['taille_preview'] = (int) $valeurs['taille_preview'];
43
-	if ($valeurs['taille_preview'] < 10) {
44
-		$valeurs['taille_preview'] = 120;
45
-	}
46
-
47
-	return $valeurs;
30
+    $valeurs = [];
31
+    foreach (
32
+        [
33
+            'image_process',
34
+            'formats_graphiques',
35
+            'creer_preview',
36
+            'taille_preview',
37
+        ] as $m
38
+    ) {
39
+        $valeurs[$m] = $GLOBALS['meta'][$m] ?? null;
40
+    }
41
+
42
+    $valeurs['taille_preview'] = (int) $valeurs['taille_preview'];
43
+    if ($valeurs['taille_preview'] < 10) {
44
+        $valeurs['taille_preview'] = 120;
45
+    }
46
+
47
+    return $valeurs;
48 48
 }
49 49
 
50 50
 
@@ -55,52 +55,52 @@  discard block
 block discarded – undo
55 55
  *     Retours des traitements
56 56
  **/
57 57
 function formulaires_configurer_reducteur_traiter_dist() {
58
-	$res = ['editable' => true];
59
-
60
-	if (is_array($image_process = _request('image_process_'))) {
61
-		$image_process = array_keys($image_process);
62
-		$image_process = reset($image_process);
63
-
64
-		// application du choix de vignette
65
-		if ($image_process) {
66
-			// mettre a jour les formats graphiques lisibles
67
-			switch ($image_process) {
68
-				case 'gd2':
69
-					$formats_graphiques = $GLOBALS['meta']['gd_formats_read'];
70
-					break;
71
-				case 'netpbm':
72
-					$formats_graphiques = $GLOBALS['meta']['netpbm_formats'];
73
-					break;
74
-				case 'convert':
75
-				case 'imagick':
76
-					$formats_graphiques = 'gif,jpg,png,webp';
77
-					break;
78
-				default: #debug
79
-					$formats_graphiques = '';
80
-					$image_process = 'non';
81
-					break;
82
-			}
83
-			ecrire_meta('formats_graphiques', $formats_graphiques, 'non');
84
-			ecrire_meta('image_process', $image_process, 'non');
85
-		}
86
-	}
87
-
88
-	foreach (
89
-		[
90
-			'creer_preview'
91
-		] as $m
92
-	) {
93
-		if (!is_null($v = _request($m))) {
94
-			ecrire_meta($m, $v == 'oui' ? 'oui' : 'non');
95
-		}
96
-	}
97
-	if (!is_null($v = _request('taille_preview'))) {
98
-		ecrire_meta('taille_preview', (int) $v);
99
-	}
100
-
101
-	$res['message_ok'] = _T('config_info_enregistree');
102
-
103
-	return $res;
58
+    $res = ['editable' => true];
59
+
60
+    if (is_array($image_process = _request('image_process_'))) {
61
+        $image_process = array_keys($image_process);
62
+        $image_process = reset($image_process);
63
+
64
+        // application du choix de vignette
65
+        if ($image_process) {
66
+            // mettre a jour les formats graphiques lisibles
67
+            switch ($image_process) {
68
+                case 'gd2':
69
+                    $formats_graphiques = $GLOBALS['meta']['gd_formats_read'];
70
+                    break;
71
+                case 'netpbm':
72
+                    $formats_graphiques = $GLOBALS['meta']['netpbm_formats'];
73
+                    break;
74
+                case 'convert':
75
+                case 'imagick':
76
+                    $formats_graphiques = 'gif,jpg,png,webp';
77
+                    break;
78
+                default: #debug
79
+                    $formats_graphiques = '';
80
+                    $image_process = 'non';
81
+                    break;
82
+            }
83
+            ecrire_meta('formats_graphiques', $formats_graphiques, 'non');
84
+            ecrire_meta('image_process', $image_process, 'non');
85
+        }
86
+    }
87
+
88
+    foreach (
89
+        [
90
+            'creer_preview'
91
+        ] as $m
92
+    ) {
93
+        if (!is_null($v = _request($m))) {
94
+            ecrire_meta($m, $v == 'oui' ? 'oui' : 'non');
95
+        }
96
+    }
97
+    if (!is_null($v = _request('taille_preview'))) {
98
+        ecrire_meta('taille_preview', (int) $v);
99
+    }
100
+
101
+    $res['message_ok'] = _T('config_info_enregistree');
102
+
103
+    return $res;
104 104
 }
105 105
 
106 106
 /**
@@ -113,17 +113,17 @@  discard block
 block discarded – undo
113 113
  *     URL d'action pour tester la librairie graphique en créant une vignette
114 114
  **/
115 115
 function url_vignette_choix(string $process): string {
116
-	$ok = match ($process) {
117
-		'gd2' => function_exists('ImageCreateTrueColor'),
118
-		'netpbm' => !(defined('_PNMSCALE_COMMAND') && _PNMSCALE_COMMAND == ''),
119
-		'imagick' => method_exists(\Imagick::class, 'readImage'),
120
-		'convert' => !(defined('_CONVERT_COMMAND') && _CONVERT_COMMAND == ''),
121
-		default => false,
122
-	};
123
-
124
-	if (!$ok) {
125
-		return '';
126
-	}
127
-
128
-	return generer_url_action('tester', "arg=$process&time=" . time());
116
+    $ok = match ($process) {
117
+        'gd2' => function_exists('ImageCreateTrueColor'),
118
+        'netpbm' => !(defined('_PNMSCALE_COMMAND') && _PNMSCALE_COMMAND == ''),
119
+        'imagick' => method_exists(\Imagick::class, 'readImage'),
120
+        'convert' => !(defined('_CONVERT_COMMAND') && _CONVERT_COMMAND == ''),
121
+        default => false,
122
+    };
123
+
124
+    if (!$ok) {
125
+        return '';
126
+    }
127
+
128
+    return generer_url_action('tester', "arg=$process&time=" . time());
129 129
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -125,5 +125,5 @@
 block discarded – undo
125 125
 		return '';
126 126
 	}
127 127
 
128
-	return generer_url_action('tester', "arg=$process&time=" . time());
128
+	return generer_url_action('tester', "arg=$process&time=".time());
129 129
 }
Please login to merge, or discard this patch.
ecrire/action/tester.php 2 patches
Indentation   +98 added lines, -98 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  */
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -29,101 +29,101 @@  discard block
 block discarded – undo
29 29
  * redirige sur l'image ainsi créée (sinon sur une image d'echec).
30 30
  **/
31 31
 function action_tester_dist() {
32
-	$arg = _request('arg');
33
-
34
-	// verifier les formats acceptes par GD
35
-	if ($arg === 'gd2') {
36
-		$gd_formats = [];
37
-
38
-		if (function_exists('imagetypes')) {
39
-			if (imagetypes() & IMG_GIF) {
40
-				$gd_formats[] = 'gif';
41
-			}
42
-			if (imagetypes() & IMG_JPG) {
43
-				$gd_formats[] = 'jpg';
44
-			}
45
-			if (imagetypes() & IMG_PNG) {
46
-				$gd_formats[] = 'png';
47
-			}
48
-			if (imagetypes() & IMG_WEBP) {
49
-				$gd_formats[] = 'webp';
50
-			}
51
-		}
52
-
53
-		$gd_formats = implode(',', $gd_formats);
54
-		ecrire_meta('gd_formats_read', $gd_formats);
55
-		ecrire_meta('gd_formats', $gd_formats);
56
-
57
-	} elseif ($arg == 'netpbm') {
58
-		// verifier les formats netpbm
59
-		if (!defined('_PNMSCALE_COMMAND')) {
60
-			define('_PNMSCALE_COMMAND', 'pnmscale');
61
-		} // Securite : mes_options.php peut preciser le chemin absolu
62
-		if (_PNMSCALE_COMMAND == '') {
63
-			return;
64
-		}
65
-		$netpbm_formats = [];
66
-
67
-		$jpegtopnm_command = str_replace(
68
-			'pnmscale',
69
-			'jpegtopnm',
70
-			_PNMSCALE_COMMAND
71
-		);
72
-		$pnmtojpeg_command = str_replace(
73
-			'pnmscale',
74
-			'pnmtojpeg',
75
-			_PNMSCALE_COMMAND
76
-		);
77
-
78
-		$vignette = _ROOT_IMG_PACK . 'test.jpg';
79
-		$dest = _DIR_VAR . 'test-jpg.jpg';
80
-		$commande = "$jpegtopnm_command $vignette | " . _PNMSCALE_COMMAND . " -width 10 | $pnmtojpeg_command > $dest";
81
-		spip_log($commande);
82
-		exec($commande);
83
-		if (($taille = @getimagesize($dest)) && $taille[1] == 10) {
84
-			$netpbm_formats[] = 'jpg';
85
-		}
86
-		$giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND);
87
-		$pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND);
88
-		$vignette = _ROOT_IMG_PACK . 'test.gif';
89
-		$dest = _DIR_VAR . 'test-gif.jpg';
90
-		$commande = "$giftopnm_command $vignette | " . _PNMSCALE_COMMAND . " -width 10 | $pnmtojpeg_command > $dest";
91
-		spip_log($commande);
92
-		exec($commande);
93
-		if (($taille = @getimagesize($dest)) && $taille[1] == 10) {
94
-			$netpbm_formats[] = 'gif';
95
-		}
96
-
97
-		$pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND);
98
-		$vignette = _ROOT_IMG_PACK . 'test.png';
99
-		$dest = _DIR_VAR . 'test-gif.jpg';
100
-		$commande = "$pngtopnm_command $vignette | " . _PNMSCALE_COMMAND . " -width 10 | $pnmtojpeg_command > $dest";
101
-		spip_log($commande);
102
-		exec($commande);
103
-		if (($taille = @getimagesize($dest)) && $taille[1] == 10) {
104
-			$netpbm_formats[] = 'png';
105
-		}
106
-
107
-		ecrire_meta('netpbm_formats', implode(',', $netpbm_formats ?: []));
108
-	}
109
-
110
-	// et maintenant envoyer la vignette de tests
111
-	if (in_array($arg, ['gd2', 'imagick', 'convert', 'netpbm'])) {
112
-		include_spip('inc/filtres');
113
-		include_spip('inc/filtres_images_mini');
114
-		$taille_preview = 150;
115
-		$image = _image_valeurs_trans(_DIR_IMG_PACK . 'test_image.jpg', "reduire-$taille_preview-$taille_preview", 'jpg');
116
-
117
-		$image['fichier_dest'] = _DIR_VAR . "test_$arg";
118
-
119
-		if (
120
-			($preview = _image_creer_vignette($image, $taille_preview, $taille_preview, $arg, true))
121
-			&& $preview['width'] * $preview['height'] > 0
122
-		) {
123
-			redirige_par_entete($preview['fichier']);
124
-		}
125
-	}
126
-
127
-	# image echec
128
-	redirige_par_entete(chemin_image('echec-reducteur-xx.svg'));
32
+    $arg = _request('arg');
33
+
34
+    // verifier les formats acceptes par GD
35
+    if ($arg === 'gd2') {
36
+        $gd_formats = [];
37
+
38
+        if (function_exists('imagetypes')) {
39
+            if (imagetypes() & IMG_GIF) {
40
+                $gd_formats[] = 'gif';
41
+            }
42
+            if (imagetypes() & IMG_JPG) {
43
+                $gd_formats[] = 'jpg';
44
+            }
45
+            if (imagetypes() & IMG_PNG) {
46
+                $gd_formats[] = 'png';
47
+            }
48
+            if (imagetypes() & IMG_WEBP) {
49
+                $gd_formats[] = 'webp';
50
+            }
51
+        }
52
+
53
+        $gd_formats = implode(',', $gd_formats);
54
+        ecrire_meta('gd_formats_read', $gd_formats);
55
+        ecrire_meta('gd_formats', $gd_formats);
56
+
57
+    } elseif ($arg == 'netpbm') {
58
+        // verifier les formats netpbm
59
+        if (!defined('_PNMSCALE_COMMAND')) {
60
+            define('_PNMSCALE_COMMAND', 'pnmscale');
61
+        } // Securite : mes_options.php peut preciser le chemin absolu
62
+        if (_PNMSCALE_COMMAND == '') {
63
+            return;
64
+        }
65
+        $netpbm_formats = [];
66
+
67
+        $jpegtopnm_command = str_replace(
68
+            'pnmscale',
69
+            'jpegtopnm',
70
+            _PNMSCALE_COMMAND
71
+        );
72
+        $pnmtojpeg_command = str_replace(
73
+            'pnmscale',
74
+            'pnmtojpeg',
75
+            _PNMSCALE_COMMAND
76
+        );
77
+
78
+        $vignette = _ROOT_IMG_PACK . 'test.jpg';
79
+        $dest = _DIR_VAR . 'test-jpg.jpg';
80
+        $commande = "$jpegtopnm_command $vignette | " . _PNMSCALE_COMMAND . " -width 10 | $pnmtojpeg_command > $dest";
81
+        spip_log($commande);
82
+        exec($commande);
83
+        if (($taille = @getimagesize($dest)) && $taille[1] == 10) {
84
+            $netpbm_formats[] = 'jpg';
85
+        }
86
+        $giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND);
87
+        $pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND);
88
+        $vignette = _ROOT_IMG_PACK . 'test.gif';
89
+        $dest = _DIR_VAR . 'test-gif.jpg';
90
+        $commande = "$giftopnm_command $vignette | " . _PNMSCALE_COMMAND . " -width 10 | $pnmtojpeg_command > $dest";
91
+        spip_log($commande);
92
+        exec($commande);
93
+        if (($taille = @getimagesize($dest)) && $taille[1] == 10) {
94
+            $netpbm_formats[] = 'gif';
95
+        }
96
+
97
+        $pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND);
98
+        $vignette = _ROOT_IMG_PACK . 'test.png';
99
+        $dest = _DIR_VAR . 'test-gif.jpg';
100
+        $commande = "$pngtopnm_command $vignette | " . _PNMSCALE_COMMAND . " -width 10 | $pnmtojpeg_command > $dest";
101
+        spip_log($commande);
102
+        exec($commande);
103
+        if (($taille = @getimagesize($dest)) && $taille[1] == 10) {
104
+            $netpbm_formats[] = 'png';
105
+        }
106
+
107
+        ecrire_meta('netpbm_formats', implode(',', $netpbm_formats ?: []));
108
+    }
109
+
110
+    // et maintenant envoyer la vignette de tests
111
+    if (in_array($arg, ['gd2', 'imagick', 'convert', 'netpbm'])) {
112
+        include_spip('inc/filtres');
113
+        include_spip('inc/filtres_images_mini');
114
+        $taille_preview = 150;
115
+        $image = _image_valeurs_trans(_DIR_IMG_PACK . 'test_image.jpg', "reduire-$taille_preview-$taille_preview", 'jpg');
116
+
117
+        $image['fichier_dest'] = _DIR_VAR . "test_$arg";
118
+
119
+        if (
120
+            ($preview = _image_creer_vignette($image, $taille_preview, $taille_preview, $arg, true))
121
+            && $preview['width'] * $preview['height'] > 0
122
+        ) {
123
+            redirige_par_entete($preview['fichier']);
124
+        }
125
+    }
126
+
127
+    # image echec
128
+    redirige_par_entete(chemin_image('echec-reducteur-xx.svg'));
129 129
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -75,9 +75,9 @@  discard block
 block discarded – undo
75 75
 			_PNMSCALE_COMMAND
76 76
 		);
77 77
 
78
-		$vignette = _ROOT_IMG_PACK . 'test.jpg';
79
-		$dest = _DIR_VAR . 'test-jpg.jpg';
80
-		$commande = "$jpegtopnm_command $vignette | " . _PNMSCALE_COMMAND . " -width 10 | $pnmtojpeg_command > $dest";
78
+		$vignette = _ROOT_IMG_PACK.'test.jpg';
79
+		$dest = _DIR_VAR.'test-jpg.jpg';
80
+		$commande = "$jpegtopnm_command $vignette | "._PNMSCALE_COMMAND." -width 10 | $pnmtojpeg_command > $dest";
81 81
 		spip_log($commande);
82 82
 		exec($commande);
83 83
 		if (($taille = @getimagesize($dest)) && $taille[1] == 10) {
@@ -85,9 +85,9 @@  discard block
 block discarded – undo
85 85
 		}
86 86
 		$giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND);
87 87
 		$pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND);
88
-		$vignette = _ROOT_IMG_PACK . 'test.gif';
89
-		$dest = _DIR_VAR . 'test-gif.jpg';
90
-		$commande = "$giftopnm_command $vignette | " . _PNMSCALE_COMMAND . " -width 10 | $pnmtojpeg_command > $dest";
88
+		$vignette = _ROOT_IMG_PACK.'test.gif';
89
+		$dest = _DIR_VAR.'test-gif.jpg';
90
+		$commande = "$giftopnm_command $vignette | "._PNMSCALE_COMMAND." -width 10 | $pnmtojpeg_command > $dest";
91 91
 		spip_log($commande);
92 92
 		exec($commande);
93 93
 		if (($taille = @getimagesize($dest)) && $taille[1] == 10) {
@@ -95,9 +95,9 @@  discard block
 block discarded – undo
95 95
 		}
96 96
 
97 97
 		$pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND);
98
-		$vignette = _ROOT_IMG_PACK . 'test.png';
99
-		$dest = _DIR_VAR . 'test-gif.jpg';
100
-		$commande = "$pngtopnm_command $vignette | " . _PNMSCALE_COMMAND . " -width 10 | $pnmtojpeg_command > $dest";
98
+		$vignette = _ROOT_IMG_PACK.'test.png';
99
+		$dest = _DIR_VAR.'test-gif.jpg';
100
+		$commande = "$pngtopnm_command $vignette | "._PNMSCALE_COMMAND." -width 10 | $pnmtojpeg_command > $dest";
101 101
 		spip_log($commande);
102 102
 		exec($commande);
103 103
 		if (($taille = @getimagesize($dest)) && $taille[1] == 10) {
@@ -112,9 +112,9 @@  discard block
 block discarded – undo
112 112
 		include_spip('inc/filtres');
113 113
 		include_spip('inc/filtres_images_mini');
114 114
 		$taille_preview = 150;
115
-		$image = _image_valeurs_trans(_DIR_IMG_PACK . 'test_image.jpg', "reduire-$taille_preview-$taille_preview", 'jpg');
115
+		$image = _image_valeurs_trans(_DIR_IMG_PACK.'test_image.jpg', "reduire-$taille_preview-$taille_preview", 'jpg');
116 116
 
117
-		$image['fichier_dest'] = _DIR_VAR . "test_$arg";
117
+		$image['fichier_dest'] = _DIR_VAR."test_$arg";
118 118
 
119 119
 		if (
120 120
 			($preview = _image_creer_vignette($image, $taille_preview, $taille_preview, $arg, true))
Please login to merge, or discard this patch.
ecrire/lang/ecrire_fr.php 1 patch
Indentation   +838 added lines, -838 removed lines patch added patch discarded remove patch
@@ -2,437 +2,437 @@  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_fichier_cle_manquant_1' => 'L’installation doit être faite par un webmestre avec un backup des clés et son mot de passe',
28
-	'avis_connexion_erreur_fichier_cle_manquant_2' => 'L’installation doit être faite par un webmestre avec un backup des clés',
29
-	'avis_connexion_erreur_nom_base' => 'Le nom de la base ne peut contenir que des lettres, des chiffres et des tirets',
30
-	'avis_connexion_ldap_echec_1' => 'La connexion au serveur LDAP a échoué.',
31
-	'avis_connexion_ldap_echec_2' => 'Revenez à la page précédente, et vérifiez les informations que vous avez fournies.',
32
-	'avis_connexion_ldap_echec_3' => 'Alternativement, n’utilisez pas le support LDAP pour importer des utilisateurs.',
33
-	'avis_deplacement_rubrique' => 'Attention ! Cette rubrique contient @contient_breves@ brève@scb@ : si vous la déplacez, veuillez cocher cette case de confirmation.',
34
-	'avis_erreur_connexion_mysql' => 'Erreur de connexion SQL',
35
-	'avis_erreur_creation_compte' => 'Echec lors de l’initialisation du compte',
36
-	'avis_espace_interdit' => '<b>Espace interdit</b> <div>SPIP est déjà installé.</div>',
37
-	'avis_lecture_noms_bases_1' => 'Le programme d’installation n’a pas pu lire les noms des bases de données installées.',
38
-	'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_fichier_cle_manquant_1' => 'L’installation doit être faite par un webmestre avec un backup des clés et son mot de passe',
28
+    'avis_connexion_erreur_fichier_cle_manquant_2' => 'L’installation doit être faite par un webmestre avec un backup des clés',
29
+    'avis_connexion_erreur_nom_base' => 'Le nom de la base ne peut contenir que des lettres, des chiffres et des tirets',
30
+    'avis_connexion_ldap_echec_1' => 'La connexion au serveur LDAP a échoué.',
31
+    'avis_connexion_ldap_echec_2' => 'Revenez à la page précédente, et vérifiez les informations que vous avez fournies.',
32
+    'avis_connexion_ldap_echec_3' => 'Alternativement, n’utilisez pas le support LDAP pour importer des utilisateurs.',
33
+    'avis_deplacement_rubrique' => 'Attention ! Cette rubrique contient @contient_breves@ brève@scb@ : si vous la déplacez, veuillez cocher cette case de confirmation.',
34
+    'avis_erreur_connexion_mysql' => 'Erreur de connexion SQL',
35
+    'avis_erreur_creation_compte' => 'Echec lors de l’initialisation du compte',
36
+    'avis_espace_interdit' => '<b>Espace interdit</b> <div>SPIP est déjà installé.</div>',
37
+    'avis_lecture_noms_bases_1' => 'Le programme d’installation n’a pas pu lire les noms des bases de données installées.',
38
+    'avis_lecture_noms_bases_2' => 'Soit aucune base n’est disponible, soit la fonction permettant de lister les bases a été désactivée
39 39
 		pour des raisons de sécurité (ce qui est le cas chez de nombreux hébergeurs).',
40
-	'avis_lecture_noms_bases_3' => 'Dans la seconde alternative, il est probable qu’une base portant votre nom de login soit utilisable :',
41
-	'avis_non_acces_page' => 'Vous n’avez pas accès à cette page.',
42
-	'avis_operation_echec' => 'L’opération a échoué.',
43
-	'avis_operation_impossible' => 'Opération impossible',
44
-	'avis_suppression_base' => 'ATTENTION, la suppression des données est irréversible',
40
+    'avis_lecture_noms_bases_3' => 'Dans la seconde alternative, il est probable qu’une base portant votre nom de login soit utilisable :',
41
+    'avis_non_acces_page' => 'Vous n’avez pas accès à cette page.',
42
+    'avis_operation_echec' => 'L’opération a échoué.',
43
+    'avis_operation_impossible' => 'Opération impossible',
44
+    'avis_suppression_base' => 'ATTENTION, la suppression des données est irréversible',
45 45
 
46
-	// B
47
-	'bouton_acces_ldap' => 'Ajouter l’accès à LDAP',
48
-	'bouton_ajouter' => 'Ajouter',
49
-	'bouton_annuler' => 'Annuler',
50
-	'bouton_cache_activer' => 'Réactiver le cache',
51
-	'bouton_cache_desactiver' => 'Désactiver temporairement le cache',
52
-	'bouton_demande_publication' => 'Demander la publication de cet article',
53
-	'bouton_desactive_tout' => 'Tout désactiver',
54
-	'bouton_desinstaller' => 'Désinstaller',
55
-	'bouton_effacer_tout' => 'Effacer TOUT',
56
-	'bouton_envoyer_message' => 'Message définitif : envoyer',
57
-	'bouton_fermer' => 'Fermer',
58
-	'bouton_mettre_a_jour_base' => 'Mettre à jour la base de données',
59
-	'bouton_modifier' => 'Modifier',
60
-	'bouton_radio_afficher' => 'Afficher',
61
-	'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Apparaître dans la liste des rédacteurs connectés',
62
-	'bouton_radio_envoi_annonces_adresse' => 'Envoyer les annonces à l’adresse :',
63
-	'bouton_radio_envoi_liste_nouveautes' => 'Envoyer la liste des nouveautés',
64
-	'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Ne pas apparaître dans la liste des rédacteurs',
65
-	'bouton_radio_non_envoi_annonces_editoriales' => 'Ne pas envoyer d’annonces éditoriales',
66
-	'bouton_redirection' => 'REDIRECTION',
67
-	'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Réinitialiser aux valeurs par défaut',
68
-	'bouton_relancer_inscription' => 'Relancer l’inscription',
69
-	'bouton_relancer_inscriptions' => 'Relancer les inscriptions',
70
-	'bouton_relancer_installation' => 'Relancer l’installation',
71
-	'bouton_reset_password' => 'Générer un nouveau mot de passe et l’envoyer par email',
72
-	'bouton_suivant' => 'Suivant',
73
-	'bouton_tenter_recuperation' => 'Tenter une réparation',
74
-	'bouton_test_proxy' => 'Essayer le proxy',
75
-	'bouton_vider_cache' => 'Vider le cache',
46
+    // B
47
+    'bouton_acces_ldap' => 'Ajouter l’accès à LDAP',
48
+    'bouton_ajouter' => 'Ajouter',
49
+    'bouton_annuler' => 'Annuler',
50
+    'bouton_cache_activer' => 'Réactiver le cache',
51
+    'bouton_cache_desactiver' => 'Désactiver temporairement le cache',
52
+    'bouton_demande_publication' => 'Demander la publication de cet article',
53
+    'bouton_desactive_tout' => 'Tout désactiver',
54
+    'bouton_desinstaller' => 'Désinstaller',
55
+    'bouton_effacer_tout' => 'Effacer TOUT',
56
+    'bouton_envoyer_message' => 'Message définitif : envoyer',
57
+    'bouton_fermer' => 'Fermer',
58
+    'bouton_mettre_a_jour_base' => 'Mettre à jour la base de données',
59
+    'bouton_modifier' => 'Modifier',
60
+    'bouton_radio_afficher' => 'Afficher',
61
+    'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Apparaître dans la liste des rédacteurs connectés',
62
+    'bouton_radio_envoi_annonces_adresse' => 'Envoyer les annonces à l’adresse :',
63
+    'bouton_radio_envoi_liste_nouveautes' => 'Envoyer la liste des nouveautés',
64
+    'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Ne pas apparaître dans la liste des rédacteurs',
65
+    'bouton_radio_non_envoi_annonces_editoriales' => 'Ne pas envoyer d’annonces éditoriales',
66
+    'bouton_redirection' => 'REDIRECTION',
67
+    'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Réinitialiser aux valeurs par défaut',
68
+    'bouton_relancer_inscription' => 'Relancer l’inscription',
69
+    'bouton_relancer_inscriptions' => 'Relancer les inscriptions',
70
+    'bouton_relancer_installation' => 'Relancer l’installation',
71
+    'bouton_reset_password' => 'Générer un nouveau mot de passe et l’envoyer par email',
72
+    'bouton_suivant' => 'Suivant',
73
+    'bouton_tenter_recuperation' => 'Tenter une réparation',
74
+    'bouton_test_proxy' => 'Essayer le proxy',
75
+    'bouton_vider_cache' => 'Vider le cache',
76 76
 
77
-	// C
78
-	'cache_modifiable_webmestre' => 'Ce paramètre est modifiable par le webmestre du site.',
79
-	'calendrier_synchro' => 'Si vous utilisez un logiciel d’agenda compatible <b>iCal</b>, vous pouvez le synchroniser avec les informations de ce site.',
80
-	'config_activer_champs' => 'Activer les champs suivants',
81
-	'config_choix_base_sup' => 'indiquer une base sur ce serveur',
82
-	'config_erreur_base_sup' => 'SPIP n’a pas accès à la liste des bases accessibles',
83
-	'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.',
84
-	'config_info_base_sup_disponibles' => 'Bases supplémentaires déjà interrogeables :',
85
-	'config_info_enregistree' => 'La nouvelle configuration a été enregistrée',
86
-	'config_info_logos' => 'Chaque élément du site peut avoir un logo, ainsi qu’un « logo de survol »',
87
-	'config_info_logos_utiliser' => 'Utiliser les logos',
88
-	'config_info_logos_utiliser_non' => 'Ne pas utiliser les logos',
89
-	'config_info_logos_utiliser_survol' => 'Utiliser les logos de survol',
90
-	'config_info_logos_utiliser_survol_non' => 'Ne pas utiliser les logos de survol',
91
-	'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.',
92
-	'config_redirection' => 'Articles virtuels',
93
-	'config_titre_base_sup' => 'Déclaration d’une base supplémentaire',
94
-	'config_titre_base_sup_choix' => 'Choisissez une base supplémentaire',
95
-	'connexion_ldap' => 'Connexion :',
96
-	'creer_et_associer_un_auteur' => 'Créer et associer un auteur',
77
+    // C
78
+    'cache_modifiable_webmestre' => 'Ce paramètre est modifiable par le webmestre du site.',
79
+    'calendrier_synchro' => 'Si vous utilisez un logiciel d’agenda compatible <b>iCal</b>, vous pouvez le synchroniser avec les informations de ce site.',
80
+    'config_activer_champs' => 'Activer les champs suivants',
81
+    'config_choix_base_sup' => 'indiquer une base sur ce serveur',
82
+    'config_erreur_base_sup' => 'SPIP n’a pas accès à la liste des bases accessibles',
83
+    '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.',
84
+    'config_info_base_sup_disponibles' => 'Bases supplémentaires déjà interrogeables :',
85
+    'config_info_enregistree' => 'La nouvelle configuration a été enregistrée',
86
+    'config_info_logos' => 'Chaque élément du site peut avoir un logo, ainsi qu’un « logo de survol »',
87
+    'config_info_logos_utiliser' => 'Utiliser les logos',
88
+    'config_info_logos_utiliser_non' => 'Ne pas utiliser les logos',
89
+    'config_info_logos_utiliser_survol' => 'Utiliser les logos de survol',
90
+    'config_info_logos_utiliser_survol_non' => 'Ne pas utiliser les logos de survol',
91
+    '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.',
92
+    'config_redirection' => 'Articles virtuels',
93
+    'config_titre_base_sup' => 'Déclaration d’une base supplémentaire',
94
+    'config_titre_base_sup_choix' => 'Choisissez une base supplémentaire',
95
+    'connexion_ldap' => 'Connexion :',
96
+    'creer_et_associer_un_auteur' => 'Créer et associer un auteur',
97 97
 
98
-	// D
99
-	'date_mot_heures' => 'heures',
98
+    // D
99
+    'date_mot_heures' => 'heures',
100 100
 
101
-	// E
102
-	'ecran_connexion_couleur_principale' => 'Couleur principale',
103
-	'ecran_connexion_image_fond' => 'Image de fond',
104
-	'ecran_connexion_image_fond_explication' => 'Utiliser une image (format JPEG, 1920x1080 pixels)',
105
-	'ecran_connexion_image_revenir_couleur_defaut' => 'Revenir à la couleur par défaut',
106
-	'ecran_connexion_titre' => 'Écran de connexion',
107
-	'ecran_securite' => ' + écran de sécurité @version@',
108
-	'email' => 'email',
109
-	'email_2' => 'email :',
110
-	'en_savoir_plus' => 'En savoir plus',
111
-	'entree_adresse_annuaire' => 'Adresse de l’annuaire',
112
-	'entree_adresse_email' => 'Votre adresse email',
113
-	'entree_adresse_email_2' => 'Adresse email',
114
-	'entree_base_donnee_1' => 'Adresse de la base de données',
115
-	'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.)',
116
-	'entree_biographie' => 'Courte biographie en quelques mots.',
117
-	'entree_chemin_acces' => '<b>Entrer</b> le chemin d’accès :',
118
-	'entree_cle_pgp' => 'Votre clé PGP',
119
-	'entree_cle_pgp_2' => 'Clé PGP',
120
-	'entree_contenu_rubrique' => '(Contenu de la rubrique en quelques mots.)',
121
-	'entree_identifiants_connexion' => 'Vos identifiants de connexion...',
122
-	'entree_identifiants_connexion_2' => 'Identifiants de connexion',
123
-	'entree_informations_connexion_ldap' => 'Veuillez entrer dans ce formulaire les informations de connexion à votre annuaire LDAP.
101
+    // E
102
+    'ecran_connexion_couleur_principale' => 'Couleur principale',
103
+    'ecran_connexion_image_fond' => 'Image de fond',
104
+    'ecran_connexion_image_fond_explication' => 'Utiliser une image (format JPEG, 1920x1080 pixels)',
105
+    'ecran_connexion_image_revenir_couleur_defaut' => 'Revenir à la couleur par défaut',
106
+    'ecran_connexion_titre' => 'Écran de connexion',
107
+    'ecran_securite' => ' + écran de sécurité @version@',
108
+    'email' => 'email',
109
+    'email_2' => 'email :',
110
+    'en_savoir_plus' => 'En savoir plus',
111
+    'entree_adresse_annuaire' => 'Adresse de l’annuaire',
112
+    'entree_adresse_email' => 'Votre adresse email',
113
+    'entree_adresse_email_2' => 'Adresse email',
114
+    'entree_base_donnee_1' => 'Adresse de la base de données',
115
+    '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.)',
116
+    'entree_biographie' => 'Courte biographie en quelques mots.',
117
+    'entree_chemin_acces' => '<b>Entrer</b> le chemin d’accès :',
118
+    'entree_cle_pgp' => 'Votre clé PGP',
119
+    'entree_cle_pgp_2' => 'Clé PGP',
120
+    'entree_contenu_rubrique' => '(Contenu de la rubrique en quelques mots.)',
121
+    'entree_identifiants_connexion' => 'Vos identifiants de connexion...',
122
+    'entree_identifiants_connexion_2' => 'Identifiants de connexion',
123
+    'entree_informations_connexion_ldap' => 'Veuillez entrer dans ce formulaire les informations de connexion à votre annuaire LDAP.
124 124
 	Ces informations doivent pouvoir vous être fournies par l’administrateur du système,
125 125
 	ou du réseau.',
126
-	'entree_infos_perso' => 'Qui êtes-vous ?',
127
-	'entree_infos_perso_2' => 'Qui est l’auteur ?',
128
-	'entree_interieur_rubrique' => 'À l’intérieur de la rubrique :',
129
-	'entree_liens_sites' => '<b>Lien hypertexte</b> (référence, site à visiter...)',
130
-	'entree_login' => 'Votre login',
131
-	'entree_login_connexion_1' => 'Le login de connexion',
132
-	'entree_login_connexion_2' => '(Correspond parfois à votre login d’accès au FTP ; parfois laissé vide)',
133
-	'entree_mot_passe' => 'Votre mot de passe',
134
-	'entree_mot_passe_1' => 'Le mot de passe de connexion',
135
-	'entree_mot_passe_2' => '(Correspond parfois à votre mot de passe pour le FTP ; parfois laissé vide)',
136
-	'entree_nom_fichier' => 'Veuillez entrer le nom du fichier @texte_compresse@ :',
137
-	'entree_nom_pseudo' => 'Votre nom ou votre pseudo',
138
-	'entree_nom_pseudo_1' => '(Votre nom ou votre pseudo)',
139
-	'entree_nom_pseudo_2' => 'Nom ou pseudo',
140
-	'entree_nom_site' => 'Le nom de votre site',
141
-	'entree_nom_site_2' => 'Nom du site de l’auteur',
142
-	'entree_nouveau_passe' => 'Nouveau mot de passe',
143
-	'entree_passe_ldap' => 'Mot de passe',
144
-	'entree_port_annuaire' => 'Le numéro de port de l’annuaire',
145
-	'entree_signature' => 'Signature',
146
-	'entree_titre_obligatoire' => '<b>Titre</b> [Obligatoire]<br />',
147
-	'entree_url' => 'L’adresse (URL) de votre site',
148
-	'entree_url_2' => 'Adresse (URL) du site',
149
-	'erreur_connect_deja_existant' => 'Un serveur existe déjà avec ce nom',
150
-	'erreur_contenu_suspect' => 'Texte échappé',
151
-	'erreur_email_deja_existant' => 'Cette adresse email est déjà enregistrée.',
152
-	'erreur_nom_connect_incorrect' => 'Ce nom de serveur n’est pas autorisé',
153
-	'erreur_plugin_attribut_balise_manquant' => 'Attribut @attribut@ manquant dans la balise @balise@.',
154
-	'erreur_plugin_desinstalation_echouee' => 'La désinstallation du plugin a échoué. Vous pouvez néanmoins le désactiver.',
155
-	'erreur_plugin_fichier_absent' => 'Fichier absent',
156
-	'erreur_plugin_fichier_def_absent' => 'Fichier de définition absent',
157
-	'erreur_plugin_nom_fonction_interdit' => 'Nom de fonction interdit',
158
-	'erreur_plugin_nom_manquant' => 'Nom du plugin manquant',
159
-	'erreur_plugin_prefix_manquant' => 'Espace de nommage du plugin non défini',
160
-	'erreur_plugin_tag_plugin_absent' => '&lt;plugin&gt; manquant dans le fichier de définition',
161
-	'erreur_plugin_version_manquant' => 'Version du plugin manquante',
162
-	'erreur_type_fichier' => 'Type de fichier incorrect',
126
+    'entree_infos_perso' => 'Qui êtes-vous ?',
127
+    'entree_infos_perso_2' => 'Qui est l’auteur ?',
128
+    'entree_interieur_rubrique' => 'À l’intérieur de la rubrique :',
129
+    'entree_liens_sites' => '<b>Lien hypertexte</b> (référence, site à visiter...)',
130
+    'entree_login' => 'Votre login',
131
+    'entree_login_connexion_1' => 'Le login de connexion',
132
+    'entree_login_connexion_2' => '(Correspond parfois à votre login d’accès au FTP ; parfois laissé vide)',
133
+    'entree_mot_passe' => 'Votre mot de passe',
134
+    'entree_mot_passe_1' => 'Le mot de passe de connexion',
135
+    'entree_mot_passe_2' => '(Correspond parfois à votre mot de passe pour le FTP ; parfois laissé vide)',
136
+    'entree_nom_fichier' => 'Veuillez entrer le nom du fichier @texte_compresse@ :',
137
+    'entree_nom_pseudo' => 'Votre nom ou votre pseudo',
138
+    'entree_nom_pseudo_1' => '(Votre nom ou votre pseudo)',
139
+    'entree_nom_pseudo_2' => 'Nom ou pseudo',
140
+    'entree_nom_site' => 'Le nom de votre site',
141
+    'entree_nom_site_2' => 'Nom du site de l’auteur',
142
+    'entree_nouveau_passe' => 'Nouveau mot de passe',
143
+    'entree_passe_ldap' => 'Mot de passe',
144
+    'entree_port_annuaire' => 'Le numéro de port de l’annuaire',
145
+    'entree_signature' => 'Signature',
146
+    'entree_titre_obligatoire' => '<b>Titre</b> [Obligatoire]<br />',
147
+    'entree_url' => 'L’adresse (URL) de votre site',
148
+    'entree_url_2' => 'Adresse (URL) du site',
149
+    'erreur_connect_deja_existant' => 'Un serveur existe déjà avec ce nom',
150
+    'erreur_contenu_suspect' => 'Texte échappé',
151
+    'erreur_email_deja_existant' => 'Cette adresse email est déjà enregistrée.',
152
+    'erreur_nom_connect_incorrect' => 'Ce nom de serveur n’est pas autorisé',
153
+    'erreur_plugin_attribut_balise_manquant' => 'Attribut @attribut@ manquant dans la balise @balise@.',
154
+    'erreur_plugin_desinstalation_echouee' => 'La désinstallation du plugin a échoué. Vous pouvez néanmoins le désactiver.',
155
+    'erreur_plugin_fichier_absent' => 'Fichier absent',
156
+    'erreur_plugin_fichier_def_absent' => 'Fichier de définition absent',
157
+    'erreur_plugin_nom_fonction_interdit' => 'Nom de fonction interdit',
158
+    'erreur_plugin_nom_manquant' => 'Nom du plugin manquant',
159
+    'erreur_plugin_prefix_manquant' => 'Espace de nommage du plugin non défini',
160
+    'erreur_plugin_tag_plugin_absent' => '&lt;plugin&gt; manquant dans le fichier de définition',
161
+    'erreur_plugin_version_manquant' => 'Version du plugin manquante',
162
+    'erreur_type_fichier' => 'Type de fichier incorrect',
163 163
 
164
-	// H
165
-	'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@.',
166
-	'htaccess_inoperant' => 'htaccess inopérant',
164
+    // H
165
+    '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@.',
166
+    'htaccess_inoperant' => 'htaccess inopérant',
167 167
 
168
-	// I
169
-	'ical_info1' => 'Cette page présente plusieurs méthodes pour rester en contact avec la vie de ce site.',
170
-	'ical_info2' => 'Pour plus de renseignements sur toutes ces techniques, n’hésitez pas à consulter <a href="@spipnet@">la documentation de SPIP</a>.',
171
-	'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.',
172
-	'ical_methode_http' => 'Téléchargement',
173
-	'ical_methode_webcal' => 'Synchronisation (webcal://)',
174
-	'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...).',
175
-	'ical_texte_public' => 'Ce calendrier vous permet de suivre l’activité publique de ce site (articles et brèves publiés).',
176
-	'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).',
177
-	'ical_titre_js' => 'Javascript',
178
-	'ical_titre_mailing' => 'Mailing-list',
179
-	'ical_titre_rss' => 'Fichiers de syndication',
180
-	'icone_accueil' => 'Accueil',
181
-	'icone_activer_cookie' => 'Activer le cookie de correspondance',
182
-	'icone_activite' => 'Activité',
183
-	'icone_admin_plugin' => 'Gestion des plugins',
184
-	'icone_administration' => 'Maintenance',
185
-	'icone_afficher_auteurs' => 'Afficher les auteurs',
186
-	'icone_afficher_visiteurs' => 'Afficher les visiteurs',
187
-	'icone_arret_discussion' => 'Ne plus participer à cette discussion',
188
-	'icone_calendrier' => 'Calendrier',
189
-	'icone_configuration' => 'Configuration',
190
-	'icone_creer_auteur' => 'Créer un nouvel auteur et l’associer à cet article',
191
-	'icone_creer_mot_cle' => 'Créer un nouveau mot-clé et le lier à cet article',
192
-	'icone_creer_rubrique_2' => 'Créer une nouvelle rubrique',
193
-	'icone_developpement' => 'Développement',
194
-	'icone_edition' => 'Édition',
195
-	'icone_ma_langue' => 'Ma langue',
196
-	'icone_mes_infos' => 'Mes informations',
197
-	'icone_mes_preferences' => 'Mes préférences',
198
-	'icone_modifier_article' => 'Modifier cet article',
199
-	'icone_modifier_rubrique' => 'Modifier cette rubrique',
200
-	'icone_publication' => 'Publication',
201
-	'icone_relancer_signataire' => 'Relancer le signataire',
202
-	'icone_retour' => 'Retour',
203
-	'icone_retour_article' => 'Retour à l’article',
204
-	'icone_squelette' => 'Squelettes',
205
-	'icone_suivi_publication' => 'Suivi de la publication',
206
-	'icone_supprimer_cookie' => 'Supprimer le cookie de correspondance',
207
-	'icone_supprimer_rubrique' => 'Supprimer cette rubrique',
208
-	'icone_supprimer_signature' => 'Supprimer cette signature',
209
-	'icone_valider_signature' => 'Valider cette signature',
210
-	'image_administrer_rubrique' => 'Vous pouvez administrer cette rubrique',
211
-	'impossible_modifier_login_auteur' => 'Impossible de modifier le login.',
212
-	'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.',
213
-	'info_1_article' => '1 article',
214
-	'info_1_auteur' => '1 auteur',
215
-	'info_1_message' => '1 message',
216
-	'info_1_mot_cle' => '1 mot-clé',
217
-	'info_1_rubrique' => '1 rubrique',
218
-	'info_1_visiteur' => '1 visiteur',
219
-	'info_activer_cookie' => 'Vous pouvez activer un <b>cookie de correspondance</b>, ce qui vous
168
+    // I
169
+    'ical_info1' => 'Cette page présente plusieurs méthodes pour rester en contact avec la vie de ce site.',
170
+    'ical_info2' => 'Pour plus de renseignements sur toutes ces techniques, n’hésitez pas à consulter <a href="@spipnet@">la documentation de SPIP</a>.',
171
+    '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.',
172
+    'ical_methode_http' => 'Téléchargement',
173
+    'ical_methode_webcal' => 'Synchronisation (webcal://)',
174
+    '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...).',
175
+    'ical_texte_public' => 'Ce calendrier vous permet de suivre l’activité publique de ce site (articles et brèves publiés).',
176
+    '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).',
177
+    'ical_titre_js' => 'Javascript',
178
+    'ical_titre_mailing' => 'Mailing-list',
179
+    'ical_titre_rss' => 'Fichiers de syndication',
180
+    'icone_accueil' => 'Accueil',
181
+    'icone_activer_cookie' => 'Activer le cookie de correspondance',
182
+    'icone_activite' => 'Activité',
183
+    'icone_admin_plugin' => 'Gestion des plugins',
184
+    'icone_administration' => 'Maintenance',
185
+    'icone_afficher_auteurs' => 'Afficher les auteurs',
186
+    'icone_afficher_visiteurs' => 'Afficher les visiteurs',
187
+    'icone_arret_discussion' => 'Ne plus participer à cette discussion',
188
+    'icone_calendrier' => 'Calendrier',
189
+    'icone_configuration' => 'Configuration',
190
+    'icone_creer_auteur' => 'Créer un nouvel auteur et l’associer à cet article',
191
+    'icone_creer_mot_cle' => 'Créer un nouveau mot-clé et le lier à cet article',
192
+    'icone_creer_rubrique_2' => 'Créer une nouvelle rubrique',
193
+    'icone_developpement' => 'Développement',
194
+    'icone_edition' => 'Édition',
195
+    'icone_ma_langue' => 'Ma langue',
196
+    'icone_mes_infos' => 'Mes informations',
197
+    'icone_mes_preferences' => 'Mes préférences',
198
+    'icone_modifier_article' => 'Modifier cet article',
199
+    'icone_modifier_rubrique' => 'Modifier cette rubrique',
200
+    'icone_publication' => 'Publication',
201
+    'icone_relancer_signataire' => 'Relancer le signataire',
202
+    'icone_retour' => 'Retour',
203
+    'icone_retour_article' => 'Retour à l’article',
204
+    'icone_squelette' => 'Squelettes',
205
+    'icone_suivi_publication' => 'Suivi de la publication',
206
+    'icone_supprimer_cookie' => 'Supprimer le cookie de correspondance',
207
+    'icone_supprimer_rubrique' => 'Supprimer cette rubrique',
208
+    'icone_supprimer_signature' => 'Supprimer cette signature',
209
+    'icone_valider_signature' => 'Valider cette signature',
210
+    'image_administrer_rubrique' => 'Vous pouvez administrer cette rubrique',
211
+    'impossible_modifier_login_auteur' => 'Impossible de modifier le login.',
212
+    'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.',
213
+    'info_1_article' => '1 article',
214
+    'info_1_auteur' => '1 auteur',
215
+    'info_1_message' => '1 message',
216
+    'info_1_mot_cle' => '1 mot-clé',
217
+    'info_1_rubrique' => '1 rubrique',
218
+    'info_1_visiteur' => '1 visiteur',
219
+    'info_activer_cookie' => 'Vous pouvez activer un <b>cookie de correspondance</b>, ce qui vous
220 220
 	permettra de passer facilement du site public au site privé.',
221
-	'info_activer_menu_developpement' => 'Afficher le menu Développement',
222
-	'info_admin_etre_webmestre' => 'Me donner les droits de webmestre',
223
-	'info_admin_je_suis_webmestre' => 'Je suis <b>webmestre</b>',
224
-	'info_admin_statuer_webmestre' => 'Donner à cet administrateur les droits de webmestre',
225
-	'info_admin_webmestre' => 'Cet administrateur est <b>webmestre</b>',
226
-	'info_administrateur' => 'Administrateur',
227
-	'info_administrateur_1' => 'Administrateur',
228
-	'info_administrateur_2' => 'du site (<i>utilisez avec précaution</i>)',
229
-	'info_administrateur_site_01' => 'Si vous êtes administrateur du site, veuillez',
230
-	'info_administrateur_site_02' => 'cliquer sur ce lien',
231
-	'info_administrateurs' => 'Administrateurs',
232
-	'info_administrer_rubrique' => 'Vous pouvez administrer cette rubrique',
233
-	'info_adresse' => 'à l’adresse :',
234
-	'info_adresse_desinscription' => 'Adresse de désinscription :',
235
-	'info_adresse_url' => 'Adresse (URL) du site public',
236
-	'info_afficher_par_nb' => 'Afficher par',
237
-	'info_aide_en_ligne' => 'Aide en ligne SPIP',
238
-	'info_ajout_image' => 'Lorsque vous ajoutez des images en tant que documents joints à un article,
221
+    'info_activer_menu_developpement' => 'Afficher le menu Développement',
222
+    'info_admin_etre_webmestre' => 'Me donner les droits de webmestre',
223
+    'info_admin_je_suis_webmestre' => 'Je suis <b>webmestre</b>',
224
+    'info_admin_statuer_webmestre' => 'Donner à cet administrateur les droits de webmestre',
225
+    'info_admin_webmestre' => 'Cet administrateur est <b>webmestre</b>',
226
+    'info_administrateur' => 'Administrateur',
227
+    'info_administrateur_1' => 'Administrateur',
228
+    'info_administrateur_2' => 'du site (<i>utilisez avec précaution</i>)',
229
+    'info_administrateur_site_01' => 'Si vous êtes administrateur du site, veuillez',
230
+    'info_administrateur_site_02' => 'cliquer sur ce lien',
231
+    'info_administrateurs' => 'Administrateurs',
232
+    'info_administrer_rubrique' => 'Vous pouvez administrer cette rubrique',
233
+    'info_adresse' => 'à l’adresse :',
234
+    'info_adresse_desinscription' => 'Adresse de désinscription :',
235
+    'info_adresse_url' => 'Adresse (URL) du site public',
236
+    'info_afficher_par_nb' => 'Afficher par',
237
+    'info_aide_en_ligne' => 'Aide en ligne SPIP',
238
+    'info_ajout_image' => 'Lorsque vous ajoutez des images en tant que documents joints à un article,
239 239
 		SPIP peut créer pour vous, automatiquement, des vignettes (miniatures) des
240 240
 		images insérées. Cela permet par exemple de créer
241 241
 		automatiquement une galerie ou un portfolio.',
242
-	'info_ajouter_rubrique' => 'Ajouter une autre rubrique à administrer :',
243
-	'info_annonce_nouveautes' => 'Annonce des nouveautés',
244
-	'info_article' => 'article',
245
-	'info_article_2' => 'articles',
246
-	'info_article_a_paraitre' => 'Les articles post-datés à paraître',
247
-	'info_articles_02' => 'articles',
248
-	'info_articles_2' => 'Articles',
249
-	'info_articles_auteur' => 'Les articles de cet auteur',
250
-	'info_articles_miens' => 'Mes articles',
251
-	'info_articles_tous' => 'Tous les articles',
252
-	'info_articles_trouves' => 'Articles trouvés',
253
-	'info_attente_validation' => 'Vos articles en attente de validation',
254
-	'info_aucun_article' => 'Aucun article',
255
-	'info_aucun_auteur' => 'Aucun auteur',
256
-	'info_aucun_message' => 'Aucun message',
257
-	'info_aucun_rubrique' => 'Aucune rubrique',
258
-	'info_aujourdhui' => 'aujourd’hui :',
259
-	'info_auteur_gere_rubriques' => 'Cet auteur gère les rubriques suivantes :',
260
-	'info_auteur_gere_toutes_rubriques' => 'Cet auteur gère <b>toutes les rubriques</b>',
261
-	'info_auteur_gere_toutes_rubriques_2' => 'Je gère <b>toutes les rubriques</b>',
262
-	'info_auteurs' => 'Les auteurs',
263
-	'info_auteurs_par_tri' => 'Auteurs@partri@',
264
-	'info_auteurs_trouves' => 'Auteurs trouvés',
265
-	'info_authentification_externe' => 'Authentification externe',
266
-	'info_avertissement' => 'Avertissement',
267
-	'info_barre_outils' => 'avec sa barre d’outils ?',
268
-	'info_base_installee' => 'La structure de votre base de données est installée.',
269
-	'info_bio' => 'Biographie',
270
-	'info_cache_desactive' => 'Le cache est temporairement désactivé.',
271
-	'info_chapeau' => 'Chapeau',
272
-	'info_chapeau_2' => 'Chapeau :',
273
-	'info_chemin_acces_1' => 'Options : <b>Chemin d’accès dans l’annuaire</b>',
274
-	'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.',
275
-	'info_chemin_acces_annuaire' => 'Options : <b>Chemin d’accès dans l’annuaire</b>',
276
-	'info_choix_base' => 'Troisième étape :',
277
-	'info_classement_1' => '<sup>er</sup> sur @liste@',
278
-	'info_classement_2' => '<sup>e</sup> sur @liste@',
279
-	'info_code_acces' => 'N’oubliez pas vos propres codes d’accès !',
280
-	'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>) :',
281
-	'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.',
282
-	'info_confirmer_passe' => 'Confirmer ce nouveau mot de passe :',
283
-	'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.',
284
-	'info_conflit_edition_differences' => 'Différences :',
285
-	'info_conflit_edition_version_enregistree' => 'La version enregistrée :',
286
-	'info_conflit_edition_votre_version' => 'Votre version :',
287
-	'info_connexion_base' => 'Essai de connexion à la base',
288
-	'info_connexion_base_donnee' => 'Connexion à votre base de données',
289
-	'info_connexion_ldap_ok' => '<b>La connexion LDAP a réussi.</b><p> Vous pouvez passer à l’étape suivante.</p>',
290
-	'info_connexion_mysql' => 'Votre connexion SQL',
291
-	'info_connexion_ok' => 'La connexion a réussi.',
292
-	'info_contact' => 'Contact',
293
-	'info_contenu_articles' => 'Contenu des articles',
294
-	'info_contributions' => 'Contributions',
295
-	'info_creation_paragraphe' => 'Pour créer des paragraphes, laissez simplement des lignes vides.',
296
-	'info_creation_rubrique' => 'Avant de pouvoir écrire des articles,<br /> vous devez créer au moins une rubrique.<br />',
297
-	'info_creation_tables' => 'Création des tables de la base',
298
-	'info_creer_base' => '<b>Créer</b> une nouvelle base de données :',
299
-	'info_dans_rubrique' => 'Dans la rubrique :',
300
-	'info_date_publication_anterieure' => 'Date de rédaction antérieure :',
301
-	'info_date_referencement' => 'DATE DE RÉFÉRENCEMENT DE CE SITE :',
302
-	'info_derniere_etape' => 'C’est terminé !',
303
-	'info_descriptif' => 'Descriptif :',
304
-	'info_desinstaller_plugin' => 'supprime les données et désactive le plugin',
305
-	'info_discussion_cours' => 'Discussions en cours',
306
-	'info_ecrire_article' => 'Avant de pouvoir écrire des articles, vous devez créer au moins une rubrique.',
307
-	'info_email_envoi' => 'Adresse email d’envoi (optionnel)',
308
-	'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) :',
309
-	'info_email_webmestre' => 'Adresse email du webmestre',
310
-	'info_envoi_email_automatique' => 'Envoi de mails automatique',
311
-	'info_envoyer_maintenant' => 'Envoyer maintenant',
312
-	'info_etape_suivante' => 'Passer à l’étape suivante',
313
-	'info_etape_suivante_1' => 'Vous pouvez passer à l’étape suivante.',
314
-	'info_etape_suivante_2' => 'Vous pouvez passer à l’étape suivante.',
315
-	'info_exceptions_proxy' => 'Exceptions pour le proxy',
316
-	'info_exportation_base' => 'exportation de la base vers @archive@',
317
-	'info_facilite_suivi_activite' => 'Afin de faciliter le suivi de l’activité
242
+    'info_ajouter_rubrique' => 'Ajouter une autre rubrique à administrer :',
243
+    'info_annonce_nouveautes' => 'Annonce des nouveautés',
244
+    'info_article' => 'article',
245
+    'info_article_2' => 'articles',
246
+    'info_article_a_paraitre' => 'Les articles post-datés à paraître',
247
+    'info_articles_02' => 'articles',
248
+    'info_articles_2' => 'Articles',
249
+    'info_articles_auteur' => 'Les articles de cet auteur',
250
+    'info_articles_miens' => 'Mes articles',
251
+    'info_articles_tous' => 'Tous les articles',
252
+    'info_articles_trouves' => 'Articles trouvés',
253
+    'info_attente_validation' => 'Vos articles en attente de validation',
254
+    'info_aucun_article' => 'Aucun article',
255
+    'info_aucun_auteur' => 'Aucun auteur',
256
+    'info_aucun_message' => 'Aucun message',
257
+    'info_aucun_rubrique' => 'Aucune rubrique',
258
+    'info_aujourdhui' => 'aujourd’hui :',
259
+    'info_auteur_gere_rubriques' => 'Cet auteur gère les rubriques suivantes :',
260
+    'info_auteur_gere_toutes_rubriques' => 'Cet auteur gère <b>toutes les rubriques</b>',
261
+    'info_auteur_gere_toutes_rubriques_2' => 'Je gère <b>toutes les rubriques</b>',
262
+    'info_auteurs' => 'Les auteurs',
263
+    'info_auteurs_par_tri' => 'Auteurs@partri@',
264
+    'info_auteurs_trouves' => 'Auteurs trouvés',
265
+    'info_authentification_externe' => 'Authentification externe',
266
+    'info_avertissement' => 'Avertissement',
267
+    'info_barre_outils' => 'avec sa barre d’outils ?',
268
+    'info_base_installee' => 'La structure de votre base de données est installée.',
269
+    'info_bio' => 'Biographie',
270
+    'info_cache_desactive' => 'Le cache est temporairement désactivé.',
271
+    'info_chapeau' => 'Chapeau',
272
+    'info_chapeau_2' => 'Chapeau :',
273
+    'info_chemin_acces_1' => 'Options : <b>Chemin d’accès dans l’annuaire</b>',
274
+    '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.',
275
+    'info_chemin_acces_annuaire' => 'Options : <b>Chemin d’accès dans l’annuaire</b>',
276
+    'info_choix_base' => 'Troisième étape :',
277
+    'info_classement_1' => '<sup>er</sup> sur @liste@',
278
+    'info_classement_2' => '<sup>e</sup> sur @liste@',
279
+    'info_code_acces' => 'N’oubliez pas vos propres codes d’accès !',
280
+    '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>) :',
281
+    '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.',
282
+    'info_confirmer_passe' => 'Confirmer ce nouveau mot de passe :',
283
+    '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.',
284
+    'info_conflit_edition_differences' => 'Différences :',
285
+    'info_conflit_edition_version_enregistree' => 'La version enregistrée :',
286
+    'info_conflit_edition_votre_version' => 'Votre version :',
287
+    'info_connexion_base' => 'Essai de connexion à la base',
288
+    'info_connexion_base_donnee' => 'Connexion à votre base de données',
289
+    'info_connexion_ldap_ok' => '<b>La connexion LDAP a réussi.</b><p> Vous pouvez passer à l’étape suivante.</p>',
290
+    'info_connexion_mysql' => 'Votre connexion SQL',
291
+    'info_connexion_ok' => 'La connexion a réussi.',
292
+    'info_contact' => 'Contact',
293
+    'info_contenu_articles' => 'Contenu des articles',
294
+    'info_contributions' => 'Contributions',
295
+    'info_creation_paragraphe' => 'Pour créer des paragraphes, laissez simplement des lignes vides.',
296
+    'info_creation_rubrique' => 'Avant de pouvoir écrire des articles,<br /> vous devez créer au moins une rubrique.<br />',
297
+    'info_creation_tables' => 'Création des tables de la base',
298
+    'info_creer_base' => '<b>Créer</b> une nouvelle base de données :',
299
+    'info_dans_rubrique' => 'Dans la rubrique :',
300
+    'info_date_publication_anterieure' => 'Date de rédaction antérieure :',
301
+    'info_date_referencement' => 'DATE DE RÉFÉRENCEMENT DE CE SITE :',
302
+    'info_derniere_etape' => 'C’est terminé !',
303
+    'info_descriptif' => 'Descriptif :',
304
+    'info_desinstaller_plugin' => 'supprime les données et désactive le plugin',
305
+    'info_discussion_cours' => 'Discussions en cours',
306
+    'info_ecrire_article' => 'Avant de pouvoir écrire des articles, vous devez créer au moins une rubrique.',
307
+    'info_email_envoi' => 'Adresse email d’envoi (optionnel)',
308
+    '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) :',
309
+    'info_email_webmestre' => 'Adresse email du webmestre',
310
+    'info_envoi_email_automatique' => 'Envoi de mails automatique',
311
+    'info_envoyer_maintenant' => 'Envoyer maintenant',
312
+    'info_etape_suivante' => 'Passer à l’étape suivante',
313
+    'info_etape_suivante_1' => 'Vous pouvez passer à l’étape suivante.',
314
+    'info_etape_suivante_2' => 'Vous pouvez passer à l’étape suivante.',
315
+    'info_exceptions_proxy' => 'Exceptions pour le proxy',
316
+    'info_exportation_base' => 'exportation de la base vers @archive@',
317
+    'info_facilite_suivi_activite' => 'Afin de faciliter le suivi de l’activité
318 318
 		éditoriale du site, SPIP peut faire parvenir par mail, par exemple
319 319
 		à une mailing-list des rédacteurs, l’annonce des demandes de
320 320
 		publication et des validations d’articles. Indiquer une ou plusieurs adresses, séparées par des virgules.',
321
-	'info_fichiers_authent' => 'Fichiers d’authentification « .htpasswd »',
322
-	'info_forums_abo_invites' => 'Votre site comporte des forums sur abonnement ; les visiteurs sont donc invités à s’enregistrer sur le site public.',
323
-	'info_gauche_admin_tech' => '<b>Cette page est uniquement accessible aux responsables du site.</b><p> Elle donne accès aux différentes
321
+    'info_fichiers_authent' => 'Fichiers d’authentification « .htpasswd »',
322
+    'info_forums_abo_invites' => 'Votre site comporte des forums sur abonnement ; les visiteurs sont donc invités à s’enregistrer sur le site public.',
323
+    'info_gauche_admin_tech' => '<b>Cette page est uniquement accessible aux responsables du site.</b><p> Elle donne accès aux différentes
324 324
 fonctions de maintenance technique. Certaines d’entre elles donnent lieu à un processus d’authentification spécifique, qui
325 325
 exige d’avoir un accès FTP au site Web.</p>',
326
-	'info_gauche_admin_vider' => '<b>Cette page est uniquement accessible aux responsables du site.</b><p> Elle donne accès aux différentes
326
+    'info_gauche_admin_vider' => '<b>Cette page est uniquement accessible aux responsables du site.</b><p> Elle donne accès aux différentes
327 327
 fonctions de maintenance technique. Certaines d’entre elles donnent lieu à un processus d’authentification spécifique, qui
328 328
 exige d’avoir un accès FTP au site Web.</p>',
329
-	'info_gauche_auteurs' => 'Vous trouverez ici tous les auteurs du site.
329
+    'info_gauche_auteurs' => 'Vous trouverez ici tous les auteurs du site.
330 330
  Leur statut est indiqué par la couleur de leur icone (administrateur = vert ; rédacteur = jaune).',
331
-	'info_gauche_auteurs_exterieurs' => 'Les auteurs extérieurs, sans accès au site, sont indiqués par une icone bleue ;
331
+    'info_gauche_auteurs_exterieurs' => 'Les auteurs extérieurs, sans accès au site, sont indiqués par une icone bleue ;
332 332
 		les auteurs effacés par une icone grise.',
333
-	'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).',
334
-	'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.',
335
-	'info_gauche_visiteurs_enregistres' => 'Vous trouverez ici les visiteurs enregistrés
333
+    '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).',
334
+    '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.',
335
+    'info_gauche_visiteurs_enregistres' => 'Vous trouverez ici les visiteurs enregistrés
336 336
 	dans l’espace public du site (forums sur abonnement).',
337
-	'info_generation_miniatures_images' => 'Génération de miniatures des images',
338
-	'info_gerer_trad_objets' => '@objets@ : gérer les liens de traduction',
339
-	'info_hebergeur_desactiver_envoi_email' => 'Certains hébergeurs désactivent l’envoi automatique de
337
+    'info_generation_miniatures_images' => 'Génération de miniatures des images',
338
+    'info_gerer_trad_objets' => '@objets@ : gérer les liens de traduction',
339
+    'info_hebergeur_desactiver_envoi_email' => 'Certains hébergeurs désactivent l’envoi automatique de
340 340
 		mails depuis leurs serveurs. Dans ce cas, les fonctionnalités suivantes
341 341
 		de SPIP ne fonctionneront pas.',
342
-	'info_hier' => 'hier :',
343
-	'info_identification_publique' => 'Votre identité publique...',
344
-	'info_image_process' => 'Veuillez sélectionner la meilleure méthode de fabrication des vignettes en cliquant sur l’image correspondante.',
345
-	'info_images_auto' => 'Images calculées automatiquement',
346
-	'info_informations_personnelles' => 'Informations personnelles',
347
-	'info_inscription' => 'Inscription le',
348
-	'info_inscription_automatique' => 'Inscription automatique de nouveaux rédacteurs',
349
-	'info_jeu_caractere' => 'Jeu de caractères du site',
350
-	'info_jours' => 'jours',
351
-	'info_laisser_champs_vides' => 'laisser ces champs vides)',
352
-	'info_langues' => 'Langues du site',
353
-	'info_ldap_ok' => 'L’authentification LDAP est installée.',
354
-	'info_lien_hypertexte' => 'Lien hypertexte :',
355
-	'info_liste_nouveautes_envoyee' => 'La liste des nouveautés a été envoyée',
356
-	'info_liste_redacteurs_connectes' => 'Liste des rédacteurs connectés',
357
-	'info_login_existant' => 'Ce login existe déjà.',
358
-	'info_login_trop_court' => 'Login trop court.',
359
-	'info_login_trop_court_car_pluriel' => 'Le login doit contenir au moins @nb@ caractères.',
360
-	'info_logos' => 'Les logos',
361
-	'info_maximum' => 'maximum :',
362
-	'info_meme_rubrique' => 'Dans la même rubrique',
363
-	'info_message_en_redaction' => 'Vos messages en cours de rédaction',
364
-	'info_message_technique' => 'Message technique :',
365
-	'info_messagerie_interne' => 'Messagerie interne',
366
-	'info_mise_a_niveau_base' => 'mise à niveau de votre base SQL',
367
-	'info_mise_a_niveau_base_2' => '{{Attention !}} Vous avez installé une version
342
+    'info_hier' => 'hier :',
343
+    'info_identification_publique' => 'Votre identité publique...',
344
+    'info_image_process' => 'Veuillez sélectionner la meilleure méthode de fabrication des vignettes en cliquant sur l’image correspondante.',
345
+    'info_images_auto' => 'Images calculées automatiquement',
346
+    'info_informations_personnelles' => 'Informations personnelles',
347
+    'info_inscription' => 'Inscription le',
348
+    'info_inscription_automatique' => 'Inscription automatique de nouveaux rédacteurs',
349
+    'info_jeu_caractere' => 'Jeu de caractères du site',
350
+    'info_jours' => 'jours',
351
+    'info_laisser_champs_vides' => 'laisser ces champs vides)',
352
+    'info_langues' => 'Langues du site',
353
+    'info_ldap_ok' => 'L’authentification LDAP est installée.',
354
+    'info_lien_hypertexte' => 'Lien hypertexte :',
355
+    'info_liste_nouveautes_envoyee' => 'La liste des nouveautés a été envoyée',
356
+    'info_liste_redacteurs_connectes' => 'Liste des rédacteurs connectés',
357
+    'info_login_existant' => 'Ce login existe déjà.',
358
+    'info_login_trop_court' => 'Login trop court.',
359
+    'info_login_trop_court_car_pluriel' => 'Le login doit contenir au moins @nb@ caractères.',
360
+    'info_logos' => 'Les logos',
361
+    'info_maximum' => 'maximum :',
362
+    'info_meme_rubrique' => 'Dans la même rubrique',
363
+    'info_message_en_redaction' => 'Vos messages en cours de rédaction',
364
+    'info_message_technique' => 'Message technique :',
365
+    'info_messagerie_interne' => 'Messagerie interne',
366
+    'info_mise_a_niveau_base' => 'mise à niveau de votre base SQL',
367
+    'info_mise_a_niveau_base_2' => '{{Attention !}} Vous avez installé une version
368 368
 		des fichiers SPIP {antérieure} à celle qui se trouvait
369 369
 		auparavant sur ce site : votre base de données risque d’être
370 370
 		perdue et votre site ne fonctionnera plus.<br />{{Réinstallez les
371 371
 		fichiers de SPIP.}}',
372
-	'info_modification_enregistree' => 'Votre modification a été enregistrée',
373
-	'info_modifier_auteur' => 'Modifier l’auteur :',
374
-	'info_modifier_rubrique' => 'Modifier la rubrique :',
375
-	'info_modifier_titre' => 'Modifier : @titre@',
376
-	'info_mon_site_spip' => 'Mon site SPIP',
377
-	'info_moyenne' => 'moyenne :',
378
-	'info_multi_cet_article' => 'Langue de cet article :',
379
-	'info_multi_langues_choisies' => 'Veuillez sélectionner ci-après les langues à disposition des rédacteurs de votre site.
372
+    'info_modification_enregistree' => 'Votre modification a été enregistrée',
373
+    'info_modifier_auteur' => 'Modifier l’auteur :',
374
+    'info_modifier_rubrique' => 'Modifier la rubrique :',
375
+    'info_modifier_titre' => 'Modifier : @titre@',
376
+    'info_mon_site_spip' => 'Mon site SPIP',
377
+    'info_moyenne' => 'moyenne :',
378
+    'info_multi_cet_article' => 'Langue de cet article :',
379
+    'info_multi_langues_choisies' => 'Veuillez sélectionner ci-après les langues à disposition des rédacteurs de votre site.
380 380
 		Les langues déjà utilisées dans votre site (affichées en premier) ne peuvent pas être désactivées.',
381
-	'info_multi_objets' => '@objets@ : activer le menu de langue',
382
-	'info_multi_secteurs' => '... seulement pour les rubriques situées à la racine ?',
383
-	'info_nb_articles' => '@nb@ articles',
384
-	'info_nb_auteurs' => '@nb@ auteurs',
385
-	'info_nb_messages' => '@nb@ messages',
386
-	'info_nb_mots_cles' => '@nb@ mots-clés',
387
-	'info_nb_rubriques' => '@nb@ rubriques',
388
-	'info_nb_visiteurs' => '@nb@ visiteurs',
389
-	'info_nom' => 'Nom',
390
-	'info_nom_destinataire' => 'Nom du destinataire',
391
-	'info_nom_pas_conforme' => 'les tags html ne sont pas autorisés',
392
-	'info_nom_site' => 'Nom de votre site',
393
-	'info_nombre_articles' => '@nb_articles@ articles,',
394
-	'info_nombre_rubriques' => '@nb_rubriques@ rubriques,',
395
-	'info_nombre_sites' => '@nb_sites@ sites,',
396
-	'info_non_deplacer' => 'Ne pas déplacer...',
397
-	'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP peut envoyer, régulièrement, l’annonce des dernières nouveautés du site
381
+    'info_multi_objets' => '@objets@ : activer le menu de langue',
382
+    'info_multi_secteurs' => '... seulement pour les rubriques situées à la racine ?',
383
+    'info_nb_articles' => '@nb@ articles',
384
+    'info_nb_auteurs' => '@nb@ auteurs',
385
+    'info_nb_messages' => '@nb@ messages',
386
+    'info_nb_mots_cles' => '@nb@ mots-clés',
387
+    'info_nb_rubriques' => '@nb@ rubriques',
388
+    'info_nb_visiteurs' => '@nb@ visiteurs',
389
+    'info_nom' => 'Nom',
390
+    'info_nom_destinataire' => 'Nom du destinataire',
391
+    'info_nom_pas_conforme' => 'les tags html ne sont pas autorisés',
392
+    'info_nom_site' => 'Nom de votre site',
393
+    'info_nombre_articles' => '@nb_articles@ articles,',
394
+    'info_nombre_rubriques' => '@nb_rubriques@ rubriques,',
395
+    'info_nombre_sites' => '@nb_sites@ sites,',
396
+    'info_non_deplacer' => 'Ne pas déplacer...',
397
+    'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP peut envoyer, régulièrement, l’annonce des dernières nouveautés du site
398 398
 		(articles et brèves récemment publiés).',
399
-	'info_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
400
-	'info_non_modifiable' => 'ne peut pas être modifié',
401
-	'info_non_suppression_mot_cle' => 'je ne veux pas supprimer ce mot-clé.',
402
-	'info_notes' => 'Notes',
403
-	'info_nouvel_article' => 'Nouvel article',
404
-	'info_nouvelle_traduction' => 'Nouvelle traduction :',
405
-	'info_numero_article' => 'ARTICLE NUMÉRO :',
406
-	'info_obligatoire_02' => '(obligatoire)',
407
-	'info_option_accepter_visiteurs' => 'Accepter l’inscription de visiteurs du site public',
408
-	'info_option_ne_pas_accepter_visiteurs' => 'Refuser l’inscription des visiteurs',
409
-	'info_options_avancees' => 'OPTIONS AVANCÉES',
410
-	'info_ou' => 'ou...',
411
-	'info_page_interdite' => 'Page interdite',
412
-	'info_par_nom' => 'par nom',
413
-	'info_par_nombre_article' => 'par nombre d’articles',
414
-	'info_par_statut' => 'par statut',
415
-	'info_par_tri' => '’(par @tri@)’',
416
-	'info_passe_trop_court' => 'Mot de passe trop court.',
417
-	'info_passe_trop_court_car_pluriel' => 'Le mot de passe doit contenir au moins @nb@ caractères.',
418
-	'info_passes_identiques' => 'Les deux mots de passe ne sont pas identiques.',
419
-	'info_plus_cinq_car' => 'plus de 5 caractères',
420
-	'info_plus_cinq_car_2' => '(Plus de 5 caractères)',
421
-	'info_plus_trois_car' => '(Plus de 3 caractères)',
422
-	'info_popularite' => 'popularité : @popularite@ ; visites : @visites@',
423
-	'info_post_scriptum' => 'Post-Scriptum',
424
-	'info_post_scriptum_2' => 'Post-scriptum :',
425
-	'info_pour' => 'pour',
426
-	'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 ?',
427
-	'info_procedez_par_etape' => 'procédez étape par étape',
428
-	'info_procedure_maj_version' => 'la procédure de mise à jour doit être lancée afin d’adapter
399
+    'info_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
400
+    'info_non_modifiable' => 'ne peut pas être modifié',
401
+    'info_non_suppression_mot_cle' => 'je ne veux pas supprimer ce mot-clé.',
402
+    'info_notes' => 'Notes',
403
+    'info_nouvel_article' => 'Nouvel article',
404
+    'info_nouvelle_traduction' => 'Nouvelle traduction :',
405
+    'info_numero_article' => 'ARTICLE NUMÉRO :',
406
+    'info_obligatoire_02' => '(obligatoire)',
407
+    'info_option_accepter_visiteurs' => 'Accepter l’inscription de visiteurs du site public',
408
+    'info_option_ne_pas_accepter_visiteurs' => 'Refuser l’inscription des visiteurs',
409
+    'info_options_avancees' => 'OPTIONS AVANCÉES',
410
+    'info_ou' => 'ou...',
411
+    'info_page_interdite' => 'Page interdite',
412
+    'info_par_nom' => 'par nom',
413
+    'info_par_nombre_article' => 'par nombre d’articles',
414
+    'info_par_statut' => 'par statut',
415
+    'info_par_tri' => '’(par @tri@)’',
416
+    'info_passe_trop_court' => 'Mot de passe trop court.',
417
+    'info_passe_trop_court_car_pluriel' => 'Le mot de passe doit contenir au moins @nb@ caractères.',
418
+    'info_passes_identiques' => 'Les deux mots de passe ne sont pas identiques.',
419
+    'info_plus_cinq_car' => 'plus de 5 caractères',
420
+    'info_plus_cinq_car_2' => '(Plus de 5 caractères)',
421
+    'info_plus_trois_car' => '(Plus de 3 caractères)',
422
+    'info_popularite' => 'popularité : @popularite@ ; visites : @visites@',
423
+    'info_post_scriptum' => 'Post-Scriptum',
424
+    'info_post_scriptum_2' => 'Post-scriptum :',
425
+    'info_pour' => 'pour',
426
+    '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 ?',
427
+    'info_procedez_par_etape' => 'procédez étape par étape',
428
+    'info_procedure_maj_version' => 'la procédure de mise à jour doit être lancée afin d’adapter
429 429
 	la base de données à la nouvelle version de SPIP.',
430
-	'info_proxy_ok' => 'Test du proxy réussi.',
431
-	'info_ps' => 'P.-S.',
432
-	'info_publier' => 'publier',
433
-	'info_publies' => 'Vos articles publiés en ligne',
434
-	'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 :',
435
-	'info_question_inscription_nouveaux_redacteurs' => 'Acceptez-vous les inscriptions de nouveaux rédacteurs à
430
+    'info_proxy_ok' => 'Test du proxy réussi.',
431
+    'info_ps' => 'P.-S.',
432
+    'info_publier' => 'publier',
433
+    'info_publies' => 'Vos articles publiés en ligne',
434
+    '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 :',
435
+    'info_question_inscription_nouveaux_redacteurs' => 'Acceptez-vous les inscriptions de nouveaux rédacteurs à
436 436
   partir du site public ? Si vous acceptez, les visiteurs pourront s’inscrire
437 437
   depuis un formulaire automatisé et accéderont alors à l’espace privé pour
438 438
   proposer leurs propres articles. <div class="notice">Lors de la phase d’inscription,
@@ -441,405 +441,405 @@  discard block
 block discarded – undo
441 441
   hébergeurs désactivent l’envoi de mails depuis leurs
442 442
   serveurs : dans ce cas, l’inscription automatique est
443 443
   impossible.</div>',
444
-	'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes',
445
-	'info_racine_site' => 'Racine du site',
446
-	'info_recharger_page' => 'Veuillez recharger cette page dans quelques instants.',
447
-	'info_recherche_auteur_zero' => 'Aucun résultat pour « @cherche_auteur@ ».',
448
-	'info_recommencer' => 'Veuillez recommencer.',
449
-	'info_redacteur_1' => 'Rédacteur',
450
-	'info_redacteur_2' => 'ayant accès à l’espace privé (<i>recommandé</i>)',
451
-	'info_redacteurs' => 'Rédacteurs',
452
-	'info_redaction_en_cours' => 'EN COURS DE RÉDACTION',
453
-	'info_redirection' => 'Redirection',
454
-	'info_redirection_activee' => 'La redirection est activée.',
455
-	'info_redirection_boucle' => 'Vous essayez de rediriger l’article sur lui-même.',
456
-	'info_redirection_desactivee' => 'La redirection a été supprimée.',
457
-	'info_refuses' => 'Vos articles refusés',
458
-	'info_reglage_ldap' => 'Options : <b>Réglage de l’importation LDAP</b>',
459
-	'info_renvoi_article' => '<b>Redirection.</b> Cet article renvoie à la page :',
460
-	'info_reserve_admin' => 'Seuls les administrateurs peuvent modifier cette adresse.',
461
-	'info_restreindre_rubrique' => 'Restreindre la gestion à la rubrique :',
462
-	'info_resultat_recherche' => 'Résultats de la recherche :',
463
-	'info_rubriques' => 'Rubriques',
464
-	'info_rubriques_02' => 'rubriques',
465
-	'info_rubriques_trouvees' => 'Rubriques trouvées',
466
-	'info_sans_titre' => 'Sans titre',
467
-	'info_selection_chemin_acces' => '<b>Sélectionnez</b> ci-après le chemin d’accès dans l’annuaire :',
468
-	'info_signatures' => 'signatures',
469
-	'info_site' => 'Site',
470
-	'info_site_2' => 'site :',
471
-	'info_site_min' => 'site',
472
-	'info_site_reference_2' => 'Site référencé',
473
-	'info_site_web' => 'Site Web :',
474
-	'info_sites' => 'sites',
475
-	'info_sites_lies_mot' => 'Les sites référencés liés à ce mot-clé',
476
-	'info_sites_proxy' => 'Utiliser un proxy',
477
-	'info_sites_trouves' => 'Sites trouvés',
478
-	'info_sous_titre' => 'Soustitre :',
479
-	'info_statut_administrateur' => 'Administrateur',
480
-	'info_statut_auteur' => 'Statut de cet auteur :',
481
-	'info_statut_auteur_2' => 'Je suis',
482
-	'info_statut_auteur_a_confirmer' => 'Inscription à confirmer',
483
-	'info_statut_auteur_autre' => 'Autre statut :',
484
-	'info_statut_redacteur' => 'Rédacteur',
485
-	'info_statut_utilisateurs_1' => 'Statut par défaut des utilisateurs importés',
486
-	'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.',
487
-	'info_suivi_activite' => 'Suivi de l’activité éditoriale',
488
-	'info_surtitre' => 'Surtitre :',
489
-	'info_syndication_integrale_1' => 'Votre site propose des fichiers de syndication (voir « <a href="@url@">@titre@</a> »).',
490
-	'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 ?',
491
-	'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.',
492
-	'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.',
493
-	'info_taille_maximale_vignette' => 'Taille maximale des vignettes générées par le système :',
494
-	'info_terminer_installation' => 'Vous pouvez maintenant terminer la procédure d’installation standard.',
495
-	'info_texte' => 'Texte',
496
-	'info_texte_explicatif' => 'Texte explicatif',
497
-	'info_texte_long' => '(le texte est long : il apparaît donc en plusieurs parties qui seront recollées après validation.)',
498
-	'info_texte_message' => 'Texte de votre message',
499
-	'info_texte_message_02' => 'Texte du message',
500
-	'info_titre' => 'Titre :',
501
-	'info_total' => 'total :',
502
-	'info_tous_articles_en_redaction' => 'Tous les articles en cours de rédaction',
503
-	'info_tous_articles_presents' => 'Tous les articles publiés dans cette rubrique',
504
-	'info_tous_articles_refuses' => 'Tous les articles refusés',
505
-	'info_tous_les' => 'tous les :',
506
-	'info_tout_site' => 'Tout le site',
507
-	'info_tout_site2' => 'L’article n’a pas été traduit dans cette langue.',
508
-	'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.',
509
-	'info_tout_site4' => 'L’article a été traduit dans cette langue, et la traduction est à jour.',
510
-	'info_tout_site5' => 'Article original.',
511
-	'info_tout_site6' => '<b>Attention :</b> seuls les articles originaux sont affichés.
444
+    'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes',
445
+    'info_racine_site' => 'Racine du site',
446
+    'info_recharger_page' => 'Veuillez recharger cette page dans quelques instants.',
447
+    'info_recherche_auteur_zero' => 'Aucun résultat pour « @cherche_auteur@ ».',
448
+    'info_recommencer' => 'Veuillez recommencer.',
449
+    'info_redacteur_1' => 'Rédacteur',
450
+    'info_redacteur_2' => 'ayant accès à l’espace privé (<i>recommandé</i>)',
451
+    'info_redacteurs' => 'Rédacteurs',
452
+    'info_redaction_en_cours' => 'EN COURS DE RÉDACTION',
453
+    'info_redirection' => 'Redirection',
454
+    'info_redirection_activee' => 'La redirection est activée.',
455
+    'info_redirection_boucle' => 'Vous essayez de rediriger l’article sur lui-même.',
456
+    'info_redirection_desactivee' => 'La redirection a été supprimée.',
457
+    'info_refuses' => 'Vos articles refusés',
458
+    'info_reglage_ldap' => 'Options : <b>Réglage de l’importation LDAP</b>',
459
+    'info_renvoi_article' => '<b>Redirection.</b> Cet article renvoie à la page :',
460
+    'info_reserve_admin' => 'Seuls les administrateurs peuvent modifier cette adresse.',
461
+    'info_restreindre_rubrique' => 'Restreindre la gestion à la rubrique :',
462
+    'info_resultat_recherche' => 'Résultats de la recherche :',
463
+    'info_rubriques' => 'Rubriques',
464
+    'info_rubriques_02' => 'rubriques',
465
+    'info_rubriques_trouvees' => 'Rubriques trouvées',
466
+    'info_sans_titre' => 'Sans titre',
467
+    'info_selection_chemin_acces' => '<b>Sélectionnez</b> ci-après le chemin d’accès dans l’annuaire :',
468
+    'info_signatures' => 'signatures',
469
+    'info_site' => 'Site',
470
+    'info_site_2' => 'site :',
471
+    'info_site_min' => 'site',
472
+    'info_site_reference_2' => 'Site référencé',
473
+    'info_site_web' => 'Site Web :',
474
+    'info_sites' => 'sites',
475
+    'info_sites_lies_mot' => 'Les sites référencés liés à ce mot-clé',
476
+    'info_sites_proxy' => 'Utiliser un proxy',
477
+    'info_sites_trouves' => 'Sites trouvés',
478
+    'info_sous_titre' => 'Soustitre :',
479
+    'info_statut_administrateur' => 'Administrateur',
480
+    'info_statut_auteur' => 'Statut de cet auteur :',
481
+    'info_statut_auteur_2' => 'Je suis',
482
+    'info_statut_auteur_a_confirmer' => 'Inscription à confirmer',
483
+    'info_statut_auteur_autre' => 'Autre statut :',
484
+    'info_statut_redacteur' => 'Rédacteur',
485
+    'info_statut_utilisateurs_1' => 'Statut par défaut des utilisateurs importés',
486
+    '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.',
487
+    'info_suivi_activite' => 'Suivi de l’activité éditoriale',
488
+    'info_surtitre' => 'Surtitre :',
489
+    'info_syndication_integrale_1' => 'Votre site propose des fichiers de syndication (voir « <a href="@url@">@titre@</a> »).',
490
+    '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 ?',
491
+    '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.',
492
+    '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.',
493
+    'info_taille_maximale_vignette' => 'Taille maximale des vignettes générées par le système :',
494
+    'info_terminer_installation' => 'Vous pouvez maintenant terminer la procédure d’installation standard.',
495
+    'info_texte' => 'Texte',
496
+    'info_texte_explicatif' => 'Texte explicatif',
497
+    'info_texte_long' => '(le texte est long : il apparaît donc en plusieurs parties qui seront recollées après validation.)',
498
+    'info_texte_message' => 'Texte de votre message',
499
+    'info_texte_message_02' => 'Texte du message',
500
+    'info_titre' => 'Titre :',
501
+    'info_total' => 'total :',
502
+    'info_tous_articles_en_redaction' => 'Tous les articles en cours de rédaction',
503
+    'info_tous_articles_presents' => 'Tous les articles publiés dans cette rubrique',
504
+    'info_tous_articles_refuses' => 'Tous les articles refusés',
505
+    'info_tous_les' => 'tous les :',
506
+    'info_tout_site' => 'Tout le site',
507
+    'info_tout_site2' => 'L’article n’a pas été traduit dans cette langue.',
508
+    '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.',
509
+    'info_tout_site4' => 'L’article a été traduit dans cette langue, et la traduction est à jour.',
510
+    'info_tout_site5' => 'Article original.',
511
+    'info_tout_site6' => '<b>Attention :</b> seuls les articles originaux sont affichés.
512 512
 Les traductions sont associées à l’original,
513 513
 dans une couleur qui indique leur état :',
514
-	'info_traductions' => 'Traductions',
515
-	'info_travail_colaboratif' => 'Travail collaboratif sur les articles',
516
-	'info_un_article' => 'un article,',
517
-	'info_un_site' => 'un site,',
518
-	'info_une_rubrique' => 'une rubrique,',
519
-	'info_une_rubrique_02' => '1 rubrique',
520
-	'info_url' => 'URL :',
521
-	'info_url_proxy' => 'URL du proxy',
522
-	'info_url_proxy_pas_conforme' => 'l’URL du proxy n’est pas valide.',
523
-	'info_url_site_pas_conforme' => 'l’URL du site n’est pas valide.',
524
-	'info_url_test_proxy' => 'URL de test',
525
-	'info_urlref' => 'Lien hypertexte :',
526
-	'info_utilisation_spip' => 'Vous pouvez maintenant commencer à utiliser le système de publication assistée...',
527
-	'info_visites_par_mois' => 'Affichage par mois :',
528
-	'info_visiteur_1' => 'Visiteur',
529
-	'info_visiteur_2' => 'du site public',
530
-	'info_visiteurs' => 'Visiteurs',
531
-	'info_visiteurs_02' => 'Visiteurs du site public',
532
-	'info_webmestre_forces' => 'Les webmestres sont actuellement définis dans <tt>@file_options@</tt>.',
533
-	'install_adresse_base_hebergeur' => 'Adresse de la base de données attribuée par l’hébergeur',
534
-	'install_connect_ok' => 'La nouvelle base a bien été déclarée sous le nom de serveur @connect@.',
535
-	'install_echec_annonce' => 'L’installation va probablement échouer, ou aboutir à un site non fonctionnel...',
536
-	'install_extension_mbstring' => 'SPIP ne fonctionne pas avec :',
537
-	'install_extension_php_obligatoire' => 'SPIP exige l’extension php :',
538
-	'install_login_base_hebergeur' => 'Login de connexion attribué par l’hébergeur',
539
-	'install_nom_base_hebergeur' => 'Nom de la base attribué par l’hébergeur :',
540
-	'install_pas_table' => 'Base actuellement sans tables',
541
-	'install_pass_base_hebergeur' => 'Mot de passe de connexion attribué par l’hébergeur',
542
-	'install_php_extension' => 'Les extensions suivantes sont manquantes : @extensions@',
543
-	'install_php_version' => 'PHP version @version@ insuffisant (minimum = @minimum@)',
544
-	'install_php_version_max' => 'PHP version @version@ trop récent (maximum = @maximum@)',
545
-	'install_select_langue' => 'Sélectionnez une langue puis cliquez sur le bouton « suivant » pour lancer la procédure d’installation.',
546
-	'install_select_type_db' => 'Indiquer le type de base de données :',
547
-	'install_select_type_mysql' => 'MySQL',
548
-	'install_select_type_pg' => 'PostgreSQL',
549
-	'install_select_type_sqlite2' => 'SQLite 2',
550
-	'install_select_type_sqlite3' => 'SQLite 3',
551
-	'install_serveur_hebergeur' => 'Serveur de base de données attribué par l’hébergeur',
552
-	'install_table_prefix_hebergeur' => 'Préfixe de table attribué par l’hébergeur :',
553
-	'install_tables_base' => 'Tables de la base',
554
-	'install_types_db_connus' => 'SPIP sait utiliser <b>MySQL</b> (le plus répandu) et <b>SQLite</b>.',
555
-	'install_types_db_connus_avertissement' => 'Le support de <b>PostgreSQL</b> est également proposé à titre experimental',
556
-	'instituer_erreur_statut_a_change' => 'Le statut a déjà été modifié',
557
-	'instituer_erreur_statut_non_autorise' => 'Vous ne pouvez pas choisir ce statut',
558
-	'intem_redacteur' => 'rédacteur',
559
-	'intitule_licence' => 'Licence',
560
-	'item_accepter_inscriptions' => 'Accepter les inscriptions',
561
-	'item_activer_messages_avertissement' => 'Activer les messages d’avertissement',
562
-	'item_administrateur_2' => 'administrateur',
563
-	'item_afficher_calendrier' => 'Afficher dans le calendrier',
564
-	'item_autoriser_syndication_integrale' => 'Diffuser l’intégralité des articles dans les fichiers de syndication',
565
-	'item_choix_administrateurs' => 'les administrateurs',
566
-	'item_choix_generation_miniature' => 'Générer automatiquement les miniatures des images.',
567
-	'item_choix_non_generation_miniature' => 'Ne pas générer de miniatures des images.',
568
-	'item_choix_redacteurs' => 'les rédacteurs',
569
-	'item_choix_visiteurs' => 'les visiteurs du site public',
570
-	'item_creer_fichiers_authent' => 'Créer les fichiers .htpasswd',
571
-	'item_login' => 'Login',
572
-	'item_messagerie_agenda' => 'Activer la messagerie et l’agenda',
573
-	'item_mots_cles_association_articles' => 'aux articles',
574
-	'item_mots_cles_association_rubriques' => 'aux rubriques',
575
-	'item_mots_cles_association_sites' => 'aux sites référencés ou syndiqués.',
576
-	'item_non' => 'Non',
577
-	'item_non_accepter_inscriptions' => 'Ne pas accepter les inscriptions',
578
-	'item_non_activer_messages_avertissement' => 'Pas de messages d’avertissement',
579
-	'item_non_afficher_calendrier' => 'Ne pas afficher dans le calendrier',
580
-	'item_non_autoriser_syndication_integrale' => 'Ne diffuser qu’un résumé',
581
-	'item_non_creer_fichiers_authent' => 'Ne pas créer ces fichiers',
582
-	'item_non_messagerie_agenda' => 'Désactiver la messagerie et l’agenda',
583
-	'item_non_publier_articles' => 'Ne pas publier les articles avant la date de publication fixée.',
584
-	'item_nouvel_auteur' => 'Nouvel auteur',
585
-	'item_nouvelle_rubrique' => 'Nouvelle rubrique',
586
-	'item_oui' => 'Oui',
587
-	'item_publier_articles' => 'Publier les articles, quelle que soit leur date de publication.',
588
-	'item_reponse_article' => 'Réponse à l’article',
589
-	'item_visiteur' => 'visiteur',
514
+    'info_traductions' => 'Traductions',
515
+    'info_travail_colaboratif' => 'Travail collaboratif sur les articles',
516
+    'info_un_article' => 'un article,',
517
+    'info_un_site' => 'un site,',
518
+    'info_une_rubrique' => 'une rubrique,',
519
+    'info_une_rubrique_02' => '1 rubrique',
520
+    'info_url' => 'URL :',
521
+    'info_url_proxy' => 'URL du proxy',
522
+    'info_url_proxy_pas_conforme' => 'l’URL du proxy n’est pas valide.',
523
+    'info_url_site_pas_conforme' => 'l’URL du site n’est pas valide.',
524
+    'info_url_test_proxy' => 'URL de test',
525
+    'info_urlref' => 'Lien hypertexte :',
526
+    'info_utilisation_spip' => 'Vous pouvez maintenant commencer à utiliser le système de publication assistée...',
527
+    'info_visites_par_mois' => 'Affichage par mois :',
528
+    'info_visiteur_1' => 'Visiteur',
529
+    'info_visiteur_2' => 'du site public',
530
+    'info_visiteurs' => 'Visiteurs',
531
+    'info_visiteurs_02' => 'Visiteurs du site public',
532
+    'info_webmestre_forces' => 'Les webmestres sont actuellement définis dans <tt>@file_options@</tt>.',
533
+    'install_adresse_base_hebergeur' => 'Adresse de la base de données attribuée par l’hébergeur',
534
+    'install_connect_ok' => 'La nouvelle base a bien été déclarée sous le nom de serveur @connect@.',
535
+    'install_echec_annonce' => 'L’installation va probablement échouer, ou aboutir à un site non fonctionnel...',
536
+    'install_extension_mbstring' => 'SPIP ne fonctionne pas avec :',
537
+    'install_extension_php_obligatoire' => 'SPIP exige l’extension php :',
538
+    'install_login_base_hebergeur' => 'Login de connexion attribué par l’hébergeur',
539
+    'install_nom_base_hebergeur' => 'Nom de la base attribué par l’hébergeur :',
540
+    'install_pas_table' => 'Base actuellement sans tables',
541
+    'install_pass_base_hebergeur' => 'Mot de passe de connexion attribué par l’hébergeur',
542
+    'install_php_extension' => 'Les extensions suivantes sont manquantes : @extensions@',
543
+    'install_php_version' => 'PHP version @version@ insuffisant (minimum = @minimum@)',
544
+    'install_php_version_max' => 'PHP version @version@ trop récent (maximum = @maximum@)',
545
+    'install_select_langue' => 'Sélectionnez une langue puis cliquez sur le bouton « suivant » pour lancer la procédure d’installation.',
546
+    'install_select_type_db' => 'Indiquer le type de base de données :',
547
+    'install_select_type_mysql' => 'MySQL',
548
+    'install_select_type_pg' => 'PostgreSQL',
549
+    'install_select_type_sqlite2' => 'SQLite 2',
550
+    'install_select_type_sqlite3' => 'SQLite 3',
551
+    'install_serveur_hebergeur' => 'Serveur de base de données attribué par l’hébergeur',
552
+    'install_table_prefix_hebergeur' => 'Préfixe de table attribué par l’hébergeur :',
553
+    'install_tables_base' => 'Tables de la base',
554
+    'install_types_db_connus' => 'SPIP sait utiliser <b>MySQL</b> (le plus répandu) et <b>SQLite</b>.',
555
+    'install_types_db_connus_avertissement' => 'Le support de <b>PostgreSQL</b> est également proposé à titre experimental',
556
+    'instituer_erreur_statut_a_change' => 'Le statut a déjà été modifié',
557
+    'instituer_erreur_statut_non_autorise' => 'Vous ne pouvez pas choisir ce statut',
558
+    'intem_redacteur' => 'rédacteur',
559
+    'intitule_licence' => 'Licence',
560
+    'item_accepter_inscriptions' => 'Accepter les inscriptions',
561
+    'item_activer_messages_avertissement' => 'Activer les messages d’avertissement',
562
+    'item_administrateur_2' => 'administrateur',
563
+    'item_afficher_calendrier' => 'Afficher dans le calendrier',
564
+    'item_autoriser_syndication_integrale' => 'Diffuser l’intégralité des articles dans les fichiers de syndication',
565
+    'item_choix_administrateurs' => 'les administrateurs',
566
+    'item_choix_generation_miniature' => 'Générer automatiquement les miniatures des images.',
567
+    'item_choix_non_generation_miniature' => 'Ne pas générer de miniatures des images.',
568
+    'item_choix_redacteurs' => 'les rédacteurs',
569
+    'item_choix_visiteurs' => 'les visiteurs du site public',
570
+    'item_creer_fichiers_authent' => 'Créer les fichiers .htpasswd',
571
+    'item_login' => 'Login',
572
+    'item_messagerie_agenda' => 'Activer la messagerie et l’agenda',
573
+    'item_mots_cles_association_articles' => 'aux articles',
574
+    'item_mots_cles_association_rubriques' => 'aux rubriques',
575
+    'item_mots_cles_association_sites' => 'aux sites référencés ou syndiqués.',
576
+    'item_non' => 'Non',
577
+    'item_non_accepter_inscriptions' => 'Ne pas accepter les inscriptions',
578
+    'item_non_activer_messages_avertissement' => 'Pas de messages d’avertissement',
579
+    'item_non_afficher_calendrier' => 'Ne pas afficher dans le calendrier',
580
+    'item_non_autoriser_syndication_integrale' => 'Ne diffuser qu’un résumé',
581
+    'item_non_creer_fichiers_authent' => 'Ne pas créer ces fichiers',
582
+    'item_non_messagerie_agenda' => 'Désactiver la messagerie et l’agenda',
583
+    'item_non_publier_articles' => 'Ne pas publier les articles avant la date de publication fixée.',
584
+    'item_nouvel_auteur' => 'Nouvel auteur',
585
+    'item_nouvelle_rubrique' => 'Nouvelle rubrique',
586
+    'item_oui' => 'Oui',
587
+    'item_publier_articles' => 'Publier les articles, quelle que soit leur date de publication.',
588
+    'item_reponse_article' => 'Réponse à l’article',
589
+    'item_visiteur' => 'visiteur',
590 590
 
591
-	// J
592
-	'jour_non_connu_nc' => 'n.c.',
591
+    // J
592
+    'jour_non_connu_nc' => 'n.c.',
593 593
 
594
-	// L
595
-	'label_bando_outils' => 'Barre d’outils',
596
-	'label_bando_outils_afficher' => 'Afficher les outils',
597
-	'label_bando_outils_masquer' => 'Masquer les outils',
598
-	'label_choix_langue' => 'Sélectionnez votre langue',
599
-	'label_langue' => 'Langue',
600
-	'label_nom_fichier_connect' => 'Indiquez le nom utilisé pour ce serveur',
601
-	'label_slogan_site' => 'Slogan du site',
602
-	'label_taille_ecran' => 'Largeur de l’écran',
603
-	'label_texte_et_icones_navigation' => 'Menu de navigation',
604
-	'label_texte_et_icones_page' => 'Affichage dans la page',
605
-	'ldap_correspondance' => 'héritage du champ @champ@',
606
-	'ldap_correspondance_1' => 'Héritage des champs LDAP',
607
-	'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.',
608
-	'lien_ajouter_auteur' => 'Ajouter cet auteur',
609
-	'lien_ajouter_une_rubrique' => 'Ajouter cette rubrique',
610
-	'lien_email' => 'email',
611
-	'lien_nom_site' => 'NOM DU SITE :',
612
-	'lien_rapide_contenu' => 'Aller au contenu',
613
-	'lien_rapide_navigation' => 'Aller à la navigation',
614
-	'lien_rapide_recherche' => 'Aller à la recherche',
615
-	'lien_retirer_auteur' => 'Retirer l’auteur',
616
-	'lien_retirer_rubrique' => 'Retirer la rubrique',
617
-	'lien_retirer_tous_auteurs' => 'Retirer tous les auteurs',
618
-	'lien_retirer_toutes_rubriques' => 'Retirer toutes les rubriques',
619
-	'lien_site' => 'site',
620
-	'lien_tout_decocher' => 'Tout décocher',
621
-	'lien_tout_deplier' => 'Tout déplier',
622
-	'lien_tout_replier' => 'Tout replier',
623
-	'lien_tout_supprimer' => 'Tout supprimer',
624
-	'lien_trier_nom' => 'Trier par nom',
625
-	'lien_trier_nombre_articles' => 'Trier par nombre d’articles',
626
-	'lien_trier_statut' => 'Trier par statut',
627
-	'lien_voir_en_ligne' => 'VOIR EN LIGNE :',
628
-	'logo_article' => 'Logo de l’article',
629
-	'logo_auteur' => 'Logo de l’auteur',
630
-	'logo_rubrique' => 'Logo de la rubrique',
631
-	'logo_site' => 'Logo de ce site',
632
-	'logo_standard_rubrique' => 'Logo standard des rubriques',
633
-	'logo_survol' => 'Logo pour survol',
594
+    // L
595
+    'label_bando_outils' => 'Barre d’outils',
596
+    'label_bando_outils_afficher' => 'Afficher les outils',
597
+    'label_bando_outils_masquer' => 'Masquer les outils',
598
+    'label_choix_langue' => 'Sélectionnez votre langue',
599
+    'label_langue' => 'Langue',
600
+    'label_nom_fichier_connect' => 'Indiquez le nom utilisé pour ce serveur',
601
+    'label_slogan_site' => 'Slogan du site',
602
+    'label_taille_ecran' => 'Largeur de l’écran',
603
+    'label_texte_et_icones_navigation' => 'Menu de navigation',
604
+    'label_texte_et_icones_page' => 'Affichage dans la page',
605
+    'ldap_correspondance' => 'héritage du champ @champ@',
606
+    'ldap_correspondance_1' => 'Héritage des champs LDAP',
607
+    '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.',
608
+    'lien_ajouter_auteur' => 'Ajouter cet auteur',
609
+    'lien_ajouter_une_rubrique' => 'Ajouter cette rubrique',
610
+    'lien_email' => 'email',
611
+    'lien_nom_site' => 'NOM DU SITE :',
612
+    'lien_rapide_contenu' => 'Aller au contenu',
613
+    'lien_rapide_navigation' => 'Aller à la navigation',
614
+    'lien_rapide_recherche' => 'Aller à la recherche',
615
+    'lien_retirer_auteur' => 'Retirer l’auteur',
616
+    'lien_retirer_rubrique' => 'Retirer la rubrique',
617
+    'lien_retirer_tous_auteurs' => 'Retirer tous les auteurs',
618
+    'lien_retirer_toutes_rubriques' => 'Retirer toutes les rubriques',
619
+    'lien_site' => 'site',
620
+    'lien_tout_decocher' => 'Tout décocher',
621
+    'lien_tout_deplier' => 'Tout déplier',
622
+    'lien_tout_replier' => 'Tout replier',
623
+    'lien_tout_supprimer' => 'Tout supprimer',
624
+    'lien_trier_nom' => 'Trier par nom',
625
+    'lien_trier_nombre_articles' => 'Trier par nombre d’articles',
626
+    'lien_trier_statut' => 'Trier par statut',
627
+    'lien_voir_en_ligne' => 'VOIR EN LIGNE :',
628
+    'logo_article' => 'Logo de l’article',
629
+    'logo_auteur' => 'Logo de l’auteur',
630
+    'logo_rubrique' => 'Logo de la rubrique',
631
+    'logo_site' => 'Logo de ce site',
632
+    'logo_standard_rubrique' => 'Logo standard des rubriques',
633
+    'logo_survol' => 'Logo pour survol',
634 634
 
635
-	// M
636
-	'menu_aide_installation_choix_base' => 'Choix de votre base',
637
-	'module_fichier_langue' => 'Fichier de langue',
638
-	'module_raccourci' => 'Raccourci',
639
-	'module_texte_affiche' => 'Texte affiché',
640
-	'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.',
641
-	'module_texte_traduction' => 'Le fichier de langue « @module@ » est disponible en :',
642
-	'mois_non_connu' => 'non connu',
635
+    // M
636
+    'menu_aide_installation_choix_base' => 'Choix de votre base',
637
+    'module_fichier_langue' => 'Fichier de langue',
638
+    'module_raccourci' => 'Raccourci',
639
+    'module_texte_affiche' => 'Texte affiché',
640
+    '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.',
641
+    'module_texte_traduction' => 'Le fichier de langue « @module@ » est disponible en :',
642
+    'mois_non_connu' => 'non connu',
643 643
 
644
-	// N
645
-	'nouvelle_version_spip' => 'La mise à jour @version@ de SPIP est disponible',
646
-	'nouvelle_version_spip_majeure' => 'Une nouvelle version SPIP @version@ est disponible',
644
+    // N
645
+    'nouvelle_version_spip' => 'La mise à jour @version@ de SPIP est disponible',
646
+    'nouvelle_version_spip_majeure' => 'Une nouvelle version SPIP @version@ est disponible',
647 647
 
648
-	// O
649
-	'onglet_contenu' => 'Contenu',
650
-	'onglet_declarer_une_autre_base' => 'Déclarer une autre base',
651
-	'onglet_discuter' => 'Discuter',
652
-	'onglet_interactivite' => 'Interactivité',
653
-	'onglet_proprietes' => 'Propriétés',
654
-	'onglet_repartition_actuelle' => 'actuellement',
655
-	'onglet_sous_rubriques' => 'Sous-rubriques',
648
+    // O
649
+    'onglet_contenu' => 'Contenu',
650
+    'onglet_declarer_une_autre_base' => 'Déclarer une autre base',
651
+    'onglet_discuter' => 'Discuter',
652
+    'onglet_interactivite' => 'Interactivité',
653
+    'onglet_proprietes' => 'Propriétés',
654
+    'onglet_repartition_actuelle' => 'actuellement',
655
+    'onglet_sous_rubriques' => 'Sous-rubriques',
656 656
 
657
-	// P
658
-	'page_pas_proxy' => 'Cette page ne doit pas passer par le proxy',
659
-	'pas_de_proxy_pour' => 'Au besoin, indiquez les machines ou domaines pour lesquels ce proxy ne doit pas s’appliquer (par exemple : @exemple@)',
660
-	'phpinfo' => 'Configuration PHP',
661
-	'plugin_charge_paquet' => 'Chargement du paquet @name@',
662
-	'plugin_charger' => 'Télécharger',
663
-	'plugin_erreur_charger' => 'erreur : impossible de charger @zip@',
664
-	'plugin_erreur_droit1' => 'Le répertoire <code>@dest@</code> n’est pas accessible en écriture.',
665
-	'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.',
666
-	'plugin_erreur_zip' => 'échec pclzip : erreur @status@',
667
-	'plugin_etat_developpement' => 'en développement',
668
-	'plugin_etat_experimental' => 'expérimental',
669
-	'plugin_etat_stable' => 'stable',
670
-	'plugin_etat_test' => 'en test',
671
-	'plugin_impossible_activer' => 'Impossible d’activer le plugin @plugin@',
672
-	'plugin_info_automatique1' => 'Si vous souhaitez autoriser l’installation automatique des plugins, veuillez :',
673
-	'plugin_info_automatique1_lib' => 'Si vous souhaitez autoriser l’installation automatique de cette librairie, veuillez :',
674
-	'plugin_info_automatique2' => 'créer un répertoire <code>@rep@</code> ;',
675
-	'plugin_info_automatique3' => 'vérifier que le serveur est autorisé à écrire dans ce répertoire.',
676
-	'plugin_info_automatique_creer' => 'à créer à la racine du site.',
677
-	'plugin_info_automatique_exemples' => 'exemples :',
678
-	'plugin_info_automatique_ftp' => 'Vous pouvez installer des plugins, par FTP, dans le répertoire <tt>@rep@</tt>',
679
-	'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.',
680
-	'plugin_info_automatique_liste' => 'Vos listes de plugins :',
681
-	'plugin_info_automatique_liste_officielle' => 'les plugins officiels',
682
-	'plugin_info_automatique_liste_update' => 'Mettre à jour les listes',
683
-	'plugin_info_automatique_ou' => 'ou...',
684
-	'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.',
685
-	'plugin_info_credit' => 'Crédits',
686
-	'plugin_info_erreur_xml' => 'La déclaration de ce plugin est incorrecte',
687
-	'plugin_info_install_ok' => 'Installation réussie',
688
-	'plugin_info_necessite' => 'Nécessite :',
689
-	'plugin_info_non_compatible_spip' => 'Ce plugin n’est pas compatible avec cette version de SPIP',
690
-	'plugin_info_plugins_dist_1' => 'Les plugins ci-dessous sont chargés et activés dans le répertoire @plugins_dist@.',
691
-	'plugin_info_plugins_dist_2' => 'Ils ne sont pas désactivables.',
692
-	'plugin_info_telecharger' => 'à télécharger depuis @url@ et à installer dans @rep@',
693
-	'plugin_info_upgrade_ok' => 'Mise à jour réussie',
694
-	'plugin_librairies_installees' => 'Librairies installées',
695
-	'plugin_necessite_extension_php' => 'Nécessite l’extension PHP @plugin@ en version @version@.',
696
-	'plugin_necessite_extension_php_sans_version' => 'Nécessite l’extension PHP @plugin@',
697
-	'plugin_necessite_lib' => 'Ce plugin nécessite la librairie @lib@',
698
-	'plugin_necessite_php' => 'Nécessite @plugin@ en version @version@.',
699
-	'plugin_necessite_plugin' => 'Nécessite le plugin @plugin@ en version @version@.',
700
-	'plugin_necessite_plugin_sans_version' => 'Nécessite le plugin @plugin@',
701
-	'plugin_necessite_spip' => 'Nécessite SPIP en version @version@ minimum.',
702
-	'plugin_source' => 'source : ',
703
-	'plugin_titre_automatique' => 'Installation automatique',
704
-	'plugin_titre_automatique_ajouter' => 'Ajouter des plugins',
705
-	'plugin_titre_installation' => 'Installation du plugin @plugin@',
706
-	'plugin_titre_modifier' => 'Mes plugins',
707
-	'plugin_utilise_extension_php' => 'L’extension PHP @plugin@ doit être en version @version@.',
708
-	'plugin_utilise_php' => '@plugin@ doit être en version @version@.',
709
-	'plugin_utilise_plugin' => 'Le plugin @plugin@ doit être en version @version@.',
710
-	'plugin_zip_active' => 'Continuez pour l’activer',
711
-	'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.',
712
-	'plugin_zip_adresse_champ' => 'Adresse du plugin ou de la liste ',
713
-	'plugin_zip_content' => 'Il contient les fichiers suivants (@taille@),<br />prêts à installer dans le répertoire <code>@rep@</code>',
714
-	'plugin_zip_installe_finie' => 'Le fichier @zip@ a été décompacté et installé.',
715
-	'plugin_zip_installe_rep_finie' => 'Le fichier @zip@ a été décompacté et installé dans le répertoire @rep@',
716
-	'plugin_zip_installer' => 'Vous pouvez maintenant l’installer.',
717
-	'plugin_zip_telecharge' => 'Le fichier @zip@ a été téléchargé',
718
-	'plugins_actif_aucun' => 'Aucun plugin activé.',
719
-	'plugins_actif_un' => 'Un plugin activé.',
720
-	'plugins_actifs' => '@count@ plugins activés.',
721
-	'plugins_actifs_liste' => 'Actifs',
722
-	'plugins_compte' => '@count@ plugins',
723
-	'plugins_disponible_un' => 'Un plugin disponible.',
724
-	'plugins_disponibles' => '@count@ plugins disponibles.',
725
-	'plugins_erreur' => 'Erreur dans les plugins : @plugins@',
726
-	'plugins_liste' => 'Liste des plugins',
727
-	'plugins_liste_dist' => 'Plugins verrouillés',
728
-	'plugins_recents' => 'Plugins récents.',
729
-	'plugins_tous_liste' => 'Tous',
730
-	'plugins_vue_hierarchie' => 'Hiérarchie',
731
-	'plugins_vue_liste' => 'Liste',
732
-	'protocole_ldap' => 'Version du protocole :',
657
+    // P
658
+    'page_pas_proxy' => 'Cette page ne doit pas passer par le proxy',
659
+    'pas_de_proxy_pour' => 'Au besoin, indiquez les machines ou domaines pour lesquels ce proxy ne doit pas s’appliquer (par exemple : @exemple@)',
660
+    'phpinfo' => 'Configuration PHP',
661
+    'plugin_charge_paquet' => 'Chargement du paquet @name@',
662
+    'plugin_charger' => 'Télécharger',
663
+    'plugin_erreur_charger' => 'erreur : impossible de charger @zip@',
664
+    'plugin_erreur_droit1' => 'Le répertoire <code>@dest@</code> n’est pas accessible en écriture.',
665
+    '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.',
666
+    'plugin_erreur_zip' => 'échec pclzip : erreur @status@',
667
+    'plugin_etat_developpement' => 'en développement',
668
+    'plugin_etat_experimental' => 'expérimental',
669
+    'plugin_etat_stable' => 'stable',
670
+    'plugin_etat_test' => 'en test',
671
+    'plugin_impossible_activer' => 'Impossible d’activer le plugin @plugin@',
672
+    'plugin_info_automatique1' => 'Si vous souhaitez autoriser l’installation automatique des plugins, veuillez :',
673
+    'plugin_info_automatique1_lib' => 'Si vous souhaitez autoriser l’installation automatique de cette librairie, veuillez :',
674
+    'plugin_info_automatique2' => 'créer un répertoire <code>@rep@</code> ;',
675
+    'plugin_info_automatique3' => 'vérifier que le serveur est autorisé à écrire dans ce répertoire.',
676
+    'plugin_info_automatique_creer' => 'à créer à la racine du site.',
677
+    'plugin_info_automatique_exemples' => 'exemples :',
678
+    'plugin_info_automatique_ftp' => 'Vous pouvez installer des plugins, par FTP, dans le répertoire <tt>@rep@</tt>',
679
+    '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.',
680
+    'plugin_info_automatique_liste' => 'Vos listes de plugins :',
681
+    'plugin_info_automatique_liste_officielle' => 'les plugins officiels',
682
+    'plugin_info_automatique_liste_update' => 'Mettre à jour les listes',
683
+    'plugin_info_automatique_ou' => 'ou...',
684
+    '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.',
685
+    'plugin_info_credit' => 'Crédits',
686
+    'plugin_info_erreur_xml' => 'La déclaration de ce plugin est incorrecte',
687
+    'plugin_info_install_ok' => 'Installation réussie',
688
+    'plugin_info_necessite' => 'Nécessite :',
689
+    'plugin_info_non_compatible_spip' => 'Ce plugin n’est pas compatible avec cette version de SPIP',
690
+    'plugin_info_plugins_dist_1' => 'Les plugins ci-dessous sont chargés et activés dans le répertoire @plugins_dist@.',
691
+    'plugin_info_plugins_dist_2' => 'Ils ne sont pas désactivables.',
692
+    'plugin_info_telecharger' => 'à télécharger depuis @url@ et à installer dans @rep@',
693
+    'plugin_info_upgrade_ok' => 'Mise à jour réussie',
694
+    'plugin_librairies_installees' => 'Librairies installées',
695
+    'plugin_necessite_extension_php' => 'Nécessite l’extension PHP @plugin@ en version @version@.',
696
+    'plugin_necessite_extension_php_sans_version' => 'Nécessite l’extension PHP @plugin@',
697
+    'plugin_necessite_lib' => 'Ce plugin nécessite la librairie @lib@',
698
+    'plugin_necessite_php' => 'Nécessite @plugin@ en version @version@.',
699
+    'plugin_necessite_plugin' => 'Nécessite le plugin @plugin@ en version @version@.',
700
+    'plugin_necessite_plugin_sans_version' => 'Nécessite le plugin @plugin@',
701
+    'plugin_necessite_spip' => 'Nécessite SPIP en version @version@ minimum.',
702
+    'plugin_source' => 'source : ',
703
+    'plugin_titre_automatique' => 'Installation automatique',
704
+    'plugin_titre_automatique_ajouter' => 'Ajouter des plugins',
705
+    'plugin_titre_installation' => 'Installation du plugin @plugin@',
706
+    'plugin_titre_modifier' => 'Mes plugins',
707
+    'plugin_utilise_extension_php' => 'L’extension PHP @plugin@ doit être en version @version@.',
708
+    'plugin_utilise_php' => '@plugin@ doit être en version @version@.',
709
+    'plugin_utilise_plugin' => 'Le plugin @plugin@ doit être en version @version@.',
710
+    'plugin_zip_active' => 'Continuez pour l’activer',
711
+    '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.',
712
+    'plugin_zip_adresse_champ' => 'Adresse du plugin ou de la liste ',
713
+    'plugin_zip_content' => 'Il contient les fichiers suivants (@taille@),<br />prêts à installer dans le répertoire <code>@rep@</code>',
714
+    'plugin_zip_installe_finie' => 'Le fichier @zip@ a été décompacté et installé.',
715
+    'plugin_zip_installe_rep_finie' => 'Le fichier @zip@ a été décompacté et installé dans le répertoire @rep@',
716
+    'plugin_zip_installer' => 'Vous pouvez maintenant l’installer.',
717
+    'plugin_zip_telecharge' => 'Le fichier @zip@ a été téléchargé',
718
+    'plugins_actif_aucun' => 'Aucun plugin activé.',
719
+    'plugins_actif_un' => 'Un plugin activé.',
720
+    'plugins_actifs' => '@count@ plugins activés.',
721
+    'plugins_actifs_liste' => 'Actifs',
722
+    'plugins_compte' => '@count@ plugins',
723
+    'plugins_disponible_un' => 'Un plugin disponible.',
724
+    'plugins_disponibles' => '@count@ plugins disponibles.',
725
+    'plugins_erreur' => 'Erreur dans les plugins : @plugins@',
726
+    'plugins_liste' => 'Liste des plugins',
727
+    'plugins_liste_dist' => 'Plugins verrouillés',
728
+    'plugins_recents' => 'Plugins récents.',
729
+    'plugins_tous_liste' => 'Tous',
730
+    'plugins_vue_hierarchie' => 'Hiérarchie',
731
+    'plugins_vue_liste' => 'Liste',
732
+    'protocole_ldap' => 'Version du protocole :',
733 733
 
734
-	// Q
735
-	'queue_executer_maintenant' => 'Exécuter maintenant',
736
-	'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',
737
-	'queue_nb_jobs_in_queue' => '@nb@ tâches en attente',
738
-	'queue_next_job_in_nb_sec' => 'Prochaine tâche dans @nb@ s',
739
-	'queue_no_job_in_queue' => 'Aucune tâche en attente',
740
-	'queue_one_job_in_queue' => '1 tâche en attente',
741
-	'queue_priorite_tache' => 'priorité',
742
-	'queue_purger_queue' => 'Réinitialiser la liste des tâches',
743
-	'queue_titre' => 'Tâches de fond',
734
+    // Q
735
+    'queue_executer_maintenant' => 'Exécuter maintenant',
736
+    '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',
737
+    'queue_nb_jobs_in_queue' => '@nb@ tâches en attente',
738
+    'queue_next_job_in_nb_sec' => 'Prochaine tâche dans @nb@ s',
739
+    'queue_no_job_in_queue' => 'Aucune tâche en attente',
740
+    'queue_one_job_in_queue' => '1 tâche en attente',
741
+    'queue_priorite_tache' => 'priorité',
742
+    'queue_purger_queue' => 'Réinitialiser la liste des tâches',
743
+    'queue_titre' => 'Tâches de fond',
744 744
 
745
-	// R
746
-	'repertoire_plugins' => 'Répertoire :',
747
-	'required' => '(obligatoire)',
745
+    // R
746
+    'repertoire_plugins' => 'Répertoire :',
747
+    'required' => '(obligatoire)',
748 748
 
749
-	// S
750
-	'sans_heure' => 'sans heure',
751
-	'statut_admin_restreint' => 'admin restreint',
752
-	'statut_webmestre' => 'webmestre',
749
+    // S
750
+    'sans_heure' => 'sans heure',
751
+    'statut_admin_restreint' => 'admin restreint',
752
+    'statut_webmestre' => 'webmestre',
753 753
 
754
-	// T
755
-	'tache_cron_asap' => 'Tâche CRON @function@ (ASAP)',
756
-	'tache_cron_secondes' => 'Tâche CRON @function@ (toutes les @nb@ s)',
757
-	'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@.',
758
-	'taille_cache_moins_de' => 'La taille du cache est de moins de @octets@.',
759
-	'taille_cache_octets' => 'La taille du cache est actuellement de @octets@ environ.',
760
-	'taille_cache_vide' => 'Le cache est vide.',
761
-	'taille_repertoire_cache' => 'Taille du répertoire cache',
762
-	'text_article_propose_publication' => 'Article proposé pour la publication.',
763
-	'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.',
764
-	'texte_admin_effacer_01' => 'Cette commande efface <i>tout</i> le contenu de la base de données,
754
+    // T
755
+    'tache_cron_asap' => 'Tâche CRON @function@ (ASAP)',
756
+    'tache_cron_secondes' => 'Tâche CRON @function@ (toutes les @nb@ s)',
757
+    '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@.',
758
+    'taille_cache_moins_de' => 'La taille du cache est de moins de @octets@.',
759
+    'taille_cache_octets' => 'La taille du cache est actuellement de @octets@ environ.',
760
+    'taille_cache_vide' => 'Le cache est vide.',
761
+    'taille_repertoire_cache' => 'Taille du répertoire cache',
762
+    'text_article_propose_publication' => 'Article proposé pour la publication.',
763
+    '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.',
764
+    'texte_admin_effacer_01' => 'Cette commande efface <i>tout</i> le contenu de la base de données,
765 765
 y compris <i>tous</i> les accès rédacteurs et administrateurs. Après l’avoir exécutée, vous devrez lancer la
766 766
 réinstallation de SPIP pour recréer une nouvelle base ainsi qu’un premier accès administrateur.',
767
-	'texte_adresse_annuaire_1' => '(Si votre annuaire est installé sur la même machine que ce site Web, il s’agit probablement de « localhost ».)',
768
-	'texte_ajout_auteur' => 'L’auteur suivant a été ajouté à l’article :',
769
-	'texte_annuaire_ldap_1' => 'Si vous avez accès à un annuaire (LDAP), vous pouvez l’utiliser pour importer automatiquement des utilisateurs sous SPIP.',
770
-	'texte_article_statut' => 'Cet article est :',
771
-	'texte_article_virtuel' => 'Article virtuel',
772
-	'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.',
773
-	'texte_aucun_resultat_auteur' => 'Aucun résultat pour "@cherche_auteur@"',
774
-	'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).',
775
-	'texte_auteurs' => 'LES AUTEURS',
776
-	'texte_choix_base_1' => 'Choisissez votre base :',
777
-	'texte_choix_base_2' => 'Le serveur SQL contient plusieurs bases de données.',
778
-	'texte_choix_base_3' => '<b>Sélectionnez</b> ci-après celle qui vous a été attribuée par votre hébergeur :',
779
-	'texte_choix_table_prefix' => 'Préfixe des tables :',
780
-	'texte_compte_element' => '@count@ élément',
781
-	'texte_compte_elements' => '@count@ éléments',
782
-	'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.',
783
-	'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.',
784
-	'texte_contenu_article' => '(Contenu de l’article en quelques mots.)',
785
-	'texte_contenu_articles' => 'Selon la maquette adoptée pour votre site, vous pouvez décider
767
+    'texte_adresse_annuaire_1' => '(Si votre annuaire est installé sur la même machine que ce site Web, il s’agit probablement de « localhost ».)',
768
+    'texte_ajout_auteur' => 'L’auteur suivant a été ajouté à l’article :',
769
+    'texte_annuaire_ldap_1' => 'Si vous avez accès à un annuaire (LDAP), vous pouvez l’utiliser pour importer automatiquement des utilisateurs sous SPIP.',
770
+    'texte_article_statut' => 'Cet article est :',
771
+    'texte_article_virtuel' => 'Article virtuel',
772
+    '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.',
773
+    'texte_aucun_resultat_auteur' => 'Aucun résultat pour "@cherche_auteur@"',
774
+    '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).',
775
+    'texte_auteurs' => 'LES AUTEURS',
776
+    'texte_choix_base_1' => 'Choisissez votre base :',
777
+    'texte_choix_base_2' => 'Le serveur SQL contient plusieurs bases de données.',
778
+    'texte_choix_base_3' => '<b>Sélectionnez</b> ci-après celle qui vous a été attribuée par votre hébergeur :',
779
+    'texte_choix_table_prefix' => 'Préfixe des tables :',
780
+    'texte_compte_element' => '@count@ élément',
781
+    'texte_compte_elements' => '@count@ éléments',
782
+    '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.',
783
+    '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.',
784
+    'texte_contenu_article' => '(Contenu de l’article en quelques mots.)',
785
+    'texte_contenu_articles' => 'Selon la maquette adoptée pour votre site, vous pouvez décider
786 786
 		que certains éléments des articles ne sont pas utilisés.
787 787
 		Utilisez la liste ci-dessous pour indiquer quels éléments sont disponibles.',
788
-	'texte_crash_base' => 'Si votre base de données a
788
+    'texte_crash_base' => 'Si votre base de données a
789 789
 			crashé, vous pouvez tenter une réparation
790 790
 			automatique.',
791
-	'texte_creer_rubrique' => 'Avant de pouvoir écrire des articles,<br /> vous devez créer une rubrique.',
792
-	'texte_date_creation_article' => 'DATE DE CRÉATION DE L’ARTICLE :', # on ajoute le ":"
793
-	'texte_date_creation_objet' => 'Date de création :', # on ajoute le ":"
794
-	'texte_date_publication_anterieure' => 'Date de rédaction antérieure :',
795
-	'texte_date_publication_anterieure_nonaffichee' => 'Ne pas afficher de date de rédaction antérieure.',
796
-	'texte_date_publication_article' => 'DATE DE PUBLICATION EN LIGNE :',
797
-	'texte_date_publication_objet' => 'Date de publication en ligne :',
798
-	'texte_definir_comme_traduction_rubrique' => 'Cette rubrique est une traduction de la rubrique numéro :',
799
-	'texte_descriptif_rapide' => 'Descriptif rapide',
800
-	'texte_effacer_base' => 'Effacer la base de données SPIP',
801
-	'texte_effacer_statistiques' => 'Effacer les statistiques',
802
-	'texte_en_cours_validation' => 'Les contenus ci-dessous sont en attente de validation.',
803
-	'texte_enrichir_mise_a_jour' => 'Vous pouvez enrichir la mise en page de votre texte en utilisant des « raccourcis typographiques ».',
804
-	'texte_fichier_authent' => '<b>SPIP doit-il créer les fichiers spéciaux
791
+    'texte_creer_rubrique' => 'Avant de pouvoir écrire des articles,<br /> vous devez créer une rubrique.',
792
+    'texte_date_creation_article' => 'DATE DE CRÉATION DE L’ARTICLE :', # on ajoute le ":"
793
+    'texte_date_creation_objet' => 'Date de création :', # on ajoute le ":"
794
+    'texte_date_publication_anterieure' => 'Date de rédaction antérieure :',
795
+    'texte_date_publication_anterieure_nonaffichee' => 'Ne pas afficher de date de rédaction antérieure.',
796
+    'texte_date_publication_article' => 'DATE DE PUBLICATION EN LIGNE :',
797
+    'texte_date_publication_objet' => 'Date de publication en ligne :',
798
+    'texte_definir_comme_traduction_rubrique' => 'Cette rubrique est une traduction de la rubrique numéro :',
799
+    'texte_descriptif_rapide' => 'Descriptif rapide',
800
+    'texte_effacer_base' => 'Effacer la base de données SPIP',
801
+    'texte_effacer_statistiques' => 'Effacer les statistiques',
802
+    'texte_en_cours_validation' => 'Les contenus ci-dessous sont en attente de validation.',
803
+    'texte_enrichir_mise_a_jour' => 'Vous pouvez enrichir la mise en page de votre texte en utilisant des « raccourcis typographiques ».',
804
+    'texte_fichier_authent' => '<b>SPIP doit-il créer les fichiers spéciaux
805 805
 <tt>.htpasswd</tt> et <tt>.htpasswd-admin</tt> dans le répertoire @dossier@ ?</b>
806 806
 <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>
807 807
 <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>',
808
-	'texte_informations_personnelles_1' => 'Le système va maintenant vous créer un accès personnalisé au site.',
809
-	'texte_informations_personnelles_2' => '(Note : il s’agit d’une réinstallation, si votre accès marche toujours vous pouvez',
810
-	'texte_introductif_article' => '(Texte introductif de l’article.)',
811
-	'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.',
812
-	'texte_jeu_caractere_3' => 'Votre site est actuellement installé dans le jeu de caractères :',
813
-	'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 :',
814
-	'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> ».)',
815
-	'texte_login_precaution' => 'Attention ! Ceci est le login sous lequel vous êtes connecté actuellement.
808
+    'texte_informations_personnelles_1' => 'Le système va maintenant vous créer un accès personnalisé au site.',
809
+    'texte_informations_personnelles_2' => '(Note : il s’agit d’une réinstallation, si votre accès marche toujours vous pouvez',
810
+    'texte_introductif_article' => '(Texte introductif de l’article.)',
811
+    '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.',
812
+    'texte_jeu_caractere_3' => 'Votre site est actuellement installé dans le jeu de caractères :',
813
+    '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 :',
814
+    '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> ».)',
815
+    'texte_login_precaution' => 'Attention ! Ceci est le login sous lequel vous êtes connecté actuellement.
816 816
 	Utilisez ce formulaire avec précaution...',
817
-	'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.',
818
-	'texte_mise_a_niveau_base_1' => 'Vous venez de mettre à jour les fichiers SPIP.
817
+    '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.',
818
+    'texte_mise_a_niveau_base_1' => 'Vous venez de mettre à jour les fichiers SPIP.
819 819
 	Il faut maintenant mettre à niveau la base de données
820 820
 	du site.',
821
-	'texte_modifier_article' => 'Modifier l’article :',
822
-	'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.',
823
-	'texte_multilinguisme_trad' => 'Vous pouvez également activer un système de gestion de liens entre les différentes traductions sur certains objets.',
824
-	'texte_non_compresse' => '<i>non compressé</i> (votre serveur ne supportant pas cette fonctionnalité)',
825
-	'texte_nouvelle_version_spip_1' => 'Vous avez installé une nouvelle version de SPIP.',
826
-	'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>',
827
-	'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.',
828
-	'texte_plus_trois_car' => 'plus de 3 caractères',
829
-	'texte_plusieurs_articles' => 'Plusieurs auteurs trouvés pour "@cherche_auteur@" :',
830
-	'texte_port_annuaire' => '(La valeur indiquée par défaut convient généralement.)',
831
-	'texte_presente_plugin' => 'Cette page liste les plugins disponibles sur le site. Vous pouvez activer les plugins nécessaires en cochant la case correspondante.',
832
-	'texte_proposer_publication' => 'Lorsque votre article est terminé,<br /> vous pouvez proposer sa publication.',
833
-	'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.',
834
-	'texte_publication_articles_post_dates' => 'Quel comportement SPIP doit-il adopter face aux articles dont la
821
+    'texte_modifier_article' => 'Modifier l’article :',
822
+    '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.',
823
+    'texte_multilinguisme_trad' => 'Vous pouvez également activer un système de gestion de liens entre les différentes traductions sur certains objets.',
824
+    'texte_non_compresse' => '<i>non compressé</i> (votre serveur ne supportant pas cette fonctionnalité)',
825
+    'texte_nouvelle_version_spip_1' => 'Vous avez installé une nouvelle version de SPIP.',
826
+    '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>',
827
+    '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.',
828
+    'texte_plus_trois_car' => 'plus de 3 caractères',
829
+    'texte_plusieurs_articles' => 'Plusieurs auteurs trouvés pour "@cherche_auteur@" :',
830
+    'texte_port_annuaire' => '(La valeur indiquée par défaut convient généralement.)',
831
+    'texte_presente_plugin' => 'Cette page liste les plugins disponibles sur le site. Vous pouvez activer les plugins nécessaires en cochant la case correspondante.',
832
+    'texte_proposer_publication' => 'Lorsque votre article est terminé,<br /> vous pouvez proposer sa publication.',
833
+    '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.',
834
+    'texte_publication_articles_post_dates' => 'Quel comportement SPIP doit-il adopter face aux articles dont la
835 835
 		date de publication a été fixée à une
836 836
 		échéance future ?',
837
-	'texte_rappel_selection_champs' => '[N’oubliez pas de sélectionner correctement ce champ.]',
838
-	'texte_recalcul_page' => 'Si vous voulez
837
+    'texte_rappel_selection_champs' => '[N’oubliez pas de sélectionner correctement ce champ.]',
838
+    'texte_recalcul_page' => 'Si vous voulez
839 839
 recalculer une seule page, passez plutôt par l’espace public et utilisez-y le bouton « recalculer ».',
840
-	'texte_recuperer_base' => 'Réparer la base de données',
841
-	'texte_reference_mais_redirige' => 'article référencé dans votre site SPIP, mais redirigé vers une autre URL.',
842
-	'texte_requetes_echouent' => '<b>Lorsque certaines requêtes SQL échouent
840
+    'texte_recuperer_base' => 'Réparer la base de données',
841
+    'texte_reference_mais_redirige' => 'article référencé dans votre site SPIP, mais redirigé vers une autre URL.',
842
+    'texte_requetes_echouent' => '<b>Lorsque certaines requêtes SQL échouent
843 843
   systématiquement et sans raison apparente, il est possible
844 844
   que ce soit à cause de la base de données
845 845
   elle-même.</b><p>
@@ -850,90 +850,90 @@  discard block
 block discarded – undo
850 850
   peut-être des indices de ce qui ne va pas...</p><p>
851 851
   Si le problème persiste, prenez contact avec votre
852 852
   hébergeur.</p>',
853
-	'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 :
853
+    '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 :
854 854
 	<ul><li> le format par défaut des dates sur le site public ;</li>
855 855
 	<li> la nature du moteur typographique que SPIP doit utiliser pour le rendu des textes ;</li>
856 856
 	<li> la langue utilisée dans les formulaires du site public ;</li>
857 857
 	<li> la langue présentée par défaut dans l’espace privé.</li></ul>',
858
-	'texte_sous_titre' => 'Sous-titre',
859
-	'texte_statistiques_visites' => '(barres foncées :  dimanche / courbe foncée : évolution de la moyenne)',
860
-	'texte_statut_attente_validation' => 'en attente de validation',
861
-	'texte_statut_publies' => 'publiés en ligne',
862
-	'texte_statut_refuses' => 'refusés',
863
-	'texte_suppression_fichiers' => 'Utilisez cette commande afin de supprimer tous les fichiers présents
858
+    'texte_sous_titre' => 'Sous-titre',
859
+    'texte_statistiques_visites' => '(barres foncées :  dimanche / courbe foncée : évolution de la moyenne)',
860
+    'texte_statut_attente_validation' => 'en attente de validation',
861
+    'texte_statut_publies' => 'publiés en ligne',
862
+    'texte_statut_refuses' => 'refusés',
863
+    'texte_suppression_fichiers' => 'Utilisez cette commande afin de supprimer tous les fichiers présents
864 864
 dans le cache SPIP. Cela permet par exemple de forcer un recalcul de toutes les pages si vous
865 865
 avez fait des modifications importantes de graphisme ou de structure du site.',
866
-	'texte_sur_titre' => 'Sur-titre',
867
-	'texte_table_ok' => ' : cette table est OK.',
868
-	'texte_tentative_recuperation' => 'Tentative de réparation',
869
-	'texte_tenter_reparation' => 'Tenter une réparation de la base de données',
870
-	'texte_test_proxy' => 'Pour faire un essai de ce proxy, indiquez ici l’adresse d’un site Web
866
+    'texte_sur_titre' => 'Sur-titre',
867
+    'texte_table_ok' => ' : cette table est OK.',
868
+    'texte_tentative_recuperation' => 'Tentative de réparation',
869
+    'texte_tenter_reparation' => 'Tenter une réparation de la base de données',
870
+    'texte_test_proxy' => 'Pour faire un essai de ce proxy, indiquez ici l’adresse d’un site Web
871 871
 				que vous souhaitez tester.',
872
-	'texte_titre_02' => 'Titre :',
873
-	'texte_titre_obligatoire' => '<b>Titre</b> [Obligatoire]',
874
-	'texte_travail_article' => '@nom_auteur_modif@ a travaillé sur cet article il y a @date_diff@ minutes',
875
-	'texte_travail_collaboratif' => 'S’il est fréquent que plusieurs rédacteurs
872
+    'texte_titre_02' => 'Titre :',
873
+    'texte_titre_obligatoire' => '<b>Titre</b> [Obligatoire]',
874
+    'texte_travail_article' => '@nom_auteur_modif@ a travaillé sur cet article il y a @date_diff@ minutes',
875
+    'texte_travail_collaboratif' => 'S’il est fréquent que plusieurs rédacteurs
876 876
 		travaillent sur le même article, le système
877 877
 		peut afficher les articles récemment « ouverts »
878 878
 		afin d’éviter les modifications simultanées.
879 879
 		Cette option est désactivée par défaut
880 880
 		afin d’éviter d’afficher des messages d’avertissement
881 881
 		intempestifs.',
882
-	'texte_vide' => 'vide',
883
-	'texte_vider_cache' => 'Vider le cache',
884
-	'titre_admin_tech' => 'Maintenance technique',
885
-	'titre_admin_vider' => 'Maintenance technique',
886
-	'titre_ajouter_un_auteur' => 'Ajouter un auteur',
887
-	'titre_ajouter_un_mot' => 'Ajouter un mot-clé',
888
-	'titre_cadre_afficher_article' => 'Afficher les articles',
889
-	'titre_cadre_afficher_traductions' => 'Afficher l’état des traductions pour les langues suivantes :',
890
-	'titre_cadre_ajouter_auteur' => 'AJOUTER UN AUTEUR :',
891
-	'titre_cadre_interieur_rubrique' => 'À l’intérieur de la rubrique',
892
-	'titre_cadre_numero_auteur' => 'AUTEUR NUMÉRO',
893
-	'titre_cadre_numero_objet' => '@objet@ NUMÉRO :',
894
-	'titre_cadre_signature_obligatoire' => '<b>Signature</b> [Obligatoire]<br />',
895
-	'titre_config_contenu_notifications' => 'Notifications',
896
-	'titre_config_contenu_prive' => 'Dans l’espace privé',
897
-	'titre_config_contenu_public' => 'Sur le site public',
898
-	'titre_config_fonctions' => 'Configuration du site',
899
-	'titre_config_langage' => 'Configurer la langue',
900
-	'titre_configuration' => 'Configuration du site',
901
-	'titre_configurer_preferences' => 'Configurer vos préférences',
902
-	'titre_configurer_preferences_menus' => 'Configurer vos préférences de menus',
903
-	'titre_conflit_edition' => 'Conflit lors de l’édition',
904
-	'titre_connexion_ldap' => 'Options : <b>Votre connexion LDAP</b>',
905
-	'titre_groupe_mots' => 'GROUPE DE MOTS :',
906
-	'titre_identite_site' => 'Identité du site',
907
-	'titre_langue_article' => 'Langue de l’article',
908
-	'titre_langue_rubrique' => 'Langue de la rubrique',
909
-	'titre_langue_trad_article' => 'LANGUE ET TRADUCTIONS DE L’ARTICLE',
910
-	'titre_les_articles' => 'LES ARTICLES',
911
-	'titre_messagerie_agenda' => 'Messagerie et agenda',
912
-	'titre_naviguer_dans_le_site' => 'Naviguer dans le site...',
913
-	'titre_nouvelle_rubrique' => 'Nouvelle rubrique',
914
-	'titre_numero_rubrique' => 'RUBRIQUE NUMÉRO :',
915
-	'titre_page_articles_edit' => 'Modifier : @titre@',
916
-	'titre_page_articles_page' => 'Les articles',
917
-	'titre_page_articles_tous' => 'Tout le site',
918
-	'titre_page_calendrier' => 'Calendrier @nom_mois@ @annee@',
919
-	'titre_page_config_contenu' => 'Configuration du site',
920
-	'titre_page_delete_all' => 'suppression totale et irréversible',
921
-	'titre_page_recherche' => 'Résultats de la recherche @recherche@',
922
-	'titre_page_statistiques_referers' => 'Statistiques (liens entrants)',
923
-	'titre_page_upgrade' => 'Mise à niveau de SPIP',
924
-	'titre_preference_menus_favoris' => 'Menus favoris',
925
-	'titre_publication_articles_post_dates' => 'Publication des articles post-datés',
926
-	'titre_reparation' => 'Réparation',
927
-	'titre_suivi_petition' => 'Suivi des pétitions',
928
-	'tls_ldap' => 'Transport Layer Security :',
929
-	'trad_article_traduction' => 'Toutes les versions de cet article :',
930
-	'trad_delier' => 'Ne plus lier à ces traductions',
931
-	'trad_lier' => 'Cet article est une traduction de l’article numéro :',
932
-	'trad_new' => 'Écrire une nouvelle traduction',
882
+    'texte_vide' => 'vide',
883
+    'texte_vider_cache' => 'Vider le cache',
884
+    'titre_admin_tech' => 'Maintenance technique',
885
+    'titre_admin_vider' => 'Maintenance technique',
886
+    'titre_ajouter_un_auteur' => 'Ajouter un auteur',
887
+    'titre_ajouter_un_mot' => 'Ajouter un mot-clé',
888
+    'titre_cadre_afficher_article' => 'Afficher les articles',
889
+    'titre_cadre_afficher_traductions' => 'Afficher l’état des traductions pour les langues suivantes :',
890
+    'titre_cadre_ajouter_auteur' => 'AJOUTER UN AUTEUR :',
891
+    'titre_cadre_interieur_rubrique' => 'À l’intérieur de la rubrique',
892
+    'titre_cadre_numero_auteur' => 'AUTEUR NUMÉRO',
893
+    'titre_cadre_numero_objet' => '@objet@ NUMÉRO :',
894
+    'titre_cadre_signature_obligatoire' => '<b>Signature</b> [Obligatoire]<br />',
895
+    'titre_config_contenu_notifications' => 'Notifications',
896
+    'titre_config_contenu_prive' => 'Dans l’espace privé',
897
+    'titre_config_contenu_public' => 'Sur le site public',
898
+    'titre_config_fonctions' => 'Configuration du site',
899
+    'titre_config_langage' => 'Configurer la langue',
900
+    'titre_configuration' => 'Configuration du site',
901
+    'titre_configurer_preferences' => 'Configurer vos préférences',
902
+    'titre_configurer_preferences_menus' => 'Configurer vos préférences de menus',
903
+    'titre_conflit_edition' => 'Conflit lors de l’édition',
904
+    'titre_connexion_ldap' => 'Options : <b>Votre connexion LDAP</b>',
905
+    'titre_groupe_mots' => 'GROUPE DE MOTS :',
906
+    'titre_identite_site' => 'Identité du site',
907
+    'titre_langue_article' => 'Langue de l’article',
908
+    'titre_langue_rubrique' => 'Langue de la rubrique',
909
+    'titre_langue_trad_article' => 'LANGUE ET TRADUCTIONS DE L’ARTICLE',
910
+    'titre_les_articles' => 'LES ARTICLES',
911
+    'titre_messagerie_agenda' => 'Messagerie et agenda',
912
+    'titre_naviguer_dans_le_site' => 'Naviguer dans le site...',
913
+    'titre_nouvelle_rubrique' => 'Nouvelle rubrique',
914
+    'titre_numero_rubrique' => 'RUBRIQUE NUMÉRO :',
915
+    'titre_page_articles_edit' => 'Modifier : @titre@',
916
+    'titre_page_articles_page' => 'Les articles',
917
+    'titre_page_articles_tous' => 'Tout le site',
918
+    'titre_page_calendrier' => 'Calendrier @nom_mois@ @annee@',
919
+    'titre_page_config_contenu' => 'Configuration du site',
920
+    'titre_page_delete_all' => 'suppression totale et irréversible',
921
+    'titre_page_recherche' => 'Résultats de la recherche @recherche@',
922
+    'titre_page_statistiques_referers' => 'Statistiques (liens entrants)',
923
+    'titre_page_upgrade' => 'Mise à niveau de SPIP',
924
+    'titre_preference_menus_favoris' => 'Menus favoris',
925
+    'titre_publication_articles_post_dates' => 'Publication des articles post-datés',
926
+    'titre_reparation' => 'Réparation',
927
+    'titre_suivi_petition' => 'Suivi des pétitions',
928
+    'tls_ldap' => 'Transport Layer Security :',
929
+    'trad_article_traduction' => 'Toutes les versions de cet article :',
930
+    'trad_delier' => 'Ne plus lier à ces traductions',
931
+    'trad_lier' => 'Cet article est une traduction de l’article numéro :',
932
+    'trad_new' => 'Écrire une nouvelle traduction',
933 933
 
934
-	// U
935
-	'utf8_convert_erreur_orig' => 'Erreur : le jeu de caractères @charset@ n’est pas supporté.',
934
+    // U
935
+    'utf8_convert_erreur_orig' => 'Erreur : le jeu de caractères @charset@ n’est pas supporté.',
936 936
 
937
-	// V
938
-	'version' => 'Version :'
937
+    // V
938
+    'version' => 'Version :'
939 939
 );
Please login to merge, or discard this patch.