Completed
Push — master ( 0528ed...3f7b24 )
by cam
01:54
created
ecrire/inc/journal.php 2 patches
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -10,7 +10,7 @@  discard block
 block discarded – undo
10 10
 \***************************************************************************/
11 11
 
12 12
 if (!defined('_ECRIRE_INC_VERSION')) {
13
-	return;
13
+    return;
14 14
 }
15 15
 
16 16
 
@@ -23,11 +23,11 @@  discard block
 block discarded – undo
23 23
  * @param array $opt
24 24
  */
25 25
 function inc_journal_dist($phrase, $opt = []) {
26
-	if (!strlen((string) $phrase)) {
27
-		return;
28
-	}
29
-	if ($opt) {
30
-		$phrase .= ' :: ' . str_replace("\n", ' ', implode(', ', $opt));
31
-	}
32
-	spip_logger('journal')->info($phrase);
26
+    if (!strlen((string) $phrase)) {
27
+        return;
28
+    }
29
+    if ($opt) {
30
+        $phrase .= ' :: ' . str_replace("\n", ' ', implode(', ', $opt));
31
+    }
32
+    spip_logger('journal')->info($phrase);
33 33
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -27,7 +27,7 @@
 block discarded – undo
27 27
 		return;
28 28
 	}
29 29
 	if ($opt) {
30
-		$phrase .= ' :: ' . str_replace("\n", ' ', implode(', ', $opt));
30
+		$phrase .= ' :: '.str_replace("\n", ' ', implode(', ', $opt));
31 31
 	}
32 32
 	spip_logger('journal')->info($phrase);
33 33
 }
Please login to merge, or discard this patch.
ecrire/inc/email_valide.php 1 patch
Indentation   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Mail
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 
@@ -30,27 +30,27 @@  discard block
 block discarded – undo
30 30
  *      - la normalisation de la dernière adresse donnée sinon
31 31
  **/
32 32
 function inc_email_valide_dist($adresses) {
33
-	// eviter d'injecter n'importe quoi dans preg_match
34
-	if (!is_string($adresses)) {
35
-		return false;
36
-	}
37
-
38
-	// Si c'est un spammeur autant arreter tout de suite
39
-	if (preg_match(",[\n\r].*(MIME|multipart|Content-),i", $adresses)) {
40
-		spip_logger()->info("Tentative d'injection de mail : $adresses");
41
-
42
-		return false;
43
-	}
44
-
45
-	foreach (explode(',', $adresses) as $v) {
46
-		// nettoyer certains formats
47
-		// "Marie Toto <[email protected]>"
48
-		$adresse = trim(preg_replace(',^[^<>"]*<([^<>"]+)>$,i', "\\1", $v));
49
-		// RFC 822
50
-		if (!preg_match('#^[^()<>@,;:\\"/[:space:]]+(@([-_0-9a-z]+\.)*[-_0-9a-z]+)$#i', $adresse)) {
51
-			return false;
52
-		}
53
-	}
54
-
55
-	return $adresse;
33
+    // eviter d'injecter n'importe quoi dans preg_match
34
+    if (!is_string($adresses)) {
35
+        return false;
36
+    }
37
+
38
+    // Si c'est un spammeur autant arreter tout de suite
39
+    if (preg_match(",[\n\r].*(MIME|multipart|Content-),i", $adresses)) {
40
+        spip_logger()->info("Tentative d'injection de mail : $adresses");
41
+
42
+        return false;
43
+    }
44
+
45
+    foreach (explode(',', $adresses) as $v) {
46
+        // nettoyer certains formats
47
+        // "Marie Toto <[email protected]>"
48
+        $adresse = trim(preg_replace(',^[^<>"]*<([^<>"]+)>$,i', "\\1", $v));
49
+        // RFC 822
50
+        if (!preg_match('#^[^()<>@,;:\\"/[:space:]]+(@([-_0-9a-z]+\.)*[-_0-9a-z]+)$#i', $adresse)) {
51
+            return false;
52
+        }
53
+    }
54
+
55
+    return $adresse;
56 56
 }
Please login to merge, or discard this patch.
ecrire/inc/rubriques.php 2 patches
Indentation   +620 added lines, -620 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
  */
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 
@@ -54,65 +54,65 @@  discard block
 block discarded – undo
54 54
  * @return void
55 55
  **/
56 56
 function calculer_rubriques_if($id_rubrique, $modifs, $infos = [], $postdate = false) {
57
-	$statuts_publies = null;
58
-	$neuf = false;
59
-
60
-	// Compat avec l'ancienne signature
61
-	if (is_string($infos)) {
62
-		$infos = ['statut_ancien' => $infos];
63
-	}
64
-	if (!isset($infos['statut_ancien'])) {
65
-		$infos['statut_ancien'] = '';
66
-	}
67
-
68
-	// On recherche quels statuts tester
69
-	if (
70
-		isset($infos['objet'])
71
-		&& include_spip('inc/filtres')
72
-		&& ($declaration_statut = objet_info($infos['objet'], 'statut'))
73
-		&& is_array($declaration_statut)
74
-	) {
75
-		foreach ($declaration_statut as $champ_statut) {
76
-			if ($champ_statut['champ'] == 'statut') {
77
-				$statuts_publies = array_map('trim', explode(',', $champ_statut['publie']));
78
-				break; // stop on a trouvé le bon champ
79
-			}
80
-		}
81
-	} else {
82
-		$statuts_publies = ['publie'];
83
-	}
84
-
85
-	if (in_array($infos['statut_ancien'], $statuts_publies)) {
86
-		if (
87
-			isset($modifs['statut'])
88
-			|| isset($modifs['id_rubrique'])
89
-			|| $postdate && strtotime($postdate) > time()
90
-		) {
91
-			$neuf |= depublier_branche_rubrique_if($id_rubrique);
92
-		}
93
-		// ne publier que si c'est pas un postdate, ou si la date n'est pas dans le futur
94
-		if ($postdate) {
95
-			calculer_prochain_postdate(true);
96
-			$neuf |= (strtotime($postdate) <= time()); // par securite
97
-		} elseif (isset($modifs['id_rubrique'])) {
98
-			$neuf |= publier_branche_rubrique($modifs['id_rubrique']);
99
-		}
100
-	} elseif (isset($modifs['statut']) && in_array($modifs['statut'], $statuts_publies)) {
101
-		if ($postdate) {
102
-			calculer_prochain_postdate(true);
103
-			$neuf |= (strtotime($postdate) <= time()); // par securite
104
-		} else {
105
-			$neuf |= publier_branche_rubrique($id_rubrique);
106
-		}
107
-	}
108
-
109
-	if ($neuf) {
110
-		// Sauver la date de la derniere mise a jour (pour menu_rubriques)
111
-		ecrire_meta('date_calcul_rubriques', date('U'));
112
-	}
113
-
114
-	$langues = calculer_langues_utilisees();
115
-	ecrire_meta('langues_utilisees', $langues);
57
+    $statuts_publies = null;
58
+    $neuf = false;
59
+
60
+    // Compat avec l'ancienne signature
61
+    if (is_string($infos)) {
62
+        $infos = ['statut_ancien' => $infos];
63
+    }
64
+    if (!isset($infos['statut_ancien'])) {
65
+        $infos['statut_ancien'] = '';
66
+    }
67
+
68
+    // On recherche quels statuts tester
69
+    if (
70
+        isset($infos['objet'])
71
+        && include_spip('inc/filtres')
72
+        && ($declaration_statut = objet_info($infos['objet'], 'statut'))
73
+        && is_array($declaration_statut)
74
+    ) {
75
+        foreach ($declaration_statut as $champ_statut) {
76
+            if ($champ_statut['champ'] == 'statut') {
77
+                $statuts_publies = array_map('trim', explode(',', $champ_statut['publie']));
78
+                break; // stop on a trouvé le bon champ
79
+            }
80
+        }
81
+    } else {
82
+        $statuts_publies = ['publie'];
83
+    }
84
+
85
+    if (in_array($infos['statut_ancien'], $statuts_publies)) {
86
+        if (
87
+            isset($modifs['statut'])
88
+            || isset($modifs['id_rubrique'])
89
+            || $postdate && strtotime($postdate) > time()
90
+        ) {
91
+            $neuf |= depublier_branche_rubrique_if($id_rubrique);
92
+        }
93
+        // ne publier que si c'est pas un postdate, ou si la date n'est pas dans le futur
94
+        if ($postdate) {
95
+            calculer_prochain_postdate(true);
96
+            $neuf |= (strtotime($postdate) <= time()); // par securite
97
+        } elseif (isset($modifs['id_rubrique'])) {
98
+            $neuf |= publier_branche_rubrique($modifs['id_rubrique']);
99
+        }
100
+    } elseif (isset($modifs['statut']) && in_array($modifs['statut'], $statuts_publies)) {
101
+        if ($postdate) {
102
+            calculer_prochain_postdate(true);
103
+            $neuf |= (strtotime($postdate) <= time()); // par securite
104
+        } else {
105
+            $neuf |= publier_branche_rubrique($id_rubrique);
106
+        }
107
+    }
108
+
109
+    if ($neuf) {
110
+        // Sauver la date de la derniere mise a jour (pour menu_rubriques)
111
+        ecrire_meta('date_calcul_rubriques', date('U'));
112
+    }
113
+
114
+    $langues = calculer_langues_utilisees();
115
+    ecrire_meta('langues_utilisees', $langues);
116 116
 }
117 117
 
118 118
 
@@ -130,22 +130,22 @@  discard block
 block discarded – undo
130 130
  *     true si le statut change effectivement
131 131
  */
132 132
 function publier_branche_rubrique($id_rubrique) {
133
-	$id_pred = $id_rubrique;
134
-	while (true) {
135
-		sql_updateq(
136
-			'spip_rubriques',
137
-			['statut' => 'publie', 'date' => date('Y-m-d H:i:s')],
138
-			'id_rubrique=' . intval($id_rubrique)
139
-		);
140
-		$id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique));
141
-		if (!$id_parent) {
142
-			break;
143
-		}
144
-		$id_rubrique = $id_parent;
145
-	}
133
+    $id_pred = $id_rubrique;
134
+    while (true) {
135
+        sql_updateq(
136
+            'spip_rubriques',
137
+            ['statut' => 'publie', 'date' => date('Y-m-d H:i:s')],
138
+            'id_rubrique=' . intval($id_rubrique)
139
+        );
140
+        $id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique));
141
+        if (!$id_parent) {
142
+            break;
143
+        }
144
+        $id_rubrique = $id_parent;
145
+    }
146 146
 
147 147
 #	spip_logger()->info(" publier_branche_rubrique($id_rubrique $id_pred");
148
-	return $id_pred != $id_rubrique;
148
+    return $id_pred != $id_rubrique;
149 149
 }
150 150
 
151 151
 /**
@@ -163,20 +163,20 @@  discard block
 block discarded – undo
163 163
  *     true si le statut change effectivement
164 164
  */
165 165
 function depublier_branche_rubrique_if($id_rubrique) {
166
-	$date = date('Y-m-d H:i:s'); // figer la date
167
-
168
-	#	spip_logger()->info("depublier_branche_rubrique($id_rubrique ?");
169
-	$id_pred = $id_rubrique;
170
-	while ($id_pred) {
171
-		if (!depublier_rubrique_if($id_pred, $date)) {
172
-			return $id_pred != $id_rubrique;
173
-		}
174
-		// passer au parent si on a depublie
175
-		$r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred));
176
-		$id_pred = $r['id_parent'];
177
-	}
178
-
179
-	return $id_pred != $id_rubrique;
166
+    $date = date('Y-m-d H:i:s'); // figer la date
167
+
168
+    #	spip_logger()->info("depublier_branche_rubrique($id_rubrique ?");
169
+    $id_pred = $id_rubrique;
170
+    while ($id_pred) {
171
+        if (!depublier_rubrique_if($id_pred, $date)) {
172
+            return $id_pred != $id_rubrique;
173
+        }
174
+        // passer au parent si on a depublie
175
+        $r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred));
176
+        $id_pred = $r['id_parent'];
177
+    }
178
+
179
+    return $id_pred != $id_rubrique;
180 180
 }
181 181
 
182 182
 /**
@@ -193,61 +193,61 @@  discard block
 block discarded – undo
193 193
  *    true si la rubrique a été dépubliée
194 194
  */
195 195
 function depublier_rubrique_if($id_rubrique, $date = null) {
196
-	if (is_null($date)) {
197
-		$date = date('Y-m-d H:i:s');
198
-	}
199
-	$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
200
-		' AND date <= ' . sql_quote($date) : '';
201
-
202
-	if (!$id_rubrique = intval($id_rubrique)) {
203
-		return false;
204
-	}
205
-
206
-	// verifier qu'elle existe et est bien publiee
207
-	$r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
208
-	if (!$r || $r['statut'] !== 'publie') {
209
-		return false;
210
-	}
211
-
212
-	// On met le nombre de chaque type d'enfants dans un tableau
213
-	// Le type de l'objet est au pluriel
214
-	$compte = [
215
-		'articles' => sql_countsel(
216
-			'spip_articles',
217
-			'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates"
218
-		),
219
-		'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"),
220
-		'documents' => sql_countsel(
221
-			'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document',
222
-			'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') "
223
-		)
224
-	];
225
-
226
-	// On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants
227
-	$compte = pipeline(
228
-		'objet_compte_enfants',
229
-		[
230
-			'args' => [
231
-				'objet' => 'rubrique',
232
-				'id_objet' => $id_rubrique,
233
-				'statut' => 'publie',
234
-				'date' => $date
235
-			],
236
-			'data' => $compte
237
-		]
238
-	);
239
-
240
-	// S'il y a au moins un enfant de n'importe quoi, on ne dépublie pas
241
-	foreach ($compte as $objet => $n) {
242
-		if ($n) {
243
-			return false;
244
-		}
245
-	}
246
-
247
-	sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique));
196
+    if (is_null($date)) {
197
+        $date = date('Y-m-d H:i:s');
198
+    }
199
+    $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
200
+        ' AND date <= ' . sql_quote($date) : '';
201
+
202
+    if (!$id_rubrique = intval($id_rubrique)) {
203
+        return false;
204
+    }
205
+
206
+    // verifier qu'elle existe et est bien publiee
207
+    $r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
208
+    if (!$r || $r['statut'] !== 'publie') {
209
+        return false;
210
+    }
211
+
212
+    // On met le nombre de chaque type d'enfants dans un tableau
213
+    // Le type de l'objet est au pluriel
214
+    $compte = [
215
+        'articles' => sql_countsel(
216
+            'spip_articles',
217
+            'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates"
218
+        ),
219
+        'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"),
220
+        'documents' => sql_countsel(
221
+            'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document',
222
+            'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') "
223
+        )
224
+    ];
225
+
226
+    // On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants
227
+    $compte = pipeline(
228
+        'objet_compte_enfants',
229
+        [
230
+            'args' => [
231
+                'objet' => 'rubrique',
232
+                'id_objet' => $id_rubrique,
233
+                'statut' => 'publie',
234
+                'date' => $date
235
+            ],
236
+            'data' => $compte
237
+        ]
238
+    );
239
+
240
+    // S'il y a au moins un enfant de n'importe quoi, on ne dépublie pas
241
+    foreach ($compte as $objet => $n) {
242
+        if ($n) {
243
+            return false;
244
+        }
245
+    }
246
+
247
+    sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique));
248 248
 
249 249
 #		spip_logger()->info("depublier_rubrique $id_pred");
250
-	return true;
250
+    return true;
251 251
 }
252 252
 
253 253
 
@@ -270,18 +270,18 @@  discard block
 block discarded – undo
270 270
  **/
271 271
 function calculer_rubriques() {
272 272
 
273
-	calculer_rubriques_publiees();
273
+    calculer_rubriques_publiees();
274 274
 
275
-	// Apres chaque (de)publication
276
-	// recalculer les langues utilisees sur le site
277
-	$langues = calculer_langues_utilisees();
278
-	ecrire_meta('langues_utilisees', $langues);
275
+    // Apres chaque (de)publication
276
+    // recalculer les langues utilisees sur le site
277
+    $langues = calculer_langues_utilisees();
278
+    ecrire_meta('langues_utilisees', $langues);
279 279
 
280
-	// Sauver la date de la derniere mise a jour (pour menu_rubriques)
281
-	ecrire_meta('date_calcul_rubriques', date('U'));
280
+    // Sauver la date de la derniere mise a jour (pour menu_rubriques)
281
+    ecrire_meta('date_calcul_rubriques', date('U'));
282 282
 
283
-	// on calcule la date du prochain article post-date
284
-	calculer_prochain_postdate();
283
+    // on calcule la date du prochain article post-date
284
+    calculer_prochain_postdate();
285 285
 }
286 286
 
287 287
 
@@ -298,61 +298,61 @@  discard block
 block discarded – undo
298 298
  **/
299 299
 function calculer_rubriques_publiees() {
300 300
 
301
-	// Mettre les compteurs a zero
302
-	sql_updateq('spip_rubriques', ['date_tmp' => '0000-00-00 00:00:00', 'statut_tmp' => 'prepa']);
303
-
304
-	//
305
-	// Publier et dater les rubriques qui ont un article publie
306
-	//
307
-
308
-	// Afficher les articles post-dates ?
309
-	$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
310
-		'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
311
-
312
-	$r = sql_select(
313
-		'R.id_rubrique AS id, max(A.date) AS date_h',
314
-		'spip_rubriques AS R JOIN spip_articles AS A ON R.id_rubrique = A.id_rubrique',
315
-		"A.date>R.date_tmp AND A.statut='publie' $postdates ",
316
-		'R.id_rubrique'
317
-	);
318
-	while ($row = sql_fetch($r)) {
319
-		sql_updateq(
320
-			'spip_rubriques',
321
-			['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
322
-			'id_rubrique=' . intval($row['id'])
323
-		);
324
-	}
325
-
326
-	// point d'entree pour permettre a des plugins de gerer le statut
327
-	// autrement (par ex: toute rubrique est publiee des sa creation)
328
-	// Ce pipeline fait ce qu'il veut, mais s'il touche aux statuts/dates
329
-	// c'est statut_tmp/date_tmp qu'il doit modifier
330
-	// [C'est un trigger... a renommer en trig_calculer_rubriques ?]
331
-	pipeline('calculer_rubriques', null);
332
-
333
-
334
-	// Les rubriques qui ont une rubrique fille plus recente
335
-	// on tourne tant que les donnees remontent vers la racine.
336
-	do {
337
-		$continuer = false;
338
-		$r = sql_select(
339
-			'R.id_rubrique AS id, max(SR.date_tmp) AS date_h',
340
-			'spip_rubriques AS R JOIN spip_rubriques AS SR ON R.id_rubrique = SR.id_parent',
341
-			"(SR.date_tmp>R.date_tmp OR R.statut_tmp<>'publie') AND SR.statut_tmp='publie' ",
342
-			'R.id_rubrique'
343
-		);
344
-		while ($row = sql_fetch($r)) {
345
-			sql_updateq(
346
-				'spip_rubriques',
347
-				['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
348
-				'id_rubrique=' . intval($row['id'])
349
-			);
350
-			$continuer = true;
351
-		}
352
-	} while ($continuer);
353
-
354
-	// Enregistrement des modifs
355
-	sql_update('spip_rubriques', ['date' => 'date_tmp', 'statut' => 'statut_tmp']);
301
+    // Mettre les compteurs a zero
302
+    sql_updateq('spip_rubriques', ['date_tmp' => '0000-00-00 00:00:00', 'statut_tmp' => 'prepa']);
303
+
304
+    //
305
+    // Publier et dater les rubriques qui ont un article publie
306
+    //
307
+
308
+    // Afficher les articles post-dates ?
309
+    $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
310
+        'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
311
+
312
+    $r = sql_select(
313
+        'R.id_rubrique AS id, max(A.date) AS date_h',
314
+        'spip_rubriques AS R JOIN spip_articles AS A ON R.id_rubrique = A.id_rubrique',
315
+        "A.date>R.date_tmp AND A.statut='publie' $postdates ",
316
+        'R.id_rubrique'
317
+    );
318
+    while ($row = sql_fetch($r)) {
319
+        sql_updateq(
320
+            'spip_rubriques',
321
+            ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
322
+            'id_rubrique=' . intval($row['id'])
323
+        );
324
+    }
325
+
326
+    // point d'entree pour permettre a des plugins de gerer le statut
327
+    // autrement (par ex: toute rubrique est publiee des sa creation)
328
+    // Ce pipeline fait ce qu'il veut, mais s'il touche aux statuts/dates
329
+    // c'est statut_tmp/date_tmp qu'il doit modifier
330
+    // [C'est un trigger... a renommer en trig_calculer_rubriques ?]
331
+    pipeline('calculer_rubriques', null);
332
+
333
+
334
+    // Les rubriques qui ont une rubrique fille plus recente
335
+    // on tourne tant que les donnees remontent vers la racine.
336
+    do {
337
+        $continuer = false;
338
+        $r = sql_select(
339
+            'R.id_rubrique AS id, max(SR.date_tmp) AS date_h',
340
+            'spip_rubriques AS R JOIN spip_rubriques AS SR ON R.id_rubrique = SR.id_parent',
341
+            "(SR.date_tmp>R.date_tmp OR R.statut_tmp<>'publie') AND SR.statut_tmp='publie' ",
342
+            'R.id_rubrique'
343
+        );
344
+        while ($row = sql_fetch($r)) {
345
+            sql_updateq(
346
+                'spip_rubriques',
347
+                ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
348
+                'id_rubrique=' . intval($row['id'])
349
+            );
350
+            $continuer = true;
351
+        }
352
+    } while ($continuer);
353
+
354
+    // Enregistrement des modifs
355
+    sql_update('spip_rubriques', ['date' => 'date_tmp', 'statut' => 'statut_tmp']);
356 356
 }
357 357
 
358 358
 /**
@@ -367,122 +367,122 @@  discard block
 block discarded – undo
367 367
  * @return void
368 368
  **/
369 369
 function propager_les_secteurs() {
370
-	// Profondeur 0
371
-	// Toutes les rubriques racines sont de profondeur 0
372
-	// et fixer les id_secteur des rubriques racines
373
-	sql_update('spip_rubriques', ['id_secteur' => 'id_rubrique', 'profondeur' => 0], 'id_parent=0');
374
-	// Toute rubrique non racine est de profondeur >0
375
-	sql_updateq('spip_rubriques', ['profondeur' => 1], 'id_parent<>0 AND profondeur=0');
376
-
377
-	// securite : pas plus d'iteration que de rubriques dans la base
378
-	$maxiter = sql_countsel('spip_rubriques');
379
-
380
-	// reparer les rubriques qui n'ont pas l'id_secteur de leur parent
381
-	// on fait profondeur par profondeur
382
-
383
-	$prof = 0;
384
-	do {
385
-		$continuer = false;
386
-
387
-		// Par recursivite : si toutes les rubriques de profondeur $prof sont bonnes
388
-		// on fixe le profondeur $prof+1
389
-
390
-		// Toutes les rubriques dont le parent est de profondeur $prof ont une profondeur $prof+1
391
-		// on teste A.profondeur > $prof+1 car :
392
-		// - toutes les rubriques de profondeur 0 à $prof sont bonnes
393
-		// - si A.profondeur = $prof+1 c'est bon
394
-		// - cela nous protege de la boucle infinie en cas de reference circulaire dans les rubriques
395
-		$maxiter2 = $maxiter;
396
-		while (
397
-			$maxiter2--
398
-			&& ($rows = sql_allfetsel(
399
-				'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur',
400
-				'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique',
401
-				'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)',
402
-				'',
403
-				'R.id_secteur',
404
-				'0,100'
405
-			))
406
-		) {
407
-			$id_secteur = null;
408
-			$ids = [];
409
-			while ($row = array_shift($rows)) {
410
-				if ($row['id_secteur'] !== $id_secteur) {
411
-					if (count($ids)) {
412
-						sql_updateq(
413
-							'spip_rubriques',
414
-							['id_secteur' => $id_secteur, 'profondeur' => $prof + 1],
415
-							sql_in('id_rubrique', $ids)
416
-						);
417
-					}
418
-					$id_secteur = $row['id_secteur'];
419
-					$ids = [];
420
-				}
421
-				$ids[] = $row['id'];
422
-			}
423
-			if (count($ids)) {
424
-				sql_updateq(
425
-					'spip_rubriques',
426
-					['id_secteur' => $id_secteur, 'profondeur' => $prof + 1],
427
-					sql_in('id_rubrique', $ids)
428
-				);
429
-			}
430
-		}
431
-
432
-
433
-		// Toutes les rubriques de profondeur $prof+1 qui n'ont pas un parent de profondeur $prof sont decalees
434
-		$maxiter2 = $maxiter;
435
-		while (
436
-			$maxiter2--
437
-			&& ($rows = sql_allfetsel(
438
-				'id_rubrique as id',
439
-				'spip_rubriques',
440
-				'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select(
441
-					'zzz.id_rubrique',
442
-					'spip_rubriques AS zzz',
443
-					'zzz.profondeur=' . intval($prof)
444
-				) . ')',
445
-				'',
446
-				'',
447
-				'0,100'
448
-			))
449
-		) {
450
-			$rows = array_column($rows, 'id');
451
-			sql_updateq('spip_rubriques', ['profondeur' => $prof + 2], sql_in('id_rubrique', $rows));
452
-		}
453
-
454
-		// ici on a fini de valider $prof+1, toutes les rubriques de prondeur 0 a $prof+1 sont OK
455
-		// si pas de rubrique a profondeur $prof+1 pas la peine de continuer
456
-		// si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse)
457
-		// on arrete les frais
458
-		if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) {
459
-			$prof++;
460
-			$continuer = true;
461
-		}
462
-	} while ($continuer && $maxiter--);
463
-
464
-	// loger si la table des rubriques semble foireuse
465
-	// et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles
466
-	if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) {
467
-		spip_logger()->critical(
468
-			'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)',
469
-		);
470
-		sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1));
471
-	}
472
-
473
-	// reparer les articles
474
-	$r = sql_select(
475
-		'A.id_article AS id, R.id_secteur AS secteur',
476
-		'spip_articles AS A, spip_rubriques AS R',
477
-		'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur'
478
-	);
479
-
480
-	while ($row = sql_fetch($r)) {
481
-		sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id']));
482
-	}
483
-
484
-	// avertir les plugins qui peuvent faire leur mises a jour egalement
485
-	pipeline('trig_propager_les_secteurs', '');
370
+    // Profondeur 0
371
+    // Toutes les rubriques racines sont de profondeur 0
372
+    // et fixer les id_secteur des rubriques racines
373
+    sql_update('spip_rubriques', ['id_secteur' => 'id_rubrique', 'profondeur' => 0], 'id_parent=0');
374
+    // Toute rubrique non racine est de profondeur >0
375
+    sql_updateq('spip_rubriques', ['profondeur' => 1], 'id_parent<>0 AND profondeur=0');
376
+
377
+    // securite : pas plus d'iteration que de rubriques dans la base
378
+    $maxiter = sql_countsel('spip_rubriques');
379
+
380
+    // reparer les rubriques qui n'ont pas l'id_secteur de leur parent
381
+    // on fait profondeur par profondeur
382
+
383
+    $prof = 0;
384
+    do {
385
+        $continuer = false;
386
+
387
+        // Par recursivite : si toutes les rubriques de profondeur $prof sont bonnes
388
+        // on fixe le profondeur $prof+1
389
+
390
+        // Toutes les rubriques dont le parent est de profondeur $prof ont une profondeur $prof+1
391
+        // on teste A.profondeur > $prof+1 car :
392
+        // - toutes les rubriques de profondeur 0 à $prof sont bonnes
393
+        // - si A.profondeur = $prof+1 c'est bon
394
+        // - cela nous protege de la boucle infinie en cas de reference circulaire dans les rubriques
395
+        $maxiter2 = $maxiter;
396
+        while (
397
+            $maxiter2--
398
+            && ($rows = sql_allfetsel(
399
+                'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur',
400
+                'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique',
401
+                'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)',
402
+                '',
403
+                'R.id_secteur',
404
+                '0,100'
405
+            ))
406
+        ) {
407
+            $id_secteur = null;
408
+            $ids = [];
409
+            while ($row = array_shift($rows)) {
410
+                if ($row['id_secteur'] !== $id_secteur) {
411
+                    if (count($ids)) {
412
+                        sql_updateq(
413
+                            'spip_rubriques',
414
+                            ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1],
415
+                            sql_in('id_rubrique', $ids)
416
+                        );
417
+                    }
418
+                    $id_secteur = $row['id_secteur'];
419
+                    $ids = [];
420
+                }
421
+                $ids[] = $row['id'];
422
+            }
423
+            if (count($ids)) {
424
+                sql_updateq(
425
+                    'spip_rubriques',
426
+                    ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1],
427
+                    sql_in('id_rubrique', $ids)
428
+                );
429
+            }
430
+        }
431
+
432
+
433
+        // Toutes les rubriques de profondeur $prof+1 qui n'ont pas un parent de profondeur $prof sont decalees
434
+        $maxiter2 = $maxiter;
435
+        while (
436
+            $maxiter2--
437
+            && ($rows = sql_allfetsel(
438
+                'id_rubrique as id',
439
+                'spip_rubriques',
440
+                'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select(
441
+                    'zzz.id_rubrique',
442
+                    'spip_rubriques AS zzz',
443
+                    'zzz.profondeur=' . intval($prof)
444
+                ) . ')',
445
+                '',
446
+                '',
447
+                '0,100'
448
+            ))
449
+        ) {
450
+            $rows = array_column($rows, 'id');
451
+            sql_updateq('spip_rubriques', ['profondeur' => $prof + 2], sql_in('id_rubrique', $rows));
452
+        }
453
+
454
+        // ici on a fini de valider $prof+1, toutes les rubriques de prondeur 0 a $prof+1 sont OK
455
+        // si pas de rubrique a profondeur $prof+1 pas la peine de continuer
456
+        // si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse)
457
+        // on arrete les frais
458
+        if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) {
459
+            $prof++;
460
+            $continuer = true;
461
+        }
462
+    } while ($continuer && $maxiter--);
463
+
464
+    // loger si la table des rubriques semble foireuse
465
+    // et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles
466
+    if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) {
467
+        spip_logger()->critical(
468
+            'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)',
469
+        );
470
+        sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1));
471
+    }
472
+
473
+    // reparer les articles
474
+    $r = sql_select(
475
+        'A.id_article AS id, R.id_secteur AS secteur',
476
+        'spip_articles AS A, spip_rubriques AS R',
477
+        'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur'
478
+    );
479
+
480
+    while ($row = sql_fetch($r)) {
481
+        sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id']));
482
+    }
483
+
484
+    // avertir les plugins qui peuvent faire leur mises a jour egalement
485
+    pipeline('trig_propager_les_secteurs', '');
486 486
 }
487 487
 
488 488
 
@@ -497,23 +497,23 @@  discard block
 block discarded – undo
497 497
  *     true si un changement a eu lieu
498 498
  **/
499 499
 function calculer_langues_rubriques_etape() {
500
-	$s = sql_select(
501
-		'A.id_rubrique AS id_rubrique, R.lang AS lang',
502
-		'spip_rubriques AS A, spip_rubriques AS R',
503
-		"A.id_parent = R.id_rubrique AND A.langue_choisie != 'oui' AND R.lang<>'' AND R.lang<>A.lang"
504
-	);
505
-
506
-	$t = false;
507
-	while ($row = sql_fetch($s)) {
508
-		$id_rubrique = $row['id_rubrique'];
509
-		$t = sql_updateq(
510
-			'spip_rubriques',
511
-			['lang' => $row['lang'], 'langue_choisie' => 'non'],
512
-			'id_rubrique=' . intval($id_rubrique)
513
-		);
514
-	}
515
-
516
-	return $t;
500
+    $s = sql_select(
501
+        'A.id_rubrique AS id_rubrique, R.lang AS lang',
502
+        'spip_rubriques AS A, spip_rubriques AS R',
503
+        "A.id_parent = R.id_rubrique AND A.langue_choisie != 'oui' AND R.lang<>'' AND R.lang<>A.lang"
504
+    );
505
+
506
+    $t = false;
507
+    while ($row = sql_fetch($s)) {
508
+        $id_rubrique = $row['id_rubrique'];
509
+        $t = sql_updateq(
510
+            'spip_rubriques',
511
+            ['lang' => $row['lang'], 'langue_choisie' => 'non'],
512
+            'id_rubrique=' . intval($id_rubrique)
513
+        );
514
+    }
515
+
516
+    return $t;
517 517
 }
