Completed
Push — master ( 3898e1...ad50fe )
by cam
01:35
created
ecrire/exec/admin_plugin.php 2 patches
Indentation   +203 added lines, -203 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('inc/config');
@@ -37,26 +37,26 @@  discard block
 block discarded – undo
37 37
  */
38 38
 function exec_admin_plugin_dist($retour = '') {
39 39
 
40
-	if (!autoriser('configurer', '_plugins')) {
41
-		include_spip('inc/minipres');
42
-		echo minipres();
43
-	} else {
44
-		// on fait la verif du path avant tout,
45
-		// et l'installation des qu'on est dans la colonne principale
46
-		// si jamais la liste des plugins actifs change, il faut faire un refresh du hit
47
-		// pour etre sur que les bons fichiers seront charges lors de l'install
48
-		$new = actualise_plugins_actifs();
49
-		if ($new and _request('actualise') < 2) {
50
-			include_spip('inc/headers');
51
-			if (isset($GLOBALS['fichier_php_compile_recent'])) {
52
-				// attendre eventuellement l'invalidation du cache opcode
53
-				spip_attend_invalidation_opcode_cache($GLOBALS['fichier_php_compile_recent']);
54
-			}
55
-			redirige_par_entete(parametre_url(self(), 'actualise', _request('actualise') + 1, '&'));
56
-		} else {
57
-			admin_plug_args(_request('voir'), _request('erreur'), _request('format'));
58
-		}
59
-	}
40
+    if (!autoriser('configurer', '_plugins')) {
41
+        include_spip('inc/minipres');
42
+        echo minipres();
43
+    } else {
44
+        // on fait la verif du path avant tout,
45
+        // et l'installation des qu'on est dans la colonne principale
46
+        // si jamais la liste des plugins actifs change, il faut faire un refresh du hit
47
+        // pour etre sur que les bons fichiers seront charges lors de l'install
48
+        $new = actualise_plugins_actifs();
49
+        if ($new and _request('actualise') < 2) {
50
+            include_spip('inc/headers');
51
+            if (isset($GLOBALS['fichier_php_compile_recent'])) {
52
+                // attendre eventuellement l'invalidation du cache opcode
53
+                spip_attend_invalidation_opcode_cache($GLOBALS['fichier_php_compile_recent']);
54
+            }
55
+            redirige_par_entete(parametre_url(self(), 'actualise', _request('actualise') + 1, '&'));
56
+        } else {
57
+            admin_plug_args(_request('voir'), _request('erreur'), _request('format'));
58
+        }
59
+    }
60 60
 }
61 61
 
62 62
 /**
@@ -81,132 +81,132 @@  discard block
 block discarded – undo
81 81
  *     Format d'affichage (liste ou arborescence)
82 82
  **/