518 518
 
519 519
 /**
@@ -533,38 +533,38 @@  discard block
 block discarded – undo
533 533
  **/
534 534
 function calculer_langues_rubriques() {
535 535
 
536
-	// rubriques (recursivite)
537
-	sql_updateq(
538
-		'spip_rubriques',
539
-		['lang' => $GLOBALS['meta']['langue_site'], 'langue_choisie' => 'non'],
540
-		"id_parent=0 AND langue_choisie != 'oui'"
541
-	);
542
-	while (calculer_langues_rubriques_etape()) {
543
-		;
544
-	}
545
-
546
-	// articles
547
-	$s = sql_select(
548
-		'A.id_article AS id_article, R.lang AS lang',
549
-		'spip_articles AS A, spip_rubriques AS R',
550
-		"A.id_rubrique = R.id_rubrique AND A.langue_choisie != 'oui' AND (length(A.lang)=0 OR length(R.lang)>0) AND R.lang<>A.lang"
551
-	);
552
-	while ($row = sql_fetch($s)) {
553
-		$id_article = $row['id_article'];
554
-		sql_updateq(
555
-			'spip_articles',
556
-			['lang' => $row['lang'], 'langue_choisie' => 'non'],
557
-			'id_article=' . intval($id_article)
558
-		);
559
-	}
560
-
561
-	if ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
562
-		$langues = calculer_langues_utilisees();
563
-		ecrire_meta('langues_utilisees', $langues);
564
-	}
565
-
566
-	// avertir les plugins qui peuvent faire leur mises a jour egalement
567
-	pipeline('trig_calculer_langues_rubriques', '');
536
+    // rubriques (recursivite)
537
+    sql_updateq(
538
+        'spip_rubriques',
539
+        ['lang' => $GLOBALS['meta']['langue_site'], 'langue_choisie' => 'non'],
540
+        "id_parent=0 AND langue_choisie != 'oui'"
541
+    );
542
+    while (calculer_langues_rubriques_etape()) {
543
+        ;
544
+    }
545
+
546
+    // articles
547
+    $s = sql_select(
548
+        'A.id_article AS id_article, R.lang AS lang',
549
+        'spip_articles AS A, spip_rubriques AS R',
550
+        "A.id_rubrique = R.id_rubrique AND A.langue_choisie != 'oui' AND (length(A.lang)=0 OR length(R.lang)>0) AND R.lang<>A.lang"
551
+    );
552
+    while ($row = sql_fetch($s)) {
553
+        $id_article = $row['id_article'];
554
+        sql_updateq(
555
+            'spip_articles',
556
+            ['lang' => $row['lang'], 'langue_choisie' => 'non'],
557
+            'id_article=' . intval($id_article)
558
+        );
559
+    }
560
+
561
+    if ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
562
+        $langues = calculer_langues_utilisees();
563
+        ecrire_meta('langues_utilisees', $langues);
564
+    }
565
+
566
+    // avertir les plugins qui peuvent faire leur mises a jour egalement
567
+    pipeline('trig_calculer_langues_rubriques', '');
568 568
 }
569 569
 
570 570
 
@@ -581,80 +581,80 @@  discard block
 block discarded – undo
581 581
  *    Liste des langues utilisées séparées par des virgules
582 582
  **/
583 583
 function calculer_langues_utilisees($serveur = '') {
584
-	include_spip('public/interfaces');
585
-	include_spip('public/compiler');
586
-	include_spip('public/composer');
587
-	include_spip('public/phraser_html');
588
-	$langues = [];
589
-
590
-	$langues[$GLOBALS['meta']['langue_site']] = 1;
591
-
592
-	include_spip('base/objets');
593
-	$tables = lister_tables_objets_sql();
594
-	$trouver_table = charger_fonction('trouver_table', 'base');
595
-
596
-	foreach (array_keys($tables) as $t) {
597
-		$desc = $trouver_table($t, $serveur);
598
-		// c'est une table avec des langues
599
-		if (
600
-			$desc['exist']
601
-			&& isset($desc['field']['lang'])
602
-			&& isset($desc['field']['langue_choisie'])
603
-		) {
604
-			$boucle = new Boucle();
605
-			$boucle->show = $desc;
606
-			$boucle->nom = 'calculer_langues_utilisees';
607
-			$boucle->id_boucle = $desc['table_objet'];
608
-			$boucle->id_table = $desc['table_objet'];
609
-			$boucle->primary = $desc['key']['PRIMARY KEY'] ?? '';
610
-			$boucle->sql_serveur = $serveur;
611
-			$boucle->select[] = 'DISTINCT lang';
612
-			$boucle->from[$desc['table_objet']] = $t;
613
-			$boucle->separateur[] = ',';
614
-			$boucle->return = '$Pile[$SP][\'lang\']';
615
-			$boucle->iterateur = 'sql';
616
-
617
-			$boucle->descr['nom'] = 'calculer_langues_utilisees'; // eviter notice php
618
-			$boucle->descr['sourcefile'] = 'internal';
619
-			$boucle->descr['gram'] = 'html';
620
-
621
-			$boucle = pipeline('pre_boucle', $boucle);
622
-
623
-			if (
624
-				isset($desc['statut'])
625
-				&& $desc['statut']
626
-			) {
627
-				$boucles = [
628
-					'calculer_langues_utilisees' => $boucle,
629
-				];
630
-				// generer un nom de fonction "anonyme" unique
631
-				do {
632
-					$functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax());
633
-				} while (function_exists($functionname));
634
-				$code = calculer_boucle('calculer_langues_utilisees', $boucles);
635
-				$code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code;
636
-				$code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();';
637
-				$res = '';
638
-				eval($code);
639
-				$res = explode(',', $res);
640
-				foreach ($res as $lang) {
641
-					$langues[$lang] = 1;
642
-				}
643
-			} else {
644
-				$res = sql_select(implode(',', $boucle->select), $boucle->from);
645
-				while ($row = sql_fetch($res)) {
646
-					$langues[$row['lang']] = 1;
647
-				}
648
-			}
649
-		}
650
-	}
651
-
652
-	$langues = array_filter(array_keys($langues));
653
-	sort($langues);
654
-	$langues = join(',', $langues);
655
-	spip_logger()->info("langues utilisees: $langues");
656
-
657
-	return $langues;
584
+    include_spip('public/interfaces');
585
+    include_spip('public/compiler');
586
+    include_spip('public/composer');
587
+    include_spip('public/phraser_html');
588
+    $langues = [];
589
+
590
+    $langues[$GLOBALS['meta']['langue_site']] = 1;
591
+
592
+    include_spip('base/objets');
593
+    $tables = lister_tables_objets_sql();
594
+    $trouver_table = charger_fonction('trouver_table', 'base');
595
+
596
+    foreach (array_keys($tables) as $t) {
597
+        $desc = $trouver_table($t, $serveur);
598
+        // c'est une table avec des langues
599
+        if (
600
+            $desc['exist']
601
+            && isset($desc['field']['lang'])
602
+            && isset($desc['field']['langue_choisie'])
603
+        ) {
604
+            $boucle = new Boucle();
605
+            $boucle->show = $desc;
606
+            $boucle->nom = 'calculer_langues_utilisees';
607
+            $boucle->id_boucle = $desc['table_objet'];
608
+            $boucle->id_table = $desc['table_objet'];
609
+            $boucle->primary = $desc['key']['PRIMARY KEY'] ?? '';
610
+            $boucle->sql_serveur = $serveur;
611
+            $boucle->select[] = 'DISTINCT lang';
612
+            $boucle->from[$desc['table_objet']] = $t;
613
+            $boucle->separateur[] = ',';
614
+            $boucle->return = '$Pile[$SP][\'lang\']';
615
+            $boucle->iterateur = 'sql';
616
+
617
+            $boucle->descr['nom'] = 'calculer_langues_utilisees'; // eviter notice php
618
+            $boucle->descr['sourcefile'] = 'internal';
619
+            $boucle->descr['gram'] = 'html';
620
+
621
+            $boucle = pipeline('pre_boucle', $boucle);
622
+
623
+            if (
624
+                isset($desc['statut'])
625
+                && $desc['statut']
626
+            ) {
627
+                $boucles = [
628
+                    'calculer_langues_utilisees' => $boucle,
629
+                ];
630
+                // generer un nom de fonction "anonyme" unique
631
+                do {
632
+                    $functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax());
633
+                } while (function_exists($functionname));
634
+                $code = calculer_boucle('calculer_langues_utilisees', $boucles);
635
+                $code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code;
636
+                $code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();';
637
+                $res = '';
638
+                eval($code);
639
+                $res = explode(',', $res);
640
+                foreach ($res as $lang) {
641
+                    $langues[$lang] = 1;
642
+                }
643
+            } else {
644
+                $res = sql_select(implode(',', $boucle->select), $boucle->from);
645
+                while ($row = sql_fetch($res)) {
646
+                    $langues[$row['lang']] = 1;
647
+                }
648
+            }
649
+        }
650
+    }
651
+
652
+    $langues = array_filter(array_keys($langues));
653
+    sort($langues);
654
+    $langues = join(',', $langues);
655
+    spip_logger()->info("langues utilisees: $langues");
656
+
657
+    return $langues;
658 658
 }
659 659
 
660 660
 /**
@@ -671,9 +671,9 @@  discard block
 block discarded – undo
671 671
  *     incluant les rubriques noeuds et toutes leurs descendances
672 672
  */
673 673
 function calcul_branche_in($id) {
674
-	$calcul_branche_in = charger_fonction('calcul_branche_in', 'inc');
674
+    $calcul_branche_in = charger_fonction('calcul_branche_in', 'inc');
675 675
 
676
-	return $calcul_branche_in($id);
676
+    return $calcul_branche_in($id);
677 677
 }
678 678
 
679 679
 /**
@@ -691,9 +691,9 @@  discard block
 block discarded – undo
691 691
  *     incluant les rubriques transmises et toutes leurs parentées
692 692
  */
693 693
 function calcul_hierarchie_in($id, $tout = true) {
694
-	$calcul_hierarchie_in = charger_fonction('calcul_hierarchie_in', 'inc');
694
+    $calcul_hierarchie_in = charger_fonction('calcul_hierarchie_in', 'inc');
695 695
 
696
-	return $calcul_hierarchie_in($id, $tout);
696
+    return $calcul_hierarchie_in($id, $tout);
697 697
 }
698 698
 
699 699
 
@@ -714,40 +714,40 @@  discard block
 block discarded – undo
714 714
  *     incluant les rubriques noeuds et toutes leurs descendances
715 715
  */
716 716
 function inc_calcul_branche_in_dist($id) {
717
-	static $b = [];
718
-
719
-	// normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN
720
-	if (!is_array($id)) {
721
-		$id = explode(',', $id);
722
-	}
723
-	$id = join(',', array_map('intval', $id));
724
-	if (isset($b[$id])) {
725
-		return $b[$id];
726
-	}
727
-
728
-	// Notre branche commence par la rubrique de depart
729
-	$branche = $r = $id;
730
-
731
-	// On ajoute une generation (les filles de la generation precedente)
732
-	// jusqu'a epuisement, en se protegeant des references circulaires
733
-	$maxiter = 10000;
734
-	while (
735
-		$maxiter-- && ($filles = sql_allfetsel(
736
-			'id_rubrique',
737
-			'spip_rubriques',
738
-			sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT')
739
-		))
740
-	) {
741
-		$r = join(',', array_column($filles, 'id_rubrique'));
742
-		$branche .= ',' . $r;
743
-	}
744
-
745
-	# securite pour ne pas plomber la conso memoire sur les sites prolifiques
746
-	if (strlen($branche) < 10000) {
747
-		$b[$id] = $branche;
748
-	}
749
-
750
-	return $branche;
717
+    static $b = [];
718
+
719
+    // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN
720
+    if (!is_array($id)) {
721
+        $id = explode(',', $id);
722
+    }
723
+    $id = join(',', array_map('intval', $id));
724
+    if (isset($b[$id])) {
725
+        return $b[$id];
726
+    }
727
+
728
+    // Notre branche commence par la rubrique de depart
729
+    $branche = $r = $id;
730
+
731
+    // On ajoute une generation (les filles de la generation precedente)
732
+    // jusqu'a epuisement, en se protegeant des references circulaires
733
+    $maxiter = 10000;
734
+    while (
735
+        $maxiter-- && ($filles = sql_allfetsel(
736
+            'id_rubrique',
737
+            'spip_rubriques',
738
+            sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT')
739
+        ))
740
+    ) {
741
+        $r = join(',', array_column($filles, 'id_rubrique'));
742
+        $branche .= ',' . $r;
743
+    }
744
+
745
+    # securite pour ne pas plomber la conso memoire sur les sites prolifiques
746
+    if (strlen($branche) < 10000) {
747
+        $b[$id] = $branche;
748
+    }
749
+
750
+    return $branche;
751 751
 }
752 752
 
753 753
 
@@ -769,45 +769,45 @@  discard block
 block discarded – undo
769 769
  *     incluant les rubriques transmises et toutes leurs parentées
770 770
  */
771 771
 function inc_calcul_hierarchie_in_dist($id, $tout = true) {
772
-	static $b = [];
773
-
774
-	// normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN
775
-	if (!is_array($id)) {
776
-		$id = explode(',', $id);
777
-	}
778
-	$id = join(',', array_map('intval', $id));
779
-
780
-	if (isset($b[$id])) {
781
-		// Notre branche commence par la rubrique de depart si $tout=true
782
-		return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id];
783
-	}
784
-
785
-	$hier = '';
786
-
787
-	// On ajoute une generation (les filles de la generation precedente)
788
-	// jusqu'a epuisement, en se protegeant des references circulaires
789
-	$ids_nouveaux_parents = $id;
790
-	$maxiter = 10000;
791
-	while (
792
-		$maxiter-- && ($parents = sql_allfetsel(
793
-			'id_parent',
794
-			'spip_rubriques',
795
-			sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT')
796
-		))
797
-	) {
798
-		$ids_nouveaux_parents = join(',', array_column($parents, 'id_parent'));
799
-		$hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : '');
800
-	}
801
-
802
-	# securite pour ne pas plomber la conso memoire sur les sites prolifiques
803
-	if (strlen($hier) < 10000) {
804
-		$b[$id] = $hier;
805
-	}
806
-
807
-	// Notre branche commence par la rubrique de depart si $tout=true
808
-	$hier = $tout ? (strlen($hier) ? "$hier,$id" : $id) : $hier;
809
-
810
-	return $hier;
772
+    static $b = [];
773
+
774
+    // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN
775
+    if (!is_array($id)) {
776
+        $id = explode(',', $id);
777
+    }
778
+    $id = join(',', array_map('intval', $id));
779
+
780
+    if (isset($b[$id])) {
781
+        // Notre branche commence par la rubrique de depart si $tout=true
782
+        return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id];
783
+    }
784
+
785
+    $hier = '';
786
+
787
+    // On ajoute une generation (les filles de la generation precedente)
788
+    // jusqu'a epuisement, en se protegeant des references circulaires
789
+    $ids_nouveaux_parents = $id;
790
+    $maxiter = 10000;
791
+    while (
792
+        $maxiter-- && ($parents = sql_allfetsel(
793
+            'id_parent',
794
+            'spip_rubriques',
795
+            sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT')
796
+        ))
797
+    ) {
798
+        $ids_nouveaux_parents = join(',', array_column($parents, 'id_parent'));
799
+        $hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : '');
800
+    }
801
+
802
+    # securite pour ne pas plomber la conso memoire sur les sites prolifiques
803
+    if (strlen($hier) < 10000) {
804
+        $b[$id] = $hier;
805
+    }
806
+
807
+    // Notre branche commence par la rubrique de depart si $tout=true
808
+    $hier = $tout ? (strlen($hier) ? "$hier,$id" : $id) : $hier;
809
+
810
+    return $hier;
811 811
 }
812 812
 
813 813
 
@@ -825,47 +825,47 @@  discard block
 block discarded – undo
825 825
  * @return void
826 826
  **/
827 827
 function calculer_prochain_postdate($check = false) {
828
-	include_spip('base/abstract_sql');
829
-	if ($check) {
830
-		$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
831
-			'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
832
-
833
-		$r = sql_select(
834
-			'DISTINCT A.id_rubrique AS id',
835
-			'spip_articles AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique',
836
-			"R.statut != 'publie' AND A.statut='publie'$postdates"
837
-		);
838
-		while ($row = sql_fetch($r)) {
839
-			publier_branche_rubrique($row['id']);
840
-		}
841
-
842
-		pipeline('trig_calculer_prochain_postdate', '');
843
-	}
844
-
845
-	$t = sql_fetsel(
846
-		'date',
847
-		'spip_articles',
848
-		"statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')),
849
-		'',
850
-		'date',
851
-		'1'
852
-	);
853
-
854
-	if ($t) {
855
-		$t = $t['date'];
856
-		if (
857
-			!isset($GLOBALS['meta']['date_prochain_postdate'])
858
-			|| $t <> $GLOBALS['meta']['date_prochain_postdate']
859
-		) {
860
-			ecrire_meta('date_prochain_postdate', strtotime($t));
861
-			ecrire_meta('derniere_modif', time());
862
-		}
863
-	} else {
864
-		effacer_meta('date_prochain_postdate');
865
-		ecrire_meta('derniere_modif', time());
866
-	}
867
-
868
-	spip_logger()->info("prochain postdate: $t");
828
+    include_spip('base/abstract_sql');
829
+    if ($check) {
830
+        $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
831
+            'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
832
+
833
+        $r = sql_select(
834
+            'DISTINCT A.id_rubrique AS id',
835
+            'spip_articles AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique',
836
+            "R.statut != 'publie' AND A.statut='publie'$postdates"
837
+        );
838
+        while ($row = sql_fetch($r)) {
839
+            publier_branche_rubrique($row['id']);
840
+        }
841
+
842
+        pipeline('trig_calculer_prochain_postdate', '');
843
+    }
844
+
845
+    $t = sql_fetsel(
846
+        'date',
847
+        'spip_articles',
848
+        "statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')),
849
+        '',
850
+        'date',
851
+        '1'
852
+    );
853
+
854
+    if ($t) {
855
+        $t = $t['date'];
856
+        if (
857
+            !isset($GLOBALS['meta']['date_prochain_postdate'])
858
+            || $t <> $GLOBALS['meta']['date_prochain_postdate']
859
+        ) {
860
+            ecrire_meta('date_prochain_postdate', strtotime($t));
861
+            ecrire_meta('derniere_modif', time());
862
+        }
863
+    } else {
864
+        effacer_meta('date_prochain_postdate');
865
+        ecrire_meta('derniere_modif', time());
866
+    }
867
+
868
+    spip_logger()->info("prochain postdate: $t");
869 869
 }
870 870
 
871 871
 /**
@@ -890,62 +890,62 @@  discard block
 block discarded – undo
890 890
  */
891 891
 function creer_rubrique_nommee($titre, $id_parent = 0, $serveur = '') {
892 892
 
893
-	// eclater l'arborescence demandee
894
-	// echapper les </multi> et autres balises fermantes html
895
-	$titre = preg_replace(',</([a-z][^>]*)>,ims', "<@\\1>", $titre);
896
-	$arbo = explode('/', preg_replace(',^/,', '', $titre));
897
-	include_spip('base/abstract_sql');
898
-	foreach ($arbo as $titre) {
899
-		// retablir les </multi> et autres balises fermantes html
900
-		$titre = preg_replace(',<@([a-z][^>]*)>,ims', "</\\1>", $titre);
901
-		$r = sql_getfetsel(
902
-			'id_rubrique',
903
-			'spip_rubriques',
904
-			'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent),
905
-			$groupby = [],
906
-			$orderby = [],
907
-			$limit = '',
908
-			$having = [],
909
-			$serveur
910
-		);
911
-		if ($r !== null) {
912
-			$id_parent = $r;
913
-		} else {
914
-			$id_rubrique = sql_insertq('spip_rubriques', [
915
-					'titre' => $titre,
916
-					'id_parent' => $id_parent,
917
-					'statut' => 'prepa'
918
-				], $desc = [], $serveur);
919
-			if ($id_parent > 0) {
920
-				$data = sql_fetsel(
921
-					'id_secteur,lang',
922
-					'spip_rubriques',
923
-					"id_rubrique=$id_parent",
924
-					$groupby = [],
925
-					$orderby = [],
926
-					$limit = '',
927
-					$having = [],
928
-					$serveur
929
-				);
930
-				$id_secteur = $data['id_secteur'];
931
-				$lang = $data['lang'];
932
-			} else {
933
-				$id_secteur = $id_rubrique;
934
-				$lang = $GLOBALS['meta']['langue_site'];
935
-			}
936
-
937
-			sql_updateq(
938
-				'spip_rubriques',
939
-				['id_secteur' => $id_secteur, 'lang' => $lang],
940
-				'id_rubrique=' . intval($id_rubrique),
941
-				[],
942
-				$serveur
943
-			);
944
-
945
-			// pour la recursion
946
-			$id_parent = $id_rubrique;
947
-		}
948
-	}
949
-
950
-	return intval($id_parent);
893
+    // eclater l'arborescence demandee
894
+    // echapper les </multi> et autres balises fermantes html
895
+    $titre = preg_replace(',</([a-z][^>]*)>,ims', "<@\\1>", $titre);
896
+    $arbo = explode('/', preg_replace(',^/,', '', $titre));
897
+    include_spip('base/abstract_sql');
898
+    foreach ($arbo as $titre) {
899
+        // retablir les </multi> et autres balises fermantes html
900
+        $titre = preg_replace(',<@([a-z][^>]*)>,ims', "</\\1>", $titre);
901
+        $r = sql_getfetsel(
902
+            'id_rubrique',
903
+            'spip_rubriques',
904
+            'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent),
905
+            $groupby = [],
906
+            $orderby = [],
907
+            $limit = '',
908
+            $having = [],
909
+            $serveur
910
+        );
911
+        if ($r !== null) {
912
+            $id_parent = $r;
913
+        } else {
914
+            $id_rubrique = sql_insertq('spip_rubriques', [
915
+                    'titre' => $titre,
916
+                    'id_parent' => $id_parent,
917
+                    'statut' => 'prepa'
918
+                ], $desc = [], $serveur);
919
+            if ($id_parent > 0) {
920
+                $data = sql_fetsel(
921
+                    'id_secteur,lang',
922
+                    'spip_rubriques',
923
+                    "id_rubrique=$id_parent",
924
+                    $groupby = [],
925
+                    $orderby = [],
926
+                    $limit = '',
927
+                    $having = [],
928
+                    $serveur
929
+                );
930
+                $id_secteur = $data['id_secteur'];
931
+                $lang = $data['lang'];
932
+            } else {
933
+                $id_secteur = $id_rubrique;
934
+                $lang = $GLOBALS['meta']['langue_site'];
935
+            }
936
+
937
+            sql_updateq(
938
+                'spip_rubriques',
939
+                ['id_secteur' => $id_secteur, 'lang' => $lang],
940
+                'id_rubrique=' . intval($id_rubrique),
941
+                [],
942
+                $serveur
943
+            );
944
+
945
+            // pour la recursion
946
+            $id_parent = $id_rubrique;
947
+        }
948
+    }
949
+
950
+    return intval($id_parent);
951 951
 }
Please login to merge, or discard this patch.
Spacing   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -135,9 +135,9 @@  discard block
 block discarded – undo
135 135
 		sql_updateq(
136 136
 			'spip_rubriques',
137 137
 			['statut' => 'publie', 'date' => date('Y-m-d H:i:s')],
138
-			'id_rubrique=' . intval($id_rubrique)
138
+			'id_rubrique='.intval($id_rubrique)
139 139
 		);
140
-		$id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique));
140
+		$id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique='.intval($id_rubrique));
141 141
 		if (!$id_parent) {
142 142
 			break;
143 143
 		}
@@ -172,7 +172,7 @@  discard block
 block discarded – undo
172 172
 			return $id_pred != $id_rubrique;
173 173
 		}
174 174
 		// passer au parent si on a depublie
175
-		$r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred));
175
+		$r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique='.intval($id_pred));
176 176
 		$id_pred = $r['id_parent'];
177 177
 	}
178 178
 
@@ -197,14 +197,14 @@  discard block
 block discarded – undo
197 197
 		$date = date('Y-m-d H:i:s');
198 198
 	}
199 199
 	$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
200
-		' AND date <= ' . sql_quote($date) : '';
200
+		' AND date <= '.sql_quote($date) : '';
201 201
 
202 202
 	if (!$id_rubrique = intval($id_rubrique)) {
203 203
 		return false;
204 204
 	}
205 205
 
206 206
 	// verifier qu'elle existe et est bien publiee
207
-	$r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
207
+	$r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique='.intval($id_rubrique));
208 208
 	if (!$r || $r['statut'] !== 'publie') {
209 209
 		return false;
210 210
 	}
@@ -214,12 +214,12 @@  discard block
 block discarded – undo
214 214
 	$compte = [
215 215
 		'articles' => sql_countsel(
216 216
 			'spip_articles',
217
-			'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates"
217
+			'id_rubrique='.intval($id_rubrique)." AND statut='publie'$postdates"
218 218
 		),
219
-		'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"),
219
+		'rubriques' => sql_countsel('spip_rubriques', 'id_parent='.intval($id_rubrique)." AND statut='publie'"),
220 220
 		'documents' => sql_countsel(
221 221
 			'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document',
222
-			'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') "
222
+			'L.id_objet='.intval($id_rubrique)." AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') "
223 223
 		)
224 224
 	];
225 225
 
@@ -244,7 +244,7 @@  discard block
 block discarded – undo
244 244
 		}
245 245
 	}
246 246
 
247
-	sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique));
247
+	sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique='.intval($id_rubrique));
248 248
 
249 249
 #		spip_logger()->info("depublier_rubrique $id_pred");
250 250
 	return true;
@@ -307,7 +307,7 @@  discard block
 block discarded – undo
307 307
 
308 308
 	// Afficher les articles post-dates ?
309 309
 	$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
310
-		'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
310
+		'AND A.date <= '.sql_quote(date('Y-m-d H:i:s')) : '';
311 311
 
312 312
 	$r = sql_select(
313 313
 		'R.id_rubrique AS id, max(A.date) AS date_h',
@@ -319,7 +319,7 @@  discard block
 block discarded – undo
319 319
 		sql_updateq(
320 320
 			'spip_rubriques',
321 321
 			['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
322
-			'id_rubrique=' . intval($row['id'])
322
+			'id_rubrique='.intval($row['id'])
323 323
 		);
324 324
 	}
325 325
 
@@ -345,7 +345,7 @@  discard block
 block discarded – undo
345 345
 			sql_updateq(
346 346
 				'spip_rubriques',
347 347
 				['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
348
-				'id_rubrique=' . intval($row['id'])
348
+				'id_rubrique='.intval($row['id'])
349 349
 			);
350 350
 			$continuer = true;
351 351
 		}
@@ -398,7 +398,7 @@  discard block
 block discarded – undo
398 398
 			&& ($rows = sql_allfetsel(
399 399
 				'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur',
400 400
 				'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique',
401
-				'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)',
401
+				'R.profondeur='.intval($prof).' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)',
402 402
 				'',
403 403
 				'R.id_secteur',
404 404
 				'0,100'
@@ -437,11 +437,11 @@  discard block
 block discarded – undo
437 437
 			&& ($rows = sql_allfetsel(
438 438
 				'id_rubrique as id',
439 439
 				'spip_rubriques',
440
-				'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select(
440
+				'profondeur='.intval($prof + 1).' AND id_parent NOT IN ('.sql_get_select(
441 441
 					'zzz.id_rubrique',
442 442
 					'spip_rubriques AS zzz',
443
-					'zzz.profondeur=' . intval($prof)
444
-				) . ')',
443
+					'zzz.profondeur='.intval($prof)
444
+				).')',
445 445
 				'',
446 446
 				'',
447 447
 				'0,100'
@@ -455,7 +455,7 @@  discard block
 block discarded – undo
455 455
 		// si pas de rubrique a profondeur $prof+1 pas la peine de continuer
456 456
 		// si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse)
457 457
 		// on arrete les frais
458
-		if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) {
458
+		if (sql_countsel('spip_rubriques', 'profondeur='.intval($prof + 1))) {
459 459
 			$prof++;
460 460
 			$continuer = true;
461 461
 		}
@@ -463,11 +463,11 @@  discard block
 block discarded – undo
463 463
 
464 464
 	// loger si la table des rubriques semble foireuse
465 465
 	// et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles
466
-	if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) {
466
+	if (sql_countsel('spip_rubriques', 'profondeur>'.intval($prof + 1))) {
467 467
 		spip_logger()->critical(
468
-			'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)',
468
+			'Les rubriques de profondeur>'.($prof + 1).' semblent suspectes (branches morte ou reference circulaire dans les parents)',
469 469
 		);
470
-		sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1));
470
+		sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>'.intval($prof + 1));
471 471
 	}
472 472
 
473 473
 	// reparer les articles
@@ -478,7 +478,7 @@  discard block
 block discarded – undo
478 478
 	);
479 479
 
480 480
 	while ($row = sql_fetch($r)) {
481
-		sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id']));
481
+		sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article='.intval($row['id']));
482 482
 	}
483 483
 
484 484
 	// avertir les plugins qui peuvent faire leur mises a jour egalement
@@ -509,7 +509,7 @@  discard block
 block discarded – undo
509 509
 		$t = sql_updateq(
510 510
 			'spip_rubriques',
511 511
 			['lang' => $row['lang'], 'langue_choisie' => 'non'],
512
-			'id_rubrique=' . intval($id_rubrique)
512
+			'id_rubrique='.intval($id_rubrique)
513 513
 		);
514 514
 	}
515 515
 
@@ -554,7 +554,7 @@  discard block
 block discarded – undo
554 554
 		sql_updateq(
555 555
 			'spip_articles',
556 556
 			['lang' => $row['lang'], 'langue_choisie' => 'non'],
557
-			'id_article=' . intval($id_article)
557
+			'id_article='.intval($id_article)
558 558
 		);
559 559
 	}
560 560
 
@@ -629,11 +629,11 @@  discard block
 block discarded – undo
629 629
 				];
630 630
 				// generer un nom de fonction "anonyme" unique
631 631
 				do {
632
-					$functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax());
632
+					$functionname = 'f_calculer_langues_utilisees_'.$boucle->id_table.'_'.time().'_'.random_int(0, mt_getrandmax());
633 633
 				} while (function_exists($functionname));
634 634
 				$code = calculer_boucle('calculer_langues_utilisees', $boucles);
635
-				$code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code;
636
-				$code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();';
635
+				$code = '$SP=0; $command=array();$command["connect"] = $connect = "'.$serveur.'"; $Pile=array(0=>array());'."\n".$code;
636
+				$code = 'function '.$functionname.'(){'.$code.'};$res = '.$functionname.'();';
637 637
 				$res = '';
638 638
 				eval($code);
639 639
 				$res = explode(',', $res);
@@ -735,11 +735,11 @@  discard block
 block discarded – undo
735 735
 		$maxiter-- && ($filles = sql_allfetsel(
736 736
 			'id_rubrique',
737 737
 			'spip_rubriques',
738
-			sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT')
738
+			sql_in('id_parent', $r).' AND '.sql_in('id_rubrique', $r, 'NOT')
739 739
 		))
740 740
 	) {
741 741
 		$r = join(',', array_column($filles, 'id_rubrique'));
742
-		$branche .= ',' . $r;
742
+		$branche .= ','.$r;
743 743
 	}
744 744
 
745 745
 	# securite pour ne pas plomber la conso memoire sur les sites prolifiques
@@ -779,7 +779,7 @@  discard block
 block discarded – undo
779 779
 
780 780
 	if (isset($b[$id])) {
781 781
 		// Notre branche commence par la rubrique de depart si $tout=true
782
-		return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id];
782
+		return $tout ? (strlen($b[$id]) ? $b[$id].",$id" : $id) : $b[$id];
783 783
 	}
784 784
 
785 785
 	$hier = '';
@@ -792,11 +792,11 @@  discard block
 block discarded – undo
792 792
 		$maxiter-- && ($parents = sql_allfetsel(
793 793
 			'id_parent',
794 794
 			'spip_rubriques',
795
-			sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT')
795
+			sql_in('id_rubrique', $ids_nouveaux_parents).' AND '.sql_in('id_parent', $hier, 'NOT')
796 796
 		))
797 797
 	) {
798 798
 		$ids_nouveaux_parents = join(',', array_column($parents, 'id_parent'));
799
-		$hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : '');
799
+		$hier = $ids_nouveaux_parents.(strlen($hier) ? ','.$hier : '');
800 800
 	}
801 801
 
802 802
 	# securite pour ne pas plomber la conso memoire sur les sites prolifiques
@@ -828,7 +828,7 @@  discard block
 block discarded – undo
828 828
 	include_spip('base/abstract_sql');