83 83
 function admin_plug_args($quoi, $erreur, $format) {
84
-	$lpf = null;
85
-	$lcpas = null;
86
-	$lcpaffichesup = null;
87
-	if (!$quoi) {
88
-		$quoi = 'actifs';
89
-	}
90
-	// empecher l'affichage des erreurs dans le bandeau, on le donne ensuite
91
-	// format brut par plugin
92
-	$GLOBALS['erreurs_activation_raw'] = plugin_donne_erreurs(true, false);
93
-	// format resume mis en forme
94
-	$erreur_activation = plugin_donne_erreurs();
95
-	$commencer_page = charger_fonction('commencer_page', 'inc');
96
-	echo $commencer_page(_T('icone_admin_plugin'), 'configuration', 'plugin');
97
-
98
-	echo debut_gauche();
99
-	echo recuperer_fond('prive/squelettes/navigation/configurer', ['exec' => 'admin_plugin']);
100
-
101
-	echo pipeline(
102
-		'affiche_gauche',
103
-		[
104
-			'args' => ['exec' => 'admin_plugin'],
105
-			'data' => afficher_librairies()
106
-		]
107
-	);
108
-
109
-	echo debut_droite();
110
-	echo gros_titre(_T('icone_admin_plugin'), '');
111
-
112
-	// Barre d'onglets de premier niveau
113
-	echo barre_onglets('plugins', 'plugins_actifs');
114
-	// Barre d'onglets de second niveau
115
-	$onglet2 = $quoi == 'actifs' ? 'plugins_actifs' : 'admin_plugin';
116
-	echo debut_onglet('onglets_simple second');
117
-	echo onglet(_T('plugins_tous_liste'), generer_url_ecrire('admin_plugin', 'voir=tous'), 'admin_plugin', $onglet2);
118
-	echo onglet(_T('plugins_actifs_liste'), generer_url_ecrire('admin_plugin'), 'plugins_actifs', $onglet2);
119
-	echo fin_onglet();
120
-
121
-	// message d'erreur au retour d'une operation
122
-	if ($erreur) {
123
-		echo "<div class='error'>" . spip_htmlspecialchars($erreur) . '</div>';
124
-	}
125
-	if ($erreur_activation) {
126
-		echo "<div class='error'>$erreur_activation</div>";
127
-	}
128
-
129
-	// la mise a jour de cette meta a ete faite par ecrire_plugin_actifs
130
-	$actifs = (array) unserialize($GLOBALS['meta']['plugin']);
131
-	$lcpa = $actifs + (array) unserialize($GLOBALS['meta']['plugin_attente']);
132
-
133
-	// Les affichages se basent sur le repertoire, pas sur le nom
134
-	$actifs = liste_chemin_plugin($actifs, '');
135
-	if (defined('_DIR_PLUGINS_SUPPL')) {
136
-		$lcpas = liste_chemin_plugin($lcpa, _DIR_PLUGINS_SUPPL);
137
-	}
138
-	$lcpa = liste_chemin_plugin($lcpa);
139
-
140
-	// on installe les plugins maintenant,
141
-	// cela permet aux scripts d'install de faire des affichages (moches...)
142
-	plugin_installes_meta();
143
-
144
-	echo "<div class='liste-plugins formulaire_spip'>";
145
-	echo debut_cadre_trait_couleur('plugin-24.png', true, '', _T('plugins_liste'), 'plugins');
146
-
147
-	if ($quoi !== 'actifs') {
148
-		$lpf = liste_plugin_files();
149
-		if ($lpf) {
150
-			echo '<p>' . _T('texte_presente_plugin') . '</p>';
151
-		} else {
152
-			if (!@is_dir(_DIR_PLUGINS)) {
153
-				echo '<p>' . _T('plugin_info_automatique_ftp', ['rep' => joli_repertoire(_DIR_PLUGINS)])
154
-					. ' &mdash; ' . _T('plugin_info_automatique_creer') . '</p>';
155
-			}
156
-		}
157
-		$lcpaffiche = $lpf;
158
-		if (defined('_DIR_PLUGINS_SUPPL')) {
159
-			$lcpaffichesup = liste_plugin_files(_DIR_PLUGINS_SUPPL);
160
-		}
161
-	} else {
162
-		// la liste
163
-		// $quoi=='actifs'
164
-		$lcpaffiche = $lcpa;
165
-		if (defined('_DIR_PLUGINS_SUPPL')) {
166
-			$lcpaffichesup = $lcpas;
167
-		}
168
-	}
169
-
170
-	if ($quoi == 'actifs' or $lpf) {
171
-		$nb = is_countable($lcpa) ? count($lcpa) : 0;
172
-		if (defined('_DIR_PLUGINS_SUPPL')) {
173
-			$nb += is_countable($lcpas) ? count($lcpas) : 0;
174
-		}
175
-		echo '<h3>' . sinon(
176
-			singulier_ou_pluriel($nb, 'plugins_actif_un', 'plugins_actifs', 'count'),
177
-			_T('plugins_actif_aucun')
178
-		) . '</h3>';
179
-	}
180
-
181
-	if (empty($format)) {
182
-		$format = 'liste';
183
-	} elseif (!in_array($format, ['liste', 'repertoires'])) {
184
-		$format = 'repertoires';
185
-	}
186
-
187
-	$afficher = charger_fonction("afficher_$format", 'plugins');
188
-	$corps = $afficher(self(), $lcpaffiche, $lcpa, $actifs);
189
-	if (defined('_DIR_PLUGINS_SUPPL')) {
190
-		$corps .= $afficher(self(), $lcpaffichesup, $lcpas, $actifs, _DIR_PLUGINS_SUPPL);
191
-	}
192
-
193
-	if ($corps) {
194
-		$corps .= "\n<div class='boutons' style='display:none;'>"
195
-			. "<input type='submit' class='submit save' value='" . _T('bouton_enregistrer')
196
-			. "' />"
197
-			. '</div>';
198
-	}
199
-
200
-	echo redirige_action_post('activer_plugins', 'activer', 'admin_plugin', '', $corps);
201
-
202
-	echo fin_cadre_trait_couleur();
203
-
204
-	if ($quoi == 'actifs') {
205
-		echo affiche_les_plugins_verrouilles($actifs);
206
-	}
207
-	echo '</div>';
208
-
209
-	echo http_script("
84
+    $lpf = null;
85
+    $lcpas = null;
86
+    $lcpaffichesup = null;
87
+    if (!$quoi) {
88
+        $quoi = 'actifs';
89
+    }
90
+    // empecher l'affichage des erreurs dans le bandeau, on le donne ensuite
91
+    // format brut par plugin
92
+    $GLOBALS['erreurs_activation_raw'] = plugin_donne_erreurs(true, false);
93
+    // format resume mis en forme
94
+    $erreur_activation = plugin_donne_erreurs();
95
+    $commencer_page = charger_fonction('commencer_page', 'inc');
96
+    echo $commencer_page(_T('icone_admin_plugin'), 'configuration', 'plugin');
97
+
98
+    echo debut_gauche();
99
+    echo recuperer_fond('prive/squelettes/navigation/configurer', ['exec' => 'admin_plugin']);
100
+
101
+    echo pipeline(
102
+        'affiche_gauche',
103
+        [
104
+            'args' => ['exec' => 'admin_plugin'],
105
+            'data' => afficher_librairies()
106
+        ]
107
+    );
108
+
109
+    echo debut_droite();
110
+    echo gros_titre(_T('icone_admin_plugin'), '');
111
+
112
+    // Barre d'onglets de premier niveau
113
+    echo barre_onglets('plugins', 'plugins_actifs');
114
+    // Barre d'onglets de second niveau
115
+    $onglet2 = $quoi == 'actifs' ? 'plugins_actifs' : 'admin_plugin';
116
+    echo debut_onglet('onglets_simple second');
117
+    echo onglet(_T('plugins_tous_liste'), generer_url_ecrire('admin_plugin', 'voir=tous'), 'admin_plugin', $onglet2);
118
+    echo onglet(_T('plugins_actifs_liste'), generer_url_ecrire('admin_plugin'), 'plugins_actifs', $onglet2);
119
+    echo fin_onglet();
120
+
121
+    // message d'erreur au retour d'une operation
122
+    if ($erreur) {
123
+        echo "<div class='error'>" . spip_htmlspecialchars($erreur) . '</div>';
124
+    }
125
+    if ($erreur_activation) {
126
+        echo "<div class='error'>$erreur_activation</div>";
127
+    }
128
+
129
+    // la mise a jour de cette meta a ete faite par ecrire_plugin_actifs
130
+    $actifs = (array) unserialize($GLOBALS['meta']['plugin']);
131
+    $lcpa = $actifs + (array) unserialize($GLOBALS['meta']['plugin_attente']);
132
+
133
+    // Les affichages se basent sur le repertoire, pas sur le nom
134
+    $actifs = liste_chemin_plugin($actifs, '');
135
+    if (defined('_DIR_PLUGINS_SUPPL')) {
136
+        $lcpas = liste_chemin_plugin($lcpa, _DIR_PLUGINS_SUPPL);
137
+    }
138
+    $lcpa = liste_chemin_plugin($lcpa);
139
+
140
+    // on installe les plugins maintenant,
141
+    // cela permet aux scripts d'install de faire des affichages (moches...)
142
+    plugin_installes_meta();
143
+
144
+    echo "<div class='liste-plugins formulaire_spip'>";
145
+    echo debut_cadre_trait_couleur('plugin-24.png', true, '', _T('plugins_liste'), 'plugins');
146
+
147
+    if ($quoi !== 'actifs') {
148
+        $lpf = liste_plugin_files();
149
+        if ($lpf) {
150
+            echo '<p>' . _T('texte_presente_plugin') . '</p>';
151
+        } else {
152
+            if (!@is_dir(_DIR_PLUGINS)) {
153
+                echo '<p>' . _T('plugin_info_automatique_ftp', ['rep' => joli_repertoire(_DIR_PLUGINS)])
154
+                    . ' &mdash; ' . _T('plugin_info_automatique_creer') . '</p>';
155
+            }
156
+        }
157
+        $lcpaffiche = $lpf;
158
+        if (defined('_DIR_PLUGINS_SUPPL')) {
159
+            $lcpaffichesup = liste_plugin_files(_DIR_PLUGINS_SUPPL);
160
+        }
161
+    } else {
162
+        // la liste
163
+        // $quoi=='actifs'
164
+        $lcpaffiche = $lcpa;
165
+        if (defined('_DIR_PLUGINS_SUPPL')) {
166
+            $lcpaffichesup = $lcpas;
167
+        }
168
+    }
169
+
170
+    if ($quoi == 'actifs' or $lpf) {
171
+        $nb = is_countable($lcpa) ? count($lcpa) : 0;
172
+        if (defined('_DIR_PLUGINS_SUPPL')) {
173
+            $nb += is_countable($lcpas) ? count($lcpas) : 0;
174
+        }
175
+        echo '<h3>' . sinon(
176
+            singulier_ou_pluriel($nb, 'plugins_actif_un', 'plugins_actifs', 'count'),
177
+            _T('plugins_actif_aucun')
178
+        ) . '</h3>';
179
+    }
180
+
181
+    if (empty($format)) {
182
+        $format = 'liste';
183
+    } elseif (!in_array($format, ['liste', 'repertoires'])) {
184
+        $format = 'repertoires';
185
+    }
186
+
187
+    $afficher = charger_fonction("afficher_$format", 'plugins');
188
+    $corps = $afficher(self(), $lcpaffiche, $lcpa, $actifs);
189
+    if (defined('_DIR_PLUGINS_SUPPL')) {
190
+        $corps .= $afficher(self(), $lcpaffichesup, $lcpas, $actifs, _DIR_PLUGINS_SUPPL);
191
+    }
192
+
193
+    if ($corps) {
194
+        $corps .= "\n<div class='boutons' style='display:none;'>"
195
+            . "<input type='submit' class='submit save' value='" . _T('bouton_enregistrer')
196
+            . "' />"
197
+            . '</div>';
198
+    }
199
+
200
+    echo redirige_action_post('activer_plugins', 'activer', 'admin_plugin', '', $corps);
201
+
202
+    echo fin_cadre_trait_couleur();
203
+
204
+    if ($quoi == 'actifs') {
205
+        echo affiche_les_plugins_verrouilles($actifs);
206
+    }
207
+    echo '</div>';
208
+
209
+    echo http_script("
210 210
 	jQuery(function(){
211 211
 		jQuery('.plugins li.item a[rel=info]').click(function(){
212 212
 			var li = jQuery(this).parents('li').eq(0);
@@ -232,15 +232,15 @@  discard block
 block discarded – undo
232 232
 	});
233 233
 	");
234 234
 
235
-	echo pipeline(
236
-		'affiche_milieu',
237
-		[
238
-			'args' => ['exec' => 'admin_plugin'],
239
-			'data' => ''
240
-		]
241
-	);
235
+    echo pipeline(
236
+        'affiche_milieu',
237
+        [
238
+            'args' => ['exec' => 'admin_plugin'],
239
+            'data' => ''
240
+        ]
241
+    );
242 242
 
243
-	echo fin_gauche(), fin_page();
243
+    echo fin_gauche(), fin_page();
244 244
 }
245 245
 
246 246
 /**
@@ -254,23 +254,23 @@  discard block
 block discarded – undo
254 254
  *     Code HTML
255 255
  **/
256 256
 function affiche_les_plugins_verrouilles($actifs) {
257
-	if ((!$liste = liste_plugin_files(_DIR_PLUGINS_DIST))) {
258
-		return '';
259
-	}
260
-
261
-	$afficher = charger_fonction('afficher_liste', 'plugins');
262
-	$liste = $afficher(self(), $liste, [], $actifs, _DIR_PLUGINS_DIST);
263
-
264
-	return
265
-		"<div id='plugins_dist'>"
266
-		. debut_cadre_trait_couleur('', true, '', _T('plugins_liste_dist'), 'liste_plugins_dist')
267
-		. '<p>'
268
-		. _T('plugin_info_plugins_dist_1', ['plugins_dist' => joli_repertoire(_DIR_PLUGINS_DIST)])
269
-		. '<br />' . _T('plugin_info_plugins_dist_2')
270
-		. '</p>'
271
-		. $liste
272
-		. fin_cadre_trait_couleur()
273
-		. "</div>\n";
257
+    if ((!$liste = liste_plugin_files(_DIR_PLUGINS_DIST))) {
258
+        return '';
259
+    }
260
+
261
+    $afficher = charger_fonction('afficher_liste', 'plugins');
262
+    $liste = $afficher(self(), $liste, [], $actifs, _DIR_PLUGINS_DIST);
263
+
264
+    return
265
+        "<div id='plugins_dist'>"
266
+        . debut_cadre_trait_couleur('', true, '', _T('plugins_liste_dist'), 'liste_plugins_dist')
267
+        . '<p>'
268
+        . _T('plugin_info_plugins_dist_1', ['plugins_dist' => joli_repertoire(_DIR_PLUGINS_DIST)])
269
+        . '<br />' . _T('plugin_info_plugins_dist_2')
270
+        . '</p>'
271
+        . $liste
272
+        . fin_cadre_trait_couleur()
273
+        . "</div>\n";
274 274
 }
275 275
 
276 276
 /**
@@ -282,19 +282,19 @@  discard block
 block discarded – undo
282 282
  */
283 283
 function afficher_librairies() {
284 284
 
285
-	if (!$libs = liste_librairies()) {
286
-		return '';
287
-	}
288
-	ksort($libs);
289
-	$res = debut_cadre_enfonce('', true, '', _T('plugin_librairies_installees'));
290
-	$res .= '<dl>';
291
-	foreach ($libs as $lib => $rep) {
292
-		$res .= "<dt>$lib</dt><dd>" . joli_repertoire($rep) . "</dd>\n";
293
-	}
294
-	$res .= '</dl>';
295
-	$res .= fin_cadre_enfonce();
296
-
297
-	return $res;
285
+    if (!$libs = liste_librairies()) {
286
+        return '';
287
+    }
288
+    ksort($libs);
289
+    $res = debut_cadre_enfonce('', true, '', _T('plugin_librairies_installees'));
290
+    $res .= '<dl>';
291
+    foreach ($libs as $lib => $rep) {
292
+        $res .= "<dt>$lib</dt><dd>" . joli_repertoire($rep) . "</dd>\n";
293
+    }
294
+    $res .= '</dl>';
295
+    $res .= fin_cadre_enfonce();
296
+
297
+    return $res;
298 298
 }
299 299
 
300 300
 
@@ -305,22 +305,22 @@  discard block
 block discarded – undo
305 305
  *     Tableau (nom de la lib => repertoire , ...)
306 306
  */
307 307
 function liste_librairies() {
308
-	$libs = [];
309
-	foreach (array_reverse(creer_chemin()) as $d) {
310
-		if (
311
-			is_dir($dir = $d . 'lib/')
312
-			and $t = opendir($dir)
313
-		) {
314
-			while (($f = readdir($t)) !== false) {
315
-				if (
316
-					$f[0] != '.'
317
-					and is_dir("$dir/$f")
318
-				) {
319
-					$libs[$f] = $dir;
320
-				}
321
-			}
322
-		}
323
-	}
324
-
325
-	return $libs;
308
+    $libs = [];
309
+    foreach (array_reverse(creer_chemin()) as $d) {
310
+        if (
311
+            is_dir($dir = $d . 'lib/')
312
+            and $t = opendir($dir)
313
+        ) {
314
+            while (($f = readdir($t)) !== false) {
315
+                if (
316
+                    $f[0] != '.'
317
+                    and is_dir("$dir/$f")
318
+                ) {
319
+                    $libs[$f] = $dir;
320
+                }
321
+            }
322
+        }
323
+    }
324
+
325
+    return $libs;
326 326
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -120,7 +120,7 @@  discard block
 block discarded – undo
120 120
 
121 121
 	// message d'erreur au retour d'une operation
122 122
 	if ($erreur) {
123
-		echo "<div class='error'>" . spip_htmlspecialchars($erreur) . '</div>';
123
+		echo "<div class='error'>".spip_htmlspecialchars($erreur).'</div>';
124 124
 	}
125 125
 	if ($erreur_activation) {
126 126
 		echo "<div class='error'>$erreur_activation</div>";
@@ -147,11 +147,11 @@  discard block
 block discarded – undo
147 147
 	if ($quoi !== 'actifs') {
148 148
 		$lpf = liste_plugin_files();
149 149
 		if ($lpf) {
150
-			echo '<p>' . _T('texte_presente_plugin') . '</p>';
150
+			echo '<p>'._T('texte_presente_plugin').'</p>';
151 151
 		} else {
152 152
 			if (!@is_dir(_DIR_PLUGINS)) {
153
-				echo '<p>' . _T('plugin_info_automatique_ftp', ['rep' => joli_repertoire(_DIR_PLUGINS)])
154
-					. ' &mdash; ' . _T('plugin_info_automatique_creer') . '</p>';
153
+				echo '<p>'._T('plugin_info_automatique_ftp', ['rep' => joli_repertoire(_DIR_PLUGINS)])
154
+					. ' &mdash; '._T('plugin_info_automatique_creer').'</p>';
155 155
 			}
156 156
 		}
157 157
 		$lcpaffiche = $lpf;
@@ -172,10 +172,10 @@  discard block
 block discarded – undo
172 172
 		if (defined('_DIR_PLUGINS_SUPPL')) {
173 173
 			$nb += is_countable($lcpas) ? count($lcpas) : 0;
174 174
 		}
175
-		echo '<h3>' . sinon(
175
+		echo '<h3>'.sinon(
176 176
 			singulier_ou_pluriel($nb, 'plugins_actif_un', 'plugins_actifs', 'count'),
177 177
 			_T('plugins_actif_aucun')
178
-		) . '</h3>';
178
+		).'</h3>';
179 179
 	}
180 180
 
181 181
 	if (empty($format)) {
@@ -192,7 +192,7 @@  discard block
 block discarded – undo
192 192
 
193 193
 	if ($corps) {
194 194
 		$corps .= "\n<div class='boutons' style='display:none;'>"
195
-			. "<input type='submit' class='submit save' value='" . _T('bouton_enregistrer')
195
+			. "<input type='submit' class='submit save' value='"._T('bouton_enregistrer')
196 196
 			. "' />"
197 197
 			. '</div>';
198 198
 	}
@@ -266,7 +266,7 @@  discard block
 block discarded – undo
266 266
 		. debut_cadre_trait_couleur('', true, '', _T('plugins_liste_dist'), 'liste_plugins_dist')
267 267
 		. '<p>'
268 268
 		. _T('plugin_info_plugins_dist_1', ['plugins_dist' => joli_repertoire(_DIR_PLUGINS_DIST)])
269
-		. '<br />' . _T('plugin_info_plugins_dist_2')
269
+		. '<br />'._T('plugin_info_plugins_dist_2')
270 270
 		. '</p>'
271 271
 		. $liste
272 272
 		. fin_cadre_trait_couleur()
@@ -289,7 +289,7 @@  discard block
 block discarded – undo
289 289
 	$res = debut_cadre_enfonce('', true, '', _T('plugin_librairies_installees'));
290 290
 	$res .= '<dl>';
291 291
 	foreach ($libs as $lib => $rep) {
292
-		$res .= "<dt>$lib</dt><dd>" . joli_repertoire($rep) . "</dd>\n";
292
+		$res .= "<dt>$lib</dt><dd>".joli_repertoire($rep)."</dd>\n";
293 293
 	}
294 294
 	$res .= '</dl>';
295 295
 	$res .= fin_cadre_enfonce();
@@ -308,7 +308,7 @@  discard block
 block discarded – undo
308 308
 	$libs = [];
309 309
 	foreach (array_reverse(creer_chemin()) as $d) {
310 310
 		if (
311
-			is_dir($dir = $d . 'lib/')
311
+			is_dir($dir = $d.'lib/')
312 312
 			and $t = opendir($dir)
313 313
 		) {
314 314
 			while (($f = readdir($t)) !== false) {
Please login to merge, or discard this patch.
ecrire/action/editer_logo.php 3 patches
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -42,8 +42,7 @@
 block discarded – undo
42 42
 		if ((is_countable($logo) ? count($logo) : 0) < 6) {
43 43
 			spip_log('Supprimer ancien logo ' . json_encode($logo, JSON_THROW_ON_ERROR), 'logo');
44 44
 			spip_unlink($logo[0]);
45
-		}
46
-		elseif (
45
+		} elseif (
47 46
 			$doc = $logo[5]
48 47
 			and isset($doc['id_document'])
49 48
 			and $id_document = $doc['id_document']
Please login to merge, or discard this patch.
Indentation   +223 added lines, -223 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
 
@@ -30,36 +30,36 @@  discard block
 block discarded – undo
30 30
  *     `on` ou `off`
31 31
  */
32 32
 function logo_supprimer($objet, $id_objet, $etat) {
33
-	$chercher_logo = charger_fonction('chercher_logo', 'inc');
34
-	$objet = objet_type($objet);
35
-	$primary = id_table_objet($objet);
36
-	include_spip('inc/chercher_logo');
37
-
38
-	// existe-t-il deja un logo ?
39
-	$logo = $chercher_logo($id_objet, $primary, $etat);
40
-	if ($logo) {
41
-		# TODO : deprecated, a supprimer -> anciens logos IMG/artonxx.png pas en base
42
-		if ((is_countable($logo) ? count($logo) : 0) < 6) {
43
-			spip_log('Supprimer ancien logo ' . json_encode($logo, JSON_THROW_ON_ERROR), 'logo');
44
-			spip_unlink($logo[0]);
45
-		}
46
-		elseif (
47
-			$doc = $logo[5]
48
-			and isset($doc['id_document'])
49
-			and $id_document = $doc['id_document']
50
-		) {
51
-			include_spip('action/editer_liens');
52
-			// supprimer le lien dans la base
53
-			objet_dissocier(['document' => $id_document], [$objet => $id_objet], ['role' => '*']);
54
-
55
-			// verifier si il reste des liens avec d'autres objets et sinon supprimer
56
-			$liens = objet_trouver_liens(['document' => $id_document], '*');
57
-			if (!count($liens)) {
58
-				$supprimer_document = charger_fonction('supprimer_document', 'action');
59
-				$supprimer_document($doc['id_document']);
60
-			}
61
-		}
62
-	}
33
+    $chercher_logo = charger_fonction('chercher_logo', 'inc');
34
+    $objet = objet_type($objet);
35
+    $primary = id_table_objet($objet);
36
+    include_spip('inc/chercher_logo');
37
+
38
+    // existe-t-il deja un logo ?
39
+    $logo = $chercher_logo($id_objet, $primary, $etat);
40
+    if ($logo) {
41
+        # TODO : deprecated, a supprimer -> anciens logos IMG/artonxx.png pas en base
42
+        if ((is_countable($logo) ? count($logo) : 0) < 6) {
43
+            spip_log('Supprimer ancien logo ' . json_encode($logo, JSON_THROW_ON_ERROR), 'logo');
44
+            spip_unlink($logo[0]);
45
+        }
46
+        elseif (
47
+            $doc = $logo[5]
48
+            and isset($doc['id_document'])
49
+            and $id_document = $doc['id_document']
50
+        ) {
51
+            include_spip('action/editer_liens');
52
+            // supprimer le lien dans la base
53
+            objet_dissocier(['document' => $id_document], [$objet => $id_objet], ['role' => '*']);
54
+
55
+            // verifier si il reste des liens avec d'autres objets et sinon supprimer
56
+            $liens = objet_trouver_liens(['document' => $id_document], '*');
57
+            if (!count($liens)) {
58
+                $supprimer_document = charger_fonction('supprimer_document', 'action');
59
+                $supprimer_document($doc['id_document']);
60
+            }
61
+        }
62
+    }
63 63
 }
64 64
 
65 65
 /**
@@ -76,200 +76,200 @@  discard block
 block discarded – undo
76 76
  *     Erreur, sinon ''
77 77
  */
78 78
 function logo_modifier($objet, $id_objet, $etat, $source) {
79
-	$chercher_logo = charger_fonction('chercher_logo', 'inc');
80
-	$objet = objet_type($objet);
81
-	$primary = id_table_objet($objet);
82
-	include_spip('inc/chercher_logo');
83
-
84
-	$mode = preg_replace(',\W,', '', $etat);
85
-	if (!$mode) {
86
-		spip_log("logo_modifier : etat $etat invalide", 'logo');
87
-		$erreur = 'etat invalide';
88
-
89
-		return $erreur;
90
-	}
91
-	// chercher dans la base
92
-	$mode_document = 'logo' . $mode;
93
-
94
-	include_spip('inc/documents');
95
-	$erreur = '';
96
-
97
-	if (!$source) {
98
-		spip_log('spip_image_ajouter : source inconnue', 'logo');
99
-		$erreur = 'source inconnue';
100
-
101
-		return $erreur;
102
-	}
103
-
104
-	// fichier dans upload/
105
-	if (is_string($source)) {
106
-		$tmp_name = false;
107
-		if (file_exists($source)) {
108
-			$tmp_name = $source;
109
-		} elseif (file_exists($f = determine_upload() . $source)) {
110
-			$tmp_name = $f;
111
-		}
112
-		if (!$tmp_name) {
113
-			spip_log('spip_image_ajouter : source inconnue', 'logo');
114
-			$erreur = 'source inconnue';
115
-
116
-			return $erreur;
117
-		}
118
-		$source = [
119
-			'tmp_name' => $tmp_name,
120
-			'name' => basename($tmp_name),
121
-		];
122
-	} elseif ($erreur = check_upload_error($source['error'], '', true)) {
123
-		return $erreur;
124
-	}
125
-
126
-	// supprimer le logo eventueel existant
127
-	// TODO : si un logo existe, le modifier plutot que supprimer + reinserer (mais il faut gerer le cas ou il est utilise par plusieurs objets, donc pas si simple)
128
-	// mais de toute facon l'interface actuelle oblige a supprimer + reinserer
129
-	if (empty($GLOBALS['logo_migrer_en_base'])) {
130
-		logo_supprimer($objet, $id_objet, $etat);
131
-	}
132
-
133
-
134
-	include_spip('inc/autoriser');
135
-	$source['mode'] = $mode_document;
136
-	$ajouter_documents = charger_fonction('ajouter_documents', 'action');
137
-	autoriser_exception('associerdocuments', $objet, $id_objet);
138
-	$ajoutes = $ajouter_documents('new', [$source], $objet, $id_objet, $mode_document);
139
-	autoriser_exception('associerdocuments', $objet, $id_objet, false);
140
-
141
-	$id_document = reset($ajoutes);
142
-
143
-	if (!is_numeric($id_document)) {
144
-		$erreur = ($id_document ?: 'Erreur inconnue');
145
-		spip_log("Erreur ajout logo : $erreur pour source=" . json_encode($source, JSON_THROW_ON_ERROR), 'logo');
146
-		return $erreur;
147
-	}
148
-
149
-	return ''; // tout est bon, pas d'erreur
79
+    $chercher_logo = charger_fonction('chercher_logo', 'inc');
80
+    $objet = objet_type($objet);
81
+    $primary = id_table_objet($objet);
82
+    include_spip('inc/chercher_logo');
83
+
84
+    $mode = preg_replace(',\W,', '', $etat);
85
+    if (!$mode) {
86
+        spip_log("logo_modifier : etat $etat invalide", 'logo');
87
+        $erreur = 'etat invalide';
88
+
89
+        return $erreur;
90
+    }
91
+    // chercher dans la base
92
+    $mode_document = 'logo' . $mode;
93
+
94
+    include_spip('inc/documents');
95
+    $erreur = '';
96
+
97
+    if (!$source) {
98
+        spip_log('spip_image_ajouter : source inconnue', 'logo');
99
+        $erreur = 'source inconnue';
100
+
101
+        return $erreur;
102
+    }
103
+
104
+    // fichier dans upload/
105
+    if (is_string($source)) {
106
+        $tmp_name = false;
107
+        if (file_exists($source)) {
108
+            $tmp_name = $source;
109
+        } elseif (file_exists($f = determine_upload() . $source)) {
110
+            $tmp_name = $f;
111
+        }
112
+        if (!$tmp_name) {
113
+            spip_log('spip_image_ajouter : source inconnue', 'logo');
114
+            $erreur = 'source inconnue';
115
+
116
+            return $erreur;
117
+        }
118
+        $source = [
119
+            'tmp_name' => $tmp_name,
120
+            'name' => basename($tmp_name),
121
+        ];
122
+    } elseif ($erreur = check_upload_error($source['error'], '', true)) {
123
+        return $erreur;
124
+    }
125
+
126
+    // supprimer le logo eventueel existant
127
+    // TODO : si un logo existe, le modifier plutot que supprimer + reinserer (mais il faut gerer le cas ou il est utilise par plusieurs objets, donc pas si simple)
128
+    // mais de toute facon l'interface actuelle oblige a supprimer + reinserer
129
+    if (empty($GLOBALS['logo_migrer_en_base'])) {
130
+        logo_supprimer($objet, $id_objet, $etat);
131
+    }
132
+
133
+
134
+    include_spip('inc/autoriser');
135
+    $source['mode'] = $mode_document;
136
+    $ajouter_documents = charger_fonction('ajouter_documents', 'action');
137
+    autoriser_exception('associerdocuments', $objet, $id_objet);
138
+    $ajoutes = $ajouter_documents('new', [$source], $objet, $id_objet, $mode_document);
139
+    autoriser_exception('associerdocuments', $objet, $id_objet, false);
140
+
141
+    $id_document = reset($ajoutes);
142
+
143
+    if (!is_numeric($id_document)) {
144
+        $erreur = ($id_document ?: 'Erreur inconnue');
145
+        spip_log("Erreur ajout logo : $erreur pour source=" . json_encode($source, JSON_THROW_ON_ERROR), 'logo');
146
+        return $erreur;
147
+    }
148
+
149
+    return ''; // tout est bon, pas d'erreur
150 150
 }
151 151
 
152 152
 function logo_migrer_en_base($objet, $time_limit) {
153 153
 
154
-	$dir_logos_erreurs = sous_repertoire(_DIR_IMG, 'logo_erreurs');
155
-	$dir_logos = sous_repertoire(_DIR_IMG, 'logo');
156
-	$formats_logos = ['jpg', 'png', 'svg', 'gif'];
157
-	if (isset($GLOBALS['formats_logos'])) {
158
-		$formats_logos = $GLOBALS['formats_logos'];
159
-	}
160
-
161
-
162
-	$trouver_table = charger_fonction('trouver_table', 'base');
163
-	$chercher_logo = charger_fonction('chercher_logo', 'inc');
164
-	include_spip('inc/chercher_logo');
165
-	$_id_objet = id_table_objet($objet);
166
-	$table = table_objet_sql($objet);
167
-	$type = type_du_logo($_id_objet);
168
-	$desc = $trouver_table($table);
169
-
170
-	// on desactive les revisions
171
-	$liste_objets_versionnes = $GLOBALS['meta']['objets_versions'] ?? '';
172
-	unset($GLOBALS['meta']['objets_versions']);
173
-	// et le signalement des editions
174
-	$articles_modif = $GLOBALS['meta']['articles_modif'] ?? '';
175
-	$GLOBALS['meta']['articles_modif'] = 'non';
176
-
177
-	foreach (['on', 'off'] as $mode) {
178
-		$nom_base = $type . $mode;
179
-		$dir = (defined('_DIR_LOGOS') ? _DIR_LOGOS : _DIR_IMG);
180
-
181
-		$files = glob($dir . $nom_base . '*');
182
-		// est-ce que c'est une nouvelle tentative de migration ?
183
-		// dans ce cas les logos sont deja dans IMG/logo/
184
-		if (!(is_countable($files) ? count($files) : 0)) {
185
-			$files = glob($dir_logos . $nom_base . '*');
186
-			if (is_countable($files) ? count($files) : 0) {
187
-				// mais il faut verifier si ils ont pas deja ete migres pour tout ou partie
188
-				$filescheck = [];
189
-				foreach ($files as $file) {
190
-					$short = basename(dirname($file)) . DIRECTORY_SEPARATOR . basename($file);
191
-					$filescheck[$short] = $file;
192
-				}
193
-				// trouver ceux deja migres
194
-				$deja = sql_allfetsel('fichier', 'spip_documents', sql_in('fichier', array_keys($filescheck)) . " AND mode LIKE 'logo%'");
195
-				if (is_countable($deja) ? count($deja) : 0) {
196
-					$deja = array_column($deja, 'fichier');
197
-					$restant = array_diff(array_keys($filescheck), $deja);
198
-					$files = [];
199
-					if (count($restant)) {
200
-						foreach ($restant as $r) {
201
-							$files[] = $filescheck[$r];
202
-						}
203
-					}
204
-				}
205
-				// et si il en reste on peut y aller...
206
-				// mais il faut modifier $dir qui sert de base dans la suite
207
-				if (is_countable($files) ? count($files) : 0) {
208
-					$dir = $dir_logos;
209
-				}
210
-			}
211
-		}
212
-
213
-		$count = (is_countable($files) ? count($files) : 0);
214
-		spip_log("logo_migrer_en_base $objet $mode : " . $count . ' logos restant', 'maj' . _LOG_INFO_IMPORTANTE);
215
-
216
-		$deja = [];
217
-		foreach ($files as $file) {
218
-			$logo = substr($file, strlen($dir . $nom_base));
219
-			$logo = explode('.', $logo);
220
-			if (
221
-				is_numeric($logo[0])
222
-				and ($id_objet = intval($logo[0]) or in_array($objet, ['site', 'rubrique']))
223
-			) {
224
-				if (!isset($deja[$id_objet])) {
225
-					$logo = $chercher_logo($id_objet, $_id_objet, $mode);
226
-					// if no logo in base
227
-					if (!$logo or (is_countable($logo) ? count($logo) : 0) < 6) {
228
-						foreach ($formats_logos as $format) {
229
-							if (@file_exists($d = ($dir . ($nom = $nom_base . intval($id_objet) . '.' . $format)))) {
230
-								if (isset($desc['field']['date_modif'])) {
231
-									$date_modif = sql_getfetsel('date_modif', $table, "$_id_objet=$id_objet");
232
-								} else {
233
-									$date_modif = null;
234
-								}
235
-								// s'assurer que le logo a les bon droits au passage (evite un echec en cas de sanitization d'un svg)
236
-								@chmod($d, _SPIP_CHMOD & 0666);
237
-								// logo_modifier commence par supprimer le logo existant, donc on le deplace pour pas le perdre
238
-								@rename($d, $dir_logos . $nom);
239
-								// et on le declare comme nouveau logo
240
-								logo_modifier($objet, $id_objet, $mode, $dir_logos . $nom);
241
-								if ($date_modif) {
242
-									sql_updateq($table, ['date_modif' => $date_modif], "$_id_objet=$id_objet");
243
-								}
244
-								break;
245
-							}
246
-						}
247
-					}
248
-					$deja[$id_objet] = true;
249
-				}
250
-			}
251
-			// si le fichier est encore la on le move : rien a faire ici
252
-			// (sauf si c'est une re-migration : il est deja dans logo/ donc il bouge pas)
253
-			if ($dir !== $dir_logos and file_exists($file)) {
254
-				@rename($file, $dir_logos_erreurs . basename($file));
255
-			}
256
-
257
-			$count--;
258
-			if ($count % 250 === 0) {
259
-				spip_log("logo_migrer_en_base $objet $mode : " . $count . ' logos restant', 'maj' . _LOG_INFO_IMPORTANTE);
260
-			}
261
-
262
-			if ($time_limit and time() > $time_limit) {
263
-				effacer_meta('drapeau_edition');
264
-				return;
265
-			}
266
-		}
267
-	}
268
-
269
-	if ($liste_objets_versionnes) {
270
-		$GLOBALS['meta']['objets_versions'] = $liste_objets_versionnes;
271
-	}
272
-	$GLOBALS['meta']['articles_modif'] = $articles_modif;
273
-
274
-	effacer_meta('drapeau_edition');
154
+    $dir_logos_erreurs = sous_repertoire(_DIR_IMG, 'logo_erreurs');
155
+    $dir_logos = sous_repertoire(_DIR_IMG, 'logo');
156
+    $formats_logos = ['jpg', 'png', 'svg', 'gif'];
157
+    if (isset($GLOBALS['formats_logos'])) {
158
+        $formats_logos = $GLOBALS['formats_logos'];
159
+    }
160
+
161
+
162
+    $trouver_table = charger_fonction('trouver_table', 'base');
163
+    $chercher_logo = charger_fonction('chercher_logo', 'inc');
164
+    include_spip('inc/chercher_logo');
165
+    $_id_objet = id_table_objet($objet);
166
+    $table = table_objet_sql($objet);
167
+    $type = type_du_logo($_id_objet);
168
+    $desc = $trouver_table($table);
169
+
170
+    // on desactive les revisions
171
+    $liste_objets_versionnes = $GLOBALS['meta']['objets_versions'] ?? '';
172
+    unset($GLOBALS['meta']['objets_versions']);
173
+    // et le signalement des editions
174
+    $articles_modif = $GLOBALS['meta']['articles_modif'] ?? '';
175
+    $GLOBALS['meta']['articles_modif'] = 'non';
176
+
177
+    foreach (['on', 'off'] as $mode) {
178
+        $nom_base = $type . $mode;
179
+        $dir = (defined('_DIR_LOGOS') ? _DIR_LOGOS : _DIR_IMG);
180
+
181
+        $files = glob($dir . $nom_base . '*');
182
+        // est-ce que c'est une nouvelle tentative de migration ?
183
+        // dans ce cas les logos sont deja dans IMG/logo/
184
+        if (!(is_countable($files) ? count($files) : 0)) {
185
+            $files = glob($dir_logos . $nom_base . '*');
186
+            if (is_countable($files) ? count($files) : 0) {
187
+                // mais il faut verifier si ils ont pas deja ete migres pour tout ou partie
188
+                $filescheck = [];
189
+                foreach ($files as $file) {
190
+                    $short = basename(dirname($file)) . DIRECTORY_SEPARATOR . basename($file);
191
+                    $filescheck[$short] = $file;
192
+                }
193
+                // trouver ceux deja migres
194
+                $deja = sql_allfetsel('fichier', 'spip_documents', sql_in('fichier', array_keys($filescheck)) . " AND mode LIKE 'logo%'");
195
+                if (is_countable($deja) ? count($deja) : 0) {
196
+                    $deja = array_column($deja, 'fichier');
197
+                    $restant = array_diff(array_keys($filescheck), $deja);
198
+                    $files = [];
199
+                    if (count($restant)) {
200
+                        foreach ($restant as $r) {
201
+                            $files[] = $filescheck[$r];
202
+                        }
203
+                    }
204
+                }
205
+                // et si il en reste on peut y aller...
206
+                // mais il faut modifier $dir qui sert de base dans la suite
207
+                if (is_countable($files) ? count($files) : 0) {
208
+                    $dir = $dir_logos;
209
+                }
210
+            }
211
+        }
212
+
213
+        $count = (is_countable($files) ? count($files) : 0);
214
+        spip_log("logo_migrer_en_base $objet $mode : " . $count . ' logos restant', 'maj' . _LOG_INFO_IMPORTANTE);
215
+
216
+        $deja = [];
217
+        foreach ($files as $file) {
218
+            $logo = substr($file, strlen($dir . $nom_base));
219
+            $logo = explode('.', $logo);
220
+            if (
221
+                is_numeric($logo[0])
222
+                and ($id_objet = intval($logo[0]) or in_array($objet, ['site', 'rubrique']))
223
+            ) {
224
+                if (!isset($deja[$id_objet])) {
225
+                    $logo = $chercher_logo($id_objet, $_id_objet, $mode);
226
+                    // if no logo in base
227
+                    if (!$logo or (is_countable($logo) ? count($logo) : 0) < 6) {
228
+                        foreach ($formats_logos as $format) {
229
+                            if (@file_exists($d = ($dir . ($nom = $nom_base . intval($id_objet) . '.' . $format)))) {
230
+                                if (isset($desc['field']['date_modif'])) {
231
+                                    $date_modif = sql_getfetsel('date_modif', $table, "$_id_objet=$id_objet");
232
+                                } else {
233
+                                    $date_modif = null;
234
+                                }
235
+                                // s'assurer que le logo a les bon droits au passage (evite un echec en cas de sanitization d'un svg)
236
+                                @chmod($d, _SPIP_CHMOD & 0666);
237
+                                // logo_modifier commence par supprimer le logo existant, donc on le deplace pour pas le perdre
238
+                                @rename($d, $dir_logos . $nom);
239
+                                // et on le declare comme nouveau logo
240
+                                logo_modifier($objet, $id_objet, $mode, $dir_logos . $nom);
241
+                                if ($date_modif) {
242
+                                    sql_updateq($table, ['date_modif' => $date_modif], "$_id_objet=$id_objet");
243
+                                }
244
+                                break;
245
+                            }
246
+                        }
247
+                    }
248
+                    $deja[$id_objet] = true;
249
+                }
250
+            }
251
+            // si le fichier est encore la on le move : rien a faire ici
252
+            // (sauf si c'est une re-migration : il est deja dans logo/ donc il bouge pas)
253
+            if ($dir !== $dir_logos and file_exists($file)) {
254
+                @rename($file, $dir_logos_erreurs . basename($file));
255
+            }
256
+
257
+            $count--;
258
+            if ($count % 250 === 0) {
259
+                spip_log("logo_migrer_en_base $objet $mode : " . $count . ' logos restant', 'maj' . _LOG_INFO_IMPORTANTE);
260
+            }
261
+
262
+            if ($time_limit and time() > $time_limit) {
263
+                effacer_meta('drapeau_edition');
264
+                return;
265
+            }
266
+        }
267
+    }
268
+
269
+    if ($liste_objets_versionnes) {
270
+        $GLOBALS['meta']['objets_versions'] = $liste_objets_versionnes;
271
+    }
272
+    $GLOBALS['meta']['articles_modif'] = $articles_modif;
273
+
274
+    effacer_meta('drapeau_edition');
275 275
 }
Please login to merge, or discard this patch.
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -40,7 +40,7 @@  discard block
 block discarded – undo
40 40
 	if ($logo) {
41 41
 		# TODO : deprecated, a supprimer -> anciens logos IMG/artonxx.png pas en base
42 42
 		if ((is_countable($logo) ? count($logo) : 0) < 6) {
43
-			spip_log('Supprimer ancien logo ' . json_encode($logo, JSON_THROW_ON_ERROR), 'logo');
43
+			spip_log('Supprimer ancien logo '.json_encode($logo, JSON_THROW_ON_ERROR), 'logo');
44 44
 			spip_unlink($logo[0]);
45 45
 		}
46 46
 		elseif (
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
 		return $erreur;
90 90
 	}
91 91
 	// chercher dans la base
92
-	$mode_document = 'logo' . $mode;
92
+	$mode_document = 'logo'.$mode;
93 93
 
94 94
 	include_spip('inc/documents');
95 95
 	$erreur = '';
@@ -106,7 +106,7 @@  discard block
 block discarded – undo
106 106
 		$tmp_name = false;
107 107
 		if (file_exists($source)) {
108 108
 			$tmp_name = $source;
109
-		} elseif (file_exists($f = determine_upload() . $source)) {
109
+		} elseif (file_exists($f = determine_upload().$source)) {
110 110
 			$tmp_name = $f;
111 111
 		}
112 112
 		if (!$tmp_name) {
@@ -142,7 +142,7 @@  discard block
 block discarded – undo
142 142
 
143 143
 	if (!is_numeric($id_document)) {
144 144
 		$erreur = ($id_document ?: 'Erreur inconnue');
145
-		spip_log("Erreur ajout logo : $erreur pour source=" . json_encode($source, JSON_THROW_ON_ERROR), 'logo');
145
+		spip_log("Erreur ajout logo : $erreur pour source=".json_encode($source, JSON_THROW_ON_ERROR), 'logo');
146 146
 		return $erreur;
147 147
 	}
148 148
 
@@ -175,23 +175,23 @@  discard block
 block discarded – undo
175 175
 	$GLOBALS['meta']['articles_modif'] = 'non';
176 176
 
177 177
 	foreach (['on', 'off'] as $mode) {
178
-		$nom_base = $type . $mode;
178
+		$nom_base = $type.$mode;
179 179
 		$dir = (defined('_DIR_LOGOS') ? _DIR_LOGOS : _DIR_IMG);
180 180
 
181
-		$files = glob($dir . $nom_base . '*');
181
+		$files = glob($dir.$nom_base.'*');
182 182
 		// est-ce que c'est une nouvelle tentative de migration ?
183 183
 		// dans ce cas les logos sont deja dans IMG/logo/
184 184
 		if (!(is_countable($files) ? count($files) : 0)) {
185
-			$files = glob($dir_logos . $nom_base . '*');
185
+			$files = glob($dir_logos.$nom_base.'*');
186 186
 			if (is_countable($files) ? count($files) : 0) {
187 187
 				// mais il faut verifier si ils ont pas deja ete migres pour tout ou partie
188 188
 				$filescheck = [];
189 189
 				foreach ($files as $file) {
190
-					$short = basename(dirname($file)) . DIRECTORY_SEPARATOR . basename($file);
190
+					$short = basename(dirname($file)).DIRECTORY_SEPARATOR.basename($file);
191 191
 					$filescheck[$short] = $file;
192 192
 				}
193 193
 				// trouver ceux deja migres
194
-				$deja = sql_allfetsel('fichier', 'spip_documents', sql_in('fichier', array_keys($filescheck)) . " AND mode LIKE 'logo%'");
194
+				$deja = sql_allfetsel('fichier', 'spip_documents', sql_in('fichier', array_keys($filescheck))." AND mode LIKE 'logo%'");
195 195
 				if (is_countable($deja) ? count($deja) : 0) {
196 196
 					$deja = array_column($deja, 'fichier');
197 197
 					$restant = array_diff(array_keys($filescheck), $deja);
@@ -211,11 +211,11 @@  discard block
 block discarded – undo
211 211
 		}
212 212
 
213 213
 		$count = (is_countable($files) ? count($files) : 0);
214
-		spip_log("logo_migrer_en_base $objet $mode : " . $count . ' logos restant', 'maj' . _LOG_INFO_IMPORTANTE);
214
+		spip_log("logo_migrer_en_base $objet $mode : ".$count.' logos restant', 'maj'._LOG_INFO_IMPORTANTE);
215 215
 
216 216
 		$deja = [];
217 217
 		foreach ($files as $file) {
218
-			$logo = substr($file, strlen($dir . $nom_base));
218
+			$logo = substr($file, strlen($dir.$nom_base));
219 219
 			$logo = explode('.', $logo);
220 220
 			if (
221 221
 				is_numeric($logo[0])
@@ -226,7 +226,7 @@  discard block
 block discarded – undo
226 226
 					// if no logo in base
227 227
 					if (!$logo or (is_countable($logo) ? count($logo) : 0) < 6) {
228 228
 						foreach ($formats_logos as $format) {
229
-							if (@file_exists($d = ($dir . ($nom = $nom_base . intval($id_objet) . '.' . $format)))) {
229
+							if (@file_exists($d = ($dir.($nom = $nom_base.intval($id_objet).'.'.$format)))) {
230 230
 								if (isset($desc['field']['date_modif'])) {
231 231
 									$date_modif = sql_getfetsel('date_modif', $table, "$_id_objet=$id_objet");
232 232
 								} else {
@@ -235,9 +235,9 @@  discard block
 block discarded – undo
235 235
 								// s'assurer que le logo a les bon droits au passage (evite un echec en cas de sanitization d'un svg)
236 236
 								@chmod($d, _SPIP_CHMOD & 0666);
237 237
 								// logo_modifier commence par supprimer le logo existant, donc on le deplace pour pas le perdre
238
-								@rename($d, $dir_logos . $nom);
238
+								@rename($d, $dir_logos.$nom);
239 239
 								// et on le declare comme nouveau logo
240
-								logo_modifier($objet, $id_objet, $mode, $dir_logos . $nom);
240
+								logo_modifier($objet, $id_objet, $mode, $dir_logos.$nom);
241 241
 								if ($date_modif) {
242 242
 									sql_updateq($table, ['date_modif' => $date_modif], "$_id_objet=$id_objet");
243 243
 								}
@@ -251,12 +251,12 @@  discard block
 block discarded – undo
251 251
 			// si le fichier est encore la on le move : rien a faire ici
252 252
 			// (sauf si c'est une re-migration : il est deja dans logo/ donc il bouge pas)
253 253
 			if ($dir !== $dir_logos and file_exists($file)) {
254
-				@rename($file, $dir_logos_erreurs . basename($file));
254
+				@rename($file, $dir_logos_erreurs.basename($file));
255 255
 			}
256 256
 
257 257
 			$count--;
258 258
 			if ($count % 250 === 0) {
259
-				spip_log("logo_migrer_en_base $objet $mode : " . $count . ' logos restant', 'maj' . _LOG_INFO_IMPORTANTE);
259
+				spip_log("logo_migrer_en_base $objet $mode : ".$count.' logos restant', 'maj'._LOG_INFO_IMPORTANTE);
260 260
 			}
261 261
 
262 262
 			if ($time_limit and time() > $time_limit) {
Please login to merge, or discard this patch.
ecrire/inc/log.php 2 patches
Indentation   +102 added lines, -102 removed lines patch added patch discarded remove patch
@@ -11,109 +11,109 @@
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 function inc_log_dist($message, $logname = null, $logdir = null, $logsuf = null) {
18
-	static $test_repertoire = [];
19
-	static $compteur = [];
20
-	static $debugverb = ''; // pour ne pas le recalculer au reappel
21
-
22
-	if (is_null($logname) or !is_string($logname)) {
23
-		$logname = defined('_FILE_LOG') ? _FILE_LOG : 'spip';
24
-	}
25
-	if (!isset($compteur[$logname])) {
26
-		$compteur[$logname] = 0;
27
-	}
28
-	if (
29
-		$logname != 'maj'
30
-		and defined('_MAX_LOG')
31
-		and (
32
-			$compteur[$logname]++ > _MAX_LOG
33
-			or !$GLOBALS['nombre_de_logs']
34
-			or !$GLOBALS['taille_des_logs']
35
-		)
36
-	) {
37
-		return;
38
-	}
39
-
40
-	// si spip_log() est appelé dans mes_options, toutes les constantes n'ont pas été définies
41
-	$logfile =
42
-		($logdir ?? (defined('_DIR_LOG') ? _DIR_LOG : _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES))
43
-		. $logname
44
-		. ($logsuf ?? (defined('_FILE_LOG_SUFFIX') ? _FILE_LOG_SUFFIX : '.log'));
45
-
46
-	if (!isset($test_repertoire[$d = dirname($logfile)])) {
47
-		$test_repertoire[$d] = false; // eviter une recursivite en cas d'erreur de sous_repertoire
48
-		$test_repertoire[$d] = (@is_dir($d) ? true : (function_exists('sous_repertoire') ? sous_repertoire(
49
-			$d,
50
-			'',
51
-			false,
52
-			true
53
-		) : false));
54
-	}
55
-
56
-	// Si le repertoire défini n'existe pas, poser dans tmp/
57
-	if (!$test_repertoire[$d]) {
58
-		$logfile = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES . $logname . '.log';
59
-	}
60
-
61
-	$rotate = 0;
62
-	$pid = '(pid ' . @getmypid() . ')';
63
-
64
-	// accepter spip_log( Array )
65
-	if (!is_string($message)) {
66
-		$message = var_export($message, true);
67
-	}
68
-
69
-	if (!$debugverb and defined('_LOG_FILELINE') and _LOG_FILELINE) {
70
-		$debug = debug_backtrace();
71
-		$l = $debug[1]['line'];
72
-		$fi = $debug[1]['file'];
73
-		if (strncmp($fi, _ROOT_RACINE, strlen(_ROOT_RACINE)) == 0) {
74
-			$fi = substr($fi, strlen(_ROOT_RACINE));
75
-		}
76
-		$fu = $debug[2]['function'] ?? '';
77
-		$debugverb = "$fi:L$l:$fu" . '():';
78
-	}
79
-
80
-	$m = date('Y-m-d H:i:s') . ' ' . ($GLOBALS['ip'] ?? '') . ' ' . $pid . ' '
81
-		//distinguer les logs prives et publics dans les grep
82
-		. $debugverb
83
-		. (test_espace_prive() ? ':Pri:' : ':Pub:')
84
-		. preg_replace("/\n*$/", "\n", $message);
85
-
86
-
87
-	if (
88
-		@is_readable($logfile)
89
-		and (!$s = @filesize($logfile) or $s > $GLOBALS['taille_des_logs'] * 1024)
90
-	) {
91
-		$rotate = $GLOBALS['nombre_de_logs'];
92
-		$m .= "[-- rotate --]\n";
93
-	}
94
-
95
-	$f = @fopen($logfile, 'ab');
96
-	if ($f) {
97
-		fputs($f, (defined('_LOG_BRUT') and _LOG_BRUT) ? $m : str_replace('<', '&lt;', $m));
98
-		fclose($f);
99
-	}
100
-
101
-	if (
102
-		$rotate-- > 0
103
-		and function_exists('spip_unlink')
104
-	) {
105
-		spip_unlink($logfile . '.' . $rotate);
106
-		while ($rotate--) {
107
-			@rename($logfile . ($rotate ? '.' . $rotate : ''), $logfile . '.' . ($rotate + 1));
108
-		}
109
-	}
110
-
111
-	// Dupliquer les erreurs specifiques dans le log general
112
-	if (
113
-		defined('_FILE_LOG')
114
-		and ($logname !== _FILE_LOG)
115
-	) {
116
-		inc_log_dist($logname == 'maj' ? 'cf maj.log' : $message);
117
-	}
118
-	$debugverb = '';
18
+    static $test_repertoire = [];
19
+    static $compteur = [];
20
+    static $debugverb = ''; // pour ne pas le recalculer au reappel
21
+
22
+    if (is_null($logname) or !is_string($logname)) {
23
+        $logname = defined('_FILE_LOG') ? _FILE_LOG : 'spip';
24
+    }
25
+    if (!isset($compteur[$logname])) {
26
+        $compteur[$logname] = 0;
27
+    }
28
+    if (
29
+        $logname != 'maj'
30
+        and defined('_MAX_LOG')
31
+        and (
32
+            $compteur[$logname]++ > _MAX_LOG
33
+            or !$GLOBALS['nombre_de_logs']
34
+            or !$GLOBALS['taille_des_logs']
35
+        )
36
+    ) {
37
+        return;
38
+    }
39
+
40
+    // si spip_log() est appelé dans mes_options, toutes les constantes n'ont pas été définies
41
+    $logfile =
42
+        ($logdir ?? (defined('_DIR_LOG') ? _DIR_LOG : _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES))
43
+        . $logname
44
+        . ($logsuf ?? (defined('_FILE_LOG_SUFFIX') ? _FILE_LOG_SUFFIX : '.log'));
45
+
46
+    if (!isset($test_repertoire[$d = dirname($logfile)])) {
47
+        $test_repertoire[$d] = false; // eviter une recursivite en cas d'erreur de sous_repertoire
48
+        $test_repertoire[$d] = (@is_dir($d) ? true : (function_exists('sous_repertoire') ? sous_repertoire(
49
+            $d,
50
+            '',
51
+            false,
52
+            true
53
+        ) : false));
54
+    }
55
+
56
+    // Si le repertoire défini n'existe pas, poser dans tmp/
57
+    if (!$test_repertoire[$d]) {
58
+        $logfile = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES . $logname . '.log';
59
+    }
60
+
61
+    $rotate = 0;
62
+    $pid = '(pid ' . @getmypid() . ')';
63
+
64
+    // accepter spip_log( Array )
65
+    if (!is_string($message)) {
66
+        $message = var_export($message, true);
67
+    }
68
+
69
+    if (!$debugverb and defined('_LOG_FILELINE') and _LOG_FILELINE) {
70
+        $debug = debug_backtrace();
71
+        $l = $debug[1]['line'];
72
+        $fi = $debug[1]['file'];
73
+        if (strncmp($fi, _ROOT_RACINE, strlen(_ROOT_RACINE)) == 0) {
74
+            $fi = substr($fi, strlen(_ROOT_RACINE));
75
+        }
76
+        $fu = $debug[2]['function'] ?? '';
77
+        $debugverb = "$fi:L$l:$fu" . '():';
78
+    }
79
+
80
+    $m = date('Y-m-d H:i:s') . ' ' . ($GLOBALS['ip'] ?? '') . ' ' . $pid . ' '
81
+        //distinguer les logs prives et publics dans les grep
82
+        . $debugverb
83
+        . (test_espace_prive() ? ':Pri:' : ':Pub:')
84
+        . preg_replace("/\n*$/", "\n", $message);
85
+
86
+
87
+    if (
88
+        @is_readable($logfile)
89
+        and (!$s = @filesize($logfile) or $s > $GLOBALS['taille_des_logs'] * 1024)
90
+    ) {
91
+        $rotate = $GLOBALS['nombre_de_logs'];
92
+        $m .= "[-- rotate --]\n";
93
+    }
94
+
95
+    $f = @fopen($logfile, 'ab');
96
+    if ($f) {
97
+        fputs($f, (defined('_LOG_BRUT') and _LOG_BRUT) ? $m : str_replace('<', '&lt;', $m));
98
+        fclose($f);
99
+    }
100
+
101
+    if (
102
+        $rotate-- > 0
103
+        and function_exists('spip_unlink')
104
+    ) {
105
+        spip_unlink($logfile . '.' . $rotate);
106
+        while ($rotate--) {
107
+            @rename($logfile . ($rotate ? '.' . $rotate : ''), $logfile . '.' . ($rotate + 1));
108
+        }
109
+    }
110
+
111
+    // Dupliquer les erreurs specifiques dans le log general
112
+    if (
113
+        defined('_FILE_LOG')
114
+        and ($logname !== _FILE_LOG)
115
+    ) {
116
+        inc_log_dist($logname == 'maj' ? 'cf maj.log' : $message);
117
+    }
118
+    $debugverb = '';
119 119
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
 
40 40
 	// si spip_log() est appelé dans mes_options, toutes les constantes n'ont pas été définies
41 41
 	$logfile =
42
-		($logdir ?? (defined('_DIR_LOG') ? _DIR_LOG : _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES))
42
+		($logdir ?? (defined('_DIR_LOG') ? _DIR_LOG : _DIR_RACINE._NOM_TEMPORAIRES_INACCESSIBLES))
43 43
 		. $logname
44 44
 		. ($logsuf ?? (defined('_FILE_LOG_SUFFIX') ? _FILE_LOG_SUFFIX : '.log'));
45 45
 
@@ -55,11 +55,11 @@  discard block
 block discarded – undo
55 55
 
56 56
 	// Si le repertoire défini n'existe pas, poser dans tmp/
57 57
 	if (!$test_repertoire[$d]) {
58
-		$logfile = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES . $logname . '.log';
58
+		$logfile = _DIR_RACINE._NOM_TEMPORAIRES_INACCESSIBLES.$logname.'.log';
59 59
 	}
60 60
 
61 61
 	$rotate = 0;
62
-	$pid = '(pid ' . @getmypid() . ')';
62
+	$pid = '(pid '.@getmypid().')';
63 63
 
64 64
 	// accepter spip_log( Array )
65 65
 	if (!is_string($message)) {
@@ -74,10 +74,10 @@  discard block
 block discarded – undo
74 74
 			$fi = substr($fi, strlen(_ROOT_RACINE));
75 75
 		}
76 76
 		$fu = $debug[2]['function'] ?? '';
77
-		$debugverb = "$fi:L$l:$fu" . '():';
77
+		$debugverb = "$fi:L$l:$fu".'():';
78 78
 	}
79 79
 
80
-	$m = date('Y-m-d H:i:s') . ' ' . ($GLOBALS['ip'] ?? '') . ' ' . $pid . ' '
80
+	$m = date('Y-m-d H:i:s').' '.($GLOBALS['ip'] ?? '').' '.$pid.' '
81 81
 		//distinguer les logs prives et publics dans les grep
82 82
 		. $debugverb
83 83
 		. (test_espace_prive() ? ':Pri:' : ':Pub:')
@@ -102,9 +102,9 @@  discard block
 block discarded – undo
102 102
 		$rotate-- > 0
103 103
 		and function_exists('spip_unlink')
104 104
 	) {
105
-		spip_unlink($logfile . '.' . $rotate);
105
+		spip_unlink($logfile.'.'.$rotate);
106 106
 		while ($rotate--) {
107
-			@rename($logfile . ($rotate ? '.' . $rotate : ''), $logfile . '.' . ($rotate + 1));
107
+			@rename($logfile.($rotate ? '.'.$rotate : ''), $logfile.'.'.($rotate + 1));
108 108
 		}
109 109
 	}
110 110
 
Please login to merge, or discard this patch.
ecrire/install/etape_3.php 2 patches
Indentation   +346 added lines, -346 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 include_spip('inc/headers');
@@ -19,199 +19,199 @@  discard block
 block discarded – undo
19 19
 
20 20
 function install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db) {
21 21
 
22
-	// Prefix des tables :
23
-	// S'il n'est pas defini par mes_options/inc/mutualiser, on va le creer
24
-	// a partir de ce qui est envoye a l'installation
25
-	if (!defined('_INSTALL_TABLE_PREFIX')) {
26
-		$table_prefix = ($GLOBALS['table_prefix'] != 'spip')
27
-			? $GLOBALS['table_prefix']
28
-			: preparer_prefixe_tables(_request('tprefix'));
29
-		// S'il est vide on remet spip
30
-		if (!$table_prefix) {
31
-			$table_prefix = 'spip';
32
-		}
33
-	} else {
34
-		$table_prefix = _INSTALL_TABLE_PREFIX;
35
-	}
36
-
37
-	if (preg_match(',(.*):(.*),', $adresse_db, $r)) {
38
-		[, $adresse_db, $port] = $r;
39
-	} else {
40
-		$port = '';
41
-	}
42
-
43
-	$GLOBALS['connexions'][$server_db]
44
-		= spip_connect_db($adresse_db, $port, $login_db, $pass_db, '', $server_db);
45
-
46
-	$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
47
-		= $GLOBALS['spip_' . $server_db . '_functions_' . $GLOBALS['spip_sql_version']];
48
-
49
-	$fquery = sql_serveur('query', $server_db);
50
-	if ($choix_db == 'new_spip') {
51
-		$re = ',^[a-z_][a-z_0-9-]*$,i';
52
-		if (preg_match($re, $sel_db)) {
53
-			$ok = sql_create_base($sel_db, $server_db);
54
-			if (!$ok) {
55
-				$re = "Impossible de creer la base $re";
56
-				spip_log($re);
57
-				return '<p>' . _T('avis_connexion_erreur_creer_base') . "</p><!--\n$re\n-->";
58
-			}
59
-		} else {
60
-			$re = "Le nom de la base doit correspondre a $re";
61
-			spip_log($re);
62
-
63
-			return '<p>' . _T('avis_connexion_erreur_nom_base') . "</p><!--\n$re\n-->";
64
-		}
65
-	}
66
-
67
-	// on rejoue la connexion apres avoir teste si il faut lui indiquer
68
-	// un sql_mode
69
-	install_mode_appel($server_db, false);
70
-	$GLOBALS['connexions'][$server_db]
71
-		= spip_connect_db($adresse_db, $port, $login_db, $pass_db, $sel_db, $server_db);
72
-
73
-	$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
74
-		= $GLOBALS['spip_' . $server_db . '_functions_' . $GLOBALS['spip_sql_version']];
75
-
76
-	// Completer le tableau decrivant la connexion
77
-
78
-	$GLOBALS['connexions'][$server_db]['prefixe'] = $table_prefix;
79
-	$GLOBALS['connexions'][$server_db]['db'] = $sel_db;
80
-
81
-	$old = sql_showbase($table_prefix . '_meta', $server_db);
82
-	if ($old) {
83
-		$old = sql_fetch($old, $server_db);
84
-	}
85
-	if (!$old) {
86
-		// Si possible, demander au serveur d'envoyer les textes
87
-		// dans le codage std de SPIP,
88
-		$charset = sql_get_charset(_DEFAULT_CHARSET, $server_db);
89
-
90
-		if ($charset) {
91
-			sql_set_charset($charset['charset'], $server_db);
92
-			$GLOBALS['meta']['charset_sql_base'] =
93
-				$charset['charset'];
94
-			$GLOBALS['meta']['charset_collation_sql_base'] =
95
-				$charset['collation'];
96
-			$GLOBALS['meta']['charset_sql_connexion'] =
97
-				$charset['charset'];
98
-			$charsetbase = $charset['charset'];
99
-		} else {
100
-			spip_log(_DEFAULT_CHARSET . ' inconnu du serveur SQL');
101
-			$charsetbase = 'standard';
102
-		}
103
-		spip_log("Creation des tables. Codage $charsetbase");
104
-		creer_base($server_db); // AT LAST
105
-		// memoriser avec quel charset on l'a creee
106
-
107
-		if ($charset) {
108
-			$t = [
109
-				'nom' => 'charset_sql_base',
110
-				'valeur' => $charset['charset'],
111
-				'impt' => 'non'
112
-			];
113
-			@sql_insertq('spip_meta', $t, [], $server_db);
114
-			$t['nom'] = 'charset_collation_sql_base';
115
-			$t['valeur'] = $charset['collation'];
116
-			@sql_insertq('spip_meta', $t, [], $server_db);
117
-			$t['nom'] = 'charset_sql_connexion';
118
-			$t['valeur'] = $charset['charset'];
119
-			@sql_insertq('spip_meta', $t, [], $server_db);
120
-		}
121
-		$t = [
122
-			'nom' => 'version_installee',
123
-			'valeur' => $GLOBALS['spip_version_base'],
124
-			'impt' => 'non'
125
-		];
126
-		@sql_insertq('spip_meta', $t, [], $server_db);
127
-		$t['nom'] = 'nouvelle_install';
128
-		$t['valeur'] = 1;
129
-		@sql_insertq('spip_meta', $t, [], $server_db);
130
-		// positionner la langue par defaut du site si un cookie de lang a ete mis
131
-		if (isset($_COOKIE['spip_lang_ecrire'])) {
132
-			@sql_insertq(
133
-				'spip_meta',
134
-				['nom' => 'langue_site', 'valeur' => $_COOKIE['spip_lang_ecrire']],
135
-				[],
136
-				$server_db
137
-			);
138
-		}
139
-	} else {
140
-		// pour recreer les tables disparues au besoin
141
-		spip_log('Table des Meta deja la. Verification des autres.');
142
-		creer_base($server_db);
143
-		$fupdateq = sql_serveur('updateq', $server_db);
144
-
145
-		$r = $fquery("SELECT valeur FROM spip_meta WHERE nom='version_installee'", $server_db);
146
-
147
-		if ($r) {
148
-			$r = sql_fetch($r, $server_db);
149
-		}
150
-		$version_installee = !$r ? 0 : (double)$r['valeur'];
151
-		if (!$version_installee or ($GLOBALS['spip_version_base'] < $version_installee)) {
152
-			$fupdateq(
153
-				'spip_meta',
154
-				['valeur' => $GLOBALS['spip_version_base'], 'impt' => 'non'],
155
-				"nom='version_installee'",
156
-				'',
157
-				$server_db
158
-			);
159
-			spip_log('nouvelle version installee: ' . $GLOBALS['spip_version_base']);
160
-		}
161
-		// eliminer la derniere operation d'admin mal terminee
162
-		// notamment la mise a jour
163
-		@$fquery("DELETE FROM spip_meta WHERE nom='import_all' OR  nom='admin'", $server_db);
164
-	}
165
-
166
-	// recuperer le charset de la connexion dans les meta
167
-	$charset = '';
168
-	$r = $fquery("SELECT valeur FROM spip_meta WHERE nom='charset_sql_connexion'", $server_db);
169
-	if ($r) {
170
-		$r = sql_fetch($r, $server_db);
171
-	}
172
-	if ($r) {
173
-		$charset = $r['valeur'];
174
-	}
175
-
176
-	$ligne_rappel = install_mode_appel($server_db);
177
-
178
-	$result_ok = @$fquery('SELECT COUNT(*) FROM spip_meta', $server_db);
179
-	if (!$result_ok) {
180
-		return "<!--\nvielle = $old rappel= $ligne_rappel\n-->";
181
-	}
182
-
183
-	if ($chmod_db) {
184
-		install_fichier_connexion(
185
-			_FILE_CHMOD_TMP,
186
-			"if (!defined('_SPIP_CHMOD')) define('_SPIP_CHMOD', " . sprintf('0%3o', $chmod_db) . ");\n"
187
-		);
188
-	}
189
-
190
-	// si ce fichier existe a cette etape c'est qu'il provient
191
-	// d'une installation qui ne l'a pas cree correctement.
192
-	// Le supprimer pour que _FILE_CONNECT_TMP prime.
193
-
194
-	if (_FILE_CONNECT and file_exists(_FILE_CONNECT)) {
195
-		spip_unlink(_FILE_CONNECT);
196
-	}
197
-
198
-	install_fichier_connexion(
199
-		_FILE_CONNECT_TMP,
200
-		$ligne_rappel
201
-		. install_connexion(
202
-			$adresse_db,
203
-			$port,
204
-			$login_db,
205
-			$pass_db,
206
-			$sel_db,
207
-			$server_db,
208
-			$table_prefix,
209
-			'',
210
-			$charset
211
-		)
212
-	);
213
-
214
-	return '';
22
+    // Prefix des tables :
23
+    // S'il n'est pas defini par mes_options/inc/mutualiser, on va le creer
24
+    // a partir de ce qui est envoye a l'installation
25
+    if (!defined('_INSTALL_TABLE_PREFIX')) {
26
+        $table_prefix = ($GLOBALS['table_prefix'] != 'spip')
27
+            ? $GLOBALS['table_prefix']
28
+            : preparer_prefixe_tables(_request('tprefix'));
29
+        // S'il est vide on remet spip
30
+        if (!$table_prefix) {
31
+            $table_prefix = 'spip';
32
+        }
33
+    } else {
34
+        $table_prefix = _INSTALL_TABLE_PREFIX;
35
+    }
36
+
37
+    if (preg_match(',(.*):(.*),', $adresse_db, $r)) {
38
+        [, $adresse_db, $port] = $r;
39
+    } else {
40
+        $port = '';
41
+    }
42
+
43
+    $GLOBALS['connexions'][$server_db]
44
+        = spip_connect_db($adresse_db, $port, $login_db, $pass_db, '', $server_db);
45
+
46
+    $GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
47
+        = $GLOBALS['spip_' . $server_db . '_functions_' . $GLOBALS['spip_sql_version']];
48
+
49
+    $fquery = sql_serveur('query', $server_db);
50
+    if ($choix_db == 'new_spip') {
51
+        $re = ',^[a-z_][a-z_0-9-]*$,i';
52
+        if (preg_match($re, $sel_db)) {
53
+            $ok = sql_create_base($sel_db, $server_db);
54
+            if (!$ok) {
55
+                $re = "Impossible de creer la base $re";
56
+                spip_log($re);
57
+                return '<p>' . _T('avis_connexion_erreur_creer_base') . "</p><!--\n$re\n-->";
58
+            }
59
+        } else {
60
+            $re = "Le nom de la base doit correspondre a $re";
61
+            spip_log($re);
62
+
63
+            return '<p>' . _T('avis_connexion_erreur_nom_base') . "</p><!--\n$re\n-->";
64
+        }
65
+    }
66
+
67
+    // on rejoue la connexion apres avoir teste si il faut lui indiquer
68
+    // un sql_mode
69
+    install_mode_appel($server_db, false);
70
+    $GLOBALS['connexions'][$server_db]
71
+        = spip_connect_db($adresse_db, $port, $login_db, $pass_db, $sel_db, $server_db);
72
+
73
+    $GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
74
+        = $GLOBALS['spip_' . $server_db . '_functions_' . $GLOBALS['spip_sql_version']];
75
+
76
+    // Completer le tableau decrivant la connexion
77
+
78
+    $GLOBALS['connexions'][$server_db]['prefixe'] = $table_prefix;
79
+    $GLOBALS['connexions'][$server_db]['db'] = $sel_db;
80
+
81
+    $old = sql_showbase($table_prefix . '_meta', $server_db);
82
+    if ($old) {
83
+        $old = sql_fetch($old, $server_db);
84
+    }
85
+    if (!$old) {
86
+        // Si possible, demander au serveur d'envoyer les textes
87
+        // dans le codage std de SPIP,
88
+        $charset = sql_get_charset(_DEFAULT_CHARSET, $server_db);
89
+
90
+        if ($charset) {
91
+            sql_set_charset($charset['charset'], $server_db);
92
+            $GLOBALS['meta']['charset_sql_base'] =
93
+                $charset['charset'];
94
+            $GLOBALS['meta']['charset_collation_sql_base'] =
95
+                $charset['collation'];
96
+            $GLOBALS['meta']['charset_sql_connexion'] =
97
+                $charset['charset'];
98
+            $charsetbase = $charset['charset'];
99
+        } else {
100
+            spip_log(_DEFAULT_CHARSET . ' inconnu du serveur SQL');
101
+            $charsetbase = 'standard';
102
+        }
103
+        spip_log("Creation des tables. Codage $charsetbase");
104
+        creer_base($server_db); // AT LAST
105
+        // memoriser avec quel charset on l'a creee
106
+
107
+        if ($charset) {
108
+            $t = [
109
+                'nom' => 'charset_sql_base',
110
+                'valeur' => $charset['charset'],
111
+                'impt' => 'non'
112
+            ];
113
+            @sql_insertq('spip_meta', $t, [], $server_db);
114
+            $t['nom'] = 'charset_collation_sql_base';
115
+            $t['valeur'] = $charset['collation'];
116
+            @sql_insertq('spip_meta', $t, [], $server_db);
117
+            $t['nom'] = 'charset_sql_connexion';
118
+            $t['valeur'] = $charset['charset'];
119
+            @sql_insertq('spip_meta', $t, [], $server_db);
120
+        }
121
+        $t = [
122
+            'nom' => 'version_installee',
123
+            'valeur' => $GLOBALS['spip_version_base'],
124
+            'impt' => 'non'
125
+        ];
126
+        @sql_insertq('spip_meta', $t, [], $server_db);
127
+        $t['nom'] = 'nouvelle_install';
128
+        $t['valeur'] = 1;
129
+        @sql_insertq('spip_meta', $t, [], $server_db);
130
+        // positionner la langue par defaut du site si un cookie de lang a ete mis
131
+        if (isset($_COOKIE['spip_lang_ecrire'])) {
132
+            @sql_insertq(
133
+                'spip_meta',
134
+                ['nom' => 'langue_site', 'valeur' => $_COOKIE['spip_lang_ecrire']],
135
+                [],
136
+                $server_db
137
+            );
138
+        }
139
+    } else {
140
+        // pour recreer les tables disparues au besoin
141
+        spip_log('Table des Meta deja la. Verification des autres.');
142
+        creer_base($server_db);
143
+        $fupdateq = sql_serveur('updateq', $server_db);
144
+
145
+        $r = $fquery("SELECT valeur FROM spip_meta WHERE nom='version_installee'", $server_db);
146
+
147
+        if ($r) {
148
+            $r = sql_fetch($r, $server_db);
149
+        }
150
+        $version_installee = !$r ? 0 : (double)$r['valeur'];
151
+        if (!$version_installee or ($GLOBALS['spip_version_base'] < $version_installee)) {
152
+            $fupdateq(
153
+                'spip_meta',
154
+                ['valeur' => $GLOBALS['spip_version_base'], 'impt' => 'non'],
155
+                "nom='version_installee'",
156
+                '',
157
+                $server_db
158
+            );
159
+            spip_log('nouvelle version installee: ' . $GLOBALS['spip_version_base']);
160
+        }
161
+        // eliminer la derniere operation d'admin mal terminee
162
+        // notamment la mise a jour
163
+        @$fquery("DELETE FROM spip_meta WHERE nom='import_all' OR  nom='admin'", $server_db);
164
+    }
165
+
166
+    // recuperer le charset de la connexion dans les meta
167
+    $charset = '';
168
+    $r = $fquery("SELECT valeur FROM spip_meta WHERE nom='charset_sql_connexion'", $server_db);
169
+    if ($r) {
170
+        $r = sql_fetch($r, $server_db);
171
+    }
172
+    if ($r) {
173
+        $charset = $r['valeur'];
174
+    }
175
+
176
+    $ligne_rappel = install_mode_appel($server_db);
177
+
178
+    $result_ok = @$fquery('SELECT COUNT(*) FROM spip_meta', $server_db);
179
+    if (!$result_ok) {
180
+        return "<!--\nvielle = $old rappel= $ligne_rappel\n-->";
181
+    }
182
+
183
+    if ($chmod_db) {
184
+        install_fichier_connexion(
185
+            _FILE_CHMOD_TMP,
186
+            "if (!defined('_SPIP_CHMOD')) define('_SPIP_CHMOD', " . sprintf('0%3o', $chmod_db) . ");\n"
187
+        );
188
+    }
189
+
190
+    // si ce fichier existe a cette etape c'est qu'il provient
191
+    // d'une installation qui ne l'a pas cree correctement.
192
+    // Le supprimer pour que _FILE_CONNECT_TMP prime.
193
+
194
+    if (_FILE_CONNECT and file_exists(_FILE_CONNECT)) {
195
+        spip_unlink(_FILE_CONNECT);
196
+    }
197
+
198
+    install_fichier_connexion(
199
+        _FILE_CONNECT_TMP,
200
+        $ligne_rappel
201
+        . install_connexion(
202
+            $adresse_db,
203
+            $port,
204
+            $login_db,
205
+            $pass_db,
206
+            $sel_db,
207
+            $server_db,
208
+            $table_prefix,
209
+            '',
210
+            $charset
211
+        )
212
+    );
213
+
214
+    return '';
215 215
 }
216 216
 
217 217
 /**
@@ -226,166 +226,166 @@  discard block
 block discarded – undo
226 226
  * @return string Le préfixe corrigé
227 227
  */
228 228
 function preparer_prefixe_tables($prefixe) {
229
-	return trim(preg_replace(',^[0-9]+,', '', preg_replace(',[^a-z0-9],', '', strtolower($prefixe))));
229
+    return trim(preg_replace(',^[0-9]+,', '', preg_replace(',[^a-z0-9],', '', strtolower($prefixe))));
230 230
 }
231 231
 
232 232
 function install_propose_ldap() {
233
-	return generer_form_ecrire('install', (
234
-	fieldset(
235
-		_T('info_authentification_externe'),
236
-		[
237
-			'etape' => [
238
-				'label' => _T('texte_annuaire_ldap_1'),
239
-				'valeur' => 'ldap1',
240
-				'hidden' => true
241
-			]
242
-		],
243
-		bouton_suivant(_T('bouton_acces_ldap'))
244
-	)));
233
+    return generer_form_ecrire('install', (
234
+    fieldset(
235
+        _T('info_authentification_externe'),
236
+        [
237
+            'etape' => [
238
+                'label' => _T('texte_annuaire_ldap_1'),
239
+                'valeur' => 'ldap1',
240
+                'hidden' => true
241
+            ]
242
+        ],
243
+        bouton_suivant(_T('bouton_acces_ldap'))
244
+    )));
245 245
 }
246 246
 
247 247
 
248 248
 function install_premier_auteur($email, $login, $nom, $pass, $hidden, $auteur_obligatoire) {
249
-	return info_progression_etape(3, 'etape_', 'install/') .
250
-	info_etape(
251
-		_T('info_informations_personnelles'),
252
-		'<b>' . _T('texte_informations_personnelles_1') . '</b>' .
253
-		aider('install5', true) .
254
-		'<p>' .
255
-		($auteur_obligatoire ?
256
-			''
257
-			:
258
-			_T('texte_informations_personnelles_2') . ' ' . _T('info_laisser_champs_vides')
259
-		)
260
-	)
261
-	. generer_form_ecrire('install', (
262
-		"\n<input type='hidden' name='etape' value='3b' />"
263
-		. $hidden
264
-		. fieldset(
265
-			_T('info_identification_publique'),
266
-			[
267
-				'nom' => [
268
-					'label' => '<b>' . _T('entree_signature') . "</b><br />\n" . _T('entree_nom_pseudo_1') . "\n",
269
-					'valeur' => $nom,
270
-					'required' => $auteur_obligatoire,
271
-				],
272
-				'email' => [
273
-					'label' => '<b>' . _T('entree_adresse_email') . "</b>\n",
274
-					'valeur' => $email,
275
-				]
276
-			]
277
-		)
278
-
279
-		. fieldset(
280
-			_T('entree_identifiants_connexion'),
281
-			[
282
-				'login' => [
283
-					'label' => '<b>' . _T('entree_login') . "</b><br />\n" . _T(
284
-						'info_login_trop_court_car_pluriel',
285
-						['nb' => _LOGIN_TROP_COURT]
286
-					) . "\n",
287
-					'valeur' => $login,
288
-					'required' => $auteur_obligatoire,
289
-				],
290
-				'pass' => [
291
-					'label' => '<b>' . _T('entree_mot_passe') . "</b><br />\n" . _T(
292
-						'info_passe_trop_court_car_pluriel',
293
-						['nb' => _PASS_LONGUEUR_MINI]
294
-					) . "\n",
295
-					'valeur' => $pass,
296
-					'required' => $auteur_obligatoire,
297
-				],
298
-				'pass_verif' => [
299
-					'label' => '<b>' . _T('info_confirmer_passe') . "</b><br />\n",
300
-					'valeur' => $pass,
301
-					'required' => $auteur_obligatoire,
302
-				]
303
-			]
304
-		)
305
-		. bouton_suivant()));
249
+    return info_progression_etape(3, 'etape_', 'install/') .
250
+    info_etape(
251
+        _T('info_informations_personnelles'),
252
+        '<b>' . _T('texte_informations_personnelles_1') . '</b>' .
253
+        aider('install5', true) .
254
+        '<p>' .
255
+        ($auteur_obligatoire ?
256
+            ''
257
+            :
258
+            _T('texte_informations_personnelles_2') . ' ' . _T('info_laisser_champs_vides')
259
+        )
260
+    )
261
+    . generer_form_ecrire('install', (
262
+        "\n<input type='hidden' name='etape' value='3b' />"
263
+        . $hidden
264
+        . fieldset(
265
+            _T('info_identification_publique'),
266
+            [
267
+                'nom' => [
268
+                    'label' => '<b>' . _T('entree_signature') . "</b><br />\n" . _T('entree_nom_pseudo_1') . "\n",
269
+                    'valeur' => $nom,
270
+                    'required' => $auteur_obligatoire,
271
+                ],
272
+                'email' => [
273
+                    'label' => '<b>' . _T('entree_adresse_email') . "</b>\n",
274
+                    'valeur' => $email,
275
+                ]
276
+            ]
277
+        )
278
+
279
+        . fieldset(
280
+            _T('entree_identifiants_connexion'),
281
+            [
282
+                'login' => [
283
+                    'label' => '<b>' . _T('entree_login') . "</b><br />\n" . _T(
284
+                        'info_login_trop_court_car_pluriel',
285
+                        ['nb' => _LOGIN_TROP_COURT]
286
+                    ) . "\n",
287
+                    'valeur' => $login,
288
+                    'required' => $auteur_obligatoire,
289
+                ],
290
+                'pass' => [
291
+                    'label' => '<b>' . _T('entree_mot_passe') . "</b><br />\n" . _T(
292
+                        'info_passe_trop_court_car_pluriel',
293
+                        ['nb' => _PASS_LONGUEUR_MINI]
294
+                    ) . "\n",
295
+                    'valeur' => $pass,
296
+                    'required' => $auteur_obligatoire,
297
+                ],
298
+                'pass_verif' => [
299
+                    'label' => '<b>' . _T('info_confirmer_passe') . "</b><br />\n",
300
+                    'valeur' => $pass,
301
+                    'required' => $auteur_obligatoire,
302
+                ]
303
+            ]
304
+        )
305
+        . bouton_suivant()));
306 306
 }
307 307
 
308 308
 function install_etape_3_dist() {
309
-	$ldap_present = _request('ldap_present');
310
-
311
-	if (!$ldap_present) {
312
-		$adresse_db = defined('_INSTALL_HOST_DB')
313
-			? _INSTALL_HOST_DB
314
-			: _request('adresse_db');
315
-
316
-		$login_db = defined('_INSTALL_USER_DB')
317
-			? _INSTALL_USER_DB
318
-			: _request('login_db');
319
-
320
-		$pass_db = defined('_INSTALL_PASS_DB')
321
-			? _INSTALL_PASS_DB
322
-			: _request('pass_db');
323
-
324
-		$server_db = defined('_INSTALL_SERVER_DB')
325
-			? _INSTALL_SERVER_DB
326
-			: _request('server_db');
327
-
328
-		$chmod_db = defined('_SPIP_CHMOD')
329
-			? _SPIP_CHMOD
330
-			: _request('chmod');
331
-
332
-		$choix_db = defined('_INSTALL_NAME_DB')
333
-			? _INSTALL_NAME_DB
334
-			: _request('choix_db');
335
-
336
-		$sel_db = ($choix_db == 'new_spip')
337
-			? _request('table_new') : $choix_db;
338
-
339
-		$res = install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db);
340
-
341
-		if ($res) {
342
-			$res = info_progression_etape(2, 'etape_', 'install/', true)
343
-				. "<div class='error'><h3>" . _T('avis_operation_echec') . '</h3>'
344
-				. $res
345
-				. '<p>' . _T('texte_operation_echec') . '</p>'
346
-				. '</div>';
347
-		}
348
-	} else {
349
-		$res = '';
350
-		[$adresse_db, $login_db, $pass_db, $sel_db, $server_db] = analyse_fichier_connection(_FILE_CONNECT_TMP);
351
-		$GLOBALS['connexions'][$server_db] = spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db);
352
-	}
353
-
354
-	if (!$res) {
355
-		if (file_exists(_FILE_CONNECT_TMP)) {
356
-			include(_FILE_CONNECT_TMP);
357
-		} else {
358
-			redirige_url_ecrire('install');
359
-		}
360
-
361
-		if (file_exists(_FILE_CHMOD_TMP)) {
362
-			include(_FILE_CHMOD_TMP);
363
-		} else {
364
-			redirige_url_ecrire('install');
365
-		}
366
-
367
-		$hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db)
368
-			. (defined('_INSTALL_NAME_DB') ? ''
369
-				: "\n<input type='hidden' name='sel_db' value=\"" . spip_htmlspecialchars($sel_db) . '" />');
370
-
371
-		$auteur_obligatoire = ($ldap_present ? 0 : !sql_countsel('spip_auteurs', '', '', '', $server_db));
372
-
373
-		$res = "<div class='success'><b>"
374
-			. _T('info_base_installee')
375
-			. '</b></div>'
376
-			. install_premier_auteur(
377
-				_request('email'),
378
-				_request('login'),
379
-				_request('nom'),
380
-				_request('pass'),
381
-				$hidden,
382
-				$auteur_obligatoire
383
-			)
384
-			. (($ldap_present or !function_exists('ldap_connect'))
385
-				? '' : install_propose_ldap());
386
-	}
387
-
388
-	echo install_debut_html();
389
-	echo $res;
390
-	echo install_fin_html();
309
+    $ldap_present = _request('ldap_present');
310
+
311
+    if (!$ldap_present) {
312
+        $adresse_db = defined('_INSTALL_HOST_DB')
313
+            ? _INSTALL_HOST_DB
314
+            : _request('adresse_db');
315
+
316
+        $login_db = defined('_INSTALL_USER_DB')
317
+            ? _INSTALL_USER_DB
318
+            : _request('login_db');
319
+
320
+        $pass_db = defined('_INSTALL_PASS_DB')
321
+            ? _INSTALL_PASS_DB
322
+            : _request('pass_db');
323
+
324
+        $server_db = defined('_INSTALL_SERVER_DB')
325
+            ? _INSTALL_SERVER_DB
326
+            : _request('server_db');
327
+
328
+        $chmod_db = defined('_SPIP_CHMOD')
329
+            ? _SPIP_CHMOD
330
+            : _request('chmod');
331
+
332
+        $choix_db = defined('_INSTALL_NAME_DB')
333
+            ? _INSTALL_NAME_DB
334
+            : _request('choix_db');
335
+
336
+        $sel_db = ($choix_db == 'new_spip')
337
+            ? _request('table_new') : $choix_db;
338
+
339
+        $res = install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db);
340
+
341
+        if ($res) {
342
+            $res = info_progression_etape(2, 'etape_', 'install/', true)
343
+                . "<div class='error'><h3>" . _T('avis_operation_echec') . '</h3>'
344
+                . $res
345
+                . '<p>' . _T('texte_operation_echec') . '</p>'
346
+                . '</div>';
347
+        }
348
+    } else {
349
+        $res = '';
350
+        [$adresse_db, $login_db, $pass_db, $sel_db, $server_db] = analyse_fichier_connection(_FILE_CONNECT_TMP);
351
+        $GLOBALS['connexions'][$server_db] = spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db);
352
+    }
353
+
354
+    if (!$res) {
355
+        if (file_exists(_FILE_CONNECT_TMP)) {
356
+            include(_FILE_CONNECT_TMP);
357
+        } else {
358
+            redirige_url_ecrire('install');
359
+        }
360
+
361
+        if (file_exists(_FILE_CHMOD_TMP)) {
362
+            include(_FILE_CHMOD_TMP);
363
+        } else {
364
+            redirige_url_ecrire('install');
365
+        }
366
+
367
+        $hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db)
368
+            . (defined('_INSTALL_NAME_DB') ? ''
369
+                : "\n<input type='hidden' name='sel_db' value=\"" . spip_htmlspecialchars($sel_db) . '" />');
370
+
371
+        $auteur_obligatoire = ($ldap_present ? 0 : !sql_countsel('spip_auteurs', '', '', '', $server_db));
372
+
373
+        $res = "<div class='success'><b>"
374
+            . _T('info_base_installee')
375
+            . '</b></div>'
376
+            . install_premier_auteur(
377
+                _request('email'),
378
+                _request('login'),
379
+                _request('nom'),
380
+                _request('pass'),
381
+                $hidden,
382
+                $auteur_obligatoire
383
+            )
384
+            . (($ldap_present or !function_exists('ldap_connect'))
385
+                ? '' : install_propose_ldap());
386
+    }
387
+
388
+    echo install_debut_html();
389
+    echo $res;
390
+    echo install_fin_html();
391 391
 }
Please login to merge, or discard this patch.
Spacing   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
 		= spip_connect_db($adresse_db, $port, $login_db, $pass_db, '', $server_db);
45 45
 
46 46
 	$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
47
-		= $GLOBALS['spip_' . $server_db . '_functions_' . $GLOBALS['spip_sql_version']];
47
+		= $GLOBALS['spip_'.$server_db.'_functions_'.$GLOBALS['spip_sql_version']];
48 48
 
49 49
 	$fquery = sql_serveur('query', $server_db);
50 50
 	if ($choix_db == 'new_spip') {
@@ -54,13 +54,13 @@  discard block
 block discarded – undo
54 54
 			if (!$ok) {
55 55
 				$re = "Impossible de creer la base $re";
56 56
 				spip_log($re);
57
-				return '<p>' . _T('avis_connexion_erreur_creer_base') . "</p><!--\n$re\n-->";
57
+				return '<p>'._T('avis_connexion_erreur_creer_base')."</p><!--\n$re\n-->";
58 58
 			}
59 59
 		} else {
60 60
 			$re = "Le nom de la base doit correspondre a $re";
61 61
 			spip_log($re);
62 62
 
63
-			return '<p>' . _T('avis_connexion_erreur_nom_base') . "</p><!--\n$re\n-->";
63
+			return '<p>'._T('avis_connexion_erreur_nom_base')."</p><!--\n$re\n-->";
64 64
 		}
65 65
 	}
66 66
 
@@ -71,14 +71,14 @@  discard block
 block discarded – undo
71 71
 		= spip_connect_db($adresse_db, $port, $login_db, $pass_db, $sel_db, $server_db);
72 72
 
73 73
 	$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
74
-		= $GLOBALS['spip_' . $server_db . '_functions_' . $GLOBALS['spip_sql_version']];
74
+		= $GLOBALS['spip_'.$server_db.'_functions_'.$GLOBALS['spip_sql_version']];
75 75
 
76 76
 	// Completer le tableau decrivant la connexion
77 77
 
78 78
 	$GLOBALS['connexions'][$server_db]['prefixe'] = $table_prefix;
79 79
 	$GLOBALS['connexions'][$server_db]['db'] = $sel_db;
80 80
 
81
-	$old = sql_showbase($table_prefix . '_meta', $server_db);
81
+	$old = sql_showbase($table_prefix.'_meta', $server_db);
82 82
 	if ($old) {
83 83
 		$old = sql_fetch($old, $server_db);
84 84
 	}
@@ -97,7 +97,7 @@  discard block
 block discarded – undo
97 97
 				$charset['charset'];
98 98
 			$charsetbase = $charset['charset'];
99 99
 		} else {
100
-			spip_log(_DEFAULT_CHARSET . ' inconnu du serveur SQL');
100
+			spip_log(_DEFAULT_CHARSET.' inconnu du serveur SQL');
101 101
 			$charsetbase = 'standard';
102 102
 		}
103 103
 		spip_log("Creation des tables. Codage $charsetbase");
@@ -147,7 +147,7 @@  discard block
 block discarded – undo
147 147
 		if ($r) {
148 148
 			$r = sql_fetch($r, $server_db);
149 149
 		}
150
-		$version_installee = !$r ? 0 : (double)$r['valeur'];
150
+		$version_installee = !$r ? 0 : (double) $r['valeur'];
151 151
 		if (!$version_installee or ($GLOBALS['spip_version_base'] < $version_installee)) {
152 152
 			$fupdateq(
153 153
 				'spip_meta',
@@ -156,7 +156,7 @@  discard block
 block discarded – undo
156 156
 				'',
157 157
 				$server_db
158 158
 			);
159
-			spip_log('nouvelle version installee: ' . $GLOBALS['spip_version_base']);
159
+			spip_log('nouvelle version installee: '.$GLOBALS['spip_version_base']);
160 160
 		}
161 161
 		// eliminer la derniere operation d'admin mal terminee
162 162
 		// notamment la mise a jour
@@ -183,7 +183,7 @@  discard block
 block discarded – undo
183 183
 	if ($chmod_db) {
184 184
 		install_fichier_connexion(
185 185
 			_FILE_CHMOD_TMP,
186
-			"if (!defined('_SPIP_CHMOD')) define('_SPIP_CHMOD', " . sprintf('0%3o', $chmod_db) . ");\n"
186
+			"if (!defined('_SPIP_CHMOD')) define('_SPIP_CHMOD', ".sprintf('0%3o', $chmod_db).");\n"
187 187
 		);
188 188
 	}
189 189
 
@@ -246,16 +246,16 @@  discard block
 block discarded – undo
246 246
 
247 247
 
248 248
 function install_premier_auteur($email, $login, $nom, $pass, $hidden, $auteur_obligatoire) {
249
-	return info_progression_etape(3, 'etape_', 'install/') .
249
+	return info_progression_etape(3, 'etape_', 'install/').
250 250
 	info_etape(
251 251
 		_T('info_informations_personnelles'),
252
-		'<b>' . _T('texte_informations_personnelles_1') . '</b>' .
253
-		aider('install5', true) .
254
-		'<p>' .
252
+		'<b>'._T('texte_informations_personnelles_1').'</b>'.
253
+		aider('install5', true).
254
+		'<p>'.
255 255
 		($auteur_obligatoire ?
256 256
 			''
257 257
 			:
258
-			_T('texte_informations_personnelles_2') . ' ' . _T('info_laisser_champs_vides')
258
+			_T('texte_informations_personnelles_2').' '._T('info_laisser_champs_vides')
259 259
 		)
260 260
 	)
261 261
 	. generer_form_ecrire('install', (
@@ -265,12 +265,12 @@  discard block
 block discarded – undo
265 265
 			_T('info_identification_publique'),
266 266
 			[
267 267
 				'nom' => [
268
-					'label' => '<b>' . _T('entree_signature') . "</b><br />\n" . _T('entree_nom_pseudo_1') . "\n",
268
+					'label' => '<b>'._T('entree_signature')."</b><br />\n"._T('entree_nom_pseudo_1')."\n",
269 269
 					'valeur' => $nom,
270 270
 					'required' => $auteur_obligatoire,
271 271
 				],
272 272
 				'email' => [
273
-					'label' => '<b>' . _T('entree_adresse_email') . "</b>\n",
273
+					'label' => '<b>'._T('entree_adresse_email')."</b>\n",
274 274
 					'valeur' => $email,
275 275
 				]
276 276
 			]
@@ -280,23 +280,23 @@  discard block
 block discarded – undo
280 280
 			_T('entree_identifiants_connexion'),
281 281
 			[
282 282
 				'login' => [
283
-					'label' => '<b>' . _T('entree_login') . "</b><br />\n" . _T(
283
+					'label' => '<b>'._T('entree_login')."</b><br />\n"._T(
284 284
 						'info_login_trop_court_car_pluriel',
285 285
 						['nb' => _LOGIN_TROP_COURT]
286
-					) . "\n",
286
+					)."\n",
287 287
 					'valeur' => $login,
288 288
 					'required' => $auteur_obligatoire,
289 289
 				],
290 290
 				'pass' => [
291
-					'label' => '<b>' . _T('entree_mot_passe') . "</b><br />\n" . _T(
291
+					'label' => '<b>'._T('entree_mot_passe')."</b><br />\n"._T(
292 292
 						'info_passe_trop_court_car_pluriel',
293 293
 						['nb' => _PASS_LONGUEUR_MINI]
294
-					) . "\n",
294
+					)."\n",
295 295
 					'valeur' => $pass,
296 296
 					'required' => $auteur_obligatoire,
297 297
 				],
298 298
 				'pass_verif' => [
299
-					'label' => '<b>' . _T('info_confirmer_passe') . "</b><br />\n",
299
+					'label' => '<b>'._T('info_confirmer_passe')."</b><br />\n",
300 300
 					'valeur' => $pass,
301 301
 					'required' => $auteur_obligatoire,
302 302
 				]
@@ -340,9 +340,9 @@  discard block
 block discarded – undo
340 340
 
341 341
 		if ($res) {
342 342
 			$res = info_progression_etape(2, 'etape_', 'install/', true)
343
-				. "<div class='error'><h3>" . _T('avis_operation_echec') . '</h3>'
343
+				. "<div class='error'><h3>"._T('avis_operation_echec').'</h3>'
344 344
 				. $res
345
-				. '<p>' . _T('texte_operation_echec') . '</p>'
345
+				. '<p>'._T('texte_operation_echec').'</p>'
346 346
 				. '</div>';
347 347
 		}
348 348
 	} else {
@@ -366,7 +366,7 @@  discard block
 block discarded – undo
366 366
 
367 367
 		$hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db)
368 368
 			. (defined('_INSTALL_NAME_DB') ? ''
369
-				: "\n<input type='hidden' name='sel_db' value=\"" . spip_htmlspecialchars($sel_db) . '" />');
369
+				: "\n<input type='hidden' name='sel_db' value=\"".spip_htmlspecialchars($sel_db).'" />');
370 370
 
371 371
 		$auteur_obligatoire = ($ldap_present ? 0 : !sql_countsel('spip_auteurs', '', '', '', $server_db));
372 372
 
Please login to merge, or discard this patch.
ecrire/inc/filtres_mini.php 2 patches
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -45,10 +45,10 @@  discard block
 block discarded – undo
45 45
 	}
46 46
 
47 47
 	if ($query) {
48
-		$url .= '?' . $query;
48
+		$url .= '?'.$query;
49 49
 	}
50 50
 
51
-	return '/' . preg_replace(',^/,S', '', $url);
51
+	return '/'.preg_replace(',^/,S', '', $url);
52 52
 }
53 53
 
54 54
 
@@ -78,7 +78,7 @@  discard block
 block discarded – undo
78 78
 	if (preg_match(';^((?:[a-z]{3,33}:)?//.*?)(/.*)?$;iS', $lien, $r)) {
79 79
 		$r = array_pad($r, 3, '');
80 80
 
81
-		return $r[1] . resolve_path($r[2]);
81
+		return $r[1].resolve_path($r[2]);
82 82
 	}
83 83
 
84 84
 	# L'url site spip est un lien absolu aussi
@@ -99,13 +99,13 @@  discard block
 block discarded – undo
99 99
 	}
100 100
 	switch (substr($lien, 0, 1)) {
101 101
 		case '/':
102
-			return $debut . resolve_path($lien);
102
+			return $debut.resolve_path($lien);
103 103
 		case '#':
104
-			return $debut . resolve_path($dir . $mot . $get . $lien);
104
+			return $debut.resolve_path($dir.$mot.$get.$lien);
105 105
 		case '':
106
-			return $debut . resolve_path($dir . $mot . $get . $hash);
106
+			return $debut.resolve_path($dir.$mot.$get.$hash);
107 107
 		default:
108
-			return $debut . resolve_path($dir . $lien);
108
+			return $debut.resolve_path($dir.$lien);
109 109
 	}
110 110
 }
111 111
 
@@ -133,7 +133,7 @@  discard block
 block discarded – undo
133 133
 		return '';
134 134
 	}
135 135
 	if (!$base) {
136
-		$base = url_de_base() . (_DIR_RACINE ? _DIR_RESTREINT_ABS : '');
136
+		$base = url_de_base().(_DIR_RACINE ? _DIR_RESTREINT_ABS : '');
137 137
 	}
138 138
 
139 139
 	return suivre_lien($base, $url);
@@ -156,7 +156,7 @@  discard block
 block discarded – undo
156 156
  * @param array $protocoles_autorises
157 157
  * @return bool
158 158
  */
159
-function protocole_verifier($url_absolue, $protocoles_autorises = ['http','https']) {
159
+function protocole_verifier($url_absolue, $protocoles_autorises = ['http', 'https']) {
160 160
 
161 161
 	if (preg_match(';^([a-z]{3,7})://;i', $url_absolue, $m)) {
162 162
 		$protocole = $m[1];
Please login to merge, or discard this patch.
Indentation   +100 added lines, -100 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
@@ -35,20 +35,20 @@  discard block
 block discarded – undo
35 35
  * @return string URL nettoyée
36 36
  **/
37 37
 function resolve_path($url) {
38
-	[$url, $query] = array_pad(explode('?', $url, 2), 2, null);
39
-	while (
40
-		preg_match(',/\.?/,', $url, $regs)    # supprime // et /./
41
-		or preg_match(',/[^/]*/\.\./,S', $url, $regs)  # supprime /toto/../
42
-		or preg_match(',^/\.\./,S', $url, $regs) # supprime les /../ du haut
43
-	) {
44
-		$url = str_replace($regs[0], '/', $url);
45
-	}
38
+    [$url, $query] = array_pad(explode('?', $url, 2), 2, null);
39
+    while (
40
+        preg_match(',/\.?/,', $url, $regs)    # supprime // et /./
41
+        or preg_match(',/[^/]*/\.\./,S', $url, $regs)  # supprime /toto/../
42
+        or preg_match(',^/\.\./,S', $url, $regs) # supprime les /../ du haut
43
+    ) {
44
+        $url = str_replace($regs[0], '/', $url);
45
+    }
46 46
 
47
-	if ($query) {
48
-		$url .= '?' . $query;
49
-	}
47
+    if ($query) {
48
+        $url .= '?' . $query;
49
+    }
50 50
 
51
-	return '/' . preg_replace(',^/,S', '', $url);
51
+    return '/' . preg_replace(',^/,S', '', $url);
52 52
 }
53 53
 
54 54
 
@@ -69,44 +69,44 @@  discard block
 block discarded – undo
69 69
  **/
70 70
 function suivre_lien($url, $lien) {
71 71
 
72
-	$mot = null;
73
-	$get = null;
74
-	$hash = null;
75
-	if (preg_match(',^(mailto|javascript|data|tel|callto|file|ftp):,iS', $lien)) {
76
-		return $lien;
77
-	}
78
-	if (preg_match(';^((?:[a-z]{3,33}:)?//.*?)(/.*)?$;iS', $lien, $r)) {
79
-		$r = array_pad($r, 3, '');
72
+    $mot = null;
73
+    $get = null;
74
+    $hash = null;
75
+    if (preg_match(',^(mailto|javascript|data|tel|callto|file|ftp):,iS', $lien)) {
76
+        return $lien;
77
+    }
78
+    if (preg_match(';^((?:[a-z]{3,33}:)?//.*?)(/.*)?$;iS', $lien, $r)) {
79
+        $r = array_pad($r, 3, '');
80 80
 
81
-		return $r[1] . resolve_path($r[2]);
82
-	}
81
+        return $r[1] . resolve_path($r[2]);
82
+    }
83 83
 
84
-	# L'url site spip est un lien absolu aussi
85
-	if (isset($GLOBALS['meta']['adresse_site']) and $lien == $GLOBALS['meta']['adresse_site']) {
86
-		return $lien;
87
-	}
84
+    # L'url site spip est un lien absolu aussi
85
+    if (isset($GLOBALS['meta']['adresse_site']) and $lien == $GLOBALS['meta']['adresse_site']) {
86
+        return $lien;
87
+    }
88 88
 
89
-	# lien relatif, il faut verifier l'url de base
90
-	# commencer par virer la chaine de get de l'url de base
91
-	$dir = '/';
92
-	$debut = '';
93
-	if (preg_match(';^((?:[a-z]{3,7}:)?//[^/]+)(/.*?/?)?([^/#?]*)([?][^#]*)?(#.*)?$;S', $url, $regs)) {
94
-		$debut = $regs[1];
95
-		$dir = !strlen($regs[2]) ? '/' : $regs[2];
96
-		$mot = $regs[3];
97
-		$get = $regs[4] ?? '';
98
-		$hash = $regs[5] ?? '';
99
-	}
100
-	switch (substr($lien, 0, 1)) {
101
-		case '/':
102
-			return $debut . resolve_path($lien);
103
-		case '#':
104
-			return $debut . resolve_path($dir . $mot . $get . $lien);
105
-		case '':
106
-			return $debut . resolve_path($dir . $mot . $get . $hash);
107
-		default:
108
-			return $debut . resolve_path($dir . $lien);
109
-	}
89
+    # lien relatif, il faut verifier l'url de base
90
+    # commencer par virer la chaine de get de l'url de base
91
+    $dir = '/';
92
+    $debut = '';
93
+    if (preg_match(';^((?:[a-z]{3,7}:)?//[^/]+)(/.*?/?)?([^/#?]*)([?][^#]*)?(#.*)?$;S', $url, $regs)) {
94
+        $debut = $regs[1];
95
+        $dir = !strlen($regs[2]) ? '/' : $regs[2];
96
+        $mot = $regs[3];
97
+        $get = $regs[4] ?? '';
98
+        $hash = $regs[5] ?? '';
99
+    }
100
+    switch (substr($lien, 0, 1)) {
101
+        case '/':
102
+            return $debut . resolve_path($lien);
103
+        case '#':
104
+            return $debut . resolve_path($dir . $mot . $get . $lien);
105
+        case '':
106
+            return $debut . resolve_path($dir . $mot . $get . $hash);
107
+        default:
108
+            return $debut . resolve_path($dir . $lien);
109
+    }
110 110
 }
111 111
 
112 112
 
@@ -129,15 +129,15 @@  discard block
 block discarded – undo
129 129
  * @return string Texte ou URL (en absolus)
130 130
  **/
131 131
 function url_absolue($url, $base = '') {
132
-	$url = trim((string) $url);
133
-	if (strlen($url = trim($url)) == 0) {
134
-		return '';
135
-	}
136
-	if (!$base) {
137
-		$base = url_de_base() . (_DIR_RACINE ? _DIR_RESTREINT_ABS : '');
138
-	}
132
+    $url = trim((string) $url);
133
+    if (strlen($url = trim($url)) == 0) {
134
+        return '';
135
+    }
136
+    if (!$base) {
137
+        $base = url_de_base() . (_DIR_RACINE ? _DIR_RESTREINT_ABS : '');
138
+    }
139 139
 
140
-	return suivre_lien($base, $url);
140
+    return suivre_lien($base, $url);
141 141
 }
142 142
 
143 143
 /**
@@ -148,7 +148,7 @@  discard block
 block discarded – undo
148 148
  * @return string
149 149
  */
150 150
 function protocole_implicite($url_absolue) {
151
-	return preg_replace(';^[a-z]{3,7}://;i', '//', $url_absolue);
151
+    return preg_replace(';^[a-z]{3,7}://;i', '//', $url_absolue);
152 152
 }
153 153
 
154 154
 /**
@@ -159,16 +159,16 @@  discard block
 block discarded – undo
159 159
  */
160 160
 function protocole_verifier($url_absolue, $protocoles_autorises = ['http','https']) {
161 161
 
162
-	if (preg_match(';^([a-z]{3,7})://;i', $url_absolue, $m)) {
163
-		$protocole = $m[1];
164
-		if (
165
-			in_array($protocole, $protocoles_autorises)
166
-			or in_array(strtolower($protocole), array_map('strtolower', $protocoles_autorises))
167
-		) {
168
-			return true;
169
-		}
170
-	}
171
-	return false;
162
+    if (preg_match(';^([a-z]{3,7})://;i', $url_absolue, $m)) {
163
+        $protocole = $m[1];
164
+        if (
165
+            in_array($protocole, $protocoles_autorises)
166
+            or in_array(strtolower($protocole), array_map('strtolower', $protocoles_autorises))
167
+        ) {
168
+            return true;
169
+        }
170
+    }
171
+    return false;
172 172
 }
173 173
 
174 174
 /**
@@ -185,27 +185,27 @@  discard block
 block discarded – undo
185 185
  * @return string Texte avec des URLs absolues
186 186
  **/
187 187
 function liens_absolus($texte, $base = '') {
188
-	if (preg_match_all(',(<(a|link|image|img|script)\s[^<>]*(href|src)=[^<>]*>),imsS', $texte, $liens, PREG_SET_ORDER)) {
189
-		if (!function_exists('extraire_attribut')) {
190
-			include_spip('inc/filtres');
191
-		}
192
-		foreach ($liens as $lien) {
193
-			foreach (['href', 'src'] as $attr) {
194
-				$href = extraire_attribut($lien[0], $attr) ?? '';
195
-				if (strlen($href) > 0) {
196
-					if (!preg_match(';^((?:[a-z]{3,7}:)?//);iS', $href)) {
197
-						$abs = url_absolue($href, $base);
198
-						if (rtrim($href, '/') !== rtrim($abs, '/') and !preg_match('/^#/', $href)) {
199
-							$texte_lien = inserer_attribut($lien[0], $attr, $abs);
200
-							$texte = str_replace($lien[0], $texte_lien, $texte);
201
-						}
202
-					}
203
-				}
204
-			}
205
-		}
206
-	}
188
+    if (preg_match_all(',(<(a|link|image|img|script)\s[^<>]*(href|src)=[^<>]*>),imsS', $texte, $liens, PREG_SET_ORDER)) {
189
+        if (!function_exists('extraire_attribut')) {
190
+            include_spip('inc/filtres');
191
+        }
192
+        foreach ($liens as $lien) {
193
+            foreach (['href', 'src'] as $attr) {
194
+                $href = extraire_attribut($lien[0], $attr) ?? '';
195
+                if (strlen($href) > 0) {
196
+                    if (!preg_match(';^((?:[a-z]{3,7}:)?//);iS', $href)) {
197
+                        $abs = url_absolue($href, $base);
198
+                        if (rtrim($href, '/') !== rtrim($abs, '/') and !preg_match('/^#/', $href)) {
199
+                            $texte_lien = inserer_attribut($lien[0], $attr, $abs);
200
+                            $texte = str_replace($lien[0], $texte_lien, $texte);
201
+                        }
202
+                    }
203
+                }
204
+            }
205
+        }
206
+    }
207 207
 
208
-	return $texte;
208
+    return $texte;
209 209
 }
210 210
 
211 211
 
@@ -221,11 +221,11 @@  discard block
 block discarded – undo
221 221
  * @return string Texte ou URL (en absolus)
222 222
  **/
223 223
 function abs_url($texte, $base = '') {
224
-	if ($GLOBALS['mode_abs_url'] == 'url') {
225
-		return url_absolue($texte, $base);
226
-	} else {
227
-		return liens_absolus($texte, $base);
228
-	}
224
+    if ($GLOBALS['mode_abs_url'] == 'url') {
225
+        return url_absolue($texte, $base);
226
+    } else {
227
+        return liens_absolus($texte, $base);
228
+    }
229 229
 }
230 230
 
231 231
 /**
@@ -238,11 +238,11 @@  discard block
 block discarded – undo
238 238
  * @return string
239 239
  */
240 240
 function spip_htmlspecialchars($string, $flags = null, $encoding = 'UTF-8', $double_encode = true) {
241
-	if (is_null($flags)) {
242
-		$flags = ENT_COMPAT | ENT_HTML401;
243
-	}
241
+    if (is_null($flags)) {
242
+        $flags = ENT_COMPAT | ENT_HTML401;
243
+    }
244 244
 
245
-	return htmlspecialchars($string, $flags, $encoding, $double_encode);
245
+    return htmlspecialchars($string, $flags, $encoding, $double_encode);
246 246
 }
247 247
 
248 248
 /**
@@ -255,9 +255,9 @@  discard block
 block discarded – undo
255 255
  * @return string
256 256
  */
257 257
 function spip_htmlentities($string, $flags = null, $encoding = 'UTF-8', $double_encode = true) {
258
-	if (is_null($flags)) {
259
-		$flags = ENT_COMPAT | ENT_HTML401;
260
-	}
258
+    if (is_null($flags)) {
259
+        $flags = ENT_COMPAT | ENT_HTML401;
260
+    }
261 261
 
262
-	return htmlentities($string, $flags, $encoding, $double_encode);
262
+    return htmlentities($string, $flags, $encoding, $double_encode);
263 263
 }
Please login to merge, or discard this patch.
ecrire/public/references.php 2 patches
Spacing   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
 	$select = true
125 125
 ) {
126 126
 	if (!is_string($defaut)) {
127
-		$defaut = '($Pile[0][\'' . strtolower($nom_champ) . '\'] ?? null)';
127
+		$defaut = '($Pile[0][\''.strtolower($nom_champ).'\'] ?? null)';
128 128
 	}
129 129
 
130 130
 	$idb_origine = $idb;
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
 			}
158 158
 			// renseigner la boucle source de ce champ pour les traitements
159 159
 			$boucles[$idb_origine]->index_champ[$nom_champ_origine] = $idb;
160
-			$champ = '$Pile[$SP' . ($i ? "-$i" : '') . '][\'' . $c . '\']';
160
+			$champ = '$Pile[$SP'.($i ? "-$i" : '').'][\''.$c.'\']';
161 161
 			if (!$joker) {
162 162
 				return index_compose($conditionnel, $champ);
163 163
 			}
@@ -198,7 +198,7 @@  discard block
 block discarded – undo
198 198
 function index_compose($conditionnel, $defaut) {
199 199
 	while ($c = array_pop($conditionnel)) {
200 200
 		// si on passe defaut = '', ne pas générer d'erreur de compilation.
201
-		$defaut = "($c:(" . ($defaut ?: "''") . '))';
201
+		$defaut = "($c:(".($defaut ?: "''").'))';
202 202
 	}
203 203
 
204 204
 	return $defaut;
@@ -245,7 +245,7 @@  discard block
 block discarded – undo
245 245
 	if (!$r) {
246 246
 		$joker = false; // indiquer a l'appelant
247 247
 		# continuer pour chercher l'erreur suivante
248
-		return ["'#" . $r . ':' . $nom_champ . "'", ''];
248
+		return ["'#".$r.':'.$nom_champ."'", ''];
249 249
 	}
250 250
 
251 251
 	$desc = $boucles[$idb]->show;
@@ -287,7 +287,7 @@  discard block
 block discarded – undo
287 287
 	if (preg_match('/^(.*)\.(.*)$/', $nom_champ, $r)) {
288 288
 		[, $_table, $_nom_champ] = $r;
289 289
 		if ($cle = trouver_jointure_champ($_nom_champ, $boucles[$idb], [$_table])) {
290
-			$_alias = $cle . '_' . $_nom_champ;
290
+			$_alias = $cle.'_'.$_nom_champ;
291 291
 			return index_exception(
292 292
 				$boucles[$idb],
293 293
 				$desc,
@@ -367,8 +367,8 @@  discard block
 block discarded – undo
367 367
 			$t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
368 368
 		}
369 369
 		if ($t == null) {
370
-			[$e, $x] = $excep;  #PHP4 affecte de gauche a droite
371
-			$excep = $x;    #PHP5 de droite a gauche !
370
+			[$e, $x] = $excep; #PHP4 affecte de gauche a droite
371
+			$excep = $x; #PHP5 de droite a gauche !
372 372
 			$j = $trouver_table($e, $boucle->sql_serveur);
373 373
 			if (!$j) {
374 374
 				return ['', ''];
@@ -380,7 +380,7 @@  discard block
 block discarded – undo
380 380
 					$l = (preg_split('/\s*,\s*/', $k));
381 381
 					$k = $desc['key']['PRIMARY KEY'];
382 382
 					if (!in_array($k, $l)) {
383
-						spip_log("jointure impossible $e " . join(',', $l));
383
+						spip_log("jointure impossible $e ".join(',', $l));
384 384
 
385 385
 						return ['', ''];
386 386
 					}
@@ -396,7 +396,7 @@  discard block
 block discarded – undo
396 396
 	// demander a SQL de gerer le synonyme
397 397
 	// ca permet que excep soit dynamique (Cedric, 2/3/06)
398 398
 	if ($excep != $nom_champ) {
399
-		$excep .= ' AS ' . $nom_champ;
399
+		$excep .= ' AS '.$nom_champ;
400 400
 	}
401 401
 
402 402
 	return ["$t.$excep", $nom_champ];
@@ -630,7 +630,7 @@  discard block
 block discarded – undo
630 630
 		join(',', $collecte),
631 631
 		($collecte ? $param : substr($param, 1)), # virer la virgule
632 632
 		memoriser_contexte_compil($p),
633
-		(!$supp ? '' : (', ' . join(',', $supp)))
633
+		(!$supp ? '' : (', '.join(',', $supp)))
634 634
 	);
635 635
 
636 636
 	$p->interdire_scripts = false;
@@ -732,7 +732,7 @@  discard block
 block discarded – undo
732 732
 	$nom = $p->id_boucle;
733 733
 
734 734
 	if ($nom and trouver_nom_serveur_distant($p)) {
735
-		spip_log($nom . ':' . $p->nom_champ . ' ' . _T('zbug_distant_interdit'));
735
+		spip_log($nom.':'.$p->nom_champ.' '._T('zbug_distant_interdit'));
736 736
 
737 737
 		return false;
738 738
 	}
@@ -817,7 +817,7 @@  discard block
 block discarded – undo
817 817
 			(strpos($ps, 'typo') !== false)
818 818
 		)
819 819
 	) {
820
-		$ps = 'traiter_doublons_documents($doublons, ' . $ps . ')';
820
+		$ps = 'traiter_doublons_documents($doublons, '.$ps.')';
821 821
 	}
822 822
 
823 823
 	// La protection des champs par |safehtml est assuree par les extensions
@@ -935,7 +935,7 @@  discard block
 block discarded – undo
935 935
 function compose_filtres_args($p, $args, $sep) {
936 936
 	$arglist = '';
937 937
 	foreach ($args as $arg) {
938
-		$arglist .= $sep .
938
+		$arglist .= $sep.
939 939
 			calculer_liste($arg, $p->descr, $p->boucles, $p->id_boucle);
940 940
 	}
941 941
 
@@ -985,7 +985,7 @@  discard block
 block discarded – undo
985 985
 	while ($b != '') {
986 986
 		foreach ($p->boucles[$b]->criteres as $critere) {
987 987
 			if ($critere->op == $motif) {
988
-				$p->code = '$Pile[$SP' . (($n == 0) ? '' : "-$n") .
988
+				$p->code = '$Pile[$SP'.(($n == 0) ? '' : "-$n").
989 989
 					"]['$champ']";
990 990
 				$b = '';
991 991
 				break 2;
@@ -1013,6 +1013,6 @@  discard block
 block discarded – undo
1013 1013
  */
1014 1014
 function zbug_presenter_champ($p, $champ = '') {
1015 1015
 	$balise = $champ ?: $p->nom_champ;
1016
-	$explicite = $p->nom_boucle ? $p->nom_boucle . ':' : '';
1016
+	$explicite = $p->nom_boucle ? $p->nom_boucle.':' : '';
1017 1017
 	return "#{$explicite}{$balise}";
1018 1018
 }
Please login to merge, or discard this patch.
Indentation   +561 added lines, -561 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Compilateur\References
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -41,14 +41,14 @@  discard block
 block discarded – undo
41 41
  *     - '' si une référence explicite incorrecte est envoyée
42 42
  */
43 43
 function index_boucle($p) {
44
-	if (strlen($p->nom_boucle)) {
45
-		// retourne l’index explicite demandé s’il existe
46
-		if (!empty($p->boucles[$p->nom_boucle])) {
47
-			return $p->nom_boucle;
48
-		}
49
-		return '';
50
-	}
51
-	return $p->id_boucle;
44
+    if (strlen($p->nom_boucle)) {
45
+        // retourne l’index explicite demandé s’il existe
46
+        if (!empty($p->boucles[$p->nom_boucle])) {
47
+            return $p->nom_boucle;
48
+        }
49
+        return '';
50
+    }
51
+    return $p->id_boucle;
52 52
 }
53 53
 
54 54
 
@@ -71,17 +71,17 @@  discard block
 block discarded – undo
71 71
  *     - '' si une référence explicite incorrecte est envoyée
72 72
  */
73 73
 function index_boucle_mere($p) {
74
-	if (strlen($p->nom_boucle)) {
75
-		// retourne l’index explicite demandé s’il existe
76
-		if (!empty($p->boucles[$p->nom_boucle])) {
77
-			return $p->nom_boucle;
78
-		}
79
-		return '';
80
-	}
81
-	if (!empty($p->descr['id_mere'])) {
82
-		return $p->descr['id_mere'];
83
-	}
84
-	return '';
74
+    if (strlen($p->nom_boucle)) {
75
+        // retourne l’index explicite demandé s’il existe
76
+        if (!empty($p->boucles[$p->nom_boucle])) {
77
+            return $p->nom_boucle;
78
+        }
79
+        return '';
80
+    }
81
+    if (!empty($p->descr['id_mere'])) {
82
+        return $p->descr['id_mere'];
83
+    }
84
+    return '';
85 85
 }
86 86
 
87 87
 /**
@@ -115,74 +115,74 @@  discard block
 block discarded – undo
115 115
  *     Code PHP pour obtenir le champ SQL
116 116
  */
117 117
 function index_pile(
118
-	$idb,
119
-	$nom_champ,
120
-	&$boucles,
121
-	$explicite = '',
122
-	$defaut = null,
123
-	$remonte_pile = true,
124
-	$select = true
118
+    $idb,
119
+    $nom_champ,
120
+    &$boucles,
121
+    $explicite = '',
122
+    $defaut = null,
123
+    $remonte_pile = true,
124
+    $select = true
125 125
 ) {
126
-	if (!is_string($defaut)) {
127
-		$defaut = '($Pile[0][\'' . strtolower($nom_champ) . '\'] ?? null)';
128
-	}
129
-
130
-	$idb_origine = $idb;
131
-	$nom_champ_origine = $nom_champ;
132
-
133
-	$i = 0;
134
-	if (strlen($explicite)) {
135
-		// Recherche d'un champ dans un etage superieur
136
-		while (($idb !== $explicite) && ($idb !== '')) {
137
-			#	spip_log("Cherchexpl: $nom_champ '$explicite' '$idb' '$i'");
138
-			$i++;
139
-			$idb = $boucles[$idb]->id_parent;
140
-		}
141
-	}
142
-
143
-	#	spip_log("Cherche: $nom_champ a partir de '$idb'");
144
-	$nom_champ = strtolower($nom_champ);
145
-	$conditionnel = [];
146
-	// attention: entre la boucle nommee 0, "" et le tableau vide,
147
-	// il y a incoherences qu'il vaut mieux eviter
148
-	while (isset($boucles[$idb])) {
149
-		$joker = true;
150
-		// modifie $joker si tous les champs sont autorisés.
151
-		// $t = le select pour le champ, si on l'a trouvé (ou si joker)
152
-		// $c = le nom du champ demandé
153
-		[$t, $c] = index_tables_en_pile($idb, $nom_champ, $boucles, $joker);
154
-		if ($t) {
155
-			if ($select and !in_array($t, $boucles[$idb]->select)) {
156
-				$boucles[$idb]->select[] = $t;
157
-			}
158
-			// renseigner la boucle source de ce champ pour les traitements
159
-			$boucles[$idb_origine]->index_champ[$nom_champ_origine] = $idb;
160
-			$champ = '$Pile[$SP' . ($i ? "-$i" : '') . '][\'' . $c . '\']';
161
-			if (!$joker) {
162
-				return index_compose($conditionnel, $champ);
163
-			}
164
-
165
-			// tant que l'on trouve des tables avec joker, on continue
166
-			// avec la boucle parente et on conditionne à l'exécution
167
-			// la présence du champ. Si le champ existe à l'exécution
168
-			// dans une boucle, il est pris, sinon on le cherche dans le parent...
169
-			$conditionnel[] = "isset($champ)?$champ";
170
-		}
171
-
172
-		if ($remonte_pile) {
173
-			#	spip_log("On remonte vers $i");
174
-			// Sinon on remonte d'un cran
175
-			$idb = $boucles[$idb]->id_parent;
176
-			$i++;
177
-		} else {
178
-			$idb = null;
179
-		}
180
-	}
181
-
182
-	#	spip_log("Pas vu $nom_champ");
183
-	// esperons qu'il y sera
184
-	// ou qu'on a fourni une valeur par "defaut" plus pertinent
185
-	return index_compose($conditionnel, $defaut);
126
+    if (!is_string($defaut)) {
127
+        $defaut = '($Pile[0][\'' . strtolower($nom_champ) . '\'] ?? null)';
128
+    }
129
+
130
+    $idb_origine = $idb;
131
+    $nom_champ_origine = $nom_champ;
132
+
133
+    $i = 0;
134
+    if (strlen($explicite)) {
135
+        // Recherche d'un champ dans un etage superieur
136
+        while (($idb !== $explicite) && ($idb !== '')) {
137
+            #	spip_log("Cherchexpl: $nom_champ '$explicite' '$idb' '$i'");
138
+            $i++;
139
+            $idb = $boucles[$idb]->id_parent;
140
+        }
141
+    }
142
+
143
+    #	spip_log("Cherche: $nom_champ a partir de '$idb'");
144
+    $nom_champ = strtolower($nom_champ);
145
+    $conditionnel = [];
146
+    // attention: entre la boucle nommee 0, "" et le tableau vide,
147
+    // il y a incoherences qu'il vaut mieux eviter
148
+    while (isset($boucles[$idb])) {
149
+        $joker = true;
150
+        // modifie $joker si tous les champs sont autorisés.
151
+        // $t = le select pour le champ, si on l'a trouvé (ou si joker)
152
+        // $c = le nom du champ demandé
153
+        [$t, $c] = index_tables_en_pile($idb, $nom_champ, $boucles, $joker);
154
+        if ($t) {
155
+            if ($select and !in_array($t, $boucles[$idb]->select)) {
156
+                $boucles[$idb]->select[] = $t;
157
+            }
158
+            // renseigner la boucle source de ce champ pour les traitements
159
+            $boucles[$idb_origine]->index_champ[$nom_champ_origine] = $idb;
160
+            $champ = '$Pile[$SP' . ($i ? "-$i" : '') . '][\'' . $c . '\']';
161
+            if (!$joker) {
162
+                return index_compose($conditionnel, $champ);
163
+            }
164
+
165
+            // tant que l'on trouve des tables avec joker, on continue
166
+            // avec la boucle parente et on conditionne à l'exécution
167
+            // la présence du champ. Si le champ existe à l'exécution
168
+            // dans une boucle, il est pris, sinon on le cherche dans le parent...
169
+            $conditionnel[] = "isset($champ)?$champ";
170
+        }
171
+
172
+        if ($remonte_pile) {
173
+            #	spip_log("On remonte vers $i");
174
+            // Sinon on remonte d'un cran
175
+            $idb = $boucles[$idb]->id_parent;
176
+            $i++;
177
+        } else {
178
+            $idb = null;
179
+        }
180
+    }
181
+
182
+    #	spip_log("Pas vu $nom_champ");
183
+    // esperons qu'il y sera
184
+    // ou qu'on a fourni une valeur par "defaut" plus pertinent
185
+    return index_compose($conditionnel, $defaut);
186 186
 }
187 187
 
188 188
 /**
@@ -196,12 +196,12 @@  discard block
 block discarded – undo
196 196
  * @return string              Code PHP complet de recherche d'un champ
197 197
  */
198 198
 function index_compose($conditionnel, $defaut) {
199
-	while ($c = array_pop($conditionnel)) {
200
-		// si on passe defaut = '', ne pas générer d'erreur de compilation.
201
-		$defaut = "($c:(" . ($defaut ?: "''") . '))';
202
-	}
199
+    while ($c = array_pop($conditionnel)) {
200
+        // si on passe defaut = '', ne pas générer d'erreur de compilation.
201
+        $defaut = "($c:(" . ($defaut ?: "''") . '))';
202
+    }
203 203
 
204
-	return $defaut;
204
+    return $defaut;
205 205
 }
206 206
 
207 207
 /**
@@ -237,97 +237,97 @@  discard block
 block discarded – undo
237 237
  **/
238 238
 function index_tables_en_pile($idb, $nom_champ, &$boucles, &$joker) {
239 239
 
240
-	$r = $boucles[$idb]->type_requete;
241
-	// boucle recursive, c'est foutu...
242
-	if ($r == TYPE_RECURSIF) {
243
-		return [];
244
-	}
245
-	if (!$r) {
246
-		$joker = false; // indiquer a l'appelant
247
-		# continuer pour chercher l'erreur suivante
248
-		return ["'#" . $r . ':' . $nom_champ . "'", ''];
249
-	}
250
-
251
-	$desc = $boucles[$idb]->show;
252
-	// le nom du champ est il une exception de la table ? un alias ?
253
-	$excep = $GLOBALS['exceptions_des_tables'][$r] ?? '';
254
-	if ($excep) {
255
-		$excep = $excep[$nom_champ] ?? '';
256
-	}
257
-
258
-	// il y a un alias connu pour ce champ
259
-	if ($excep) {
260
-		$joker = false; // indiquer a l'appelant
261
-		return index_exception($boucles[$idb], $desc, $nom_champ, $excep);
262
-	}
263
-
264
-	// le champ existe dans la table, on le prend.
265
-	if (isset($desc['field'][$nom_champ])) {
266
-		$t = $boucles[$idb]->id_table ?? '';
267
-		$joker = false; // indiquer a l'appelant
268
-		// note: dans certains cas ('valeur' d’une boucle DATA, sans id_table), retourne ['.valeur', 'valeur'] …
269
-		return ["$t.$nom_champ", $nom_champ];
270
-	}
271
-
272
-	// Tous les champs sont-ils acceptés ?
273
-	// Si oui, on retourne le champ, et on lève le flag joker
274
-	// C'est le cas des itérateurs DATA qui acceptent tout
275
-	// et testent la présence du champ à l'exécution et non à la compilation
276
-	// car ils ne connaissent pas ici leurs contenus.
277
-	if (
278
-		/*$joker AND */
279
-		isset($desc['field']['*'])
280
-	) {
281
-		$joker = true; // indiquer a l'appelant
282
-		return [$nom_champ, $nom_champ];
283
-	}
284
-
285
-	$joker = false; // indiquer a l'appelant
286
-
287
-	// la table de jointure est explicitement indiquée (rubrique.titre)
288
-	if (preg_match('/^(.*)\.(.*)$/', $nom_champ, $r)) {
289
-		[, $_table, $_nom_champ] = $r;
290
-		if ($cle = trouver_jointure_champ($_nom_champ, $boucles[$idb], [$_table])) {
291
-			$_alias = $cle . '_' . $_nom_champ;
292
-			return index_exception(
293
-				$boucles[$idb],
294
-				$desc,
295
-				$_alias,
296
-				[$_table, $_nom_champ]
297
-			);
298
-		}
299
-		return ['', ''];
300
-	}
301
-
302
-	// pas d'alias, pas de champ, pas de joker...
303
-	// tenter via une jointure...
304
-
305
-	// regarder si le champ est deja dans une jointure existante
306
-	// sinon, si il y a des joitures explicites, la construire
307
-	if (!$t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb])) {
308
-		if ($boucles[$idb]->jointures_explicites) {
309
-			// [todo] Ne pas lancer que lorsque il y a des jointures explicites !!!!
310
-			// fonctionnel, il suffit d'utiliser $boucles[$idb]->jointures au lieu de jointures_explicites
311
-			// mais est-ce ce qu'on veut ?
312
-			$jointures = preg_split('/\s+/', $boucles[$idb]->jointures_explicites);
313
-			if ($cle = trouver_jointure_champ($nom_champ, $boucles[$idb], $jointures)) {
314
-				$t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb]);
315
-			}
316
-		}
317
-	}
318
-
319
-	if ($t) {
320
-		// si on a trouvé une jointure possible, on fait comme
321
-		// si c'était une exception pour le champ demandé
322
-		return index_exception(
323
-			$boucles[$idb],
324
-			$desc,
325
-			$nom_champ,
326
-			[$t[1]['id_table'], reset($t[2])]
327
-		);
328
-	}
329
-
330
-	return ['', ''];
240
+    $r = $boucles[$idb]->type_requete;
241
+    // boucle recursive, c'est foutu...
242
+    if ($r == TYPE_RECURSIF) {
243
+        return [];
244
+    }
245
+    if (!$r) {
246
+        $joker = false; // indiquer a l'appelant
247
+        # continuer pour chercher l'erreur suivante
248
+        return ["'#" . $r . ':' . $nom_champ . "'", ''];
249
+    }
250
+
251
+    $desc = $boucles[$idb]->show;
252
+    // le nom du champ est il une exception de la table ? un alias ?
253
+    $excep = $GLOBALS['exceptions_des_tables'][$r] ?? '';
254
+    if ($excep) {
255
+        $excep = $excep[$nom_champ] ?? '';
256
+    }
257
+
258
+    // il y a un alias connu pour ce champ
259
+    if ($excep) {
260
+        $joker = false; // indiquer a l'appelant
261
+        return index_exception($boucles[$idb], $desc, $nom_champ, $excep);
262
+    }
263
+
264
+    // le champ existe dans la table, on le prend.
265
+    if (isset($desc['field'][$nom_champ])) {
266
+        $t = $boucles[$idb]->id_table ?? '';
267
+        $joker = false; // indiquer a l'appelant
268
+        // note: dans certains cas ('valeur' d’une boucle DATA, sans id_table), retourne ['.valeur', 'valeur'] …
269
+        return ["$t.$nom_champ", $nom_champ];
270
+    }
271
+
272
+    // Tous les champs sont-ils acceptés ?
273
+    // Si oui, on retourne le champ, et on lève le flag joker
274
+    // C'est le cas des itérateurs DATA qui acceptent tout
275
+    // et testent la présence du champ à l'exécution et non à la compilation
276
+    // car ils ne connaissent pas ici leurs contenus.
277
+    if (
278
+        /*$joker AND */
279
+        isset($desc['field']['*'])
280
+    ) {
281
+        $joker = true; // indiquer a l'appelant
282
+        return [$nom_champ, $nom_champ];
283
+    }
284
+
285
+    $joker = false; // indiquer a l'appelant
286
+
287
+    // la table de jointure est explicitement indiquée (rubrique.titre)
288
+    if (preg_match('/^(.*)\.(.*)$/', $nom_champ, $r)) {
289
+        [, $_table, $_nom_champ] = $r;
290
+        if ($cle = trouver_jointure_champ($_nom_champ, $boucles[$idb], [$_table])) {
291
+            $_alias = $cle . '_' . $_nom_champ;
292
+            return index_exception(
293
+                $boucles[$idb],
294
+                $desc,
295
+                $_alias,
296
+                [$_table, $_nom_champ]
297
+            );
298
+        }
299
+        return ['', ''];
300
+    }
301
+
302
+    // pas d'alias, pas de champ, pas de joker...
303
+    // tenter via une jointure...
304
+
305
+    // regarder si le champ est deja dans une jointure existante
306
+    // sinon, si il y a des joitures explicites, la construire
307
+    if (!$t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb])) {
308
+        if ($boucles[$idb]->jointures_explicites) {
309
+            // [todo] Ne pas lancer que lorsque il y a des jointures explicites !!!!
310
+            // fonctionnel, il suffit d'utiliser $boucles[$idb]->jointures au lieu de jointures_explicites
311
+            // mais est-ce ce qu'on veut ?
312
+            $jointures = preg_split('/\s+/', $boucles[$idb]->jointures_explicites);
313
+            if ($cle = trouver_jointure_champ($nom_champ, $boucles[$idb], $jointures)) {
314
+                $t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb]);
315
+            }
316
+        }
317
+    }
318
+
319
+    if ($t) {
320
+        // si on a trouvé une jointure possible, on fait comme
321
+        // si c'était une exception pour le champ demandé
322
+        return index_exception(
323
+            $boucles[$idb],
324
+            $desc,
325
+            $nom_champ,
326
+            [$t[1]['id_table'], reset($t[2])]
327
+        );
328
+    }
329
+
330
+    return ['', ''];
331 331
 }
332 332
 
333 333
 
@@ -355,52 +355,52 @@  discard block
 block discarded – undo
355 355
  *     est une expression pour le SELECT de la boucle du style "mots.titre AS titre_mot"
356 356
  **/
357 357
 function index_exception(&$boucle, $desc, $nom_champ, $excep) {
358
-	static $trouver_table;
359
-	if (!$trouver_table) {
360
-		$trouver_table = charger_fonction('trouver_table', 'base');
361
-	}
362
-
363
-	if (is_array($excep)) {
364
-		// permettre aux plugins de gerer eux meme des jointures derogatoire ingerables
365
-		$t = null;
366
-		if (count($excep) == 3) {
367
-			$index_exception_derogatoire = array_pop($excep);
368
-			$t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
369
-		}
370
-		if ($t == null) {
371
-			[$e, $x] = $excep;  #PHP4 affecte de gauche a droite
372
-			$excep = $x;    #PHP5 de droite a gauche !
373
-			$j = $trouver_table($e, $boucle->sql_serveur);
374
-			if (!$j) {
375
-				return ['', ''];
376
-			}
377
-			$e = $j['table'];
378
-			if (!$t = array_search($e, $boucle->from)) {
379
-				$k = $j['key']['PRIMARY KEY'];
380
-				if (strpos($k, ',')) {
381
-					$l = (preg_split('/\s*,\s*/', $k));
382
-					$k = $desc['key']['PRIMARY KEY'];
383
-					if (!in_array($k, $l)) {
384
-						spip_log("jointure impossible $e " . join(',', $l));
385
-
386
-						return ['', ''];
387
-					}
388
-				}
389
-				$k = [$boucle->id_table, [$e], $k];
390
-				fabrique_jointures($boucle, [$k]);
391
-				$t = array_search($e, $boucle->from);
392
-			}
393
-		}
394
-	} else {
395
-		$t = $boucle->id_table;
396
-	}
397
-	// demander a SQL de gerer le synonyme
398
-	// ca permet que excep soit dynamique (Cedric, 2/3/06)
399
-	if ($excep != $nom_champ) {
400
-		$excep .= ' AS ' . $nom_champ;
401
-	}
402
-
403
-	return ["$t.$excep", $nom_champ];
358
+    static $trouver_table;
359
+    if (!$trouver_table) {
360
+        $trouver_table = charger_fonction('trouver_table', 'base');
361
+    }
362
+
363
+    if (is_array($excep)) {
364
+        // permettre aux plugins de gerer eux meme des jointures derogatoire ingerables
365
+        $t = null;
366
+        if (count($excep) == 3) {
367
+            $index_exception_derogatoire = array_pop($excep);
368
+            $t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
369
+        }
370
+        if ($t == null) {
371
+            [$e, $x] = $excep;  #PHP4 affecte de gauche a droite
372
+            $excep = $x;    #PHP5 de droite a gauche !
373
+            $j = $trouver_table($e, $boucle->sql_serveur);
374
+            if (!$j) {
375
+                return ['', ''];
376
+            }
377
+            $e = $j['table'];
378
+            if (!$t = array_search($e, $boucle->from)) {
379
+                $k = $j['key']['PRIMARY KEY'];
380
+                if (strpos($k, ',')) {
381
+                    $l = (preg_split('/\s*,\s*/', $k));
382
+                    $k = $desc['key']['PRIMARY KEY'];
383
+                    if (!in_array($k, $l)) {
384
+                        spip_log("jointure impossible $e " . join(',', $l));
385
+
386
+                        return ['', ''];
387
+                    }
388
+                }
389
+                $k = [$boucle->id_table, [$e], $k];
390
+                fabrique_jointures($boucle, [$k]);
391
+                $t = array_search($e, $boucle->from);
392
+            }
393
+        }
394
+    } else {
395
+        $t = $boucle->id_table;
396
+    }
397
+    // demander a SQL de gerer le synonyme
398
+    // ca permet que excep soit dynamique (Cedric, 2/3/06)
399
+    if ($excep != $nom_champ) {
400
+        $excep .= ' AS ' . $nom_champ;
401
+    }
402
+
403
+    return ["$t.$excep", $nom_champ];
404 404
 }
405 405
 
406 406
 /**
@@ -425,7 +425,7 @@  discard block
 block discarded – undo
425 425
  *     Code PHP pour retrouver le champ
426 426
  */
427 427
 function champ_sql($champ, $p, $defaut = null, $remonte_pile = true) {
428
-	return index_pile($p->id_boucle, $champ, $p->boucles, $p->nom_boucle, $defaut, $remonte_pile);
428
+    return index_pile($p->id_boucle, $champ, $p->boucles, $p->nom_boucle, $defaut, $remonte_pile);
429 429
 }
430 430
 
431 431
 
@@ -445,9 +445,9 @@  discard block
 block discarded – undo
445 445
  *     Code PHP pour d'exécution de la balise et de ses filtres
446 446
  **/
447 447
 function calculer_champ($p) {
448
-	$p = calculer_balise($p->nom_champ, $p);
448
+    $p = calculer_balise($p->nom_champ, $p);
449 449
 
450
-	return applique_filtres($p);
450
+    return applique_filtres($p);
451 451
 }
452 452
 
453 453
 
@@ -484,26 +484,26 @@  discard block
 block discarded – undo
484 484
  **/
485 485
 function calculer_balise(string $nom, \Champ $p): \Champ {
486 486
 
487
-	// S'agit-t-il d'une balise_XXXX[_dist]() ?
488
-	if ($f = charger_fonction($nom, 'balise', true)) {
489
-		$p->balise_calculee = true;
490
-		$res = $f($p);
491
-		if ($res !== null and is_object($res)) {
492
-			return $res;
493
-		}
494
-	}
495
-
496
-	// Certaines des balises comportant un _ sont generiques
497
-	if ($balise_generique = chercher_balise_generique($nom)) {
498
-		$res = $balise_generique['fonction_generique']($p);
499
-		if ($res !== null and is_object($res)) {
500
-			return $res;
501
-		}
502
-	}
503
-
504
-	$f = charger_fonction('DEFAUT', 'calculer_balise');
505
-
506
-	return $f($nom, $p);
487
+    // S'agit-t-il d'une balise_XXXX[_dist]() ?
488
+    if ($f = charger_fonction($nom, 'balise', true)) {
489
+        $p->balise_calculee = true;
490
+        $res = $f($p);
491
+        if ($res !== null and is_object($res)) {
492
+            return $res;
493
+        }
494
+    }
495
+
496
+    // Certaines des balises comportant un _ sont generiques
497
+    if ($balise_generique = chercher_balise_generique($nom)) {
498
+        $res = $balise_generique['fonction_generique']($p);
499
+        if ($res !== null and is_object($res)) {
500
+            return $res;
501
+        }
502
+    }
503
+
504
+    $f = charger_fonction('DEFAUT', 'calculer_balise');
505
+
506
+    return $f($nom, $p);
507 507
 }
508 508
 
509 509
 
@@ -531,37 +531,37 @@  discard block
 block discarded – undo
531 531
  **/
532 532
 function calculer_balise_DEFAUT_dist($nom, $p) {
533 533
 
534
-	// ca pourrait etre un champ SQL homonyme,
535
-	$p->code = index_pile($p->id_boucle, $nom, $p->boucles, $p->nom_boucle);
536
-
537
-	// compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
538
-	// il faut recracher {...} quand ce n'est finalement pas des args
539
-	if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
540
-		$code = addslashes($p->fonctions[0][1]);
541
-		$p->code .= " . '$code'";
542
-	}
543
-
544
-	// ne pas passer le filtre securite sur les id_xxx
545
-	if (strpos($nom, 'ID_') === 0) {
546
-		$p->interdire_scripts = false;
547
-	}
548
-
549
-	// Compatibilite ascendante avec les couleurs html (#FEFEFE) :
550
-	// SI le champ SQL n'est pas trouve
551
-	// ET si la balise a une forme de couleur
552
-	// ET s'il n'y a ni filtre ni etoile
553
-	// ALORS retourner la couleur.
554
-	// Ca permet si l'on veut vraiment de recuperer [(#ACCEDE*)]
555
-	if (
556
-		preg_match('/^[A-F]{1,6}$/i', $nom)
557
-		and !$p->etoile
558
-		and !$p->fonctions
559
-	) {
560
-		$p->code = "'#$nom'";
561
-		$p->interdire_scripts = false;
562
-	}
563
-
564
-	return $p;
534
+    // ca pourrait etre un champ SQL homonyme,
535
+    $p->code = index_pile($p->id_boucle, $nom, $p->boucles, $p->nom_boucle);
536
+
537
+    // compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
538
+    // il faut recracher {...} quand ce n'est finalement pas des args
539
+    if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
540
+        $code = addslashes($p->fonctions[0][1]);
541
+        $p->code .= " . '$code'";
542
+    }
543
+
544
+    // ne pas passer le filtre securite sur les id_xxx
545
+    if (strpos($nom, 'ID_') === 0) {
546
+        $p->interdire_scripts = false;
547
+    }
548
+
549
+    // Compatibilite ascendante avec les couleurs html (#FEFEFE) :
550
+    // SI le champ SQL n'est pas trouve
551
+    // ET si la balise a une forme de couleur
552
+    // ET s'il n'y a ni filtre ni etoile
553
+    // ALORS retourner la couleur.
554
+    // Ca permet si l'on veut vraiment de recuperer [(#ACCEDE*)]
555
+    if (
556
+        preg_match('/^[A-F]{1,6}$/i', $nom)
557
+        and !$p->etoile
558
+        and !$p->fonctions
559
+    ) {
560
+        $p->code = "'#$nom'";
561
+        $p->interdire_scripts = false;
562
+    }
563
+
564
+    return $p;
565 565
 }
566 566
 
567 567
 
@@ -609,53 +609,53 @@  discard block
 block discarded – undo
609 609
  **/
610 610
 function calculer_balise_dynamique($p, $nom, $l, $supp = []) {
611 611
 
612
-	if (!balise_distante_interdite($p)) {
613
-		$p->code = "''";
614
-
615
-		return $p;
616
-	}
617
-	// compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
618
-	// il faut recracher {...} quand ce n'est finalement pas des args
619
-	if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
620
-		$p->fonctions = [];
621
-	}
622
-
623
-	if ($p->param and ($c = $p->param[0])) {
624
-		// liste d'arguments commence toujours par la chaine vide
625
-		array_shift($c);
626
-		// construire la liste d'arguments comme pour un filtre
627
-		$param = compose_filtres_args($p, $c, ',');
628
-	} else {
629
-		$param = '';
630
-	}
631
-	$collecte = collecter_balise_dynamique($l, $p, $nom);
632
-
633
-	$dans_un_modele = false;
634
-	if (!empty($p->descr['sourcefile'])
635
-	  and $f = $p->descr['sourcefile']
636
-	  and basename(dirname($f)) === 'modeles'
637
-	) {
638
-		$dans_un_modele = true;
639
-	}
640
-
641
-	// un modele est toujours inséré en texte dans son contenant
642
-	// donc si on est dans le public avec un cache on va perdre le dynamisme
643
-	// et on risque de mettre en cache les valeurs pre-remplies du formulaire
644
-	// on passe donc par une fonction proxy qui si besoin va collecter les arguments
645
-	// et injecter le PHP qui va appeler la fonction pour generer le formulaire au lieu de directement la fonction
646
-	// (dans l'espace prive on a pas de cache, donc pas de soucis (et un leak serait moins grave))
647
-	$p->code = sprintf(
648
-		$dans_un_modele ? CODE_EXECUTER_BALISE_MODELE : CODE_EXECUTER_BALISE,
649
-		$nom,
650
-		join(',', $collecte),
651
-		($collecte ? $param : substr($param, 1)), # virer la virgule
652
-		memoriser_contexte_compil($p),
653
-		(!$supp ? '' : (', ' . join(',', $supp)))
654
-	);
655
-
656
-	$p->interdire_scripts = false;
657
-
658
-	return $p;
612
+    if (!balise_distante_interdite($p)) {
613
+        $p->code = "''";
614
+
615
+        return $p;
616
+    }
617
+    // compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
618
+    // il faut recracher {...} quand ce n'est finalement pas des args
619
+    if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
620
+        $p->fonctions = [];
621
+    }
622
+
623
+    if ($p->param and ($c = $p->param[0])) {
624
+        // liste d'arguments commence toujours par la chaine vide
625
+        array_shift($c);
626
+        // construire la liste d'arguments comme pour un filtre
627
+        $param = compose_filtres_args($p, $c, ',');
628
+    } else {
629
+        $param = '';
630
+    }
631
+    $collecte = collecter_balise_dynamique($l, $p, $nom);
632
+
633
+    $dans_un_modele = false;
634
+    if (!empty($p->descr['sourcefile'])
635
+      and $f = $p->descr['sourcefile']
636
+      and basename(dirname($f)) === 'modeles'
637
+    ) {
638
+        $dans_un_modele = true;
639
+    }
640
+
641
+    // un modele est toujours inséré en texte dans son contenant
642
+    // donc si on est dans le public avec un cache on va perdre le dynamisme
643
+    // et on risque de mettre en cache les valeurs pre-remplies du formulaire
644
+    // on passe donc par une fonction proxy qui si besoin va collecter les arguments
645
+    // et injecter le PHP qui va appeler la fonction pour generer le formulaire au lieu de directement la fonction
646
+    // (dans l'espace prive on a pas de cache, donc pas de soucis (et un leak serait moins grave))
647
+    $p->code = sprintf(
648
+        $dans_un_modele ? CODE_EXECUTER_BALISE_MODELE : CODE_EXECUTER_BALISE,
649
+        $nom,
650
+        join(',', $collecte),
651
+        ($collecte ? $param : substr($param, 1)), # virer la virgule
652
+        memoriser_contexte_compil($p),
653
+        (!$supp ? '' : (', ' . join(',', $supp)))
654
+    );
655
+
656
+    $p->interdire_scripts = false;
657
+
658
+    return $p;
659 659
 }
660 660
 
661 661
 
@@ -685,17 +685,17 @@  discard block
 block discarded – undo
685 685
  *     Liste des codes PHP d'éxecution des balises collectées
686 686
  **/
687 687
 function collecter_balise_dynamique(array $l, \Champ &$p, string $nom): array {
688
-	$args = [];
689
-	foreach ($l as $c) {
690
-		if ($c === null) {
691
-			$args[] = 'null';
692
-		} else {
693
-			$x = calculer_balise($c, $p);
694
-			$args[] = $x->code;
695
-		}
696
-	}
697
-
698
-	return $args;
688
+    $args = [];
689
+    foreach ($l as $c) {
690
+        if ($c === null) {
691
+            $args[] = 'null';
692
+        } else {
693
+            $x = calculer_balise($c, $p);
694
+            $args[] = $x->code;
695
+        }
696
+    }
697
+
698
+    return $args;
699 699
 }
700 700
 
701 701
 
@@ -710,22 +710,22 @@  discard block
 block discarded – undo
710 710
  *     Nom de la connexion
711 711
  **/
712 712
 function trouver_nom_serveur_distant($p) {
713
-	$nom = $p->id_boucle;
714
-	if (
715
-		$nom
716
-		and isset($p->boucles[$nom])
717
-	) {
718
-		$s = $p->boucles[$nom]->sql_serveur;
719
-		if (
720
-			strlen($s)
721
-			and strlen($serveur = strtolower($s))
722
-			and !in_array($serveur, $GLOBALS['exception_des_connect'])
723
-		) {
724
-			return $serveur;
725
-		}
726
-	}
727
-
728
-	return '';
713
+    $nom = $p->id_boucle;
714
+    if (
715
+        $nom
716
+        and isset($p->boucles[$nom])
717
+    ) {
718
+        $s = $p->boucles[$nom]->sql_serveur;
719
+        if (
720
+            strlen($s)
721
+            and strlen($serveur = strtolower($s))
722
+            and !in_array($serveur, $GLOBALS['exception_des_connect'])
723
+        ) {
724
+            return $serveur;
725
+        }
726
+    }
727
+
728
+    return '';
729 729
 }
730 730
 
731 731
 
@@ -749,15 +749,15 @@  discard block
 block discarded – undo
749 749
  *     - false : La balise est interdite car le serveur est distant
750 750
  **/
751 751
 function balise_distante_interdite($p) {
752
-	$nom = $p->id_boucle;
752
+    $nom = $p->id_boucle;
753 753
 
754
-	if ($nom and trouver_nom_serveur_distant($p)) {
755
-		spip_log($nom . ':' . $p->nom_champ . ' ' . _T('zbug_distant_interdit'));
754
+    if ($nom and trouver_nom_serveur_distant($p)) {
755
+        spip_log($nom . ':' . $p->nom_champ . ' ' . _T('zbug_distant_interdit'));
756 756
 
757
-		return false;
758
-	}
757
+        return false;
758
+    }
759 759
 
760
-	return true;
760
+    return true;
761 761
 }
762 762
 
763 763
 
@@ -767,84 +767,84 @@  discard block
 block discarded – undo
767 767
 //
768 768
 function champs_traitements($p) {
769 769
 
770
-	if (isset($GLOBALS['table_des_traitements'][$p->nom_champ])) {
771
-		$ps = $GLOBALS['table_des_traitements'][$p->nom_champ];
772
-	} else {
773
-		// quand on utilise un traitement catch-all *
774
-		// celui-ci ne s'applique pas sur les balises calculees qui peuvent gerer
775
-		// leur propre securite
776
-		if (!$p->balise_calculee) {
777
-			$ps = $GLOBALS['table_des_traitements']['*'];
778
-		} else {
779
-			$ps = false;
780
-		}
781
-	}
782
-
783
-	if (is_array($ps)) {
784
-		// Recuperer le type de boucle (articles, DATA) et la table SQL sur laquelle elle porte
785
-		$idb = index_boucle($p);
786
-		// si le champ a ete trouve dans une boucle parente sa source est renseignee ici
787
-		if (!empty($p->boucles[$idb]->index_champ[$p->nom_champ])) {
788
-			$idb = $p->boucles[$idb]->index_champ[$p->nom_champ];
789
-		}
790
-
791
-		// mais on peut aussi etre hors boucle. Se mefier.
792
-		$type_requete = $p->boucles[$idb]->type_requete ?? false;
793
-		$table_sql = $p->boucles[$idb]->show['table_sql'] ?? false;
794
-
795
-		// bien prendre en compte les alias de boucles (hierarchie => rubrique, syndication => syncdic, etc.)
796
-		if ($type_requete and isset($GLOBALS['table_des_tables'][$type_requete])) {
797
-			$type_alias = $type_requete;
798
-			$type_requete = $GLOBALS['table_des_tables'][$type_requete];
799
-		} else {
800
-			$type_alias = false;
801
-		}
802
-
803
-		// le traitement peut n'etre defini que pour une table en particulier "spip_articles"
804
-		if ($table_sql and isset($ps[$table_sql])) {
805
-			$ps = $ps[$table_sql];
806
-		} // ou pour une boucle en particulier "DATA","articles"
807
-		elseif ($type_requete and isset($ps[$type_requete])) {
808
-			$ps = $ps[$type_requete];
809
-		} // ou pour une boucle utilisant un alias ("hierarchie")
810
-		elseif ($type_alias and isset($ps[$type_alias])) {
811
-			$ps = $ps[$type_alias];
812
-		} // ou pour indifféremment quelle que soit la boucle
813
-		elseif (isset($ps[0])) {
814
-			$ps = $ps[0];
815
-		} else {
816
-			$ps = false;
817
-		}
818
-	}
819
-
820
-	if (!$ps) {
821
-		return $p->code;
822
-	}
823
-
824
-	// Si une boucle DOCUMENTS{doublons} est presente dans le squelette,
825
-	// ou si in INCLURE contient {doublons}
826
-	// on insere une fonction de remplissage du tableau des doublons
827
-	// dans les filtres propre() ou typo()
828
-	// (qui traitent les raccourcis <docXX> referencant les docs)
829
-
830
-	if (
831
-		isset($p->descr['documents'])
832
-		and
833
-		$p->descr['documents']
834
-		and (
835
-			(strpos($ps, 'propre') !== false)
836
-			or
837
-			(strpos($ps, 'typo') !== false)
838
-		)
839
-	) {
840
-		$ps = 'traiter_doublons_documents($doublons, ' . $ps . ')';
841
-	}
842
-
843
-	// La protection des champs par |safehtml est assuree par les extensions
844
-	// dans la declaration des traitements des champs sensibles
845
-
846
-	// Remplacer enfin le placeholder %s par le vrai code de la balise
847
-	return str_replace('%s', $p->code, $ps);
770
+    if (isset($GLOBALS['table_des_traitements'][$p->nom_champ])) {
771
+        $ps = $GLOBALS['table_des_traitements'][$p->nom_champ];
772
+    } else {
773
+        // quand on utilise un traitement catch-all *
774
+        // celui-ci ne s'applique pas sur les balises calculees qui peuvent gerer
775
+        // leur propre securite
776
+        if (!$p->balise_calculee) {
777
+            $ps = $GLOBALS['table_des_traitements']['*'];
778
+        } else {
779
+            $ps = false;
780
+        }
781
+    }
782
+
783
+    if (is_array($ps)) {
784
+        // Recuperer le type de boucle (articles, DATA) et la table SQL sur laquelle elle porte
785
+        $idb = index_boucle($p);
786
+        // si le champ a ete trouve dans une boucle parente sa source est renseignee ici
787
+        if (!empty($p->boucles[$idb]->index_champ[$p->nom_champ])) {
788
+            $idb = $p->boucles[$idb]->index_champ[$p->nom_champ];
789
+        }
790
+
791
+        // mais on peut aussi etre hors boucle. Se mefier.
792
+        $type_requete = $p->boucles[$idb]->type_requete ?? false;
793
+        $table_sql = $p->boucles[$idb]->show['table_sql'] ?? false;
794
+
795
+        // bien prendre en compte les alias de boucles (hierarchie => rubrique, syndication => syncdic, etc.)
796
+        if ($type_requete and isset($GLOBALS['table_des_tables'][$type_requete])) {
797
+            $type_alias = $type_requete;
798
+            $type_requete = $GLOBALS['table_des_tables'][$type_requete];
799
+        } else {
800
+            $type_alias = false;
801
+        }
802
+
803
+        // le traitement peut n'etre defini que pour une table en particulier "spip_articles"
804
+        if ($table_sql and isset($ps[$table_sql])) {
805
+            $ps = $ps[$table_sql];
806
+        } // ou pour une boucle en particulier "DATA","articles"
807
+        elseif ($type_requete and isset($ps[$type_requete])) {
808
+            $ps = $ps[$type_requete];
809
+        } // ou pour une boucle utilisant un alias ("hierarchie")
810
+        elseif ($type_alias and isset($ps[$type_alias])) {
811
+            $ps = $ps[$type_alias];
812
+        } // ou pour indifféremment quelle que soit la boucle
813
+        elseif (isset($ps[0])) {
814
+            $ps = $ps[0];
815
+        } else {
816
+            $ps = false;
817
+        }
818
+    }
819
+
820
+    if (!$ps) {
821
+        return $p->code;
822
+    }
823
+
824
+    // Si une boucle DOCUMENTS{doublons} est presente dans le squelette,
825
+    // ou si in INCLURE contient {doublons}
826
+    // on insere une fonction de remplissage du tableau des doublons
827
+    // dans les filtres propre() ou typo()
828
+    // (qui traitent les raccourcis <docXX> referencant les docs)
829
+
830
+    if (
831
+        isset($p->descr['documents'])
832
+        and
833
+        $p->descr['documents']
834
+        and (
835
+            (strpos($ps, 'propre') !== false)
836
+            or
837
+            (strpos($ps, 'typo') !== false)
838
+        )
839
+    ) {
840
+        $ps = 'traiter_doublons_documents($doublons, ' . $ps . ')';
841
+    }
842
+
843
+    // La protection des champs par |safehtml est assuree par les extensions
844
+    // dans la declaration des traitements des champs sensibles
845
+
846
+    // Remplacer enfin le placeholder %s par le vrai code de la balise
847
+    return str_replace('%s', $p->code, $ps);
848 848
 }
849 849
 
850 850
 
@@ -856,110 +856,110 @@  discard block
 block discarded – undo
856 856
 //
857 857
 function applique_filtres($p) {
858 858
 
859
-	// Traitements standards (cf. supra)
860
-	if ($p->etoile == '') {
861
-		$code = champs_traitements($p);
862
-	} else {
863
-		$code = $p->code;
864
-	}
859
+    // Traitements standards (cf. supra)
860
+    if ($p->etoile == '') {
861
+        $code = champs_traitements($p);
862
+    } else {
863
+        $code = $p->code;
864
+    }
865 865
 
866
-	// Appliquer les filtres perso
867
-	if ($p->param) {
868
-		$code = compose_filtres($p, $code);
869
-	}
866
+    // Appliquer les filtres perso
867
+    if ($p->param) {
868
+        $code = compose_filtres($p, $code);
869
+    }
870 870
 
871
-	// S'il y a un lien avec la session, ajouter un code qui levera
872
-	// un drapeau dans la structure d'invalidation $Cache
873
-	if (isset($p->descr['session'])) {
874
-		$code = "invalideur_session(\$Cache, $code)";
875
-	}
871
+    // S'il y a un lien avec la session, ajouter un code qui levera
872
+    // un drapeau dans la structure d'invalidation $Cache
873
+    if (isset($p->descr['session'])) {
874
+        $code = "invalideur_session(\$Cache, $code)";
875
+    }
876 876
 
877
-	$code = sandbox_composer_interdire_scripts($code, $p);
877
+    $code = sandbox_composer_interdire_scripts($code, $p);
878 878
 
879
-	return $code;
879
+    return $code;
880 880
 }
881 881
 
882 882
 // Cf. function pipeline dans ecrire/inc_utils.php
883 883
 function compose_filtres(&$p, $code) {
884 884
 
885
-	$image_miette = false;
886
-	foreach ($p->param as $filtre) {
887
-		$fonc = array_shift($filtre);
888
-		if (!$fonc) {
889
-			continue;
890
-		} // normalement qu'au premier tour.
891
-		$is_filtre_image = ((substr($fonc, 0, 6) == 'image_') and $fonc != 'image_graver');
892
-		if ($image_miette and !$is_filtre_image) {
893
-			// il faut graver maintenant car apres le filtre en cours
894
-			// on est pas sur d'avoir encore le nom du fichier dans le pipe
895
-			$code = "filtrer('image_graver', $code)";
896
-			$image_miette = false;
897
-		}
898
-
899
-		// recuperer les arguments du filtre,
900
-		// a separer par "," ou ":" dans le cas du filtre "?{a,b}"
901
-		$countfiltre = is_countable($filtre) ? count($filtre) : 0;
902
-		if ($fonc !== '?') {
903
-			$sep = ',';
904
-		} else {
905
-			$sep = ':';
906
-			// |?{a,b} *doit* avoir exactement 2 arguments ; on les force
907
-			if ($countfiltre != 2) {
908
-				$filtre = [$filtre[0] ?? '', $filtre[1] ?? ''];
909
-				$countfiltre = 2;
910
-			}
911
-		}
912
-		$arglist = compose_filtres_args($p, $filtre, $sep);
913
-		$logique = filtre_logique($fonc, $code, substr($arglist, 1));
914
-		if ($logique) {
915
-			$code = $logique;
916
-		} else {
917
-			$code = sandbox_composer_filtre($fonc, $code, $arglist, $p, $countfiltre);
918
-			if ($is_filtre_image) {
919
-				$image_miette = true;
920
-			}
921
-		}
922
-	}
923
-	// ramasser les images intermediaires inutiles et graver l'image finale
924
-	if ($image_miette) {
925
-		$code = "filtrer('image_graver',$code)";
926
-	}
927
-
928
-	return $code;
885
+    $image_miette = false;
886
+    foreach ($p->param as $filtre) {
887
+        $fonc = array_shift($filtre);
888
+        if (!$fonc) {
889
+            continue;
890
+        } // normalement qu'au premier tour.
891
+        $is_filtre_image = ((substr($fonc, 0, 6) == 'image_') and $fonc != 'image_graver');
892
+        if ($image_miette and !$is_filtre_image) {
893
+            // il faut graver maintenant car apres le filtre en cours
894
+            // on est pas sur d'avoir encore le nom du fichier dans le pipe
895
+            $code = "filtrer('image_graver', $code)";
896
+            $image_miette = false;
897
+        }
898
+
899
+        // recuperer les arguments du filtre,
900
+        // a separer par "," ou ":" dans le cas du filtre "?{a,b}"
901
+        $countfiltre = is_countable($filtre) ? count($filtre) : 0;
902
+        if ($fonc !== '?') {
903
+            $sep = ',';
904
+        } else {
905
+            $sep = ':';
906
+            // |?{a,b} *doit* avoir exactement 2 arguments ; on les force
907
+            if ($countfiltre != 2) {
908
+                $filtre = [$filtre[0] ?? '', $filtre[1] ?? ''];
909
+                $countfiltre = 2;
910
+            }
911
+        }
912
+        $arglist = compose_filtres_args($p, $filtre, $sep);
913
+        $logique = filtre_logique($fonc, $code, substr($arglist, 1));
914
+        if ($logique) {
915
+            $code = $logique;
916
+        } else {
917
+            $code = sandbox_composer_filtre($fonc, $code, $arglist, $p, $countfiltre);
918
+            if ($is_filtre_image) {
919
+                $image_miette = true;
920
+            }
921
+        }
922
+    }
923
+    // ramasser les images intermediaires inutiles et graver l'image finale
924
+    if ($image_miette) {
925
+        $code = "filtrer('image_graver',$code)";
926
+    }
927
+
928
+    return $code;
929 929
 }
930 930
 
931 931
 // Filtres et,ou,oui,non,sinon,xou,xor,and,or,not,yes
932 932
 // et comparateurs
933 933
 function filtre_logique($fonc, $code, $arg) {
934 934
 
935
-	switch (true) {
936
-		case in_array($fonc, $GLOBALS['table_criteres_infixes']):
937
-			return "($code $fonc $arg)";
938
-		case ($fonc == 'and') or ($fonc == 'et'):
939
-			return "((($code) AND ($arg)) ?' ' :'')";
940
-		case ($fonc == 'or') or ($fonc == 'ou'):
941
-			return "((($code) OR ($arg)) ?' ' :'')";
942
-		case ($fonc == 'xor') or ($fonc == 'xou'):
943
-			return "((($code) XOR ($arg)) ?' ' :'')";
944
-		case ($fonc == 'sinon'):
945
-			return "(((\$a = $code) OR (is_string(\$a) AND strlen(\$a))) ? \$a : $arg)";
946
-		case ($fonc == 'not') or ($fonc == 'non'):
947
-			return "(($code) ?'' :' ')";
948
-		case ($fonc == 'yes') or ($fonc == 'oui'):
949
-			return "(($code) ?' ' :'')";
950
-	}
951
-
952
-	return '';
935
+    switch (true) {
936
+        case in_array($fonc, $GLOBALS['table_criteres_infixes']):
937
+            return "($code $fonc $arg)";
938
+        case ($fonc == 'and') or ($fonc == 'et'):
939
+            return "((($code) AND ($arg)) ?' ' :'')";
940
+        case ($fonc == 'or') or ($fonc == 'ou'):
941
+            return "((($code) OR ($arg)) ?' ' :'')";
942
+        case ($fonc == 'xor') or ($fonc == 'xou'):
943
+            return "((($code) XOR ($arg)) ?' ' :'')";
944
+        case ($fonc == 'sinon'):
945
+            return "(((\$a = $code) OR (is_string(\$a) AND strlen(\$a))) ? \$a : $arg)";
946
+        case ($fonc == 'not') or ($fonc == 'non'):
947
+            return "(($code) ?'' :' ')";
948
+        case ($fonc == 'yes') or ($fonc == 'oui'):
949
+            return "(($code) ?' ' :'')";
950
+    }
951
+
952
+    return '';
953 953
 }
954 954
 
955 955
 function compose_filtres_args($p, $args, $sep) {
956
-	$arglist = '';
957
-	foreach ($args as $arg) {
958
-		$arglist .= $sep .
959
-			calculer_liste($arg, $p->descr, $p->boucles, $p->id_boucle);
960
-	}
956
+    $arglist = '';
957
+    foreach ($args as $arg) {
958
+        $arglist .= $sep .
959
+            calculer_liste($arg, $p->descr, $p->boucles, $p->id_boucle);
960
+    }
961 961
 
962
-	return $arglist;
962
+    return $arglist;
963 963
 }
964 964
 
965 965
 
@@ -977,15 +977,15 @@  discard block
 block discarded – undo
977 977
  **/
978 978
 function calculer_argument_precedent($idb, $nom_champ, &$boucles, $defaut = null) {
979 979
 
980
-	// si recursif, forcer l'extraction du champ SQL mais ignorer le code
981
-	if ($boucles[$idb]->externe) {
982
-		index_pile($idb, $nom_champ, $boucles, '', $defaut);
983
-		// retourner $Pile[$SP] et pas $Pile[0] si recursion en 1ere boucle
984
-		// on ignore le defaut fourni dans ce cas
985
-		$defaut = "(\$Pile[\$SP]['$nom_champ'] ?? null)";
986
-	}
980
+    // si recursif, forcer l'extraction du champ SQL mais ignorer le code
981
+    if ($boucles[$idb]->externe) {
982
+        index_pile($idb, $nom_champ, $boucles, '', $defaut);
983
+        // retourner $Pile[$SP] et pas $Pile[0] si recursion en 1ere boucle
984
+        // on ignore le defaut fourni dans ce cas
985
+        $defaut = "(\$Pile[\$SP]['$nom_champ'] ?? null)";
986
+    }
987 987
 
988
-	return index_pile($boucles[$idb]->id_parent, $nom_champ, $boucles, '', $defaut);
988
+    return index_pile($boucles[$idb]->id_parent, $nom_champ, $boucles, '', $defaut);
989 989
 }
990 990
 
991 991
 //
@@ -999,30 +999,30 @@  discard block
 block discarded – undo
999 999
 //
1000 1000
 
1001 1001
 function rindex_pile($p, $champ, $motif) {
1002
-	$n = 0;
1003
-	$b = $p->id_boucle;
1004
-	$p->code = '';
1005
-	while ($b != '') {
1006
-		foreach ($p->boucles[$b]->criteres as $critere) {
1007
-			if ($critere->op == $motif) {
1008
-				$p->code = '$Pile[$SP' . (($n == 0) ? '' : "-$n") .
1009
-					"]['$champ']";
1010
-				$b = '';
1011
-				break 2;
1012
-			}
1013
-		}
1014
-		$n++;
1015
-		$b = $p->boucles[$b]->id_parent;
1016
-	}
1017
-
1018
-	// si on est hors d'une boucle de {recherche}, cette balise est vide
1019
-	if (!$p->code) {
1020
-		$p->code = "''";
1021
-	}
1022
-
1023
-	$p->interdire_scripts = false;
1024
-
1025
-	return $p;
1002
+    $n = 0;
1003
+    $b = $p->id_boucle;
1004
+    $p->code = '';
1005
+    while ($b != '') {
1006
+        foreach ($p->boucles[$b]->criteres as $critere) {
1007
+            if ($critere->op == $motif) {
1008
+                $p->code = '$Pile[$SP' . (($n == 0) ? '' : "-$n") .
1009
+                    "]['$champ']";
1010
+                $b = '';
1011
+                break 2;
1012
+            }
1013
+        }
1014
+        $n++;
1015
+        $b = $p->boucles[$b]->id_parent;
1016
+    }
1017
+
1018
+    // si on est hors d'une boucle de {recherche}, cette balise est vide
1019
+    if (!$p->code) {
1020
+        $p->code = "''";
1021
+    }
1022
+
1023
+    $p->interdire_scripts = false;
1024
+
1025
+    return $p;
1026 1026
 }
1027 1027
 
1028 1028
 /**
@@ -1032,7 +1032,7 @@  discard block
 block discarded – undo
1032 1032
  * @return string Nom de la balise, avec indication de boucle explicite si présent.
1033 1033
  */
1034 1034
 function zbug_presenter_champ($p, $champ = '') {
1035
-	$balise = $champ ?: $p->nom_champ;
1036
-	$explicite = $p->nom_boucle ? $p->nom_boucle . ':' : '';
1037
-	return "#{$explicite}{$balise}";
1035
+    $balise = $champ ?: $p->nom_champ;
1036
+    $explicite = $p->nom_boucle ? $p->nom_boucle . ':' : '';
1037
+    return "#{$explicite}{$balise}";
1038 1038
 }
Please login to merge, or discard this patch.
ecrire/src/Chiffrer/Chiffrement.php 2 patches
Indentation   +70 added lines, -70 removed lines patch added patch discarded remove patch
@@ -19,78 +19,78 @@
 block discarded – undo
19 19
  * @link https://www.php.net/manual/fr/book.sodium.php
20 20
  */
21 21
 class Chiffrement {
22
-	/** Chiffre un message en utilisant une clé ou un mot de passe */
23
-	public static function chiffrer(
24
-		string $message,
25
-		#[\SensitiveParameter]
26
-		string $key
27
-	): ?string {
28
-		// create a random salt for key derivation
29
-		$salt = random_bytes(SODIUM_CRYPTO_PWHASH_SALTBYTES);
30
-		$key = self::deriveKeyFromPassword($key, $salt);
31
-		$nonce = random_bytes(\SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
32
-		$padded_message = sodium_pad($message, 16);
33
-		$encrypted = sodium_crypto_secretbox($padded_message, $nonce, $key);
34
-		$encoded = base64_encode($salt . $nonce . $encrypted);
35
-		sodium_memzero($key);
36
-		sodium_memzero($nonce);
37
-		sodium_memzero($salt);
38
-		#spip_log("chiffrer($message)=$encoded", 'chiffrer' . _LOG_DEBUG);
39
-		return $encoded;
40
-	}
22
+    /** Chiffre un message en utilisant une clé ou un mot de passe */
23
+    public static function chiffrer(
24
+        string $message,
25
+        #[\SensitiveParameter]
26
+        string $key
27
+    ): ?string {
28
+        // create a random salt for key derivation
29
+        $salt = random_bytes(SODIUM_CRYPTO_PWHASH_SALTBYTES);
30
+        $key = self::deriveKeyFromPassword($key, $salt);
31
+        $nonce = random_bytes(\SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
32
+        $padded_message = sodium_pad($message, 16);
33
+        $encrypted = sodium_crypto_secretbox($padded_message, $nonce, $key);
34
+        $encoded = base64_encode($salt . $nonce . $encrypted);
35
+        sodium_memzero($key);
36
+        sodium_memzero($nonce);
37
+        sodium_memzero($salt);
38
+        #spip_log("chiffrer($message)=$encoded", 'chiffrer' . _LOG_DEBUG);
39
+        return $encoded;
40
+    }
41 41
 
42
-	/** Déchiffre un message en utilisant une clé ou un mot de passe */
43
-	public static function dechiffrer(
44
-		string $encoded,
45
-		#[\SensitiveParameter]
46
-		string $key
47
-	): ?string {
48
-		$decoded = base64_decode($encoded);
49
-		$salt = substr($decoded, 0, \SODIUM_CRYPTO_PWHASH_SALTBYTES);
50
-		$nonce = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES, \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
51
-		$encrypted = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES + \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
52
-		$key = self::deriveKeyFromPassword($key, $salt);
53
-		$padded_message = sodium_crypto_secretbox_open($encrypted, $nonce, $key);
54
-		sodium_memzero($key);
55
-		sodium_memzero($nonce);
56
-		sodium_memzero($salt);
57
-		if ($padded_message === false) {
58
-			spip_log("dechiffrer() chiffre corrompu `$encoded`", 'chiffrer' . _LOG_DEBUG);
59
-			return null;
60
-		}
61
-		$message = sodium_unpad($padded_message, 16);
62
-		#spip_log("dechiffrer($encoded)=$message", 'chiffrer' . _LOG_DEBUG);
63
-		return $message;
64
-	}
42
+    /** Déchiffre un message en utilisant une clé ou un mot de passe */
43
+    public static function dechiffrer(
44
+        string $encoded,
45
+        #[\SensitiveParameter]
46
+        string $key
47
+    ): ?string {
48
+        $decoded = base64_decode($encoded);
49
+        $salt = substr($decoded, 0, \SODIUM_CRYPTO_PWHASH_SALTBYTES);
50
+        $nonce = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES, \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
51
+        $encrypted = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES + \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
52
+        $key = self::deriveKeyFromPassword($key, $salt);
53
+        $padded_message = sodium_crypto_secretbox_open($encrypted, $nonce, $key);
54
+        sodium_memzero($key);
55
+        sodium_memzero($nonce);
56
+        sodium_memzero($salt);
57
+        if ($padded_message === false) {
58
+            spip_log("dechiffrer() chiffre corrompu `$encoded`", 'chiffrer' . _LOG_DEBUG);
59
+            return null;
60
+        }
61
+        $message = sodium_unpad($padded_message, 16);
62
+        #spip_log("dechiffrer($encoded)=$message", 'chiffrer' . _LOG_DEBUG);
63
+        return $message;
64
+    }
65 65
 
66
-	/** Génère une clé de la taille attendue pour le chiffrement */
67
-	public static function keygen(): string {
68
-		return sodium_crypto_secretbox_keygen();
69
-	}
66
+    /** Génère une clé de la taille attendue pour le chiffrement */
67
+    public static function keygen(): string {
68
+        return sodium_crypto_secretbox_keygen();
69
+    }
70 70
 
71
-	/**
72
-	 * Retourne une clé de la taille attendue pour le chiffrement
73
-	 *
74
-	 * Notamment si on utilise un mot de passe comme clé, il faut le hacher
75
-	 * pour servir de clé à la taille correspondante.
76
-	 */
77
-	private static function deriveKeyFromPassword(
78
-		#[\SensitiveParameter]
79
-		string $password,
80
-		string $salt
81
-	): string {
82
-		if (strlen($password) === \SODIUM_CRYPTO_SECRETBOX_KEYBYTES) {
83
-			return $password;
84
-		}
85
-		$key = sodium_crypto_pwhash(
86
-			\SODIUM_CRYPTO_SECRETBOX_KEYBYTES,
87
-			$password,
88
-			$salt,
89
-			\SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
90
-			\SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
91
-		);
92
-		sodium_memzero($password);
71
+    /**
72
+     * Retourne une clé de la taille attendue pour le chiffrement
73
+     *
74
+     * Notamment si on utilise un mot de passe comme clé, il faut le hacher
75
+     * pour servir de clé à la taille correspondante.
76
+     */
77
+    private static function deriveKeyFromPassword(
78
+        #[\SensitiveParameter]
79
+        string $password,
80
+        string $salt
81
+    ): string {
82
+        if (strlen($password) === \SODIUM_CRYPTO_SECRETBOX_KEYBYTES) {
83
+            return $password;
84
+        }
85
+        $key = sodium_crypto_pwhash(
86
+            \SODIUM_CRYPTO_SECRETBOX_KEYBYTES,
87
+            $password,
88
+            $salt,
89
+            \SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
90
+            \SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
91
+        );
92
+        sodium_memzero($password);
93 93
 
94
-		return $key;
95
-	}
94
+        return $key;
95
+    }
96 96
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
 		$nonce = random_bytes(\SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
32 32
 		$padded_message = sodium_pad($message, 16);
33 33
 		$encrypted = sodium_crypto_secretbox($padded_message, $nonce, $key);
34
-		$encoded = base64_encode($salt . $nonce . $encrypted);
34
+		$encoded = base64_encode($salt.$nonce.$encrypted);
35 35
 		sodium_memzero($key);
36 36
 		sodium_memzero($nonce);
37 37
 		sodium_memzero($salt);
@@ -48,14 +48,14 @@  discard block
 block discarded – undo
48 48
 		$decoded = base64_decode($encoded);
49 49
 		$salt = substr($decoded, 0, \SODIUM_CRYPTO_PWHASH_SALTBYTES);
50 50
 		$nonce = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES, \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
51
-		$encrypted = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES + \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
51
+		$encrypted = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES +\SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
52 52
 		$key = self::deriveKeyFromPassword($key, $salt);
53 53
 		$padded_message = sodium_crypto_secretbox_open($encrypted, $nonce, $key);
54 54
 		sodium_memzero($key);
55 55
 		sodium_memzero($nonce);
56 56
 		sodium_memzero($salt);
57 57
 		if ($padded_message === false) {
58
-			spip_log("dechiffrer() chiffre corrompu `$encoded`", 'chiffrer' . _LOG_DEBUG);
58
+			spip_log("dechiffrer() chiffre corrompu `$encoded`", 'chiffrer'._LOG_DEBUG);
59 59
 			return null;
60 60
 		}
61 61
 		$message = sodium_unpad($padded_message, 16);
Please login to merge, or discard this patch.
ecrire/lang/spip_it.php 1 patch
Indentation   +669 added lines, -669 removed lines patch added patch discarded remove patch
@@ -4,248 +4,248 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'access_interface_graphique' => 'Ritorna all’interfaccia grafica completa',
14
-	'access_mode_texte' => 'Visualizza l’interfaccia testuale semplificata',
15
-	'admin_debug' => 'debug',
16
-	'admin_modifier_article' => 'Modifica l’articolo',
17
-	'admin_modifier_auteur' => 'Modifica l’autore',
18
-	'admin_modifier_breve' => 'Modifica la breve',
19
-	'admin_modifier_mot' => 'Modifica la parola chiave',
20
-	'admin_modifier_rubrique' => 'Modifica la rubrica',
21
-	'admin_recalculer' => 'Rigenera la pagina',
22
-	'afficher_calendrier' => 'Mostra il calendario',
23
-	'afficher_trad' => 'visualizzare le traduzioni',
24
-	'alerte_maj_impossible' => '<b>Attenzione!</b> L’aggiornamento del database SQL alla versione @version@ è impossibile, forse a causa di un problema con i diritti di modifica nel database. Contattare il proprio fornitore di hosting.',
25
-	'alerte_modif_info_concourante' => 'ATTENZIONE: Questa informazione è stata modificata altrove. Il valore attuale è:',
26
-	'analyse_xml' => 'Analisi XML',
27
-	'annuler' => 'Annulla',
28
-	'antispam_champ_vide' => 'Si prega di lasciare vuoto questo campo:',
29
-	'articles_recents' => 'Articoli più recenti',
30
-	'attention_champ_mini_nb_caractères' => 'Attenzione! Minimo @nb@ caratteri',
31
-	'avis_1_erreur_saisie' => 'C’è un errore nell’input, verificare le informazioni.',
32
-	'avis_archive_incorrect' => 'il file archivio non è un file SPIP',
33
-	'avis_archive_invalide' => 'il file archivio non è valido',
34
-	'avis_attention' => 'ATTENZIONE!',
35
-	'avis_champ_incorrect_type_objet' => 'Nome di campo errato @name@ per oggetto di tipo @type@',
36
-	'avis_colonne_inexistante' => 'La colonna @col@ non esiste',
37
-	'avis_erreur' => 'Errore: vedi sopra',
38
-	'avis_erreur_connexion' => 'Errore di connessione',
39
-	'avis_erreur_cookie' => 'problema di cookie',
40
-	'avis_erreur_fonction_contexte' => 'Errore di programmazione. Questa funzione non deve essere chiamata in questo contesto.',
41
-	'avis_erreur_mysql' => 'Errore SQL ',
42
-	'avis_erreur_sauvegarde' => 'Errore nel salvataggio (@type@ @id_objet@)! ',
43
-	'avis_erreur_visiteur' => 'Problema di accesso all’area riservata',
44
-	'avis_nb_erreurs_saisie' => 'Ci sono @nb@ errori nell’input, verificare le informazioni.',
12
+    // A
13
+    'access_interface_graphique' => 'Ritorna all’interfaccia grafica completa',
14
+    'access_mode_texte' => 'Visualizza l’interfaccia testuale semplificata',
15
+    'admin_debug' => 'debug',
16
+    'admin_modifier_article' => 'Modifica l’articolo',
17
+    'admin_modifier_auteur' => 'Modifica l’autore',
18
+    'admin_modifier_breve' => 'Modifica la breve',
19
+    'admin_modifier_mot' => 'Modifica la parola chiave',
20
+    'admin_modifier_rubrique' => 'Modifica la rubrica',
21
+    'admin_recalculer' => 'Rigenera la pagina',
22
+    'afficher_calendrier' => 'Mostra il calendario',
23
+    'afficher_trad' => 'visualizzare le traduzioni',
24
+    'alerte_maj_impossible' => '<b>Attenzione!</b> L’aggiornamento del database SQL alla versione @version@ è impossibile, forse a causa di un problema con i diritti di modifica nel database. Contattare il proprio fornitore di hosting.',
25
+    'alerte_modif_info_concourante' => 'ATTENZIONE: Questa informazione è stata modificata altrove. Il valore attuale è:',
26
+    'analyse_xml' => 'Analisi XML',
27
+    'annuler' => 'Annulla',
28
+    'antispam_champ_vide' => 'Si prega di lasciare vuoto questo campo:',
29
+    'articles_recents' => 'Articoli più recenti',
30
+    'attention_champ_mini_nb_caractères' => 'Attenzione! Minimo @nb@ caratteri',
31
+    'avis_1_erreur_saisie' => 'C’è un errore nell’input, verificare le informazioni.',
32
+    'avis_archive_incorrect' => 'il file archivio non è un file SPIP',
33
+    'avis_archive_invalide' => 'il file archivio non è valido',
34
+    'avis_attention' => 'ATTENZIONE!',
35
+    'avis_champ_incorrect_type_objet' => 'Nome di campo errato @name@ per oggetto di tipo @type@',
36
+    'avis_colonne_inexistante' => 'La colonna @col@ non esiste',
37
+    'avis_erreur' => 'Errore: vedi sopra',
38
+    'avis_erreur_connexion' => 'Errore di connessione',
39
+    'avis_erreur_cookie' => 'problema di cookie',
40
+    'avis_erreur_fonction_contexte' => 'Errore di programmazione. Questa funzione non deve essere chiamata in questo contesto.',
41
+    'avis_erreur_mysql' => 'Errore SQL ',
42
+    'avis_erreur_sauvegarde' => 'Errore nel salvataggio (@type@ @id_objet@)! ',
43
+    'avis_erreur_visiteur' => 'Problema di accesso all’area riservata',
44
+    'avis_nb_erreurs_saisie' => 'Ci sono @nb@ errori nell’input, verificare le informazioni.',
45 45
 
46
-	// B
47
-	'barre_a_accent_grave' => 'Inserire una A maiscola con accento grave',
48
-	'barre_aide' => 'Utilizzare le scorciatoie tipografiche di SPIP per migliorare l\\’impaginazione del testo',
49
-	'barre_e_accent_aigu' => 'Inserire una E maiscola con accento acuto',
50
-	'barre_eo' => 'Inserire una E nell’O',
51
-	'barre_eo_maj' => 'Inserire una E nell’O maiuscola',
52
-	'barre_euro' => 'Inserire il simbolo €',
53
-	'barre_gras' => 'Formattare in {{grassetto}}',
54
-	'barre_guillemets' => 'Porre il testo fra « virgolette basse francesi »',
55
-	'barre_guillemets_simples' => 'Porre il testo fra „virgolette“',
56
-	'barre_intertitre' => 'Trasformare in {{{titolo di paragrafo}}}',
57
-	'barre_italic' => 'Formattare in {corsivo}',
58
-	'barre_lien' => 'Trasformare in un [link ipertestuale->http://...]',
59
-	'barre_lien_input' => 'Indicare l’indirizzo del link (è possibile indicare l’indirizzo Web come http://www.ilmiosito.com o semplicemente indicare il numero di un singolo articolo).',
60
-	'barre_note' => 'Trasformare in [[Nota a fondo pagina]]',
61
-	'barre_paragraphe' => 'Crea un paragrafo',
62
-	'barre_quote' => '<quote>Citare un messaggio</quote>',
63
-	'bouton_changer' => 'Cambia',
64
-	'bouton_chercher' => 'Cerca',
65
-	'bouton_choisir' => 'Scegli',
66
-	'bouton_deplacer' => 'Sposta',
67
-	'bouton_download' => 'Download',
68
-	'bouton_enregistrer' => 'Salva',
69
-	'bouton_radio_desactiver_messagerie_interne' => 'Disattiva la messaggistica interna',
70
-	'bouton_radio_envoi_annonces' => 'Invia gli annunci editoriali',
71
-	'bouton_radio_non_envoi_annonces' => 'Non inviare annunci',
72
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Non inviare l’elenco delle novità',
73
-	'bouton_recharger_page' => 'ricaricare questa pagina',
74
-	'bouton_telecharger' => 'Upload',
75
-	'bouton_upload' => 'Upload',
76
-	'bouton_valider' => 'Invia',
46
+    // B
47
+    'barre_a_accent_grave' => 'Inserire una A maiscola con accento grave',
48
+    'barre_aide' => 'Utilizzare le scorciatoie tipografiche di SPIP per migliorare l\\’impaginazione del testo',
49
+    'barre_e_accent_aigu' => 'Inserire una E maiscola con accento acuto',
50
+    'barre_eo' => 'Inserire una E nell’O',
51
+    'barre_eo_maj' => 'Inserire una E nell’O maiuscola',
52
+    'barre_euro' => 'Inserire il simbolo €',
53
+    'barre_gras' => 'Formattare in {{grassetto}}',
54
+    'barre_guillemets' => 'Porre il testo fra « virgolette basse francesi »',
55
+    'barre_guillemets_simples' => 'Porre il testo fra „virgolette“',
56
+    'barre_intertitre' => 'Trasformare in {{{titolo di paragrafo}}}',
57
+    'barre_italic' => 'Formattare in {corsivo}',
58
+    'barre_lien' => 'Trasformare in un [link ipertestuale->http://...]',
59
+    'barre_lien_input' => 'Indicare l’indirizzo del link (è possibile indicare l’indirizzo Web come http://www.ilmiosito.com o semplicemente indicare il numero di un singolo articolo).',
60
+    'barre_note' => 'Trasformare in [[Nota a fondo pagina]]',
61
+    'barre_paragraphe' => 'Crea un paragrafo',
62
+    'barre_quote' => '<quote>Citare un messaggio</quote>',
63
+    'bouton_changer' => 'Cambia',
64
+    'bouton_chercher' => 'Cerca',
65
+    'bouton_choisir' => 'Scegli',
66
+    'bouton_deplacer' => 'Sposta',
67
+    'bouton_download' => 'Download',
68
+    'bouton_enregistrer' => 'Salva',
69
+    'bouton_radio_desactiver_messagerie_interne' => 'Disattiva la messaggistica interna',
70
+    'bouton_radio_envoi_annonces' => 'Invia gli annunci editoriali',
71
+    'bouton_radio_non_envoi_annonces' => 'Non inviare annunci',
72
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Non inviare l’elenco delle novità',
73
+    'bouton_recharger_page' => 'ricaricare questa pagina',
74
+    'bouton_telecharger' => 'Upload',
75
+    'bouton_upload' => 'Upload',
76
+    'bouton_valider' => 'Invia',
77 77
 
78
-	// C
79
-	'cal_apresmidi' => 'pomeriggio',
80
-	'cal_jour_entier' => 'giorno intero',
81
-	'cal_matin' => 'mattina',
82
-	'cal_par_jour' => 'calendario giornaliero',
83
-	'cal_par_mois' => 'calendario mensile',
84
-	'cal_par_semaine' => 'calendario settimanale',
85
-	'choix_couleur_interface' => 'colore',
86
-	'choix_interface' => 'scelta dell’interfaccia',
87
-	'colonne' => 'Colonna',
88
-	'confirm_changer_statut' => 'Attenzione, è stato chiesto di modificare lo status di questo elemento. Continuare?',
89
-	'correcte' => 'corretto',
78
+    // C
79
+    'cal_apresmidi' => 'pomeriggio',
80
+    'cal_jour_entier' => 'giorno intero',
81
+    'cal_matin' => 'mattina',
82
+    'cal_par_jour' => 'calendario giornaliero',
83
+    'cal_par_mois' => 'calendario mensile',
84
+    'cal_par_semaine' => 'calendario settimanale',
85
+    'choix_couleur_interface' => 'colore',
86
+    'choix_interface' => 'scelta dell’interfaccia',
87
+    'colonne' => 'Colonna',
88
+    'confirm_changer_statut' => 'Attenzione, è stato chiesto di modificare lo status di questo elemento. Continuare?',
89
+    'correcte' => 'corretto',
90 90
 
91
-	// D
92
-	'date_aujourdhui' => 'oggi',
93
-	'date_avant_jc' => 'a.C.',
94
-	'date_dans' => 'tra @delai@',
95
-	'date_de_mois_1' => '@j@ gennaio',
96
-	'date_de_mois_10' => '@j@ ottobre',
97
-	'date_de_mois_11' => '@j@ novembre',
98
-	'date_de_mois_12' => '@j@ dicembre',
99
-	'date_de_mois_2' => '@j@ febbraio',
100
-	'date_de_mois_3' => '@j@ marzo',
101
-	'date_de_mois_4' => '@j@ aprile',
102
-	'date_de_mois_5' => '@j@ maggio',
103
-	'date_de_mois_6' => '@j@ giugno',
104
-	'date_de_mois_7' => '@j@ luglio',
105
-	'date_de_mois_8' => '@j@ agosto',
106
-	'date_de_mois_9' => '@j@ settembre',
107
-	'date_demain' => 'domani',
108
-	'date_fmt_heures_minutes' => '@h@:@m@',
109
-	'date_fmt_heures_minutes_court' => '@h@h@m@',
110
-	'date_fmt_jour' => '@nomjour@ @jour@',
111
-	'date_fmt_jour_heure' => '@jour@ ore @heure@',
112
-	'date_fmt_jour_heure_debut_fin' => 'Il @jour@ dalle @heure_debut@ alle @heure_fin@',
113
-	'date_fmt_jour_heure_debut_fin_abbr' => 'Il @dtstart@@jour@ dalle @heure_debut@@dtabbr@ alle @dtstart@@heure_fin@@dtend@',
114
-	'date_fmt_jour_mois' => '@jourmois@',
115
-	'date_fmt_jour_mois_annee' => '@jourmois@ @annee@',
116
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
117
-	'date_fmt_nomjour' => '@nomjour@ @date@',
118
-	'date_fmt_nomjour_date' => 'il @nomjour@ @date@',
119
-	'date_fmt_periode' => 'Dal @date_debut@ al @date_fin@',
120
-	'date_fmt_periode_abbr' => 'Dal @dtart@@date_debut@@dtabbr@ al @dtend@@date_fin@@dtabbr@',
121
-	'date_fmt_periode_from' => 'Dal',
122
-	'date_fmt_periode_to' => 'a',
123
-	'date_fmt_saison_annee' => '@saison@ @annee@',
124
-	'date_heures' => 'ore',
125
-	'date_hier' => 'ieri',
126
-	'date_il_y_a' => '@delai@ fa',
127
-	'date_jnum1' => '1',
128
-	'date_jnum10' => '10',
129
-	'date_jnum11' => '11',
130
-	'date_jnum12' => '12',
131
-	'date_jnum13' => '13',
132
-	'date_jnum14' => '14',
133
-	'date_jnum15' => '15',
134
-	'date_jnum16' => '16',
135
-	'date_jnum17' => '17',
136
-	'date_jnum18' => '18',
137
-	'date_jnum19' => '19',
138
-	'date_jnum2' => '2',
139
-	'date_jnum20' => '20',
140
-	'date_jnum21' => '21',
141
-	'date_jnum22' => '22',
142
-	'date_jnum23' => '23',
143
-	'date_jnum24' => '24',
144
-	'date_jnum25' => '25',
145
-	'date_jnum26' => '26',
146
-	'date_jnum27' => '27',
147
-	'date_jnum28' => '28',
148
-	'date_jnum29' => '29',
149
-	'date_jnum3' => '3',
150
-	'date_jnum30' => '30',
151
-	'date_jnum31' => '31',
152
-	'date_jnum4' => '4',
153
-	'date_jnum5' => '5',
154
-	'date_jnum6' => '6',
155
-	'date_jnum7' => '7',
156
-	'date_jnum8' => '8',
157
-	'date_jnum9' => '9',
158
-	'date_jour_1' => 'domenica',
159
-	'date_jour_1_abbr' => 'dom',
160
-	'date_jour_1_initiale' => 'd',
161
-	'date_jour_2' => 'lunedì',
162
-	'date_jour_2_abbr' => 'lun',
163
-	'date_jour_2_initiale' => 'l',
164
-	'date_jour_3' => 'martedì',
165
-	'date_jour_3_abbr' => 'mar',
166
-	'date_jour_3_initiale' => 'm',
167
-	'date_jour_4' => 'mercoledì',
168
-	'date_jour_4_abbr' => 'mer',
169
-	'date_jour_4_initiale' => 'm',
170
-	'date_jour_5' => 'giovedì',
171
-	'date_jour_5_abbr' => 'giov',
172
-	'date_jour_5_initiale' => 'g',
173
-	'date_jour_6' => 'venerdì',
174
-	'date_jour_6_abbr' => 'ven',
175
-	'date_jour_6_initiale' => 'v',
176
-	'date_jour_7' => 'sabato',
177
-	'date_jour_7_abbr' => 'sab',
178
-	'date_jour_7_initiale' => 's',
179
-	'date_jours' => 'giorni',
180
-	'date_minutes' => 'minuti',
181
-	'date_mois' => 'mesi',
182
-	'date_mois_1' => 'Gennaio',
183
-	'date_mois_10' => 'Ottobre',
184
-	'date_mois_10_abbr' => 'ott',
185
-	'date_mois_11' => 'Novembre',
186
-	'date_mois_11_abbr' => 'nov',
187
-	'date_mois_12' => 'Dicembre',
188
-	'date_mois_12_abbr' => 'dic',
189
-	'date_mois_1_abbr' => 'gen',
190
-	'date_mois_2' => 'Febbraio',
191
-	'date_mois_2_abbr' => 'feb',
192
-	'date_mois_3' => 'Marzo',
193
-	'date_mois_3_abbr' => 'mar',
194
-	'date_mois_4' => 'Aprile',
195
-	'date_mois_4_abbr' => 'apr',
196
-	'date_mois_5' => 'Maggio',
197
-	'date_mois_5_abbr' => 'mag',
198
-	'date_mois_6' => 'Giugno',
199
-	'date_mois_6_abbr' => 'giu',
200
-	'date_mois_7' => 'Luglio',
201
-	'date_mois_7_abbr' => 'lug',
202
-	'date_mois_8' => 'Agosto',
203
-	'date_mois_8_abbr' => 'ago',
204
-	'date_mois_9' => 'Settembre',
205
-	'date_mois_9_abbr' => 'set',
206
-	'date_saison_1' => 'inverno',
207
-	'date_saison_2' => 'primavera',
208
-	'date_saison_3' => 'estate',
209
-	'date_saison_4' => 'autunno',
210
-	'date_secondes' => 'secondi',
211
-	'date_semaines' => 'settimane',
212
-	'date_un_mois' => 'mese',
213
-	'date_une_heure' => 'ora',
214
-	'date_une_minute' => 'minuto',
215
-	'date_une_seconde' => 'secondo',
216
-	'date_une_semaine' => 'settimana',
217
-	'dirs_commencer' => ' per iniziare realmente l’installazione',
218
-	'dirs_preliminaire' => 'Prima di iniziare: <b>impostare i diritti di accesso</b>',
219
-	'dirs_probleme_droits' => 'Problema nei diritti di accesso',
220
-	'dirs_repertoires_absents' => '<p><b>Le seguenti cartelle non sono state trovate: </b></p><ul>@bad_dirs@.</ul>
91
+    // D
92
+    'date_aujourdhui' => 'oggi',
93
+    'date_avant_jc' => 'a.C.',
94
+    'date_dans' => 'tra @delai@',
95
+    'date_de_mois_1' => '@j@ gennaio',
96
+    'date_de_mois_10' => '@j@ ottobre',
97
+    'date_de_mois_11' => '@j@ novembre',
98
+    'date_de_mois_12' => '@j@ dicembre',
99
+    'date_de_mois_2' => '@j@ febbraio',
100
+    'date_de_mois_3' => '@j@ marzo',
101
+    'date_de_mois_4' => '@j@ aprile',
102
+    'date_de_mois_5' => '@j@ maggio',
103
+    'date_de_mois_6' => '@j@ giugno',
104
+    'date_de_mois_7' => '@j@ luglio',
105
+    'date_de_mois_8' => '@j@ agosto',
106
+    'date_de_mois_9' => '@j@ settembre',
107
+    'date_demain' => 'domani',
108
+    'date_fmt_heures_minutes' => '@h@:@m@',
109
+    'date_fmt_heures_minutes_court' => '@h@h@m@',
110
+    'date_fmt_jour' => '@nomjour@ @jour@',
111
+    'date_fmt_jour_heure' => '@jour@ ore @heure@',
112
+    'date_fmt_jour_heure_debut_fin' => 'Il @jour@ dalle @heure_debut@ alle @heure_fin@',
113
+    'date_fmt_jour_heure_debut_fin_abbr' => 'Il @dtstart@@jour@ dalle @heure_debut@@dtabbr@ alle @dtstart@@heure_fin@@dtend@',
114
+    'date_fmt_jour_mois' => '@jourmois@',
115
+    'date_fmt_jour_mois_annee' => '@jourmois@ @annee@',
116
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
117
+    'date_fmt_nomjour' => '@nomjour@ @date@',
118
+    'date_fmt_nomjour_date' => 'il @nomjour@ @date@',
119
+    'date_fmt_periode' => 'Dal @date_debut@ al @date_fin@',
120
+    'date_fmt_periode_abbr' => 'Dal @dtart@@date_debut@@dtabbr@ al @dtend@@date_fin@@dtabbr@',
121
+    'date_fmt_periode_from' => 'Dal',
122
+    'date_fmt_periode_to' => 'a',
123
+    'date_fmt_saison_annee' => '@saison@ @annee@',
124
+    'date_heures' => 'ore',
125
+    'date_hier' => 'ieri',
126
+    'date_il_y_a' => '@delai@ fa',
127
+    'date_jnum1' => '1',
128
+    'date_jnum10' => '10',
129
+    'date_jnum11' => '11',
130
+    'date_jnum12' => '12',
131
+    'date_jnum13' => '13',
132
+    'date_jnum14' => '14',
133
+    'date_jnum15' => '15',
134
+    'date_jnum16' => '16',
135
+    'date_jnum17' => '17',
136
+    'date_jnum18' => '18',
137
+    'date_jnum19' => '19',
138
+    'date_jnum2' => '2',
139
+    'date_jnum20' => '20',
140
+    'date_jnum21' => '21',
141
+    'date_jnum22' => '22',
142
+    'date_jnum23' => '23',
143
+    'date_jnum24' => '24',
144
+    'date_jnum25' => '25',
145
+    'date_jnum26' => '26',
146
+    'date_jnum27' => '27',
147
+    'date_jnum28' => '28',
148
+    'date_jnum29' => '29',
149
+    'date_jnum3' => '3',
150
+    'date_jnum30' => '30',
151
+    'date_jnum31' => '31',
152
+    'date_jnum4' => '4',
153
+    'date_jnum5' => '5',
154
+    'date_jnum6' => '6',
155
+    'date_jnum7' => '7',
156
+    'date_jnum8' => '8',
157
+    'date_jnum9' => '9',
158
+    'date_jour_1' => 'domenica',
159
+    'date_jour_1_abbr' => 'dom',
160
+    'date_jour_1_initiale' => 'd',
161
+    'date_jour_2' => 'lunedì',
162
+    'date_jour_2_abbr' => 'lun',
163
+    'date_jour_2_initiale' => 'l',
164
+    'date_jour_3' => 'martedì',
165
+    'date_jour_3_abbr' => 'mar',
166
+    'date_jour_3_initiale' => 'm',
167
+    'date_jour_4' => 'mercoledì',
168
+    'date_jour_4_abbr' => 'mer',
169
+    'date_jour_4_initiale' => 'm',
170
+    'date_jour_5' => 'giovedì',
171
+    'date_jour_5_abbr' => 'giov',
172
+    'date_jour_5_initiale' => 'g',
173
+    'date_jour_6' => 'venerdì',
174
+    'date_jour_6_abbr' => 'ven',
175
+    'date_jour_6_initiale' => 'v',
176
+    'date_jour_7' => 'sabato',
177
+    'date_jour_7_abbr' => 'sab',
178
+    'date_jour_7_initiale' => 's',
179
+    'date_jours' => 'giorni',
180
+    'date_minutes' => 'minuti',
181
+    'date_mois' => 'mesi',
182
+    'date_mois_1' => 'Gennaio',
183
+    'date_mois_10' => 'Ottobre',
184
+    'date_mois_10_abbr' => 'ott',
185
+    'date_mois_11' => 'Novembre',
186
+    'date_mois_11_abbr' => 'nov',
187
+    'date_mois_12' => 'Dicembre',
188
+    'date_mois_12_abbr' => 'dic',
189
+    'date_mois_1_abbr' => 'gen',
190
+    'date_mois_2' => 'Febbraio',
191
+    'date_mois_2_abbr' => 'feb',
192
+    'date_mois_3' => 'Marzo',
193
+    'date_mois_3_abbr' => 'mar',
194
+    'date_mois_4' => 'Aprile',
195
+    'date_mois_4_abbr' => 'apr',
196
+    'date_mois_5' => 'Maggio',
197
+    'date_mois_5_abbr' => 'mag',
198
+    'date_mois_6' => 'Giugno',
199
+    'date_mois_6_abbr' => 'giu',
200
+    'date_mois_7' => 'Luglio',
201
+    'date_mois_7_abbr' => 'lug',
202
+    'date_mois_8' => 'Agosto',
203
+    'date_mois_8_abbr' => 'ago',
204
+    'date_mois_9' => 'Settembre',
205
+    'date_mois_9_abbr' => 'set',
206
+    'date_saison_1' => 'inverno',
207
+    'date_saison_2' => 'primavera',
208
+    'date_saison_3' => 'estate',
209
+    'date_saison_4' => 'autunno',
210
+    'date_secondes' => 'secondi',
211
+    'date_semaines' => 'settimane',
212
+    'date_un_mois' => 'mese',
213
+    'date_une_heure' => 'ora',
214
+    'date_une_minute' => 'minuto',
215
+    'date_une_seconde' => 'secondo',
216
+    'date_une_semaine' => 'settimana',
217
+    'dirs_commencer' => ' per iniziare realmente l’installazione',
218
+    'dirs_preliminaire' => 'Prima di iniziare: <b>impostare i diritti di accesso</b>',
219
+    'dirs_probleme_droits' => 'Problema nei diritti di accesso',
220
+    'dirs_repertoires_absents' => '<p><b>Le seguenti cartelle non sono state trovate: </b></p><ul>@bad_dirs@.</ul>
221 221
   <p>Probabilmente ciò è dovuto a un’errata formattazione delle lettere maiuscole o minuscole.
222 222
   Verificare che le maiuscole e le minuscole delle cartelle coincidano con quelle visualizzate
223 223
   qui sopra; se non è così, rinominare le cartelle utilizzando il software FTP.</p>
224 224
   <p>Una volta effettuata questa correzione, si potrà',
225
-	'dirs_repertoires_suivants' => '<p><b>Le seguenti cartelle non sono accessibili in scrittura:</b></p> <ul>@bad_dirs@</ul>
225
+    'dirs_repertoires_suivants' => '<p><b>Le seguenti cartelle non sono accessibili in scrittura:</b></p> <ul>@bad_dirs@</ul>
226 226
 <p>Per risolvere il problema, utilizzare un client FTP per impostare i diritti di accesso
227 227
 di ciascuna di queste cartelle. La procedura è spiegata in dettaglio nella guida d’installazione.</p>
228 228
 <p>Una volta attribuiti i permessi, si potrà ',
229
-	'double_occurrence' => 'Doppia occorrenza',
229
+    'double_occurrence' => 'Doppia occorrenza',
230 230
 
231
-	// E
232
-	'en_cours' => 'in corso',
233
-	'envoi_via_le_site' => 'Invio tramite il sito',
234
-	'erreur' => 'Errore',
235
-	'erreur_balise_non_fermee' => 'ultimo tag non chiuso:',
236
-	'erreur_technique_ajaxform' => 'Ops. Un’errore inaspettato non ti consente di inviare il form. Puoi provare di nuovo.',
237
-	'erreur_technique_enregistrement_champs' => 'Un errore tecnico ha impedito la corretta registrazione del campo @champs@.',
238
-	'erreur_technique_enregistrement_impossible' => 'Un errore tecnico ha impedito la registrazione.',
239
-	'erreur_texte' => 'errore/i',
240
-	'etape' => 'Fase',
231
+    // E
232
+    'en_cours' => 'in corso',
233
+    'envoi_via_le_site' => 'Invio tramite il sito',
234
+    'erreur' => 'Errore',
235
+    'erreur_balise_non_fermee' => 'ultimo tag non chiuso:',
236
+    'erreur_technique_ajaxform' => 'Ops. Un’errore inaspettato non ti consente di inviare il form. Puoi provare di nuovo.',
237
+    'erreur_technique_enregistrement_champs' => 'Un errore tecnico ha impedito la corretta registrazione del campo @champs@.',
238
+    'erreur_technique_enregistrement_impossible' => 'Un errore tecnico ha impedito la registrazione.',
239
+    'erreur_texte' => 'errore/i',
240
+    'etape' => 'Fase',
241 241
 
242
-	// F
243
-	'fichier_introuvable' => 'File @fichier@ non trovato',
244
-	'fonction_introuvable' => 'Funzione @fonction@() non trovata',
245
-	'form_auteur_confirmation' => 'Per cortesia conferma il tuo indirizzo email',
246
-	'form_auteur_email_modifie' => 'Il tuo indirizzo email è stato modificato',
247
-	'form_auteur_envoi_mail_confirmation' => 'Una email di conferma è stata inviata a  @email@. È necessario visitare l’URL indicata nel messaggio per convalidare il tuo indirizzo email.',
248
-	'form_auteur_mail_confirmation' => 'Ciao,
242
+    // F
243
+    'fichier_introuvable' => 'File @fichier@ non trovato',
244
+    'fonction_introuvable' => 'Funzione @fonction@() non trovata',
245
+    'form_auteur_confirmation' => 'Per cortesia conferma il tuo indirizzo email',
246
+    'form_auteur_email_modifie' => 'Il tuo indirizzo email è stato modificato',
247
+    'form_auteur_envoi_mail_confirmation' => 'Una email di conferma è stata inviata a  @email@. È necessario visitare l’URL indicata nel messaggio per convalidare il tuo indirizzo email.',
248
+    'form_auteur_mail_confirmation' => 'Ciao,
249 249
 
250 250
 Hai chiesto di modificare l’indirizzo email.
251 251
 Per confermare la tua nuova email, devi connetterti all’
@@ -253,346 +253,346 @@  discard block
 block discarded – undo
253 253
 
254 254
     @url@
255 255
 ',
256
-	'form_deja_inscrit' => 'Sei già iscritto.',
257
-	'form_email_non_valide' => 'L’indirizzo email non è valido.',
258
-	'form_forum_access_refuse' => 'Non hai più accesso a questo sito.',
259
-	'form_forum_bonjour' => 'Buongiorno @nom@,',
260
-	'form_forum_confirmer_email' => 'Puoi confermare il tuo indirizzo email,vai a questo indirizzo: @url_confirm@',
261
-	'form_forum_email_deja_enregistre' => 'Questo indirizzo email è già registrato, puoi dunque utilizzare la tua password abituale.',
262
-	'form_forum_identifiant_mail' => 'Il nuovo codice identificativo (ID) ti è stato appena inviato tramite email.',
263
-	'form_forum_identifiants' => 'Dati personali',
264
-	'form_forum_indiquer_nom_email' => 'Indica qui nome e indirizzo email.  L’ID personale ti verrà recapitato tramite email a breve.',
265
-	'form_forum_login' => 'login:',
266
-	'form_forum_message_auto' => '(questo è un messaggio generato automaticamente)',
267
-	'form_forum_pass' => 'password:',
268
-	'form_forum_probleme_mail' => 'Problema di posta: l’ID non può essere inviato.',
269
-	'form_forum_voici1' => 'Ecco i dati per poter partecipare ai forum
256
+    'form_deja_inscrit' => 'Sei già iscritto.',
257
+    'form_email_non_valide' => 'L’indirizzo email non è valido.',
258
+    'form_forum_access_refuse' => 'Non hai più accesso a questo sito.',
259
+    'form_forum_bonjour' => 'Buongiorno @nom@,',
260
+    'form_forum_confirmer_email' => 'Puoi confermare il tuo indirizzo email,vai a questo indirizzo: @url_confirm@',
261
+    'form_forum_email_deja_enregistre' => 'Questo indirizzo email è già registrato, puoi dunque utilizzare la tua password abituale.',
262
+    'form_forum_identifiant_mail' => 'Il nuovo codice identificativo (ID) ti è stato appena inviato tramite email.',
263
+    'form_forum_identifiants' => 'Dati personali',
264
+    'form_forum_indiquer_nom_email' => 'Indica qui nome e indirizzo email.  L’ID personale ti verrà recapitato tramite email a breve.',
265
+    'form_forum_login' => 'login:',
266
+    'form_forum_message_auto' => '(questo è un messaggio generato automaticamente)',
267
+    'form_forum_pass' => 'password:',
268
+    'form_forum_probleme_mail' => 'Problema di posta: l’ID non può essere inviato.',
269
+    'form_forum_voici1' => 'Ecco i dati per poter partecipare ai forum
270 270
  del sito"@nom_site_spip@" (@adresse_site@):',
271
-	'form_forum_voici2' => 'Ecco i dati per poter proporre degli articoli sul sito
271
+    'form_forum_voici2' => 'Ecco i dati per poter proporre degli articoli sul sito
272 272
 "@nom_site_spip@" (@adresse_login@):',
273
-	'form_indiquer_email' => 'Indica il tuo indirizzo email.',
274
-	'form_indiquer_nom' => 'Indica il tuo nome.',
275
-	'form_indiquer_nom_site' => 'Indica il nome del tuo sito.',
276
-	'form_pet_deja_enregistre' => 'Questo sito è già registrato',
277
-	'form_pet_signature_pasprise' => 'La tua adesione non è stata presa in considerazione.',
278
-	'form_prop_confirmer_envoi' => 'Conferma l’invio',
279
-	'form_prop_description' => 'Descrizione/commento',
280
-	'form_prop_enregistre' => 'La tua proposta è stata registrata ed apparirà on line dopo l’approvazione del responsabile del sito.',
281
-	'form_prop_envoyer' => 'Invia un messaggio',
282
-	'form_prop_indiquer_email' => 'Indica un indirizzo email valido',
283
-	'form_prop_indiquer_nom_site' => 'Indica il nome del sito.',
284
-	'form_prop_indiquer_sujet' => 'Indica un argomento',
285
-	'form_prop_message_envoye' => 'Messaggio inviato',
286
-	'form_prop_non_enregistre' => 'La tua proposta non è stata registrata.',
287
-	'form_prop_sujet' => 'Argomento',
288
-	'form_prop_url_site' => 'Indirizzo (URL) del sito',
289
-	'format_date_attendu' => 'Inserire una data nel formato gg/mm/aaaa.',
290
-	'format_date_incorrecte' => 'La data (o il suo formato) non è corretta',
291
-	'format_heure_attendu' => 'Inserire un’ora nel formato hh:mm.',
292
-	'format_heure_incorrecte' => 'L’ora (o il suo formato) non è corretta',
293
-	'forum_non_inscrit' => 'Non sei iscritto, oppure l’indirizzo o la password inseriti non sono corretti.',
294
-	'forum_par_auteur' => 'di @auteur@',
295
-	'forum_titre_erreur' => 'Errore...',
273
+    'form_indiquer_email' => 'Indica il tuo indirizzo email.',
274
+    'form_indiquer_nom' => 'Indica il tuo nome.',
275
+    'form_indiquer_nom_site' => 'Indica il nome del tuo sito.',
276
+    'form_pet_deja_enregistre' => 'Questo sito è già registrato',
277
+    'form_pet_signature_pasprise' => 'La tua adesione non è stata presa in considerazione.',
278
+    'form_prop_confirmer_envoi' => 'Conferma l’invio',
279
+    'form_prop_description' => 'Descrizione/commento',
280
+    'form_prop_enregistre' => 'La tua proposta è stata registrata ed apparirà on line dopo l’approvazione del responsabile del sito.',
281
+    'form_prop_envoyer' => 'Invia un messaggio',
282
+    'form_prop_indiquer_email' => 'Indica un indirizzo email valido',
283
+    'form_prop_indiquer_nom_site' => 'Indica il nome del sito.',
284
+    'form_prop_indiquer_sujet' => 'Indica un argomento',
285
+    'form_prop_message_envoye' => 'Messaggio inviato',
286
+    'form_prop_non_enregistre' => 'La tua proposta non è stata registrata.',
287
+    'form_prop_sujet' => 'Argomento',
288
+    'form_prop_url_site' => 'Indirizzo (URL) del sito',
289
+    'format_date_attendu' => 'Inserire una data nel formato gg/mm/aaaa.',
290
+    'format_date_incorrecte' => 'La data (o il suo formato) non è corretta',
291
+    'format_heure_attendu' => 'Inserire un’ora nel formato hh:mm.',
292
+    'format_heure_incorrecte' => 'L’ora (o il suo formato) non è corretta',
293
+    'forum_non_inscrit' => 'Non sei iscritto, oppure l’indirizzo o la password inseriti non sono corretti.',
294
+    'forum_par_auteur' => 'di @auteur@',
295
+    'forum_titre_erreur' => 'Errore...',
296 296
 
297
-	// I
298
-	'ical_texte_rss_articles' => 'Il file di "backend" degli articoli di questo sito si trova al seguente indirizzo:',
299
-	'ical_texte_rss_articles2' => 'È anche possibile ottenere un file di "backend" per gli articoli di una singola rubrica:',
300
-	'ical_texte_rss_breves' => 'Inoltre esiste un file per l’insieme delle brevi del sito. Precisando un numero di rubrica ci si può limitare alle brevi in essa contenute.',
301
-	'icone_a_suivre' => 'Pannello di controllo',
302
-	'icone_admin_site' => 'Amministrazione del sito',
303
-	'icone_agenda' => 'Agenda',
304
-	'icone_aide_ligne' => 'Guida in linea',
305
-	'icone_articles' => 'Articoli',
306
-	'icone_auteurs' => 'Autori',
307
-	'icone_brouteur' => 'Navigazione rapida',
308
-	'icone_configuration_site' => 'Configurazione del sito',
309
-	'icone_configurer_site' => 'Configura il sito',
310
-	'icone_creer_nouvel_auteur' => 'Crea un nuovo autore',
311
-	'icone_creer_rubrique' => 'Crea una rubrica',
312
-	'icone_creer_sous_rubrique' => 'Crea una sottorubrica',
313
-	'icone_deconnecter' => 'Esci',
314
-	'icone_discussions' => 'Discussioni',
315
-	'icone_doc_rubrique' => 'Documenti delle rubriche',
316
-	'icone_ecrire_article' => 'Scrivi un articolo',
317
-	'icone_edition_site' => 'Redazione del sito',
318
-	'icone_gestion_langues' => 'Gestione delle lingue',
319
-	'icone_informations_personnelles' => 'Dati personali',
320
-	'icone_interface_complet' => 'Interfaccia completa',
321
-	'icone_interface_simple' => 'Interfaccia semplificata',
322
-	'icone_maintenance_site' => 'Manutenzione tecnica',
323
-	'icone_messagerie_personnelle' => 'Messaggi personali',
324
-	'icone_repartition_debut' => 'Mostra la ripartizione dall’inizio',
325
-	'icone_rubriques' => 'Rubriche',
326
-	'icone_sauver_site' => 'Backup del sito',
327
-	'icone_site_entier' => 'Tutto il sito',
328
-	'icone_sites_references' => 'Siti repertoriati',
329
-	'icone_statistiques' => 'Statistiche del sito',
330
-	'icone_suivi_activite' => 'Monitorare l’attività del sito',
331
-	'icone_suivi_actualite' => 'Evoluzione del sito',
332
-	'icone_suivi_pettions' => 'Gestione delle petizioni',
333
-	'icone_suivi_revisions' => 'Modifiche agli articoli',
334
-	'icone_supprimer_document' => 'Elimina il documento',
335
-	'icone_supprimer_image' => 'Elimina l’immagine',
336
-	'icone_tous_articles' => 'Tutti i tuoi articoli',
337
-	'icone_tous_auteur' => 'Tutti gli autori',
338
-	'icone_tous_visiteur' => 'Tutti i visitatori',
339
-	'icone_visiter_site' => 'Visita il sito',
340
-	'icone_voir_en_ligne' => 'Vedi on line',
341
-	'img_indisponible' => 'immagine non disponibile',
342
-	'impossible' => 'impossibile',
343
-	'info_a_suivre' => 'PANNELLO DI CONTROLLO »',
344
-	'info_acces_interdit' => 'Accesso vietato',
345
-	'info_acces_refuse' => 'Accesso rifiutato',
346
-	'info_action' => 'Azione: @action@',
347
-	'info_administrer_rubriques' => 'Puoi amministrare questa rubrica e le relative sottorubriche',
348
-	'info_adresse_non_indiquee' => 'Non hai indicato l’indirizzo da testare!',
349
-	'info_aide' => 'AIUTO:',
350
-	'info_ajouter_mot' => 'Aggiungi questa parola',
351
-	'info_annonce' => 'ANNUNCIO',
352
-	'info_annonces_generales' => 'Annunci generali:',
353
-	'info_article_propose' => 'Articolo proposto',
354
-	'info_article_publie' => 'Articolo pubblicato',
355
-	'info_article_redaction' => 'Articolo in corso di redazione',
356
-	'info_article_refuse' => 'Articolo rifiutato',
357
-	'info_article_supprime' => 'Articolo eliminato',
358
-	'info_articles' => 'Articoli',
359
-	'info_articles_a_valider' => 'Articoli da convalidare',
360
-	'info_articles_nb' => '@nb@ articoli',
361
-	'info_articles_proposes' => 'Articoli proposti',
362
-	'info_articles_un' => '1 articolo',
363
-	'info_auteurs_nombre' => 'autore(i):',
364
-	'info_authentification_ftp' => 'Autenticazione (via FTP).',
365
-	'info_breves_2' => 'brevi',
366
-	'info_breves_nb' => '@nb@ notizie',
367
-	'info_breves_un' => '1 notizia',
368
-	'info_connexion_refusee' => 'Connessione rifiutata',
369
-	'info_contact_developpeur' => 'Contatta un programmatore.',
370
-	'info_contenance' => 'Questo sito contiene:',
371
-	'info_contribution' => 'contributi dei forum',
372
-	'info_copyright' => '@spip@ è un software libero distribuito @lien_gpl@.',
373
-	'info_copyright_doc' => 'Per maggiori informazioni, vedi il sito <a href="@spipnet@">@spipnet_affiche@</a>.',
374
-	'info_copyright_gpl' => 'sotto licenza GPL',
375
-	'info_cours_edition' => 'Articoli in fase di redazione',
376
-	'info_creer_repertoire' => 'Creare un file o una cartella chiamata:',
377
-	'info_creer_repertoire_2' => 'all’interno della sottocartella <b>@repertoire@</b>, poi:',
378
-	'info_creer_vignette' => 'creazione automatica dell’anteprima',
379
-	'info_creerdansrubrique_non_autorise' => 'Non si dispone di diritti sufficienti per creare contenuti in questa rubrica',
380
-	'info_deplier' => 'Espandi',
381
-	'info_descriptif_nombre' => 'descrizione(i):',
382
-	'info_description' => 'Descrizione:',
383
-	'info_description_2' => 'Descrizione:',
384
-	'info_dimension' => 'Dimensioni:',
385
-	'info_documents_nb' => '@nb@ documenti',
386
-	'info_documents_un' => '1 documento',
387
-	'info_ecire_message_prive' => 'Scrivi un messaggio privato',
388
-	'info_email_invalide' => 'Indirizzo email non valido.',
389
-	'info_en_cours_validation' => 'I tuoi articoli in corso di redazione',
390
-	'info_en_ligne' => 'Attualmente on line:',
391
-	'info_envoyer_message_prive' => 'Invia un messaggio privato a questo autore',
392
-	'info_erreur_requete' => 'Errore nella richiesta: ',
393
-	'info_erreur_squelette2' => 'Nessun modello di layout <b>@fichier@</b> trovato...',
394
-	'info_erreur_systeme' => 'Errore di sistema (errno @errsys@)',
395
-	'info_erreur_systeme2' => 'Il disco rigido potrebbe essere pieno o la base dati danneggiata.<br />
297
+    // I
298
+    'ical_texte_rss_articles' => 'Il file di "backend" degli articoli di questo sito si trova al seguente indirizzo:',
299
+    'ical_texte_rss_articles2' => 'È anche possibile ottenere un file di "backend" per gli articoli di una singola rubrica:',
300
+    'ical_texte_rss_breves' => 'Inoltre esiste un file per l’insieme delle brevi del sito. Precisando un numero di rubrica ci si può limitare alle brevi in essa contenute.',
301
+    'icone_a_suivre' => 'Pannello di controllo',
302
+    'icone_admin_site' => 'Amministrazione del sito',
303
+    'icone_agenda' => 'Agenda',
304
+    'icone_aide_ligne' => 'Guida in linea',
305
+    'icone_articles' => 'Articoli',
306
+    'icone_auteurs' => 'Autori',
307
+    'icone_brouteur' => 'Navigazione rapida',
308
+    'icone_configuration_site' => 'Configurazione del sito',
309
+    'icone_configurer_site' => 'Configura il sito',
310
+    'icone_creer_nouvel_auteur' => 'Crea un nuovo autore',
311
+    'icone_creer_rubrique' => 'Crea una rubrica',
312
+    'icone_creer_sous_rubrique' => 'Crea una sottorubrica',
313
+    'icone_deconnecter' => 'Esci',
314
+    'icone_discussions' => 'Discussioni',
315
+    'icone_doc_rubrique' => 'Documenti delle rubriche',
316
+    'icone_ecrire_article' => 'Scrivi un articolo',
317
+    'icone_edition_site' => 'Redazione del sito',
318
+    'icone_gestion_langues' => 'Gestione delle lingue',
319
+    'icone_informations_personnelles' => 'Dati personali',
320
+    'icone_interface_complet' => 'Interfaccia completa',
321
+    'icone_interface_simple' => 'Interfaccia semplificata',
322
+    'icone_maintenance_site' => 'Manutenzione tecnica',
323
+    'icone_messagerie_personnelle' => 'Messaggi personali',
324
+    'icone_repartition_debut' => 'Mostra la ripartizione dall’inizio',
325
+    'icone_rubriques' => 'Rubriche',
326
+    'icone_sauver_site' => 'Backup del sito',
327
+    'icone_site_entier' => 'Tutto il sito',
328
+    'icone_sites_references' => 'Siti repertoriati',
329
+    'icone_statistiques' => 'Statistiche del sito',
330
+    'icone_suivi_activite' => 'Monitorare l’attività del sito',
331
+    'icone_suivi_actualite' => 'Evoluzione del sito',
332
+    'icone_suivi_pettions' => 'Gestione delle petizioni',
333
+    'icone_suivi_revisions' => 'Modifiche agli articoli',
334
+    'icone_supprimer_document' => 'Elimina il documento',
335
+    'icone_supprimer_image' => 'Elimina l’immagine',
336
+    'icone_tous_articles' => 'Tutti i tuoi articoli',
337
+    'icone_tous_auteur' => 'Tutti gli autori',
338
+    'icone_tous_visiteur' => 'Tutti i visitatori',
339
+    'icone_visiter_site' => 'Visita il sito',
340
+    'icone_voir_en_ligne' => 'Vedi on line',
341
+    'img_indisponible' => 'immagine non disponibile',
342
+    'impossible' => 'impossibile',
343
+    'info_a_suivre' => 'PANNELLO DI CONTROLLO »',
344
+    'info_acces_interdit' => 'Accesso vietato',
345
+    'info_acces_refuse' => 'Accesso rifiutato',
346
+    'info_action' => 'Azione: @action@',
347
+    'info_administrer_rubriques' => 'Puoi amministrare questa rubrica e le relative sottorubriche',
348
+    'info_adresse_non_indiquee' => 'Non hai indicato l’indirizzo da testare!',
349
+    'info_aide' => 'AIUTO:',
350
+    'info_ajouter_mot' => 'Aggiungi questa parola',
351
+    'info_annonce' => 'ANNUNCIO',
352
+    'info_annonces_generales' => 'Annunci generali:',
353
+    'info_article_propose' => 'Articolo proposto',
354
+    'info_article_publie' => 'Articolo pubblicato',
355
+    'info_article_redaction' => 'Articolo in corso di redazione',
356
+    'info_article_refuse' => 'Articolo rifiutato',
357
+    'info_article_supprime' => 'Articolo eliminato',
358
+    'info_articles' => 'Articoli',
359
+    'info_articles_a_valider' => 'Articoli da convalidare',
360
+    'info_articles_nb' => '@nb@ articoli',
361
+    'info_articles_proposes' => 'Articoli proposti',
362
+    'info_articles_un' => '1 articolo',
363
+    'info_auteurs_nombre' => 'autore(i):',
364
+    'info_authentification_ftp' => 'Autenticazione (via FTP).',
365
+    'info_breves_2' => 'brevi',
366
+    'info_breves_nb' => '@nb@ notizie',
367
+    'info_breves_un' => '1 notizia',
368
+    'info_connexion_refusee' => 'Connessione rifiutata',
369
+    'info_contact_developpeur' => 'Contatta un programmatore.',
370
+    'info_contenance' => 'Questo sito contiene:',
371
+    'info_contribution' => 'contributi dei forum',
372
+    'info_copyright' => '@spip@ è un software libero distribuito @lien_gpl@.',
373
+    'info_copyright_doc' => 'Per maggiori informazioni, vedi il sito <a href="@spipnet@">@spipnet_affiche@</a>.',
374
+    'info_copyright_gpl' => 'sotto licenza GPL',
375
+    'info_cours_edition' => 'Articoli in fase di redazione',
376
+    'info_creer_repertoire' => 'Creare un file o una cartella chiamata:',
377
+    'info_creer_repertoire_2' => 'all’interno della sottocartella <b>@repertoire@</b>, poi:',
378
+    'info_creer_vignette' => 'creazione automatica dell’anteprima',
379
+    'info_creerdansrubrique_non_autorise' => 'Non si dispone di diritti sufficienti per creare contenuti in questa rubrica',
380
+    'info_deplier' => 'Espandi',
381
+    'info_descriptif_nombre' => 'descrizione(i):',
382
+    'info_description' => 'Descrizione:',
383
+    'info_description_2' => 'Descrizione:',
384
+    'info_dimension' => 'Dimensioni:',
385
+    'info_documents_nb' => '@nb@ documenti',
386
+    'info_documents_un' => '1 documento',
387
+    'info_ecire_message_prive' => 'Scrivi un messaggio privato',
388
+    'info_email_invalide' => 'Indirizzo email non valido.',
389
+    'info_en_cours_validation' => 'I tuoi articoli in corso di redazione',
390
+    'info_en_ligne' => 'Attualmente on line:',
391
+    'info_envoyer_message_prive' => 'Invia un messaggio privato a questo autore',
392
+    'info_erreur_requete' => 'Errore nella richiesta: ',
393
+    'info_erreur_squelette2' => 'Nessun modello di layout <b>@fichier@</b> trovato...',
394
+    'info_erreur_systeme' => 'Errore di sistema (errno @errsys@)',
395
+    'info_erreur_systeme2' => 'Il disco rigido potrebbe essere pieno o la base dati danneggiata.<br />
396 396
 <span style="color:red;">Tenta di <a href=\'@script@\'>ripristinare la base dati</a>, o contatta il tuo hoster.</span>',
397
-	'info_fini' => 'Finito!',
398
-	'info_format_image' => 'Formati di file immagine utilizzabili per la creazione delle etichette: @gd_formats@.',
399
-	'info_format_non_defini' => 'formato non definito',
400
-	'info_grand_ecran' => 'Layout per monitor grandi',
401
-	'info_image_aide' => 'AIUTO',
402
-	'info_image_process_titre' => 'Metodo per generare thumbnail',
403
-	'info_impossible_lire_page' => '<b>Errore!</b> Impossibile  leggere la pagina <tt><html>@test_proxy@</html></tt> attraverso il proxy ',
404
-	'info_installation_systeme_publication' => 'Installazione del sistema di pubblicazione...',
405
-	'info_installer_documents' => 'È possibile installare automaticamente tutti i documenti contenuti nella cartella @upload@.',
406
-	'info_installer_ftp' => 'In qualità di amministratore, puoi installare file (via FTP) nella cartella @upload@ per poi selezionarli direttamente.',
407
-	'info_installer_images' => 'È possibile installare delle immagini in formato JPEG, GIF e PNG.',
408
-	'info_installer_images_dossier' => 'Installare delle immagini nella cartella @upload@ per poterle selezionare direttamente.',
409
-	'info_interface_complete' => 'Interfaccia completa',
410
-	'info_interface_simple' => 'Interfaccia semplificata',
411
-	'info_joindre_document_article' => 'Puoi allegare a questo articolo dei documenti del tipo',
412
-	'info_joindre_document_rubrique' => 'Puoi aggiungere a questa rubrica documenti del tipo',
413
-	'info_joindre_documents_article' => 'Puoi allegare all’articolo documenti del tipo: ',
414
-	'info_l_article' => 'l’articolo',
415
-	'info_la_breve' => 'la breve',
416
-	'info_la_rubrique' => 'la sezione',
417
-	'info_langue_principale' => 'Lingua predefinita del sito',
418
-	'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ pixel',
419
-	'info_les_auteurs_1' => 'di @les_auteurs@ ',
420
-	'info_logo_format_interdit' => 'Solo i logo in formato @formats@ sono permessi.',
421
-	'info_logo_max_poids' => 'I logo devono obbligatoriamente avere una dimensione inferiore a @maxi@ (questo file è di @actuel@).',
422
-	'info_mail_fournisseur' => '[email protected]',
423
-	'info_message_2' => 'MESSAGGIO',
424
-	'info_message_supprime' => 'MESSAGGIO ELIMINATO',
425
-	'info_messages_nb' => '@nb@ messaggi',
426
-	'info_messages_un' => '1 messaggio',
427
-	'info_mise_en_ligne' => 'Data di pubblicazione on line:',
428
-	'info_modification_parametres_securite' => 'modifiche dei parametri di sicurezza',
429
-	'info_mois_courant' => 'Durante il mese:',
430
-	'info_mot_cle_ajoute' => 'La seguente parola chiave è stata aggiunta a',
431
-	'info_multi_herit' => 'Lingua predefinita',
432
-	'info_multi_langues_soulignees' => 'Le <u>lingue sottolineate</u> hanno la traduzione parziale o totale per tutti i testi dell’interfaccia. Se si seleziona una di queste lingue, molti elementi del sito pubblico (date, form) verranno tradotti automaticamente. Per le lingue che non sono sottolineate, invece, tali elementi rimarranno nella lingua principale del sito.',
433
-	'info_multilinguisme' => 'Multilinguismo',
434
-	'info_nom_non_utilisateurs_connectes' => 'Il tuo nome non appare nella lista degli utenti collegati.',
435
-	'info_nom_utilisateurs_connectes' => 'Il tuo nome è visibile nella lista degli utenti collegati.',
436
-	'info_nombre_en_ligne' => 'Attualmente on line:',
437
-	'info_non_resultat' => 'Nessun risultato per "@cherche_mot@"',
438
-	'info_non_utilisation_messagerie' => 'Il sistema di messaggistica interna di questo sito non viene utilizzato.',
439
-	'info_nouveau_message' => 'HAI UN NUOVO MESSAGGIO',
440
-	'info_nouveaux_messages' => 'HAI @total_messages@ NUOVI MESSAGGI',
441
-	'info_numero_abbreviation' => 'N. ',
442
-	'info_obligatoire' => 'Questa informazione è obbligatoria',
443
-	'info_page_actuelle' => 'Pagina corrente',
444
-	'info_pense_bete' => 'MEMO',
445
-	'info_petit_ecran' => 'Layout per monitor piccoli',
446
-	'info_petition_close' => 'Petizione chiusa',
447
-	'info_pixels' => 'pixels',
448
-	'info_plusieurs_mots_trouves' => 'Numerose parole chiave trovate per "@cherche_mot@":',
449
-	'info_portfolio_automatique' => 'Portfolio automatico:',
450
-	'info_premier_resultat' => '[@debut_limit@ primi risultati su @total@]',
451
-	'info_premier_resultat_sur' => '[@debut_limit@ primi risultati su @total@]',
452
-	'info_propose_1' => '[@nom_site_spip@] Propone: @titre@',
453
-	'info_propose_2' => 'Articolo proposto
397
+    'info_fini' => 'Finito!',
398
+    'info_format_image' => 'Formati di file immagine utilizzabili per la creazione delle etichette: @gd_formats@.',
399
+    'info_format_non_defini' => 'formato non definito',
400
+    'info_grand_ecran' => 'Layout per monitor grandi',
401
+    'info_image_aide' => 'AIUTO',
402
+    'info_image_process_titre' => 'Metodo per generare thumbnail',
403
+    'info_impossible_lire_page' => '<b>Errore!</b> Impossibile  leggere la pagina <tt><html>@test_proxy@</html></tt> attraverso il proxy ',
404
+    'info_installation_systeme_publication' => 'Installazione del sistema di pubblicazione...',
405
+    'info_installer_documents' => 'È possibile installare automaticamente tutti i documenti contenuti nella cartella @upload@.',
406
+    'info_installer_ftp' => 'In qualità di amministratore, puoi installare file (via FTP) nella cartella @upload@ per poi selezionarli direttamente.',
407
+    'info_installer_images' => 'È possibile installare delle immagini in formato JPEG, GIF e PNG.',
408
+    'info_installer_images_dossier' => 'Installare delle immagini nella cartella @upload@ per poterle selezionare direttamente.',
409
+    'info_interface_complete' => 'Interfaccia completa',
410
+    'info_interface_simple' => 'Interfaccia semplificata',
411
+    'info_joindre_document_article' => 'Puoi allegare a questo articolo dei documenti del tipo',
412
+    'info_joindre_document_rubrique' => 'Puoi aggiungere a questa rubrica documenti del tipo',
413
+    'info_joindre_documents_article' => 'Puoi allegare all’articolo documenti del tipo: ',
414
+    'info_l_article' => 'l’articolo',
415
+    'info_la_breve' => 'la breve',
416
+    'info_la_rubrique' => 'la sezione',
417
+    'info_langue_principale' => 'Lingua predefinita del sito',
418
+    'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ pixel',
419
+    'info_les_auteurs_1' => 'di @les_auteurs@ ',
420
+    'info_logo_format_interdit' => 'Solo i logo in formato @formats@ sono permessi.',
421
+    'info_logo_max_poids' => 'I logo devono obbligatoriamente avere una dimensione inferiore a @maxi@ (questo file è di @actuel@).',
422
+    'info_mail_fournisseur' => '[email protected]',
423
+    'info_message_2' => 'MESSAGGIO',
424
+    'info_message_supprime' => 'MESSAGGIO ELIMINATO',
425
+    'info_messages_nb' => '@nb@ messaggi',
426
+    'info_messages_un' => '1 messaggio',
427
+    'info_mise_en_ligne' => 'Data di pubblicazione on line:',
428
+    'info_modification_parametres_securite' => 'modifiche dei parametri di sicurezza',
429
+    'info_mois_courant' => 'Durante il mese:',
430
+    'info_mot_cle_ajoute' => 'La seguente parola chiave è stata aggiunta a',
431
+    'info_multi_herit' => 'Lingua predefinita',
432
+    'info_multi_langues_soulignees' => 'Le <u>lingue sottolineate</u> hanno la traduzione parziale o totale per tutti i testi dell’interfaccia. Se si seleziona una di queste lingue, molti elementi del sito pubblico (date, form) verranno tradotti automaticamente. Per le lingue che non sono sottolineate, invece, tali elementi rimarranno nella lingua principale del sito.',
433
+    'info_multilinguisme' => 'Multilinguismo',
434
+    'info_nom_non_utilisateurs_connectes' => 'Il tuo nome non appare nella lista degli utenti collegati.',
435
+    'info_nom_utilisateurs_connectes' => 'Il tuo nome è visibile nella lista degli utenti collegati.',
436
+    'info_nombre_en_ligne' => 'Attualmente on line:',
437
+    'info_non_resultat' => 'Nessun risultato per "@cherche_mot@"',
438
+    'info_non_utilisation_messagerie' => 'Il sistema di messaggistica interna di questo sito non viene utilizzato.',
439
+    'info_nouveau_message' => 'HAI UN NUOVO MESSAGGIO',
440
+    'info_nouveaux_messages' => 'HAI @total_messages@ NUOVI MESSAGGI',
441
+    'info_numero_abbreviation' => 'N. ',
442
+    'info_obligatoire' => 'Questa informazione è obbligatoria',
443
+    'info_page_actuelle' => 'Pagina corrente',
444
+    'info_pense_bete' => 'MEMO',
445
+    'info_petit_ecran' => 'Layout per monitor piccoli',
446
+    'info_petition_close' => 'Petizione chiusa',
447
+    'info_pixels' => 'pixels',
448
+    'info_plusieurs_mots_trouves' => 'Numerose parole chiave trovate per "@cherche_mot@":',
449
+    'info_portfolio_automatique' => 'Portfolio automatico:',
450
+    'info_premier_resultat' => '[@debut_limit@ primi risultati su @total@]',
451
+    'info_premier_resultat_sur' => '[@debut_limit@ primi risultati su @total@]',
452
+    'info_propose_1' => '[@nom_site_spip@] Propone: @titre@',
453
+    'info_propose_2' => 'Articolo proposto
454 454
 ---------------',
455
-	'info_propose_3' => 'L’articolo "@titre@" è proposto per la pubblicazione',
456
-	'info_propose_4' => 'Sei invitato a consultare e a dare la tua opinione ',
457
-	'info_propose_5' => 'nel forum annesso.
455
+    'info_propose_3' => 'L’articolo "@titre@" è proposto per la pubblicazione',
456
+    'info_propose_4' => 'Sei invitato a consultare e a dare la tua opinione ',
457
+    'info_propose_5' => 'nel forum annesso.
458 458
 
459 459
 È disponibile all’indirizzo:',
460
-	'info_publie_01' => 'L’articolo "@titre@" è stato convalidato da @connect_nom@.',
461
-	'info_publie_1' => '[@nom_site_spip@] PUBBLICA: @titre@',
462
-	'info_publie_2' => 'Articolo pubblicato
460
+    'info_publie_01' => 'L’articolo "@titre@" è stato convalidato da @connect_nom@.',
461
+    'info_publie_1' => '[@nom_site_spip@] PUBBLICA: @titre@',
462
+    'info_publie_2' => 'Articolo pubblicato
463 463
 --------------',
464
-	'info_rechercher' => 'Ricerca',
465
-	'info_rechercher_02' => 'Cerca:',
466
-	'info_remplacer_vignette' => 'Sostituire l’icona predefinita con una personalizzata:',
467
-	'info_rubriques_nb' => '@nb@ sezioni',
468
-	'info_rubriques_un' => '1 sezione',
469
-	'info_sans_titre_2' => 'senza titolo',
470
-	'info_selectionner_fichier' => 'Puoi selezionare un file della cartella @upload@',
471
-	'info_selectionner_fichier_2' => 'Seleziona un file:',
472
-	'info_sites_nb' => '@nb@ siti',
473
-	'info_sites_un' => '1 sito',
474
-	'info_supprimer_vignette' => 'Cancella l’immagine',
475
-	'info_symbole_bleu' => 'Il simbolo <b>blu</b> indica un <b>memo</b>: cioè un messaggio ad uso personale.',
476
-	'info_symbole_jaune' => 'Il simbolo <b>giallo</b> indica un <b>annuncio a tutti i redattori</b>: modificabile da tutti gli amministratori e visibile da tutti i redattori.',
477
-	'info_symbole_vert' => 'Il simbolo <b>verde</b> indica i <b>messaggi scambiati con altri utenti  </b> del sito.',
478
-	'info_telecharger_nouveau_logo' => 'Upload di un nuovo logo:',
479
-	'info_telecharger_ordinateur' => 'Upload dal tuo computer:',
480
-	'info_tous_resultats_enregistres' => '[tutti i risultati sono salvati]',
481
-	'info_tout_afficher' => 'Visualizza tutto',
482
-	'info_travaux_texte' => 'Questo sito non è stato ancora configurato. Torna più tardi...',
483
-	'info_travaux_titre' => 'Lavori in corso',
484
-	'info_trop_resultat' => 'Troppi risultati per "@cherche_mot@" ; restringi la ricerca.',
485
-	'info_utilisation_messagerie_interne' => 'Stai utilizzando il sistema di messaggistica interna al sito.',
486
-	'info_valider_lien' => 'convalidare questo link',
487
-	'info_verifier_image' => ', verifica che le immagini siano state trasferite correttamente.',
488
-	'info_vignette_defaut' => 'Loghi predefiniti',
489
-	'info_vignette_personnalisee' => 'Loghi personalizzati',
490
-	'info_visite' => 'visita:',
491
-	'info_vos_rendez_vous' => 'I tuoi prossimi appuntamenti',
492
-	'infos_vos_pense_bete' => 'I tuoi memo',
464
+    'info_rechercher' => 'Ricerca',
465
+    'info_rechercher_02' => 'Cerca:',
466
+    'info_remplacer_vignette' => 'Sostituire l’icona predefinita con una personalizzata:',
467
+    'info_rubriques_nb' => '@nb@ sezioni',
468
+    'info_rubriques_un' => '1 sezione',
469
+    'info_sans_titre_2' => 'senza titolo',
470
+    'info_selectionner_fichier' => 'Puoi selezionare un file della cartella @upload@',
471
+    'info_selectionner_fichier_2' => 'Seleziona un file:',
472
+    'info_sites_nb' => '@nb@ siti',
473
+    'info_sites_un' => '1 sito',
474
+    'info_supprimer_vignette' => 'Cancella l’immagine',
475
+    'info_symbole_bleu' => 'Il simbolo <b>blu</b> indica un <b>memo</b>: cioè un messaggio ad uso personale.',
476
+    'info_symbole_jaune' => 'Il simbolo <b>giallo</b> indica un <b>annuncio a tutti i redattori</b>: modificabile da tutti gli amministratori e visibile da tutti i redattori.',
477
+    'info_symbole_vert' => 'Il simbolo <b>verde</b> indica i <b>messaggi scambiati con altri utenti  </b> del sito.',
478
+    'info_telecharger_nouveau_logo' => 'Upload di un nuovo logo:',
479
+    'info_telecharger_ordinateur' => 'Upload dal tuo computer:',
480
+    'info_tous_resultats_enregistres' => '[tutti i risultati sono salvati]',
481
+    'info_tout_afficher' => 'Visualizza tutto',
482
+    'info_travaux_texte' => 'Questo sito non è stato ancora configurato. Torna più tardi...',
483
+    'info_travaux_titre' => 'Lavori in corso',
484
+    'info_trop_resultat' => 'Troppi risultati per "@cherche_mot@" ; restringi la ricerca.',
485
+    'info_utilisation_messagerie_interne' => 'Stai utilizzando il sistema di messaggistica interna al sito.',
486
+    'info_valider_lien' => 'convalidare questo link',
487
+    'info_verifier_image' => ', verifica che le immagini siano state trasferite correttamente.',
488
+    'info_vignette_defaut' => 'Loghi predefiniti',
489
+    'info_vignette_personnalisee' => 'Loghi personalizzati',
490
+    'info_visite' => 'visita:',
491
+    'info_vos_rendez_vous' => 'I tuoi prossimi appuntamenti',
492
+    'infos_vos_pense_bete' => 'I tuoi memo',
493 493
 
494
-	// L
495
-	'label_ajout_id_rapide' => 'Inserimento rapido',
496
-	'label_poids_fichier' => 'Dimensione',
497
-	'label_ponctuer' => '@label@:',
498
-	'lien_afficher_icones_seuls' => 'Mostra solo le icone',
499
-	'lien_afficher_texte_icones' => 'Mostra le icone e il testo',
500
-	'lien_afficher_texte_seul' => 'Mostra solo il testo',
501
-	'lien_aller_a_la_derniere_page' => 'Vai all’ultima pagina',
502
-	'lien_aller_a_la_page_nb' => 'Vai alla pagina @nb@',
503
-	'lien_aller_a_la_page_precedente' => 'Vai alla pagina precedente',
504
-	'lien_aller_a_la_page_suivante' => 'Vai alla pagina successiva',
505
-	'lien_aller_a_la_premiere_page' => 'Vai alla prima pagina',
506
-	'lien_liberer' => 'libera',
507
-	'lien_liberer_tous' => 'liberare questi articoli',
508
-	'lien_nouvea_pense_bete' => 'NUOVO MEMO',
509
-	'lien_nouveau_message' => 'NUOVO MESSAGGIO',
510
-	'lien_nouvelle_annonce' => 'NUOVO ANNUNCIO',
511
-	'lien_petitions' => 'PETIZIONE',
512
-	'lien_popularite' => 'popolarità: @popularite@%',
513
-	'lien_racine_site' => 'ROOT DEL SITO',
514
-	'lien_reessayer' => 'Prova di nuovo',
515
-	'lien_repondre_message' => 'Rispondi',
516
-	'lien_supprimer' => 'cancella',
517
-	'lien_tout_afficher' => 'Visualizza tutto ',
518
-	'lien_visite_site' => 'visita il sito',
519
-	'lien_visites' => '@visites@ visite',
520
-	'lien_voir_auteur' => 'Vedi questo autore',
521
-	'ligne' => 'Linea',
522
-	'login' => 'Collegamento',
523
-	'login_acces_prive' => 'accesso all’area riservata',
524
-	'login_autre_identifiant' => 'connettiti con un altro ID',
525
-	'login_cookie_accepte' => 'Imposta il tuo browser affinché li accetti (almeno per questo sito).',
526
-	'login_cookie_oblige' => 'Per identificarsi in modo sicuro su questo sito è necessario accettare i cookie.',
527
-	'login_deconnexion_ok' => 'Disconnessione effettuata.',
528
-	'login_erreur_pass' => 'Errore nella password.',
529
-	'login_espace_prive' => 'area riservata',
530
-	'login_identifiant_inconnu' => 'L’ID « @login@ » risulta inesistente.',
531
-	'login_login' => 'Login:',
532
-	'login_login2' => 'Login o indirizzo email:',
533
-	'login_login_pass_incorrect' => '(Login o password errati.)',
534
-	'login_motpasseoublie' => 'password dimenticata?',
535
-	'login_non_securise' => 'Attenzione, questo modulo non è sicuro.
494
+    // L
495
+    'label_ajout_id_rapide' => 'Inserimento rapido',
496
+    'label_poids_fichier' => 'Dimensione',
497
+    'label_ponctuer' => '@label@:',
498
+    'lien_afficher_icones_seuls' => 'Mostra solo le icone',
499
+    'lien_afficher_texte_icones' => 'Mostra le icone e il testo',
500
+    'lien_afficher_texte_seul' => 'Mostra solo il testo',
501
+    'lien_aller_a_la_derniere_page' => 'Vai all’ultima pagina',
502
+    'lien_aller_a_la_page_nb' => 'Vai alla pagina @nb@',
503
+    'lien_aller_a_la_page_precedente' => 'Vai alla pagina precedente',
504
+    'lien_aller_a_la_page_suivante' => 'Vai alla pagina successiva',
505
+    'lien_aller_a_la_premiere_page' => 'Vai alla prima pagina',
506
+    'lien_liberer' => 'libera',
507
+    'lien_liberer_tous' => 'liberare questi articoli',
508
+    'lien_nouvea_pense_bete' => 'NUOVO MEMO',
509
+    'lien_nouveau_message' => 'NUOVO MESSAGGIO',
510
+    'lien_nouvelle_annonce' => 'NUOVO ANNUNCIO',
511
+    'lien_petitions' => 'PETIZIONE',
512
+    'lien_popularite' => 'popolarità: @popularite@%',
513
+    'lien_racine_site' => 'ROOT DEL SITO',
514
+    'lien_reessayer' => 'Prova di nuovo',
515
+    'lien_repondre_message' => 'Rispondi',
516
+    'lien_supprimer' => 'cancella',
517
+    'lien_tout_afficher' => 'Visualizza tutto ',
518
+    'lien_visite_site' => 'visita il sito',
519
+    'lien_visites' => '@visites@ visite',
520
+    'lien_voir_auteur' => 'Vedi questo autore',
521
+    'ligne' => 'Linea',
522
+    'login' => 'Collegamento',
523
+    'login_acces_prive' => 'accesso all’area riservata',
524
+    'login_autre_identifiant' => 'connettiti con un altro ID',
525
+    'login_cookie_accepte' => 'Imposta il tuo browser affinché li accetti (almeno per questo sito).',
526
+    'login_cookie_oblige' => 'Per identificarsi in modo sicuro su questo sito è necessario accettare i cookie.',
527
+    'login_deconnexion_ok' => 'Disconnessione effettuata.',
528
+    'login_erreur_pass' => 'Errore nella password.',
529
+    'login_espace_prive' => 'area riservata',
530
+    'login_identifiant_inconnu' => 'L’ID « @login@ » risulta inesistente.',
531
+    'login_login' => 'Login:',
532
+    'login_login2' => 'Login o indirizzo email:',
533
+    'login_login_pass_incorrect' => '(Login o password errati.)',
534
+    'login_motpasseoublie' => 'password dimenticata?',
535
+    'login_non_securise' => 'Attenzione, questo modulo non è sicuro.
536 536
 Se non vuoi che la tua password possa essere intercettata sulla rete,
537 537
 devi attivare Javascript nel tuo browser e',
538
-	'login_nouvelle_tentative' => 'Nuovo tentativo',
539
-	'login_par_ici' => 'Sei registrato... per di qua...',
540
-	'login_pass2' => 'Password:',
541
-	'login_preferez_refuser' => '<b>Se preferisci non accettare i cookie</b> c’è un altro metodo (meno sicuro) per connettersi:',
542
-	'login_recharger' => 'aggiorna questa pagina',
543
-	'login_rester_identifie' => 'Conservare l’identificazione per alcuni giorni',
544
-	'login_retour_public' => 'Ritorna al sito pubblico',
545
-	'login_retour_site' => 'Ritorna al sito pubblico',
546
-	'login_retoursitepublic' => 'ritorna al sito pubblico',
547
-	'login_sans_cookie' => 'Identificazione senza cookie',
548
-	'login_securise' => 'Accesso protetto',
549
-	'login_sinscrire' => 'registrati',
550
-	'login_test_navigateur' => 'test browser/riconnessione',
551
-	'login_verifiez_navigateur' => '(Verifica comunque se il tuo browser ha memorizzato la password...)',
538
+    'login_nouvelle_tentative' => 'Nuovo tentativo',
539
+    'login_par_ici' => 'Sei registrato... per di qua...',
540
+    'login_pass2' => 'Password:',
541
+    'login_preferez_refuser' => '<b>Se preferisci non accettare i cookie</b> c’è un altro metodo (meno sicuro) per connettersi:',
542
+    'login_recharger' => 'aggiorna questa pagina',
543
+    'login_rester_identifie' => 'Conservare l’identificazione per alcuni giorni',
544
+    'login_retour_public' => 'Ritorna al sito pubblico',
545
+    'login_retour_site' => 'Ritorna al sito pubblico',
546
+    'login_retoursitepublic' => 'ritorna al sito pubblico',
547
+    'login_sans_cookie' => 'Identificazione senza cookie',
548
+    'login_securise' => 'Accesso protetto',
549
+    'login_sinscrire' => 'registrati',
550
+    'login_test_navigateur' => 'test browser/riconnessione',
551
+    'login_verifiez_navigateur' => '(Verifica comunque se il tuo browser ha memorizzato la password...)',
552 552
 
553
-	// M
554
-	'masquer_colonne' => 'Nascondi questa colonna',
555
-	'masquer_trad' => 'nascondere le traduzioni',
556
-	'message_nouveaux_identifiants_echec' => 'Impossibile generare nuovi identificativi',
557
-	'message_nouveaux_identifiants_echec_envoi' => 'Le nuove credenziali di accesso non possono essere inviate.',
558
-	'message_nouveaux_identifiants_ok' => 'Le nuove credenziali di accsso sono state inviate a @email@.',
559
-	'module_fichiers_langues' => 'File lingua',
553
+    // M
554
+    'masquer_colonne' => 'Nascondi questa colonna',
555
+    'masquer_trad' => 'nascondere le traduzioni',
556
+    'message_nouveaux_identifiants_echec' => 'Impossibile generare nuovi identificativi',
557
+    'message_nouveaux_identifiants_echec_envoi' => 'Le nuove credenziali di accesso non possono essere inviate.',
558
+    'message_nouveaux_identifiants_ok' => 'Le nuove credenziali di accsso sono state inviate a @email@.',
559
+    'module_fichiers_langues' => 'File lingua',
560 560
 
561
-	// N
562
-	'navigateur_pas_redirige' => 'Se la pagina non cambia automaticamente, cliccare qui per continuare.',
563
-	'numero' => 'Numero',
561
+    // N
562
+    'navigateur_pas_redirige' => 'Se la pagina non cambia automaticamente, cliccare qui per continuare.',
563
+    'numero' => 'Numero',
564 564
 
565
-	// O
566
-	'occurence' => 'Occorrenza',
567
-	'onglet_affacer_base' => 'Svuota il database',
568
-	'onglet_auteur' => 'L’autore',
569
-	'onglet_contenu_site' => 'Contenuto del sito',
570
-	'onglet_evolution_visite_mod' => 'Evoluzione',
571
-	'onglet_fonctions_avances' => 'Funzioni avanzate',
572
-	'onglet_informations_personnelles' => 'Dati personali',
573
-	'onglet_interactivite' => 'Interattività',
574
-	'onglet_messagerie' => 'Messaggi',
575
-	'onglet_repartition_rubrique' => 'Ripartizione per rubriche',
576
-	'onglet_save_restaur_base' => 'Salva/ripristina il database',
577
-	'onglet_vider_cache' => 'Svuota la cache',
565
+    // O
566
+    'occurence' => 'Occorrenza',
567
+    'onglet_affacer_base' => 'Svuota il database',
568
+    'onglet_auteur' => 'L’autore',
569
+    'onglet_contenu_site' => 'Contenuto del sito',
570
+    'onglet_evolution_visite_mod' => 'Evoluzione',
571
+    'onglet_fonctions_avances' => 'Funzioni avanzate',
572
+    'onglet_informations_personnelles' => 'Dati personali',
573
+    'onglet_interactivite' => 'Interattività',
574
+    'onglet_messagerie' => 'Messaggi',
575
+    'onglet_repartition_rubrique' => 'Ripartizione per rubriche',
576
+    'onglet_save_restaur_base' => 'Salva/ripristina il database',
577
+    'onglet_vider_cache' => 'Svuota la cache',
578 578
 
579
-	// P
580
-	'pass_choix_pass' => 'Inserisci una nuova password:',
581
-	'pass_erreur' => 'Errore',
582
-	'pass_erreur_acces_refuse' => '<b>Errore:</b> non hai più accesso a questo sito.',
583
-	'pass_erreur_code_inconnu' => '<b>Errore:</b> il codice inserito non corriponde a nessuno degli utenti che hanno accesso a questo sito.',
584
-	'pass_erreur_non_enregistre' => '<b>Errore:</b> l’indirizzo <tt>@email_oubli@</tt> non è registrato su questo sito.',
585
-	'pass_erreur_non_valide' => '<b>Errore:</b> questo indirizzo <tt>@email_oubli@</tt> non è valido!',
586
-	'pass_erreur_probleme_technique' => '<b>Errore:</b> l’email non può essere inviato a causa di un problema tecnico.',
587
-	'pass_espace_prive_bla' => 'L’area riservata di questo sito è accessibile
579
+    // P
580
+    'pass_choix_pass' => 'Inserisci una nuova password:',
581
+    'pass_erreur' => 'Errore',
582
+    'pass_erreur_acces_refuse' => '<b>Errore:</b> non hai più accesso a questo sito.',
583
+    'pass_erreur_code_inconnu' => '<b>Errore:</b> il codice inserito non corriponde a nessuno degli utenti che hanno accesso a questo sito.',
584
+    'pass_erreur_non_enregistre' => '<b>Errore:</b> l’indirizzo <tt>@email_oubli@</tt> non è registrato su questo sito.',
585
+    'pass_erreur_non_valide' => '<b>Errore:</b> questo indirizzo <tt>@email_oubli@</tt> non è valido!',
586
+    'pass_erreur_probleme_technique' => '<b>Errore:</b> l’email non può essere inviato a causa di un problema tecnico.',
587
+    'pass_espace_prive_bla' => 'L’area riservata di questo sito è accessibile
588 588
 unicamente agli utenti registrati.
589 589
 Una volta iscritto, potrai consultare gli articoli in corso di redazione,
590 590
 proporre nuovi articoli e partecipare a tutti i forum.',
591
-	'pass_forum_bla' => 'Hai chiesto di intervenire su un forum
591
+    'pass_forum_bla' => 'Hai chiesto di intervenire su un forum
592 592
 riservato agli utenti registrati.',
593
-	'pass_indiquez_cidessous' => 'Indica qui sotto l’indirizzo email con il quale ti sei registrato precedentemente.
593
+    'pass_indiquez_cidessous' => 'Indica qui sotto l’indirizzo email con il quale ti sei registrato precedentemente.
594 594
 Riceverai un email con le istruzioni per recuperare i dati di accesso al sito.',
595
-	'pass_mail_passcookie' => '(questo è un messaggio generato automaticamente)
595
+    'pass_mail_passcookie' => '(questo è un messaggio generato automaticamente)
596 596
 Per recuperare i dati di accesso al sito
597 597
 @nom_site_spip@ (@adresse_site@)
598 598
 
@@ -603,143 +603,143 @@  discard block
 block discarded – undo
603 603
 e riconnetterti all’area riservata.
604 604
 
605 605
 ',
606
-	'pass_mot_oublie' => 'Password dimenticata',
607
-	'pass_nouveau_enregistre' => 'La nuova password è stata salvata.',
608
-	'pass_nouveau_pass' => 'Nuova password',
609
-	'pass_ok' => 'OK',
610
-	'pass_oubli_mot' => 'Password dimenticata',
611
-	'pass_procedure_changer' => 'Per modificare la tua password, dobbiamo prima verificare la tua identità. Inserisci l’indirizzo email associato al tuo account.',
612
-	'pass_quitter_fenetre' => 'Chiudi la finestra',
613
-	'pass_rappel_login' => 'Ricorda: il tuo ID (login) è « @login@ ».',
614
-	'pass_recevoir_mail' => 'Riceverai un email contenente le istruzioni per recuperare i dati di accesso al sito.',
615
-	'pass_retour_public' => 'Torna al sito pubblico',
616
-	'pass_rien_a_faire_ici' => 'Vicolo cieco...',
617
-	'pass_vousinscrire' => 'Registrati al sito',
618
-	'precedent' => 'precedente',
619
-	'previsualisation' => 'Anteprima',
620
-	'previsualiser' => 'Visualizzare l’anteprima',
606
+    'pass_mot_oublie' => 'Password dimenticata',
607
+    'pass_nouveau_enregistre' => 'La nuova password è stata salvata.',
608
+    'pass_nouveau_pass' => 'Nuova password',
609
+    'pass_ok' => 'OK',
610
+    'pass_oubli_mot' => 'Password dimenticata',
611
+    'pass_procedure_changer' => 'Per modificare la tua password, dobbiamo prima verificare la tua identità. Inserisci l’indirizzo email associato al tuo account.',
612
+    'pass_quitter_fenetre' => 'Chiudi la finestra',
613
+    'pass_rappel_login' => 'Ricorda: il tuo ID (login) è « @login@ ».',
614
+    'pass_recevoir_mail' => 'Riceverai un email contenente le istruzioni per recuperare i dati di accesso al sito.',
615
+    'pass_retour_public' => 'Torna al sito pubblico',
616
+    'pass_rien_a_faire_ici' => 'Vicolo cieco...',
617
+    'pass_vousinscrire' => 'Registrati al sito',
618
+    'precedent' => 'precedente',
619
+    'previsualisation' => 'Anteprima',
620
+    'previsualiser' => 'Visualizzare l’anteprima',
621 621
 
622
-	// R
623
-	'retour' => 'Indietro',
622
+    // R
623
+    'retour' => 'Indietro',
624 624
 
625
-	// S
626
-	'spip_conforme_dtd' => 'SPIP ritiene che questo documento è conforme al proprio DOCTYPE:',
627
-	'squelette' => 'modello di layout',
628
-	'squelette_inclus_ligne' => 'modello incluso, linea',
629
-	'squelette_ligne' => 'modello, linea',
630
-	'stats_visites_et_popularite' => '@visites@ visite; popolarità: @popularite@',
631
-	'suivant' => 'successivo',
625
+    // S
626
+    'spip_conforme_dtd' => 'SPIP ritiene che questo documento è conforme al proprio DOCTYPE:',
627
+    'squelette' => 'modello di layout',
628
+    'squelette_inclus_ligne' => 'modello incluso, linea',
629
+    'squelette_ligne' => 'modello, linea',
630
+    'stats_visites_et_popularite' => '@visites@ visite; popolarità: @popularite@',
631
+    'suivant' => 'successivo',
632 632
 
633
-	// T
634
-	'taille_go' => '@taille@ Gb',
635
-	'taille_ko' => '@taille@ Kb',
636
-	'taille_mo' => '@taille@ Mb',
637
-	'taille_octets' => '@taille@ byte',
638
-	'texte_actualite_site_1' => 'Quando avrai maggiore familiarità con l’interfaccia, clicca su «',
639
-	'texte_actualite_site_2' => 'interfaccia completa',
640
-	'texte_actualite_site_3' => '» per avere accesso a nuove opzioni.',
641
-	'texte_creation_automatique_vignette' => 'La creazione automatica di thumbnail di anteprima è attivata. Se inserisci in questo campo delle immagini in formato @gd_formats@, esse saranno accompagnate da thumbnail con una dimensione massima di @taille_preview@ pixels. ',
642
-	'texte_documents_associes' => 'I seguenti documenti sono associati all’articolo,
633
+    // T
634
+    'taille_go' => '@taille@ Gb',
635
+    'taille_ko' => '@taille@ Kb',
636
+    'taille_mo' => '@taille@ Mb',
637
+    'taille_octets' => '@taille@ byte',
638
+    'texte_actualite_site_1' => 'Quando avrai maggiore familiarità con l’interfaccia, clicca su «',
639
+    'texte_actualite_site_2' => 'interfaccia completa',
640
+    'texte_actualite_site_3' => '» per avere accesso a nuove opzioni.',
641
+    'texte_creation_automatique_vignette' => 'La creazione automatica di thumbnail di anteprima è attivata. Se inserisci in questo campo delle immagini in formato @gd_formats@, esse saranno accompagnate da thumbnail con una dimensione massima di @taille_preview@ pixels. ',
642
+    'texte_documents_associes' => 'I seguenti documenti sono associati all’articolo,
643 643
 ma non vi sono stati inseriti direttamente.
644 644
 A seconda delle impostazioni di pubblicazione del sito,
645 645
 potranno essere disponibili sotto forma di documenti allegati.',
646
-	'texte_erreur_mise_niveau_base' => 'Errore nel database durante l’aggiornamento.
646
+    'texte_erreur_mise_niveau_base' => 'Errore nel database durante l’aggiornamento.
647 647
 L’immagine <b>@fichier@</b> non è passata (articolo @id_article@).
648 648
 Prendi nota di questo riferimento, ritenta l’aggiornamento,
649 649
 e verifica che le immagini si vedano ancora
650 650
 negli articoli.',
651
-	'texte_erreur_visiteur' => 'Si è tentato di entrare nell’area riservata con un login non valido.',
652
-	'texte_inc_auth_1' => 'Sei identificato con il
651
+    'texte_erreur_visiteur' => 'Si è tentato di entrare nell’area riservata con un login non valido.',
652
+    'texte_inc_auth_1' => 'Sei identificato con il
653 653
 login <b>@auth_login@</b>, ma nel database non esiste. 
654 654
 Prova a ',
655
-	'texte_inc_auth_2' => 'collegarti nuovamente',
656
-	'texte_inc_auth_3' => ', dopo aver eventualmente effettuato un logout e 
655
+    'texte_inc_auth_2' => 'collegarti nuovamente',
656
+    'texte_inc_auth_3' => ', dopo aver eventualmente effettuato un logout e 
657 657
 riavviato il tuo browser.',
658
-	'texte_inc_config' => 'Le modifiche effettuate in queste pagine influenzano notevolmente il
658
+    'texte_inc_config' => 'Le modifiche effettuate in queste pagine influenzano notevolmente il
659 659
 funzionamento del sito. Non intervenire finché non conosci bene i meccanismi del sistema SPIP. <br /><br /><b>In generale, si consiglia di lasciare sempre al webmaster la configurazione delle opzioni qui presenti.</b>',
660
-	'texte_inc_meta_1' => 'La scrittura del file <code>@fichier@</code> ha causato un errore di sistema. L’amministratore del sito, ',
661
-	'texte_inc_meta_2' => 'verifichi i diritti di scrittura',
662
-	'texte_inc_meta_3' => 'nella cartella <code>@repertoire@</code>.',
663
-	'texte_statut_en_cours_redaction' => 'in corso di redazione',
664
-	'texte_statut_poubelle' => 'nel cestino',
665
-	'texte_statut_propose_evaluation' => 'proposto per una valutazione',
666
-	'texte_statut_publie' => 'pubblicato on line',
667
-	'texte_statut_refuse' => 'rifiutato',
668
-	'titre_ajouter_mot_cle' => 'AGGIUNGI UNA PAROLA CHIAVE:',
669
-	'titre_cadre_raccourcis' => 'SCELTA RAPIDA:',
670
-	'titre_changer_couleur_interface' => 'Cambia il colore dell’interfaccia',
671
-	'titre_image_admin_article' => 'Puoi amministrare questo articolo',
672
-	'titre_image_administrateur' => 'Amministratore',
673
-	'titre_image_aide' => 'Aiuto su questo elemento',
674
-	'titre_image_auteur_supprime' => 'Autore eliminato',
675
-	'titre_image_redacteur' => 'Redattore senza accesso',
676
-	'titre_image_redacteur_02' => 'Redattore',
677
-	'titre_image_selecteur' => 'Mostra la lista',
678
-	'titre_image_visiteur' => 'Visitatore',
679
-	'titre_joindre_document' => 'ALLEGA UN DOCUMENTO',
680
-	'titre_mots_cles' => 'PAROLE CHIAVE',
681
-	'titre_probleme_technique' => 'Attenzione: un problema tecnico (server SQL) impedisce l’accesso a questa parte del sito. Grazie per la comprensione.',
682
-	'titre_publier_document' => 'ALLEGA UN DOCUMENTO A QUESTA RUBRICA',
683
-	'titre_signatures_attente' => 'Firme in corso di convalida',
684
-	'titre_signatures_confirmees' => 'Firme confermate',
685
-	'titre_statistiques' => 'Statistiche del sito',
686
-	'titre_titre_document' => 'Titolo del documento:',
687
-	'todo' => 'prossimo',
688
-	'trad_definir_reference' => 'Scegliere "@titre@" come riferimento per le traduzioni',
689
-	'trad_reference' => '(articolo di riferimento)',
660
+    'texte_inc_meta_1' => 'La scrittura del file <code>@fichier@</code> ha causato un errore di sistema. L’amministratore del sito, ',
661
+    'texte_inc_meta_2' => 'verifichi i diritti di scrittura',
662
+    'texte_inc_meta_3' => 'nella cartella <code>@repertoire@</code>.',
663
+    'texte_statut_en_cours_redaction' => 'in corso di redazione',
664
+    'texte_statut_poubelle' => 'nel cestino',
665
+    'texte_statut_propose_evaluation' => 'proposto per una valutazione',
666
+    'texte_statut_publie' => 'pubblicato on line',
667
+    'texte_statut_refuse' => 'rifiutato',
668
+    'titre_ajouter_mot_cle' => 'AGGIUNGI UNA PAROLA CHIAVE:',
669
+    'titre_cadre_raccourcis' => 'SCELTA RAPIDA:',
670
+    'titre_changer_couleur_interface' => 'Cambia il colore dell’interfaccia',
671
+    'titre_image_admin_article' => 'Puoi amministrare questo articolo',
672
+    'titre_image_administrateur' => 'Amministratore',
673
+    'titre_image_aide' => 'Aiuto su questo elemento',
674
+    'titre_image_auteur_supprime' => 'Autore eliminato',
675
+    'titre_image_redacteur' => 'Redattore senza accesso',
676
+    'titre_image_redacteur_02' => 'Redattore',
677
+    'titre_image_selecteur' => 'Mostra la lista',
678
+    'titre_image_visiteur' => 'Visitatore',
679
+    'titre_joindre_document' => 'ALLEGA UN DOCUMENTO',
680
+    'titre_mots_cles' => 'PAROLE CHIAVE',
681
+    'titre_probleme_technique' => 'Attenzione: un problema tecnico (server SQL) impedisce l’accesso a questa parte del sito. Grazie per la comprensione.',
682
+    'titre_publier_document' => 'ALLEGA UN DOCUMENTO A QUESTA RUBRICA',
683
+    'titre_signatures_attente' => 'Firme in corso di convalida',
684
+    'titre_signatures_confirmees' => 'Firme confermate',
685
+    'titre_statistiques' => 'Statistiche del sito',
686
+    'titre_titre_document' => 'Titolo del documento:',
687
+    'todo' => 'prossimo',
688
+    'trad_definir_reference' => 'Scegliere "@titre@" come riferimento per le traduzioni',
689
+    'trad_reference' => '(articolo di riferimento)',
690 690
 
691
-	// U
692
-	'upload_limit' => 'Questo file è trppo grande per il server; la dimensione massima consentita in <i>upload</i> è di @max@.',
691
+    // U
692
+    'upload_limit' => 'Questo file è trppo grande per il server; la dimensione massima consentita in <i>upload</i> è di @max@.',
693 693
 
694
-	// Z
695
-	'zbug_balise_b_aval' => ': ciclo B deve precedere ciclo BOUCLE',
696
-	'zbug_balise_inexistante' => 'errore @from@: il tag #@balise@ non esiste ',
697
-	'zbug_balise_sans_argument' => 'Argomento mancante nel tag @balise@',
698
-	'zbug_boucle' => 'ciclo',
699
-	'zbug_boucle_recursive_undef' => 'ciclo ricorsivo non definito',
700
-	'zbug_calcul' => 'calcolo',
701
-	'zbug_champ_hors_boucle' => 'Campo @champ@ fuori dal ciclo',
702
-	'zbug_champ_hors_critere' => 'Il campo @champ@ non rispetta il criterio @critere@',
703
-	'zbug_champ_hors_motif' => 'Campo @champ@ fuori da un contesto @motif@',
704
-	'zbug_code' => 'codice',
705
-	'zbug_critere_inconnu' => 'criterio sconosciuto @critere@',
706
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} su una tabella senza una chiave primaria atomica',
707
-	'zbug_distant_interdit' => 'esterno non accessibile',
708
-	'zbug_doublon_table_sans_cle_primaire' => 'doppioni su una tabella senza chiave primaria atomica',
709
-	'zbug_doublon_table_sans_index' => 'doppioni su una tabella senza indice',
710
-	'zbug_erreur_boucle_double' => 'BOUCLE@id@: doppia definizione',
711
-	'zbug_erreur_boucle_fermant' => 'BOUCLE@id@: chiusura tag mancante',
712
-	'zbug_erreur_boucle_syntaxe' => 'Sintassi del ciclo errata',
713
-	'zbug_erreur_compilation' => 'Errore di compilazione',
714
-	'zbug_erreur_execution_page' => 'errore di esecuzione della pagina',
715
-	'zbug_erreur_filtre' => 'Errore : filtro <b>« @filtre@ »</b> non esistente',
716
-	'zbug_erreur_filtre_nbarg_min' => 'Filtro@filtre@: argomento(i) @nb@ mancante(i)',
717
-	'zbug_erreur_meme_parent' => 'il criterio {meme_parent} si applica unicamente ai cicli (FORUMS) o (RUBRIQUES)',
718
-	'zbug_erreur_squelette' => 'Errore/i nel modello di layout',
719
-	'zbug_hors_compilation' => 'Fuori Compilazione',
720
-	'zbug_info_erreur_squelette' => 'Errore sul sito',
721
-	'zbug_inversion_ordre_inexistant' => 'inversione di un ordine non esistente',
722
-	'zbug_pagination_sans_critere' => '#PAGINATION senza criterio {pagination} oppure usato in un ciclo ricorsivo',
723
-	'zbug_parametres_inclus_incorrects' => 'Parametri di inclusione non corretti',
724
-	'zbug_profile' => 'Tempo di elaborazione: @time@',
725
-	'zbug_resultat' => 'risultato',
726
-	'zbug_serveur_indefini' => 'server SQL non definito',
727
-	'zbug_statistiques' => 'Statistiche delle query SQL in ordine di durata',
728
-	'zbug_table_inconnue' => 'Tabella SQL « @table@ » sconosciuta',
729
-	'zxml_connus_attributs' => 'attributi conosciuti',
730
-	'zxml_de' => 'di',
731
-	'zxml_inconnu_attribut' => 'attributo sconosciuto',
732
-	'zxml_inconnu_balise' => 'segnaposto sconosciuto',
733
-	'zxml_inconnu_entite' => 'entità sconosciuta',
734
-	'zxml_inconnu_id' => 'ID sconosciuto',
735
-	'zxml_mais_de' => 'ma di',
736
-	'zxml_non_conforme' => 'non è conforme al motivo',
737
-	'zxml_non_fils' => 'non è un figlio di',
738
-	'zxml_nonvide_balise' => 'segnaposto non vuoto',
739
-	'zxml_obligatoire_attribut' => 'attributo obbligatorio ma assente in',
740
-	'zxml_succession_fils_incorrecte' => 'successione dei figli non corretta',
741
-	'zxml_survoler' => 'passarci sopra col mouse per vedere i corretti',
742
-	'zxml_valeur_attribut' => 'valore dell’attributo',
743
-	'zxml_vide_balise' => 'tag vuoto',
744
-	'zxml_vu' => 'visto in precedenza'
694
+    // Z
695
+    'zbug_balise_b_aval' => ': ciclo B deve precedere ciclo BOUCLE',
696
+    'zbug_balise_inexistante' => 'errore @from@: il tag #@balise@ non esiste ',
697
+    'zbug_balise_sans_argument' => 'Argomento mancante nel tag @balise@',
698
+    'zbug_boucle' => 'ciclo',
699
+    'zbug_boucle_recursive_undef' => 'ciclo ricorsivo non definito',
700
+    'zbug_calcul' => 'calcolo',
701
+    'zbug_champ_hors_boucle' => 'Campo @champ@ fuori dal ciclo',
702
+    'zbug_champ_hors_critere' => 'Il campo @champ@ non rispetta il criterio @critere@',
703
+    'zbug_champ_hors_motif' => 'Campo @champ@ fuori da un contesto @motif@',
704
+    'zbug_code' => 'codice',
705
+    'zbug_critere_inconnu' => 'criterio sconosciuto @critere@',
706
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} su una tabella senza una chiave primaria atomica',
707
+    'zbug_distant_interdit' => 'esterno non accessibile',
708
+    'zbug_doublon_table_sans_cle_primaire' => 'doppioni su una tabella senza chiave primaria atomica',
709
+    'zbug_doublon_table_sans_index' => 'doppioni su una tabella senza indice',
710
+    'zbug_erreur_boucle_double' => 'BOUCLE@id@: doppia definizione',
711
+    'zbug_erreur_boucle_fermant' => 'BOUCLE@id@: chiusura tag mancante',
712
+    'zbug_erreur_boucle_syntaxe' => 'Sintassi del ciclo errata',
713
+    'zbug_erreur_compilation' => 'Errore di compilazione',
714
+    'zbug_erreur_execution_page' => 'errore di esecuzione della pagina',
715
+    'zbug_erreur_filtre' => 'Errore : filtro <b>« @filtre@ »</b> non esistente',
716
+    'zbug_erreur_filtre_nbarg_min' => 'Filtro@filtre@: argomento(i) @nb@ mancante(i)',
717
+    'zbug_erreur_meme_parent' => 'il criterio {meme_parent} si applica unicamente ai cicli (FORUMS) o (RUBRIQUES)',
718
+    'zbug_erreur_squelette' => 'Errore/i nel modello di layout',
719
+    'zbug_hors_compilation' => 'Fuori Compilazione',
720
+    'zbug_info_erreur_squelette' => 'Errore sul sito',
721
+    'zbug_inversion_ordre_inexistant' => 'inversione di un ordine non esistente',
722
+    'zbug_pagination_sans_critere' => '#PAGINATION senza criterio {pagination} oppure usato in un ciclo ricorsivo',
723
+    'zbug_parametres_inclus_incorrects' => 'Parametri di inclusione non corretti',
724
+    'zbug_profile' => 'Tempo di elaborazione: @time@',
725
+    'zbug_resultat' => 'risultato',
726
+    'zbug_serveur_indefini' => 'server SQL non definito',
727
+    'zbug_statistiques' => 'Statistiche delle query SQL in ordine di durata',
728
+    'zbug_table_inconnue' => 'Tabella SQL « @table@ » sconosciuta',
729
+    'zxml_connus_attributs' => 'attributi conosciuti',
730
+    'zxml_de' => 'di',
731
+    'zxml_inconnu_attribut' => 'attributo sconosciuto',
732
+    'zxml_inconnu_balise' => 'segnaposto sconosciuto',
733
+    'zxml_inconnu_entite' => 'entità sconosciuta',
734
+    'zxml_inconnu_id' => 'ID sconosciuto',
735
+    'zxml_mais_de' => 'ma di',
736
+    'zxml_non_conforme' => 'non è conforme al motivo',
737
+    'zxml_non_fils' => 'non è un figlio di',
738
+    'zxml_nonvide_balise' => 'segnaposto non vuoto',
739
+    'zxml_obligatoire_attribut' => 'attributo obbligatorio ma assente in',
740
+    'zxml_succession_fils_incorrecte' => 'successione dei figli non corretta',
741
+    'zxml_survoler' => 'passarci sopra col mouse per vedere i corretti',
742
+    'zxml_valeur_attribut' => 'valore dell’attributo',
743
+    'zxml_vide_balise' => 'tag vuoto',
744
+    'zxml_vu' => 'visto in precedenza'
745 745
 );
Please login to merge, or discard this patch.
ecrire/inc/drapeau_edition.php 1 patch
Indentation   +109 added lines, -109 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
  * @package SPIP\Core\Drapeaux\Edition
31 31
  **/
32 32
 if (!defined('_ECRIRE_INC_VERSION')) {
33
-	return;
33
+    return;
34 34
 }
35 35
 
36 36
 
@@ -45,46 +45,46 @@  discard block
 block discarded – undo
45 45
  *     `[ type d'objet ][id_objet][id_auteur][nom de l'auteur] = time()`
46 46
  **/
47 47
 function lire_tableau_edition() {
48
-	$edition = @unserialize($GLOBALS['meta']['drapeau_edition']);
49
-	if (!$edition) {
50
-		return [];
51
-	}
52
-	$changed = false;
48
+    $edition = @unserialize($GLOBALS['meta']['drapeau_edition']);
49
+    if (!$edition) {
50
+        return [];
51
+    }
52
+    $changed = false;
53 53
 
54
-	$bon_pour_le_service = time() - 3600;
55
-	// parcourir le tableau et virer les vieux
56
-	foreach ($edition as $objet => $data) {
57
-		if (!is_array($data)) {
58
-			unset($edition[$objet]);
59
-		} // vieille version
60
-		else {
61
-			foreach ($data as $id => $tab) {
62
-				if (!is_array($tab)) {
63
-					unset($edition[$objet][$tab]);
64
-				} // vieille version
65
-				else {
66
-					foreach ($tab as $n => $duo) {
67
-						if (current($duo) < $bon_pour_le_service) {
68
-							unset($edition[$objet][$id][$n]);
69
-							$changed = true;
70
-						}
71
-					}
72
-				}
73
-				if (!$edition[$objet][$id]) {
74
-					unset($edition[$objet][$id]);
75
-				}
76
-			}
77
-		}
78
-		if (!$edition[$objet]) {
79
-			unset($edition[$objet]);
80
-		}
81
-	}
54
+    $bon_pour_le_service = time() - 3600;
55
+    // parcourir le tableau et virer les vieux
56
+    foreach ($edition as $objet => $data) {
57
+        if (!is_array($data)) {
58
+            unset($edition[$objet]);
59
+        } // vieille version
60
+        else {
61
+            foreach ($data as $id => $tab) {
62
+                if (!is_array($tab)) {
63
+                    unset($edition[$objet][$tab]);
64
+                } // vieille version
65
+                else {
66
+                    foreach ($tab as $n => $duo) {
67
+                        if (current($duo) < $bon_pour_le_service) {
68
+                            unset($edition[$objet][$id][$n]);
69
+                            $changed = true;
70
+                        }
71
+                    }
72
+                }
73
+                if (!$edition[$objet][$id]) {
74
+                    unset($edition[$objet][$id]);
75
+                }
76
+            }
77
+        }
78
+        if (!$edition[$objet]) {
79
+            unset($edition[$objet]);
80
+        }
81
+    }
82 82
 
83
-	if ($changed) {
84
-		ecrire_tableau_edition($edition);
85
-	}
83
+    if ($changed) {
84
+        ecrire_tableau_edition($edition);
85
+    }
86 86
 
87
-	return $edition;
87
+    return $edition;
88 88
 }
89 89
 
90 90
 /**
@@ -97,7 +97,7 @@  discard block
 block discarded – undo
97 97
  *     `[ type d'objet ][id_objet][id_auteur][nom de l'auteur] = time()`
98 98
  **/
99 99
 function ecrire_tableau_edition($edition) {
100
-	ecrire_meta('drapeau_edition', serialize($edition));
100
+    ecrire_meta('drapeau_edition', serialize($edition));
101 101
 }
102 102
 
103 103
 /**
@@ -117,22 +117,22 @@  discard block
 block discarded – undo
117 117
  *     Type d'objet édité
118 118
  */
119 119
 function signale_edition($id, $auteur, $type = 'article') {
120
-	include_spip('base/objets');
121
-	include_spip('inc/filtres');
122
-	if (objet_info($type, 'editable') !== 'oui') {
123
-		return;
124
-	}
120
+    include_spip('base/objets');
121
+    include_spip('inc/filtres');
122
+    if (objet_info($type, 'editable') !== 'oui') {
123
+        return;
124
+    }
125 125
 
126
-	$edition = lire_tableau_edition();
126
+    $edition = lire_tableau_edition();
127 127
 	
128
-	$nom = $auteur['nom'] ?? $GLOBALS['ip'];
129
-	$id_a = $auteur['id_auteur'] ?? $GLOBALS['ip'];
128
+    $nom = $auteur['nom'] ?? $GLOBALS['ip'];
129
+    $id_a = $auteur['id_auteur'] ?? $GLOBALS['ip'];
130 130
 
131
-	if (!isset($edition[$type][$id]) or !is_array($edition[$type][$id])) {
132
-		$edition[$type][$id] = [];
133
-	}
134
-	$edition[$type][$id][$id_a][$nom] = time();
135
-	ecrire_tableau_edition($edition);
131
+    if (!isset($edition[$type][$id]) or !is_array($edition[$type][$id])) {
132
+        $edition[$type][$id] = [];
133
+    }
134
+    $edition[$type][$id][$id_a][$nom] = time();
135
+    ecrire_tableau_edition($edition);
136 136
 }
137 137
 
138 138
 /**
@@ -149,9 +149,9 @@  discard block
 block discarded – undo
149 149
  */
150 150
 function qui_edite($id, $type = 'article') {
151 151
 
152
-	$edition = lire_tableau_edition();
152
+    $edition = lire_tableau_edition();
153 153
 
154
-	return empty($edition[$type][$id]) ? [] : $edition[$type][$id];
154
+    return empty($edition[$type][$id]) ? [] : $edition[$type][$id];
155 155
 }
156 156
 
157 157
 /**
@@ -165,23 +165,23 @@  discard block
 block discarded – undo
165 165
  *     Liste de tableaux `['nom_auteur_modif' => x|y|z, 'date_diff' => n]`
166 166
  */
167 167
 function mention_qui_edite($id, $type = 'article'): array {
168
-	$modif = qui_edite($id, $type);
169
-	unset($modif[$GLOBALS['visiteur_session']['id_auteur']]);
168
+    $modif = qui_edite($id, $type);
169
+    unset($modif[$GLOBALS['visiteur_session']['id_auteur']]);
170 170
 
171
-	if ($modif) {
172
-		$quand = 0;
173
-		foreach ($modif as $duo) {
174
-			$auteurs[] = typo(key($duo));
175
-			$quand = max($quand, current($duo));
176
-		}
171
+    if ($modif) {
172
+        $quand = 0;
173
+        foreach ($modif as $duo) {
174
+            $auteurs[] = typo(key($duo));
175
+            $quand = max($quand, current($duo));
176
+        }
177 177
 
178
-		// format lie a la chaine de langue 'avis_article_modifie'
179
-		return [
180
-			'nom_auteur_modif' => join(' | ', $auteurs),
181
-			'date_diff' => ceil((time() - $quand) / 60)
182
-		];
183
-	}
184
-	return [];
178
+        // format lie a la chaine de langue 'avis_article_modifie'
179
+        return [
180
+            'nom_auteur_modif' => join(' | ', $auteurs),
181
+            'date_diff' => ceil((time() - $quand) / 60)
182
+        ];
183
+    }
184
+    return [];
185 185
 }
186 186
 
187 187
 /**
@@ -195,25 +195,25 @@  discard block
 block discarded – undo
195 195
  *     Liste de tableaux `['objet' => x, 'id_objet' => n]`
196 196
  */
197 197
 function liste_drapeau_edition($id_auteur) {
198
-	$edition = lire_tableau_edition();
199
-	$objets_ouverts = [];
198
+    $edition = lire_tableau_edition();
199
+    $objets_ouverts = [];
200 200
 
201
-	foreach ($edition as $objet => $data) {
202
-		foreach ($data as $id => $auteurs) {
203
-			if (
204
-				isset($auteurs[$id_auteur])
205
-				and is_array($auteurs[$id_auteur]) // precaution
206
-				and (array_pop($auteurs[$id_auteur]) > time() - 3600)
207
-			) {
208
-				$objets_ouverts[] = [
209
-					'objet' => $objet,
210
-					'id_objet' => $id,
211
-				];
212
-			}
213
-		}
214
-	}
201
+    foreach ($edition as $objet => $data) {
202
+        foreach ($data as $id => $auteurs) {
203
+            if (
204
+                isset($auteurs[$id_auteur])
205
+                and is_array($auteurs[$id_auteur]) // precaution
206
+                and (array_pop($auteurs[$id_auteur]) > time() - 3600)
207
+            ) {
208
+                $objets_ouverts[] = [
209
+                    'objet' => $objet,
210
+                    'id_objet' => $id,
211
+                ];
212
+            }
213
+        }
214
+    }
215 215
 
216
-	return $objets_ouverts;
216
+    return $objets_ouverts;
217 217
 }
218 218
 
219 219
 /**
@@ -226,15 +226,15 @@  discard block
 block discarded – undo
226 226
  * @return void
227 227
  */
228 228
 function debloquer_tous($id_auteur) {
229
-	$edition = lire_tableau_edition();
230
-	foreach ($edition as $objet => $data) {
231
-		foreach ($data as $id => $auteurs) {
232
-			if (isset($auteurs[$id_auteur])) {
233
-				unset($edition[$objet][$id][$id_auteur]);
234
-				ecrire_tableau_edition($edition);
235
-			}
236
-		}
237
-	}
229
+    $edition = lire_tableau_edition();
230
+    foreach ($edition as $objet => $data) {
231
+        foreach ($data as $id => $auteurs) {
232
+            if (isset($auteurs[$id_auteur])) {
233
+                unset($edition[$objet][$id][$id_auteur]);
234
+                ecrire_tableau_edition($edition);
235
+            }
236
+        }
237
+    }
238 238
 }
239 239
 
240 240
 /**
@@ -252,19 +252,19 @@  discard block
 block discarded – undo
252 252
  * @return void
253 253
  */
254 254
 function debloquer_edition($id_auteur, $id_objet, $type = 'article') {
255
-	$edition = lire_tableau_edition();
255
+    $edition = lire_tableau_edition();
256 256
 
257
-	foreach ($edition as $objet => $data) {
258
-		if ($objet == $type) {
259
-			foreach ($data as $id => $auteurs) {
260
-				if (
261
-					$id == $id_objet
262
-					and isset($auteurs[$id_auteur])
263
-				) {
264
-					unset($edition[$objet][$id][$id_auteur]);
265
-					ecrire_tableau_edition($edition);
266
-				}
267
-			}
268
-		}
269
-	}
257
+    foreach ($edition as $objet => $data) {
258
+        if ($objet == $type) {
259
+            foreach ($data as $id => $auteurs) {
260
+                if (
261
+                    $id == $id_objet
262
+                    and isset($auteurs[$id_auteur])
263
+                ) {
264
+                    unset($edition[$objet][$id][$id_auteur]);
265
+                    ecrire_tableau_edition($edition);
266
+                }
267
+            }
268
+        }
269
+    }
270 270
 }
Please login to merge, or discard this patch.