829 829
 	if ($check) {
830 830
 		$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
831
-			'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
831
+			'AND A.date <= '.sql_quote(date('Y-m-d H:i:s')) : '';
832 832
 
833 833
 		$r = sql_select(
834 834
 			'DISTINCT A.id_rubrique AS id',
@@ -845,7 +845,7 @@  discard block
 block discarded – undo
845 845
 	$t = sql_fetsel(
846 846
 		'date',
847 847
 		'spip_articles',
848
-		"statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')),
848
+		"statut='publie' AND date > ".sql_quote(date('Y-m-d H:i:s')),
849 849
 		'',
850 850
 		'date',
851 851
 		'1'
@@ -901,7 +901,7 @@  discard block
 block discarded – undo
901 901
 		$r = sql_getfetsel(
902 902
 			'id_rubrique',
903 903
 			'spip_rubriques',
904
-			'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent),
904
+			'titre = '.sql_quote($titre).' AND id_parent='.intval($id_parent),
905 905
 			$groupby = [],
906 906
 			$orderby = [],
907 907
 			$limit = '',
@@ -937,7 +937,7 @@  discard block
 block discarded – undo
937 937
 			sql_updateq(
938 938
 				'spip_rubriques',
939 939
 				['id_secteur' => $id_secteur, 'lang' => $lang],
940
-				'id_rubrique=' . intval($id_rubrique),
940
+				'id_rubrique='.intval($id_rubrique),
941 941
 				[],
942 942
 				$serveur
943 943
 			);
Please login to merge, or discard this patch.
ecrire/inc/charsets.php 2 patches
Indentation   +632 added lines, -632 removed lines patch added patch discarded remove patch
@@ -21,7 +21,7 @@  discard block
 block discarded – undo
21 21
 
22 22
 // securité
23 23
 if (!defined('_ECRIRE_INC_VERSION')) {
24
-	return;
24
+    return;
25 25
 }
26 26
 
27 27
 // se faciliter la lecture du charset
@@ -31,19 +31,19 @@  discard block
 block discarded – undo
31 31
  * Initialisation
32 32
  */
33 33
 function init_charset(): void {
34
-	// Initialisation
35
-	$GLOBALS['CHARSET'] = [];
36
-
37
-	// noter a l'occasion dans la meta pcre_u notre capacite a utiliser le flag /u
38
-	// dans les preg_replace pour ne pas casser certaines lettres accentuees :
39
-	// en utf-8 chr(195).chr(160) = a` alors qu'en iso-latin chr(160) = nbsp
40
-	if (
41
-		!isset($GLOBALS['meta']['pcre_u'])
42
-		|| isset($_GET['var_mode']) && !isset($_GET['var_profile'])
43
-	) {
44
-		include_spip('inc/meta');
45
-		ecrire_meta('pcre_u', (lire_config('charset', _DEFAULT_CHARSET) === 'utf-8') ? 'u' : '');
46
-	}
34
+    // Initialisation
35
+    $GLOBALS['CHARSET'] = [];
36
+
37
+    // noter a l'occasion dans la meta pcre_u notre capacite a utiliser le flag /u
38
+    // dans les preg_replace pour ne pas casser certaines lettres accentuees :
39
+    // en utf-8 chr(195).chr(160) = a` alors qu'en iso-latin chr(160) = nbsp
40
+    if (
41
+        !isset($GLOBALS['meta']['pcre_u'])
42
+        || isset($_GET['var_mode']) && !isset($_GET['var_profile'])
43
+    ) {
44
+        include_spip('inc/meta');
45
+        ecrire_meta('pcre_u', (lire_config('charset', _DEFAULT_CHARSET) === 'utf-8') ? 'u' : '');
46
+    }
47 47
 }
48 48
 
49 49
 // TODO: code d’exécution en dehors du fichier.
@@ -64,39 +64,39 @@  discard block
 block discarded – undo
64 64
  *     - false si le charset n'est pas décrit dans le répertoire charsets/
65 65
  **/
66 66
 function load_charset($charset = 'AUTO') {
67
-	if ($charset == 'AUTO') {
68
-		$charset = $GLOBALS['meta']['charset'];
69
-	}
70
-	$charset = trim(strtolower((string) $charset));
71
-	if (isset($GLOBALS['CHARSET'][$charset])) {
72
-		return $charset;
73
-	}
74
-
75
-	if ($charset == 'utf-8') {
76
-		$GLOBALS['CHARSET'][$charset] = [];
77
-
78
-		return $charset;
79
-	}
80
-
81
-	// Quelques synonymes
82
-	if ($charset === '') {
83
-		$charset = 'iso-8859-1';
84
-	} elseif ($charset === 'windows-1250') {
85
-		$charset = 'cp1250';
86
-	} elseif ($charset === 'windows-1251') {
87
-		$charset = 'cp1251';
88
-	} elseif ($charset === 'windows-1256') {
89
-		$charset = 'cp1256';
90
-	}
91
-
92
-	if (find_in_path($charset . '.php', 'charsets/', true)) {
93
-		return $charset;
94
-	} else {
95
-		spip_logger()->info("Erreur: pas de fichier de conversion 'charsets/$charset'");
96
-		$GLOBALS['CHARSET'][$charset] = [];
97
-
98
-		return false;
99
-	}
67
+    if ($charset == 'AUTO') {
68
+        $charset = $GLOBALS['meta']['charset'];
69
+    }
70
+    $charset = trim(strtolower((string) $charset));
71
+    if (isset($GLOBALS['CHARSET'][$charset])) {
72
+        return $charset;
73
+    }
74
+
75
+    if ($charset == 'utf-8') {
76
+        $GLOBALS['CHARSET'][$charset] = [];
77
+
78
+        return $charset;
79
+    }
80
+
81
+    // Quelques synonymes
82
+    if ($charset === '') {
83
+        $charset = 'iso-8859-1';
84
+    } elseif ($charset === 'windows-1250') {
85
+        $charset = 'cp1250';
86
+    } elseif ($charset === 'windows-1251') {
87
+        $charset = 'cp1251';
88
+    } elseif ($charset === 'windows-1256') {
89
+        $charset = 'cp1256';
90
+    }
91
+
92
+    if (find_in_path($charset . '.php', 'charsets/', true)) {
93
+        return $charset;
94
+    } else {
95
+        spip_logger()->info("Erreur: pas de fichier de conversion 'charsets/$charset'");
96
+        $GLOBALS['CHARSET'][$charset] = [];
97
+
98
+        return false;
99
+    }
100 100
 }
101 101
 
102 102
 
@@ -109,19 +109,19 @@  discard block
 block discarded – undo
109 109
  *     true si notre charset est utilisable par mb_strsing
110 110
  **/
111 111
 function init_mb_string(): bool {
112
-	static $mb;
113
-
114
-	// verifier que le charset interne est connu de mb_string
115
-	if (!$mb) {
116
-		if (mb_detect_order(lire_config('charset', _DEFAULT_CHARSET))) {
117
-			mb_internal_encoding('utf-8');
118
-			$mb = 1;
119
-		} else {
120
-			$mb = -1;
121
-		}
122
-	}
123
-
124
-	return ($mb === 1);
112
+    static $mb;
113
+
114
+    // verifier que le charset interne est connu de mb_string
115
+    if (!$mb) {
116
+        if (mb_detect_order(lire_config('charset', _DEFAULT_CHARSET))) {
117
+            mb_internal_encoding('utf-8');
118
+            $mb = 1;
119
+        } else {
120
+            $mb = -1;
121
+        }
122
+    }
123
+
124
+    return ($mb === 1);
125 125
 }
126 126
 
127 127
 /**
@@ -136,17 +136,17 @@  discard block
 block discarded – undo
136 136
  *     true si iconv fonctionne correctement
137 137
  **/
138 138
 function test_iconv(): bool {
139
-	static $iconv_ok;
139
+    static $iconv_ok;
140 140
 
141
-	if (!$iconv_ok) {
142
-		if (!function_exists('iconv')) {
143
-			$iconv_ok = -1;
144
-		} else {
145
-			$iconv_ok = utf_32_to_unicode(@iconv('utf-8', 'utf-32', 'chaine de test')) === 'chaine de test' ? 1 : -1;
146
-		}
147
-	}
141
+    if (!$iconv_ok) {
142
+        if (!function_exists('iconv')) {
143
+            $iconv_ok = -1;
144
+        } else {
145
+            $iconv_ok = utf_32_to_unicode(@iconv('utf-8', 'utf-32', 'chaine de test')) === 'chaine de test' ? 1 : -1;
146
+        }
147
+    }
148 148
 
149
-	return ($iconv_ok === 1);
149
+    return ($iconv_ok === 1);
150 150
 }
151 151
 
152 152
 /**
@@ -166,75 +166,75 @@  discard block
 block discarded – undo
166 166
  *     texte corrigé
167 167
  **/
168 168
 function corriger_caracteres_windows($texte, $charset = 'AUTO', $charset_cible = 'unicode') {
169
-	static $trans;
170
-
171
-	if (is_array($texte)) {
172
-		return array_map('corriger_caracteres_windows', $texte);
173
-	}
174
-
175
-	if ($charset == 'AUTO') {
176
-		$charset = lire_config('charset', _DEFAULT_CHARSET);
177
-	}
178
-	if ($charset == 'utf-8') {
179
-		$p = chr(194);
180
-		if (!str_contains($texte, $p)) {
181
-			return $texte;
182
-		}
183
-	} else {
184
-		if ($charset == 'iso-8859-1') {
185
-			$p = '';
186
-		} else {
187
-			return $texte;
188
-		}
189
-	}
190
-
191
-	if (!isset($trans[$charset][$charset_cible])) {
192
-		$trans[$charset][$charset_cible] = [
193
-			$p . chr(128) => '&#8364;',
194
-			$p . chr(129) => ' ', # pas affecte
195
-			$p . chr(130) => '&#8218;',
196
-			$p . chr(131) => '&#402;',
197
-			$p . chr(132) => '&#8222;',
198
-			$p . chr(133) => '&#8230;',
199
-			$p . chr(134) => '&#8224;',
200
-			$p . chr(135) => '&#8225;',
201
-			$p . chr(136) => '&#710;',
202
-			$p . chr(137) => '&#8240;',
203
-			$p . chr(138) => '&#352;',
204
-			$p . chr(139) => '&#8249;',
205
-			$p . chr(140) => '&#338;',
206
-			$p . chr(141) => ' ', # pas affecte
207
-			$p . chr(142) => '&#381;',
208
-			$p . chr(143) => ' ', # pas affecte
209
-			$p . chr(144) => ' ', # pas affecte
210
-			$p . chr(145) => '&#8216;',
211
-			$p . chr(146) => '&#8217;',
212
-			$p . chr(147) => '&#8220;',
213
-			$p . chr(148) => '&#8221;',
214
-			$p . chr(149) => '&#8226;',
215
-			$p . chr(150) => '&#8211;',
216
-			$p . chr(151) => '&#8212;',
217
-			$p . chr(152) => '&#732;',
218
-			$p . chr(153) => '&#8482;',
219
-			$p . chr(154) => '&#353;',
220
-			$p . chr(155) => '&#8250;',
221
-			$p . chr(156) => '&#339;',
222
-			$p . chr(157) => ' ', # pas affecte
223
-			$p . chr(158) => '&#382;',
224
-			$p . chr(159) => '&#376;',
225
-		];
226
-		if ($charset_cible != 'unicode') {
227
-			foreach ($trans[$charset][$charset_cible] as $k => $c) {
228
-				$trans[$charset][$charset_cible][$k] = unicode2charset($c, $charset_cible);
229
-			}
230
-		}
231
-	}
232
-
233
-	return @str_replace(
234
-		array_keys($trans[$charset][$charset_cible]),
235
-		array_values($trans[$charset][$charset_cible]),
236
-		$texte
237
-	);
169
+    static $trans;
170
+
171
+    if (is_array($texte)) {
172
+        return array_map('corriger_caracteres_windows', $texte);
173
+    }
174
+
175
+    if ($charset == 'AUTO') {
176
+        $charset = lire_config('charset', _DEFAULT_CHARSET);
177
+    }
178
+    if ($charset == 'utf-8') {
179
+        $p = chr(194);
180
+        if (!str_contains($texte, $p)) {
181
+            return $texte;
182
+        }
183
+    } else {
184
+        if ($charset == 'iso-8859-1') {
185
+            $p = '';
186
+        } else {
187
+            return $texte;
188
+        }
189
+    }
190
+
191
+    if (!isset($trans[$charset][$charset_cible])) {
192
+        $trans[$charset][$charset_cible] = [
193
+            $p . chr(128) => '&#8364;',
194
+            $p . chr(129) => ' ', # pas affecte
195
+            $p . chr(130) => '&#8218;',
196
+            $p . chr(131) => '&#402;',
197
+            $p . chr(132) => '&#8222;',
198
+            $p . chr(133) => '&#8230;',
199
+            $p . chr(134) => '&#8224;',
200
+            $p . chr(135) => '&#8225;',
201
+            $p . chr(136) => '&#710;',
202
+            $p . chr(137) => '&#8240;',
203
+            $p . chr(138) => '&#352;',
204
+            $p . chr(139) => '&#8249;',
205
+            $p . chr(140) => '&#338;',
206
+            $p . chr(141) => ' ', # pas affecte
207
+            $p . chr(142) => '&#381;',
208
+            $p . chr(143) => ' ', # pas affecte
209
+            $p . chr(144) => ' ', # pas affecte
210
+            $p . chr(145) => '&#8216;',
211
+            $p . chr(146) => '&#8217;',
212
+            $p . chr(147) => '&#8220;',
213
+            $p . chr(148) => '&#8221;',
214
+            $p . chr(149) => '&#8226;',
215
+            $p . chr(150) => '&#8211;',
216
+            $p . chr(151) => '&#8212;',
217
+            $p . chr(152) => '&#732;',
218
+            $p . chr(153) => '&#8482;',
219
+            $p . chr(154) => '&#353;',
220
+            $p . chr(155) => '&#8250;',
221
+            $p . chr(156) => '&#339;',
222
+            $p . chr(157) => ' ', # pas affecte
223
+            $p . chr(158) => '&#382;',
224
+            $p . chr(159) => '&#376;',
225
+        ];
226
+        if ($charset_cible != 'unicode') {
227
+            foreach ($trans[$charset][$charset_cible] as $k => $c) {
228
+                $trans[$charset][$charset_cible][$k] = unicode2charset($c, $charset_cible);
229
+            }
230
+        }
231
+    }
232
+
233
+    return @str_replace(
234
+        array_keys($trans[$charset][$charset_cible]),
235
+        array_values($trans[$charset][$charset_cible]),
236
+        $texte
237
+    );
238 238
 }
239 239
 
240 240
 
@@ -251,31 +251,31 @@  discard block
 block discarded – undo
251 251
  *     texte converti
252 252
  **/
253 253
 function html2unicode(string $texte, bool $secure = false): string {
254
-	static $trans = [];
255
-
256
-	if ($texte === null || $texte === '') {
257
-		return '';
258
-	}
259
-	if (!str_contains($texte, '&')) {
260
-		return $texte;
261
-	}
262
-
263
-	if (!$trans) {
264
-		load_charset('html');
265
-		foreach ($GLOBALS['CHARSET']['html'] as $key => $val) {
266
-			$trans["&$key;"] = $val;
267
-		}
268
-	}
269
-
270
-	$texte = str_replace(array_keys($trans), array_values($trans), $texte);
271
-	if (!$secure) {
272
-		$texte = str_replace(
273
-			['&amp;', '&quot;', '&lt;', '&gt;'],
274
-			['&', '"', '<', '>'],
275
-			$texte
276
-		);
277
-	}
278
-	return $texte;
254
+    static $trans = [];
255
+
256
+    if ($texte === null || $texte === '') {
257
+        return '';
258
+    }
259
+    if (!str_contains($texte, '&')) {
260
+        return $texte;
261
+    }
262
+
263
+    if (!$trans) {
264
+        load_charset('html');
265
+        foreach ($GLOBALS['CHARSET']['html'] as $key => $val) {
266
+            $trans["&$key;"] = $val;
267
+        }
268
+    }
269
+
270
+    $texte = str_replace(array_keys($trans), array_values($trans), $texte);
271
+    if (!$secure) {
272
+        $texte = str_replace(
273
+            ['&amp;', '&quot;', '&lt;', '&gt;'],
274
+            ['&', '"', '<', '>'],
275
+            $texte
276
+        );
277
+    }
278
+    return $texte;
279 279
 }
280 280
 
281 281
 
@@ -290,16 +290,16 @@  discard block
 block discarded – undo
290 290
  *     texte converti
291 291
  **/
292 292
 function mathml2unicode($texte) {
293
-	static $trans;
294
-	if (!$trans) {
295
-		load_charset('mathml');
293
+    static $trans;
294
+    if (!$trans) {
295
+        load_charset('mathml');
296 296
 
297
-		foreach ($GLOBALS['CHARSET']['mathml'] as $key => $val) {
298
-			$trans["&$key;"] = $val;
299
-		}
300
-	}
297
+        foreach ($GLOBALS['CHARSET']['mathml'] as $key => $val) {
298
+            $trans["&$key;"] = $val;
299
+        }
300
+    }
301 301
 
302
-	return str_replace(array_keys($trans), array_values($trans), $texte);
302
+    return str_replace(array_keys($trans), array_values($trans), $texte);
303 303
 }
304 304
 
305 305
 
@@ -321,74 +321,74 @@  discard block
 block discarded – undo
321 321
  *     texte converti en unicode
322 322
  **/
323 323
 function charset2unicode(?string $texte, string $charset = 'AUTO' /* $forcer: obsolete*/) {
324
-	static $trans;
325
-
326
-	if ($texte === null || $texte === '') {
327
-		return '';
328
-	}
329
-
330
-	if ($charset === 'AUTO') {
331
-		$charset = lire_config('charset', _DEFAULT_CHARSET);
332
-	}
333
-
334
-	if ($charset === '') {
335
-		$charset = 'iso-8859-1';
336
-	}
337
-	$charset = strtolower((string) $charset);
338
-
339
-	switch ($charset) {
340
-		case 'utf-8':
341
-		case 'utf8':
342
-			return utf_8_to_unicode($texte);
343
-
344
-		case 'iso-8859-1':
345
-			$texte = corriger_caracteres_windows($texte, 'iso-8859-1');
346
-		// pas de break; ici, on suit sur default:
347
-
348
-		default:
349
-			// mbstring presente ?
350
-			if (init_mb_string()) {
351
-				$order = mb_detect_order();
352
-				try {
353
-					# mb_string connait-il $charset?
354
-					if ($order && mb_detect_order($charset)) {
355
-						$s = mb_convert_encoding($texte, 'utf-8', $charset);
356
-						if ($s && $s != $texte) {
357
-							return utf_8_to_unicode($s);
358
-						}
359
-					}
360
-				} catch (\Error) {
361
-					// Le charset n'existe probablement pas
362
-				} finally {
363
-					mb_detect_order($order); # remettre comme precedemment
364
-				}
365
-			}
366
-
367
-			// Sinon, peut-etre connaissons-nous ce charset ?
368
-			if (!isset($trans[$charset]) && (($cset = load_charset($charset)) && is_array($GLOBALS['CHARSET'][$cset]))) {
369
-				foreach ($GLOBALS['CHARSET'][$cset] as $key => $val) {
370
-					$trans[$charset][chr($key)] = '&#' . $val . ';';
371
-				}
372
-			}
373
-			if (isset($trans[$charset]) && (is_countable($trans[$charset]) ? count($trans[$charset]) : 0)) {
374
-				return str_replace(array_keys($trans[$charset]), array_values($trans[$charset]), $texte);
375
-			}
376
-
377
-			// Sinon demander a iconv (malgre le fait qu'il coupe quand un
378
-			// caractere n'appartient pas au charset, mais c'est un probleme
379
-			// surtout en utf-8, gere ci-dessus)
380
-			if (test_iconv()) {
381
-				$s = iconv($charset, 'utf-32le', $texte);
382
-				if ($s) {
383
-					return utf_32_to_unicode($s);
384
-				}
385
-			}
386
-
387
-			// Au pire ne rien faire
388
-			spip_logger()->info("erreur charset '$charset' non supporte");
389
-
390
-			return $texte;
391
-	}
324
+    static $trans;
325
+
326
+    if ($texte === null || $texte === '') {
327
+        return '';
328
+    }
329
+
330
+    if ($charset === 'AUTO') {
331
+        $charset = lire_config('charset', _DEFAULT_CHARSET);
332
+    }
333
+
334
+    if ($charset === '') {
335
+        $charset = 'iso-8859-1';
336
+    }
337
+    $charset = strtolower((string) $charset);
338
+
339
+    switch ($charset) {
340
+        case 'utf-8':
341
+        case 'utf8':
342
+            return utf_8_to_unicode($texte);
343
+
344
+        case 'iso-8859-1':
345
+            $texte = corriger_caracteres_windows($texte, 'iso-8859-1');
346
+        // pas de break; ici, on suit sur default:
347
+
348
+        default:
349
+            // mbstring presente ?
350
+            if (init_mb_string()) {
351
+                $order = mb_detect_order();
352
+                try {
353
+                    # mb_string connait-il $charset?
354
+                    if ($order && mb_detect_order($charset)) {
355
+                        $s = mb_convert_encoding($texte, 'utf-8', $charset);
356
+                        if ($s && $s != $texte) {
357
+                            return utf_8_to_unicode($s);
358
+                        }
359
+                    }
360
+                } catch (\Error) {
361
+                    // Le charset n'existe probablement pas
362
+                } finally {
363
+                    mb_detect_order($order); # remettre comme precedemment
364
+                }
365
+            }
366
+
367
+            // Sinon, peut-etre connaissons-nous ce charset ?
368
+            if (!isset($trans[$charset]) && (($cset = load_charset($charset)) && is_array($GLOBALS['CHARSET'][$cset]))) {
369
+                foreach ($GLOBALS['CHARSET'][$cset] as $key => $val) {
370
+                    $trans[$charset][chr($key)] = '&#' . $val . ';';
371
+                }
372
+            }
373
+            if (isset($trans[$charset]) && (is_countable($trans[$charset]) ? count($trans[$charset]) : 0)) {
374
+                return str_replace(array_keys($trans[$charset]), array_values($trans[$charset]), $texte);
375
+            }
376
+
377
+            // Sinon demander a iconv (malgre le fait qu'il coupe quand un
378
+            // caractere n'appartient pas au charset, mais c'est un probleme
379
+            // surtout en utf-8, gere ci-dessus)
380
+            if (test_iconv()) {
381
+                $s = iconv($charset, 'utf-32le', $texte);
382
+                if ($s) {
383
+                    return utf_32_to_unicode($s);
384
+                }
385
+            }
386
+
387
+            // Au pire ne rien faire
388
+            spip_logger()->info("erreur charset '$charset' non supporte");
389
+
390
+            return $texte;
391
+    }
392 392
 }
393 393
 
394 394
 
@@ -407,42 +407,42 @@  discard block
 block discarded – undo
407 407
  *     texte transformé dans le charset souhaité
408 408
  **/
409 409
 function unicode2charset($texte, $charset = 'AUTO') {
410
-	static $CHARSET_REVERSE = [];
411
-	static $trans = [];
412
-
413
-	if ($charset == 'AUTO') {
414
-		$charset = lire_config('charset', _DEFAULT_CHARSET);
415
-	}
416
-
417
-	switch ($charset) {
418
-		case 'utf-8':
419
-			return unicode_to_utf_8($texte);
420
-
421
-		default:
422
-			$charset = load_charset($charset);
423
-
424
-			if (empty($CHARSET_REVERSE[$charset])) {
425
-				$CHARSET_REVERSE[$charset] = array_flip($GLOBALS['CHARSET'][$charset]);
426
-			}
427
-
428
-			if (!isset($trans[$charset])) {
429
-				$trans[$charset] = [];
430
-				$t = &$trans[$charset];
431
-				for ($e = 128; $e < 255; $e++) {
432
-					$h = dechex($e);
433
-					if ($s = isset($CHARSET_REVERSE[$charset][$e])) {
434
-						$s = $CHARSET_REVERSE[$charset][$e];
435
-						$t['&#' . $e . ';'] = $t['&#0' . $e . ';'] = $t['&#00' . $e . ';'] = chr($s);
436
-						$t['&#x' . $h . ';'] = $t['&#x0' . $h . ';'] = $t['&#x00' . $h . ';'] = chr($s);
437
-					} else {
438
-						$t['&#' . $e . ';'] = $t['&#0' . $e . ';'] = $t['&#00' . $e . ';'] = chr($e);
439
-						$t['&#x' . $h . ';'] = $t['&#x0' . $h . ';'] = $t['&#x00' . $h . ';'] = chr($e);
440
-					}
441
-				}
442
-			}
443
-
444
-			return str_replace(array_keys($trans[$charset]), array_values($trans[$charset]), $texte);
445
-	}
410
+    static $CHARSET_REVERSE = [];
411
+    static $trans = [];
412
+
413
+    if ($charset == 'AUTO') {
414
+        $charset = lire_config('charset', _DEFAULT_CHARSET);
415
+    }
416
+
417
+    switch ($charset) {
418
+        case 'utf-8':
419
+            return unicode_to_utf_8($texte);
420
+
421
+        default:
422
+            $charset = load_charset($charset);
423
+
424
+            if (empty($CHARSET_REVERSE[$charset])) {
425
+                $CHARSET_REVERSE[$charset] = array_flip($GLOBALS['CHARSET'][$charset]);
426
+            }
427
+
428
+            if (!isset($trans[$charset])) {
429
+                $trans[$charset] = [];
430
+                $t = &$trans[$charset];
431
+                for ($e = 128; $e < 255; $e++) {
432
+                    $h = dechex($e);
433
+                    if ($s = isset($CHARSET_REVERSE[$charset][$e])) {
434
+                        $s = $CHARSET_REVERSE[$charset][$e];
435
+                        $t['&#' . $e . ';'] = $t['&#0' . $e . ';'] = $t['&#00' . $e . ';'] = chr($s);
436
+                        $t['&#x' . $h . ';'] = $t['&#x0' . $h . ';'] = $t['&#x00' . $h . ';'] = chr($s);
437
+                    } else {
438
+                        $t['&#' . $e . ';'] = $t['&#0' . $e . ';'] = $t['&#00' . $e . ';'] = chr($e);
439
+                        $t['&#x' . $h . ';'] = $t['&#x0' . $h . ';'] = $t['&#x00' . $h . ';'] = chr($e);
440
+                    }
441
+                }
442
+            }
443
+
444
+            return str_replace(array_keys($trans[$charset]), array_values($trans[$charset]), $texte);
445
+    }
446 446
 }
447 447
 
448 448
 
@@ -460,39 +460,39 @@  discard block
 block discarded – undo
460 460
  *     texte transformé dans le charset site
461 461
  **/
462 462
 function importer_charset($texte, $charset = 'AUTO') {
463
-	$s = null;
464
-	static $trans = [];
465
-	// on traite le cas le plus frequent iso-8859-1 vers utf directement pour aller plus vite !
466
-	if (($charset == 'iso-8859-1') && ($GLOBALS['meta']['charset'] == 'utf-8')) {
467
-		$texte = corriger_caracteres_windows($texte, 'iso-8859-1', $GLOBALS['meta']['charset']);
468
-		if (init_mb_string()) {
469
-			if (
470
-				($order = mb_detect_order())
471
-				&& mb_detect_order($charset)
472
-			) {
473
-				$s = mb_convert_encoding($texte, 'utf-8', $charset);
474
-			}
475
-			mb_detect_order($order); # remettre comme precedemment
476
-			return $s;
477
-		}
478
-		// Sinon, peut-etre connaissons-nous ce charset ?
479
-		if (
480
-			!isset($trans[$charset])
481
-			&& (($cset = load_charset($charset))
482
-			&& is_array($GLOBALS['CHARSET'][$cset]))
483
-		) {
484
-			foreach ($GLOBALS['CHARSET'][$cset] as $key => $val) {
485
-				$trans[$charset][chr($key)] = unicode2charset('&#' . $val . ';');
486
-			}
487
-		}
488
-		if (is_countable($trans[$charset]) ? count($trans[$charset]) : 0) {
489
-			return str_replace(array_keys($trans[$charset]), array_values($trans[$charset]), $texte);
490
-		}
491
-
492
-		return $texte;
493
-	}
494
-
495
-	return unicode2charset(charset2unicode($texte, $charset));
463
+    $s = null;
464
+    static $trans = [];
465
+    // on traite le cas le plus frequent iso-8859-1 vers utf directement pour aller plus vite !
466
+    if (($charset == 'iso-8859-1') && ($GLOBALS['meta']['charset'] == 'utf-8')) {
467
+        $texte = corriger_caracteres_windows($texte, 'iso-8859-1', $GLOBALS['meta']['charset']);
468
+        if (init_mb_string()) {
469
+            if (
470
+                ($order = mb_detect_order())
471
+                && mb_detect_order($charset)
472
+            ) {
473
+                $s = mb_convert_encoding($texte, 'utf-8', $charset);
474
+            }
475
+            mb_detect_order($order); # remettre comme precedemment
476
+            return $s;
477
+        }
478
+        // Sinon, peut-etre connaissons-nous ce charset ?
479
+        if (
480
+            !isset($trans[$charset])
481
+            && (($cset = load_charset($charset))
482
+            && is_array($GLOBALS['CHARSET'][$cset]))
483
+        ) {
484
+            foreach ($GLOBALS['CHARSET'][$cset] as $key => $val) {
485
+                $trans[$charset][chr($key)] = unicode2charset('&#' . $val . ';');
486
+            }
487
+        }
488
+        if (is_countable($trans[$charset]) ? count($trans[$charset]) : 0) {
489
+            return str_replace(array_keys($trans[$charset]), array_values($trans[$charset]), $texte);
490
+        }
491
+
492
+        return $texte;
493
+    }
494
+
495
+    return unicode2charset(charset2unicode($texte, $charset));
496 496
 }
497 497
 
498 498
 
@@ -508,92 +508,92 @@  discard block
 block discarded – undo
508 508
  **/
509 509
 function utf_8_to_unicode($source) {
510 510
 
511
-	// mb_string : methode rapide
512
-	if (init_mb_string()) {
513
-		$convmap = [0x7F, 0xFFFFFF, 0x0, 0xFFFFFF];
514
-
515
-		return mb_encode_numericentity($source, $convmap, 'UTF-8');
516
-	}
517
-
518
-	// Sinon methode pas a pas
519
-	static $decrement;
520
-	static $shift;
521
-
522
-	// Cf. php.net, par Ronen. Adapte pour compatibilite < php4
523
-	if (!is_array($decrement)) {
524
-		// array used to figure what number to decrement from character order value
525
-		// according to number of characters used to map unicode to ascii by utf-8
526
-		$decrement[4] = 240;
527
-		$decrement[3] = 224;
528
-		$decrement[2] = 192;
529
-		$decrement[1] = 0;
530
-		// the number of bits to shift each charNum by
531
-		$shift[1][0] = 0;
532
-		$shift[2][0] = 6;
533
-		$shift[2][1] = 0;
534
-		$shift[3][0] = 12;
535
-		$shift[3][1] = 6;
536
-		$shift[3][2] = 0;
537
-		$shift[4][0] = 18;
538
-		$shift[4][1] = 12;
539
-		$shift[4][2] = 6;
540
-		$shift[4][3] = 0;
541
-	}
542
-
543
-	$pos = 0;
544
-	$len = strlen($source);
545
-	$encodedString = '';
546
-	while ($pos < $len) {
547
-		$char = '';
548
-		$ischar = false;
549
-		$asciiPos = ord(substr($source, $pos, 1));
550
-		if (($asciiPos >= 240) && ($asciiPos <= 255)) {
551
-			// 4 chars representing one unicode character
552
-			$thisLetter = substr($source, $pos, 4);
553
-			$pos += 4;
554
-		} else {
555
-			if (($asciiPos >= 224) && ($asciiPos <= 239)) {
556
-				// 3 chars representing one unicode character
557
-				$thisLetter = substr($source, $pos, 3);
558
-				$pos += 3;
559
-			} else {
560
-				if (($asciiPos >= 192) && ($asciiPos <= 223)) {
561
-					// 2 chars representing one unicode character
562
-					$thisLetter = substr($source, $pos, 2);
563
-					$pos += 2;
564
-				} else {
565
-					// 1 char (lower ascii)
566
-					$thisLetter = substr($source, $pos, 1);
567
-					$pos += 1;
568
-					$char = $thisLetter;
569
-					$ischar = true;
570
-				}
571
-			}
572
-		}
573
-
574
-		if ($ischar) {
575
-			$encodedString .= $char;
576
-		} else {  // process the string representing the letter to a unicode entity
577
-			$thisLen = strlen($thisLetter);
578
-			$thisPos = 0;
579
-			$decimalCode = 0;
580
-			while ($thisPos < $thisLen) {
581
-				$thisCharOrd = ord(substr($thisLetter, $thisPos, 1));
582
-				if ($thisPos == 0) {
583
-					$charNum = (int) ($thisCharOrd - $decrement[$thisLen]);
584
-					$decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
585
-				} else {
586
-					$charNum = (int) ($thisCharOrd - 128);
587
-					$decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
588
-				}
589
-				$thisPos++;
590
-			}
591
-			$encodedLetter = '&#' . preg_replace('/^0+/', '', $decimalCode) . ';';
592
-			$encodedString .= $encodedLetter;
593
-		}
594
-	}
595
-
596
-	return $encodedString;
511
+    // mb_string : methode rapide
512
+    if (init_mb_string()) {
513
+        $convmap = [0x7F, 0xFFFFFF, 0x0, 0xFFFFFF];
514
+
515
+        return mb_encode_numericentity($source, $convmap, 'UTF-8');
516
+    }
517
+
518
+    // Sinon methode pas a pas
519
+    static $decrement;
520
+    static $shift;
521
+
522
+    // Cf. php.net, par Ronen. Adapte pour compatibilite < php4
523
+    if (!is_array($decrement)) {
524
+        // array used to figure what number to decrement from character order value
525
+        // according to number of characters used to map unicode to ascii by utf-8
526
+        $decrement[4] = 240;
527
+        $decrement[3] = 224;
528
+        $decrement[2] = 192;
529
+        $decrement[1] = 0;
530
+        // the number of bits to shift each charNum by
531
+        $shift[1][0] = 0;
532
+        $shift[2][0] = 6;
533
+        $shift[2][1] = 0;
534
+        $shift[3][0] = 12;
535
+        $shift[3][1] = 6;
536
+        $shift[3][2] = 0;
537
+        $shift[4][0] = 18;
538
+        $shift[4][1] = 12;
539
+        $shift[4][2] = 6;
540
+        $shift[4][3] = 0;
541
+    }
542
+
543
+    $pos = 0;
544
+    $len = strlen($source);
545
+    $encodedString = '';
546
+    while ($pos < $len) {
547
+        $char = '';
548
+        $ischar = false;
549
+        $asciiPos = ord(substr($source, $pos, 1));
550
+        if (($asciiPos >= 240) && ($asciiPos <= 255)) {
551
+            // 4 chars representing one unicode character
552
+            $thisLetter = substr($source, $pos, 4);
553
+            $pos += 4;
554
+        } else {
555
+            if (($asciiPos >= 224) && ($asciiPos <= 239)) {
556
+                // 3 chars representing one unicode character
557
+                $thisLetter = substr($source, $pos, 3);
558
+                $pos += 3;
559
+            } else {
560
+                if (($asciiPos >= 192) && ($asciiPos <= 223)) {
561
+                    // 2 chars representing one unicode character
562
+                    $thisLetter = substr($source, $pos, 2);
563
+                    $pos += 2;
564
+                } else {
565
+                    // 1 char (lower ascii)
566
+                    $thisLetter = substr($source, $pos, 1);
567
+                    $pos += 1;
568
+                    $char = $thisLetter;
569
+                    $ischar = true;
570
+                }
571
+            }
572
+        }
573
+
574
+        if ($ischar) {
575
+            $encodedString .= $char;
576
+        } else {  // process the string representing the letter to a unicode entity
577
+            $thisLen = strlen($thisLetter);
578
+            $thisPos = 0;
579
+            $decimalCode = 0;
580
+            while ($thisPos < $thisLen) {
581
+                $thisCharOrd = ord(substr($thisLetter, $thisPos, 1));
582
+                if ($thisPos == 0) {
583
+                    $charNum = (int) ($thisCharOrd - $decrement[$thisLen]);
584
+                    $decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
585
+                } else {
586
+                    $charNum = (int) ($thisCharOrd - 128);
587
+                    $decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
588
+                }
589
+                $thisPos++;
590
+            }
591
+            $encodedLetter = '&#' . preg_replace('/^0+/', '', $decimalCode) . ';';
592
+            $encodedString .= $encodedLetter;
593
+        }
594
+    }
595
+
596
+    return $encodedString;
597 597
 }
598 598
 
599 599
 /**
@@ -612,32 +612,32 @@  discard block
 block discarded – undo
612 612
  **/
613 613
 function utf_32_to_unicode($source) {
614 614
 
615
-	// mb_string : methode rapide
616
-	if (init_mb_string()) {
617
-		$convmap = [0x7F, 0xFFFFFF, 0x0, 0xFFFFFF];
618
-		$source = mb_encode_numericentity($source, $convmap, 'UTF-32LE');
619
-
620
-		return str_replace(chr(0), '', $source);
621
-	}
622
-
623
-	// Sinon methode lente
624
-	$texte = '';
625
-	while ($source) {
626
-		$words = unpack('V*', substr($source, 0, 1024));
627
-		$source = substr($source, 1024);
628
-		foreach ($words as $word) {
629
-			if ($word < 128) {
630
-				$texte .= chr($word);
631
-			} // ignorer le BOM - http://www.unicode.org/faq/utf_bom.html
632
-			else {
633
-				if ($word != 65279) {
634
-					$texte .= '&#' . $word . ';';
635
-				}
636
-			}
637
-		}
638
-	}
639
-
640
-	return $texte;
615
+    // mb_string : methode rapide
616
+    if (init_mb_string()) {
617
+        $convmap = [0x7F, 0xFFFFFF, 0x0, 0xFFFFFF];
618
+        $source = mb_encode_numericentity($source, $convmap, 'UTF-32LE');
619
+
620
+        return str_replace(chr(0), '', $source);
621
+    }
622
+
623
+    // Sinon methode lente
624
+    $texte = '';
625
+    while ($source) {
626
+        $words = unpack('V*', substr($source, 0, 1024));
627
+        $source = substr($source, 1024);
628
+        foreach ($words as $word) {
629
+            if ($word < 128) {
630
+                $texte .= chr($word);
631
+            } // ignorer le BOM - http://www.unicode.org/faq/utf_bom.html
632
+            else {
633
+                if ($word != 65279) {
634
+                    $texte .= '&#' . $word . ';';
635
+                }
636
+            }
637
+        }
638
+    }
639
+
640
+    return $texte;
641 641
 }
642 642
 
643 643
 
@@ -654,21 +654,21 @@  discard block
 block discarded – undo
654 654
  *    Caractère utf8 si trouvé, '' sinon
655 655
  **/
656 656
 function caractere_utf_8($num) {
657
-	$num = (int) $num;
658
-	if ($num < 128) {
659
-		return chr($num);
660
-	}
661
-	if ($num < 2048) {
662
-		return chr(($num >> 6) + 192) . chr(($num & 63) + 128);
663
-	}
664
-	if ($num < 65536) {
665
-		return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
666
-	}
667
-	if ($num < 1_114_112) {
668
-		return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
669
-	}
670
-
671
-	return '';
657
+    $num = (int) $num;
658
+    if ($num < 128) {
659
+        return chr($num);
660
+    }
661
+    if ($num < 2048) {
662
+        return chr(($num >> 6) + 192) . chr(($num & 63) + 128);
663
+    }
664
+    if ($num < 65536) {
665
+        return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
666
+    }
667
+    if ($num < 1_114_112) {
668
+        return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
669
+    }
670
+
671
+    return '';
672 672
 }
673 673
 
674 674
 /**
@@ -681,42 +681,42 @@  discard block
 block discarded – undo
681 681
  **/
682 682
 function unicode_to_utf_8($texte) {
683 683
 
684
-	// 1. Entites &#128; et suivantes
685
-	$vu = [];
686
-	if (
687
-		preg_match_all(
688
-			',&#0*([1-9]\d\d+);,S',
689
-			$texte,
690
-			$regs,
691
-			PREG_SET_ORDER
692
-		)
693
-	) {
694
-		foreach ($regs as $reg) {
695
-			if ($reg[1] > 127 && !isset($vu[$reg[0]])) {
696
-				$vu[$reg[0]] = caractere_utf_8($reg[1]);
697
-			}
698
-		}
699
-	}
700
-	//$texte = str_replace(array_keys($vu), array_values($vu), $texte);
701
-
702
-	// 2. Entites > &#xFF;
703
-	//$vu = array();
704
-	if (
705
-		preg_match_all(
706
-			',&#x0*([1-9a-f][0-9a-f][0-9a-f]+);,iS',
707
-			$texte,
708
-			$regs,
709
-			PREG_SET_ORDER
710
-		)
711
-	) {
712
-		foreach ($regs as $reg) {
713
-			if (!isset($vu[$reg[0]])) {
714
-				$vu[$reg[0]] = caractere_utf_8(hexdec($reg[1]));
715
-			}
716
-		}
717
-	}
718
-
719
-	return str_replace(array_keys($vu), array_values($vu), $texte);
684
+    // 1. Entites &#128; et suivantes
685
+    $vu = [];
686
+    if (
687
+        preg_match_all(
688
+            ',&#0*([1-9]\d\d+);,S',
689
+            $texte,
690
+            $regs,
691
+            PREG_SET_ORDER
692
+        )
693
+    ) {
694
+        foreach ($regs as $reg) {
695
+            if ($reg[1] > 127 && !isset($vu[$reg[0]])) {
696
+                $vu[$reg[0]] = caractere_utf_8($reg[1]);
697
+            }
698
+        }
699
+    }
700
+    //$texte = str_replace(array_keys($vu), array_values($vu), $texte);
701
+
702
+    // 2. Entites > &#xFF;
703
+    //$vu = array();
704
+    if (
705
+        preg_match_all(
706
+            ',&#x0*([1-9a-f][0-9a-f][0-9a-f]+);,iS',
707
+            $texte,
708
+            $regs,
709
+            PREG_SET_ORDER
710
+        )
711
+    ) {
712
+        foreach ($regs as $reg) {
713
+            if (!isset($vu[$reg[0]])) {
714
+                $vu[$reg[0]] = caractere_utf_8(hexdec($reg[1]));
715
+            }
716
+        }
717
+    }
718
+
719
+    return str_replace(array_keys($vu), array_values($vu), $texte);
720 720
 }
721 721
 
722 722
 /**
@@ -728,15 +728,15 @@  discard block
 block discarded – undo
728 728
  *     texte converti
729 729
  **/
730 730
 function unicode_to_javascript($texte) {
731
-	$vu = [];
732
-	while (preg_match(',&#0*(\d+);,S', $texte, $regs) && !isset($vu[$regs[1]])) {
733
-		$num = $regs[1];
734
-		$vu[$num] = true;
735
-		$s = '\u' . sprintf('%04x', $num);
736
-		$texte = str_replace($regs[0], $s, $texte);
737
-	}
738
-
739
-	return $texte;
731
+    $vu = [];
732
+    while (preg_match(',&#0*(\d+);,S', $texte, $regs) && !isset($vu[$regs[1]])) {
733
+        $num = $regs[1];
734
+        $vu[$num] = true;
735
+        $s = '\u' . sprintf('%04x', $num);
736
+        $texte = str_replace($regs[0], $s, $texte);
737
+    }
738
+
739
+    return $texte;
740 740
 }
741 741
 
742 742
 /**
@@ -748,11 +748,11 @@  discard block
 block discarded – undo
748 748
  *     texte converti
749 749
  **/
750 750
 function javascript_to_unicode($texte) {
751
-	while (preg_match(',%u([0-9A-F][0-9A-F][0-9A-F][0-9A-F]),', $texte, $regs)) {
752
-		$texte = str_replace($regs[0], '&#' . hexdec($regs[1]) . ';', $texte);
753
-	}
751
+    while (preg_match(',%u([0-9A-F][0-9A-F][0-9A-F][0-9A-F]),', $texte, $regs)) {
752
+        $texte = str_replace($regs[0], '&#' . hexdec($regs[1]) . ';', $texte);
753
+    }
754 754
 
755
-	return $texte;
755
+    return $texte;
756 756
 }
757 757
 
758 758
 /**
@@ -764,11 +764,11 @@  discard block
 block discarded – undo
764 764
  *     texte converti
765 765
  **/
766 766
 function javascript_to_binary($texte) {
767
-	while (preg_match(',%([0-9A-F][0-9A-F]),', $texte, $regs)) {
768
-		$texte = str_replace($regs[0], chr(hexdec($regs[1])), $texte);
769
-	}
767
+    while (preg_match(',%([0-9A-F][0-9A-F]),', $texte, $regs)) {
768
+        $texte = str_replace($regs[0], chr(hexdec($regs[1])), $texte);
769
+    }
770 770
 
771
-	return $texte;
771
+    return $texte;
772 772
 }
773 773
 
774 774
 
@@ -786,26 +786,26 @@  discard block
 block discarded – undo
786 786
  * @return string
787 787
  */
788 788
 function translitteration_rapide(?string $texte, string $charset = 'AUTO', string $complexe = ''): string {
789
-	static $trans = [];
790
-	if ($charset == 'AUTO') {
791
-		$charset = $GLOBALS['meta']['charset'];
792
-	}
793
-	if ($texte === null || $texte === '') {
794
-		return '';
795
-	}
796
-
797
-	$table_translit = 'translit' . $complexe;
798
-
799
-	// 2. Translitterer grace a la table predefinie
800
-	if (!isset($trans[$complexe])) {
801
-		$trans[$complexe] = [];
802
-		load_charset($table_translit);
803
-		foreach ($GLOBALS['CHARSET'][$table_translit] as $key => $val) {
804
-			$trans[$complexe][caractere_utf_8($key)] = $val;
805
-		}
806
-	}
807
-
808
-	return str_replace(array_keys($trans[$complexe]), array_values($trans[$complexe]), $texte);
789
+    static $trans = [];
790
+    if ($charset == 'AUTO') {
791
+        $charset = $GLOBALS['meta']['charset'];
792
+    }
793
+    if ($texte === null || $texte === '') {
794
+        return '';
795
+    }
796
+
797
+    $table_translit = 'translit' . $complexe;
798
+
799
+    // 2. Translitterer grace a la table predefinie
800
+    if (!isset($trans[$complexe])) {
801
+        $trans[$complexe] = [];
802
+        load_charset($table_translit);
803
+        foreach ($GLOBALS['CHARSET'][$table_translit] as $key => $val) {
804
+            $trans[$complexe][caractere_utf_8($key)] = $val;
805
+        }
806
+    }
807
+
808
+    return str_replace(array_keys($trans[$complexe]), array_values($trans[$complexe]), $texte);
809 809
 }
810 810
 
811 811
 /**
@@ -828,18 +828,18 @@  discard block
 block discarded – undo
828 828
  * @return string
829 829
  */
830 830
 function translitteration(?string $texte, string $charset = 'AUTO', string $complexe = ''): string {
831
-	if ($texte === null || $texte === '') {
832
-		return '';
833
-	}
831
+    if ($texte === null || $texte === '') {
832
+        return '';
833
+    }
834 834
 
835
-	// 0. Supprimer les caracteres illegaux
836
-	include_spip('inc/filtres');
837
-	$texte = corriger_caracteres($texte);
835
+    // 0. Supprimer les caracteres illegaux
836
+    include_spip('inc/filtres');
837
+    $texte = corriger_caracteres($texte);
838 838
 
839
-	// 1. Passer le charset et les &eacute en utf-8
840
-	$texte = unicode_to_utf_8(html2unicode(charset2unicode($texte, $charset)));
839
+    // 1. Passer le charset et les &eacute en utf-8
840
+    $texte = unicode_to_utf_8(html2unicode(charset2unicode($texte, $charset)));
841 841
 
842
-	return translitteration_rapide($texte, $charset, $complexe);
842
+    return translitteration_rapide($texte, $charset, $complexe);
843 843
 }
844 844
 
845 845
 /**
@@ -854,17 +854,17 @@  discard block
 block discarded – undo
854 854
  * @return string
855 855
  */
856 856
 function translitteration_complexe(?string $texte, bool $chiffres = false): string {
857
-	$texte = translitteration($texte, 'AUTO', 'complexe');
857
+    $texte = translitteration($texte, 'AUTO', 'complexe');
858 858
 
859
-	if ($chiffres) {
860
-		$texte = preg_replace_callback(
861
-			"/[aeiuoyd]['`?~.^+(-]{1,2}/S",
862
-			fn($m) => translitteration_chiffree($m[0]),
863
-			$texte
864
-		);
865
-	}
859
+    if ($chiffres) {
860
+        $texte = preg_replace_callback(
861
+            "/[aeiuoyd]['`?~.^+(-]{1,2}/S",
862
+            fn($m) => translitteration_chiffree($m[0]),
863
+            $texte
864
+        );
865
+    }
866 866
 
867
-	return $texte;
867
+    return $texte;
868 868
 }
869 869
 
870 870
 /**
@@ -876,7 +876,7 @@  discard block
 block discarded – undo
876 876
  * @return string
877 877
  */
878 878
 function translitteration_chiffree(string $car): string {
879
-	return strtr($car, "'`?~.^+(-", '123456789');
879
+    return strtr($car, "'`?~.^+(-", '123456789');
880 880
 }
881 881
 
882 882
 
@@ -889,7 +889,7 @@  discard block
 block discarded – undo
889 889
  *    true s'il a un BOM
890 890
  **/
891 891
 function bom_utf8($texte): bool {
892
-	return (substr($texte, 0, 3) === chr(0xEF) . chr(0xBB) . chr(0xBF));
892
+    return (substr($texte, 0, 3) === chr(0xEF) . chr(0xBB) . chr(0xBF));
893 893
 }
894 894
 
895 895
 /**
@@ -906,21 +906,21 @@  discard block
 block discarded – undo
906 906
  *     true si c'est le cas
907 907
  **/
908 908
 function is_utf8($string): bool {
909
-	return !strlen(
910
-		preg_replace(
911
-			',[\x09\x0A\x0D\x20-\x7E]'            # ASCII
912
-			. '|[\xC2-\xDF][\x80-\xBF]'             # non-overlong 2-byte
913
-			. '|\xE0[\xA0-\xBF][\x80-\xBF]'         # excluding overlongs
914
-			. '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'  # straight 3-byte
915
-			. '|\xED[\x80-\x9F][\x80-\xBF]'         # excluding surrogates
916
-			. '|\xF0[\x90-\xBF][\x80-\xBF]{2}'      # planes 1-3
917
-			. '|[\xF1-\xF3][\x80-\xBF]{3}'          # planes 4-15
918
-			. '|\xF4[\x80-\x8F][\x80-\xBF]{2}'      # plane 16
919
-			. ',sS',
920
-			'',
921
-			$string
922
-		)
923
-	);
909
+    return !strlen(
910
+        preg_replace(
911
+            ',[\x09\x0A\x0D\x20-\x7E]'            # ASCII
912
+            . '|[\xC2-\xDF][\x80-\xBF]'             # non-overlong 2-byte
913
+            . '|\xE0[\xA0-\xBF][\x80-\xBF]'         # excluding overlongs
914
+            . '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'  # straight 3-byte
915
+            . '|\xED[\x80-\x9F][\x80-\xBF]'         # excluding surrogates
916
+            . '|\xF0[\x90-\xBF][\x80-\xBF]{2}'      # planes 1-3
917
+            . '|[\xF1-\xF3][\x80-\xBF]{3}'          # planes 4-15
918
+            . '|\xF4[\x80-\x8F][\x80-\xBF]{2}'      # plane 16
919
+            . ',sS',
920
+            '',
921
+            $string
922
+        )
923
+    );
924 924
 }
925 925
 
926 926
 /**
@@ -932,13 +932,13 @@  discard block
 block discarded – undo
932 932
  *     true si c'est le cas
933 933
  **/
934 934
 function is_ascii($string): bool {
935
-	return !strlen(
936
-		preg_replace(
937
-			',[\x09\x0A\x0D\x20-\x7E],sS',
938
-			'',
939
-			$string
940
-		)
941
-	);
935
+    return !strlen(
936
+        preg_replace(
937
+            ',[\x09\x0A\x0D\x20-\x7E],sS',
938
+            '',
939
+            $string
940
+        )
941
+    );
942 942
 }
943 943
 
944 944
 /**
@@ -957,50 +957,50 @@  discard block
 block discarded – undo
957 957
  **/
958 958
 function transcoder_page($texte, $headers = ''): string {
959 959
 
960
-	// Si tout est < 128 pas la peine d'aller plus loin
961
-	if (is_ascii($texte)) {
962
-		#spip_logger()->info('charset: ascii');
963
-		return $texte;
964
-	}
965
-
966
-	if (bom_utf8($texte)) {
967
-		// Reconnaitre le BOM utf-8 (0xEFBBBF)
968
-		$charset = 'utf-8';
969
-		$texte = substr($texte, 3);
970
-	} elseif (preg_match(',<[?]xml[^>]*encoding[^>]*=[^>]*([-_a-z0-9]+?),UimsS', $texte, $regs)) {
971
-		// charset precise par le contenu (xml)
972
-		$charset = trim(strtolower($regs[1]));
973
-	} elseif (
974
-		// charset precise par le contenu (html)
975
-		preg_match(',<(meta|html|body)[^>]*charset[^>]*=[^>]*([#-_a-z0-9]+?),UimsS', $texte, $regs)
976
-		# eviter toute balise SPIP tel que #CHARSET ou #CONFIG d'un squelette
977
-
978
-		&& !str_contains($regs[2], '#')
979
-		&& ($tmp = trim(strtolower($regs[2])))
980
-	) {
981
-		$charset = $tmp;
982
-	} elseif (preg_match(',charset=([-_a-z0-9]+),i', $headers, $regs)) {
983
-		// charset de la reponse http
984
-		$charset = trim(strtolower($regs[1]));
985
-	} else {
986
-		$charset = '';
987
-	}
988
-
989
-
990
-	// normaliser les noms du shif-jis japonais
991
-	if (preg_match(',^(x|shift)[_-]s?jis$,i', $charset)) {
992
-		$charset = 'shift-jis';
993
-	}
994
-
995
-	if ($charset) {
996
-		spip_logger()->info("charset: $charset");
997
-	} else {
998
-		// valeur par defaut
999
-		$charset = is_utf8($texte) ? 'utf-8' : 'iso-8859-1';
1000
-		spip_logger()->info("charset probable: $charset");
1001
-	}
1002
-
1003
-	return importer_charset($texte, $charset);
960
+    // Si tout est < 128 pas la peine d'aller plus loin
961
+    if (is_ascii($texte)) {
962
+        #spip_logger()->info('charset: ascii');
963
+        return $texte;
964
+    }
965
+
966
+    if (bom_utf8($texte)) {
967
+        // Reconnaitre le BOM utf-8 (0xEFBBBF)
968
+        $charset = 'utf-8';
969
+        $texte = substr($texte, 3);
970
+    } elseif (preg_match(',<[?]xml[^>]*encoding[^>]*=[^>]*([-_a-z0-9]+?),UimsS', $texte, $regs)) {
971
+        // charset precise par le contenu (xml)
972
+        $charset = trim(strtolower($regs[1]));
973
+    } elseif (
974
+        // charset precise par le contenu (html)
975
+        preg_match(',<(meta|html|body)[^>]*charset[^>]*=[^>]*([#-_a-z0-9]+?),UimsS', $texte, $regs)
976
+        # eviter toute balise SPIP tel que #CHARSET ou #CONFIG d'un squelette
977
+
978
+        && !str_contains($regs[2], '#')
979
+        && ($tmp = trim(strtolower($regs[2])))
980
+    ) {
981
+        $charset = $tmp;
982
+    } elseif (preg_match(',charset=([-_a-z0-9]+),i', $headers, $regs)) {
983
+        // charset de la reponse http
984
+        $charset = trim(strtolower($regs[1]));
985
+    } else {
986
+        $charset = '';
987
+    }
988
+
989
+
990
+    // normaliser les noms du shif-jis japonais
991
+    if (preg_match(',^(x|shift)[_-]s?jis$,i', $charset)) {
992
+        $charset = 'shift-jis';
993
+    }
994
+
995
+    if ($charset) {
996
+        spip_logger()->info("charset: $charset");
997
+    } else {
998
+        // valeur par defaut
999
+        $charset = is_utf8($texte) ? 'utf-8' : 'iso-8859-1';
1000
+        spip_logger()->info("charset probable: $charset");
1001
+    }
1002
+
1003
+    return importer_charset($texte, $charset);
1004 1004
 }
1005 1005
 
1006 1006
 
@@ -1024,19 +1024,19 @@  discard block
 block discarded – undo
1024 1024
  *     Le texte coupé
1025 1025
  **/
1026 1026
 function spip_substr($c, $start = 0, $length = null) {
1027
-	if ($GLOBALS['meta']['charset'] !== 'utf-8') {
1028
-		if ($length) {
1029
-			return substr($c, $start, $length);
1030
-		} else {
1031
-			return substr($c, $start);
1032
-		}
1033
-	}
1034
-
1035
-	if ($length) {
1036
-		return mb_substr($c, $start, $length);
1037
-	} else {
1038
-		return mb_substr($c, $start);
1039
-	}
1027
+    if ($GLOBALS['meta']['charset'] !== 'utf-8') {
1028
+        if ($length) {
1029
+            return substr($c, $start, $length);
1030
+        } else {
1031
+            return substr($c, $start);
1032
+        }
1033
+    }
1034
+
1035
+    if ($length) {
1036
+        return mb_substr($c, $start, $length);
1037
+    } else {
1038
+        return mb_substr($c, $start);
1039
+    }
1040 1040
 }
1041 1041
 
1042 1042
 /**
@@ -1050,13 +1050,13 @@  discard block
 block discarded – undo
1050 1050
  *     La chaîne avec une majuscule sur le premier mot
1051 1051
  */
1052 1052
 function spip_ucfirst($c) {
1053
-	if ($GLOBALS['meta']['charset'] !== 'utf-8') {
1054
-		return ucfirst($c);
1055
-	}
1053
+    if ($GLOBALS['meta']['charset'] !== 'utf-8') {
1054
+        return ucfirst($c);
1055
+    }
1056 1056
 
1057
-	$lettre1 = mb_strtoupper(spip_substr($c, 0, 1));
1057
+    $lettre1 = mb_strtoupper(spip_substr($c, 0, 1));
1058 1058
 
1059
-	return $lettre1 . spip_substr($c, 1);
1059
+    return $lettre1 . spip_substr($c, 1);
1060 1060
 }
1061 1061
 
1062 1062
 /**
@@ -1070,11 +1070,11 @@  discard block
 block discarded – undo
1070 1070
  *     La chaîne en minuscules
1071 1071
  */
1072 1072
 function spip_strtolower($c) {
1073
-	if ($GLOBALS['meta']['charset'] !== 'utf-8') {
1074
-		return strtolower($c);
1075
-	}
1073
+    if ($GLOBALS['meta']['charset'] !== 'utf-8') {
1074
+        return strtolower($c);
1075
+    }
1076 1076
 
1077
-	return mb_strtolower($c);
1077
+    return mb_strtolower($c);
1078 1078
 }
1079 1079
 
1080 1080
 /**
@@ -1088,15 +1088,15 @@  discard block
 block discarded – undo
1088 1088
  *     Longueur de la chaîne
1089 1089
  */
1090 1090
 function spip_strlen($c) {
1091
-	// On transforme les sauts de ligne pour ne pas compter deux caractères
1092
-	$c = str_replace("\r\n", "\n", $c);
1091
+    // On transforme les sauts de ligne pour ne pas compter deux caractères
1092
+    $c = str_replace("\r\n", "\n", $c);
1093 1093
 
1094
-	// Si ce n'est pas utf-8, utiliser strlen
1095
-	if ($GLOBALS['meta']['charset'] !== 'utf-8') {
1096
-		return strlen($c);
1097
-	}
1094
+    // Si ce n'est pas utf-8, utiliser strlen
1095
+    if ($GLOBALS['meta']['charset'] !== 'utf-8') {
1096
+        return strlen($c);
1097
+    }
1098 1098
 
1099
-	return mb_strlen($c);
1099
+    return mb_strlen($c);
1100 1100
 }
1101 1101
 
1102 1102
 /**
@@ -1111,17 +1111,17 @@  discard block
 block discarded – undo
1111 1111
  *     en unicode : &#128169;
1112 1112
  */
1113 1113
 function utf8_noplanes($x): string {
1114
-	$regexp_utf8_4bytes = '/(
1114
+    $regexp_utf8_4bytes = '/(
1115 1115
       \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3
1116 1116
    | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
1117 1117
    |  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16
1118 1118
 )/xS';
1119
-	if (preg_match_all($regexp_utf8_4bytes, $x, $z, PREG_PATTERN_ORDER)) {
1120
-		foreach ($z[0] as $k) {
1121
-			$ku = utf_8_to_unicode($k);
1122
-			$x = str_replace($k, $ku, $x);
1123
-		}
1124
-	}
1125
-
1126
-	return $x;
1119
+    if (preg_match_all($regexp_utf8_4bytes, $x, $z, PREG_PATTERN_ORDER)) {
1120
+        foreach ($z[0] as $k) {
1121
+            $ku = utf_8_to_unicode($k);
1122
+            $x = str_replace($k, $ku, $x);
1123
+        }
1124
+    }
1125
+
1126
+    return $x;
1127 1127
 }
Please login to merge, or discard this patch.
Spacing   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
 		$charset = 'cp1256';
90 90
 	}
91 91
 
92
-	if (find_in_path($charset . '.php', 'charsets/', true)) {
92
+	if (find_in_path($charset.'.php', 'charsets/', true)) {
93 93
 		return $charset;
94 94
 	} else {
95 95
 		spip_logger()->info("Erreur: pas de fichier de conversion 'charsets/$charset'");
@@ -190,38 +190,38 @@  discard block
 block discarded – undo
190 190
 
191 191
 	if (!isset($trans[$charset][$charset_cible])) {
192 192
 		$trans[$charset][$charset_cible] = [
193
-			$p . chr(128) => '&#8364;',
194
-			$p . chr(129) => ' ', # pas affecte
195
-			$p . chr(130) => '&#8218;',
196
-			$p . chr(131) => '&#402;',
197
-			$p . chr(132) => '&#8222;',
198
-			$p . chr(133) => '&#8230;',
199
-			$p . chr(134) => '&#8224;',
200
-			$p . chr(135) => '&#8225;',
201
-			$p . chr(136) => '&#710;',
202
-			$p . chr(137) => '&#8240;',
203
-			$p . chr(138) => '&#352;',
204
-			$p . chr(139) => '&#8249;',
205
-			$p . chr(140) => '&#338;',
206
-			$p . chr(141) => ' ', # pas affecte
207
-			$p . chr(142) => '&#381;',
208
-			$p . chr(143) => ' ', # pas affecte
209
-			$p . chr(144) => ' ', # pas affecte
210
-			$p . chr(145) => '&#8216;',
211
-			$p . chr(146) => '&#8217;',
212
-			$p . chr(147) => '&#8220;',
213
-			$p . chr(148) => '&#8221;',
214
-			$p . chr(149) => '&#8226;',
215
-			$p . chr(150) => '&#8211;',
216
-			$p . chr(151) => '&#8212;',
217
-			$p . chr(152) => '&#732;',
218
-			$p . chr(153) => '&#8482;',
219
-			$p . chr(154) => '&#353;',
220
-			$p . chr(155) => '&#8250;',
221
-			$p . chr(156) => '&#339;',
222
-			$p . chr(157) => ' ', # pas affecte
223
-			$p . chr(158) => '&#382;',
224
-			$p . chr(159) => '&#376;',
193
+			$p.chr(128) => '&#8364;',
194
+			$p.chr(129) => ' ', # pas affecte
195
+			$p.chr(130) => '&#8218;',
196
+			$p.chr(131) => '&#402;',
197
+			$p.chr(132) => '&#8222;',
198
+			$p.chr(133) => '&#8230;',
199
+			$p.chr(134) => '&#8224;',
200
+			$p.chr(135) => '&#8225;',
201
+			$p.chr(136) => '&#710;',
202
+			$p.chr(137) => '&#8240;',
203
+			$p.chr(138) => '&#352;',
204
+			$p.chr(139) => '&#8249;',
205
+			$p.chr(140) => '&#338;',
206
+			$p.chr(141) => ' ', # pas affecte
207
+			$p.chr(142) => '&#381;',
208
+			$p.chr(143) => ' ', # pas affecte
209
+			$p.chr(144) => ' ', # pas affecte
210
+			$p.chr(145) => '&#8216;',
211
+			$p.chr(146) => '&#8217;',
212
+			$p.chr(147) => '&#8220;',
213
+			$p.chr(148) => '&#8221;',
214
+			$p.chr(149) => '&#8226;',
215
+			$p.chr(150) => '&#8211;',
216
+			$p.chr(151) => '&#8212;',
217
+			$p.chr(152) => '&#732;',
218
+			$p.chr(153) => '&#8482;',
219
+			$p.chr(154) => '&#353;',
220
+			$p.chr(155) => '&#8250;',
221
+			$p.chr(156) => '&#339;',
222
+			$p.chr(157) => ' ', # pas affecte
223
+			$p.chr(158) => '&#382;',
224
+			$p.chr(159) => '&#376;',
225 225
 		];
226 226
 		if ($charset_cible != 'unicode') {
227 227
 			foreach ($trans[$charset][$charset_cible] as $k => $c) {
@@ -367,7 +367,7 @@  discard block
 block discarded – undo
367 367
 			// Sinon, peut-etre connaissons-nous ce charset ?
368 368
 			if (!isset($trans[$charset]) && (($cset = load_charset($charset)) && is_array($GLOBALS['CHARSET'][$cset]))) {
369 369
 				foreach ($GLOBALS['CHARSET'][$cset] as $key => $val) {
370
-					$trans[$charset][chr($key)] = '&#' . $val . ';';
370
+					$trans[$charset][chr($key)] = '&#'.$val.';';
371 371
 				}
372 372
 			}
373 373
 			if (isset($trans[$charset]) && (is_countable($trans[$charset]) ? count($trans[$charset]) : 0)) {
@@ -432,11 +432,11 @@  discard block
 block discarded – undo
432 432
 					$h = dechex($e);
433 433
 					if ($s = isset($CHARSET_REVERSE[$charset][$e])) {
434 434
 						$s = $CHARSET_REVERSE[$charset][$e];
435
-						$t['&#' . $e . ';'] = $t['&#0' . $e . ';'] = $t['&#00' . $e . ';'] = chr($s);
436
-						$t['&#x' . $h . ';'] = $t['&#x0' . $h . ';'] = $t['&#x00' . $h . ';'] = chr($s);
435
+						$t['&#'.$e.';'] = $t['&#0'.$e.';'] = $t['&#00'.$e.';'] = chr($s);
436
+						$t['&#x'.$h.';'] = $t['&#x0'.$h.';'] = $t['&#x00'.$h.';'] = chr($s);
437 437
 					} else {
438
-						$t['&#' . $e . ';'] = $t['&#0' . $e . ';'] = $t['&#00' . $e . ';'] = chr($e);
439
-						$t['&#x' . $h . ';'] = $t['&#x0' . $h . ';'] = $t['&#x00' . $h . ';'] = chr($e);
438
+						$t['&#'.$e.';'] = $t['&#0'.$e.';'] = $t['&#00'.$e.';'] = chr($e);
439
+						$t['&#x'.$h.';'] = $t['&#x0'.$h.';'] = $t['&#x00'.$h.';'] = chr($e);
440 440
 					}
441 441
 				}
442 442
 			}
@@ -482,7 +482,7 @@  discard block
 block discarded – undo
482 482
 			&& is_array($GLOBALS['CHARSET'][$cset]))
483 483
 		) {
484 484
 			foreach ($GLOBALS['CHARSET'][$cset] as $key => $val) {
485
-				$trans[$charset][chr($key)] = unicode2charset('&#' . $val . ';');
485
+				$trans[$charset][chr($key)] = unicode2charset('&#'.$val.';');
486 486
 			}
487 487
 		}
488 488
 		if (is_countable($trans[$charset]) ? count($trans[$charset]) : 0) {
@@ -588,7 +588,7 @@  discard block
 block discarded – undo
588 588
 				}
589 589
 				$thisPos++;
590 590
 			}
591
-			$encodedLetter = '&#' . preg_replace('/^0+/', '', $decimalCode) . ';';
591
+			$encodedLetter = '&#'.preg_replace('/^0+/', '', $decimalCode).';';
592 592
 			$encodedString .= $encodedLetter;
593 593
 		}
594 594
 	}
@@ -631,7 +631,7 @@  discard block
 block discarded – undo
631 631
 			} // ignorer le BOM - http://www.unicode.org/faq/utf_bom.html
632 632
 			else {
633 633
 				if ($word != 65279) {
634
-					$texte .= '&#' . $word . ';';
634
+					$texte .= '&#'.$word.';';
635 635
 				}
636 636
 			}
637 637
 		}
@@ -659,13 +659,13 @@  discard block
 block discarded – undo
659 659
 		return chr($num);
660 660
 	}
661 661
 	if ($num < 2048) {
662
-		return chr(($num >> 6) + 192) . chr(($num & 63) + 128);
662
+		return chr(($num >> 6) + 192).chr(($num & 63) + 128);
663 663
 	}
664 664
 	if ($num < 65536) {
665
-		return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
665
+		return chr(($num >> 12) + 224).chr((($num >> 6) & 63) + 128).chr(($num & 63) + 128);
666 666
 	}
667 667
 	if ($num < 1_114_112) {
668
-		return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
668
+		return chr(($num >> 18) + 240).chr((($num >> 12) & 63) + 128).chr((($num >> 6) & 63) + 128).chr(($num & 63) + 128);
669 669
 	}
670 670
 
671 671
 	return '';
@@ -732,7 +732,7 @@  discard block
 block discarded – undo
732 732
 	while (preg_match(',&#0*(\d+);,S', $texte, $regs) && !isset($vu[$regs[1]])) {
733 733
 		$num = $regs[1];
734 734
 		$vu[$num] = true;
735
-		$s = '\u' . sprintf('%04x', $num);
735
+		$s = '\u'.sprintf('%04x', $num);
736 736
 		$texte = str_replace($regs[0], $s, $texte);
737 737
 	}
738 738
 
@@ -749,7 +749,7 @@  discard block
 block discarded – undo
749 749
  **/
750 750
 function javascript_to_unicode($texte) {
751 751
 	while (preg_match(',%u([0-9A-F][0-9A-F][0-9A-F][0-9A-F]),', $texte, $regs)) {
752
-		$texte = str_replace($regs[0], '&#' . hexdec($regs[1]) . ';', $texte);
752
+		$texte = str_replace($regs[0], '&#'.hexdec($regs[1]).';', $texte);
753 753
 	}
754 754
 
755 755
 	return $texte;
@@ -794,7 +794,7 @@  discard block
 block discarded – undo
794 794
 		return '';
795 795
 	}
796 796
 
797
-	$table_translit = 'translit' . $complexe;
797
+	$table_translit = 'translit'.$complexe;
798 798
 
799 799
 	// 2. Translitterer grace a la table predefinie
800 800
 	if (!isset($trans[$complexe])) {
@@ -889,7 +889,7 @@  discard block
 block discarded – undo
889 889
  *    true s'il a un BOM
890 890
  **/
891 891
 function bom_utf8($texte): bool {
892
-	return (substr($texte, 0, 3) === chr(0xEF) . chr(0xBB) . chr(0xBF));
892
+	return (substr($texte, 0, 3) === chr(0xEF).chr(0xBB).chr(0xBF));
893 893
 }
894 894
 
895 895
 /**
@@ -1056,7 +1056,7 @@  discard block
 block discarded – undo
1056 1056
 
1057 1057
 	$lettre1 = mb_strtoupper(spip_substr($c, 0, 1));
1058 1058
 
1059
-	return $lettre1 . spip_substr($c, 1);
1059
+	return $lettre1.spip_substr($c, 1);
1060 1060
 }
1061 1061
 
1062 1062
 /**
Please login to merge, or discard this patch.
ecrire/inc/notifications.php 2 patches
Indentation   +108 added lines, -108 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Notifications
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 
@@ -32,16 +32,16 @@  discard block
 block discarded – undo
32 32
  */
33 33
 function inc_notifications_dist($quoi, $id = 0, $options = []) {
34 34
 
35
-	// charger les fichiers qui veulent ajouter des definitions
36
-	// ou faire des trucs aussi dans le pipeline, ca fait deux api pour le prix d'une ...
37
-	pipeline('notifications', ['args' => ['quoi' => $quoi, 'id' => $id, 'options' => $options]]);
35
+    // charger les fichiers qui veulent ajouter des definitions
36
+    // ou faire des trucs aussi dans le pipeline, ca fait deux api pour le prix d'une ...
37
+    pipeline('notifications', ['args' => ['quoi' => $quoi, 'id' => $id, 'options' => $options]]);
38 38
 
39
-	if ($notification = charger_fonction($quoi, 'notifications', true)) {
40
-		spip_logger('notifications')->info("$notification($quoi,$id"
41
-			. ($options ? ',' . serialize($options) : '')
42
-			. ')');
43
-		$notification($quoi, $id, $options);
44
-	}
39
+    if ($notification = charger_fonction($quoi, 'notifications', true)) {
40
+        spip_logger('notifications')->info("$notification($quoi,$id"
41
+            . ($options ? ',' . serialize($options) : '')
42
+            . ')');
43
+        $notification($quoi, $id, $options);
44
+    }
45 45
 }
46 46
 
47 47
 /**
@@ -55,15 +55,15 @@  discard block
 block discarded – undo
55 55
  * @param array $exclure
56 56
  */
57 57
 function notifications_nettoyer_emails(&$emails, $exclure = []) {
58
-	// filtrer et unifier
59
-	include_spip('inc/filtres');
60
-	$emails = array_unique(array_filter(array_map('email_valide', array_map('trim', $emails))));
61
-	if ($exclure && count($exclure)) {
62
-		// nettoyer les exclusions d'abord
63
-		notifications_nettoyer_emails($exclure);
64
-		// faire un diff
65
-		$emails = array_diff($emails, $exclure);
66
-	}
58
+    // filtrer et unifier
59
+    include_spip('inc/filtres');
60
+    $emails = array_unique(array_filter(array_map('email_valide', array_map('trim', $emails))));
61
+    if ($exclure && count($exclure)) {
62
+        // nettoyer les exclusions d'abord
63
+        notifications_nettoyer_emails($exclure);
64
+        // faire un diff
65
+        $emails = array_diff($emails, $exclure);
66
+    }
67 67
 }
68 68
 
69 69
 /**
@@ -78,90 +78,90 @@  discard block
 block discarded – undo
78 78
  * @param string $headers
79 79
  */
80 80
 function notifications_envoyer_mails($emails, $texte, $sujet = '', $from = '', $headers = '') {
81
-	// rien a faire si pas de texte !
82
-	if (!strlen($texte)) {
83
-		return;
84
-	}
85
-
86
-	// si on ne specifie qu'un email, le mettre dans un tableau
87
-	if (!is_array($emails)) {
88
-		$emails = explode(',', $emails);
89
-	}
90
-
91
-	notifications_nettoyer_emails($emails);
92
-
93
-	// tester si le mail est deja en html
94
-	if (
95
-		str_contains($texte, '<')
96
-		&& ($ttrim = trim($texte))
97
-		&& str_starts_with($ttrim, '<')
98
-		&& str_ends_with($ttrim, '>')
99
-		&& stripos($ttrim, '</html>') !== false
100
-	) {
101
-		if (!strlen($sujet)) {
102
-			// dans ce cas on ruse un peu : extraire le sujet du title
103
-			if (preg_match(',<title>(.*)</title>,Uims', $texte, $m)) {
104
-				$sujet = $m[1];
105
-			} else {
106
-				// fallback, on prend le body si on le trouve
107
-				if (preg_match(',<body[^>]*>(.*)</body>,Uims', $texte, $m)) {
108
-					$ttrim = $m[1];
109
-				}
110
-
111
-				// et on extrait la premiere ligne de vrai texte...
112
-				// nettoyer le html et les retours chariots
113
-				$ttrim = textebrut($ttrim);
114
-				$ttrim = str_replace("\r\n", "\r", $ttrim);
115
-				$ttrim = str_replace("\r", "\n", $ttrim);
116
-				// decouper
117
-				$ttrim = explode("\n", trim($ttrim));
118
-				// extraire la premiere ligne de texte brut
119
-				$sujet = array_shift($ttrim);
120
-			}
121
-		}
122
-
123
-		// si besoin on ajoute le content-type dans les headers
124
-		if (stripos($headers, 'Content-Type') === false) {
125
-			$headers .= "Content-Type: text/html\n";
126
-		}
127
-	}
128
-
129
-	// si le sujet est vide, extraire la premiere ligne du corps
130
-	// du mail qui est donc du texte
131
-	if (!strlen($sujet)) {
132
-		// nettoyer un peu les retours chariots
133
-		$texte = str_replace("\r\n", "\r", $texte);
134
-		$texte = str_replace("\r", "\n", $texte);
135
-		// decouper
136
-		$texte = explode("\n", trim($texte));
137
-		// extraire la premiere ligne
138
-		$sujet = array_shift($texte);
139
-		$texte = trim(implode("\n", $texte));
140
-	}
141
-
142
-	$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
143
-	foreach ($emails as $email) {
144
-		// passer dans un pipeline qui permet un ajout eventuel
145
-		// (url de suivi des notifications par exemple)
146
-		$envoi = pipeline(
147
-			'notifications_envoyer_mails',
148
-			[
149
-				'email' => $email,
150
-				'sujet' => $sujet,
151
-				'texte' => $texte,
152
-				'from' => $from,
153
-				'headers' => $headers,
154
-			]
155
-		);
156
-		$email = $envoi['email'];
157
-
158
-		job_queue_add(
159
-			'envoyer_mail',
160
-			">$email : " . $envoi['sujet'],
161
-			[$email, $envoi['sujet'], $envoi['texte'], $envoi['from'], $envoi['headers']],
162
-			'inc/'
163
-		);
164
-	}
81
+    // rien a faire si pas de texte !
82
+    if (!strlen($texte)) {
83
+        return;
84
+    }
85
+
86
+    // si on ne specifie qu'un email, le mettre dans un tableau
87
+    if (!is_array($emails)) {
88
+        $emails = explode(',', $emails);
89
+    }
90
+
91
+    notifications_nettoyer_emails($emails);
92
+
93
+    // tester si le mail est deja en html
94
+    if (
95
+        str_contains($texte, '<')
96
+        && ($ttrim = trim($texte))
97
+        && str_starts_with($ttrim, '<')
98
+        && str_ends_with($ttrim, '>')
99
+        && stripos($ttrim, '</html>') !== false
100
+    ) {
101
+        if (!strlen($sujet)) {
102
+            // dans ce cas on ruse un peu : extraire le sujet du title
103
+            if (preg_match(',<title>(.*)</title>,Uims', $texte, $m)) {
104
+                $sujet = $m[1];
105
+            } else {
106
+                // fallback, on prend le body si on le trouve
107
+                if (preg_match(',<body[^>]*>(.*)</body>,Uims', $texte, $m)) {
108
+                    $ttrim = $m[1];
109
+                }
110
+
111
+                // et on extrait la premiere ligne de vrai texte...
112
+                // nettoyer le html et les retours chariots
113
+                $ttrim = textebrut($ttrim);
114
+                $ttrim = str_replace("\r\n", "\r", $ttrim);
115
+                $ttrim = str_replace("\r", "\n", $ttrim);
116
+                // decouper
117
+                $ttrim = explode("\n", trim($ttrim));
118
+                // extraire la premiere ligne de texte brut
119
+                $sujet = array_shift($ttrim);
120
+            }
121
+        }
122
+
123
+        // si besoin on ajoute le content-type dans les headers
124
+        if (stripos($headers, 'Content-Type') === false) {
125
+            $headers .= "Content-Type: text/html\n";
126
+        }
127
+    }
128
+
129
+    // si le sujet est vide, extraire la premiere ligne du corps
130
+    // du mail qui est donc du texte
131
+    if (!strlen($sujet)) {
132
+        // nettoyer un peu les retours chariots
133
+        $texte = str_replace("\r\n", "\r", $texte);
134
+        $texte = str_replace("\r", "\n", $texte);
135
+        // decouper
136
+        $texte = explode("\n", trim($texte));
137
+        // extraire la premiere ligne
138
+        $sujet = array_shift($texte);
139
+        $texte = trim(implode("\n", $texte));
140
+    }
141
+
142
+    $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
143
+    foreach ($emails as $email) {
144
+        // passer dans un pipeline qui permet un ajout eventuel
145
+        // (url de suivi des notifications par exemple)
146
+        $envoi = pipeline(
147
+            'notifications_envoyer_mails',
148
+            [
149
+                'email' => $email,
150
+                'sujet' => $sujet,
151
+                'texte' => $texte,
152
+                'from' => $from,
153
+                'headers' => $headers,
154
+            ]
155
+        );
156
+        $email = $envoi['email'];
157
+
158
+        job_queue_add(
159
+            'envoyer_mail',
160
+            ">$email : " . $envoi['sujet'],
161
+            [$email, $envoi['sujet'], $envoi['texte'], $envoi['from'], $envoi['headers']],
162
+            'inc/'
163
+        );
164
+    }
165 165
 }
166 166
 
167 167
 /**
@@ -177,10 +177,10 @@  discard block
 block discarded – undo
177 177
  * @return string
178 178
  */
179 179
 function email_notification_objet($id_objet, $type_objet, $modele) {
180
-	$envoyer_mail = charger_fonction('envoyer_mail', 'inc'); // pour nettoyer_titre_email
181
-	$id_type = id_table_objet($type_objet);
180
+    $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); // pour nettoyer_titre_email
181
+    $id_type = id_table_objet($type_objet);
182 182
 
183
-	return recuperer_fond($modele, [$id_type => $id_objet, 'id' => $id_objet]);
183
+    return recuperer_fond($modele, [$id_type => $id_objet, 'id' => $id_objet]);
184 184
 }
185 185
 
186 186
 /**
@@ -195,7 +195,7 @@  discard block
 block discarded – undo
195 195
  * @return string
196 196
  */
197 197
 function email_notification_article($id_article, $modele) {
198
-	$envoyer_mail = charger_fonction('envoyer_mail', 'inc'); // pour nettoyer_titre_email
198
+    $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); // pour nettoyer_titre_email
199 199
 
200
-	return recuperer_fond($modele, ['id_article' => $id_article]);
200
+    return recuperer_fond($modele, ['id_article' => $id_article]);
201 201
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
 
39 39
 	if ($notification = charger_fonction($quoi, 'notifications', true)) {
40 40
 		spip_logger('notifications')->info("$notification($quoi,$id"
41
-			. ($options ? ',' . serialize($options) : '')
41
+			. ($options ? ','.serialize($options) : '')
42 42
 			. ')');
43 43
 		$notification($quoi, $id, $options);
44 44
 	}
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
 
158 158
 		job_queue_add(
159 159
 			'envoyer_mail',
160
-			">$email : " . $envoi['sujet'],
160
+			">$email : ".$envoi['sujet'],
161 161
 			[$email, $envoi['sujet'], $envoi['texte'], $envoi['from'], $envoi['headers']],
162 162
 			'inc/'
163 163
 		);
Please login to merge, or discard this patch.
ecrire/inc/cookie.php 2 patches
Indentation   +94 added lines, -94 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 
@@ -50,66 +50,66 @@  discard block
 block discarded – undo
50 50
  *     true si le cookie a été posé, false sinon.
51 51
  **/
52 52
 function spip_setcookie(
53
-	string $name = '',
54
-	string $value = '',
55
-	int|array $expires_or_options = 0,
56
-	string $path = '',
57
-	string $domain = '',
58
-	bool $secure = false,
59
-	bool $httponly = false
53
+    string $name = '',
54
+    string $value = '',
55
+    int|array $expires_or_options = 0,
56
+    string $path = '',
57
+    string $domain = '',
58
+    bool $secure = false,
59
+    bool $httponly = false
60 60
 ) {
61
-	if (!is_array($expires_or_options)) {
62
-		# anciens paramètres : spip_setcookie($name = '', $value = '', $expire = 0, $path = 'AUTO', $domain = '', $secure = '')
63
-		$options = [
64
-			'expires' => (int) $expires_or_options,
65
-			'path' => $path,
66
-			'domain' => $domain,
67
-			'secure' => $secure,
68
-			'httponly' => $httponly,
69
-		];
70
-	} else {
71
-		$options = $expires_or_options;
72
-	}
73
-
74
-	// expires
75
-	$options['expires'] ??= 0;
76
-	if (!isset($options['path']) || $options['path'] === 'AUTO') {
77
-		$options['path'] = defined('_COOKIE_PATH') ? constant('_COOKIE_PATH') : preg_replace(',^\w+://[^/]*,', '', url_de_base());
78
-	}
79
-	if (empty($options['domain']) && defined('_COOKIE_DOMAIN') && constant('_COOKIE_DOMAIN')) {
80
-		$options['domain'] = constant('_COOKIE_DOMAIN');
81
-	}
82
-	$options['secure'] ??= false;
83
-	$options['secure'] = ($options['secure'] ?: ($_SERVER['HTTPS'] ?? false));
84
-	if (defined('_COOKIE_SECURE') && constant('_COOKIE_SECURE')) {
85
-		trigger_deprecation('spip', '5.0', 'Using "%s" constant is deprecated, use option "%s" when call "%s" instead (automatic in HTTPS).', '_COOKIE_SECURE', 'secure: true', __FUNCTION__);
86
-		$options['secure'] = true;
87
-	}
88
-	$options['httponly'] ??= false;
89
-	$options['samesite'] = ($options['samesite'] ?? 'Lax') ?: 'Lax';
90
-
91
-	/** @deprecated 5.0 Use option `'httponly' => true` */
92
-	if (defined('_COOKIE_SECURE_LIST')) {
93
-		trigger_deprecation('spip', '5.0', 'Using "%s" constant is deprecated, use option "%s" when call "%s" instead.', '_COOKIE_SECURE_LIST', 'httponly: true', __FUNCTION__);
94
-		if (
95
-			is_array(constant('_COOKIE_SECURE_LIST'))
96
-			&& in_array($name, constant('_COOKIE_SECURE_LIST'))
97
-		) {
98
-			$options['httponly'] = true;
99
-		}
100
-	}
101
-
102
-	// in fine renommer le prefixe si besoin
103
-	if (str_starts_with($name, 'spip_')) {
104
-		$name = $GLOBALS['cookie_prefix'] . '_' . substr($name, 5);
105
-	}
106
-
107
-	#spip_logger('cookies')->info("cookie('$name', '$value', " . json_encode($options, true) . ")");
108
-	$a = @setcookie($name, $value, $options);
109
-
110
-	spip_cookie_envoye(true);
111
-
112
-	return $a;
61
+    if (!is_array($expires_or_options)) {
62
+        # anciens paramètres : spip_setcookie($name = '', $value = '', $expire = 0, $path = 'AUTO', $domain = '', $secure = '')
63
+        $options = [
64
+            'expires' => (int) $expires_or_options,
65
+            'path' => $path,
66
+            'domain' => $domain,
67
+            'secure' => $secure,
68
+            'httponly' => $httponly,
69
+        ];
70
+    } else {
71
+        $options = $expires_or_options;
72
+    }
73
+
74
+    // expires
75
+    $options['expires'] ??= 0;
76
+    if (!isset($options['path']) || $options['path'] === 'AUTO') {
77
+        $options['path'] = defined('_COOKIE_PATH') ? constant('_COOKIE_PATH') : preg_replace(',^\w+://[^/]*,', '', url_de_base());
78
+    }
79
+    if (empty($options['domain']) && defined('_COOKIE_DOMAIN') && constant('_COOKIE_DOMAIN')) {
80
+        $options['domain'] = constant('_COOKIE_DOMAIN');
81
+    }
82
+    $options['secure'] ??= false;
83
+    $options['secure'] = ($options['secure'] ?: ($_SERVER['HTTPS'] ?? false));
84
+    if (defined('_COOKIE_SECURE') && constant('_COOKIE_SECURE')) {
85
+        trigger_deprecation('spip', '5.0', 'Using "%s" constant is deprecated, use option "%s" when call "%s" instead (automatic in HTTPS).', '_COOKIE_SECURE', 'secure: true', __FUNCTION__);
86
+        $options['secure'] = true;
87
+    }
88
+    $options['httponly'] ??= false;
89
+    $options['samesite'] = ($options['samesite'] ?? 'Lax') ?: 'Lax';
90
+
91
+    /** @deprecated 5.0 Use option `'httponly' => true` */
92
+    if (defined('_COOKIE_SECURE_LIST')) {
93
+        trigger_deprecation('spip', '5.0', 'Using "%s" constant is deprecated, use option "%s" when call "%s" instead.', '_COOKIE_SECURE_LIST', 'httponly: true', __FUNCTION__);
94
+        if (
95
+            is_array(constant('_COOKIE_SECURE_LIST'))
96
+            && in_array($name, constant('_COOKIE_SECURE_LIST'))
97
+        ) {
98
+            $options['httponly'] = true;
99
+        }
100
+    }
101
+
102
+    // in fine renommer le prefixe si besoin
103
+    if (str_starts_with($name, 'spip_')) {
104
+        $name = $GLOBALS['cookie_prefix'] . '_' . substr($name, 5);
105
+    }
106
+
107
+    #spip_logger('cookies')->info("cookie('$name', '$value', " . json_encode($options, true) . ")");
108
+    $a = @setcookie($name, $value, $options);
109
+
110
+    spip_cookie_envoye(true);
111
+
112
+    return $a;
113 113
 }
114 114
 
115 115
 /**
@@ -125,12 +125,12 @@  discard block
 block discarded – undo
125 125
  * @return bool
126 126
  **/
127 127
 function spip_cookie_envoye($set = '') {
128
-	static $envoye = false;
129
-	if ($set) {
130
-		$envoye = true;
131
-	}
128
+    static $envoye = false;
129
+    if ($set) {
130
+        $envoye = true;
131
+    }
132 132
 
133
-	return $envoye;
133
+    return $envoye;
134 134
 }
135 135
 
136 136
 /**
@@ -149,21 +149,21 @@  discard block
 block discarded – undo
149 149
  *     Préfixe des cookies de SPIP
150 150
  **/
151 151
 function recuperer_cookies_spip($cookie_prefix) {
152
-	$prefix_long = strlen($cookie_prefix);
153
-
154
-	foreach (array_keys($_COOKIE) as $name) {
155
-		if (str_starts_with($name, 'spip_') && substr($name, 0, $prefix_long) != $cookie_prefix) {
156
-			unset($_COOKIE[$name]);
157
-			unset($GLOBALS[$name]);
158
-		}
159
-	}
160
-	foreach ($_COOKIE as $name => $value) {
161
-		if (substr($name, 0, $prefix_long) == $cookie_prefix) {
162
-			$spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
163
-			$_COOKIE[$spipname] = $value;
164
-			$GLOBALS[$spipname] = $value;
165
-		}
166
-	}
152
+    $prefix_long = strlen($cookie_prefix);
153
+
154
+    foreach (array_keys($_COOKIE) as $name) {
155
+        if (str_starts_with($name, 'spip_') && substr($name, 0, $prefix_long) != $cookie_prefix) {
156
+            unset($_COOKIE[$name]);
157
+            unset($GLOBALS[$name]);
158
+        }
159
+    }
160
+    foreach ($_COOKIE as $name => $value) {
161
+        if (substr($name, 0, $prefix_long) == $cookie_prefix) {
162
+            $spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
163
+            $_COOKIE[$spipname] = $value;
164
+            $GLOBALS[$spipname] = $value;
165
+        }
166
+    }
167 167
 }
168 168
 
169 169
 
@@ -182,18 +182,18 @@  discard block
 block discarded – undo
182 182
  *
183 183
  **/
184 184
 function exec_test_ajax_dist() {
185
-	switch (_request('js')) {
186
-		// on est appele par <noscript>
187
-		case -1:
188
-			spip_setcookie('spip_accepte_ajax', -1);
189
-			include_spip('inc/headers');
190
-			redirige_par_entete(chemin_image('erreur-xx.svg'));
191
-			break;
192
-
193
-		// ou par ajax
194
-		case 1:
195
-		default:
196
-			spip_setcookie('spip_accepte_ajax', 1);
197
-			break;
198
-	}
185
+    switch (_request('js')) {
186
+        // on est appele par <noscript>
187
+        case -1:
188
+            spip_setcookie('spip_accepte_ajax', -1);
189
+            include_spip('inc/headers');
190
+            redirige_par_entete(chemin_image('erreur-xx.svg'));
191
+            break;
192
+
193
+        // ou par ajax
194
+        case 1:
195
+        default:
196
+            spip_setcookie('spip_accepte_ajax', 1);
197
+            break;
198
+    }
199 199
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -52,7 +52,7 @@  discard block
 block discarded – undo
52 52
 function spip_setcookie(
53 53
 	string $name = '',
54 54
 	string $value = '',
55
-	int|array $expires_or_options = 0,
55
+	int | array $expires_or_options = 0,
56 56
 	string $path = '',
57 57
 	string $domain = '',
58 58
 	bool $secure = false,
@@ -101,7 +101,7 @@  discard block
 block discarded – undo
101 101
 
102 102
 	// in fine renommer le prefixe si besoin
103 103
 	if (str_starts_with($name, 'spip_')) {
104
-		$name = $GLOBALS['cookie_prefix'] . '_' . substr($name, 5);
104
+		$name = $GLOBALS['cookie_prefix'].'_'.substr($name, 5);
105 105
 	}
106 106
 
107 107
 	#spip_logger('cookies')->info("cookie('$name', '$value', " . json_encode($options, true) . ")");
@@ -159,7 +159,7 @@  discard block
 block discarded – undo
159 159
 	}
160 160
 	foreach ($_COOKIE as $name => $value) {
161 161
 		if (substr($name, 0, $prefix_long) == $cookie_prefix) {
162
-			$spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
162
+			$spipname = preg_replace('/^'.$cookie_prefix.'_/', 'spip_', $name);
163 163
 			$_COOKIE[$spipname] = $value;
164 164
 			$GLOBALS[$spipname] = $value;
165 165
 		}
Please login to merge, or discard this patch.
ecrire/base/delete_all.php 2 patches
Indentation   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  */
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -28,27 +28,27 @@  discard block
 block discarded – undo
28 28
  * @param string $titre Inutilisé
29 29
  **/
30 30
 function base_delete_all_dist($titre) {
31
-	$delete = _request('delete');
32
-	$res = [];
33
-	if (is_array($delete)) {
34
-		foreach ($delete as $table) {
35
-			if (sql_drop_table($table)) {
36
-				$res[] = $table;
37
-			} else {
38
-				spip_logger()->error("SPIP n'a pas pu detruire $table.");
39
-			}
40
-		}
31
+    $delete = _request('delete');
32
+    $res = [];
33
+    if (is_array($delete)) {
34
+        foreach ($delete as $table) {
35
+            if (sql_drop_table($table)) {
36
+                $res[] = $table;
37
+            } else {
38
+                spip_logger()->error("SPIP n'a pas pu detruire $table.");
39
+            }
40
+        }
41 41
 
42
-		// un pipeline pour detruire les tables installees par les plugins
43
-		pipeline('delete_tables', '');
42
+        // un pipeline pour detruire les tables installees par les plugins
43
+        pipeline('delete_tables', '');
44 44
 
45
-		spip_unlink(_FILE_CONNECT);
46
-		spip_unlink(_FILE_CHMOD);
47
-		spip_unlink(_FILE_META);
48
-		spip_unlink(_ACCESS_FILE_NAME);
49
-		spip_unlink(_CACHE_RUBRIQUES);
50
-	}
51
-	$d = is_countable($delete) ? count($delete) : 0;
52
-	$r = count($res);
53
-	spip_logger()->notice("Tables detruites: $r sur $d: " . implode(', ', $res));
45
+        spip_unlink(_FILE_CONNECT);
46
+        spip_unlink(_FILE_CHMOD);
47
+        spip_unlink(_FILE_META);
48
+        spip_unlink(_ACCESS_FILE_NAME);
49
+        spip_unlink(_CACHE_RUBRIQUES);
50
+    }
51
+    $d = is_countable($delete) ? count($delete) : 0;
52
+    $r = count($res);
53
+    spip_logger()->notice("Tables detruites: $r sur $d: " . implode(', ', $res));
54 54
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -50,5 +50,5 @@
 block discarded – undo
50 50
 	}
51 51
 	$d = is_countable($delete) ? count($delete) : 0;
52 52
 	$r = count($res);
53
-	spip_logger()->notice("Tables detruites: $r sur $d: " . implode(', ', $res));
53
+	spip_logger()->notice("Tables detruites: $r sur $d: ".implode(', ', $res));
54 54
 }
Please login to merge, or discard this patch.
ecrire/base/connect_sql.php 3 patches
Indentation   +318 added lines, -318 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\SQL
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 require_once _ROOT_RESTREINT . 'base/objets.php';
21 21
 
@@ -41,124 +41,124 @@  discard block
 block discarded – undo
41 41
  **/
42 42
 function spip_connect($serveur = '', $version = '') {
43 43
 
44
-	$serveur = is_string($serveur) ? strtolower($serveur) : '';
45
-	$index = $serveur ?: 0;
46
-	if (!$version) {
47
-		$version = $GLOBALS['spip_sql_version'];
48
-	}
49
-	if (isset($GLOBALS['connexions'][$index][$version])) {
50
-		return $GLOBALS['connexions'][$index];
51
-	}
52
-
53
-	include_spip('base/abstract_sql');
54
-	$install = (_request('exec') == 'install');
55
-
56
-	// Premiere connexion ?
57
-	if (!($old = isset($GLOBALS['connexions'][$index]))) {
58
-		$f = '';
59
-		if ($serveur) {
60
-			// serveur externe et nom de serveur bien ecrit ?
61
-			if (
62
-				defined('_DIR_CONNECT')
63
-				&& preg_match('/^[\w\.]*$/', $serveur)
64
-			) {
65
-				$f = _DIR_CONNECT . $serveur . '.php';
66
-				if (!is_readable($f) && !$install) {
67
-					// chercher une declaration de serveur dans le path
68
-					// qui peut servir à des plugins à declarer des connexions à une base sqlite
69
-					// Ex: sert aux boucles POUR et au plugin-dist dump pour se connecter sur le sqlite du dump
70
-					$f = find_in_path("$serveur.php", 'connect/');
71
-				}
72
-			}
73
-		} else {
74
-			if (defined('_FILE_CONNECT') && _FILE_CONNECT) {
75
-				// init du serveur principal
76
-				$f = _FILE_CONNECT;
77
-			} elseif ($install && defined('_FILE_CONNECT_TMP')) {
78
-				// installation en cours
79
-				$f = _FILE_CONNECT_TMP;
80
-			}
81
-		}
82
-
83
-		unset($GLOBALS['db_ok']);
84
-		unset($GLOBALS['spip_connect_version']);
85
-		if ($f && is_readable($f)) {
86
-			include($f);
87
-			if (!isset($GLOBALS['db_ok'])) {
88
-				spip_logger()->emergency("spip_connect: fichier de connexion '$f' OK mais echec connexion au serveur");
89
-			}
90
-		} else {
91
-			spip_logger()->emergency("spip_connect: fichier de connexion '$f' non trouve, pas de connexion serveur");
92
-		}
93
-		if (!isset($GLOBALS['db_ok'])) {
94
-			// fera mieux la prochaine fois
95
-			if ($install) {
96
-				return false;
97
-			}
98
-			// ne plus reessayer si ce n'est pas l'install
99
-			return $GLOBALS['connexions'][$index] = false;
100
-		}
101
-		$GLOBALS['connexions'][$index] = $GLOBALS['db_ok'];
102
-	}
103
-	// si la connexion a deja ete tentee mais a echoue, le dire!
104
-	if (!$GLOBALS['connexions'][$index]) {
105
-		return false;
106
-	}
107
-
108
-	// la connexion a reussi ou etait deja faite.
109
-	// chargement de la version du jeu de fonctions
110
-	// si pas dans le fichier par defaut
111
-	$type = $GLOBALS['db_ok']['type'];
112
-	$jeu = 'spip_' . $type . '_functions_' . $version;
113
-	if (!isset($GLOBALS[$jeu]) && !find_in_path($type . '_' . $version . '.php', 'req/', true)) {
114
-		spip_logger()->emergency("spip_connect: serveur $index version '$version' non defini pour '$type'");
115
-		// ne plus reessayer
116
-		return $GLOBALS['connexions'][$index][$version] = [];
117
-	}
118
-	$GLOBALS['connexions'][$index][$version] = $GLOBALS[$jeu];
119
-	if ($old) {
120
-		return $GLOBALS['connexions'][$index];
121
-	}
122
-
123
-	$GLOBALS['connexions'][$index]['spip_connect_version'] = $GLOBALS['spip_connect_version'] ?? 0;
124
-
125
-	// initialisation de l'alphabet utilise dans les connexions SQL
126
-	// si l'installation l'a determine.
127
-	// Celui du serveur principal l'impose aux serveurs secondaires
128
-	// s'ils le connaissent
129
-
130
-	if (!$serveur) {
131
-		$charset = spip_connect_main($GLOBALS[$jeu], $GLOBALS['db_ok']['charset']);
132
-		if (!$charset) {
133
-			unset($GLOBALS['connexions'][$index]);
134
-			spip_logger()->warning('spip_connect: absence de charset');
135
-
136
-			return false;
137
-		}
138
-	} else {
139
-		if ($GLOBALS['db_ok']['charset']) {
140
-			$charset = $GLOBALS['db_ok']['charset'];
141
-		}
142
-		// spip_meta n'existe pas toujours dans la base
143
-		// C'est le cas d'un dump sqlite par exemple
144
-		elseif (
145
-			$GLOBALS['connexions'][$index]['spip_connect_version']
146
-			&& sql_showtable('spip_meta', true, $serveur)
147
-			&& ($r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur))
148
-		) {
149
-			$charset = $r;
150
-		} else {
151
-			$charset = -1;
152
-		}
153
-	}
154
-	if ($charset != -1) {
155
-		$f = $GLOBALS[$jeu]['set_charset'];
156
-		if (function_exists($f)) {
157
-			$f($charset, $serveur);
158
-		}
159
-	}
160
-
161
-	return $GLOBALS['connexions'][$index];
44
+    $serveur = is_string($serveur) ? strtolower($serveur) : '';
45
+    $index = $serveur ?: 0;
46
+    if (!$version) {
47
+        $version = $GLOBALS['spip_sql_version'];
48
+    }
49
+    if (isset($GLOBALS['connexions'][$index][$version])) {
50
+        return $GLOBALS['connexions'][$index];
51
+    }
52
+
53
+    include_spip('base/abstract_sql');
54
+    $install = (_request('exec') == 'install');
55
+
56
+    // Premiere connexion ?
57
+    if (!($old = isset($GLOBALS['connexions'][$index]))) {
58
+        $f = '';
59
+        if ($serveur) {
60
+            // serveur externe et nom de serveur bien ecrit ?
61
+            if (
62
+                defined('_DIR_CONNECT')
63
+                && preg_match('/^[\w\.]*$/', $serveur)
64
+            ) {
65
+                $f = _DIR_CONNECT . $serveur . '.php';
66
+                if (!is_readable($f) && !$install) {
67
+                    // chercher une declaration de serveur dans le path
68
+                    // qui peut servir à des plugins à declarer des connexions à une base sqlite
69
+                    // Ex: sert aux boucles POUR et au plugin-dist dump pour se connecter sur le sqlite du dump
70
+                    $f = find_in_path("$serveur.php", 'connect/');
71
+                }
72
+            }
73
+        } else {
74
+            if (defined('_FILE_CONNECT') && _FILE_CONNECT) {
75
+                // init du serveur principal
76
+                $f = _FILE_CONNECT;
77
+            } elseif ($install && defined('_FILE_CONNECT_TMP')) {
78
+                // installation en cours
79
+                $f = _FILE_CONNECT_TMP;
80
+            }
81
+        }
82
+
83
+        unset($GLOBALS['db_ok']);
84
+        unset($GLOBALS['spip_connect_version']);
85
+        if ($f && is_readable($f)) {
86
+            include($f);
87
+            if (!isset($GLOBALS['db_ok'])) {
88
+                spip_logger()->emergency("spip_connect: fichier de connexion '$f' OK mais echec connexion au serveur");
89
+            }
90
+        } else {
91
+            spip_logger()->emergency("spip_connect: fichier de connexion '$f' non trouve, pas de connexion serveur");
92
+        }
93
+        if (!isset($GLOBALS['db_ok'])) {
94
+            // fera mieux la prochaine fois
95
+            if ($install) {
96
+                return false;
97
+            }
98
+            // ne plus reessayer si ce n'est pas l'install
99
+            return $GLOBALS['connexions'][$index] = false;
100
+        }
101
+        $GLOBALS['connexions'][$index] = $GLOBALS['db_ok'];
102
+    }
103
+    // si la connexion a deja ete tentee mais a echoue, le dire!
104
+    if (!$GLOBALS['connexions'][$index]) {
105
+        return false;
106
+    }
107
+
108
+    // la connexion a reussi ou etait deja faite.
109
+    // chargement de la version du jeu de fonctions
110
+    // si pas dans le fichier par defaut
111
+    $type = $GLOBALS['db_ok']['type'];
112
+    $jeu = 'spip_' . $type . '_functions_' . $version;
113
+    if (!isset($GLOBALS[$jeu]) && !find_in_path($type . '_' . $version . '.php', 'req/', true)) {
114
+        spip_logger()->emergency("spip_connect: serveur $index version '$version' non defini pour '$type'");
115
+        // ne plus reessayer
116
+        return $GLOBALS['connexions'][$index][$version] = [];
117
+    }
118
+    $GLOBALS['connexions'][$index][$version] = $GLOBALS[$jeu];
119
+    if ($old) {
120
+        return $GLOBALS['connexions'][$index];
121
+    }
122
+
123
+    $GLOBALS['connexions'][$index]['spip_connect_version'] = $GLOBALS['spip_connect_version'] ?? 0;
124
+
125
+    // initialisation de l'alphabet utilise dans les connexions SQL
126
+    // si l'installation l'a determine.
127
+    // Celui du serveur principal l'impose aux serveurs secondaires
128
+    // s'ils le connaissent
129
+
130
+    if (!$serveur) {
131
+        $charset = spip_connect_main($GLOBALS[$jeu], $GLOBALS['db_ok']['charset']);
132
+        if (!$charset) {
133
+            unset($GLOBALS['connexions'][$index]);
134
+            spip_logger()->warning('spip_connect: absence de charset');
135
+
136
+            return false;
137
+        }
138
+    } else {
139
+        if ($GLOBALS['db_ok']['charset']) {
140
+            $charset = $GLOBALS['db_ok']['charset'];
141
+        }
142
+        // spip_meta n'existe pas toujours dans la base
143
+        // C'est le cas d'un dump sqlite par exemple
144
+        elseif (
145
+            $GLOBALS['connexions'][$index]['spip_connect_version']
146
+            && sql_showtable('spip_meta', true, $serveur)
147
+            && ($r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur))
148
+        ) {
149
+            $charset = $r;
150
+        } else {
151
+            $charset = -1;
152
+        }
153
+    }
154
+    if ($charset != -1) {
155
+        $f = $GLOBALS[$jeu]['set_charset'];
156
+        if (function_exists($f)) {
157
+            $f($charset, $serveur);
158
+        }
159
+    }
160
+
161
+    return $GLOBALS['connexions'][$index];
162 162
 }
163 163
 
164 164
 /**
@@ -167,12 +167,12 @@  discard block
 block discarded – undo
167 167
  * @param string $serveur Nom du connecteur de bdd utilisé
168 168
  **/
169 169
 function spip_sql_erreur($serveur = '') {
170
-	$connexion = spip_connect($serveur);
171
-	$e = sql_errno($serveur);
172
-	$t = ($connexion['type'] ?? 'sql');
173
-	$m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim((string) $connexion['last']);
174
-	$f = $t . $serveur;
175
-	spip_logger($f)->error($m);
170
+    $connexion = spip_connect($serveur);
171
+    $e = sql_errno($serveur);
172
+    $t = ($connexion['type'] ?? 'sql');
173
+    $m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim((string) $connexion['last']);
174
+    $f = $t . $serveur;
175
+    spip_logger($f)->error($m);
176 176
 }
177 177
 
178 178
 /**
@@ -194,23 +194,23 @@  discard block
 block discarded – undo
194 194
  *     - array : description de la connexion, si l'instruction sql est indisponible pour cette connexion
195 195
  **/
196 196
 function spip_connect_sql($version, $ins = '', $serveur = '', $continue = false) {
197
-	$desc = spip_connect($serveur, $version);
198
-	if (
199
-		$desc
200
-		&& ($f = ($desc[$version][$ins] ?? ''))
201
-		&& function_exists($f)
202
-	) {
203
-		return $f;
204
-	}
205
-	if ($continue) {
206
-		return $desc;
207
-	}
208
-	if ($ins) {
209
-		spip_logger()->error("Le serveur '$serveur' version $version n'a pas '$ins'");
210
-	}
211
-	include_spip('inc/minipres');
212
-	echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]);
213
-	exit;
197
+    $desc = spip_connect($serveur, $version);
198
+    if (
199
+        $desc
200
+        && ($f = ($desc[$version][$ins] ?? ''))
201
+        && function_exists($f)
202
+    ) {
203
+        return $f;
204
+    }
205
+    if ($continue) {
206
+        return $desc;
207
+    }
208
+    if ($ins) {
209
+        spip_logger()->error("Le serveur '$serveur' version $version n'a pas '$ins'");
210
+    }
211
+    include_spip('inc/minipres');
212
+    echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]);
213
+    exit;
214 214
 }
215 215
 
216 216
 /**
@@ -236,70 +236,70 @@  discard block
 block discarded – undo
236 236
  * @return array|null Description de la connexion
237 237
  */
238 238
 function spip_connect_db(
239
-	$host,
240
-	$port,
241
-	$login,
242
-	#[\SensitiveParameter] $pass,
243
-	$db = '',
244
-	$type = 'mysql',
245
-	$prefixe = '',
246
-	$auth = '',
247
-	$charset = ''
239
+    $host,
240
+    $port,
241
+    $login,
242
+    #[\SensitiveParameter] $pass,
243
+    $db = '',
244
+    $type = 'mysql',
245
+    $prefixe = '',
246
+    $auth = '',
247
+    $charset = ''
248 248
 ) {
249
-	// temps avant nouvelle tentative de connexion
250
-	// suite a une connection echouee
251
-	if (!defined('_CONNECT_RETRY_DELAY')) {
252
-		define('_CONNECT_RETRY_DELAY', 30);
253
-	}
254
-
255
-	$f = '';
256
-	// un fichier de identifiant par combinaison (type,host,port,db)
257
-	// pour ne pas declarer tout indisponible d'un coup
258
-	// si en cours d'installation ou si db=@test@ on ne pose rien
259
-	// car c'est un test de connexion
260
-	if (!defined('_ECRIRE_INSTALL') && $db !== '@test@') {
261
-		$f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out';
262
-	} elseif ($db == '@test@') {
263
-		$db = '';
264
-	}
265
-
266
-	if (
267
-		$f
268
-		&& @file_exists($f)
269
-		&& (time() - @filemtime($f) < _CONNECT_RETRY_DELAY)
270
-	) {
271
-		spip_logger()->emergency("Echec : $f recent. Pas de tentative de connexion");
272
-
273
-		return null;
274
-	}
275
-
276
-	if (!$prefixe) {
277
-		$prefixe = $GLOBALS['table_prefix'] ?? $db;
278
-	}
279
-	$h = charger_fonction($type, 'req', true);
280
-	if (!$h) {
281
-		spip_logger()->emergency("les requetes $type ne sont pas fournies");
282
-
283
-		return null;
284
-	}
285
-	if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) {
286
-		if (!is_array($auth)) {
287
-			// compatibilite version 0.7 initiale
288
-			$g['ldap'] = $auth;
289
-			$auth = ['ldap' => $auth];
290
-		}
291
-		$g['authentification'] = $auth;
292
-		$g['type'] = $type;
293
-		$g['charset'] = $charset;
294
-
295
-		return $GLOBALS['db_ok'] = $g;
296
-	}
297
-	// En cas d'indisponibilite du serveur, eviter de le bombarder
298
-	if ($f) {
299
-		@touch($f);
300
-		spip_logger($type)->emergency("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]");
301
-	}
302
-	return null;
249
+    // temps avant nouvelle tentative de connexion
250
+    // suite a une connection echouee
251
+    if (!defined('_CONNECT_RETRY_DELAY')) {
252
+        define('_CONNECT_RETRY_DELAY', 30);
253
+    }
254
+
255
+    $f = '';
256
+    // un fichier de identifiant par combinaison (type,host,port,db)
257
+    // pour ne pas declarer tout indisponible d'un coup
258
+    // si en cours d'installation ou si db=@test@ on ne pose rien
259
+    // car c'est un test de connexion
260
+    if (!defined('_ECRIRE_INSTALL') && $db !== '@test@') {
261
+        $f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out';
262
+    } elseif ($db == '@test@') {
263
+        $db = '';
264
+    }
265
+
266
+    if (
267
+        $f
268
+        && @file_exists($f)
269
+        && (time() - @filemtime($f) < _CONNECT_RETRY_DELAY)
270
+    ) {
271
+        spip_logger()->emergency("Echec : $f recent. Pas de tentative de connexion");
272
+
273
+        return null;
274
+    }
275
+
276
+    if (!$prefixe) {
277
+        $prefixe = $GLOBALS['table_prefix'] ?? $db;
278
+    }
279
+    $h = charger_fonction($type, 'req', true);
280
+    if (!$h) {
281
+        spip_logger()->emergency("les requetes $type ne sont pas fournies");
282
+
283
+        return null;
284
+    }
285
+    if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) {
286
+        if (!is_array($auth)) {
287
+            // compatibilite version 0.7 initiale
288
+            $g['ldap'] = $auth;
289
+            $auth = ['ldap' => $auth];
290
+        }
291
+        $g['authentification'] = $auth;
292
+        $g['type'] = $type;
293
+        $g['charset'] = $charset;
294
+
295
+        return $GLOBALS['db_ok'] = $g;
296
+    }
297
+    // En cas d'indisponibilite du serveur, eviter de le bombarder
298
+    if ($f) {
299
+        @touch($f);
300
+        spip_logger($type)->emergency("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]");
301
+    }
302
+    return null;
303 303
 }
304 304
 
305 305
 
@@ -331,32 +331,32 @@  discard block
 block discarded – undo
331 331
  *     - nom du charset sinon
332 332
  **/
333 333
 function spip_connect_main($connexion, $charset_sql_connexion = '') {
334
-	if ($GLOBALS['spip_connect_version'] < 0.1 && _DIR_RESTREINT) {
335
-		include_spip('inc/headers');
336
-		redirige_url_ecrire('upgrade', 'reinstall=oui');
337
-	}
338
-
339
-	if (!($f = $connexion['select'])) {
340
-		return false;
341
-	}
342
-	// si le charset est fourni, l'utiliser
343
-	if ($charset_sql_connexion) {
344
-		return $charset_sql_connexion;
345
-	}
346
-	// sinon on regarde la table spip_meta
347
-	// en cas d'erreur select retourne la requette (is_string=true donc)
348
-	if (
349
-		!($r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'"))
350
-		|| is_string($r)
351
-	) {
352
-		return false;
353
-	}
354
-	if (!($f = $connexion['fetch'])) {
355
-		return false;
356
-	}
357
-	$r = $f($r);
358
-
359
-	return (isset($r['valeur']) && $r['valeur']) ? $r['valeur'] : -1;
334
+    if ($GLOBALS['spip_connect_version'] < 0.1 && _DIR_RESTREINT) {
335
+        include_spip('inc/headers');
336
+        redirige_url_ecrire('upgrade', 'reinstall=oui');
337
+    }
338
+
339
+    if (!($f = $connexion['select'])) {
340
+        return false;
341
+    }
342
+    // si le charset est fourni, l'utiliser
343
+    if ($charset_sql_connexion) {
344
+        return $charset_sql_connexion;
345
+    }
346
+    // sinon on regarde la table spip_meta
347
+    // en cas d'erreur select retourne la requette (is_string=true donc)
348
+    if (
349
+        !($r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'"))
350
+        || is_string($r)
351
+    ) {
352
+        return false;
353
+    }
354
+    if (!($f = $connexion['fetch'])) {
355
+        return false;
356
+    }
357
+    $r = $f($r);
358
+
359
+    return (isset($r['valeur']) && $r['valeur']) ? $r['valeur'] : -1;
360 360
 }
361 361
 
362 362
 /**
@@ -372,16 +372,16 @@  discard block
 block discarded – undo
372 372
  * @return string Valeur échappée.
373 373
  **/
374 374
 function _q($a): string {
375
-	if (is_numeric($a)) {
376
-		return (string) $a;
377
-	} elseif (is_array($a)) {
378
-		return implode(',', array_map('_q', $a));
379
-	} elseif (is_scalar($a)) {
380
-		return ("'" . addslashes($a) . "'");
381
-	} elseif ($a === null) {
382
-		return "''";
383
-	}
384
-	throw new \RuntimeException('Can’t use _q with ' . gettype($a));
375
+    if (is_numeric($a)) {
376
+        return (string) $a;
377
+    } elseif (is_array($a)) {
378
+        return implode(',', array_map('_q', $a));
379
+    } elseif (is_scalar($a)) {
380
+        return ("'" . addslashes($a) . "'");
381
+    } elseif ($a === null) {
382
+        return "''";
383
+    }
384
+    throw new \RuntimeException('Can’t use _q with ' . gettype($a));
385 385
 }
386 386
 
387 387
 /**
@@ -397,75 +397,75 @@  discard block
 block discarded – undo
397 397
  * @return array
398 398
  */
399 399
 function query_echappe_textes($query, $uniqid = null) {
400
-	static $codeEchappements = null;
401
-	if (is_null($codeEchappements) || $uniqid) {
402
-		if (is_null($uniqid)) {
403
-			$uniqid = uniqid();
404
-		}
405
-		$uniqid = substr(md5((string) $uniqid), 0, 4);
406
-		$codeEchappements = ['\\\\' => "\x1@#{$uniqid}#@\x1", "\\'" => "\x2@#{$uniqid}#@\x2", '\\"' => "\x3@#{$uniqid}#@\x3", '%' => "\x4@#{$uniqid}#@\x4"];
407
-	}
408
-	if ($query === null) {
409
-		return $codeEchappements;
410
-	}
411
-
412
-	// si la query contient deja des codes d'echappement on va s'emmeler les pinceaux et donc on ne touche a rien
413
-	// ce n'est pas un cas legitime
414
-	foreach ($codeEchappements as $codeEchappement) {
415
-		if (str_contains($query, (string) $codeEchappement)) {
416
-			return [$query, []];
417
-		}
418
-	}
419
-
420
-	$query_echappees = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
421
-	if (preg_match_all("/('[^']*')|(\"[^\"]*\")/S", $query_echappees, $textes)) {
422
-		$textes = reset($textes);
423
-
424
-		$parts = [];
425
-		$currentpos = 0;
426
-		$k = 0;
427
-		while (count($textes)) {
428
-			$part = array_shift($textes);
429
-			$nextpos = strpos($query_echappees, (string) $part, $currentpos);
430
-			// si besoin recoller ensemble les doubles '' de sqlite (echappement des ')
431
-			while (count($textes) && str_ends_with((string) $part, "'")) {
432
-				$next = reset($textes);
433
-				if (
434
-					str_starts_with((string) $next, "'")
435
-					&& strpos($query_echappees, $part . $next, $currentpos) === $nextpos
436
-				) {
437
-					$part .= array_shift($textes);
438
-				}
439
-				else {
440
-					break;
441
-				}
442
-			}
443
-			$k++;
444
-			$parts[$k] = [
445
-				'texte' => $part,
446
-				'position' => $nextpos,
447
-				'placeholder' => '%' . $k . '$s',
448
-			];
449
-			$currentpos = $nextpos + strlen((string) $part);
450
-		}
451
-
452
-		// et on replace les parts une par une en commencant par la fin
453
-		while ($k > 0) {
454
-			$query_echappees = substr_replace($query_echappees, $parts[$k]['placeholder'], $parts[$k]['position'], strlen((string) $parts[$k]['texte']));
455
-			$k--;
456
-		}
457
-		$textes = array_column($parts, 'texte');
458
-	} else {
459
-		$textes = [];
460
-	}
461
-
462
-	// si il reste des quotes simples ou doubles, c'est qu'on s'est emmelle les pinceaux
463
-	// dans le doute on ne touche a rien
464
-	if (strpbrk($query_echappees, "'\"") !== false) {
465
-		return [$query, []];
466
-	}
467
-
468
-	return [$query_echappees, $textes];
400
+    static $codeEchappements = null;
401
+    if (is_null($codeEchappements) || $uniqid) {
402
+        if (is_null($uniqid)) {
403
+            $uniqid = uniqid();
404
+        }
405
+        $uniqid = substr(md5((string) $uniqid), 0, 4);
406
+        $codeEchappements = ['\\\\' => "\x1@#{$uniqid}#@\x1", "\\'" => "\x2@#{$uniqid}#@\x2", '\\"' => "\x3@#{$uniqid}#@\x3", '%' => "\x4@#{$uniqid}#@\x4"];
407
+    }
408
+    if ($query === null) {
409
+        return $codeEchappements;
410
+    }
411
+
412
+    // si la query contient deja des codes d'echappement on va s'emmeler les pinceaux et donc on ne touche a rien
413
+    // ce n'est pas un cas legitime
414
+    foreach ($codeEchappements as $codeEchappement) {
415
+        if (str_contains($query, (string) $codeEchappement)) {
416
+            return [$query, []];
417
+        }
418
+    }
419
+
420
+    $query_echappees = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
421
+    if (preg_match_all("/('[^']*')|(\"[^\"]*\")/S", $query_echappees, $textes)) {
422
+        $textes = reset($textes);
423
+
424
+        $parts = [];
425
+        $currentpos = 0;
426
+        $k = 0;
427
+        while (count($textes)) {
428
+            $part = array_shift($textes);
429
+            $nextpos = strpos($query_echappees, (string) $part, $currentpos);
430
+            // si besoin recoller ensemble les doubles '' de sqlite (echappement des ')
431
+            while (count($textes) && str_ends_with((string) $part, "'")) {
432
+                $next = reset($textes);
433
+                if (
434
+                    str_starts_with((string) $next, "'")
435
+                    && strpos($query_echappees, $part . $next, $currentpos) === $nextpos
436
+                ) {
437
+                    $part .= array_shift($textes);
438
+                }
439
+                else {
440
+                    break;
441
+                }
442
+            }
443
+            $k++;
444
+            $parts[$k] = [
445
+                'texte' => $part,
446
+                'position' => $nextpos,
447
+                'placeholder' => '%' . $k . '$s',
448
+            ];
449
+            $currentpos = $nextpos + strlen((string) $part);
450
+        }
451
+
452
+        // et on replace les parts une par une en commencant par la fin
453
+        while ($k > 0) {
454
+            $query_echappees = substr_replace($query_echappees, $parts[$k]['placeholder'], $parts[$k]['position'], strlen((string) $parts[$k]['texte']));
455
+            $k--;
456
+        }
457
+        $textes = array_column($parts, 'texte');
458
+    } else {
459
+        $textes = [];
460
+    }
461
+
462
+    // si il reste des quotes simples ou doubles, c'est qu'on s'est emmelle les pinceaux
463
+    // dans le doute on ne touche a rien
464
+    if (strpbrk($query_echappees, "'\"") !== false) {
465
+        return [$query, []];
466
+    }
467
+
468
+    return [$query_echappees, $textes];
469 469
 }
470 470
 
471 471
 /**
@@ -479,14 +479,14 @@  discard block
 block discarded – undo
479 479
  * @return string
480 480
  */
481 481
 function query_reinjecte_textes($query, $textes) {
482
-	// recuperer les codes echappements
483
-	$codeEchappements = query_echappe_textes(null);
482
+    // recuperer les codes echappements
483
+    $codeEchappements = query_echappe_textes(null);
484 484
 
485
-	if (!empty($textes)) {
486
-		$query = sprintf($query, ...$textes);
487
-	}
485
+    if (!empty($textes)) {
486
+        $query = sprintf($query, ...$textes);
487
+    }
488 488
 
489
-	return str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query);
489
+    return str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query);
490 490
 }
491 491
 
492 492
 
@@ -505,7 +505,7 @@  discard block
 block discarded – undo
505 505
  **/
506 506
 function spip_query($query, $serveur = '') {
507 507
 
508
-	$f = spip_connect_sql($GLOBALS['spip_sql_version'], 'query', $serveur, true);
508
+    $f = spip_connect_sql($GLOBALS['spip_sql_version'], 'query', $serveur, true);
509 509
 
510
-	return function_exists($f) ? $f($query, $serveur) : false;
510
+    return function_exists($f) ? $f($query, $serveur) : false;
511 511
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18 18
 	return;
19 19
 }
20
-require_once _ROOT_RESTREINT . 'base/objets.php';
20
+require_once _ROOT_RESTREINT.'base/objets.php';
21 21
 
22 22
 
23 23
 /**
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
 				defined('_DIR_CONNECT')
63 63
 				&& preg_match('/^[\w\.]*$/', $serveur)
64 64
 			) {
65
-				$f = _DIR_CONNECT . $serveur . '.php';
65
+				$f = _DIR_CONNECT.$serveur.'.php';
66 66
 				if (!is_readable($f) && !$install) {
67 67
 					// chercher une declaration de serveur dans le path
68 68
 					// qui peut servir à des plugins à declarer des connexions à une base sqlite
@@ -109,8 +109,8 @@  discard block
 block discarded – undo
109 109
 	// chargement de la version du jeu de fonctions
110 110
 	// si pas dans le fichier par defaut
111 111
 	$type = $GLOBALS['db_ok']['type'];
112
-	$jeu = 'spip_' . $type . '_functions_' . $version;
113
-	if (!isset($GLOBALS[$jeu]) && !find_in_path($type . '_' . $version . '.php', 'req/', true)) {
112
+	$jeu = 'spip_'.$type.'_functions_'.$version;
113
+	if (!isset($GLOBALS[$jeu]) && !find_in_path($type.'_'.$version.'.php', 'req/', true)) {
114 114
 		spip_logger()->emergency("spip_connect: serveur $index version '$version' non defini pour '$type'");
115 115
 		// ne plus reessayer
116 116
 		return $GLOBALS['connexions'][$index][$version] = [];
@@ -170,8 +170,8 @@  discard block
 block discarded – undo
170 170
 	$connexion = spip_connect($serveur);
171 171
 	$e = sql_errno($serveur);
172 172
 	$t = ($connexion['type'] ?? 'sql');
173
-	$m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim((string) $connexion['last']);
174
-	$f = $t . $serveur;
173
+	$m = "Erreur $e de $t: ".sql_error($serveur)."\nin ".sql_error_backtrace()."\n".trim((string) $connexion['last']);
174
+	$f = $t.$serveur;
175 175
 	spip_logger($f)->error($m);
176 176
 }
177 177
 
@@ -258,7 +258,7 @@  discard block
 block discarded – undo
258 258
 	// si en cours d'installation ou si db=@test@ on ne pose rien
259 259
 	// car c'est un test de connexion
260 260
 	if (!defined('_ECRIRE_INSTALL') && $db !== '@test@') {
261
-		$f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out';
261
+		$f = _DIR_TMP.$type.'.'.substr(md5($host.$port.$db), 0, 8).'.out';
262 262
 	} elseif ($db == '@test@') {
263 263
 		$db = '';
264 264
 	}
@@ -377,11 +377,11 @@  discard block
 block discarded – undo
377 377
 	} elseif (is_array($a)) {
378 378
 		return implode(',', array_map('_q', $a));
379 379
 	} elseif (is_scalar($a)) {
380
-		return ("'" . addslashes($a) . "'");
380
+		return ("'".addslashes($a)."'");
381 381
 	} elseif ($a === null) {
382 382
 		return "''";
383 383
 	}
384
-	throw new \RuntimeException('Can’t use _q with ' . gettype($a));
384
+	throw new \RuntimeException('Can’t use _q with '.gettype($a));
385 385
 }
386 386
 
387 387
 /**
@@ -432,7 +432,7 @@  discard block
 block discarded – undo
432 432
 				$next = reset($textes);
433 433
 				if (
434 434
 					str_starts_with((string) $next, "'")
435
-					&& strpos($query_echappees, $part . $next, $currentpos) === $nextpos
435
+					&& strpos($query_echappees, $part.$next, $currentpos) === $nextpos
436 436
 				) {
437 437
 					$part .= array_shift($textes);
438 438
 				}
@@ -444,7 +444,7 @@  discard block
 block discarded – undo
444 444
 			$parts[$k] = [
445 445
 				'texte' => $part,
446 446
 				'position' => $nextpos,
447
-				'placeholder' => '%' . $k . '$s',
447
+				'placeholder' => '%'.$k.'$s',
448 448
 			];
449 449
 			$currentpos = $nextpos + strlen((string) $part);
450 450
 		}
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -435,8 +435,7 @@
 block discarded – undo
435 435
 					&& strpos($query_echappees, $part . $next, $currentpos) === $nextpos
436 436
 				) {
437 437
 					$part .= array_shift($textes);
438
-				}
439
-				else {
438
+				} else {
440 439
 					break;
441 440
 				}
442 441
 			}
Please login to merge, or discard this patch.
ecrire/base/dump.php 2 patches
Indentation   +525 added lines, -525 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  */
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 define('_VERSION_ARCHIVE', '1.3');
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
  * @return string
38 38
  **/
39 39
 function base_dump_meta_name($rub) {
40
-	return $meta = "status_dump_{$rub}_" . abs($GLOBALS['visiteur_session']['id_auteur']);
40
+    return $meta = "status_dump_{$rub}_" . abs($GLOBALS['visiteur_session']['id_auteur']);
41 41
 }
42 42
 
43 43
 /**
@@ -52,14 +52,14 @@  discard block
 block discarded – undo
52 52
  * @return string
53 53
  **/
54 54
 function base_dump_dir($meta) {
55
-	include_spip('inc/documents');
56
-	// determine upload va aussi initialiser l'index "restreint"
57
-	$maindir = determine_upload();
58
-	if (!$GLOBALS['visiteur_session']['restreint']) {
59
-		$maindir = _DIR_DUMP;
60
-	}
61
-
62
-	return sous_repertoire($maindir, $meta);
55
+    include_spip('inc/documents');
56
+    // determine upload va aussi initialiser l'index "restreint"
57
+    $maindir = determine_upload();
58
+    if (!$GLOBALS['visiteur_session']['restreint']) {
59
+        $maindir = _DIR_DUMP;
60
+    }
61
+
62
+    return sous_repertoire($maindir, $meta);
63 63
 }
64 64
 
65 65
 /**
@@ -73,28 +73,28 @@  discard block
 block discarded – undo
73 73
  * @return array
74 74
  */
75 75
 function base_lister_toutes_tables(
76
-	$serveur = '',
77
-	$tables = [],
78
-	$exclude = [],
79
-	$affiche_vrai_prefixe = false
76
+    $serveur = '',
77
+    $tables = [],
78
+    $exclude = [],
79
+    $affiche_vrai_prefixe = false
80 80
 ) {
81
-	spip_connect($serveur);
82
-	$connexion = $GLOBALS['connexions'][$serveur ?: 0];
83
-	$prefixe = $connexion['prefixe'];
84
-
85
-	$p = '/^' . $prefixe . '/';
86
-	$res = $tables;
87
-	foreach (sql_alltable(null, $serveur) as $t) {
88
-		if (preg_match($p, (string) $t)) {
89
-			$t1 = preg_replace($p, 'spip', (string) $t);
90
-			if (!in_array($t1, $tables) && !in_array($t1, $exclude)) {
91
-				$res[] = ($affiche_vrai_prefixe ? $t : $t1);
92
-			}
93
-		}
94
-	}
95
-	sort($res);
96
-
97
-	return $res;
81
+    spip_connect($serveur);
82
+    $connexion = $GLOBALS['connexions'][$serveur ?: 0];
83
+    $prefixe = $connexion['prefixe'];
84
+
85
+    $p = '/^' . $prefixe . '/';
86
+    $res = $tables;
87
+    foreach (sql_alltable(null, $serveur) as $t) {
88
+        if (preg_match($p, (string) $t)) {
89
+            $t1 = preg_replace($p, 'spip', (string) $t);
90
+            if (!in_array($t1, $tables) && !in_array($t1, $exclude)) {
91
+                $res[] = ($affiche_vrai_prefixe ? $t : $t1);
92
+            }
93
+        }
94
+    }
95
+    sort($res);
96
+
97
+    return $res;
98 98
 }
99 99
 
100 100
 /**
@@ -104,10 +104,10 @@  discard block
 block discarded – undo
104 104
  * @return string
105 105
  */
106 106
 function base_prefixe_tables($serveur = '') {
107
-	spip_connect($serveur);
108
-	$connexion = $GLOBALS['connexions'][$serveur ?: 0];
107
+    spip_connect($serveur);
108
+    $connexion = $GLOBALS['connexions'][$serveur ?: 0];
109 109
 
110
-	return $connexion['prefixe'];
110
+    return $connexion['prefixe'];
111 111
 }
112 112
 
113 113
 
@@ -122,26 +122,26 @@  discard block
 block discarded – undo
122 122
  * @return array
123 123
  */
124 124
 function base_saisie_tables($name, $tables, $exclude = [], $post = null, $serveur = '') {
125
-	include_spip('inc/filtres');
126
-	$res = [];
127
-	foreach ($tables as $k => $t) {
128
-		// par defaut tout est coche sauf les tables dans $exclude
129
-		$check = is_null($post) ? !in_array($t, $exclude) : in_array($t, $post);
130
-
131
-		$res[$k] = "<input type='checkbox' value='$t' name='$name"
132
-			. "[]' id='$name$k'"
133
-			. ($check ? " checked='checked'" : '')
134
-			. "/>\n"
135
-			. "<label for='$name$k'>$t</label>"
136
-			. ' ('
137
-			. sinon(
138
-				singulier_ou_pluriel(sql_countsel($t, '', '', '', $serveur), 'dump:une_donnee', 'dump:nb_donnees'),
139
-				_T('dump:aucune_donnee')
140
-			)
141
-			. ')';
142
-	}
143
-
144
-	return $res;
125
+    include_spip('inc/filtres');
126
+    $res = [];
127
+    foreach ($tables as $k => $t) {
128
+        // par defaut tout est coche sauf les tables dans $exclude
129
+        $check = is_null($post) ? !in_array($t, $exclude) : in_array($t, $post);
130
+
131
+        $res[$k] = "<input type='checkbox' value='$t' name='$name"
132
+            . "[]' id='$name$k'"
133
+            . ($check ? " checked='checked'" : '')
134
+            . "/>\n"
135
+            . "<label for='$name$k'>$t</label>"
136
+            . ' ('
137
+            . sinon(
138
+                singulier_ou_pluriel(sql_countsel($t, '', '', '', $serveur), 'dump:une_donnee', 'dump:nb_donnees'),
139
+                _T('dump:aucune_donnee')
140
+            )
141
+            . ')';
142
+    }
143
+
144
+    return $res;
145 145
 }
146 146
 
147 147
 
@@ -153,27 +153,27 @@  discard block
 block discarded – undo
153 153
  * @return array
154 154
  */
155 155
 function lister_tables_noexport() {
156
-	// par defaut tout est exporte sauf les tables ci-dessous
157
-	static $EXPORT_tables_noexport = null;
158
-	if (!is_null($EXPORT_tables_noexport)) {
159
-		return $EXPORT_tables_noexport;
160
-	}
161
-
162
-	$EXPORT_tables_noexport = [
163
-		'spip_caches', // plugin invalideur
164
-		'spip_resultats', // resultats de recherche ... c'est un cache !
165
-		'spip_test', // c'est un test !
166
-		#'spip_referers',
167
-		#'spip_referers_articles',
168
-		#'spip_visites',
169
-		#'spip_visites_articles',
170
-		#'spip_versions',
171
-		#'spip_versions_fragments'
172
-	];
173
-
174
-	$EXPORT_tables_noexport = pipeline('lister_tables_noexport', $EXPORT_tables_noexport);
175
-
176
-	return $EXPORT_tables_noexport;
156
+    // par defaut tout est exporte sauf les tables ci-dessous
157
+    static $EXPORT_tables_noexport = null;
158
+    if (!is_null($EXPORT_tables_noexport)) {
159
+        return $EXPORT_tables_noexport;
160
+    }
161
+
162
+    $EXPORT_tables_noexport = [
163
+        'spip_caches', // plugin invalideur
164
+        'spip_resultats', // resultats de recherche ... c'est un cache !
165
+        'spip_test', // c'est un test !
166
+        #'spip_referers',
167
+        #'spip_referers_articles',
168
+        #'spip_visites',
169
+        #'spip_visites_articles',
170
+        #'spip_versions',
171
+        #'spip_versions_fragments'
172
+    ];
173
+
174
+    $EXPORT_tables_noexport = pipeline('lister_tables_noexport', $EXPORT_tables_noexport);
175
+
176
+    return $EXPORT_tables_noexport;
177 177
 }
178 178
 
179 179
 /**
@@ -184,25 +184,25 @@  discard block
 block discarded – undo
184 184
  * @return array
185 185
  */
186 186
 function lister_tables_noimport() {
187
-	static $IMPORT_tables_noimport = null;
188
-	if (!is_null($IMPORT_tables_noimport)) {
189
-		return $IMPORT_tables_noimport;
190
-	}
191
-
192
-	$IMPORT_tables_noimport = [];
193
-	// par defaut tout est importe sauf les tables ci-dessous
194
-	// possibiliter de definir cela tables via la meta
195
-	// compatibilite
196
-	if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])) {
197
-		$IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']);
198
-		if (!is_array($IMPORT_tables_noimport)) {
199
-			include_spip('inc/meta');
200
-			effacer_meta('IMPORT_tables_noimport');
201
-		}
202
-	}
203
-	$IMPORT_tables_noimport = pipeline('lister_tables_noimport', $IMPORT_tables_noimport);
204
-
205
-	return $IMPORT_tables_noimport;
187
+    static $IMPORT_tables_noimport = null;
188
+    if (!is_null($IMPORT_tables_noimport)) {
189
+        return $IMPORT_tables_noimport;
190
+    }
191
+
192
+    $IMPORT_tables_noimport = [];
193
+    // par defaut tout est importe sauf les tables ci-dessous
194
+    // possibiliter de definir cela tables via la meta
195
+    // compatibilite
196
+    if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])) {
197
+        $IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']);
198
+        if (!is_array($IMPORT_tables_noimport)) {
199
+            include_spip('inc/meta');
200
+            effacer_meta('IMPORT_tables_noimport');
201
+        }
202
+    }
203
+    $IMPORT_tables_noimport = pipeline('lister_tables_noimport', $IMPORT_tables_noimport);
204
+
205
+    return $IMPORT_tables_noimport;
206 206
 }
207 207
 
208 208
 
@@ -214,23 +214,23 @@  discard block
 block discarded – undo
214 214
  * @return array
215 215
  */
216 216
 function lister_tables_noerase() {
217
-	static $IMPORT_tables_noerase = null;
218
-	if (!is_null($IMPORT_tables_noerase)) {
219
-		return $IMPORT_tables_noerase;
220
-	}
221
-
222
-	$IMPORT_tables_noerase = [
223
-		'spip_meta',
224
-		// par defaut on ne vide pas les stats, car elles ne figurent pas dans les dump
225
-		// et le cas echeant, un bouton dans l'admin permet de les vider a la main...
226
-		'spip_referers',
227
-		'spip_referers_articles',
228
-		'spip_visites',
229
-		'spip_visites_articles'
230
-	];
231
-	$IMPORT_tables_noerase = pipeline('lister_tables_noerase', $IMPORT_tables_noerase);
232
-
233
-	return $IMPORT_tables_noerase;
217
+    static $IMPORT_tables_noerase = null;
218
+    if (!is_null($IMPORT_tables_noerase)) {
219
+        return $IMPORT_tables_noerase;
220
+    }
221
+
222
+    $IMPORT_tables_noerase = [
223
+        'spip_meta',
224
+        // par defaut on ne vide pas les stats, car elles ne figurent pas dans les dump
225
+        // et le cas echeant, un bouton dans l'admin permet de les vider a la main...
226
+        'spip_referers',
227
+        'spip_referers_articles',
228
+        'spip_visites',
229
+        'spip_visites_articles'
230
+    ];
231
+    $IMPORT_tables_noerase = pipeline('lister_tables_noerase', $IMPORT_tables_noerase);
232
+
233
+    return $IMPORT_tables_noerase;
234 234
 }
235 235
 
236 236
 
@@ -244,86 +244,86 @@  discard block
 block discarded – undo
244 244
  * @return array
245 245
  */
246 246
 function base_liste_table_for_dump($exclude_tables = []) {
247
-	$tables_for_dump = [];
248
-	$tables_pointees = [];
249
-	$tables = [];
250
-	$tables_principales = $GLOBALS['tables_principales'];
251
-	$tables_auxiliaires = $GLOBALS['tables_auxiliaires'];
252
-	$tables_jointures = $GLOBALS['tables_jointures'];
253
-
254
-	if (
255
-		include_spip('base/objets')
256
-		&& function_exists('lister_tables_objets_sql')
257
-	) {
258
-		$tables = lister_tables_objets_sql();
259
-		foreach ($tables as $t => $infos) {
260
-			if ($infos['principale'] && !isset($tables_principales[$t])) {
261
-				$tables_principales[$t] = true;
262
-			}
263
-			if (!$infos['principale'] && !isset($tables_auxiliaires[$t])) {
264
-				$tables_auxiliaires[$t] = true;
265
-			}
266
-			if (is_countable($infos['tables_jointures']) ? count($infos['tables_jointures']) : 0) {
267
-				$tables_jointures[$t] = array_merge(
268
-					$tables_jointures[$t] ?? [],
269
-					$infos['tables_jointures']
270
-				);
271
-			}
272
-		}
273
-	}
274
-
275
-	// on construit un index des tables de liens
276
-	// pour les ajouter SI les deux tables qu'ils connectent sont sauvegardees
277
-	$tables_for_link = [];
278
-	foreach ($tables_jointures as $table => $liste_relations) {
279
-		if (is_array($liste_relations)) {
280
-			$nom = $table;
281
-			if (!isset($tables_auxiliaires[$nom]) && !isset($tables_principales[$nom])) {
282
-				$nom = "spip_$table";
283
-			}
284
-			if (isset($tables_auxiliaires[$nom]) || isset($tables_principales[$nom])) {
285
-				foreach ($liste_relations as $link_table) {
286
-					if (isset($tables_auxiliaires[$link_table])/*||isset($tables_principales[$link_table])*/) {
287
-						$tables_for_link[$link_table][] = $nom;
288
-					} else {
289
-						if (isset($tables_auxiliaires["spip_$link_table"])/*||isset($tables_principales["spip_$link_table"])*/) {
290
-							$tables_for_link["spip_$link_table"][] = $nom;
291
-						}
292
-					}
293
-				}
294
-			}
295
-		}
296
-	}
297
-
298
-	$liste_tables = [...array_keys($tables_principales), ...array_keys($tables_auxiliaires), ...array_keys($tables)];
299
-	foreach ($liste_tables as $table) {
300
-		//		$name = preg_replace("{^spip_}","",$table);
301
-		if (
302
-			!isset($tables_pointees[$table])
303
-			&& !in_array($table, $exclude_tables)
304
-			&& !isset($tables_for_link[$table])
305
-		) {
306
-			$tables_for_dump[] = $table;
307
-			$tables_pointees[$table] = 1;
308
-		}
309
-	}
310
-	foreach ($tables_for_link as $link_table => $liste) {
311
-		$connecte = true;
312
-		foreach ($liste as $connect_table) {
313
-			if (!in_array($connect_table, $tables_for_dump)) {
314
-				$connecte = false;
315
-			}
316
-		}
317
-		if ($connecte) {
318
-			# on ajoute les liaisons en premier
319
-			# si une restauration est interrompue,
320
-			# cela se verra mieux si il manque des objets
321
-			# que des liens
322
-		array_unshift($tables_for_dump, $link_table);
323
-		}
324
-	}
325
-
326
-	return [$tables_for_dump, $tables_for_link];
247
+    $tables_for_dump = [];
248
+    $tables_pointees = [];
249
+    $tables = [];
250
+    $tables_principales = $GLOBALS['tables_principales'];
251
+    $tables_auxiliaires = $GLOBALS['tables_auxiliaires'];
252
+    $tables_jointures = $GLOBALS['tables_jointures'];
253
+
254
+    if (
255
+        include_spip('base/objets')
256
+        && function_exists('lister_tables_objets_sql')
257
+    ) {
258
+        $tables = lister_tables_objets_sql();
259
+        foreach ($tables as $t => $infos) {
260
+            if ($infos['principale'] && !isset($tables_principales[$t])) {
261
+                $tables_principales[$t] = true;
262
+            }
263
+            if (!$infos['principale'] && !isset($tables_auxiliaires[$t])) {
264
+                $tables_auxiliaires[$t] = true;
265
+            }
266
+            if (is_countable($infos['tables_jointures']) ? count($infos['tables_jointures']) : 0) {
267
+                $tables_jointures[$t] = array_merge(
268
+                    $tables_jointures[$t] ?? [],
269
+                    $infos['tables_jointures']
270
+                );
271
+            }
272
+        }
273
+    }
274
+
275
+    // on construit un index des tables de liens
276
+    // pour les ajouter SI les deux tables qu'ils connectent sont sauvegardees
277
+    $tables_for_link = [];
278
+    foreach ($tables_jointures as $table => $liste_relations) {
279
+        if (is_array($liste_relations)) {
280
+            $nom = $table;
281
+            if (!isset($tables_auxiliaires[$nom]) && !isset($tables_principales[$nom])) {
282
+                $nom = "spip_$table";
283
+            }
284
+            if (isset($tables_auxiliaires[$nom]) || isset($tables_principales[$nom])) {
285
+                foreach ($liste_relations as $link_table) {
286
+                    if (isset($tables_auxiliaires[$link_table])/*||isset($tables_principales[$link_table])*/) {
287
+                        $tables_for_link[$link_table][] = $nom;
288
+                    } else {
289
+                        if (isset($tables_auxiliaires["spip_$link_table"])/*||isset($tables_principales["spip_$link_table"])*/) {
290
+                            $tables_for_link["spip_$link_table"][] = $nom;
291
+                        }
292
+                    }
293
+                }
294
+            }
295
+        }
296
+    }
297
+
298
+    $liste_tables = [...array_keys($tables_principales), ...array_keys($tables_auxiliaires), ...array_keys($tables)];
299
+    foreach ($liste_tables as $table) {
300
+        //		$name = preg_replace("{^spip_}","",$table);
301
+        if (
302
+            !isset($tables_pointees[$table])
303
+            && !in_array($table, $exclude_tables)
304
+            && !isset($tables_for_link[$table])
305
+        ) {
306
+            $tables_for_dump[] = $table;
307
+            $tables_pointees[$table] = 1;
308
+        }
309
+    }
310
+    foreach ($tables_for_link as $link_table => $liste) {
311
+        $connecte = true;
312
+        foreach ($liste as $connect_table) {
313
+            if (!in_array($connect_table, $tables_for_dump)) {
314
+                $connecte = false;
315
+            }
316
+        }
317
+        if ($connecte) {
318
+            # on ajoute les liaisons en premier
319
+            # si une restauration est interrompue,
320
+            # cela se verra mieux si il manque des objets
321
+            # que des liens
322
+        array_unshift($tables_for_dump, $link_table);
323
+        }
324
+    }
325
+
326
+    return [$tables_for_dump, $tables_for_link];
327 327
 }
328 328
 
329 329
 /**
@@ -338,34 +338,34 @@  discard block
 block discarded – undo
338 338
  * @param string $serveur
339 339
  */
340 340
 function base_vider_tables_destination_copie($tables, $exclure_tables = [], $serveur = '') {
341
-	$trouver_table = charger_fonction('trouver_table', 'base');
342
-
343
-	spip_logger('base')->notice(
344
-		'Vider ' . count($tables) . " tables sur serveur '$serveur' : " . implode(', ', $tables),
345
-	);
346
-	foreach ($tables as $table) {
347
-		// sur le serveur principal, il ne faut pas supprimer l'auteur loge !
348
-		if (!in_array($table, $exclure_tables) && ($table != 'spip_auteurs' || $serveur != '')) {
349
-			// regarder si il y a au moins un champ impt='non'
350
-			$desc = $trouver_table($table, $serveur);
351
-			if (isset($desc['field']['impt'])) {
352
-				sql_delete($table, "impt='oui'", $serveur);
353
-			} elseif ($desc) {
354
-				sql_delete($table, '', $serveur);
355
-			}
356
-		}
357
-	}
358
-
359
-	// sur le serveur principal, il ne faut pas supprimer l'auteur loge !
360
-	// Bidouille pour garder l'acces admin actuel pendant toute la restauration
361
-	if (
362
-		$serveur == ''
363
-		&& in_array('spip_auteurs', $tables)
364
-		&& !in_array('spip_auteurs', $exclure_tables)
365
-	) {
366
-		base_conserver_copieur(true, $serveur);
367
-		sql_delete('spip_auteurs', 'id_auteur>0', $serveur);
368
-	}
341
+    $trouver_table = charger_fonction('trouver_table', 'base');
342
+
343
+    spip_logger('base')->notice(
344
+        'Vider ' . count($tables) . " tables sur serveur '$serveur' : " . implode(', ', $tables),
345
+    );
346
+    foreach ($tables as $table) {
347
+        // sur le serveur principal, il ne faut pas supprimer l'auteur loge !
348
+        if (!in_array($table, $exclure_tables) && ($table != 'spip_auteurs' || $serveur != '')) {
349
+            // regarder si il y a au moins un champ impt='non'
350
+            $desc = $trouver_table($table, $serveur);
351
+            if (isset($desc['field']['impt'])) {
352
+                sql_delete($table, "impt='oui'", $serveur);
353
+            } elseif ($desc) {
354
+                sql_delete($table, '', $serveur);
355
+            }
356
+        }
357
+    }
358
+
359
+    // sur le serveur principal, il ne faut pas supprimer l'auteur loge !
360
+    // Bidouille pour garder l'acces admin actuel pendant toute la restauration
361
+    if (
362
+        $serveur == ''
363
+        && in_array('spip_auteurs', $tables)
364
+        && !in_array('spip_auteurs', $exclure_tables)
365
+    ) {
366
+        base_conserver_copieur(true, $serveur);
367
+        sql_delete('spip_auteurs', 'id_auteur>0', $serveur);
368
+    }
369 369
 }
370 370
 
371 371
 /**
@@ -376,35 +376,35 @@  discard block
 block discarded – undo
376 376
  * @return void
377 377
  */
378 378
 function base_conserver_copieur($move = true, $serveur = '') {
379
-	// s'asurer qu'on a pas deja fait la manip !
380
-	if ($GLOBALS['visiteur_session']['id_auteur'] > 0 && sql_countsel('spip_auteurs', 'id_auteur>0')) {
381
-		spip_logger('dump')->notice(
382
-			'Conserver copieur dans id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'] . " pour le serveur '$serveur'",
383
-		);
384
-		sql_delete('spip_auteurs', 'id_auteur<0', $serveur);
385
-		if ($move) {
386
-			sql_updateq(
387
-				'spip_auteurs',
388
-				['id_auteur' => -$GLOBALS['visiteur_session']['id_auteur']],
389
-				'id_auteur=' . (int) $GLOBALS['visiteur_session']['id_auteur'],
390
-				[],
391
-				$serveur
392
-			);
393
-		} else {
394
-			$row = sql_fetsel(
395
-				'*',
396
-				'spip_auteurs',
397
-				'id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'],
398
-				'',
399
-				'',
400
-				'',
401
-				'',
402
-				$serveur
403
-			);
404
-			$row['id_auteur'] = -$GLOBALS['visiteur_session']['id_auteur'];
405
-			sql_insertq('spip_auteurs', $row, [], $serveur);
406
-		}
407
-	}
379
+    // s'asurer qu'on a pas deja fait la manip !
380
+    if ($GLOBALS['visiteur_session']['id_auteur'] > 0 && sql_countsel('spip_auteurs', 'id_auteur>0')) {
381
+        spip_logger('dump')->notice(
382
+            'Conserver copieur dans id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'] . " pour le serveur '$serveur'",
383
+        );
384
+        sql_delete('spip_auteurs', 'id_auteur<0', $serveur);
385
+        if ($move) {
386
+            sql_updateq(
387
+                'spip_auteurs',
388
+                ['id_auteur' => -$GLOBALS['visiteur_session']['id_auteur']],
389
+                'id_auteur=' . (int) $GLOBALS['visiteur_session']['id_auteur'],
390
+                [],
391
+                $serveur
392
+            );
393
+        } else {
394
+            $row = sql_fetsel(
395
+                '*',
396
+                'spip_auteurs',
397
+                'id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'],
398
+                '',
399
+                '',
400
+                '',
401
+                '',
402
+                $serveur
403
+            );
404
+            $row['id_auteur'] = -$GLOBALS['visiteur_session']['id_auteur'];
405
+            sql_insertq('spip_auteurs', $row, [], $serveur);
406
+        }
407
+    }
408 408
 }
409 409
 
410 410
 /**
@@ -419,20 +419,20 @@  discard block
 block discarded – undo
419 419
  * @param string $serveur
420 420
  */
421 421
 function base_detruire_copieur_si_besoin($serveur = '') {
422
-	// rien a faire si ce n'est pas le serveur principal !
423
-	if ($serveur == '') {
424
-		if (sql_countsel('spip_auteurs', 'id_auteur>0')) {
425
-			spip_logger('dump')->notice("Detruire copieur id_auteur<0 pour le serveur '$serveur'");
426
-			sql_delete('spip_auteurs', 'id_auteur<0', $serveur);
427
-		} else {
428
-			spip_logger('dump')->notice(
429
-				"Restaurer copieur id_auteur<0 pour le serveur '$serveur' (aucun autre auteur en base)",
430
-			);
431
-			sql_update('spip_auteurs', ['id_auteur' => '-id_auteur'], 'id_auteur<0');
432
-		}
433
-	} else {
434
-		spip_logger('dump')->notice("Pas de destruction copieur sur serveur '$serveur'");
435
-	}
422
+    // rien a faire si ce n'est pas le serveur principal !
423
+    if ($serveur == '') {
424
+        if (sql_countsel('spip_auteurs', 'id_auteur>0')) {
425
+            spip_logger('dump')->notice("Detruire copieur id_auteur<0 pour le serveur '$serveur'");
426
+            sql_delete('spip_auteurs', 'id_auteur<0', $serveur);
427
+        } else {
428
+            spip_logger('dump')->notice(
429
+                "Restaurer copieur id_auteur<0 pour le serveur '$serveur' (aucun autre auteur en base)",
430
+            );
431
+            sql_update('spip_auteurs', ['id_auteur' => '-id_auteur'], 'id_auteur<0');
432
+        }
433
+    } else {
434
+        spip_logger('dump')->notice("Pas de destruction copieur sur serveur '$serveur'");
435
+    }
436 436
 }
437 437
 
438 438
 /**
@@ -447,40 +447,40 @@  discard block
 block discarded – undo
447 447
  * @return array
448 448
  */
449 449
 function base_preparer_table_dest($table, $desc, $serveur_dest, $init = false) {
450
-	$upgrade = false;
451
-	// si la table existe et qu'on est a l'init, la dropper
452
-	if (($desc_dest = sql_showtable($table, true, $serveur_dest)) && $init) {
453
-		if ($serveur_dest == '' && in_array($table, ['spip_meta', 'spip_auteurs'])) {
454
-			// ne pas dropper auteurs et meta sur le serveur principal
455
-			// faire un simple upgrade a la place
456
-			// pour ajouter les champs manquants
457
-			$upgrade = true;
458
-			// coherence avec le drop sur les autres tables
459
-			base_vider_tables_destination_copie([$table], [], $serveur_dest);
460
-			if ($table == 'spip_meta') {
461
-				// virer les version base qui vont venir avec l'import
462
-				sql_delete($table, "nom like '%_base_version'", $serveur_dest);
463
-				// hum casse la base si pas version_installee a l'import ...
464
-				sql_delete($table, "nom='version_installee'", $serveur_dest);
465
-			}
466
-		} else {
467
-			sql_drop_table($table, '', $serveur_dest);
468
-			spip_logger('dump')->notice("drop table '$table' sur serveur '$serveur_dest'");
469
-		}
470
-		$desc_dest = false;
471
-	}
472
-	// si la table n'existe pas dans la destination, la creer a l'identique !
473
-	if (!$desc_dest) {
474
-		spip_logger('dump')->notice("creation '$table' sur serveur '$serveur_dest'");
475
-		include_spip('base/create');
476
-		creer_ou_upgrader_table($table, $desc, 'auto', $upgrade, $serveur_dest);
477
-		$desc_dest = sql_showtable($table, true, $serveur_dest);
478
-	}
479
-	if (!$desc_dest) {
480
-		spip_logger('dump')->error("Erreur creation '$table' sur serveur '$serveur_dest'" . var_export($desc, 1));
481
-	}
482
-
483
-	return $desc_dest;
450
+    $upgrade = false;
451
+    // si la table existe et qu'on est a l'init, la dropper
452
+    if (($desc_dest = sql_showtable($table, true, $serveur_dest)) && $init) {
453
+        if ($serveur_dest == '' && in_array($table, ['spip_meta', 'spip_auteurs'])) {
454
+            // ne pas dropper auteurs et meta sur le serveur principal
455
+            // faire un simple upgrade a la place
456
+            // pour ajouter les champs manquants
457
+            $upgrade = true;
458
+            // coherence avec le drop sur les autres tables
459
+            base_vider_tables_destination_copie([$table], [], $serveur_dest);
460
+            if ($table == 'spip_meta') {
461
+                // virer les version base qui vont venir avec l'import
462
+                sql_delete($table, "nom like '%_base_version'", $serveur_dest);
463
+                // hum casse la base si pas version_installee a l'import ...
464
+                sql_delete($table, "nom='version_installee'", $serveur_dest);
465
+            }
466
+        } else {
467
+            sql_drop_table($table, '', $serveur_dest);
468
+            spip_logger('dump')->notice("drop table '$table' sur serveur '$serveur_dest'");
469
+        }
470
+        $desc_dest = false;
471
+    }
472
+    // si la table n'existe pas dans la destination, la creer a l'identique !
473
+    if (!$desc_dest) {
474
+        spip_logger('dump')->notice("creation '$table' sur serveur '$serveur_dest'");
475
+        include_spip('base/create');
476
+        creer_ou_upgrader_table($table, $desc, 'auto', $upgrade, $serveur_dest);
477
+        $desc_dest = sql_showtable($table, true, $serveur_dest);
478
+    }
479
+    if (!$desc_dest) {
480
+        spip_logger('dump')->error("Erreur creation '$table' sur serveur '$serveur_dest'" . var_export($desc, 1));
481
+    }
482
+
483
+    return $desc_dest;
484 484
 }
485 485
 
486 486
 /**
@@ -526,210 +526,210 @@  discard block
 block discarded – undo
526 526
  */
527 527
 function base_copier_tables($status_file, $tables, $serveur_source, $serveur_dest, $options = []) {
528 528
 
529
-	$status = [];
530
-	$callback_progression = $options['callback_progression'] ?? '';
531
-	$max_time = $options['max_time'] ?? 0;
532
-	$drop_source = $options['drop_source'] ?? false;
533
-	$no_erase_dest = $options['no_erase_dest'] ?? [];
534
-	$where = $options['where'] ?? [];
535
-	$fonction_base_inserer = $options['fonction_base_inserer'] ?? 'inserer_copie';
536
-	$desc_tables_dest = $options['desc_tables_dest'] ?? [];
537
-	$racine_fonctions = $options['racine_fonctions_dest'] ?? 'base';
538
-	$data_pool = $options['data_pool'] ?? 50 * 1024;
539
-
540
-	$logger = spip_logger('dump');
541
-
542
-	$logger->notice(
543
-		'Copier ' . count($tables) . " tables de '$serveur_source' vers '$serveur_dest'",
544
-	);
545
-
546
-	if (!$inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true)) {
547
-		$logger->notice("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon");
548
-
549
-		return true; // echec mais on a fini, donc true
550
-	}
551
-	if (!$preparer_table_dest = charger_fonction('preparer_table_dest', $racine_fonctions, true)) {
552
-		$logger->notice("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon");
553
-
554
-		return true; // echec mais on a fini, donc true
555
-	}
556
-
557
-	if (
558
-		!lire_fichier($status_file, $status)
559
-		|| !($status = unserialize($status))
560
-	) {
561
-		$status = [];
562
-	}
563
-	$status['etape'] = 'basecopie';
564
-
565
-	// puis relister les tables a importer
566
-	// et les vider si besoin, au moment du premier passage ici
567
-	$initialisation_copie = $status['dump_status_copie'] ?? 0;
568
-
569
-	// si init pas encore faite, vider les tables du serveur destination
570
-	if (!$initialisation_copie) {
571
-		if (
572
-			!$vider_tables_destination_copie = charger_fonction(
573
-				'vider_tables_destination_copie',
574
-				$racine_fonctions,
575
-				true
576
-			)
577
-		) {
578
-			$logger->notice(
579
-				"Fonction '{$racine_fonctions}_vider_tables_destination_copie' inconnue. Abandon",
580
-			);
581
-
582
-			return true; // echec mais on a fini, donc true
583
-		}
584
-		$vider_tables_destination_copie($tables, $no_erase_dest, $serveur_dest);
585
-		$status['dump_status_copie'] = 'ok';
586
-		ecrire_fichier($status_file, serialize($status));
587
-	}
588
-
589
-	// les tables auteurs et meta doivent etre copiees en dernier !
590
-	if (in_array('spip_auteurs', $tables)) {
591
-		$tables = array_diff($tables, ['spip_auteurs']);
592
-		$tables[] = 'spip_auteurs';
593
-	}
594
-	if (in_array('spip_meta', $tables)) {
595
-		$tables = array_diff($tables, ['spip_meta']);
596
-		$tables[] = 'spip_meta';
597
-	}
598
-	$logger->info('Tables a copier :' . implode(', ', $tables));
599
-
600
-	$trouver_table = charger_fonction('trouver_table', 'base');
601
-
602
-	foreach ($tables as $table) {
603
-		// si table commence par spip_ c'est une table SPIP, renommer le prefixe si besoin
604
-		// sinon chercher la vraie table
605
-		$desc_source = false;
606
-		if (str_starts_with((string) $table, 'spip_')) {
607
-			$desc_source = $trouver_table(preg_replace(',^spip_,', '', (string) $table), $serveur_source, true);
608
-		}
609
-		if (!$desc_source || !isset($desc_source['exist']) || !$desc_source['exist']) {
610
-			$desc_source = $trouver_table($table, $serveur_source, false);
611
-		}
612
-
613
-		// verifier que la table est presente dans la base source
614
-		if ($desc_source) {
615
-			// $status['tables_copiees'][$table] contient l'avancement
616
-			// de la copie pour la $table : 0 a N et -N quand elle est finie (-1 si vide et finie...)
617
-			if (!isset($status['tables_copiees'][$table])) {
618
-				$status['tables_copiees'][$table] = 0;
619
-			}
620
-
621
-			if (
622
-				is_numeric($status['tables_copiees'][$table])
623
-				&& $status['tables_copiees'][$table] >= 0
624
-				&& ($desc_dest = $preparer_table_dest(
625
-					$table,
626
-					$desc_tables_dest[$table] ?? $desc_source,
627
-					$serveur_dest,
628
-					$status['tables_copiees'][$table] == 0
629
-				))
630
-			) {
631
-				if ($callback_progression) {
632
-					$callback_progression($status['tables_copiees'][$table], 0, $table);
633
-				}
634
-				while (true) {
635
-					$n = (int) $status['tables_copiees'][$table];
636
-					// on copie par lot de 400
637
-					$res = sql_select(
638
-						'*',
639
-						$table,
640
-						$where[$table] ?? '',
641
-						'',
642
-						'',
643
-						"$n,400",
644
-						'',
645
-						$serveur_source
646
-					);
647
-					while ($row = sql_fetch($res, $serveur_source)) {
648
-						$rows = [$row];
649
-						// lire un groupe de donnees si demande en option
650
-						// (permet un envoi par lot vers la destination)
651
-						if ($data_pool > 0) {
652
-							$s = strlen(serialize($row));
653
-							while ($s < $data_pool && ($row = sql_fetch($res, $serveur_source))) {
654
-								$s += strlen(serialize($row));
655
-								$rows[] = $row;
656
-							}
657
-						}
658
-						// si l'enregistrement est deja en base, ca fera un echec ou un doublon
659
-						// mais si ca renvoie false c'est une erreur fatale => abandon
660
-						if ($inserer_copie($table, $rows, $desc_dest, $serveur_dest) === false) {
661
-							// forcer la sortie, charge a l'appelant de gerer l'echec
662
-							$logger->error("Erreur fatale dans $inserer_copie table $table");
663
-							$status['errors'][] = "Erreur fatale  lors de la copie de la table $table";
664
-							ecrire_fichier($status_file, serialize($status));
665
-
666
-							// copie finie
667
-							return true;
668
-						}
669
-						$status['tables_copiees'][$table] += count($rows);
670
-						if ($max_time && time() > $max_time) {
671
-							break;
672
-						}
673
-					}
674
-					if ($n == $status['tables_copiees'][$table]) {
675
-						break;
676
-					}
677
-					$logger->notice("recopie $table " . $status['tables_copiees'][$table]);
678
-					if ($callback_progression) {
679
-						$callback_progression($status['tables_copiees'][$table], 0, $table);
680
-					}
681
-					ecrire_fichier($status_file, serialize($status));
682
-					if ($max_time && time() > $max_time) {
683
-						return false;
684
-					} // on a pas fini, mais le temps imparti est ecoule
685
-				}
686
-				if ($drop_source) {
687
-					sql_drop_table($table, '', $serveur_source);
688
-					$logger->notice("drop $table sur serveur source '$serveur_source'");
689
-				}
690
-				$status['tables_copiees'][$table] = ($status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : 'zero');
691
-				ecrire_fichier($status_file, serialize($status));
692
-				$logger->info('tables_recopiees ' . implode(',', array_keys($status['tables_copiees'])));
693
-				if ($callback_progression) {
694
-					$callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table);
695
-				}
696
-			} else {
697
-				if ($status['tables_copiees'][$table] < 0) {
698
-					$logger->info("Table $table deja copiee : " . $status['tables_copiees'][$table]);
699
-				}
700
-				if ($callback_progression) {
701
-					$callback_progression(
702
-						0,
703
-						$status['tables_copiees'][$table],
704
-						"$table" . ((is_numeric($status['tables_copiees'][$table]) && $status['tables_copiees'][$table] >= 0) ? '[Echec]' : '')
705
-					);
706
-				}
707
-			}
708
-		} else {
709
-			$status['errors'][] = "Impossible de lire la description de la table $table";
710
-			ecrire_fichier($status_file, serialize($status));
711
-			$logger->error("Impossible de lire la description de la table $table");
712
-		}
713
-	}
714
-
715
-	// si le nombre de tables envoyees n'est pas egal au nombre de tables demandees
716
-	// abandonner
717
-	if ((is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0) < count($tables)) {
718
-		$logger->error(
719
-			'Nombre de tables copiees incorrect : ' . (is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0) . '/' . count($tables),
720
-		);
721
-		$status['errors'][] = 'Nombre de tables copiees incorrect : ' . (is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0) . '/' . count($tables);
722
-		ecrire_fichier($status_file, serialize($status));
723
-	}
724
-
725
-	if ($detruire_copieur_si_besoin = charger_fonction('detruire_copieur_si_besoin', $racine_fonctions, true)) {
726
-		$detruire_copieur_si_besoin($serveur_dest);
727
-	} else {
728
-		$logger->notice("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.");
729
-	}
730
-
731
-	// OK, copie complete
732
-	return true;
529
+    $status = [];
530
+    $callback_progression = $options['callback_progression'] ?? '';
531
+    $max_time = $options['max_time'] ?? 0;
532
+    $drop_source = $options['drop_source'] ?? false;
533
+    $no_erase_dest = $options['no_erase_dest'] ?? [];
534
+    $where = $options['where'] ?? [];
535
+    $fonction_base_inserer = $options['fonction_base_inserer'] ?? 'inserer_copie';
536
+    $desc_tables_dest = $options['desc_tables_dest'] ?? [];
537
+    $racine_fonctions = $options['racine_fonctions_dest'] ?? 'base';
538
+    $data_pool = $options['data_pool'] ?? 50 * 1024;
539
+
540
+    $logger = spip_logger('dump');
541
+
542
+    $logger->notice(
543
+        'Copier ' . count($tables) . " tables de '$serveur_source' vers '$serveur_dest'",
544
+    );
545
+
546
+    if (!$inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true)) {
547
+        $logger->notice("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon");
548
+
549
+        return true; // echec mais on a fini, donc true
550
+    }
551
+    if (!$preparer_table_dest = charger_fonction('preparer_table_dest', $racine_fonctions, true)) {
552
+        $logger->notice("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon");
553
+
554
+        return true; // echec mais on a fini, donc true
555
+    }
556
+
557
+    if (
558
+        !lire_fichier($status_file, $status)
559
+        || !($status = unserialize($status))
560
+    ) {
561
+        $status = [];
562
+    }
563
+    $status['etape'] = 'basecopie';
564
+
565
+    // puis relister les tables a importer
566
+    // et les vider si besoin, au moment du premier passage ici
567
+    $initialisation_copie = $status['dump_status_copie'] ?? 0;
568
+
569
+    // si init pas encore faite, vider les tables du serveur destination
570
+    if (!$initialisation_copie) {
571
+        if (
572
+            !$vider_tables_destination_copie = charger_fonction(
573
+                'vider_tables_destination_copie',
574
+                $racine_fonctions,
575
+                true
576
+            )
577
+        ) {
578
+            $logger->notice(
579
+                "Fonction '{$racine_fonctions}_vider_tables_destination_copie' inconnue. Abandon",
580
+            );
581
+
582
+            return true; // echec mais on a fini, donc true
583
+        }
584
+        $vider_tables_destination_copie($tables, $no_erase_dest, $serveur_dest);
585
+        $status['dump_status_copie'] = 'ok';
586
+        ecrire_fichier($status_file, serialize($status));
587
+    }
588
+
589
+    // les tables auteurs et meta doivent etre copiees en dernier !
590
+    if (in_array('spip_auteurs', $tables)) {
591
+        $tables = array_diff($tables, ['spip_auteurs']);
592
+        $tables[] = 'spip_auteurs';
593
+    }
594
+    if (in_array('spip_meta', $tables)) {
595
+        $tables = array_diff($tables, ['spip_meta']);
596
+        $tables[] = 'spip_meta';
597
+    }
598
+    $logger->info('Tables a copier :' . implode(', ', $tables));
599
+
600
+    $trouver_table = charger_fonction('trouver_table', 'base');
601
+
602
+    foreach ($tables as $table) {
603
+        // si table commence par spip_ c'est une table SPIP, renommer le prefixe si besoin
604
+        // sinon chercher la vraie table
605
+        $desc_source = false;
606
+        if (str_starts_with((string) $table, 'spip_')) {
607
+            $desc_source = $trouver_table(preg_replace(',^spip_,', '', (string) $table), $serveur_source, true);
608
+        }
609
+        if (!$desc_source || !isset($desc_source['exist']) || !$desc_source['exist']) {
610
+            $desc_source = $trouver_table($table, $serveur_source, false);
611
+        }
612
+
613
+        // verifier que la table est presente dans la base source
614
+        if ($desc_source) {
615
+            // $status['tables_copiees'][$table] contient l'avancement
616
+            // de la copie pour la $table : 0 a N et -N quand elle est finie (-1 si vide et finie...)
617
+            if (!isset($status['tables_copiees'][$table])) {
618
+                $status['tables_copiees'][$table] = 0;
619
+            }
620
+
621
+            if (
622
+                is_numeric($status['tables_copiees'][$table])
623
+                && $status['tables_copiees'][$table] >= 0
624
+                && ($desc_dest = $preparer_table_dest(
625
+                    $table,
626
+                    $desc_tables_dest[$table] ?? $desc_source,
627
+                    $serveur_dest,
628
+                    $status['tables_copiees'][$table] == 0
629
+                ))
630
+            ) {
631
+                if ($callback_progression) {
632
+                    $callback_progression($status['tables_copiees'][$table], 0, $table);
633
+                }
634
+                while (true) {
635
+                    $n = (int) $status['tables_copiees'][$table];
636
+                    // on copie par lot de 400
637
+                    $res = sql_select(
638
+                        '*',
639
+                        $table,
640
+                        $where[$table] ?? '',
641
+                        '',
642
+                        '',
643
+                        "$n,400",
644
+                        '',
645
+                        $serveur_source
646
+                    );
647
+                    while ($row = sql_fetch($res, $serveur_source)) {
648
+                        $rows = [$row];
649
+                        // lire un groupe de donnees si demande en option
650
+                        // (permet un envoi par lot vers la destination)
651
+                        if ($data_pool > 0) {
652
+                            $s = strlen(serialize($row));
653
+                            while ($s < $data_pool && ($row = sql_fetch($res, $serveur_source))) {
654
+                                $s += strlen(serialize($row));
655
+                                $rows[] = $row;
656
+                            }
657
+                        }
658
+                        // si l'enregistrement est deja en base, ca fera un echec ou un doublon
659
+                        // mais si ca renvoie false c'est une erreur fatale => abandon
660
+                        if ($inserer_copie($table, $rows, $desc_dest, $serveur_dest) === false) {
661
+                            // forcer la sortie, charge a l'appelant de gerer l'echec
662
+                            $logger->error("Erreur fatale dans $inserer_copie table $table");
663
+                            $status['errors'][] = "Erreur fatale  lors de la copie de la table $table";
664
+                            ecrire_fichier($status_file, serialize($status));
665
+
666
+                            // copie finie
667
+                            return true;
668
+                        }
669
+                        $status['tables_copiees'][$table] += count($rows);
670
+                        if ($max_time && time() > $max_time) {
671
+                            break;
672
+                        }
673
+                    }
674
+                    if ($n == $status['tables_copiees'][$table]) {
675
+                        break;
676
+                    }
677
+                    $logger->notice("recopie $table " . $status['tables_copiees'][$table]);
678
+                    if ($callback_progression) {
679
+                        $callback_progression($status['tables_copiees'][$table], 0, $table);
680
+                    }
681
+                    ecrire_fichier($status_file, serialize($status));
682
+                    if ($max_time && time() > $max_time) {
683
+                        return false;
684
+                    } // on a pas fini, mais le temps imparti est ecoule
685
+                }
686
+                if ($drop_source) {
687
+                    sql_drop_table($table, '', $serveur_source);
688
+                    $logger->notice("drop $table sur serveur source '$serveur_source'");
689
+                }
690
+                $status['tables_copiees'][$table] = ($status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : 'zero');
691
+                ecrire_fichier($status_file, serialize($status));
692
+                $logger->info('tables_recopiees ' . implode(',', array_keys($status['tables_copiees'])));
693
+                if ($callback_progression) {
694
+                    $callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table);
695
+                }
696
+            } else {
697
+                if ($status['tables_copiees'][$table] < 0) {
698
+                    $logger->info("Table $table deja copiee : " . $status['tables_copiees'][$table]);
699
+                }
700
+                if ($callback_progression) {
701
+                    $callback_progression(
702
+                        0,
703
+                        $status['tables_copiees'][$table],
704
+                        "$table" . ((is_numeric($status['tables_copiees'][$table]) && $status['tables_copiees'][$table] >= 0) ? '[Echec]' : '')
705
+                    );
706
+                }
707
+            }
708
+        } else {
709
+            $status['errors'][] = "Impossible de lire la description de la table $table";
710
+            ecrire_fichier($status_file, serialize($status));
711
+            $logger->error("Impossible de lire la description de la table $table");
712
+        }
713
+    }
714
+
715
+    // si le nombre de tables envoyees n'est pas egal au nombre de tables demandees
716
+    // abandonner
717
+    if ((is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0) < count($tables)) {
718
+        $logger->error(
719
+            'Nombre de tables copiees incorrect : ' . (is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0) . '/' . count($tables),
720
+        );
721
+        $status['errors'][] = 'Nombre de tables copiees incorrect : ' . (is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0) . '/' . count($tables);
722
+        ecrire_fichier($status_file, serialize($status));
723
+    }
724
+
725
+    if ($detruire_copieur_si_besoin = charger_fonction('detruire_copieur_si_besoin', $racine_fonctions, true)) {
726
+        $detruire_copieur_si_besoin($serveur_dest);
727
+    } else {
728
+        $logger->notice("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.");
729
+    }
730
+
731
+    // OK, copie complete
732
+    return true;
733 733
 }
734 734
 
735 735
 /**
@@ -743,29 +743,29 @@  discard block
 block discarded – undo
743 743
  */
744 744
 function base_inserer_copie($table, $rows, $desc_dest, $serveur_dest) {
745 745
 
746
-	// verifier le nombre d'insertion
747
-	$nb1 = sql_countsel($table, '', '', '', $serveur_dest);
748
-	// si l'enregistrement est deja en base, ca fera un echec ou un doublon
749
-	$r = sql_insertq_multi($table, $rows, $desc_dest, $serveur_dest);
750
-	$nb = sql_countsel($table, '', '', '', $serveur_dest);
751
-	if ($nb - $nb1 < count($rows)) {
752
-		spip_logger('dump')->notice(
753
-			'base_inserer_copie : ' . ($nb - $nb1) . ' insertions au lieu de ' . count($rows) . '. On retente 1 par 1',
754
-		);
755
-		foreach ($rows as $row) {
756
-			// si l'enregistrement est deja en base, ca fera un echec ou un doublon
757
-			$r = sql_insertq($table, $row, $desc_dest, $serveur_dest);
758
-		}
759
-		// on reverifie le total
760
-		$r = 0;
761
-		$nb = sql_countsel($table, '', '', '', $serveur_dest);
762
-		if ($nb - $nb1 < count($rows)) {
763
-			spip_logger('dump')->error(
764
-				'base_inserer_copie : ' . ($nb - $nb1) . ' insertions au lieu de ' . count($rows) . ' apres insertion 1 par 1',
765
-			);
766
-			$r = false;
767
-		}
768
-	}
769
-
770
-	return $r;
746
+    // verifier le nombre d'insertion
747
+    $nb1 = sql_countsel($table, '', '', '', $serveur_dest);
748
+    // si l'enregistrement est deja en base, ca fera un echec ou un doublon
749
+    $r = sql_insertq_multi($table, $rows, $desc_dest, $serveur_dest);
750
+    $nb = sql_countsel($table, '', '', '', $serveur_dest);
751
+    if ($nb - $nb1 < count($rows)) {
752
+        spip_logger('dump')->notice(
753
+            'base_inserer_copie : ' . ($nb - $nb1) . ' insertions au lieu de ' . count($rows) . '. On retente 1 par 1',
754
+        );
755
+        foreach ($rows as $row) {
756
+            // si l'enregistrement est deja en base, ca fera un echec ou un doublon
757
+            $r = sql_insertq($table, $row, $desc_dest, $serveur_dest);
758
+        }
759
+        // on reverifie le total
760
+        $r = 0;
761
+        $nb = sql_countsel($table, '', '', '', $serveur_dest);
762
+        if ($nb - $nb1 < count($rows)) {
763
+            spip_logger('dump')->error(
764
+                'base_inserer_copie : ' . ($nb - $nb1) . ' insertions au lieu de ' . count($rows) . ' apres insertion 1 par 1',
765
+            );
766
+            $r = false;
767
+        }
768
+    }
769
+
770
+    return $r;
771 771
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
  * @return string
38 38
  **/
39 39
 function base_dump_meta_name($rub) {
40
-	return $meta = "status_dump_{$rub}_" . abs($GLOBALS['visiteur_session']['id_auteur']);
40
+	return $meta = "status_dump_{$rub}_".abs($GLOBALS['visiteur_session']['id_auteur']);
41 41
 }
42 42
 
43 43
 /**
@@ -82,7 +82,7 @@  discard block
 block discarded – undo
82 82
 	$connexion = $GLOBALS['connexions'][$serveur ?: 0];
83 83
 	$prefixe = $connexion['prefixe'];
84 84
 
85
-	$p = '/^' . $prefixe . '/';
85
+	$p = '/^'.$prefixe.'/';
86 86
 	$res = $tables;
87 87
 	foreach (sql_alltable(null, $serveur) as $t) {
88 88
 		if (preg_match($p, (string) $t)) {
@@ -341,7 +341,7 @@  discard block
 block discarded – undo
341 341
 	$trouver_table = charger_fonction('trouver_table', 'base');
342 342
 
343 343
 	spip_logger('base')->notice(
344
-		'Vider ' . count($tables) . " tables sur serveur '$serveur' : " . implode(', ', $tables),
344
+		'Vider '.count($tables)." tables sur serveur '$serveur' : ".implode(', ', $tables),
345 345
 	);
346 346
 	foreach ($tables as $table) {
347 347
 		// sur le serveur principal, il ne faut pas supprimer l'auteur loge !
@@ -379,14 +379,14 @@  discard block
 block discarded – undo
379 379
 	// s'asurer qu'on a pas deja fait la manip !
380 380
 	if ($GLOBALS['visiteur_session']['id_auteur'] > 0 && sql_countsel('spip_auteurs', 'id_auteur>0')) {
381 381
 		spip_logger('dump')->notice(
382
-			'Conserver copieur dans id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'] . " pour le serveur '$serveur'",
382
+			'Conserver copieur dans id_auteur='.$GLOBALS['visiteur_session']['id_auteur']." pour le serveur '$serveur'",
383 383
 		);
384 384
 		sql_delete('spip_auteurs', 'id_auteur<0', $serveur);
385 385
 		if ($move) {
386 386
 			sql_updateq(
387 387
 				'spip_auteurs',
388 388
 				['id_auteur' => -$GLOBALS['visiteur_session']['id_auteur']],
389
-				'id_auteur=' . (int) $GLOBALS['visiteur_session']['id_auteur'],
389
+				'id_auteur='.(int) $GLOBALS['visiteur_session']['id_auteur'],
390 390
 				[],
391 391
 				$serveur
392 392
 			);
@@ -394,7 +394,7 @@  discard block
 block discarded – undo
394 394
 			$row = sql_fetsel(
395 395
 				'*',
396 396
 				'spip_auteurs',
397
-				'id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'],
397
+				'id_auteur='.$GLOBALS['visiteur_session']['id_auteur'],
398 398
 				'',
399 399
 				'',
400 400
 				'',
@@ -477,7 +477,7 @@  discard block
 block discarded – undo
477 477
 		$desc_dest = sql_showtable($table, true, $serveur_dest);
478 478
 	}
479 479
 	if (!$desc_dest) {
480
-		spip_logger('dump')->error("Erreur creation '$table' sur serveur '$serveur_dest'" . var_export($desc, 1));
480
+		spip_logger('dump')->error("Erreur creation '$table' sur serveur '$serveur_dest'".var_export($desc, 1));
481 481
 	}
482 482
 
483 483
 	return $desc_dest;
@@ -540,7 +540,7 @@  discard block
 block discarded – undo
540 540
 	$logger = spip_logger('dump');
541 541
 
542 542
 	$logger->notice(
543
-		'Copier ' . count($tables) . " tables de '$serveur_source' vers '$serveur_dest'",
543
+		'Copier '.count($tables)." tables de '$serveur_source' vers '$serveur_dest'",
544 544
 	);
545 545
 
546 546
 	if (!$inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true)) {
@@ -595,7 +595,7 @@  discard block
 block discarded – undo
595 595
 		$tables = array_diff($tables, ['spip_meta']);
596 596
 		$tables[] = 'spip_meta';
597 597
 	}
598
-	$logger->info('Tables a copier :' . implode(', ', $tables));
598
+	$logger->info('Tables a copier :'.implode(', ', $tables));
599 599
 
600 600
 	$trouver_table = charger_fonction('trouver_table', 'base');
601 601
 
@@ -674,7 +674,7 @@  discard block
 block discarded – undo
674 674
 					if ($n == $status['tables_copiees'][$table]) {
675 675
 						break;
676 676
 					}
677
-					$logger->notice("recopie $table " . $status['tables_copiees'][$table]);
677
+					$logger->notice("recopie $table ".$status['tables_copiees'][$table]);
678 678
 					if ($callback_progression) {
679 679
 						$callback_progression($status['tables_copiees'][$table], 0, $table);
680 680
 					}
@@ -689,19 +689,19 @@  discard block
 block discarded – undo
689 689
 				}
690 690
 				$status['tables_copiees'][$table] = ($status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : 'zero');
691 691
 				ecrire_fichier($status_file, serialize($status));
692
-				$logger->info('tables_recopiees ' . implode(',', array_keys($status['tables_copiees'])));
692
+				$logger->info('tables_recopiees '.implode(',', array_keys($status['tables_copiees'])));
693 693
 				if ($callback_progression) {
694 694
 					$callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table);
695 695
 				}
696 696
 			} else {
697 697
 				if ($status['tables_copiees'][$table] < 0) {
698
-					$logger->info("Table $table deja copiee : " . $status['tables_copiees'][$table]);
698
+					$logger->info("Table $table deja copiee : ".$status['tables_copiees'][$table]);
699 699
 				}
700 700
 				if ($callback_progression) {
701 701
 					$callback_progression(
702 702
 						0,
703 703
 						$status['tables_copiees'][$table],
704
-						"$table" . ((is_numeric($status['tables_copiees'][$table]) && $status['tables_copiees'][$table] >= 0) ? '[Echec]' : '')
704
+						"$table".((is_numeric($status['tables_copiees'][$table]) && $status['tables_copiees'][$table] >= 0) ? '[Echec]' : '')
705 705
 					);
706 706
 				}
707 707
 			}
@@ -716,9 +716,9 @@  discard block
 block discarded – undo
716 716
 	// abandonner
717 717
 	if ((is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0) < count($tables)) {
718 718
 		$logger->error(
719
-			'Nombre de tables copiees incorrect : ' . (is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0) . '/' . count($tables),
719
+			'Nombre de tables copiees incorrect : '.(is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0).'/'.count($tables),
720 720
 		);
721
-		$status['errors'][] = 'Nombre de tables copiees incorrect : ' . (is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0) . '/' . count($tables);
721
+		$status['errors'][] = 'Nombre de tables copiees incorrect : '.(is_countable($status['tables_copiees']) ? count($status['tables_copiees']) : 0).'/'.count($tables);
722 722
 		ecrire_fichier($status_file, serialize($status));
723 723
 	}
724 724
 
@@ -750,7 +750,7 @@  discard block
 block discarded – undo
750 750
 	$nb = sql_countsel($table, '', '', '', $serveur_dest);
751 751
 	if ($nb - $nb1 < count($rows)) {
752 752
 		spip_logger('dump')->notice(
753
-			'base_inserer_copie : ' . ($nb - $nb1) . ' insertions au lieu de ' . count($rows) . '. On retente 1 par 1',
753
+			'base_inserer_copie : '.($nb - $nb1).' insertions au lieu de '.count($rows).'. On retente 1 par 1',
754 754
 		);
755 755
 		foreach ($rows as $row) {
756 756
 			// si l'enregistrement est deja en base, ca fera un echec ou un doublon
@@ -761,7 +761,7 @@  discard block
 block discarded – undo
761 761
 		$nb = sql_countsel($table, '', '', '', $serveur_dest);
762 762
 		if ($nb - $nb1 < count($rows)) {
763 763
 			spip_logger('dump')->error(
764
-				'base_inserer_copie : ' . ($nb - $nb1) . ' insertions au lieu de ' . count($rows) . ' apres insertion 1 par 1',
764
+				'base_inserer_copie : '.($nb - $nb1).' insertions au lieu de '.count($rows).' apres insertion 1 par 1',
765 765
 			);
766 766
 			$r = false;
767 767
 		}
Please login to merge, or discard this patch.