Completed
Push — master ( ad4f09...6d727b )
by cam
01:02 queued 13s
created
ecrire/inc/presentation.php 2 patches
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Presentation
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/presentation_mini');
@@ -31,141 +31,141 @@  discard block
 block discarded – undo
31 31
 include_spip('inc/filtres_alertes');
32 32
 
33 33
 function debut_cadre($style, $icone = '', $fonction = '', $titre = '', $id = '', $class = '', $padding = true) {
34
-	$fond = null;
35
-	$style_mapping = [
36
-		'r' => 'simple',
37
-		'e' => 'raccourcis',
38
-		'couleur' => 'basic highlight',
39
-		'couleur-foncee' => 'basic highlight',
40
-		'trait-couleur' => 'important',
41
-		'alerte' => 'notice',
42
-		'info' => 'info',
43
-		'sous_rub' => 'simple sous-rub'
44
-	];
45
-	$style_titre_mapping = ['couleur' => 'topper', 'trait-couleur' => 'section'];
46
-	$c = $style_mapping[$style] ?? 'simple';
47
-	$class = $c . ($class ? " $class" : '');
48
-	if (!$padding) {
49
-		$class .= ($class ? ' ' : '') . 'no-padding';
50
-	}
51
-
52
-	//($id?"id='$id' ":"")
53
-	if (strlen($icone) > 1) {
54
-		if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
55
-			[$fond, $fonction] = $icone_renommer($icone, $fonction);
56
-		}
57
-		$size = 24;
58
-		if (preg_match('/-([0-9]{1,3})[.](gif|png)$/i', $fond, $match)) {
59
-			$size = $match[1];
60
-		}
61
-		if ($fonction) {
62
-			// 2 images pour composer l'icone : le fond (article) en background,
63
-			// la fonction (new) en image
64
-			$icone = http_img_pack($fonction, '', "class='cadre-icone' width='$size' height='$size'\n" .
65
-				http_style_background($fond, 'no-repeat center center', $size));
66
-		} else {
67
-			$icone = http_img_pack($fond, '', "class='cadre-icone' width='$size' height='$size'");
68
-		}
69
-		$titre = $icone . $titre;
70
-	}
71
-
72
-	return boite_ouvrir($titre, $class, $style_titre_mapping[$style] ?? '', $id);
34
+    $fond = null;
35
+    $style_mapping = [
36
+        'r' => 'simple',
37
+        'e' => 'raccourcis',
38
+        'couleur' => 'basic highlight',
39
+        'couleur-foncee' => 'basic highlight',
40
+        'trait-couleur' => 'important',
41
+        'alerte' => 'notice',
42
+        'info' => 'info',
43
+        'sous_rub' => 'simple sous-rub'
44
+    ];
45
+    $style_titre_mapping = ['couleur' => 'topper', 'trait-couleur' => 'section'];
46
+    $c = $style_mapping[$style] ?? 'simple';
47
+    $class = $c . ($class ? " $class" : '');
48
+    if (!$padding) {
49
+        $class .= ($class ? ' ' : '') . 'no-padding';
50
+    }
51
+
52
+    //($id?"id='$id' ":"")
53
+    if (strlen($icone) > 1) {
54
+        if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
55
+            [$fond, $fonction] = $icone_renommer($icone, $fonction);
56
+        }
57
+        $size = 24;
58
+        if (preg_match('/-([0-9]{1,3})[.](gif|png)$/i', $fond, $match)) {
59
+            $size = $match[1];
60
+        }
61
+        if ($fonction) {
62
+            // 2 images pour composer l'icone : le fond (article) en background,
63
+            // la fonction (new) en image
64
+            $icone = http_img_pack($fonction, '', "class='cadre-icone' width='$size' height='$size'\n" .
65
+                http_style_background($fond, 'no-repeat center center', $size));
66
+        } else {
67
+            $icone = http_img_pack($fond, '', "class='cadre-icone' width='$size' height='$size'");
68
+        }
69
+        $titre = $icone . $titre;
70
+    }
71
+
72
+    return boite_ouvrir($titre, $class, $style_titre_mapping[$style] ?? '', $id);
73 73
 }
74 74
 
75 75
 function fin_cadre() {
76
- return boite_fermer();
76
+    return boite_fermer();
77 77
 }
78 78
 
79 79
 
80 80
 function debut_cadre_relief(
81
-	$icone = '',
82
-	$dummy = '',
83
-	$fonction = '',
84
-	$titre = '',
85
-	$id = '',
86
-	$class = ''
81
+    $icone = '',
82
+    $dummy = '',
83
+    $fonction = '',
84
+    $titre = '',
85
+    $id = '',
86
+    $class = ''
87 87
 ) {
88
-	return debut_cadre('r', $icone, $fonction, $titre, $id, $class);
88
+    return debut_cadre('r', $icone, $fonction, $titre, $id, $class);
89 89
 }
90 90
 
91 91
 function fin_cadre_relief() {
92
- return fin_cadre();
92
+    return fin_cadre();
93 93
 }
94 94
 
95 95
 function debut_cadre_enfonce(
96
-	$icone = '',
97
-	$dummy = '',
98
-	$fonction = '',
99
-	$titre = '',
100
-	$id = '',
101
-	$class = ''
96
+    $icone = '',
97
+    $dummy = '',
98
+    $fonction = '',
99
+    $titre = '',
100
+    $id = '',
101
+    $class = ''
102 102
 ) {
103
-	return debut_cadre('e', $icone, $fonction, $titre, $id, $class);
103
+    return debut_cadre('e', $icone, $fonction, $titre, $id, $class);
104 104
 }
105 105
 
106 106
 function fin_cadre_enfonce() {
107
- return fin_cadre();
107
+    return fin_cadre();
108 108
 }
109 109
 
110 110
 function debut_cadre_sous_rub(
111
-	$icone = '',
112
-	$dummy = '',
113
-	$fonction = '',
114
-	$titre = '',
115
-	$id = '',
116
-	$class = ''
111
+    $icone = '',
112
+    $dummy = '',
113
+    $fonction = '',
114
+    $titre = '',
115
+    $id = '',
116
+    $class = ''
117 117
 ) {
118
-	return debut_cadre('sous_rub', $icone, $fonction, $titre, $id, $class);
118
+    return debut_cadre('sous_rub', $icone, $fonction, $titre, $id, $class);
119 119
 }
120 120
 
121 121
 function fin_cadre_sous_rub() {
122
- return fin_cadre();
122
+    return fin_cadre();
123 123
 }
124 124
 
125 125
 function debut_cadre_couleur(
126
-	$icone = '',
127
-	$dummy = '',
128
-	$fonction = '',
129
-	$titre = '',
130
-	$id = '',
131
-	$class = ''
126
+    $icone = '',
127
+    $dummy = '',
128
+    $fonction = '',
129
+    $titre = '',
130
+    $id = '',
131
+    $class = ''
132 132
 ) {
133
-	return debut_cadre('couleur', $icone, $fonction, $titre, $id, $class);
133
+    return debut_cadre('couleur', $icone, $fonction, $titre, $id, $class);
134 134
 }
135 135
 
136 136
 function fin_cadre_couleur() {
137
- return fin_cadre();
137
+    return fin_cadre();
138 138
 }
139 139
 
140 140
 function debut_cadre_trait_couleur(
141
-	$icone = '',
142
-	$dummy = '',
143
-	$fonction = '',
144
-	$titre = '',
145
-	$id = '',
146
-	$class = ''
141
+    $icone = '',
142
+    $dummy = '',
143
+    $fonction = '',
144
+    $titre = '',
145
+    $id = '',
146
+    $class = ''
147 147
 ) {
148
-	return debut_cadre('trait-couleur', $icone, $fonction, $titre, $id, $class);
148
+    return debut_cadre('trait-couleur', $icone, $fonction, $titre, $id, $class);
149 149
 }
150 150
 
151 151
 function fin_cadre_trait_couleur() {
152
- return fin_cadre();
152
+    return fin_cadre();
153 153
 }
154 154
 
155 155
 function debut_boite_alerte() {
156
- return debut_cadre('alerte', '', '', '', '', '');
156
+    return debut_cadre('alerte', '', '', '', '', '');
157 157
 }
158 158
 
159 159
 function fin_boite_alerte() {
160
- return fin_cadre();
160
+    return fin_cadre();
161 161
 }
162 162
 
163 163
 function debut_boite_info() {
164
- return debut_cadre('info', '', '', '', '', '');
164
+    return debut_cadre('info', '', '', '', '', '');
165 165
 }
166 166
 
167 167
 function fin_boite_info() {
168
- return fin_cadre();
168
+    return fin_cadre();
169 169
 }
170 170
 
171 171
 /**
@@ -176,17 +176,17 @@  discard block
 block discarded – undo
176 176
  * @return string Code PHP.
177 177
  **/
178 178
 function gros_titre(
179
-	$titre,
180
-	$ze_logo = ''
179
+    $titre,
180
+    $ze_logo = ''
181 181
 ) {
182
-	return "<h1 class = 'grostitre'>" . $ze_logo . ' ' . typo($titre) . "</h1>\n";
182
+    return "<h1 class = 'grostitre'>" . $ze_logo . ' ' . typo($titre) . "</h1>\n";
183 183
 }
184 184
 
185 185
 // La boite des raccourcis
186 186
 // Se place a droite si l'ecran est en mode panoramique.
187 187
 function bloc_des_raccourcis($bloc) {
188
-	return creer_colonne_droite()
189
-	. boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis') . $bloc . boite_fermer();
188
+    return creer_colonne_droite()
189
+    . boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis') . $bloc . boite_fermer();
190 190
 }
191 191
 
192 192
 //
@@ -196,18 +196,18 @@  discard block
 block discarded – undo
196 196
 // Fonctions onglets
197 197
 // @param string $sous_classe	prend la valeur second pour definir les onglet de deuxieme niveau
198 198
 function debut_onglet($classe = 'barre_onglet') {
199
- return "<div class = '$classe clearfix'><ul>\n";
199
+    return "<div class = '$classe clearfix'><ul>\n";
200 200
 }
201 201
 
202 202
 function fin_onglet() {
203
- return "</ul></div>\n";
203
+    return "</ul></div>\n";
204 204
 }
205 205
 
206 206
 function onglet($texte, $lien, $onglet_ref, $onglet, $icone = '') {
207
-	return '<li>'
208
-	. ($icone ? http_img_pack($icone, '', " class='cadre-icone'") : '')
209
-	. lien_ou_expose($lien, $texte, $onglet == $onglet_ref)
210
-	. '</li>';
207
+    return '<li>'
208
+    . ($icone ? http_img_pack($icone, '', " class='cadre-icone'") : '')
209
+    . lien_ou_expose($lien, $texte, $onglet == $onglet_ref)
210
+    . '</li>';
211 211
 }
212 212
 
213 213
 /**
@@ -239,14 +239,14 @@  discard block
 block discarded – undo
239 239
  *     Code HTML du lien
240 240
  **/
241 241
 function icone_verticale($texte, $lien, $fond, $fonction = '', $align = '', $javascript = '') {
242
-	// cas d'ajax_action_auteur: faut defaire le boulot
243
-	// (il faudrait fusionner avec le cas $javascript)
244
-	if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
245
-		[$x, $lien, $atts, $texte] = $r;
246
-		$javascript .= $atts;
247
-	}
248
-
249
-	return icone_base($lien, $texte, $fond, $fonction, "verticale $align", $javascript);
242
+    // cas d'ajax_action_auteur: faut defaire le boulot
243
+    // (il faudrait fusionner avec le cas $javascript)
244
+    if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
245
+        [$x, $lien, $atts, $texte] = $r;
246
+        $javascript .= $atts;
247
+    }
248
+
249
+    return icone_base($lien, $texte, $fond, $fonction, "verticale $align", $javascript);
250 250
 }
251 251
 
252 252
 /**
@@ -271,15 +271,15 @@  discard block
 block discarded – undo
271 271
  *     Code HTML du lien
272 272
  **/
273 273
 function icone_horizontale($texte, $lien, $fond, $fonction = '', $dummy = '', $javascript = '') {
274
-	$retour = '';
275
-	// cas d'ajax_action_auteur: faut defaire le boulot
276
-	// (il faudrait fusionner avec le cas $javascript)
277
-	if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
278
-		[$x, $lien, $atts, $texte] = $r;
279
-		$javascript .= $atts;
280
-	}
274
+    $retour = '';
275
+    // cas d'ajax_action_auteur: faut defaire le boulot
276
+    // (il faudrait fusionner avec le cas $javascript)
277
+    if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
278
+        [$x, $lien, $atts, $texte] = $r;
279
+        $javascript .= $atts;
280
+    }
281 281
 
282
-	$retour = icone_base($lien, $texte, $fond, $fonction, 'horizontale', $javascript);
282
+    $retour = icone_base($lien, $texte, $fond, $fonction, 'horizontale', $javascript);
283 283
 
284
-	return $retour;
284
+    return $retour;
285 285
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -44,9 +44,9 @@  discard block
 block discarded – undo
44 44
 	];
45 45
 	$style_titre_mapping = ['couleur' => 'topper', 'trait-couleur' => 'section'];
46 46
 	$c = $style_mapping[$style] ?? 'simple';
47
-	$class = $c . ($class ? " $class" : '');
47
+	$class = $c.($class ? " $class" : '');
48 48
 	if (!$padding) {
49
-		$class .= ($class ? ' ' : '') . 'no-padding';
49
+		$class .= ($class ? ' ' : '').'no-padding';
50 50
 	}
51 51
 
52 52
 	//($id?"id='$id' ":"")
@@ -61,12 +61,12 @@  discard block
 block discarded – undo
61 61
 		if ($fonction) {
62 62
 			// 2 images pour composer l'icone : le fond (article) en background,
63 63
 			// la fonction (new) en image
64
-			$icone = http_img_pack($fonction, '', "class='cadre-icone' width='$size' height='$size'\n" .
64
+			$icone = http_img_pack($fonction, '', "class='cadre-icone' width='$size' height='$size'\n".
65 65
 				http_style_background($fond, 'no-repeat center center', $size));
66 66
 		} else {
67 67
 			$icone = http_img_pack($fond, '', "class='cadre-icone' width='$size' height='$size'");
68 68
 		}
69
-		$titre = $icone . $titre;
69
+		$titre = $icone.$titre;
70 70
 	}
71 71
 
72 72
 	return boite_ouvrir($titre, $class, $style_titre_mapping[$style] ?? '', $id);
@@ -179,14 +179,14 @@  discard block
 block discarded – undo
179 179
 	$titre,
180 180
 	$ze_logo = ''
181 181
 ) {
182
-	return "<h1 class = 'grostitre'>" . $ze_logo . ' ' . typo($titre) . "</h1>\n";
182
+	return "<h1 class = 'grostitre'>".$ze_logo.' '.typo($titre)."</h1>\n";
183 183
 }
184 184
 
185 185
 // La boite des raccourcis
186 186
 // Se place a droite si l'ecran est en mode panoramique.
187 187
 function bloc_des_raccourcis($bloc) {
188 188
 	return creer_colonne_droite()
189
-	. boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis') . $bloc . boite_fermer();
189
+	. boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis').$bloc.boite_fermer();
190 190
 }
191 191
 
192 192
 //
Please login to merge, or discard this patch.
ecrire/inc/urls.php 2 patches
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -203,7 +203,7 @@  discard block
 block discarded – undo
203 203
 	) {
204 204
 		$r = nettoyer_url_page($url, $contexte);
205 205
 		if ($r) {
206
-			[$contexte, $type, , , $suite] = $r;
206
+			[$contexte, $type,,, $suite] = $r;
207 207
 			$_id = id_table_objet($type);
208 208
 			$id_objet = $contexte[$_id];
209 209
 			$url_propre = generer_objet_url($id_objet, $type);
@@ -274,9 +274,9 @@  discard block
 block discarded – undo
274 274
  */
275 275
 function nettoyer_url_page($url, $contexte = []) {
276 276
 	$url_objets = urls_liste_objets();
277
-	$raccourci_url_page_html = ',^(?:[^?]*/)?(' . $url_objets . ')([0-9]+)(?:\.html)?([?&].*)?$,';
278
-	$raccourci_url_page_id = ',^(?:[^?]*/)?(' . $url_objets . ')\.php3?[?]id_\1=([0-9]+)([?&].*)?$,';
279
-	$raccourci_url_page_spip = ',^(?:[^?]*/)?(?:spip[.]php)?[?](' . $url_objets . ')([0-9]+)=?(&.*)?$,';
277
+	$raccourci_url_page_html = ',^(?:[^?]*/)?('.$url_objets.')([0-9]+)(?:\.html)?([?&].*)?$,';
278
+	$raccourci_url_page_id = ',^(?:[^?]*/)?('.$url_objets.')\.php3?[?]id_\1=([0-9]+)([?&].*)?$,';
279
+	$raccourci_url_page_spip = ',^(?:[^?]*/)?(?:spip[.]php)?[?]('.$url_objets.')([0-9]+)=?(&.*)?$,';
280 280
 
281 281
 	if (
282 282
 		preg_match($raccourci_url_page_html, $url, $regs)
@@ -314,11 +314,11 @@  discard block
 block discarded – undo
314 314
 	$id = intval($id);
315 315
 	if (!isset($furls[$objet])) {
316 316
 		if (
317
-			function_exists($f = 'generer_' . $objet . '_url_ecrire')
317
+			function_exists($f = 'generer_'.$objet.'_url_ecrire')
318 318
 			// ou definie par un plugin
319 319
 			or $f = charger_fonction($f, 'urls', true)
320 320
 			// deprecated
321
-			or function_exists($f = 'generer_url_ecrire_' . $objet) or $f = charger_fonction($f, 'urls', true)
321
+			or function_exists($f = 'generer_url_ecrire_'.$objet) or $f = charger_fonction($f, 'urls', true)
322 322
 		) {
323 323
 			$furls[$objet] = $f;
324 324
 		} else {
@@ -336,12 +336,12 @@  discard block
 block discarded – undo
336 336
 	if ($public or $connect) {
337 337
 		return generer_objet_url_absolue($id, $objet, $args, $ancre, $public, '', $connect);
338 338
 	}
339
-	$a = id_table_objet($objet) . '=' . intval($id);
339
+	$a = id_table_objet($objet).'='.intval($id);
340 340
 	if (!function_exists('objet_info')) {
341 341
 		include_spip('inc/filtres');
342 342
 	}
343 343
 
344
-	return generer_url_ecrire(objet_info($objet, 'url_voir'), $a . ($args ? "&$args" : '')) . ($ancre ? "#$ancre" : '');
344
+	return generer_url_ecrire(objet_info($objet, 'url_voir'), $a.($args ? "&$args" : '')).($ancre ? "#$ancre" : '');
345 345
 }
346 346
 
347 347
 /**
Please login to merge, or discard this patch.
Indentation   +205 added lines, -205 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 include_spip('base/objets');
23 23
 
@@ -57,106 +57,106 @@  discard block
 block discarded – undo
57 57
  *
58 58
  */
59 59
 function urls_decoder_url($url, $fond = '', $contexte = [], $assembler = false) {
60
-	static $current_base = null;
60
+    static $current_base = null;
61 61
 
62
-	// les anciennes fonctions modifient directement les globales
63
-	// on les sauve avant l'appel, et on les retablit apres !
64
-	$save = [
65
-		$GLOBALS['fond'] ?? null,
66
-		$GLOBALS['contexte'] ?? null,
67
-		$_SERVER['REDIRECT_url_propre'] ?? null,
68
-		$_ENV['url_propre'] ?? null,
69
-		$GLOBALS['profondeur_url']
70
-	];
62
+    // les anciennes fonctions modifient directement les globales
63
+    // on les sauve avant l'appel, et on les retablit apres !
64
+    $save = [
65
+        $GLOBALS['fond'] ?? null,
66
+        $GLOBALS['contexte'] ?? null,
67
+        $_SERVER['REDIRECT_url_propre'] ?? null,
68
+        $_ENV['url_propre'] ?? null,
69
+        $GLOBALS['profondeur_url']
70
+    ];
71 71
 
72
-	if (is_null($current_base)) {
73
-		include_spip('inc/filtres_mini');
74
-		// le decodage des urls se fait toujours par rapport au site public
75
-		$current_base = url_absolue(_DIR_RACINE ?: './');
76
-	}
77
-	if (strncmp($url, $current_base, strlen($current_base)) == 0) {
78
-		$url = substr($url, strlen($current_base));
79
-	}
72
+    if (is_null($current_base)) {
73
+        include_spip('inc/filtres_mini');
74
+        // le decodage des urls se fait toujours par rapport au site public
75
+        $current_base = url_absolue(_DIR_RACINE ?: './');
76
+    }
77
+    if (strncmp($url, $current_base, strlen($current_base)) == 0) {
78
+        $url = substr($url, strlen($current_base));
79
+    }
80 80
 
81
-	// si on est en train d'assembler la page principale,
82
-	// recuperer l'url depuis les globales url propres si fournies
83
-	// sinon extraire la bonne portion d'url
84
-	if ($assembler) {
85
-		if (isset($_SERVER['REDIRECT_url_propre'])) {
86
-			$url = $_SERVER['REDIRECT_url_propre'];
87
-		} elseif (isset($_ENV['url_propre'])) {
88
-			$url = $_ENV['url_propre'];
89
-		} else {
90
-			$qs = explode('?', $url);
91
-			// ne prendre que le segment d'url qui correspond, en fonction de la profondeur calculee
92
-			$url = ltrim($qs[0], '/');
93
-			$url = explode('/', $url);
94
-			while (count($url) > $GLOBALS['profondeur_url'] + 1) {
95
-				array_shift($url);
96
-			}
97
-			$qs[0] = implode('/', $url);
98
-			$url = implode('?', $qs);
99
-		}
100
-	}
81
+    // si on est en train d'assembler la page principale,
82
+    // recuperer l'url depuis les globales url propres si fournies
83
+    // sinon extraire la bonne portion d'url
84
+    if ($assembler) {
85
+        if (isset($_SERVER['REDIRECT_url_propre'])) {
86
+            $url = $_SERVER['REDIRECT_url_propre'];
87
+        } elseif (isset($_ENV['url_propre'])) {
88
+            $url = $_ENV['url_propre'];
89
+        } else {
90
+            $qs = explode('?', $url);
91
+            // ne prendre que le segment d'url qui correspond, en fonction de la profondeur calculee
92
+            $url = ltrim($qs[0], '/');
93
+            $url = explode('/', $url);
94
+            while (count($url) > $GLOBALS['profondeur_url'] + 1) {
95
+                array_shift($url);
96
+            }
97
+            $qs[0] = implode('/', $url);
98
+            $url = implode('?', $qs);
99
+        }
100
+    }
101 101
 
102
-	unset($_SERVER['REDIRECT_url_propre']);
103
-	unset($_ENV['url_propre']);
104
-	include_spip('inc/filtres_mini');
105
-	if (strpos($url, '://') === false) {
106
-		$GLOBALS['profondeur_url'] = substr_count(ltrim(resolve_path("/$url"), '/'), '/');
107
-	} else {
108
-		$GLOBALS['profondeur_url'] = max(0, substr_count($url, '/') - substr_count($current_base, '/'));
109
-	}
102
+    unset($_SERVER['REDIRECT_url_propre']);
103
+    unset($_ENV['url_propre']);
104
+    include_spip('inc/filtres_mini');
105
+    if (strpos($url, '://') === false) {
106
+        $GLOBALS['profondeur_url'] = substr_count(ltrim(resolve_path("/$url"), '/'), '/');
107
+    } else {
108
+        $GLOBALS['profondeur_url'] = max(0, substr_count($url, '/') - substr_count($current_base, '/'));
109
+    }
110 110
 
111
-	$url_redirect = '';
112
-	$decoder = charger_fonction_url('decoder');
113
-	if ($decoder) {
114
-		$a = $decoder($url, $fond, $contexte);
115
-		if (is_array($a)) {
116
-			[$ncontexte, $type, $url_redirect, $nfond] = array_pad($a, 4, null);
117
-			$url_redirect ??= '';
118
-			if ($url_redirect === $url) {
119
-				$url_redirect = '';
120
-			} // securite pour eviter une redirection infinie
121
-			if ($assembler and strlen($url_redirect)) {
122
-				spip_log("Redirige $url vers $url_redirect");
123
-				include_spip('inc/headers');
124
-				redirige_par_entete($url_redirect, '', 301);
125
-			}
126
-			if (isset($nfond)) {
127
-				$fond = $nfond;
128
-			} else {
129
-				if (
130
-					$fond == ''
131
-					or $fond == 'type_urls' /* compat avec htaccess 2.0.0 */
132
-				) {
133
-					$fond = $type;
134
-				}
135
-			}
136
-			if (isset($ncontexte)) {
137
-				$contexte = $ncontexte;
138
-			}
139
-			if (defined('_DEFINIR_CONTEXTE_TYPE') and _DEFINIR_CONTEXTE_TYPE) {
140
-				$contexte['type'] = $type;
141
-			}
142
-			if (!defined('_DEFINIR_CONTEXTE_TYPE_PAGE') or _DEFINIR_CONTEXTE_TYPE_PAGE) {
143
-				$contexte['type-page'] = $type;
144
-			}
145
-		}
146
-	}
111
+    $url_redirect = '';
112
+    $decoder = charger_fonction_url('decoder');
113
+    if ($decoder) {
114
+        $a = $decoder($url, $fond, $contexte);
115
+        if (is_array($a)) {
116
+            [$ncontexte, $type, $url_redirect, $nfond] = array_pad($a, 4, null);
117
+            $url_redirect ??= '';
118
+            if ($url_redirect === $url) {
119
+                $url_redirect = '';
120
+            } // securite pour eviter une redirection infinie
121
+            if ($assembler and strlen($url_redirect)) {
122
+                spip_log("Redirige $url vers $url_redirect");
123
+                include_spip('inc/headers');
124
+                redirige_par_entete($url_redirect, '', 301);
125
+            }
126
+            if (isset($nfond)) {
127
+                $fond = $nfond;
128
+            } else {
129
+                if (
130
+                    $fond == ''
131
+                    or $fond == 'type_urls' /* compat avec htaccess 2.0.0 */
132
+                ) {
133
+                    $fond = $type;
134
+                }
135
+            }
136
+            if (isset($ncontexte)) {
137
+                $contexte = $ncontexte;
138
+            }
139
+            if (defined('_DEFINIR_CONTEXTE_TYPE') and _DEFINIR_CONTEXTE_TYPE) {
140
+                $contexte['type'] = $type;
141
+            }
142
+            if (!defined('_DEFINIR_CONTEXTE_TYPE_PAGE') or _DEFINIR_CONTEXTE_TYPE_PAGE) {
143
+                $contexte['type-page'] = $type;
144
+            }
145
+        }
146
+    }
147 147
 
148
-	// retablir les globales
149
-	[$GLOBALS['fond'], $GLOBALS['contexte'], $_SERVER['REDIRECT_url_propre'], $_ENV['url_propre'], $GLOBALS['profondeur_url']] = $save;
148
+    // retablir les globales
149
+    [$GLOBALS['fond'], $GLOBALS['contexte'], $_SERVER['REDIRECT_url_propre'], $_ENV['url_propre'], $GLOBALS['profondeur_url']] = $save;
150 150
 
151
-	// vider les globales url propres qui ne doivent plus etre utilisees en cas
152
-	// d'inversion url => objet
153
-	// maintenir pour compat ?
154
-	#if ($assembler) {
155
-	#	unset($_SERVER['REDIRECT_url_propre']);
156
-	#	unset($_ENV['url_propre']);
157
-	#}
151
+    // vider les globales url propres qui ne doivent plus etre utilisees en cas
152
+    // d'inversion url => objet
153
+    // maintenir pour compat ?
154
+    #if ($assembler) {
155
+    #	unset($_SERVER['REDIRECT_url_propre']);
156
+    #	unset($_ENV['url_propre']);
157
+    #}
158 158
 
159
-	return [$fond, $contexte, $url_redirect];
159
+    return [$fond, $contexte, $url_redirect];
160 160
 }
161 161
 
162 162
 /**
@@ -169,20 +169,20 @@  discard block
 block discarded – undo
169 169
  * @return array|false|string
170 170
  */
171 171
 function urls_transition_retrouver_anciennes_url_propres(string $url_propre, string $entite, array $contexte = []): array {
172
-	if ($url_propre) {
173
-		if ($GLOBALS['profondeur_url'] <= 0) {
174
-			$urls_anciennes = charger_fonction_url('decoder', 'propres');
175
-		} else {
176
-			$urls_anciennes = charger_fonction_url('decoder', 'arbo');
177
-		}
172
+    if ($url_propre) {
173
+        if ($GLOBALS['profondeur_url'] <= 0) {
174
+            $urls_anciennes = charger_fonction_url('decoder', 'propres');
175
+        } else {
176
+            $urls_anciennes = charger_fonction_url('decoder', 'arbo');
177
+        }
178 178
 
179
-		if ($urls_anciennes) {
180
-			$urls_anciennes = $urls_anciennes($url_propre, $entite, $contexte);
181
-		}
182
-		return $urls_anciennes ?: [];
183
-	}
179
+        if ($urls_anciennes) {
180
+            $urls_anciennes = $urls_anciennes($url_propre, $entite, $contexte);
181
+        }
182
+        return $urls_anciennes ?: [];
183
+    }
184 184
 
185
-	return [];
185
+    return [];
186 186
 }
187 187
 
188 188
 /**
@@ -195,41 +195,41 @@  discard block
 block discarded – undo
195 195
  * @return array|false|string
196 196
  */
197 197
 function urls_transition_retrouver_anciennes_url_html(string $url, string $entite, array $contexte = []): array {
198
-	// Migration depuis anciennes URLs ?
199
-	// traiter les injections domain.tld/spip.php/n/importe/quoi/rubrique23
200
-	if (
201
-		$url
202
-		and $GLOBALS['profondeur_url'] <= 0
203
-	) {
204
-		$r = nettoyer_url_page($url, $contexte);
205
-		if ($r) {
206
-			[$contexte, $type, , , $suite] = $r;
207
-			$_id = id_table_objet($type);
208
-			$id_objet = $contexte[$_id];
209
-			$url_propre = generer_objet_url($id_objet, $type);
210
-			if (
211
-				strlen($url_propre)
212
-				and !strstr($url, (string) $url_propre)
213
-				and (
214
-					objet_test_si_publie($type, $id_objet)
215
-					or (defined('_VAR_PREVIEW') and _VAR_PREVIEW and autoriser('voir', $type, $id_objet))
216
-				)
217
-			) {
218
-				[, $hash] = array_pad(explode('#', $url_propre), 2, '');
219
-				$args = [];
220
-				foreach (array_filter(explode('&', $suite ?? '')) as $fragment) {
221
-					if ($fragment != "$_id=$id_objet") {
222
-						$args[] = $fragment;
223
-					}
224
-				}
225
-				$url_redirect = generer_objet_url($id_objet, $type, join('&', array_filter($args)), $hash);
198
+    // Migration depuis anciennes URLs ?
199
+    // traiter les injections domain.tld/spip.php/n/importe/quoi/rubrique23
200
+    if (
201
+        $url
202
+        and $GLOBALS['profondeur_url'] <= 0
203
+    ) {
204
+        $r = nettoyer_url_page($url, $contexte);
205
+        if ($r) {
206
+            [$contexte, $type, , , $suite] = $r;
207
+            $_id = id_table_objet($type);
208
+            $id_objet = $contexte[$_id];
209
+            $url_propre = generer_objet_url($id_objet, $type);
210
+            if (
211
+                strlen($url_propre)
212
+                and !strstr($url, (string) $url_propre)
213
+                and (
214
+                    objet_test_si_publie($type, $id_objet)
215
+                    or (defined('_VAR_PREVIEW') and _VAR_PREVIEW and autoriser('voir', $type, $id_objet))
216
+                )
217
+            ) {
218
+                [, $hash] = array_pad(explode('#', $url_propre), 2, '');
219
+                $args = [];
220
+                foreach (array_filter(explode('&', $suite ?? '')) as $fragment) {
221
+                    if ($fragment != "$_id=$id_objet") {
222
+                        $args[] = $fragment;
223
+                    }
224
+                }
225
+                $url_redirect = generer_objet_url($id_objet, $type, join('&', array_filter($args)), $hash);
226 226
 
227
-				return [$contexte, $type, $url_redirect, $type];
228
-			}
229
-		}
230
-	}
231
-	/* Fin compatibilite anciennes urls */
232
-	return [];
227
+                return [$contexte, $type, $url_redirect, $type];
228
+            }
229
+        }
230
+    }
231
+    /* Fin compatibilite anciennes urls */
232
+    return [];
233 233
 }
234 234
 
235 235
 /**
@@ -242,24 +242,24 @@  discard block
 block discarded – undo
242 242
  * @return string|array
243 243
  */
244 244
 function urls_liste_objets($preg = true) {
245
-	static $url_objets = null;
246
-	if (is_null($url_objets)) {
247
-		$url_objets = [];
248
-		// recuperer les tables_objets_sql declarees
249
-		$tables_objets = lister_tables_objets_sql();
250
-		foreach ($tables_objets as $t => $infos) {
251
-			if ($infos['page']) {
252
-				$url_objets[] = $infos['type'];
253
-				$url_objets = array_merge($url_objets, $infos['type_surnoms']);
254
-			}
255
-		}
256
-		$url_objets = pipeline('declarer_url_objets', $url_objets);
257
-	}
258
-	if (!$preg) {
259
-		return $url_objets;
260
-	}
245
+    static $url_objets = null;
246
+    if (is_null($url_objets)) {
247
+        $url_objets = [];
248
+        // recuperer les tables_objets_sql declarees
249
+        $tables_objets = lister_tables_objets_sql();
250
+        foreach ($tables_objets as $t => $infos) {
251
+            if ($infos['page']) {
252
+                $url_objets[] = $infos['type'];
253
+                $url_objets = array_merge($url_objets, $infos['type_surnoms']);
254
+            }
255
+        }
256
+        $url_objets = pipeline('declarer_url_objets', $url_objets);
257
+    }
258
+    if (!$preg) {
259
+        return $url_objets;
260
+    }
261 261
 
262
-	return implode('|', array_map('preg_quote', $url_objets));
262
+    return implode('|', array_map('preg_quote', $url_objets));
263 263
 }
264 264
 
265 265
 /**
@@ -273,26 +273,26 @@  discard block
 block discarded – undo
273 273
  * @return array
274 274
  */
275 275
 function nettoyer_url_page($url, $contexte = []) {
276
-	$url_objets = urls_liste_objets();
277
-	$raccourci_url_page_html = ',^(?:[^?]*/)?(' . $url_objets . ')([0-9]+)(?:\.html)?([?&].*)?$,';
278
-	$raccourci_url_page_id = ',^(?:[^?]*/)?(' . $url_objets . ')\.php3?[?]id_\1=([0-9]+)([?&].*)?$,';
279
-	$raccourci_url_page_spip = ',^(?:[^?]*/)?(?:spip[.]php)?[?](' . $url_objets . ')([0-9]+)=?(&.*)?$,';
276
+    $url_objets = urls_liste_objets();
277
+    $raccourci_url_page_html = ',^(?:[^?]*/)?(' . $url_objets . ')([0-9]+)(?:\.html)?([?&].*)?$,';
278
+    $raccourci_url_page_id = ',^(?:[^?]*/)?(' . $url_objets . ')\.php3?[?]id_\1=([0-9]+)([?&].*)?$,';
279
+    $raccourci_url_page_spip = ',^(?:[^?]*/)?(?:spip[.]php)?[?](' . $url_objets . ')([0-9]+)=?(&.*)?$,';
280 280
 
281
-	if (
282
-		preg_match($raccourci_url_page_html, $url, $regs)
283
-		or preg_match($raccourci_url_page_id, $url, $regs)
284
-		or preg_match($raccourci_url_page_spip, $url, $regs)
285
-	) {
286
-		$regs = array_pad($regs, 4, null);
287
-		$type = objet_type($regs[1]);
288
-		$_id = id_table_objet($type);
289
-		$contexte[$_id] = $regs[2];
290
-		$suite = $regs[3];
281
+    if (
282
+        preg_match($raccourci_url_page_html, $url, $regs)
283
+        or preg_match($raccourci_url_page_id, $url, $regs)
284
+        or preg_match($raccourci_url_page_spip, $url, $regs)
285
+    ) {
286
+        $regs = array_pad($regs, 4, null);
287
+        $type = objet_type($regs[1]);
288
+        $_id = id_table_objet($type);
289
+        $contexte[$_id] = $regs[2];
290
+        $suite = $regs[3];
291 291
 
292
-		return [$contexte, $type, null, $type, $suite];
293
-	}
292
+        return [$contexte, $type, null, $type, $suite];
293
+    }
294 294
 
295
-	return [];
295
+    return [];
296 296
 }
297 297
 
298 298
 /**
@@ -310,38 +310,38 @@  discard block
 block discarded – undo
310 310
  * @return string
311 311
  */
312 312
 function generer_objet_url_ecrire($id, string $objet, string $args = '', string $ancre = '', ?bool $public = null, string $connect = ''): string {
313
-	static $furls = [];
314
-	$id = intval($id);
315
-	if (!isset($furls[$objet])) {
316
-		if (
317
-			function_exists($f = 'generer_' . $objet . '_url_ecrire')
318
-			// ou definie par un plugin
319
-			or $f = charger_fonction($f, 'urls', true)
320
-			// deprecated
321
-			or function_exists($f = 'generer_url_ecrire_' . $objet) or $f = charger_fonction($f, 'urls', true)
322
-		) {
323
-			$furls[$objet] = $f;
324
-		} else {
325
-			$furls[$objet] = '';
326
-		}
327
-	}
328
-	if ($furls[$objet]) {
329
-		return $furls[$objet]($id, $args, $ancre, $public, $connect);
330
-	}
331
-	// si pas de flag public fourni
332
-	// le calculer en fonction de la declaration de statut
333
-	if (is_null($public) and !$connect) {
334
-		$public = objet_test_si_publie($objet, $id, $connect);
335
-	}
336
-	if ($public or $connect) {
337
-		return generer_objet_url_absolue($id, $objet, $args, $ancre, $public, '', $connect);
338
-	}
339
-	$a = id_table_objet($objet) . '=' . intval($id);
340
-	if (!function_exists('objet_info')) {
341
-		include_spip('inc/filtres');
342
-	}
313
+    static $furls = [];
314
+    $id = intval($id);
315
+    if (!isset($furls[$objet])) {
316
+        if (
317
+            function_exists($f = 'generer_' . $objet . '_url_ecrire')
318
+            // ou definie par un plugin
319
+            or $f = charger_fonction($f, 'urls', true)
320
+            // deprecated
321
+            or function_exists($f = 'generer_url_ecrire_' . $objet) or $f = charger_fonction($f, 'urls', true)
322
+        ) {
323
+            $furls[$objet] = $f;
324
+        } else {
325
+            $furls[$objet] = '';
326
+        }
327
+    }
328
+    if ($furls[$objet]) {
329
+        return $furls[$objet]($id, $args, $ancre, $public, $connect);
330
+    }
331
+    // si pas de flag public fourni
332
+    // le calculer en fonction de la declaration de statut
333
+    if (is_null($public) and !$connect) {
334
+        $public = objet_test_si_publie($objet, $id, $connect);
335
+    }
336
+    if ($public or $connect) {
337
+        return generer_objet_url_absolue($id, $objet, $args, $ancre, $public, '', $connect);
338
+    }
339
+    $a = id_table_objet($objet) . '=' . intval($id);
340
+    if (!function_exists('objet_info')) {
341
+        include_spip('inc/filtres');
342
+    }
343 343
 
344
-	return generer_url_ecrire(objet_info($objet, 'url_voir'), $a . ($args ? "&$args" : '')) . ($ancre ? "#$ancre" : '');
344
+    return generer_url_ecrire(objet_info($objet, 'url_voir'), $a . ($args ? "&$args" : '')) . ($ancre ? "#$ancre" : '');
345 345
 }
346 346
 
347 347
 /**
@@ -349,5 +349,5 @@  discard block
 block discarded – undo
349 349
  * @see generer_objet_url_ecrire
350 350
  */
351 351
 function generer_url_ecrire_objet($objet, $id, $args = '', $ancre = '', $public = null, string $connect = '') {
352
-	return generer_objet_url_ecrire($id, $objet, $args, $ancre, $public, $connect);
352
+    return generer_objet_url_ecrire($id, $objet, $args, $ancre, $public, $connect);
353 353
 }
Please login to merge, or discard this patch.
ecrire/public/balises.php 3 patches
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -2868,8 +2868,7 @@
 block discarded – undo
2868 2868
 	$_const = interprete_argument_balise(1, $p);
2869 2869
 	if (!strlen($_const ?? '')) {
2870 2870
 		$p->code = "''";
2871
-	}
2872
-	else {
2871
+	} else {
2873 2872
 		$p->code = "(defined($_const)?constant($_const):'')";
2874 2873
 	}
2875 2874
 	$p->interdire_scripts = false;
Please login to merge, or discard this patch.
Spacing   +48 added lines, -48 removed lines patch added patch discarded remove patch
@@ -358,7 +358,7 @@  discard block
 block discarded – undo
358 358
  */
359 359
 function balise_DOSSIER_SQUELETTE_dist($p) {
360 360
 	$code = substr(addslashes(dirname($p->descr['sourcefile'])), strlen(_DIR_RACINE));
361
-	$p->code = "_DIR_RACINE . '$code'" .
361
+	$p->code = "_DIR_RACINE . '$code'".
362 362
 		$p->interdire_scripts = false;
363 363
 
364 364
 	return $p;
@@ -377,7 +377,7 @@  discard block
 block discarded – undo
377 377
  */
378 378
 function balise_SQUELETTE_dist($p) {
379 379
 	$code = addslashes($p->descr['sourcefile']);
380
-	$p->code = "'$code'" .
380
+	$p->code = "'$code'".
381 381
 		$p->interdire_scripts = false;
382 382
 
383 383
 	return $p;
@@ -429,9 +429,9 @@  discard block
 block discarded – undo
429 429
  **/
430 430
 function balise_NOM_SITE_dist($p) {
431 431
 	if (!$p->etoile) {
432
-		$p->code = 'supprimer_numero(calculer_url(' .
433
-			champ_sql('url_site', $p) . ',' .
434
-			champ_sql('nom_site', $p) .
432
+		$p->code = 'supprimer_numero(calculer_url('.
433
+			champ_sql('url_site', $p).','.
434
+			champ_sql('nom_site', $p).
435 435
 			", 'titre', \$connect, false))";
436 436
 	} else {
437 437
 		$p->code = champ_sql('nom_site', $p);
@@ -582,8 +582,8 @@  discard block
 block discarded – undo
582 582
  *     Pile complétée par le code à générer
583 583
  **/
584 584
 function balise_POPULARITE_ABSOLUE_dist($p) {
585
-	$p->code = 'ceil(' .
586
-		champ_sql('popularite', $p) .
585
+	$p->code = 'ceil('.
586
+		champ_sql('popularite', $p).
587 587
 		')';
588 588
 	$p->interdire_scripts = false;
589 589
 
@@ -664,7 +664,7 @@  discard block
 block discarded – undo
664 664
 	$p->code = index_pile($p->id_boucle, 'valeur', $p->boucles, $b);
665 665
 ;
666 666
 	if (($v = interprete_argument_balise(1, $p)) !== null) {
667
-		$p->code = 'table_valeur(' . $p->code . ', ' . $v . ')';
667
+		$p->code = 'table_valeur('.$p->code.', '.$v.')';
668 668
 	}
669 669
 	$p->interdire_scripts = true;
670 670
 
@@ -804,16 +804,16 @@  discard block
 block discarded – undo
804 804
 	$trouver_table = charger_fonction('trouver_table', 'base');
805 805
 	if ($desc = $trouver_table(table_objet_sql($type_objet))) {
806 806
 		if (isset($desc['field']['descriptif'])) {
807
-			$_ligne .= "'descriptif' => " . champ_sql('descriptif', $p) . ',';
807
+			$_ligne .= "'descriptif' => ".champ_sql('descriptif', $p).',';
808 808
 		}
809 809
 		if (isset($desc['field']['texte'])) {
810
-			$_ligne .= "'texte' => " . champ_sql('texte', $p) . ',';
810
+			$_ligne .= "'texte' => ".champ_sql('texte', $p).',';
811 811
 		}
812 812
 		if (isset($desc['field']['chapo'])) {
813
-			$_ligne .= "'chapo' => " . champ_sql('chapo', $p) . ',';
813
+			$_ligne .= "'chapo' => ".champ_sql('chapo', $p).',';
814 814
 		}
815 815
 		if (isset($desc['introduction_longueur'])) {
816
-			$_introduction_longueur = "'" . $desc['introduction_longueur'] . "'";
816
+			$_introduction_longueur = "'".$desc['introduction_longueur']."'";
817 817
 		}
818 818
 	}
819 819
 	$_ligne .= ')';
@@ -909,10 +909,10 @@  discard block
 block discarded – undo
909 909
 		$p->code = sprintf(
910 910
 			CODE_RECUPERER_FOND,
911 911
 			"'modeles/lesauteurs'",
912
-			"array('objet'=>'" . $objet .
913
-			"','id_objet' => " . champ_sql($id_table_objet, $p) .
914
-			",'$id_table_objet' => " . champ_sql($id_table_objet, $p) .
915
-			($objet == 'article' ? '' : ",'id_article' => " . champ_sql('id_article', $p)) .
912
+			"array('objet'=>'".$objet.
913
+			"','id_objet' => ".champ_sql($id_table_objet, $p).
914
+			",'$id_table_objet' => ".champ_sql($id_table_objet, $p).
915
+			($objet == 'article' ? '' : ",'id_article' => ".champ_sql('id_article', $p)).
916 916
 			')',
917 917
 			"'trim'=>true, 'compil'=>array($c)",
918 918
 			_q($connect)
@@ -981,7 +981,7 @@  discard block
 block discarded – undo
981 981
 					$m = trim($m);
982 982
 					if ($m != "''") {
983 983
 						if (!preg_match(',\W,', $m)) {
984
-							$m = $boucle->id_table . ".$m";
984
+							$m = $boucle->id_table.".$m";
985 985
 						}
986 986
 
987 987
 						$m .= ' AS titre_rang';
@@ -1142,7 +1142,7 @@  discard block
 block discarded – undo
1142 1142
 	$f_pagination = chercher_filtre('pagination');
1143 1143
 	$type = $p->boucles[$b]->modificateur['debut_nom'];
1144 1144
 	$modif = ($type[0] !== "'") ? "'debut'.$type"
1145
-		: ("'debut" . substr($type, 1));
1145
+		: ("'debut".substr($type, 1));
1146 1146
 
1147 1147
 	$p->code = sprintf(
1148 1148
 		CODE_PAGINATION,
@@ -1285,7 +1285,7 @@  discard block
 block discarded – undo
1285 1285
 		$msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN']];
1286 1286
 		erreur_squelette($msg, $p);
1287 1287
 	} else {
1288
-		$p->code = 'find_in_path((string)' . $arg . ')';
1288
+		$p->code = 'find_in_path((string)'.$arg.')';
1289 1289
 	}
1290 1290
 
1291 1291
 	$p->interdire_scripts = false;
@@ -1320,7 +1320,7 @@  discard block
 block discarded – undo
1320 1320
 		$msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN_IMAGE']];
1321 1321
 		erreur_squelette($msg, $p);
1322 1322
 	} else {
1323
-		$p->code = 'chemin_image((string)' . $arg . ')';
1323
+		$p->code = 'chemin_image((string)'.$arg.')';
1324 1324
 	}
1325 1325
 
1326 1326
 	$p->interdire_scripts = false;
@@ -1374,7 +1374,7 @@  discard block
 block discarded – undo
1374 1374
 		// cas de #ENV sans argument : on retourne le serialize() du tableau
1375 1375
 		// une belle fonction [(#ENV|affiche_env)] serait pratique
1376 1376
 		if ($src) {
1377
-			$p->code = '(is_array($a = (' . $src . ')) ? serialize($a) : "")';
1377
+			$p->code = '(is_array($a = ('.$src.')) ? serialize($a) : "")';
1378 1378
 		} else {
1379 1379
 			$p->code = 'serialize($Pile[0]??[])';
1380 1380
 		}
@@ -1427,8 +1427,8 @@  discard block
 block discarded – undo
1427 1427
 	$_sinon = interprete_argument_balise(2, $p);
1428 1428
 	$_unserialize = sinon(interprete_argument_balise(3, $p), 'false');
1429 1429
 
1430
-	$p->code = '(include_spip(\'inc/config\')?lire_config(' . $arg . ',' .
1431
-		($_sinon && $_sinon != "''" ? $_sinon : 'null') . ',' . $_unserialize . "):'')";
1430
+	$p->code = '(include_spip(\'inc/config\')?lire_config('.$arg.','.
1431
+		($_sinon && $_sinon != "''" ? $_sinon : 'null').','.$_unserialize."):'')";
1432 1432
 
1433 1433
 	return $p;
1434 1434
 }
@@ -1521,7 +1521,7 @@  discard block
 block discarded – undo
1521 1521
 		$err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'SESSION_SET']];
1522 1522
 		erreur_squelette($err_b_s_a, $p);
1523 1523
 	} else {
1524
-		$p->code = '(include_spip("inc/session") AND session_set(' . $_nom . ',' . $_val . '))';
1524
+		$p->code = '(include_spip("inc/session") AND session_set('.$_nom.','.$_val.'))';
1525 1525
 	}
1526 1526
 
1527 1527
 	$p->interdire_scripts = false;
@@ -1569,7 +1569,7 @@  discard block
 block discarded – undo
1569 1569
 			)
1570 1570
 		) {
1571 1571
 			$p->code = /* $r[1]. */
1572
-				'(' . $r[2] . ')';
1572
+				'('.$r[2].')';
1573 1573
 		} else {
1574 1574
 			$p->code = "eval('return '.$php.';')";
1575 1575
 		}
@@ -1813,9 +1813,9 @@  discard block
 block discarded – undo
1813 1813
 
1814 1814
 		// noter la duree du cache dans un entete proprietaire
1815 1815
 
1816
-		$code = "'<'.'" . '?php header("X-Spip-Cache: '
1816
+		$code = "'<'.'".'?php header("X-Spip-Cache: '
1817 1817
 			. $duree
1818
-			. '"); ?' . "'.'>'";
1818
+			. '"); ?'."'.'>'";
1819 1819
 
1820 1820
 		// Remplir le header Cache-Control
1821 1821
 		// cas #CACHE{0}
@@ -1836,9 +1836,9 @@  discard block
 block discarded – undo
1836 1836
 				$pa == 'cache-client'
1837 1837
 				and $duree > 0
1838 1838
 			) {
1839
-				$code .= ".'<'.'" . '?php header("Cache-Control: max-age='
1839
+				$code .= ".'<'.'".'?php header("Cache-Control: max-age='
1840 1840
 					. $duree
1841
-					. '"); ?' . "'.'>'";
1841
+					. '"); ?'."'.'>'";
1842 1842
 				// il semble logique, si on cache-client, de ne pas invalider
1843 1843
 				$pa = 'statique';
1844 1844
 			}
@@ -1847,7 +1847,7 @@  discard block
 block discarded – undo
1847 1847
 				$pa == 'statique'
1848 1848
 				and $duree > 0
1849 1849
 			) {
1850
-				$code .= ".'<'.'" . '?php header("X-Spip-Statique: oui"); ?' . "'.'>'";
1850
+				$code .= ".'<'.'".'?php header("X-Spip-Statique: oui"); ?'."'.'>'";
1851 1851
 			}
1852 1852
 		}
1853 1853
 	} else {
@@ -2011,9 +2011,9 @@  discard block
 block discarded – undo
2011 2011
 		if ($p->etoile) {
2012 2012
 			$_options[] = "'etoile'=>true";
2013 2013
 		}
2014
-		$_options[] = "'compil'=>array(" . memoriser_contexte_compil($p) . ')';
2014
+		$_options[] = "'compil'=>array(".memoriser_contexte_compil($p).')';
2015 2015
 
2016
-		$_l = 'array(' . join(",\n\t", $_contexte) . ')';
2016
+		$_l = 'array('.join(",\n\t", $_contexte).')';
2017 2017
 		if ($flag_env) {
2018 2018
 			$_l = "array_merge(\$Pile[0],$_l)";
2019 2019
 		}
@@ -2023,7 +2023,7 @@  discard block
 block discarded – undo
2023 2023
 		$msg = ['zbug_balise_sans_argument', ['balise' => ' INCLURE']];
2024 2024
 		erreur_squelette($msg, $p);
2025 2025
 	} else {
2026
-		$p->code = 'charge_scripts(' . $_contexte[1] . ',false)';
2026
+		$p->code = 'charge_scripts('.$_contexte[1].',false)';
2027 2027
 	}
2028 2028
 
2029 2029
 	$p->interdire_scripts = false; // la securite est assuree par recuperer_fond
@@ -2071,7 +2071,7 @@  discard block
 block discarded – undo
2071 2071
 		unset($_contexte[1]);
2072 2072
 
2073 2073
 		if (preg_match("/^\s*'[^']*'/s", $nom)) {
2074
-			$nom = "'modeles/" . substr($nom, 1);
2074
+			$nom = "'modeles/".substr($nom, 1);
2075 2075
 		} else {
2076 2076
 			$nom = "'modeles/' . $nom";
2077 2077
 		}
@@ -2088,8 +2088,8 @@  discard block
 block discarded – undo
2088 2088
 			$primary = $p->boucles[$p->id_boucle]->primary;
2089 2089
 			if (!strpos($primary, ',')) {
2090 2090
 				$id = champ_sql($primary, $p);
2091
-				$_contexte[] = "'$primary'=>" . $id;
2092
-				$_contexte[] = "'id'=>" . $id;
2091
+				$_contexte[] = "'$primary'=>".$id;
2092
+				$_contexte[] = "'id'=>".$id;
2093 2093
 			}
2094 2094
 		}
2095 2095
 		$_contexte[] = "'recurs'=>(++\$recurs)";
@@ -2101,11 +2101,11 @@  discard block
 block discarded – undo
2101 2101
 		$_options = memoriser_contexte_compil($p);
2102 2102
 		$_options = "'compil'=>array($_options), 'trim'=>true";
2103 2103
 		if (isset($_contexte['ajax'])) {
2104
-			$_options .= ', ' . preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']);
2104
+			$_options .= ', '.preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']);
2105 2105
 			unset($_contexte['ajax']);
2106 2106
 		}
2107 2107
 
2108
-		$_l = 'array(' . join(",\n\t", $_contexte) . ')';
2108
+		$_l = 'array('.join(",\n\t", $_contexte).')';
2109 2109
 		if ($flag_env) {
2110 2110
 			$_l = "array_merge(\$Pile[0],$_l)";
2111 2111
 		}
@@ -2215,12 +2215,12 @@  discard block
 block discarded – undo
2215 2215
 function balise_DOUBLONS_dist($p) {
2216 2216
 	if ($type = interprete_argument_balise(1, $p)) {
2217 2217
 		if ($famille = interprete_argument_balise(2, $p)) {
2218
-			$type .= '.' . $famille;
2218
+			$type .= '.'.$famille;
2219 2219
 		}
2220
-		$p->code = '(isset($doublons[' . $type . ']) ? $doublons[' . $type . '] : "")';
2220
+		$p->code = '(isset($doublons['.$type.']) ? $doublons['.$type.'] : "")';
2221 2221
 		if (!$p->etoile) {
2222 2222
 			$p->code = 'array_filter(array_map("intval",explode(",",'
2223
-				. $p->code . ')))';
2223
+				. $p->code.')))';
2224 2224
 		}
2225 2225
 	} else {
2226 2226
 		$p->code = '$doublons';
@@ -2349,7 +2349,7 @@  discard block
 block discarded – undo
2349 2349
 			$_code[] = "$_key => $_val";
2350 2350
 		}
2351 2351
 	} while ($_key && $_val);
2352
-	$p->code = 'array(' . join(', ', $_code) . ')';
2352
+	$p->code = 'array('.join(', ', $_code).')';
2353 2353
 	$p->interdire_scripts = false;
2354 2354
 
2355 2355
 	return $p;
@@ -2376,7 +2376,7 @@  discard block
 block discarded – undo
2376 2376
 	while ($_val = interprete_argument_balise($n++, $p)) {
2377 2377
 		$_code[] = $_val;
2378 2378
 	}
2379
-	$p->code = 'array(' . join(', ', $_code) . ')';
2379
+	$p->code = 'array('.join(', ', $_code).')';
2380 2380
 	$p->interdire_scripts = false;
2381 2381
 
2382 2382
 	return $p;
@@ -2421,10 +2421,10 @@  discard block
 block discarded – undo
2421 2421
 		$_code[] = $_v;
2422 2422
 	}
2423 2423
 
2424
-	$p->code = '((function_exists("autoriser")||include_spip("inc/autoriser"))&&autoriser(' . join(
2424
+	$p->code = '((function_exists("autoriser")||include_spip("inc/autoriser"))&&autoriser('.join(
2425 2425
 		', ',
2426 2426
 		$_code
2427
-	) . ')?" ":"")';
2427
+	).')?" ":"")';
2428 2428
 	$p->interdire_scripts = false;
2429 2429
 
2430 2430
 	return $p;
@@ -2457,7 +2457,7 @@  discard block
 block discarded – undo
2457 2457
 	$type_info = isset($type_info) ? str_replace('\'', '"', $type_info) : '"est_actif"';
2458 2458
 
2459 2459
 	$f = chercher_filtre('info_plugin');
2460
-	$p->code = $f . '(' . $plugin . ', ' . $type_info . ')';
2460
+	$p->code = $f.'('.$plugin.', '.$type_info.')';
2461 2461
 
2462 2462
 	return $p;
2463 2463
 }
@@ -2689,7 +2689,7 @@  discard block
 block discarded – undo
2689 2689
 	}
2690 2690
 
2691 2691
 	// Différentes infos relatives au tri présentes dans les modificateurs
2692
-	$_tri_nom = $boucle->modificateur['tri_nom'] ; // nom du paramètre définissant le tri
2692
+	$_tri_nom = $boucle->modificateur['tri_nom']; // nom du paramètre définissant le tri
2693 2693
 	$_tri_champ = $boucle->modificateur['tri_champ']; // champ actuel utilisé le tri
2694 2694
 	$_tri_sens = $boucle->modificateur['tri_sens']; // sens de tri actuel
2695 2695
 	$_tri_liste_sens_defaut = $boucle->modificateur['tri_liste_sens_defaut']; // sens par défaut pour chaque champ
@@ -2784,7 +2784,7 @@  discard block
 block discarded – undo
2784 2784
 		$connect = $p->boucles[$p->id_boucle]->sql_serveur;
2785 2785
 	}
2786 2786
 
2787
-	$p->code = '(objet_test_si_publie(' . $_type . ',intval(' . $_id . '),' . _q($connect) . ")?' ':'')";
2787
+	$p->code = '(objet_test_si_publie('.$_type.',intval('.$_id.'),'._q($connect).")?' ':'')";
2788 2788
 	$p->interdire_scripts = false;
2789 2789
 
2790 2790
 	return $p;
Please login to merge, or discard this patch.
Indentation   +943 added lines, -943 removed lines patch added patch discarded remove patch
@@ -27,7 +27,7 @@  discard block
 block discarded – undo
27 27
  **/
28 28
 
29 29
 if (!defined('_ECRIRE_INC_VERSION')) {
30
-	return;
30
+    return;
31 31
 }
32 32
 
33 33
 /**
@@ -49,16 +49,16 @@  discard block
 block discarded – undo
49 49
  *     Code PHP si cet argument est présent, sinon null
50 50
  **/
51 51
 function interprete_argument_balise(int $n, Champ $p): ?string {
52
-	if (($p->param) && (!$p->param[0][0]) && ((is_countable($p->param[0]) ? count($p->param[0]) : 0) > $n)) {
53
-		return calculer_liste(
54
-			$p->param[0][$n],
55
-			$p->descr,
56
-			$p->boucles,
57
-			$p->id_boucle
58
-		);
59
-	} else {
60
-		return null;
61
-	}
52
+    if (($p->param) && (!$p->param[0][0]) && ((is_countable($p->param[0]) ? count($p->param[0]) : 0) > $n)) {
53
+        return calculer_liste(
54
+            $p->param[0][$n],
55
+            $p->descr,
56
+            $p->boucles,
57
+            $p->id_boucle
58
+        );
59
+    } else {
60
+        return null;
61
+    }
62 62
 }
63 63
 
64 64
 
@@ -78,10 +78,10 @@  discard block
 block discarded – undo
78 78
  *     Pile complétée par le code à générer
79 79
  **/
80 80
 function balise_NOM_SITE_SPIP_dist($p) {
81
-	$p->code = "\$GLOBALS['meta']['nom_site']";
81
+    $p->code = "\$GLOBALS['meta']['nom_site']";
82 82
 
83
-	#$p->interdire_scripts = true;
84
-	return $p;
83
+    #$p->interdire_scripts = true;
84
+    return $p;
85 85
 }
86 86
 
87 87
 /**
@@ -97,10 +97,10 @@  discard block
 block discarded – undo
97 97
  *     Pile complétée par le code à générer
98 98
  **/
99 99
 function balise_EMAIL_WEBMASTER_dist($p) {
100
-	$p->code = "\$GLOBALS['meta']['email_webmaster']";
100
+    $p->code = "\$GLOBALS['meta']['email_webmaster']";
101 101
 
102
-	#$p->interdire_scripts = true;
103
-	return $p;
102
+    #$p->interdire_scripts = true;
103
+    return $p;
104 104
 }
105 105
 
106 106
 /**
@@ -116,10 +116,10 @@  discard block
 block discarded – undo
116 116
  *     Pile complétée par le code à générer
117 117
  **/
118 118
 function balise_DESCRIPTIF_SITE_SPIP_dist($p) {
119
-	$p->code = "\$GLOBALS['meta']['descriptif_site']";
119
+    $p->code = "\$GLOBALS['meta']['descriptif_site']";
120 120
 
121
-	#$p->interdire_scripts = true;
122
-	return $p;
121
+    #$p->interdire_scripts = true;
122
+    return $p;
123 123
 }
124 124
 
125 125
 
@@ -140,10 +140,10 @@  discard block
 block discarded – undo
140 140
  *     Pile complétée par le code à générer
141 141
  **/
142 142
 function balise_CHARSET_dist($p) {
143
-	$p->code = "\$GLOBALS['meta']['charset']";
143
+    $p->code = "\$GLOBALS['meta']['charset']";
144 144
 
145
-	#$p->interdire_scripts = true;
146
-	return $p;
145
+    #$p->interdire_scripts = true;
146
+    return $p;
147 147
 }
148 148
 
149 149
 /**
@@ -168,11 +168,11 @@  discard block
 block discarded – undo
168 168
  *     Pile complétée par le code à générer
169 169
  **/
170 170
 function balise_LANG_LEFT_dist($p) {
171
-	$_lang = champ_sql('lang', $p);
172
-	$p->code = "lang_dir($_lang, 'left','right')";
173
-	$p->interdire_scripts = false;
171
+    $_lang = champ_sql('lang', $p);
172
+    $p->code = "lang_dir($_lang, 'left','right')";
173
+    $p->interdire_scripts = false;
174 174
 
175
-	return $p;
175
+    return $p;
176 176
 }
177 177
 
178 178
 /**
@@ -192,11 +192,11 @@  discard block
 block discarded – undo
192 192
  *     Pile complétée par le code à générer
193 193
  **/
194 194
 function balise_LANG_RIGHT_dist($p) {
195
-	$_lang = champ_sql('lang', $p);
196
-	$p->code = "lang_dir($_lang, 'right','left')";
197
-	$p->interdire_scripts = false;
195
+    $_lang = champ_sql('lang', $p);
196
+    $p->code = "lang_dir($_lang, 'right','left')";
197
+    $p->interdire_scripts = false;
198 198
 
199
-	return $p;
199
+    return $p;
200 200
 }
201 201
 
202 202
 /**
@@ -221,11 +221,11 @@  discard block
 block discarded – undo
221 221
  *     Pile complétée par le code à générer
222 222
  **/
223 223
 function balise_LANG_DIR_dist($p) {
224
-	$_lang = champ_sql('lang', $p);
225
-	$p->code = "lang_dir($_lang, 'ltr','rtl')";
226
-	$p->interdire_scripts = false;
224
+    $_lang = champ_sql('lang', $p);
225
+    $p->code = "lang_dir($_lang, 'ltr','rtl')";
226
+    $p->interdire_scripts = false;
227 227
 
228
-	return $p;
228
+    return $p;
229 229
 }
230 230
 
231 231
 
@@ -242,10 +242,10 @@  discard block
 block discarded – undo
242 242
  *     Pile complétée par le code à générer
243 243
  **/
244 244
 function balise_PUCE_dist($p) {
245
-	$p->code = 'definir_puce()';
246
-	$p->interdire_scripts = false;
245
+    $p->code = 'definir_puce()';
246
+    $p->interdire_scripts = false;
247 247
 
248
-	return $p;
248
+    return $p;
249 249
 }
250 250
 
251 251
 
@@ -269,9 +269,9 @@  discard block
 block discarded – undo
269 269
  *     Pile completée du code PHP d'exécution de la balise
270 270
  */
271 271
 function balise_DATE_dist($p) {
272
-	$p->code = champ_sql('date', $p);
272
+    $p->code = champ_sql('date', $p);
273 273
 
274
-	return $p;
274
+    return $p;
275 275
 }
276 276
 
277 277
 
@@ -291,10 +291,10 @@  discard block
 block discarded – undo
291 291
  *     Pile completée du code PHP d'exécution de la balise
292 292
  */
293 293
 function balise_DATE_REDAC_dist($p) {
294
-	$p->code = champ_sql('date_redac', $p);
295
-	$p->interdire_scripts = false;
294
+    $p->code = champ_sql('date_redac', $p);
295
+    $p->interdire_scripts = false;
296 296
 
297
-	return $p;
297
+    return $p;
298 298
 }
299 299
 
300 300
 /**
@@ -313,10 +313,10 @@  discard block
 block discarded – undo
313 313
  *     Pile completée du code PHP d'exécution de la balise
314 314
  */
315 315
 function balise_DATE_MODIF_dist($p) {
316
-	$p->code = champ_sql('date_modif', $p);
317
-	$p->interdire_scripts = false;
316
+    $p->code = champ_sql('date_modif', $p);
317
+    $p->interdire_scripts = false;
318 318
 
319
-	return $p;
319
+    return $p;
320 320
 }
321 321
 
322 322
 /**
@@ -334,13 +334,13 @@  discard block
 block discarded – undo
334 334
  *     Pile completée du code PHP d'exécution de la balise
335 335
  */
336 336
 function balise_DATE_NOUVEAUTES_dist($p) {
337
-	$p->code = "((\$GLOBALS['meta']['quoi_de_neuf'] == 'oui'
337
+    $p->code = "((\$GLOBALS['meta']['quoi_de_neuf'] == 'oui'
338 338
 	AND isset(\$GLOBALS['meta']['dernier_envoi_neuf'])) ?
339 339
 	\$GLOBALS['meta']['dernier_envoi_neuf'] :
340 340
 	\"'0000-00-00'\")";
341
-	$p->interdire_scripts = false;
341
+    $p->interdire_scripts = false;
342 342
 
343
-	return $p;
343
+    return $p;
344 344
 }
345 345
 
346 346
 
@@ -358,11 +358,11 @@  discard block
 block discarded – undo
358 358
  *     Pile completée du code PHP d'exécution de la balise
359 359
  */
360 360
 function balise_DOSSIER_SQUELETTE_dist($p) {
361
-	$code = substr(addslashes(dirname($p->descr['sourcefile'])), strlen(_DIR_RACINE));
362
-	$p->code = "_DIR_RACINE . '$code'" .
363
-		$p->interdire_scripts = false;
361
+    $code = substr(addslashes(dirname($p->descr['sourcefile'])), strlen(_DIR_RACINE));
362
+    $p->code = "_DIR_RACINE . '$code'" .
363
+        $p->interdire_scripts = false;
364 364
 
365
-	return $p;
365
+    return $p;
366 366
 }
367 367
 
368 368
 /**
@@ -377,11 +377,11 @@  discard block
 block discarded – undo
377 377
  *     Pile completée du code PHP d'exécution de la balise
378 378
  */
379 379
 function balise_SQUELETTE_dist($p) {
380
-	$code = addslashes($p->descr['sourcefile']);
381
-	$p->code = "'$code'" .
382
-		$p->interdire_scripts = false;
380
+    $code = addslashes($p->descr['sourcefile']);
381
+    $p->code = "'$code'" .
382
+        $p->interdire_scripts = false;
383 383
 
384
-	return $p;
384
+    return $p;
385 385
 }
386 386
 
387 387
 /**
@@ -400,10 +400,10 @@  discard block
 block discarded – undo
400 400
  *     Pile completée du code PHP d'exécution de la balise
401 401
  */
402 402
 function balise_SPIP_VERSION_dist($p) {
403
-	$p->code = 'spip_version()';
404
-	$p->interdire_scripts = false;
403
+    $p->code = 'spip_version()';
404
+    $p->interdire_scripts = false;
405 405
 
406
-	return $p;
406
+    return $p;
407 407
 }
408 408
 
409 409
 
@@ -429,18 +429,18 @@  discard block
 block discarded – undo
429 429
  *     Pile complétée par le code à générer
430 430
  **/
431 431
 function balise_NOM_SITE_dist($p) {
432
-	if (!$p->etoile) {
433
-		$p->code = 'supprimer_numero(calculer_url(' .
434
-			champ_sql('url_site', $p) . ',' .
435
-			champ_sql('nom_site', $p) .
436
-			", 'titre', \$connect, false))";
437
-	} else {
438
-		$p->code = champ_sql('nom_site', $p);
439
-	}
432
+    if (!$p->etoile) {
433
+        $p->code = 'supprimer_numero(calculer_url(' .
434
+            champ_sql('url_site', $p) . ',' .
435
+            champ_sql('nom_site', $p) .
436
+            ", 'titre', \$connect, false))";
437
+    } else {
438
+        $p->code = champ_sql('nom_site', $p);
439
+    }
440 440
 
441
-	$p->interdire_scripts = true;
441
+    $p->interdire_scripts = true;
442 442
 
443
-	return $p;
443
+    return $p;
444 444
 }
445 445
 
446 446
 
@@ -457,11 +457,11 @@  discard block
 block discarded – undo
457 457
  *     Pile complétée par le code à générer
458 458
  **/
459 459
 function balise_NOTES_dist($p) {
460
-	// Recuperer les notes
461
-	$p->code = 'calculer_notes()';
460
+    // Recuperer les notes
461
+    $p->code = 'calculer_notes()';
462 462
 
463
-	#$p->interdire_scripts = true;
464
-	return $p;
463
+    #$p->interdire_scripts = true;
464
+    return $p;
465 465
 }
466 466
 
467 467
 
@@ -483,10 +483,10 @@  discard block
 block discarded – undo
483 483
  *     Pile complétée par le code à générer
484 484
  **/
485 485
 function balise_RECHERCHE_dist($p) {
486
-	$p->code = 'entites_html(_request("recherche"))';
487
-	$p->interdire_scripts = false;
486
+    $p->code = 'entites_html(_request("recherche"))';
487
+    $p->interdire_scripts = false;
488 488
 
489
-	return $p;
489
+    return $p;
490 490
 }
491 491
 
492 492
 
@@ -504,18 +504,18 @@  discard block
 block discarded – undo
504 504
  *     Pile complétée par le code à générer
505 505
  **/
506 506
 function balise_COMPTEUR_BOUCLE_dist($p) {
507
-	$b = index_boucle_mere($p);
508
-	if ($b === '') {
509
-		$msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
510
-		erreur_squelette($msg, $p);
511
-		return null;
512
-	} else {
513
-		$p->code = "(\$Numrows['$b']['compteur_boucle'] ?? 0)";
514
-		$p->boucles[$b]->cptrows = true;
515
-		$p->interdire_scripts = false;
507
+    $b = index_boucle_mere($p);
508
+    if ($b === '') {
509
+        $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
510
+        erreur_squelette($msg, $p);
511
+        return null;
512
+    } else {
513
+        $p->code = "(\$Numrows['$b']['compteur_boucle'] ?? 0)";
514
+        $p->boucles[$b]->cptrows = true;
515
+        $p->interdire_scripts = false;
516 516
 
517
-		return $p;
518
-	}
517
+        return $p;
518
+    }
519 519
 }
520 520
 
521 521
 /**
@@ -533,17 +533,17 @@  discard block
 block discarded – undo
533 533
  *     Pile complétée par le code à générer
534 534
  **/
535 535
 function balise_TOTAL_BOUCLE_dist($p) {
536
-	$b = index_boucle_mere($p);
537
-	if ($b === '') {
538
-		$msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
539
-		erreur_squelette($msg, $p);
540
-	} else {
541
-		$p->code = "(\$Numrows['$b']['total'] ?? 0)";
542
-		$p->boucles[$b]->numrows = true;
543
-		$p->interdire_scripts = false;
544
-	}
536
+    $b = index_boucle_mere($p);
537
+    if ($b === '') {
538
+        $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
539
+        erreur_squelette($msg, $p);
540
+    } else {
541
+        $p->code = "(\$Numrows['$b']['total'] ?? 0)";
542
+        $p->boucles[$b]->numrows = true;
543
+        $p->interdire_scripts = false;
544
+    }
545 545
 
546
-	return $p;
546
+    return $p;
547 547
 }
548 548
 
549 549
 
@@ -563,7 +563,7 @@  discard block
 block discarded – undo
563 563
  *     Pile complétée par le code à générer
564 564
  **/
565 565
 function balise_POINTS_dist($p) {
566
-	return rindex_pile($p, 'points', 'recherche');
566
+    return rindex_pile($p, 'points', 'recherche');
567 567
 }
568 568
 
569 569
 
@@ -584,12 +584,12 @@  discard block
 block discarded – undo
584 584
  *     Pile complétée par le code à générer
585 585
  **/
586 586
 function balise_POPULARITE_ABSOLUE_dist($p) {
587
-	$p->code = 'ceil(' .
588
-		champ_sql('popularite', $p) .
589
-		')';
590
-	$p->interdire_scripts = false;
587
+    $p->code = 'ceil(' .
588
+        champ_sql('popularite', $p) .
589
+        ')';
590
+    $p->interdire_scripts = false;
591 591
 
592
-	return $p;
592
+    return $p;
593 593
 }
594 594
 
595 595
 /**
@@ -609,10 +609,10 @@  discard block
 block discarded – undo
609 609
  *     Pile complétée par le code à générer
610 610
  **/
611 611
 function balise_POPULARITE_SITE_dist($p) {
612
-	$p->code = 'ceil($GLOBALS["meta"][\'popularite_total\'])';
613
-	$p->interdire_scripts = false;
612
+    $p->code = 'ceil($GLOBALS["meta"][\'popularite_total\'])';
613
+    $p->interdire_scripts = false;
614 614
 
615
-	return $p;
615
+    return $p;
616 616
 }
617 617
 
618 618
 /**
@@ -633,10 +633,10 @@  discard block
 block discarded – undo
633 633
  *     Pile complétée par le code à générer
634 634
  **/
635 635
 function balise_POPULARITE_MAX_dist($p) {
636
-	$p->code = 'ceil($GLOBALS["meta"][\'popularite_max\'])';
637
-	$p->interdire_scripts = false;
636
+    $p->code = 'ceil($GLOBALS["meta"][\'popularite_max\'])';
637
+    $p->interdire_scripts = false;
638 638
 
639
-	return $p;
639
+    return $p;
640 640
 }
641 641
 
642 642
 
@@ -662,15 +662,15 @@  discard block
 block discarded – undo
662 662
  *     Pile complétée par le code à générer
663 663
  **/
664 664
 function balise_VALEUR_dist($p) {
665
-	$b = $p->nom_boucle ?: $p->id_boucle;
666
-	$p->code = index_pile($p->id_boucle, 'valeur', $p->boucles, $b);
665
+    $b = $p->nom_boucle ?: $p->id_boucle;
666
+    $p->code = index_pile($p->id_boucle, 'valeur', $p->boucles, $b);
667 667
 ;
668
-	if (($v = interprete_argument_balise(1, $p)) !== null) {
669
-		$p->code = 'table_valeur(' . $p->code . ', ' . $v . ')';
670
-	}
671
-	$p->interdire_scripts = true;
668
+    if (($v = interprete_argument_balise(1, $p)) !== null) {
669
+        $p->code = 'table_valeur(' . $p->code . ', ' . $v . ')';
670
+    }
671
+    $p->interdire_scripts = true;
672 672
 
673
-	return $p;
673
+    return $p;
674 674
 }
675 675
 
676 676
 /**
@@ -699,16 +699,16 @@  discard block
 block discarded – undo
699 699
  *     Pile complétée par le code à générer
700 700
  **/
701 701
 function balise_EXPOSE_dist($p) {
702
-	$on = "'on'";
703
-	$off = "''";
704
-	if (($v = interprete_argument_balise(1, $p)) !== null) {
705
-		$on = $v;
706
-		if (($v = interprete_argument_balise(2, $p)) !== null) {
707
-			$off = $v;
708
-		}
709
-	}
702
+    $on = "'on'";
703
+    $off = "''";
704
+    if (($v = interprete_argument_balise(1, $p)) !== null) {
705
+        $on = $v;
706
+        if (($v = interprete_argument_balise(2, $p)) !== null) {
707
+            $off = $v;
708
+        }
709
+    }
710 710
 
711
-	return calculer_balise_expose($p, $on, $off);
711
+    return calculer_balise_expose($p, $on, $off);
712 712
 }
713 713
 
714 714
 /**
@@ -726,35 +726,35 @@  discard block
 block discarded – undo
726 726
  *     Pile complétée par le code à générer
727 727
  **/
728 728
 function calculer_balise_expose($p, $on, $off) {
729
-	$b = index_boucle($p);
730
-	if (empty($p->boucles[$b]->primary)) {
731
-		$msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
732
-		erreur_squelette($msg, $p);
733
-	} else {
734
-		$key = $p->boucles[$b]->primary;
735
-		$type = $p->boucles[$p->id_boucle]->primary;
736
-		$desc = $p->boucles[$b]->show;
737
-		$connect = sql_quote($p->boucles[$b]->sql_serveur);
729
+    $b = index_boucle($p);
730
+    if (empty($p->boucles[$b]->primary)) {
731
+        $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
732
+        erreur_squelette($msg, $p);
733
+    } else {
734
+        $key = $p->boucles[$b]->primary;
735
+        $type = $p->boucles[$p->id_boucle]->primary;
736
+        $desc = $p->boucles[$b]->show;
737
+        $connect = sql_quote($p->boucles[$b]->sql_serveur);
738 738
 
739
-		// Ne pas utiliser champ_sql, on jongle avec le nom boucle explicite
740
-		$c = index_pile($p->id_boucle, $type, $p->boucles);
739
+        // Ne pas utiliser champ_sql, on jongle avec le nom boucle explicite
740
+        $c = index_pile($p->id_boucle, $type, $p->boucles);
741 741
 
742
-		if (isset($desc['field']['id_parent'])) {
743
-			$parent = 0; // pour if (!$parent) dans calculer_expose
744
-		} elseif (isset($desc['field']['id_rubrique'])) {
745
-			$parent = index_pile($p->id_boucle, 'id_rubrique', $p->boucles, $b);
746
-		} elseif (isset($desc['field']['id_groupe'])) {
747
-			$parent = index_pile($p->id_boucle, 'id_groupe', $p->boucles, $b);
748
-		} else {
749
-			$parent = "''";
750
-		}
742
+        if (isset($desc['field']['id_parent'])) {
743
+            $parent = 0; // pour if (!$parent) dans calculer_expose
744
+        } elseif (isset($desc['field']['id_rubrique'])) {
745
+            $parent = index_pile($p->id_boucle, 'id_rubrique', $p->boucles, $b);
746
+        } elseif (isset($desc['field']['id_groupe'])) {
747
+            $parent = index_pile($p->id_boucle, 'id_groupe', $p->boucles, $b);
748
+        } else {
749
+            $parent = "''";
750
+        }
751 751
 
752
-		$p->code = "(calcul_exposer($c, '$type', \$Pile[0], $parent, '$key', $connect) ? $on : $off)";
753
-	}
752
+        $p->code = "(calcul_exposer($c, '$type', \$Pile[0], $parent, '$key', $connect) ? $on : $off)";
753
+    }
754 754
 
755
-	$p->interdire_scripts = false;
755
+    $p->interdire_scripts = false;
756 756
 
757
-	return $p;
757
+    return $p;
758 758
 }
759 759
 
760 760
 
@@ -795,46 +795,46 @@  discard block
 block discarded – undo
795 795
  **/
796 796
 function balise_INTRODUCTION_dist($p) {
797 797
 
798
-	$type_objet = $p->type_requete;
799
-	$cle_objet = id_table_objet($type_objet);
800
-	$_id_objet = champ_sql($cle_objet, $p);
801
-
802
-	// Récupérer les valeurs sql nécessaires : descriptif, texte et chapo
803
-	// ainsi que le longueur d'introduction donnée dans la description de l'objet.
804
-	$_introduction_longueur = 'null';
805
-	$_ligne = 'array(';
806
-	$trouver_table = charger_fonction('trouver_table', 'base');
807
-	if ($desc = $trouver_table(table_objet_sql($type_objet))) {
808
-		if (isset($desc['field']['descriptif'])) {
809
-			$_ligne .= "'descriptif' => " . champ_sql('descriptif', $p) . ',';
810
-		}
811
-		if (isset($desc['field']['texte'])) {
812
-			$_ligne .= "'texte' => " . champ_sql('texte', $p) . ',';
813
-		}
814
-		if (isset($desc['field']['chapo'])) {
815
-			$_ligne .= "'chapo' => " . champ_sql('chapo', $p) . ',';
816
-		}
817
-		if (isset($desc['introduction_longueur'])) {
818
-			$_introduction_longueur = "'" . $desc['introduction_longueur'] . "'";
819
-		}
820
-	}
821
-	$_ligne .= ')';
822
-
823
-	// Récupérer la longueur et la suite passés en paramètres
824
-	$_longueur_ou_suite = 'null';
825
-	if (($v1 = interprete_argument_balise(1, $p)) !== null) {
826
-		$_longueur_ou_suite = $v1;
827
-	}
828
-	$_suite = 'null';
829
-	if (($v2 = interprete_argument_balise(2, $p)) !== null) {
830
-		$_suite = $v2;
831
-	}
832
-
833
-	$p->code = "generer_objet_introduction((int)$_id_objet, '$type_objet', $_ligne, $_introduction_longueur, $_longueur_ou_suite, $_suite, \$connect)";
834
-
835
-	#$p->interdire_scripts = true;
836
-	$p->etoile = '*'; // propre est deja fait dans le calcul de l'intro
837
-	return $p;
798
+    $type_objet = $p->type_requete;
799
+    $cle_objet = id_table_objet($type_objet);
800
+    $_id_objet = champ_sql($cle_objet, $p);
801
+
802
+    // Récupérer les valeurs sql nécessaires : descriptif, texte et chapo
803
+    // ainsi que le longueur d'introduction donnée dans la description de l'objet.
804
+    $_introduction_longueur = 'null';
805
+    $_ligne = 'array(';
806
+    $trouver_table = charger_fonction('trouver_table', 'base');
807
+    if ($desc = $trouver_table(table_objet_sql($type_objet))) {
808
+        if (isset($desc['field']['descriptif'])) {
809
+            $_ligne .= "'descriptif' => " . champ_sql('descriptif', $p) . ',';
810
+        }
811
+        if (isset($desc['field']['texte'])) {
812
+            $_ligne .= "'texte' => " . champ_sql('texte', $p) . ',';
813
+        }
814
+        if (isset($desc['field']['chapo'])) {
815
+            $_ligne .= "'chapo' => " . champ_sql('chapo', $p) . ',';
816
+        }
817
+        if (isset($desc['introduction_longueur'])) {
818
+            $_introduction_longueur = "'" . $desc['introduction_longueur'] . "'";
819
+        }
820
+    }
821
+    $_ligne .= ')';
822
+
823
+    // Récupérer la longueur et la suite passés en paramètres
824
+    $_longueur_ou_suite = 'null';
825
+    if (($v1 = interprete_argument_balise(1, $p)) !== null) {
826
+        $_longueur_ou_suite = $v1;
827
+    }
828
+    $_suite = 'null';
829
+    if (($v2 = interprete_argument_balise(2, $p)) !== null) {
830
+        $_suite = $v2;
831
+    }
832
+
833
+    $p->code = "generer_objet_introduction((int)$_id_objet, '$type_objet', $_ligne, $_introduction_longueur, $_longueur_ou_suite, $_suite, \$connect)";
834
+
835
+    #$p->interdire_scripts = true;
836
+    $p->etoile = '*'; // propre est deja fait dans le calcul de l'intro
837
+    return $p;
838 838
 }
839 839
 
840 840
 
@@ -854,15 +854,15 @@  discard block
 block discarded – undo
854 854
  *     Pile complétée par le code à générer
855 855
  **/
856 856
 function balise_LANG_dist($p) {
857
-	$_lang = champ_sql('lang', $p);
858
-	if (!$p->etoile) {
859
-		$p->code = "spip_htmlentities($_lang ? $_lang : \$GLOBALS['spip_lang'])";
860
-	} else {
861
-		$p->code = "spip_htmlentities($_lang)";
862
-	}
863
-	$p->interdire_scripts = false;
857
+    $_lang = champ_sql('lang', $p);
858
+    if (!$p->etoile) {
859
+        $p->code = "spip_htmlentities($_lang ? $_lang : \$GLOBALS['spip_lang'])";
860
+    } else {
861
+        $p->code = "spip_htmlentities($_lang)";
862
+    }
863
+    $p->interdire_scripts = false;
864 864
 
865
-	return $p;
865
+    return $p;
866 866
 }
867 867
 
868 868
 /**
@@ -884,45 +884,45 @@  discard block
 block discarded – undo
884 884
  *     Pile complétée par le code à générer
885 885
  */
886 886
 function balise_LESAUTEURS_dist($p) {
887
-	// Cherche le champ 'lesauteurs' dans la pile
888
-	$_lesauteurs = champ_sql('lesauteurs', $p, '');
889
-
890
-	// Si le champ n'existe pas (cas de spip_articles), on applique
891
-	// le modele lesauteurs.html en passant id_article dans le contexte;
892
-	// dans le cas contraire on prend le champ 'lesauteurs'
893
-	// (cf extension sites/)
894
-	if ($_lesauteurs) {
895
-		$p->code = "safehtml($_lesauteurs)";
896
-		// $p->interdire_scripts = true;
897
-	} else {
898
-		if (!$p->id_boucle) {
899
-			$connect = '';
900
-			$objet = 'article';
901
-			$id_table_objet = 'id_article';
902
-		} else {
903
-			$b = $p->nom_boucle ?: $p->id_boucle;
904
-			$connect = $p->boucles[$b]->sql_serveur;
905
-			$type_boucle = $p->boucles[$b]->type_requete;
906
-			$objet = objet_type($type_boucle);
907
-			$id_table_objet = id_table_objet($type_boucle);
908
-		}
909
-		$c = memoriser_contexte_compil($p);
910
-
911
-		$p->code = sprintf(
912
-			CODE_RECUPERER_FOND,
913
-			"'modeles/lesauteurs'",
914
-			"array('objet'=>'" . $objet .
915
-			"','id_objet' => " . champ_sql($id_table_objet, $p) .
916
-			",'$id_table_objet' => " . champ_sql($id_table_objet, $p) .
917
-			($objet == 'article' ? '' : ",'id_article' => " . champ_sql('id_article', $p)) .
918
-			')',
919
-			"'trim'=>true, 'compil'=>array($c)",
920
-			_q($connect)
921
-		);
922
-		$p->interdire_scripts = false; // securite apposee par recuperer_fond()
923
-	}
924
-
925
-	return $p;
887
+    // Cherche le champ 'lesauteurs' dans la pile
888
+    $_lesauteurs = champ_sql('lesauteurs', $p, '');
889
+
890
+    // Si le champ n'existe pas (cas de spip_articles), on applique
891
+    // le modele lesauteurs.html en passant id_article dans le contexte;
892
+    // dans le cas contraire on prend le champ 'lesauteurs'
893
+    // (cf extension sites/)
894
+    if ($_lesauteurs) {
895
+        $p->code = "safehtml($_lesauteurs)";
896
+        // $p->interdire_scripts = true;
897
+    } else {
898
+        if (!$p->id_boucle) {
899
+            $connect = '';
900
+            $objet = 'article';
901
+            $id_table_objet = 'id_article';
902
+        } else {
903
+            $b = $p->nom_boucle ?: $p->id_boucle;
904
+            $connect = $p->boucles[$b]->sql_serveur;
905
+            $type_boucle = $p->boucles[$b]->type_requete;
906
+            $objet = objet_type($type_boucle);
907
+            $id_table_objet = id_table_objet($type_boucle);
908
+        }
909
+        $c = memoriser_contexte_compil($p);
910
+
911
+        $p->code = sprintf(
912
+            CODE_RECUPERER_FOND,
913
+            "'modeles/lesauteurs'",
914
+            "array('objet'=>'" . $objet .
915
+            "','id_objet' => " . champ_sql($id_table_objet, $p) .
916
+            ",'$id_table_objet' => " . champ_sql($id_table_objet, $p) .
917
+            ($objet == 'article' ? '' : ",'id_article' => " . champ_sql('id_article', $p)) .
918
+            ')',
919
+            "'trim'=>true, 'compil'=>array($c)",
920
+            _q($connect)
921
+        );
922
+        $p->interdire_scripts = false; // securite apposee par recuperer_fond()
923
+    }
924
+
925
+    return $p;
926 926
 }
927 927
 
928 928
 
@@ -949,76 +949,76 @@  discard block
 block discarded – undo
949 949
  *     Pile complétée par le code à générer
950 950
  */
951 951
 function balise_RANG_dist($p) {
952
-	$b = index_boucle($p);
953
-	if ($b === '') {
954
-		$msg = [
955
-			'zbug_champ_hors_boucle',
956
-			['champ' => '#RANG']
957
-		];
958
-		erreur_squelette($msg, $p);
959
-	} else {
960
-		// chercher d'abord un champ sql rang (mais pas dans le env : defaut '' si on trouve pas de champ sql)
961
-		// dans la boucle immediatement englobante uniquement
962
-		// sinon on compose le champ calcule
963
-		$_rang = champ_sql('rang', $p, '', false);
964
-
965
-		// si pas trouve de champ sql rang :
966
-		if (!$_rang or $_rang == "''") {
967
-			$boucle = &$p->boucles[$b];
968
-
969
-			// on gere le cas ou #RANG est une extraction du numero dans le titre
970
-			$trouver_table = charger_fonction('trouver_table', 'base');
971
-			$desc = $trouver_table($boucle->id_table);
972
-			$_titre = ''; # où extraire le numero ?
973
-
974
-			if (isset($desc['titre'])) {
975
-				$t = $desc['titre'];
976
-				if (
977
-					// Soit on trouve avec la déclaration de la lang AVANT
978
-					preg_match(';(?:lang\s*,)\s*(.*?titre)\s*(,|$);', $t, $m)
979
-					// Soit on prend depuis le début
980
-					or preg_match(';^(.*?titre)\s*(,|$);', $t, $m)
981
-				) {
982
-					$m = preg_replace(',as\s+titre$,i', '', $m[1]);
983
-					$m = trim($m);
984
-					if ($m != "''") {
985
-						if (!preg_match(',\W,', $m)) {
986
-							$m = $boucle->id_table . ".$m";
987
-						}
988
-
989
-						$m .= ' AS titre_rang';
990
-
991
-						$boucle->select[] = $m;
992
-						$_titre = '$Pile[$SP][\'titre_rang\']';
993
-					}
994
-				}
995
-			}
996
-
997
-			// si on n'a rien trouvé, on utilise le champ titre classique
998
-			if (!$_titre) {
999
-				$_titre = champ_sql('titre', $p);
1000
-			}
1001
-
1002
-			// et on recupere aussi les infos de liaison si on est en train d'editer les liens justement
1003
-			// cas des formulaires xxx_lies utilises par #FORMULAIRE_EDITER_LIENS
1004
-			$type_boucle = $boucle->type_requete;
1005
-			$objet = objet_type($type_boucle);
1006
-			$id_table_objet = id_table_objet($type_boucle);
1007
-			$_primary = champ_sql($id_table_objet, $p, '', false);
1008
-			$_env = '$Pile[0]';
1009
-
1010
-			if (!$_titre) {$_titre = "''";
1011
-			}
1012
-			if (!$_primary) {$_primary = "''";
1013
-			}
1014
-			$_rang = "calculer_rang_smart($_titre, '$objet', $_primary, $_env)";
1015
-		}
1016
-
1017
-		$p->code = $_rang;
1018
-		$p->interdire_scripts = false;
1019
-	}
1020
-
1021
-	return $p;
952
+    $b = index_boucle($p);
953
+    if ($b === '') {
954
+        $msg = [
955
+            'zbug_champ_hors_boucle',
956
+            ['champ' => '#RANG']
957
+        ];
958
+        erreur_squelette($msg, $p);
959
+    } else {
960
+        // chercher d'abord un champ sql rang (mais pas dans le env : defaut '' si on trouve pas de champ sql)
961
+        // dans la boucle immediatement englobante uniquement
962
+        // sinon on compose le champ calcule
963
+        $_rang = champ_sql('rang', $p, '', false);
964
+
965
+        // si pas trouve de champ sql rang :
966
+        if (!$_rang or $_rang == "''") {
967
+            $boucle = &$p->boucles[$b];
968
+
969
+            // on gere le cas ou #RANG est une extraction du numero dans le titre
970
+            $trouver_table = charger_fonction('trouver_table', 'base');
971
+            $desc = $trouver_table($boucle->id_table);
972
+            $_titre = ''; # où extraire le numero ?
973
+
974
+            if (isset($desc['titre'])) {
975
+                $t = $desc['titre'];
976
+                if (
977
+                    // Soit on trouve avec la déclaration de la lang AVANT
978
+                    preg_match(';(?:lang\s*,)\s*(.*?titre)\s*(,|$);', $t, $m)
979
+                    // Soit on prend depuis le début
980
+                    or preg_match(';^(.*?titre)\s*(,|$);', $t, $m)
981
+                ) {
982
+                    $m = preg_replace(',as\s+titre$,i', '', $m[1]);
983
+                    $m = trim($m);
984
+                    if ($m != "''") {
985
+                        if (!preg_match(',\W,', $m)) {
986
+                            $m = $boucle->id_table . ".$m";
987
+                        }
988
+
989
+                        $m .= ' AS titre_rang';
990
+
991
+                        $boucle->select[] = $m;
992
+                        $_titre = '$Pile[$SP][\'titre_rang\']';
993
+                    }
994
+                }
995
+            }
996
+
997
+            // si on n'a rien trouvé, on utilise le champ titre classique
998
+            if (!$_titre) {
999
+                $_titre = champ_sql('titre', $p);
1000
+            }
1001
+
1002
+            // et on recupere aussi les infos de liaison si on est en train d'editer les liens justement
1003
+            // cas des formulaires xxx_lies utilises par #FORMULAIRE_EDITER_LIENS
1004
+            $type_boucle = $boucle->type_requete;
1005
+            $objet = objet_type($type_boucle);
1006
+            $id_table_objet = id_table_objet($type_boucle);
1007
+            $_primary = champ_sql($id_table_objet, $p, '', false);
1008
+            $_env = '$Pile[0]';
1009
+
1010
+            if (!$_titre) {$_titre = "''";
1011
+            }
1012
+            if (!$_primary) {$_primary = "''";
1013
+            }
1014
+            $_rang = "calculer_rang_smart($_titre, '$objet', $_primary, $_env)";
1015
+        }
1016
+
1017
+        $p->code = $_rang;
1018
+        $p->interdire_scripts = false;
1019
+    }
1020
+
1021
+    return $p;
1022 1022
 }
1023 1023
 
1024 1024
 
@@ -1040,12 +1040,12 @@  discard block
 block discarded – undo
1040 1040
  *     Pile complétée par le code à générer
1041 1041
  **/
1042 1042
 function balise_POPULARITE_dist($p) {
1043
-	$_popularite = champ_sql('popularite', $p);
1044
-	$p->code = "(ceil(min(100, 100 * $_popularite
1043
+    $_popularite = champ_sql('popularite', $p);
1044
+    $p->code = "(ceil(min(100, 100 * $_popularite
1045 1045
 	/ max(1 , 0 + \$GLOBALS['meta']['popularite_max']))))";
1046
-	$p->interdire_scripts = false;
1046
+    $p->interdire_scripts = false;
1047 1047
 
1048
-	return $p;
1048
+    return $p;
1049 1049
 }
1050 1050
 
1051 1051
 /**
@@ -1056,8 +1056,8 @@  discard block
 block discarded – undo
1056 1056
  * l'absence peut-être due à une faute de frappe dans le contexte inclus.
1057 1057
  */
1058 1058
 define(
1059
-	'CODE_PAGINATION',
1060
-	'%s($Numrows["%s"]["grand_total"],
1059
+    'CODE_PAGINATION',
1060
+    '%s($Numrows["%s"]["grand_total"],
1061 1061
  		%s,
1062 1062
 		isset($Pile[0][%4$s])?$Pile[0][%4$s]:intval(_request(%4$s)),
1063 1063
 		%5$s, %6$s, %7$s, %8$s, array(%9$s))'
@@ -1094,75 +1094,75 @@  discard block
 block discarded – undo
1094 1094
  *     Pile complétée par le code à générer
1095 1095
  */
1096 1096
 function balise_PAGINATION_dist($p, $liste = 'true') {
1097
-	$b = index_boucle_mere($p);
1098
-
1099
-	// s'il n'y a pas de nom de boucle, on ne peut pas paginer
1100
-	if ($b === '') {
1101
-		$msg = [
1102
-			'zbug_champ_hors_boucle',
1103
-			['champ' => $liste ? 'PAGINATION' : 'ANCRE_PAGINATION']
1104
-		];
1105
-		erreur_squelette($msg, $p);
1106
-
1107
-		return $p;
1108
-	}
1109
-
1110
-	// s'il n'y a pas de mode_partie, c'est qu'on se trouve
1111
-	// dans un boucle recursive ou qu'on a oublie le critere {pagination}
1112
-	if (!$p->boucles[$b]->mode_partie) {
1113
-		if (!$p->boucles[$b]->table_optionnelle) {
1114
-			$msg = [
1115
-				'zbug_pagination_sans_critere',
1116
-				['champ' => '#PAGINATION']
1117
-			];
1118
-			erreur_squelette($msg, $p);
1119
-		}
1120
-
1121
-		return $p;
1122
-	}
1123
-
1124
-	// a priori true
1125
-	// si false, le compilo va bloquer sur des syntaxes avec un filtre sans argument qui suit la balise
1126
-	// si true, les arguments simples (sans truc=chose) vont degager
1127
-	$_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $p->id_boucle, false, false);
1128
-	if (is_countable($_contexte) ? count($_contexte) : 0) {
1129
-		$key = key($_contexte);
1130
-		if (is_numeric($key)) {
1131
-			array_shift($_contexte);
1132
-			$__modele = interprete_argument_balise(1, $p);
1133
-		}
1134
-	}
1135
-
1136
-	if (is_countable($_contexte) ? count($_contexte) : 0) {
1137
-		$code_contexte = implode(',', $_contexte);
1138
-	} else {
1139
-		$code_contexte = '';
1140
-	}
1141
-
1142
-	$connect = $p->boucles[$b]->sql_serveur;
1143
-	$pas = $p->boucles[$b]->total_parties;
1144
-	$f_pagination = chercher_filtre('pagination');
1145
-	$type = $p->boucles[$b]->modificateur['debut_nom'];
1146
-	$modif = ($type[0] !== "'") ? "'debut'.$type"
1147
-		: ("'debut" . substr($type, 1));
1148
-
1149
-	$p->code = sprintf(
1150
-		CODE_PAGINATION,
1151
-		$f_pagination,
1152
-		$b,
1153
-		$type,
1154
-		$modif,
1155
-		$pas,
1156
-		$liste,
1157
-		((isset($__modele) and $__modele) ? $__modele : "''"),
1158
-		_q($connect),
1159
-		$code_contexte
1160
-	);
1161
-
1162
-	$p->boucles[$b]->numrows = true;
1163
-	$p->interdire_scripts = false;
1164
-
1165
-	return $p;
1097
+    $b = index_boucle_mere($p);
1098
+
1099
+    // s'il n'y a pas de nom de boucle, on ne peut pas paginer
1100
+    if ($b === '') {
1101
+        $msg = [
1102
+            'zbug_champ_hors_boucle',
1103
+            ['champ' => $liste ? 'PAGINATION' : 'ANCRE_PAGINATION']
1104
+        ];
1105
+        erreur_squelette($msg, $p);
1106
+
1107
+        return $p;
1108
+    }
1109
+
1110
+    // s'il n'y a pas de mode_partie, c'est qu'on se trouve
1111
+    // dans un boucle recursive ou qu'on a oublie le critere {pagination}
1112
+    if (!$p->boucles[$b]->mode_partie) {
1113
+        if (!$p->boucles[$b]->table_optionnelle) {
1114
+            $msg = [
1115
+                'zbug_pagination_sans_critere',
1116
+                ['champ' => '#PAGINATION']
1117
+            ];
1118
+            erreur_squelette($msg, $p);
1119
+        }
1120
+
1121
+        return $p;
1122
+    }
1123
+
1124
+    // a priori true
1125
+    // si false, le compilo va bloquer sur des syntaxes avec un filtre sans argument qui suit la balise
1126
+    // si true, les arguments simples (sans truc=chose) vont degager
1127
+    $_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $p->id_boucle, false, false);
1128
+    if (is_countable($_contexte) ? count($_contexte) : 0) {
1129
+        $key = key($_contexte);
1130
+        if (is_numeric($key)) {
1131
+            array_shift($_contexte);
1132
+            $__modele = interprete_argument_balise(1, $p);
1133
+        }
1134
+    }
1135
+
1136
+    if (is_countable($_contexte) ? count($_contexte) : 0) {
1137
+        $code_contexte = implode(',', $_contexte);
1138
+    } else {
1139
+        $code_contexte = '';
1140
+    }
1141
+
1142
+    $connect = $p->boucles[$b]->sql_serveur;
1143
+    $pas = $p->boucles[$b]->total_parties;
1144
+    $f_pagination = chercher_filtre('pagination');
1145
+    $type = $p->boucles[$b]->modificateur['debut_nom'];
1146
+    $modif = ($type[0] !== "'") ? "'debut'.$type"
1147
+        : ("'debut" . substr($type, 1));
1148
+
1149
+    $p->code = sprintf(
1150
+        CODE_PAGINATION,
1151
+        $f_pagination,
1152
+        $b,
1153
+        $type,
1154
+        $modif,
1155
+        $pas,
1156
+        $liste,
1157
+        ((isset($__modele) and $__modele) ? $__modele : "''"),
1158
+        _q($connect),
1159
+        $code_contexte
1160
+    );
1161
+
1162
+    $p->boucles[$b]->numrows = true;
1163
+    $p->interdire_scripts = false;
1164
+
1165
+    return $p;
1166 1166
 }
1167 1167
 
1168 1168
 
@@ -1189,11 +1189,11 @@  discard block
 block discarded – undo
1189 1189
  *     Pile complétée par le code à générer
1190 1190
  **/
1191 1191
 function balise_ANCRE_PAGINATION_dist($p) {
1192
-	if ($f = charger_fonction('PAGINATION', 'balise', true)) {
1193
-		return $f($p, $liste = 'false');
1194
-	} else {
1195
-		return null;
1196
-	} // ou une erreur ?
1192
+    if ($f = charger_fonction('PAGINATION', 'balise', true)) {
1193
+        return $f($p, $liste = 'false');
1194
+    } else {
1195
+        return null;
1196
+    } // ou une erreur ?
1197 1197
 }
1198 1198
 
1199 1199
 
@@ -1214,17 +1214,17 @@  discard block
 block discarded – undo
1214 1214
  *     Pile complétée par le code à générer
1215 1215
  **/
1216 1216
 function balise_GRAND_TOTAL_dist($p) {
1217
-	$b = index_boucle_mere($p);
1218
-	if ($b === '') {
1219
-		$msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
1220
-		erreur_squelette($msg, $p);
1221
-	} else {
1222
-		$p->code = "(\$Numrows['$b']['grand_total'] ?? \$Numrows['$b']['total'] ?? 0)";
1223
-		$p->boucles[$b]->numrows = true;
1224
-		$p->interdire_scripts = false;
1225
-	}
1217
+    $b = index_boucle_mere($p);
1218
+    if ($b === '') {
1219
+        $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
1220
+        erreur_squelette($msg, $p);
1221
+    } else {
1222
+        $p->code = "(\$Numrows['$b']['grand_total'] ?? \$Numrows['$b']['total'] ?? 0)";
1223
+        $p->boucles[$b]->numrows = true;
1224
+        $p->interdire_scripts = false;
1225
+    }
1226 1226
 
1227
-	return $p;
1227
+    return $p;
1228 1228
 }
1229 1229
 
1230 1230
 
@@ -1252,10 +1252,10 @@  discard block
 block discarded – undo
1252 1252
  *     Pile complétée par le code à générer
1253 1253
  **/
1254 1254
 function balise_SELF_dist($p) {
1255
-	$p->code = 'self()';
1256
-	$p->interdire_scripts = false;
1255
+    $p->code = 'self()';
1256
+    $p->interdire_scripts = false;
1257 1257
 
1258
-	return $p;
1258
+    return $p;
1259 1259
 }
1260 1260
 
1261 1261
 
@@ -1282,17 +1282,17 @@  discard block
 block discarded – undo
1282 1282
  *     Pile complétée par le code à générer
1283 1283
  **/
1284 1284
 function balise_CHEMIN_dist($p) {
1285
-	$arg = interprete_argument_balise(1, $p);
1286
-	if (!$arg) {
1287
-		$msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN']];
1288
-		erreur_squelette($msg, $p);
1289
-	} else {
1290
-		$p->code = 'find_in_path((string)' . $arg . ')';
1291
-	}
1285
+    $arg = interprete_argument_balise(1, $p);
1286
+    if (!$arg) {
1287
+        $msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN']];
1288
+        erreur_squelette($msg, $p);
1289
+    } else {
1290
+        $p->code = 'find_in_path((string)' . $arg . ')';
1291
+    }
1292 1292
 
1293
-	$p->interdire_scripts = false;
1293
+    $p->interdire_scripts = false;
1294 1294
 
1295
-	return $p;
1295
+    return $p;
1296 1296
 }
1297 1297
 
1298 1298
 /**
@@ -1317,16 +1317,16 @@  discard block
 block discarded – undo
1317 1317
  *     Pile complétée par le code à générer
1318 1318
  **/
1319 1319
 function balise_CHEMIN_IMAGE_dist($p) {
1320
-	$arg = interprete_argument_balise(1, $p);
1321
-	if (!$arg) {
1322
-		$msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN_IMAGE']];
1323
-		erreur_squelette($msg, $p);
1324
-	} else {
1325
-		$p->code = 'chemin_image((string)' . $arg . ')';
1326
-	}
1320
+    $arg = interprete_argument_balise(1, $p);
1321
+    if (!$arg) {
1322
+        $msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN_IMAGE']];
1323
+        erreur_squelette($msg, $p);
1324
+    } else {
1325
+        $p->code = 'chemin_image((string)' . $arg . ')';
1326
+    }
1327 1327
 
1328
-	$p->interdire_scripts = false;
1329
-	return $p;
1328
+    $p->interdire_scripts = false;
1329
+    return $p;
1330 1330
 }
1331 1331
 
1332 1332
 
@@ -1364,36 +1364,36 @@  discard block
 block discarded – undo
1364 1364
  **/
1365 1365
 function balise_ENV_dist($p, $src = null) {
1366 1366
 
1367
-	// cle du tableau desiree
1368
-	$_nom = interprete_argument_balise(1, $p);
1369
-	// valeur par defaut
1370
-	$_sinon = interprete_argument_balise(2, $p);
1367
+    // cle du tableau desiree
1368
+    $_nom = interprete_argument_balise(1, $p);
1369
+    // valeur par defaut
1370
+    $_sinon = interprete_argument_balise(2, $p);
1371 1371
 
1372
-	// $src est un tableau de donnees sources eventuellement transmis
1373
-	// en absence, on utilise l'environnement du squelette $Pile[0]
1372
+    // $src est un tableau de donnees sources eventuellement transmis
1373
+    // en absence, on utilise l'environnement du squelette $Pile[0]
1374 1374
 
1375
-	if (!$_nom) {
1376
-		// cas de #ENV sans argument : on retourne le serialize() du tableau
1377
-		// une belle fonction [(#ENV|affiche_env)] serait pratique
1378
-		if ($src) {
1379
-			$p->code = '(is_array($a = (' . $src . ')) ? serialize($a) : "")';
1380
-		} else {
1381
-			$p->code = 'serialize($Pile[0]??[])';
1382
-		}
1383
-	} else {
1384
-		if (!$src) {
1385
-			$src = '$Pile[0]??[]';
1386
-		}
1387
-		if ($_sinon) {
1388
-			$p->code = "sinon(table_valeur($src, (string)$_nom, null), $_sinon)";
1389
-		} else {
1390
-			$p->code = "table_valeur($src, (string)$_nom, null)";
1391
-		}
1392
-	}
1375
+    if (!$_nom) {
1376
+        // cas de #ENV sans argument : on retourne le serialize() du tableau
1377
+        // une belle fonction [(#ENV|affiche_env)] serait pratique
1378
+        if ($src) {
1379
+            $p->code = '(is_array($a = (' . $src . ')) ? serialize($a) : "")';
1380
+        } else {
1381
+            $p->code = 'serialize($Pile[0]??[])';
1382
+        }
1383
+    } else {
1384
+        if (!$src) {
1385
+            $src = '$Pile[0]??[]';
1386
+        }
1387
+        if ($_sinon) {
1388
+            $p->code = "sinon(table_valeur($src, (string)$_nom, null), $_sinon)";
1389
+        } else {
1390
+            $p->code = "table_valeur($src, (string)$_nom, null)";
1391
+        }
1392
+    }
1393 1393
 
1394
-	#$p->interdire_scripts = true;
1394
+    #$p->interdire_scripts = true;
1395 1395
 
1396
-	return $p;
1396
+    return $p;
1397 1397
 }
1398 1398
 
1399 1399
 /**
@@ -1423,16 +1423,16 @@  discard block
 block discarded – undo
1423 1423
  *     Pile completée du code PHP d'exécution de la balise
1424 1424
  */
1425 1425
 function balise_CONFIG_dist($p) {
1426
-	if (!$arg = interprete_argument_balise(1, $p)) {
1427
-		$arg = "''";
1428
-	}
1429
-	$_sinon = interprete_argument_balise(2, $p);
1430
-	$_unserialize = sinon(interprete_argument_balise(3, $p), 'false');
1426
+    if (!$arg = interprete_argument_balise(1, $p)) {
1427
+        $arg = "''";
1428
+    }
1429
+    $_sinon = interprete_argument_balise(2, $p);
1430
+    $_unserialize = sinon(interprete_argument_balise(3, $p), 'false');
1431 1431
 
1432
-	$p->code = '(include_spip(\'inc/config\')?lire_config(' . $arg . ',' .
1433
-		($_sinon && $_sinon != "''" ? $_sinon : 'null') . ',' . $_unserialize . "):'')";
1432
+    $p->code = '(include_spip(\'inc/config\')?lire_config(' . $arg . ',' .
1433
+        ($_sinon && $_sinon != "''" ? $_sinon : 'null') . ',' . $_unserialize . "):'')";
1434 1434
 
1435
-	return $p;
1435
+    return $p;
1436 1436
 }
1437 1437
 
1438 1438
 
@@ -1455,10 +1455,10 @@  discard block
 block discarded – undo
1455 1455
  *     Pile completée du code PHP d'exécution de la balise
1456 1456
  */
1457 1457
 function balise_CONNECT_dist($p) {
1458
-	$p->code = '($connect ? $connect : NULL)';
1459
-	$p->interdire_scripts = false;
1458
+    $p->code = '($connect ? $connect : NULL)';
1459
+    $p->interdire_scripts = false;
1460 1460
 
1461
-	return $p;
1461
+    return $p;
1462 1462
 }
1463 1463
 
1464 1464
 
@@ -1486,15 +1486,15 @@  discard block
 block discarded – undo
1486 1486
  *     Pile completée du code PHP d'exécution de la balise
1487 1487
  **/
1488 1488
 function balise_SESSION_dist($p) {
1489
-	$p->descr['session'] = true;
1489
+    $p->descr['session'] = true;
1490 1490
 
1491
-	$f = function_exists('balise_ENV')
1492
-		? 'balise_ENV'
1493
-		: 'balise_ENV_dist';
1491
+    $f = function_exists('balise_ENV')
1492
+        ? 'balise_ENV'
1493
+        : 'balise_ENV_dist';
1494 1494
 
1495
-	$p = $f($p, '$GLOBALS["visiteur_session"]??[]');
1495
+    $p = $f($p, '$GLOBALS["visiteur_session"]??[]');
1496 1496
 
1497
-	return $p;
1497
+    return $p;
1498 1498
 }
1499 1499
 
1500 1500
 
@@ -1517,18 +1517,18 @@  discard block
 block discarded – undo
1517 1517
  *     Pile completée du code PHP d'exécution de la balise
1518 1518
  **/
1519 1519
 function balise_SESSION_SET_dist($p) {
1520
-	$_nom = interprete_argument_balise(1, $p);
1521
-	$_val = interprete_argument_balise(2, $p);
1522
-	if (!$_nom or !$_val) {
1523
-		$err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'SESSION_SET']];
1524
-		erreur_squelette($err_b_s_a, $p);
1525
-	} else {
1526
-		$p->code = '(include_spip("inc/session") AND session_set(' . $_nom . ',' . $_val . '))';
1527
-	}
1520
+    $_nom = interprete_argument_balise(1, $p);
1521
+    $_val = interprete_argument_balise(2, $p);
1522
+    if (!$_nom or !$_val) {
1523
+        $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'SESSION_SET']];
1524
+        erreur_squelette($err_b_s_a, $p);
1525
+    } else {
1526
+        $p->code = '(include_spip("inc/session") AND session_set(' . $_nom . ',' . $_val . '))';
1527
+    }
1528 1528
 
1529
-	$p->interdire_scripts = false;
1529
+    $p->interdire_scripts = false;
1530 1530
 
1531
-	return $p;
1531
+    return $p;
1532 1532
 }
1533 1533
 
1534 1534
 
@@ -1559,30 +1559,30 @@  discard block
 block discarded – undo
1559 1559
  *     Pile completée du code PHP d'exécution de la balise
1560 1560
  **/
1561 1561
 function balise_EVAL_dist($p) {
1562
-	$php = interprete_argument_balise(1, $p);
1563
-	if ($php) {
1564
-		# optimisation sur les #EVAL{une expression sans #BALISE}
1565
-		# attention au commentaire "// x signes" qui precede
1566
-		if (
1567
-			preg_match(
1568
-				",^([[:space:]]*//[^\n]*\n)'([^']+)'$,ms",
1569
-				$php,
1570
-				$r
1571
-			)
1572
-		) {
1573
-			$p->code = /* $r[1]. */
1574
-				'(' . $r[2] . ')';
1575
-		} else {
1576
-			$p->code = "eval('return '.$php.';')";
1577
-		}
1578
-	} else {
1579
-		$msg = ['zbug_balise_sans_argument', ['balise' => ' EVAL']];
1580
-		erreur_squelette($msg, $p);
1581
-	}
1582
-
1583
-	#$p->interdire_scripts = true;
1584
-
1585
-	return $p;
1562
+    $php = interprete_argument_balise(1, $p);
1563
+    if ($php) {
1564
+        # optimisation sur les #EVAL{une expression sans #BALISE}
1565
+        # attention au commentaire "// x signes" qui precede
1566
+        if (
1567
+            preg_match(
1568
+                ",^([[:space:]]*//[^\n]*\n)'([^']+)'$,ms",
1569
+                $php,
1570
+                $r
1571
+            )
1572
+        ) {
1573
+            $p->code = /* $r[1]. */
1574
+                '(' . $r[2] . ')';
1575
+        } else {
1576
+            $p->code = "eval('return '.$php.';')";
1577
+        }
1578
+    } else {
1579
+        $msg = ['zbug_balise_sans_argument', ['balise' => ' EVAL']];
1580
+        erreur_squelette($msg, $p);
1581
+    }
1582
+
1583
+    #$p->interdire_scripts = true;
1584
+
1585
+    return $p;
1586 1586
 }
1587 1587
 
1588 1588
 
@@ -1612,19 +1612,19 @@  discard block
 block discarded – undo
1612 1612
  **/
1613 1613
 function balise_CHAMP_SQL_dist($p) {
1614 1614
 
1615
-	if (
1616
-		$p->param
1617
-		and isset($p->param[0][1][0])
1618
-		and $champ = ($p->param[0][1][0]->texte)
1619
-	) {
1620
-		$p->code = champ_sql($champ, $p);
1621
-	} else {
1622
-		$err_b_s_a = ['zbug_balise_sans_argument', ['balise' => ' CHAMP_SQL']];
1623
-		erreur_squelette($err_b_s_a, $p);
1624
-	}
1615
+    if (
1616
+        $p->param
1617
+        and isset($p->param[0][1][0])
1618
+        and $champ = ($p->param[0][1][0]->texte)
1619
+    ) {
1620
+        $p->code = champ_sql($champ, $p);
1621
+    } else {
1622
+        $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => ' CHAMP_SQL']];
1623
+        erreur_squelette($err_b_s_a, $p);
1624
+    }
1625 1625
 
1626
-	#$p->interdire_scripts = true;
1627
-	return $p;
1626
+    #$p->interdire_scripts = true;
1627
+    return $p;
1628 1628
 }
1629 1629
 
1630 1630
 /**
@@ -1650,13 +1650,13 @@  discard block
 block discarded – undo
1650 1650
  *     Pile complétée par le code à générer
1651 1651
  **/
1652 1652
 function balise_VAL_dist($p) {
1653
-	$p->code = interprete_argument_balise(1, $p) ?? '';
1654
-	if (!strlen($p->code)) {
1655
-		$p->code = "''";
1656
-	}
1657
-	$p->interdire_scripts = false;
1653
+    $p->code = interprete_argument_balise(1, $p) ?? '';
1654
+    if (!strlen($p->code)) {
1655
+        $p->code = "''";
1656
+    }
1657
+    $p->interdire_scripts = false;
1658 1658
 
1659
-	return $p;
1659
+    return $p;
1660 1660
 }
1661 1661
 
1662 1662
 /**
@@ -1685,10 +1685,10 @@  discard block
 block discarded – undo
1685 1685
  *     Pile complétée par le code à générer
1686 1686
  **/
1687 1687
 function balise_REM_dist($p) {
1688
-	$p->code = "''";
1689
-	$p->interdire_scripts = false;
1688
+    $p->code = "''";
1689
+    $p->interdire_scripts = false;
1690 1690
 
1691
-	return $p;
1691
+    return $p;
1692 1692
 }
1693 1693
 
1694 1694
 /**
@@ -1698,10 +1698,10 @@  discard block
 block discarded – undo
1698 1698
  * @return mixed
1699 1699
  */
1700 1700
 function balise_NULL_dist($p) {
1701
-	$p->code = 'null';
1702
-	$p->interdire_scripts = false;
1701
+    $p->code = 'null';
1702
+    $p->interdire_scripts = false;
1703 1703
 
1704
-	return $p;
1704
+    return $p;
1705 1705
 }
1706 1706
 
1707 1707
 
@@ -1725,18 +1725,18 @@  discard block
 block discarded – undo
1725 1725
  **/
1726 1726
 function balise_HTTP_HEADER_dist($p) {
1727 1727
 
1728
-	$header = interprete_argument_balise(1, $p);
1729
-	if (!$header) {
1730
-		$err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'HTTP_HEADER']];
1731
-		erreur_squelette($err_b_s_a, $p);
1732
-	} else {
1733
-		$p->code = "'<'.'?php header(' . _q("
1734
-			. $header
1735
-			. ") . '); ?'.'>'";
1736
-	}
1737
-	$p->interdire_scripts = false;
1728
+    $header = interprete_argument_balise(1, $p);
1729
+    if (!$header) {
1730
+        $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'HTTP_HEADER']];
1731
+        erreur_squelette($err_b_s_a, $p);
1732
+    } else {
1733
+        $p->code = "'<'.'?php header(' . _q("
1734
+            . $header
1735
+            . ") . '); ?'.'>'";
1736
+    }
1737
+    $p->interdire_scripts = false;
1738 1738
 
1739
-	return $p;
1739
+    return $p;
1740 1740
 }
1741 1741
 
1742 1742
 
@@ -1761,22 +1761,22 @@  discard block
 block discarded – undo
1761 1761
  *     Pile complétée par le code à générer
1762 1762
  **/
1763 1763
 function balise_FILTRE_dist($p) {
1764
-	if ($p->param) {
1765
-		$args = [];
1766
-		foreach ($p->param as $i => $ignore) {
1767
-			$args[] = interprete_argument_balise($i + 1, $p);
1768
-		}
1769
-		$p->code = "'<' . '"
1770
-			. '?php header("X-Spip-Filtre: \'.'
1771
-			. join('.\'|\'.', $args)
1772
-			. " . '\"); ?'.'>'";
1764
+    if ($p->param) {
1765
+        $args = [];
1766
+        foreach ($p->param as $i => $ignore) {
1767
+            $args[] = interprete_argument_balise($i + 1, $p);
1768
+        }
1769
+        $p->code = "'<' . '"
1770
+            . '?php header("X-Spip-Filtre: \'.'
1771
+            . join('.\'|\'.', $args)
1772
+            . " . '\"); ?'.'>'";
1773 1773
 
1774
-		$p->interdire_scripts = false;
1774
+        $p->interdire_scripts = false;
1775 1775
 
1776
-		return $p;
1777
-	}
1776
+        return $p;
1777
+    }
1778 1778
 
1779
-	return null;
1779
+    return null;
1780 1780
 }
1781 1781
 
1782 1782
 
@@ -1812,55 +1812,55 @@  discard block
 block discarded – undo
1812 1812
  **/
1813 1813
 function balise_CACHE_dist($p) {
1814 1814
 
1815
-	if ($p->param) {
1816
-		$duree = valeur_numerique($p->param[0][1][0]->texte);
1817
-
1818
-		// noter la duree du cache dans un entete proprietaire
1819
-
1820
-		$code = "'<'.'" . '?php header("X-Spip-Cache: '
1821
-			. $duree
1822
-			. '"); ?' . "'.'>'";
1823
-
1824
-		// Remplir le header Cache-Control
1825
-		// cas #CACHE{0}
1826
-		if ($duree == 0) {
1827
-			$code .= ".'<'.'"
1828
-				. '?php header("Cache-Control: no-cache, must-revalidate"); ?'
1829
-				. "'.'><'.'"
1830
-				. '?php header("Pragma: no-cache"); ?'
1831
-				. "'.'>'";
1832
-		}
1833
-
1834
-		// recuperer les parametres suivants
1835
-		$i = 1;
1836
-		while (isset($p->param[0][++$i])) {
1837
-			$pa = ($p->param[0][$i][0]->texte);
1838
-
1839
-			if (
1840
-				$pa == 'cache-client'
1841
-				and $duree > 0
1842
-			) {
1843
-				$code .= ".'<'.'" . '?php header("Cache-Control: max-age='
1844
-					. $duree
1845
-					. '"); ?' . "'.'>'";
1846
-				// il semble logique, si on cache-client, de ne pas invalider
1847
-				$pa = 'statique';
1848
-			}
1849
-
1850
-			if (
1851
-				$pa == 'statique'
1852
-				and $duree > 0
1853
-			) {
1854
-				$code .= ".'<'.'" . '?php header("X-Spip-Statique: oui"); ?' . "'.'>'";
1855
-			}
1856
-		}
1857
-	} else {
1858
-		$code = "''";
1859
-	}
1860
-	$p->code = $code;
1861
-	$p->interdire_scripts = false;
1862
-
1863
-	return $p;
1815
+    if ($p->param) {
1816
+        $duree = valeur_numerique($p->param[0][1][0]->texte);
1817
+
1818
+        // noter la duree du cache dans un entete proprietaire
1819
+
1820
+        $code = "'<'.'" . '?php header("X-Spip-Cache: '
1821
+            . $duree
1822
+            . '"); ?' . "'.'>'";
1823
+
1824
+        // Remplir le header Cache-Control
1825
+        // cas #CACHE{0}
1826
+        if ($duree == 0) {
1827
+            $code .= ".'<'.'"
1828
+                . '?php header("Cache-Control: no-cache, must-revalidate"); ?'
1829
+                . "'.'><'.'"
1830
+                . '?php header("Pragma: no-cache"); ?'
1831
+                . "'.'>'";
1832
+        }
1833
+
1834
+        // recuperer les parametres suivants
1835
+        $i = 1;
1836
+        while (isset($p->param[0][++$i])) {
1837
+            $pa = ($p->param[0][$i][0]->texte);
1838
+
1839
+            if (
1840
+                $pa == 'cache-client'
1841
+                and $duree > 0
1842
+            ) {
1843
+                $code .= ".'<'.'" . '?php header("Cache-Control: max-age='
1844
+                    . $duree
1845
+                    . '"); ?' . "'.'>'";
1846
+                // il semble logique, si on cache-client, de ne pas invalider
1847
+                $pa = 'statique';
1848
+            }
1849
+
1850
+            if (
1851
+                $pa == 'statique'
1852
+                and $duree > 0
1853
+            ) {
1854
+                $code .= ".'<'.'" . '?php header("X-Spip-Statique: oui"); ?' . "'.'>'";
1855
+            }
1856
+        }
1857
+    } else {
1858
+        $code = "''";
1859
+    }
1860
+    $p->code = $code;
1861
+    $p->interdire_scripts = false;
1862
+
1863
+    return $p;
1864 1864
 }
1865 1865
 
1866 1866
 
@@ -1892,13 +1892,13 @@  discard block
 block discarded – undo
1892 1892
  *     Pile complétée par le code à générer
1893 1893
  */
1894 1894
 function balise_INSERT_HEAD_dist($p) {
1895
-	$p->code = "'<'.'"
1896
-		. '?php header("X-Spip-Filtre: insert_head_css_conditionnel"); ?'
1897
-		. "'.'>'";
1898
-	$p->code .= ". pipeline('insert_head','<!-- insert_head -->')";
1899
-	$p->interdire_scripts = false;
1895
+    $p->code = "'<'.'"
1896
+        . '?php header("X-Spip-Filtre: insert_head_css_conditionnel"); ?'
1897
+        . "'.'>'";
1898
+    $p->code .= ". pipeline('insert_head','<!-- insert_head -->')";
1899
+    $p->interdire_scripts = false;
1900 1900
 
1901
-	return $p;
1901
+    return $p;
1902 1902
 }
1903 1903
 
1904 1904
 /**
@@ -1916,10 +1916,10 @@  discard block
 block discarded – undo
1916 1916
  *     Pile complétée par le code à générer
1917 1917
  */
1918 1918
 function balise_INSERT_HEAD_CSS_dist($p) {
1919
-	$p->code = "pipeline('insert_head_css','<!-- insert_head_css -->')";
1920
-	$p->interdire_scripts = false;
1919
+    $p->code = "pipeline('insert_head_css','<!-- insert_head_css -->')";
1920
+    $p->interdire_scripts = false;
1921 1921
 
1922
-	return $p;
1922
+    return $p;
1923 1923
 }
1924 1924
 
1925 1925
 /**
@@ -1934,11 +1934,11 @@  discard block
 block discarded – undo
1934 1934
  *     Pile complétée par le code à générer
1935 1935
  **/
1936 1936
 function balise_INCLUDE_dist($p) {
1937
-	if (function_exists('balise_INCLURE')) {
1938
-		return balise_INCLURE($p);
1939
-	} else {
1940
-		return balise_INCLURE_dist($p);
1941
-	}
1937
+    if (function_exists('balise_INCLURE')) {
1938
+        return balise_INCLURE($p);
1939
+    } else {
1940
+        return balise_INCLURE_dist($p);
1941
+    }
1942 1942
 }
1943 1943
 
1944 1944
 /**
@@ -1972,66 +1972,66 @@  discard block
 block discarded – undo
1972 1972
  *     Pile complétée par le code à générer
1973 1973
  **/
1974 1974
 function balise_INCLURE_dist($p) {
1975
-	$id_boucle = $p->id_boucle;
1976
-	// la lang n'est pas passe de facon automatique par argumenter
1977
-	// mais le sera pas recuperer_fond, sauf si etoile=>true est passe
1978
-	// en option
1979
-
1980
-	$_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $id_boucle, false, false);
1981
-
1982
-	// erreur de syntaxe = fond absent
1983
-	// (2 messages d'erreur SPIP pour le prix d'un, mais pas d'erreur PHP
1984
-	if (!$_contexte) {
1985
-		$_contexte = [];
1986
-	}
1987
-
1988
-	if (isset($_contexte['fond'])) {
1989
-		$f = $_contexte['fond'];
1990
-		// toujours vrai :
1991
-		if (preg_match('/^.fond.\s*=>(.*)$/s', $f, $r)) {
1992
-			$f = $r[1];
1993
-			unset($_contexte['fond']);
1994
-		} else {
1995
-			spip_log('compilation de #INCLURE a revoir');
1996
-		}
1997
-
1998
-		// #INCLURE{doublons}
1999
-		if (isset($_contexte['doublons'])) {
2000
-			$_contexte['doublons'] = "'doublons' => \$doublons";
2001
-		}
2002
-
2003
-		// Critere d'inclusion {env} (et {self} pour compatibilite ascendante)
2004
-		$flag_env = false;
2005
-		if (isset($_contexte['env']) or isset($_contexte['self'])) {
2006
-			$flag_env = true;
2007
-			unset($_contexte['env']);
2008
-		}
2009
-
2010
-		$_options = [];
2011
-		if (isset($_contexte['ajax'])) {
2012
-			$_options[] = preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']);
2013
-			unset($_contexte['ajax']);
2014
-		}
2015
-		if ($p->etoile) {
2016
-			$_options[] = "'etoile'=>true";
2017
-		}
2018
-		$_options[] = "'compil'=>array(" . memoriser_contexte_compil($p) . ')';
2019
-
2020
-		$_l = 'array(' . join(",\n\t", $_contexte) . ')';
2021
-		if ($flag_env) {
2022
-			$_l = "array_merge(\$Pile[0],$_l)";
2023
-		}
2024
-
2025
-		$p->code = sprintf(CODE_RECUPERER_FOND, $f, $_l, join(',', $_options), "_request('connect') ?? ''");
2026
-	} elseif (!isset($_contexte[1])) {
2027
-		$msg = ['zbug_balise_sans_argument', ['balise' => ' INCLURE']];
2028
-		erreur_squelette($msg, $p);
2029
-	} else {
2030
-		$p->code = 'charge_scripts(' . $_contexte[1] . ',false)';
2031
-	}
2032
-
2033
-	$p->interdire_scripts = false; // la securite est assuree par recuperer_fond
2034
-	return $p;
1975
+    $id_boucle = $p->id_boucle;
1976
+    // la lang n'est pas passe de facon automatique par argumenter
1977
+    // mais le sera pas recuperer_fond, sauf si etoile=>true est passe
1978
+    // en option
1979
+
1980
+    $_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $id_boucle, false, false);
1981
+
1982
+    // erreur de syntaxe = fond absent
1983
+    // (2 messages d'erreur SPIP pour le prix d'un, mais pas d'erreur PHP
1984
+    if (!$_contexte) {
1985
+        $_contexte = [];
1986
+    }
1987
+
1988
+    if (isset($_contexte['fond'])) {
1989
+        $f = $_contexte['fond'];
1990
+        // toujours vrai :
1991
+        if (preg_match('/^.fond.\s*=>(.*)$/s', $f, $r)) {
1992
+            $f = $r[1];
1993
+            unset($_contexte['fond']);
1994
+        } else {
1995
+            spip_log('compilation de #INCLURE a revoir');
1996
+        }
1997
+
1998
+        // #INCLURE{doublons}
1999
+        if (isset($_contexte['doublons'])) {
2000
+            $_contexte['doublons'] = "'doublons' => \$doublons";
2001
+        }
2002
+
2003
+        // Critere d'inclusion {env} (et {self} pour compatibilite ascendante)
2004
+        $flag_env = false;
2005
+        if (isset($_contexte['env']) or isset($_contexte['self'])) {
2006
+            $flag_env = true;
2007
+            unset($_contexte['env']);
2008
+        }
2009
+
2010
+        $_options = [];
2011
+        if (isset($_contexte['ajax'])) {
2012
+            $_options[] = preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']);
2013
+            unset($_contexte['ajax']);
2014
+        }
2015
+        if ($p->etoile) {
2016
+            $_options[] = "'etoile'=>true";
2017
+        }
2018
+        $_options[] = "'compil'=>array(" . memoriser_contexte_compil($p) . ')';
2019
+
2020
+        $_l = 'array(' . join(",\n\t", $_contexte) . ')';
2021
+        if ($flag_env) {
2022
+            $_l = "array_merge(\$Pile[0],$_l)";
2023
+        }
2024
+
2025
+        $p->code = sprintf(CODE_RECUPERER_FOND, $f, $_l, join(',', $_options), "_request('connect') ?? ''");
2026
+    } elseif (!isset($_contexte[1])) {
2027
+        $msg = ['zbug_balise_sans_argument', ['balise' => ' INCLURE']];
2028
+        erreur_squelette($msg, $p);
2029
+    } else {
2030
+        $p->code = 'charge_scripts(' . $_contexte[1] . ',false)';
2031
+    }
2032
+
2033
+    $p->interdire_scripts = false; // la securite est assuree par recuperer_fond
2034
+    return $p;
2035 2035
 }
2036 2036
 
2037 2037
 
@@ -2059,69 +2059,69 @@  discard block
 block discarded – undo
2059 2059
  **/
2060 2060
 function balise_MODELE_dist($p) {
2061 2061
 
2062
-	$_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $p->id_boucle, false);
2063
-
2064
-	// erreur de syntaxe = fond absent
2065
-	// (2 messages d'erreur SPIP pour le prix d'un, mais pas d'erreur PHP
2066
-	if (!$_contexte) {
2067
-		$_contexte = [];
2068
-	}
2069
-
2070
-	if (!isset($_contexte[1])) {
2071
-		$msg = ['zbug_balise_sans_argument', ['balise' => ' MODELE']];
2072
-		erreur_squelette($msg, $p);
2073
-	} else {
2074
-		$nom = $_contexte[1];
2075
-		unset($_contexte[1]);
2076
-
2077
-		if (preg_match("/^\s*'[^']*'/s", $nom)) {
2078
-			$nom = "'modeles/" . substr($nom, 1);
2079
-		} else {
2080
-			$nom = "'modeles/' . $nom";
2081
-		}
2082
-
2083
-		$flag_env = false;
2084
-		if (isset($_contexte['env'])) {
2085
-			$flag_env = true;
2086
-			unset($_contexte['env']);
2087
-		}
2088
-
2089
-		// Incoherence dans la syntaxe du contexte. A revoir.
2090
-		// Reserver la cle primaire de la boucle courante si elle existe
2091
-		if (isset($p->boucles[$p->id_boucle]->primary)) {
2092
-			$primary = $p->boucles[$p->id_boucle]->primary;
2093
-			if (!strpos($primary, ',')) {
2094
-				$id = champ_sql($primary, $p);
2095
-				$_contexte[] = "'$primary'=>" . $id;
2096
-				$_contexte[] = "'id'=>" . $id;
2097
-			}
2098
-		}
2099
-		$_contexte[] = "'recurs'=>(++\$recurs)";
2100
-		$connect = '';
2101
-		if (isset($p->boucles[$p->id_boucle])) {
2102
-			$connect = $p->boucles[$p->id_boucle]->sql_serveur;
2103
-		}
2104
-
2105
-		$_options = memoriser_contexte_compil($p);
2106
-		$_options = "'compil'=>array($_options), 'trim'=>true";
2107
-		if (isset($_contexte['ajax'])) {
2108
-			$_options .= ', ' . preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']);
2109
-			unset($_contexte['ajax']);
2110
-		}
2111
-
2112
-		$_l = 'array(' . join(",\n\t", $_contexte) . ')';
2113
-		if ($flag_env) {
2114
-			$_l = "array_merge(\$Pile[0],$_l)";
2115
-		}
2116
-
2117
-		$page = sprintf(CODE_RECUPERER_FOND, $nom, $_l, $_options, _q($connect));
2118
-
2119
-		$p->code = "\n\t(((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))>=5)? '' :\n\t$page)\n";
2120
-
2121
-		$p->interdire_scripts = false; // securite assuree par le squelette
2122
-	}
2123
-
2124
-	return $p;
2062
+    $_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $p->id_boucle, false);
2063
+
2064
+    // erreur de syntaxe = fond absent
2065
+    // (2 messages d'erreur SPIP pour le prix d'un, mais pas d'erreur PHP
2066
+    if (!$_contexte) {
2067
+        $_contexte = [];
2068
+    }
2069
+
2070
+    if (!isset($_contexte[1])) {
2071
+        $msg = ['zbug_balise_sans_argument', ['balise' => ' MODELE']];
2072
+        erreur_squelette($msg, $p);
2073
+    } else {
2074
+        $nom = $_contexte[1];
2075
+        unset($_contexte[1]);
2076
+
2077
+        if (preg_match("/^\s*'[^']*'/s", $nom)) {
2078
+            $nom = "'modeles/" . substr($nom, 1);
2079
+        } else {
2080
+            $nom = "'modeles/' . $nom";
2081
+        }
2082
+
2083
+        $flag_env = false;
2084
+        if (isset($_contexte['env'])) {
2085
+            $flag_env = true;
2086
+            unset($_contexte['env']);
2087
+        }
2088
+
2089
+        // Incoherence dans la syntaxe du contexte. A revoir.
2090
+        // Reserver la cle primaire de la boucle courante si elle existe
2091
+        if (isset($p->boucles[$p->id_boucle]->primary)) {
2092
+            $primary = $p->boucles[$p->id_boucle]->primary;
2093
+            if (!strpos($primary, ',')) {
2094
+                $id = champ_sql($primary, $p);
2095
+                $_contexte[] = "'$primary'=>" . $id;
2096
+                $_contexte[] = "'id'=>" . $id;
2097
+            }
2098
+        }
2099
+        $_contexte[] = "'recurs'=>(++\$recurs)";
2100
+        $connect = '';
2101
+        if (isset($p->boucles[$p->id_boucle])) {
2102
+            $connect = $p->boucles[$p->id_boucle]->sql_serveur;
2103
+        }
2104
+
2105
+        $_options = memoriser_contexte_compil($p);
2106
+        $_options = "'compil'=>array($_options), 'trim'=>true";
2107
+        if (isset($_contexte['ajax'])) {
2108
+            $_options .= ', ' . preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']);
2109
+            unset($_contexte['ajax']);
2110
+        }
2111
+
2112
+        $_l = 'array(' . join(",\n\t", $_contexte) . ')';
2113
+        if ($flag_env) {
2114
+            $_l = "array_merge(\$Pile[0],$_l)";
2115
+        }
2116
+
2117
+        $page = sprintf(CODE_RECUPERER_FOND, $nom, $_l, $_options, _q($connect));
2118
+
2119
+        $p->code = "\n\t(((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))>=5)? '' :\n\t$page)\n";
2120
+
2121
+        $p->interdire_scripts = false; // securite assuree par le squelette
2122
+    }
2123
+
2124
+    return $p;
2125 2125
 }
2126 2126
 
2127 2127
 
@@ -2145,21 +2145,21 @@  discard block
 block discarded – undo
2145 2145
  *     Pile complétée par le code à générer
2146 2146
  **/
2147 2147
 function balise_SET_dist($p) {
2148
-	$_nom = interprete_argument_balise(1, $p);
2149
-	$_val = interprete_argument_balise(2, $p);
2148
+    $_nom = interprete_argument_balise(1, $p);
2149
+    $_val = interprete_argument_balise(2, $p);
2150 2150
 
2151
-	if (!$_nom or !$_val) {
2152
-		$err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'SET']];
2153
-		erreur_squelette($err_b_s_a, $p);
2154
-	}
2155
-	// affectation $_zzz inutile, mais permet de contourner un bug OpCode cache sous PHP 5.5.4
2156
-	// cf https://bugs.php.net/bug.php?id=65845
2157
-	else {
2158
-		$p->code = "vide(\$Pile['vars'][\$_zzz=(string)$_nom] = $_val)";
2159
-	}
2151
+    if (!$_nom or !$_val) {
2152
+        $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'SET']];
2153
+        erreur_squelette($err_b_s_a, $p);
2154
+    }
2155
+    // affectation $_zzz inutile, mais permet de contourner un bug OpCode cache sous PHP 5.5.4
2156
+    // cf https://bugs.php.net/bug.php?id=65845
2157
+    else {
2158
+        $p->code = "vide(\$Pile['vars'][\$_zzz=(string)$_nom] = $_val)";
2159
+    }
2160 2160
 
2161
-	$p->interdire_scripts = false; // la balise ne renvoie rien
2162
-	return $p;
2161
+    $p->interdire_scripts = false; // la balise ne renvoie rien
2162
+    return $p;
2163 2163
 }
2164 2164
 
2165 2165
 
@@ -2189,12 +2189,12 @@  discard block
 block discarded – undo
2189 2189
  *     Pile complétée par le code à générer
2190 2190
  **/
2191 2191
 function balise_GET_dist($p) {
2192
-	$p->interdire_scripts = false; // le contenu vient de #SET, donc il est de confiance
2193
-	if (function_exists('balise_ENV')) {
2194
-		return balise_ENV($p, '$Pile["vars"]??[]');
2195
-	} else {
2196
-		return balise_ENV_dist($p, '$Pile["vars"]??[]');
2197
-	}
2192
+    $p->interdire_scripts = false; // le contenu vient de #SET, donc il est de confiance
2193
+    if (function_exists('balise_ENV')) {
2194
+        return balise_ENV($p, '$Pile["vars"]??[]');
2195
+    } else {
2196
+        return balise_ENV_dist($p, '$Pile["vars"]??[]');
2197
+    }
2198 2198
 }
2199 2199
 
2200 2200
 
@@ -2217,22 +2217,22 @@  discard block
 block discarded – undo
2217 2217
  *     Pile complétée par le code à générer
2218 2218
  **/
2219 2219
 function balise_DOUBLONS_dist($p) {
2220
-	if ($type = interprete_argument_balise(1, $p)) {
2221
-		if ($famille = interprete_argument_balise(2, $p)) {
2222
-			$type .= '.' . $famille;
2223
-		}
2224
-		$p->code = '(isset($doublons[' . $type . ']) ? $doublons[' . $type . '] : "")';
2225
-		if (!$p->etoile) {
2226
-			$p->code = 'array_filter(array_map("intval",explode(",",'
2227
-				. $p->code . ')))';
2228
-		}
2229
-	} else {
2230
-		$p->code = '$doublons';
2231
-	}
2220
+    if ($type = interprete_argument_balise(1, $p)) {
2221
+        if ($famille = interprete_argument_balise(2, $p)) {
2222
+            $type .= '.' . $famille;
2223
+        }
2224
+        $p->code = '(isset($doublons[' . $type . ']) ? $doublons[' . $type . '] : "")';
2225
+        if (!$p->etoile) {
2226
+            $p->code = 'array_filter(array_map("intval",explode(",",'
2227
+                . $p->code . ')))';
2228
+        }
2229
+    } else {
2230
+        $p->code = '$doublons';
2231
+    }
2232 2232
 
2233
-	$p->interdire_scripts = false;
2233
+    $p->interdire_scripts = false;
2234 2234
 
2235
-	return $p;
2235
+    return $p;
2236 2236
 }
2237 2237
 
2238 2238
 
@@ -2255,18 +2255,18 @@  discard block
 block discarded – undo
2255 2255
  *     Pile complétée par le code à générer
2256 2256
  **/
2257 2257
 function balise_PIPELINE_dist($p) {
2258
-	$_pipe = interprete_argument_balise(1, $p);
2259
-	if (!$_pipe) {
2260
-		$err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'PIPELINE']];
2261
-		erreur_squelette($err_b_s_a, $p);
2262
-	} else {
2263
-		$_flux = interprete_argument_balise(2, $p);
2264
-		$_flux = $_flux ?: "''";
2265
-		$p->code = "pipeline( $_pipe , $_flux )";
2266
-		$p->interdire_scripts = false;
2267
-	}
2258
+    $_pipe = interprete_argument_balise(1, $p);
2259
+    if (!$_pipe) {
2260
+        $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'PIPELINE']];
2261
+        erreur_squelette($err_b_s_a, $p);
2262
+    } else {
2263
+        $_flux = interprete_argument_balise(2, $p);
2264
+        $_flux = $_flux ?: "''";
2265
+        $p->code = "pipeline( $_pipe , $_flux )";
2266
+        $p->interdire_scripts = false;
2267
+    }
2268 2268
 
2269
-	return $p;
2269
+    return $p;
2270 2270
 }
2271 2271
 
2272 2272
 
@@ -2291,10 +2291,10 @@  discard block
 block discarded – undo
2291 2291
  *     Pile complétée par le code à générer
2292 2292
  **/
2293 2293
 function balise_EDIT_dist($p) {
2294
-	$p->code = "''";
2295
-	$p->interdire_scripts = false;
2294
+    $p->code = "''";
2295
+    $p->interdire_scripts = false;
2296 2296
 
2297
-	return $p;
2297
+    return $p;
2298 2298
 }
2299 2299
 
2300 2300
 
@@ -2317,11 +2317,11 @@  discard block
 block discarded – undo
2317 2317
  *     Pile complétée par le code à générer
2318 2318
  **/
2319 2319
 function balise_TOTAL_UNIQUE_dist($p) {
2320
-	$_famille = interprete_argument_balise(1, $p);
2321
-	$_famille = $_famille ?: "''";
2322
-	$p->code = "unique('', $_famille, true)";
2320
+    $_famille = interprete_argument_balise(1, $p);
2321
+    $_famille = $_famille ?: "''";
2322
+    $p->code = "unique('', $_famille, true)";
2323 2323
 
2324
-	return $p;
2324
+    return $p;
2325 2325
 }
2326 2326
 
2327 2327
 /**
@@ -2344,19 +2344,19 @@  discard block
 block discarded – undo
2344 2344
  *     Pile complétée par le code à générer
2345 2345
  **/
2346 2346
 function balise_ARRAY_dist($p) {
2347
-	$_code = [];
2348
-	$n = 1;
2349
-	do {
2350
-		$_key = interprete_argument_balise($n++, $p);
2351
-		$_val = interprete_argument_balise($n++, $p);
2352
-		if ($_key and $_val) {
2353
-			$_code[] = "$_key => $_val";
2354
-		}
2355
-	} while ($_key && $_val);
2356
-	$p->code = 'array(' . join(', ', $_code) . ')';
2357
-	$p->interdire_scripts = false;
2347
+    $_code = [];
2348
+    $n = 1;
2349
+    do {
2350
+        $_key = interprete_argument_balise($n++, $p);
2351
+        $_val = interprete_argument_balise($n++, $p);
2352
+        if ($_key and $_val) {
2353
+            $_code[] = "$_key => $_val";
2354
+        }
2355
+    } while ($_key && $_val);
2356
+    $p->code = 'array(' . join(', ', $_code) . ')';
2357
+    $p->interdire_scripts = false;
2358 2358
 
2359
-	return $p;
2359
+    return $p;
2360 2360
 }
2361 2361
 
2362 2362
 /**
@@ -2375,15 +2375,15 @@  discard block
 block discarded – undo
2375 2375
  *     Pile complétée par le code à générer
2376 2376
  */
2377 2377
 function balise_LISTE_dist($p) {
2378
-	$_code = [];
2379
-	$n = 1;
2380
-	while ($_val = interprete_argument_balise($n++, $p)) {
2381
-		$_code[] = $_val;
2382
-	}
2383
-	$p->code = 'array(' . join(', ', $_code) . ')';
2384
-	$p->interdire_scripts = false;
2378
+    $_code = [];
2379
+    $n = 1;
2380
+    while ($_val = interprete_argument_balise($n++, $p)) {
2381
+        $_code[] = $_val;
2382
+    }
2383
+    $p->code = 'array(' . join(', ', $_code) . ')';
2384
+    $p->interdire_scripts = false;
2385 2385
 
2386
-	return $p;
2386
+    return $p;
2387 2387
 }
2388 2388
 
2389 2389
 
@@ -2417,21 +2417,21 @@  discard block
 block discarded – undo
2417 2417
  *     Pile complétée par le code à générer
2418 2418
  **/
2419 2419
 function balise_AUTORISER_dist($p) {
2420
-	$_code = [];
2421
-	$p->descr['session'] = true; // faire un cache par session
2420
+    $_code = [];
2421
+    $p->descr['session'] = true; // faire un cache par session
2422 2422
 
2423
-	$n = 1;
2424
-	while ($_v = interprete_argument_balise($n++, $p)) {
2425
-		$_code[] = $_v;
2426
-	}
2423
+    $n = 1;
2424
+    while ($_v = interprete_argument_balise($n++, $p)) {
2425
+        $_code[] = $_v;
2426
+    }
2427 2427
 
2428
-	$p->code = '((function_exists("autoriser")||include_spip("inc/autoriser"))&&autoriser(' . join(
2429
-		', ',
2430
-		$_code
2431
-	) . ')?" ":"")';
2432
-	$p->interdire_scripts = false;
2428
+    $p->code = '((function_exists("autoriser")||include_spip("inc/autoriser"))&&autoriser(' . join(
2429
+        ', ',
2430
+        $_code
2431
+    ) . ')?" ":"")';
2432
+    $p->interdire_scripts = false;
2433 2433
 
2434
-	return $p;
2434
+    return $p;
2435 2435
 }
2436 2436
 
2437 2437
 
@@ -2455,15 +2455,15 @@  discard block
 block discarded – undo
2455 2455
  *     Pile complétée par le code à générer
2456 2456
  **/
2457 2457
 function balise_PLUGIN_dist($p) {
2458
-	$plugin = interprete_argument_balise(1, $p);
2459
-	$plugin = isset($plugin) ? str_replace('\'', '"', $plugin) : '""';
2460
-	$type_info = interprete_argument_balise(2, $p);
2461
-	$type_info = isset($type_info) ? str_replace('\'', '"', $type_info) : '"est_actif"';
2458
+    $plugin = interprete_argument_balise(1, $p);
2459
+    $plugin = isset($plugin) ? str_replace('\'', '"', $plugin) : '""';
2460
+    $type_info = interprete_argument_balise(2, $p);
2461
+    $type_info = isset($type_info) ? str_replace('\'', '"', $type_info) : '"est_actif"';
2462 2462
 
2463
-	$f = chercher_filtre('info_plugin');
2464
-	$p->code = $f . '(' . $plugin . ', ' . $type_info . ')';
2463
+    $f = chercher_filtre('info_plugin');
2464
+    $p->code = $f . '(' . $plugin . ', ' . $type_info . ')';
2465 2465
 
2466
-	return $p;
2466
+    return $p;
2467 2467
 }
2468 2468
 
2469 2469
 /**
@@ -2484,9 +2484,9 @@  discard block
 block discarded – undo
2484 2484
  *     Pile complétée par le code à générer
2485 2485
  **/
2486 2486
 function balise_AIDER_dist($p) {
2487
-	$_motif = interprete_argument_balise(1, $p);
2488
-	$p->code = "((\$aider=charger_fonction('aide','inc',true))?\$aider($_motif):'')";
2489
-	return $p;
2487
+    $_motif = interprete_argument_balise(1, $p);
2488
+    $p->code = "((\$aider=charger_fonction('aide','inc',true))?\$aider($_motif):'')";
2489
+    return $p;
2490 2490
 }
2491 2491
 
2492 2492
 /**
@@ -2512,16 +2512,16 @@  discard block
 block discarded – undo
2512 2512
  *     Pile complétée par le code à générer
2513 2513
  **/
2514 2514
 function balise_ACTION_FORMULAIRE($p) {
2515
-	if (!$_url = interprete_argument_balise(1, $p)) {
2516
-		$_url = "(\$Pile[0]['action'] ?? '')";
2517
-	}
2518
-	if (!$_form = interprete_argument_balise(2, $p)) {
2519
-		$_form = "(\$Pile[0]['form'] ?? '')";
2520
-	}
2521
-
2522
-	// envoyer le nom du formulaire que l'on traite
2523
-	// transmettre les eventuels args de la balise formulaire
2524
-	$p->code = "	'<span class=\"form-hidden\">' .
2515
+    if (!$_url = interprete_argument_balise(1, $p)) {
2516
+        $_url = "(\$Pile[0]['action'] ?? '')";
2517
+    }
2518
+    if (!$_form = interprete_argument_balise(2, $p)) {
2519
+        $_form = "(\$Pile[0]['form'] ?? '')";
2520
+    }
2521
+
2522
+    // envoyer le nom du formulaire que l'on traite
2523
+    // transmettre les eventuels args de la balise formulaire
2524
+    $p->code = "	'<span class=\"form-hidden\">' .
2525 2525
 	form_hidden($_url) .
2526 2526
 	'<input name=\'formulaire_action\' type=\'hidden\'
2527 2527
 		value=\'' . $_form . '\' />' .
@@ -2532,9 +2532,9 @@  discard block
 block discarded – undo
2532 2532
 	(\$Pile[0]['_hidden'] ?? '') .
2533 2533
 	'</span>'";
2534 2534
 
2535
-	$p->interdire_scripts = false;
2535
+    $p->interdire_scripts = false;
2536 2536
 
2537
-	return $p;
2537
+    return $p;
2538 2538
 }
2539 2539
 
2540 2540
 
@@ -2575,25 +2575,25 @@  discard block
 block discarded – undo
2575 2575
  */
2576 2576
 function balise_BOUTON_ACTION_dist($p) {
2577 2577
 
2578
-	$args = [];
2579
-	for ($k = 1; $k <= 6; $k++) {
2580
-		$_a = interprete_argument_balise($k, $p);
2581
-		if (!$_a) {
2582
-			$_a = "''";
2583
-		}
2584
-		$args[] = $_a;
2585
-	}
2586
-	// supprimer les args vides
2587
-	while (end($args) == "''" and count($args) > 2) {
2588
-		array_pop($args);
2589
-	}
2590
-	$args = implode(',', $args);
2578
+    $args = [];
2579
+    for ($k = 1; $k <= 6; $k++) {
2580
+        $_a = interprete_argument_balise($k, $p);
2581
+        if (!$_a) {
2582
+            $_a = "''";
2583
+        }
2584
+        $args[] = $_a;
2585
+    }
2586
+    // supprimer les args vides
2587
+    while (end($args) == "''" and count($args) > 2) {
2588
+        array_pop($args);
2589
+    }
2590
+    $args = implode(',', $args);
2591 2591
 
2592
-	$bouton_action = chercher_filtre('bouton_action');
2593
-	$p->code = "$bouton_action($args)";
2594
-	$p->interdire_scripts = false;
2592
+    $bouton_action = chercher_filtre('bouton_action');
2593
+    $p->code = "$bouton_action($args)";
2594
+    $p->interdire_scripts = false;
2595 2595
 
2596
-	return $p;
2596
+    return $p;
2597 2597
 }
2598 2598
 
2599 2599
 
@@ -2612,10 +2612,10 @@  discard block
 block discarded – undo
2612 2612
  *     Pile complétée par le code à générer
2613 2613
  */
2614 2614
 function balise_SLOGAN_SITE_SPIP_dist($p) {
2615
-	$p->code = "\$GLOBALS['meta']['slogan_site']";
2615
+    $p->code = "\$GLOBALS['meta']['slogan_site']";
2616 2616
 
2617
-	#$p->interdire_scripts = true;
2618
-	return $p;
2617
+    #$p->interdire_scripts = true;
2618
+    return $p;
2619 2619
 }
2620 2620
 
2621 2621
 
@@ -2639,10 +2639,10 @@  discard block
 block discarded – undo
2639 2639
  *     Pile complétée par le code à générer
2640 2640
  */
2641 2641
 function balise_HTML5_dist($p) {
2642
-	$p->code = html5_permis() ? "' '" : "''";
2643
-	$p->interdire_scripts = false;
2642
+    $p->code = html5_permis() ? "' '" : "''";
2643
+    $p->interdire_scripts = false;
2644 2644
 
2645
-	return $p;
2645
+    return $p;
2646 2646
 }
2647 2647
 
2648 2648
 
@@ -2668,58 +2668,58 @@  discard block
 block discarded – undo
2668 2668
  *     Pile complétée par le code à générer
2669 2669
  */
2670 2670
 function balise_TRI_dist($p, $liste = 'true') {
2671
-	$b = index_boucle_mere($p);
2672
-	// s'il n'y a pas de nom de boucle, on ne peut pas trier
2673
-	if ($b === '') {
2674
-		$msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
2675
-		erreur_squelette($msg, $p);
2676
-		$p->code = "''";
2671
+    $b = index_boucle_mere($p);
2672
+    // s'il n'y a pas de nom de boucle, on ne peut pas trier
2673
+    if ($b === '') {
2674
+        $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]];
2675
+        erreur_squelette($msg, $p);
2676
+        $p->code = "''";
2677 2677
 
2678
-		return $p;
2679
-	}
2680
-	$boucle = $p->boucles[$b];
2678
+        return $p;
2679
+    }
2680
+    $boucle = $p->boucles[$b];
2681 2681
 
2682
-	// s'il n'y a pas de tri_champ, c'est qu'on se trouve
2683
-	// dans un boucle recursive ou qu'on a oublie le critere {tri}
2684
-	if (!isset($boucle->modificateur['tri_champ'])) {
2685
-		$msg = ['zbug_champ_hors_critere', [
2686
-			'champ' => zbug_presenter_champ($p),
2687
-			'critere' => 'tri'
2688
-		]];
2689
-		erreur_squelette($msg, $p);
2690
-		$p->code = "''";
2682
+    // s'il n'y a pas de tri_champ, c'est qu'on se trouve
2683
+    // dans un boucle recursive ou qu'on a oublie le critere {tri}
2684
+    if (!isset($boucle->modificateur['tri_champ'])) {
2685
+        $msg = ['zbug_champ_hors_critere', [
2686
+            'champ' => zbug_presenter_champ($p),
2687
+            'critere' => 'tri'
2688
+        ]];
2689
+        erreur_squelette($msg, $p);
2690
+        $p->code = "''";
2691 2691
 
2692
-		return $p;
2693
-	}
2692
+        return $p;
2693
+    }
2694 2694
 
2695
-	// Différentes infos relatives au tri présentes dans les modificateurs
2696
-	$_tri_nom = $boucle->modificateur['tri_nom'] ; // nom du paramètre définissant le tri
2697
-	$_tri_champ = $boucle->modificateur['tri_champ']; // champ actuel utilisé le tri
2698
-	$_tri_sens = $boucle->modificateur['tri_sens']; // sens de tri actuel
2699
-	$_tri_liste_sens_defaut = $boucle->modificateur['tri_liste_sens_defaut']; // sens par défaut pour chaque champ
2695
+    // Différentes infos relatives au tri présentes dans les modificateurs
2696
+    $_tri_nom = $boucle->modificateur['tri_nom'] ; // nom du paramètre définissant le tri
2697
+    $_tri_champ = $boucle->modificateur['tri_champ']; // champ actuel utilisé le tri
2698
+    $_tri_sens = $boucle->modificateur['tri_sens']; // sens de tri actuel
2699
+    $_tri_liste_sens_defaut = $boucle->modificateur['tri_liste_sens_defaut']; // sens par défaut pour chaque champ
2700 2700
 
2701
-	$_champ_ou_sens = interprete_argument_balise(1, $p);
2702
-	// si pas de champ, renvoyer le critère de tri actuel
2703
-	if (!$_champ_ou_sens) {
2704
-		$p->code = $_tri_champ;
2701
+    $_champ_ou_sens = interprete_argument_balise(1, $p);
2702
+    // si pas de champ, renvoyer le critère de tri actuel
2703
+    if (!$_champ_ou_sens) {
2704
+        $p->code = $_tri_champ;
2705 2705
 
2706
-		return $p;
2707
-	}
2708
-	// forcer la jointure si besoin, et si le champ est statique
2709
-	if (preg_match(",^'([\w.]+)'$,i", $_champ_ou_sens, $m)) {
2710
-		index_pile($b, $m[1], $p->boucles, '', null, true, false);
2711
-	}
2706
+        return $p;
2707
+    }
2708
+    // forcer la jointure si besoin, et si le champ est statique
2709
+    if (preg_match(",^'([\w.]+)'$,i", $_champ_ou_sens, $m)) {
2710
+        index_pile($b, $m[1], $p->boucles, '', null, true, false);
2711
+    }
2712 2712
 
2713
-	$_libelle = interprete_argument_balise(2, $p);
2714
-	$_libelle = $_libelle ?: $_champ_ou_sens;
2713
+    $_libelle = interprete_argument_balise(2, $p);
2714
+    $_libelle = $_libelle ?: $_champ_ou_sens;
2715 2715
 
2716
-	$_class = interprete_argument_balise(3, $p) ?? "''";
2716
+    $_class = interprete_argument_balise(3, $p) ?? "''";
2717 2717
 
2718
-	$p->code = "calculer_balise_tri($_champ_ou_sens, $_libelle, $_class, $_tri_nom, $_tri_champ, $_tri_sens, $_tri_liste_sens_defaut)";
2718
+    $p->code = "calculer_balise_tri($_champ_ou_sens, $_libelle, $_class, $_tri_nom, $_tri_champ, $_tri_sens, $_tri_liste_sens_defaut)";
2719 2719
 
2720
-	$p->interdire_scripts = false;
2720
+    $p->interdire_scripts = false;
2721 2721
 
2722
-	return $p;
2722
+    return $p;
2723 2723
 }
2724 2724
 
2725 2725
 
@@ -2740,21 +2740,21 @@  discard block
 block discarded – undo
2740 2740
  *     Pile complétée par le code à générer
2741 2741
  */
2742 2742
 function balise_SAUTER_dist($p) {
2743
-	$id_boucle = $p->id_boucle;
2743
+    $id_boucle = $p->id_boucle;
2744 2744
 
2745
-	if (empty($p->boucles[$id_boucle])) {
2746
-		$msg = ['zbug_champ_hors_boucle', ['champ' => '#SAUTER']];
2747
-		erreur_squelette($msg, $p);
2748
-	} else {
2749
-		$_saut = interprete_argument_balise(1, $p);
2750
-		$_compteur = "\$Numrows['$id_boucle']['compteur_boucle']";
2751
-		$_total = "(\$Numrows['$id_boucle']['total'] ?? null)";
2745
+    if (empty($p->boucles[$id_boucle])) {
2746
+        $msg = ['zbug_champ_hors_boucle', ['champ' => '#SAUTER']];
2747
+        erreur_squelette($msg, $p);
2748
+    } else {
2749
+        $_saut = interprete_argument_balise(1, $p);
2750
+        $_compteur = "\$Numrows['$id_boucle']['compteur_boucle']";
2751
+        $_total = "(\$Numrows['$id_boucle']['total'] ?? null)";
2752 2752
 
2753
-		$p->code = "vide($_compteur=\$iter->skip($_saut,$_total))";
2754
-	}
2755
-	$p->interdire_scripts = false;
2753
+        $p->code = "vide($_compteur=\$iter->skip($_saut,$_total))";
2754
+    }
2755
+    $p->interdire_scripts = false;
2756 2756
 
2757
-	return $p;
2757
+    return $p;
2758 2758
 }
2759 2759
 
2760 2760
 
@@ -2776,22 +2776,22 @@  discard block
 block discarded – undo
2776 2776
  *     Pile complétée par le code à générer
2777 2777
  */
2778 2778
 function balise_PUBLIE_dist($p) {
2779
-	if (!$_type = interprete_argument_balise(1, $p)) {
2780
-		$_type = _q($p->type_requete);
2781
-		$_id = champ_sql($p->boucles[$p->id_boucle]->primary, $p);
2782
-	} else {
2783
-		$_id = interprete_argument_balise(2, $p);
2784
-	}
2779
+    if (!$_type = interprete_argument_balise(1, $p)) {
2780
+        $_type = _q($p->type_requete);
2781
+        $_id = champ_sql($p->boucles[$p->id_boucle]->primary, $p);
2782
+    } else {
2783
+        $_id = interprete_argument_balise(2, $p);
2784
+    }
2785 2785
 
2786
-	$connect = '';
2787
-	if (isset($p->boucles[$p->id_boucle])) {
2788
-		$connect = $p->boucles[$p->id_boucle]->sql_serveur;
2789
-	}
2786
+    $connect = '';
2787
+    if (isset($p->boucles[$p->id_boucle])) {
2788
+        $connect = $p->boucles[$p->id_boucle]->sql_serveur;
2789
+    }
2790 2790
 
2791
-	$p->code = '(objet_test_si_publie(' . $_type . ',intval(' . $_id . '),' . _q($connect) . ")?' ':'')";
2792
-	$p->interdire_scripts = false;
2791
+    $p->code = '(objet_test_si_publie(' . $_type . ',intval(' . $_id . '),' . _q($connect) . ")?' ':'')";
2792
+    $p->interdire_scripts = false;
2793 2793
 
2794
-	return $p;
2794
+    return $p;
2795 2795
 }
2796 2796
 
2797 2797
 /**
@@ -2820,12 +2820,12 @@  discard block
 block discarded – undo
2820 2820
  *     Pile complétée par le code à générer
2821 2821
  */
2822 2822
 function balise_PRODUIRE_dist($p) {
2823
-	$balise_inclure = charger_fonction('INCLURE', 'balise');
2824
-	$p = $balise_inclure($p);
2823
+    $balise_inclure = charger_fonction('INCLURE', 'balise');
2824
+    $p = $balise_inclure($p);
2825 2825
 
2826
-	$p->code = str_replace('recuperer_fond(', 'produire_fond_statique(', $p->code);
2826
+    $p->code = str_replace('recuperer_fond(', 'produire_fond_statique(', $p->code);
2827 2827
 
2828
-	return $p;
2828
+    return $p;
2829 2829
 }
2830 2830
 
2831 2831
 /**
@@ -2844,13 +2844,13 @@  discard block
 block discarded – undo
2844 2844
  *     Pile complétée par le code à générer
2845 2845
  */
2846 2846
 function balise_LARGEUR_ECRAN_dist($p) {
2847
-	$_class = interprete_argument_balise(1, $p);
2848
-	if (!$_class) {
2849
-		$_class = 'null';
2850
-	}
2851
-	$p->code = "(is_string($_class)?vide(\$GLOBALS['largeur_ecran']=$_class):(isset(\$GLOBALS['largeur_ecran'])?\$GLOBALS['largeur_ecran']:''))";
2847
+    $_class = interprete_argument_balise(1, $p);
2848
+    if (!$_class) {
2849
+        $_class = 'null';
2850
+    }
2851
+    $p->code = "(is_string($_class)?vide(\$GLOBALS['largeur_ecran']=$_class):(isset(\$GLOBALS['largeur_ecran'])?\$GLOBALS['largeur_ecran']:''))";
2852 2852
 
2853
-	return $p;
2853
+    return $p;
2854 2854
 }
2855 2855
 
2856 2856
 
@@ -2866,14 +2866,14 @@  discard block
 block discarded – undo
2866 2866
  *     Pile complétée par le code à générer
2867 2867
  **/
2868 2868
 function balise_CONST_dist($p) {
2869
-	$_const = interprete_argument_balise(1, $p);
2870
-	if (!strlen($_const ?? '')) {
2871
-		$p->code = "''";
2872
-	}
2873
-	else {
2874
-		$p->code = "(defined($_const)?constant($_const):'')";
2875
-	}
2876
-	$p->interdire_scripts = false;
2877
-
2878
-	return $p;
2869
+    $_const = interprete_argument_balise(1, $p);
2870
+    if (!strlen($_const ?? '')) {
2871
+        $p->code = "''";
2872
+    }
2873
+    else {
2874
+        $p->code = "(defined($_const)?constant($_const):'')";
2875
+    }
2876
+    $p->interdire_scripts = false;
2877
+
2878
+    return $p;
2879 2879
 }
Please login to merge, or discard this patch.
ecrire/inc/rubriques.php 2 patches
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 or $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_log("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
 			and $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
 			and $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,12 +463,12 @@  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_log(
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
 			_LOG_CRITIQUE
470 470
 		);
471
-		sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1));
471
+		sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>'.intval($prof + 1));
472 472
 	}
473 473
 
474 474
 	// reparer les articles
@@ -479,7 +479,7 @@  discard block
 block discarded – undo
479 479
 	);
480 480
 
481 481
 	while ($row = sql_fetch($r)) {
482
-		sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id']));
482
+		sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article='.intval($row['id']));
483 483
 	}
484 484
 
485 485
 	// avertir les plugins qui peuvent faire leur mises a jour egalement
@@ -510,7 +510,7 @@  discard block
 block discarded – undo
510 510
 		$t = sql_updateq(
511 511
 			'spip_rubriques',
512 512
 			['lang' => $row['lang'], 'langue_choisie' => 'non'],
513
-			'id_rubrique=' . intval($id_rubrique)
513
+			'id_rubrique='.intval($id_rubrique)
514 514
 		);
515 515
 	}
516 516
 
@@ -555,7 +555,7 @@  discard block
 block discarded – undo
555 555
 		sql_updateq(
556 556
 			'spip_articles',
557 557
 			['lang' => $row['lang'], 'langue_choisie' => 'non'],
558
-			'id_article=' . intval($id_article)
558
+			'id_article='.intval($id_article)
559 559
 		);
560 560
 	}
561 561
 
@@ -630,11 +630,11 @@  discard block
 block discarded – undo
630 630
 				];
631 631
 				// generer un nom de fonction "anonyme" unique
632 632
 				do {
633
-					$functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax());
633
+					$functionname = 'f_calculer_langues_utilisees_'.$boucle->id_table.'_'.time().'_'.random_int(0, mt_getrandmax());
634 634
 				} while (function_exists($functionname));
635 635
 				$code = calculer_boucle('calculer_langues_utilisees', $boucles);
636
-				$code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code;
637
-				$code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();';
636
+				$code = '$SP=0; $command=array();$command["connect"] = $connect = "'.$serveur.'"; $Pile=array(0=>array());'."\n".$code;
637
+				$code = 'function '.$functionname.'(){'.$code.'};$res = '.$functionname.'();';
638 638
 				$res = '';
639 639
 				eval($code);
640 640
 				$res = explode(',', $res);
@@ -736,11 +736,11 @@  discard block
 block discarded – undo
736 736
 		$maxiter-- and $filles = sql_allfetsel(
737 737
 			'id_rubrique',
738 738
 			'spip_rubriques',
739
-			sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT')
739
+			sql_in('id_parent', $r).' AND '.sql_in('id_rubrique', $r, 'NOT')
740 740
 		)
741 741
 	) {
742 742
 		$r = join(',', array_column($filles, 'id_rubrique'));
743
-		$branche .= ',' . $r;
743
+		$branche .= ','.$r;
744 744
 	}
745 745
 
746 746
 	# securite pour ne pas plomber la conso memoire sur les sites prolifiques
@@ -780,7 +780,7 @@  discard block
 block discarded – undo
780 780
 
781 781
 	if (isset($b[$id])) {
782 782
 		// Notre branche commence par la rubrique de depart si $tout=true
783
-		return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id];
783
+		return $tout ? (strlen($b[$id]) ? $b[$id].",$id" : $id) : $b[$id];
784 784
 	}
785 785
 
786 786
 	$hier = '';
@@ -793,11 +793,11 @@  discard block
 block discarded – undo
793 793
 		$maxiter-- and $parents = sql_allfetsel(
794 794
 			'id_parent',
795 795
 			'spip_rubriques',
796
-			sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT')
796
+			sql_in('id_rubrique', $ids_nouveaux_parents).' AND '.sql_in('id_parent', $hier, 'NOT')
797 797
 		)
798 798
 	) {
799 799
 		$ids_nouveaux_parents = join(',', array_column($parents, 'id_parent'));
800
-		$hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : '');
800
+		$hier = $ids_nouveaux_parents.(strlen($hier) ? ','.$hier : '');
801 801
 	}
802 802
 
803 803
 	# securite pour ne pas plomber la conso memoire sur les sites prolifiques
@@ -829,7 +829,7 @@  discard block
 block discarded – undo
829 829
 	include_spip('base/abstract_sql');
830 830
 	if ($check) {
831 831
 		$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
832
-			'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
832
+			'AND A.date <= '.sql_quote(date('Y-m-d H:i:s')) : '';
833 833
 
834 834
 		$r = sql_select(
835 835
 			'DISTINCT A.id_rubrique AS id',
@@ -846,7 +846,7 @@  discard block
 block discarded – undo
846 846
 	$t = sql_fetsel(
847 847
 		'date',
848 848
 		'spip_articles',
849
-		"statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')),
849
+		"statut='publie' AND date > ".sql_quote(date('Y-m-d H:i:s')),
850 850
 		'',
851 851
 		'date',
852 852
 		'1'
@@ -902,7 +902,7 @@  discard block
 block discarded – undo
902 902
 		$r = sql_getfetsel(
903 903
 			'id_rubrique',
904 904
 			'spip_rubriques',
905
-			'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent),
905
+			'titre = '.sql_quote($titre).' AND id_parent='.intval($id_parent),
906 906
 			$groupby = [],
907 907
 			$orderby = [],
908 908
 			$limit = '',
@@ -938,7 +938,7 @@  discard block
 block discarded – undo
938 938
 			sql_updateq(
939 939
 				'spip_rubriques',
940 940
 				['id_secteur' => $id_secteur, 'lang' => $lang],
941
-				'id_rubrique=' . intval($id_rubrique),
941
+				'id_rubrique='.intval($id_rubrique),
942 942
 				[],
943 943
 				$serveur
944 944
 			);
Please login to merge, or discard this patch.
Indentation   +621 added lines, -621 removed lines patch added patch discarded remove patch
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
  */
20 20
 
21 21
 if (!defined('_ECRIRE_INC_VERSION')) {
22
-	return;
22
+    return;
23 23
 }
24 24
 
25 25
 
@@ -55,65 +55,65 @@  discard block
 block discarded – undo
55 55
  * @return void
56 56
  **/
57 57
 function calculer_rubriques_if($id_rubrique, $modifs, $infos = [], $postdate = false) {
58
-	$statuts_publies = null;
59
-	$neuf = false;
60
-
61
-	// Compat avec l'ancienne signature
62
-	if (is_string($infos)) {
63
-		$infos = ['statut_ancien' => $infos];
64
-	}
65
-	if (!isset($infos['statut_ancien'])) {
66
-		$infos['statut_ancien'] = '';
67
-	}
68
-
69
-	// On recherche quels statuts tester
70
-	if (
71
-		isset($infos['objet'])
72
-		and include_spip('inc/filtres')
73
-		and $declaration_statut = objet_info($infos['objet'], 'statut')
74
-		and is_array($declaration_statut)
75
-	) {
76
-		foreach ($declaration_statut as $champ_statut) {
77
-			if ($champ_statut['champ'] == 'statut') {
78
-				$statuts_publies = array_map('trim', explode(',', $champ_statut['publie']));
79
-				break; // stop on a trouvé le bon champ
80
-			}
81
-		}
82
-	} else {
83
-		$statuts_publies = ['publie'];
84
-	}
85
-
86
-	if (in_array($infos['statut_ancien'], $statuts_publies)) {
87
-		if (
88
-			isset($modifs['statut'])
89
-			or isset($modifs['id_rubrique'])
90
-			or ($postdate and strtotime($postdate) > time())
91
-		) {
92
-			$neuf |= depublier_branche_rubrique_if($id_rubrique);
93
-		}
94
-		// ne publier que si c'est pas un postdate, ou si la date n'est pas dans le futur
95
-		if ($postdate) {
96
-			calculer_prochain_postdate(true);
97
-			$neuf |= (strtotime($postdate) <= time()); // par securite
98
-		} elseif (isset($modifs['id_rubrique'])) {
99
-			$neuf |= publier_branche_rubrique($modifs['id_rubrique']);
100
-		}
101
-	} elseif (isset($modifs['statut']) and in_array($modifs['statut'], $statuts_publies)) {
102
-		if ($postdate) {
103
-			calculer_prochain_postdate(true);
104
-			$neuf |= (strtotime($postdate) <= time()); // par securite
105
-		} else {
106
-			$neuf |= publier_branche_rubrique($id_rubrique);
107
-		}
108
-	}
109
-
110
-	if ($neuf) {
111
-		// Sauver la date de la derniere mise a jour (pour menu_rubriques)
112
-		ecrire_meta('date_calcul_rubriques', date('U'));
113
-	}
114
-
115
-	$langues = calculer_langues_utilisees();
116
-	ecrire_meta('langues_utilisees', $langues);
58
+    $statuts_publies = null;
59
+    $neuf = false;
60
+
61
+    // Compat avec l'ancienne signature
62
+    if (is_string($infos)) {
63
+        $infos = ['statut_ancien' => $infos];
64
+    }
65
+    if (!isset($infos['statut_ancien'])) {
66
+        $infos['statut_ancien'] = '';
67
+    }
68
+
69
+    // On recherche quels statuts tester
70
+    if (
71
+        isset($infos['objet'])
72
+        and include_spip('inc/filtres')
73
+        and $declaration_statut = objet_info($infos['objet'], 'statut')
74
+        and is_array($declaration_statut)
75
+    ) {
76
+        foreach ($declaration_statut as $champ_statut) {
77
+            if ($champ_statut['champ'] == 'statut') {
78
+                $statuts_publies = array_map('trim', explode(',', $champ_statut['publie']));
79
+                break; // stop on a trouvé le bon champ
80
+            }
81
+        }
82
+    } else {
83
+        $statuts_publies = ['publie'];
84
+    }
85
+
86
+    if (in_array($infos['statut_ancien'], $statuts_publies)) {
87
+        if (
88
+            isset($modifs['statut'])
89
+            or isset($modifs['id_rubrique'])
90
+            or ($postdate and strtotime($postdate) > time())
91
+        ) {
92
+            $neuf |= depublier_branche_rubrique_if($id_rubrique);
93
+        }
94
+        // ne publier que si c'est pas un postdate, ou si la date n'est pas dans le futur
95
+        if ($postdate) {
96
+            calculer_prochain_postdate(true);
97
+            $neuf |= (strtotime($postdate) <= time()); // par securite
98
+        } elseif (isset($modifs['id_rubrique'])) {
99
+            $neuf |= publier_branche_rubrique($modifs['id_rubrique']);
100
+        }
101
+    } elseif (isset($modifs['statut']) and in_array($modifs['statut'], $statuts_publies)) {
102
+        if ($postdate) {
103
+            calculer_prochain_postdate(true);
104
+            $neuf |= (strtotime($postdate) <= time()); // par securite
105
+        } else {
106
+            $neuf |= publier_branche_rubrique($id_rubrique);
107
+        }
108
+    }
109
+
110
+    if ($neuf) {
111
+        // Sauver la date de la derniere mise a jour (pour menu_rubriques)
112
+        ecrire_meta('date_calcul_rubriques', date('U'));
113
+    }
114
+
115
+    $langues = calculer_langues_utilisees();
116
+    ecrire_meta('langues_utilisees', $langues);
117 117
 }
118 118
 
119 119
 
@@ -131,22 +131,22 @@  discard block
 block discarded – undo
131 131
  *     true si le statut change effectivement
132 132
  */
133 133
 function publier_branche_rubrique($id_rubrique) {
134
-	$id_pred = $id_rubrique;
135
-	while (true) {
136
-		sql_updateq(
137
-			'spip_rubriques',
138
-			['statut' => 'publie', 'date' => date('Y-m-d H:i:s')],
139
-			'id_rubrique=' . intval($id_rubrique)
140
-		);
141
-		$id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique));
142
-		if (!$id_parent) {
143
-			break;
144
-		}
145
-		$id_rubrique = $id_parent;
146
-	}
134
+    $id_pred = $id_rubrique;
135
+    while (true) {
136
+        sql_updateq(
137
+            'spip_rubriques',
138
+            ['statut' => 'publie', 'date' => date('Y-m-d H:i:s')],
139
+            'id_rubrique=' . intval($id_rubrique)
140
+        );
141
+        $id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique));
142
+        if (!$id_parent) {
143
+            break;
144
+        }
145
+        $id_rubrique = $id_parent;
146
+    }
147 147
 
148 148
 #	spip_log(" publier_branche_rubrique($id_rubrique $id_pred");
149
-	return $id_pred != $id_rubrique;
149
+    return $id_pred != $id_rubrique;
150 150
 }
151 151
 
152 152
 /**
@@ -164,20 +164,20 @@  discard block
 block discarded – undo
164 164
  *     true si le statut change effectivement
165 165
  */
166 166
 function depublier_branche_rubrique_if($id_rubrique) {
167
-	$date = date('Y-m-d H:i:s'); // figer la date
168
-
169
-	#	spip_log("depublier_branche_rubrique($id_rubrique ?");
170
-	$id_pred = $id_rubrique;
171
-	while ($id_pred) {
172
-		if (!depublier_rubrique_if($id_pred, $date)) {
173
-			return $id_pred != $id_rubrique;
174
-		}
175
-		// passer au parent si on a depublie
176
-		$r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred));
177
-		$id_pred = $r['id_parent'];
178
-	}
179
-
180
-	return $id_pred != $id_rubrique;
167
+    $date = date('Y-m-d H:i:s'); // figer la date
168
+
169
+    #	spip_log("depublier_branche_rubrique($id_rubrique ?");
170
+    $id_pred = $id_rubrique;
171
+    while ($id_pred) {
172
+        if (!depublier_rubrique_if($id_pred, $date)) {
173
+            return $id_pred != $id_rubrique;
174
+        }
175
+        // passer au parent si on a depublie
176
+        $r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred));
177
+        $id_pred = $r['id_parent'];
178
+    }
179
+
180
+    return $id_pred != $id_rubrique;
181 181
 }
182 182
 
183 183
 /**
@@ -194,61 +194,61 @@  discard block
 block discarded – undo
194 194
  *    true si la rubrique a été dépubliée
195 195
  */
196 196
 function depublier_rubrique_if($id_rubrique, $date = null) {
197
-	if (is_null($date)) {
198
-		$date = date('Y-m-d H:i:s');
199
-	}
200
-	$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
201
-		' AND date <= ' . sql_quote($date) : '';
202
-
203
-	if (!$id_rubrique = intval($id_rubrique)) {
204
-		return false;
205
-	}
206
-
207
-	// verifier qu'elle existe et est bien publiee
208
-	$r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
209
-	if (!$r or $r['statut'] !== 'publie') {
210
-		return false;
211
-	}
212
-
213
-	// On met le nombre de chaque type d'enfants dans un tableau
214
-	// Le type de l'objet est au pluriel
215
-	$compte = [
216
-		'articles' => sql_countsel(
217
-			'spip_articles',
218
-			'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates"
219
-		),
220
-		'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"),
221
-		'documents' => sql_countsel(
222
-			'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document',
223
-			'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') "
224
-		)
225
-	];
226
-
227
-	// On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants
228
-	$compte = pipeline(
229
-		'objet_compte_enfants',
230
-		[
231
-			'args' => [
232
-				'objet' => 'rubrique',
233
-				'id_objet' => $id_rubrique,
234
-				'statut' => 'publie',
235
-				'date' => $date
236
-			],
237
-			'data' => $compte
238
-		]
239
-	);
240
-
241
-	// S'il y a au moins un enfant de n'importe quoi, on ne dépublie pas
242
-	foreach ($compte as $objet => $n) {
243
-		if ($n) {
244
-			return false;
245
-		}
246
-	}
247
-
248
-	sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique));
197
+    if (is_null($date)) {
198
+        $date = date('Y-m-d H:i:s');
199
+    }
200
+    $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
201
+        ' AND date <= ' . sql_quote($date) : '';
202
+
203
+    if (!$id_rubrique = intval($id_rubrique)) {
204
+        return false;
205
+    }
206
+
207
+    // verifier qu'elle existe et est bien publiee
208
+    $r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
209
+    if (!$r or $r['statut'] !== 'publie') {
210
+        return false;
211
+    }
212
+
213
+    // On met le nombre de chaque type d'enfants dans un tableau
214
+    // Le type de l'objet est au pluriel
215
+    $compte = [
216
+        'articles' => sql_countsel(
217
+            'spip_articles',
218
+            'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates"
219
+        ),
220
+        'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"),
221
+        'documents' => sql_countsel(
222
+            'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document',
223
+            'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') "
224
+        )
225
+    ];
226
+
227
+    // On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants
228
+    $compte = pipeline(
229
+        'objet_compte_enfants',
230
+        [
231
+            'args' => [
232
+                'objet' => 'rubrique',
233
+                'id_objet' => $id_rubrique,
234
+                'statut' => 'publie',
235
+                'date' => $date
236
+            ],
237
+            'data' => $compte
238
+        ]
239
+    );
240
+
241
+    // S'il y a au moins un enfant de n'importe quoi, on ne dépublie pas
242
+    foreach ($compte as $objet => $n) {
243
+        if ($n) {
244
+            return false;
245
+        }
246
+    }
247
+
248
+    sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique));
249 249
 
250 250
 #		spip_log("depublier_rubrique $id_pred");
251
-	return true;
251
+    return true;
252 252
 }
253 253
 
254 254
 
@@ -271,18 +271,18 @@  discard block
 block discarded – undo
271 271
  **/
272 272
 function calculer_rubriques() {
273 273
 
274
-	calculer_rubriques_publiees();
274
+    calculer_rubriques_publiees();
275 275
 
276
-	// Apres chaque (de)publication
277
-	// recalculer les langues utilisees sur le site
278
-	$langues = calculer_langues_utilisees();
279
-	ecrire_meta('langues_utilisees', $langues);
276
+    // Apres chaque (de)publication
277
+    // recalculer les langues utilisees sur le site
278
+    $langues = calculer_langues_utilisees();
279
+    ecrire_meta('langues_utilisees', $langues);
280 280
 
281
-	// Sauver la date de la derniere mise a jour (pour menu_rubriques)
282
-	ecrire_meta('date_calcul_rubriques', date('U'));
281
+    // Sauver la date de la derniere mise a jour (pour menu_rubriques)
282
+    ecrire_meta('date_calcul_rubriques', date('U'));
283 283
 
284
-	// on calcule la date du prochain article post-date
285
-	calculer_prochain_postdate();
284
+    // on calcule la date du prochain article post-date
285
+    calculer_prochain_postdate();
286 286
 }
287 287
 
288 288
 
@@ -299,61 +299,61 @@  discard block
 block discarded – undo
299 299
  **/
300 300
 function calculer_rubriques_publiees() {
301 301
 
302
-	// Mettre les compteurs a zero
303
-	sql_updateq('spip_rubriques', ['date_tmp' => '0000-00-00 00:00:00', 'statut_tmp' => 'prepa']);
304
-
305
-	//
306
-	// Publier et dater les rubriques qui ont un article publie
307
-	//
308
-
309
-	// Afficher les articles post-dates ?
310
-	$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
311
-		'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
312
-
313
-	$r = sql_select(
314
-		'R.id_rubrique AS id, max(A.date) AS date_h',
315
-		'spip_rubriques AS R JOIN spip_articles AS A ON R.id_rubrique = A.id_rubrique',
316
-		"A.date>R.date_tmp AND A.statut='publie' $postdates ",
317
-		'R.id_rubrique'
318
-	);
319
-	while ($row = sql_fetch($r)) {
320
-		sql_updateq(
321
-			'spip_rubriques',
322
-			['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
323
-			'id_rubrique=' . intval($row['id'])
324
-		);
325
-	}
326
-
327
-	// point d'entree pour permettre a des plugins de gerer le statut
328
-	// autrement (par ex: toute rubrique est publiee des sa creation)
329
-	// Ce pipeline fait ce qu'il veut, mais s'il touche aux statuts/dates
330
-	// c'est statut_tmp/date_tmp qu'il doit modifier
331
-	// [C'est un trigger... a renommer en trig_calculer_rubriques ?]
332
-	pipeline('calculer_rubriques', null);
333
-
334
-
335
-	// Les rubriques qui ont une rubrique fille plus recente
336
-	// on tourne tant que les donnees remontent vers la racine.
337
-	do {
338
-		$continuer = false;
339
-		$r = sql_select(
340
-			'R.id_rubrique AS id, max(SR.date_tmp) AS date_h',
341
-			'spip_rubriques AS R JOIN spip_rubriques AS SR ON R.id_rubrique = SR.id_parent',
342
-			"(SR.date_tmp>R.date_tmp OR R.statut_tmp<>'publie') AND SR.statut_tmp='publie' ",
343
-			'R.id_rubrique'
344
-		);
345
-		while ($row = sql_fetch($r)) {
346
-			sql_updateq(
347
-				'spip_rubriques',
348
-				['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
349
-				'id_rubrique=' . intval($row['id'])
350
-			);
351
-			$continuer = true;
352
-		}
353
-	} while ($continuer);
354
-
355
-	// Enregistrement des modifs
356
-	sql_update('spip_rubriques', ['date' => 'date_tmp', 'statut' => 'statut_tmp']);
302
+    // Mettre les compteurs a zero
303
+    sql_updateq('spip_rubriques', ['date_tmp' => '0000-00-00 00:00:00', 'statut_tmp' => 'prepa']);
304
+
305
+    //
306
+    // Publier et dater les rubriques qui ont un article publie
307
+    //
308
+
309
+    // Afficher les articles post-dates ?
310
+    $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
311
+        'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
312
+
313
+    $r = sql_select(
314
+        'R.id_rubrique AS id, max(A.date) AS date_h',
315
+        'spip_rubriques AS R JOIN spip_articles AS A ON R.id_rubrique = A.id_rubrique',
316
+        "A.date>R.date_tmp AND A.statut='publie' $postdates ",
317
+        'R.id_rubrique'
318
+    );
319
+    while ($row = sql_fetch($r)) {
320
+        sql_updateq(
321
+            'spip_rubriques',
322
+            ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
323
+            'id_rubrique=' . intval($row['id'])
324
+        );
325
+    }
326
+
327
+    // point d'entree pour permettre a des plugins de gerer le statut
328
+    // autrement (par ex: toute rubrique est publiee des sa creation)
329
+    // Ce pipeline fait ce qu'il veut, mais s'il touche aux statuts/dates
330
+    // c'est statut_tmp/date_tmp qu'il doit modifier
331
+    // [C'est un trigger... a renommer en trig_calculer_rubriques ?]
332
+    pipeline('calculer_rubriques', null);
333
+
334
+
335
+    // Les rubriques qui ont une rubrique fille plus recente
336
+    // on tourne tant que les donnees remontent vers la racine.
337
+    do {
338
+        $continuer = false;
339
+        $r = sql_select(
340
+            'R.id_rubrique AS id, max(SR.date_tmp) AS date_h',
341
+            'spip_rubriques AS R JOIN spip_rubriques AS SR ON R.id_rubrique = SR.id_parent',
342
+            "(SR.date_tmp>R.date_tmp OR R.statut_tmp<>'publie') AND SR.statut_tmp='publie' ",
343
+            'R.id_rubrique'
344
+        );
345
+        while ($row = sql_fetch($r)) {
346
+            sql_updateq(
347
+                'spip_rubriques',
348
+                ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']],
349
+                'id_rubrique=' . intval($row['id'])
350
+            );
351
+            $continuer = true;
352
+        }
353
+    } while ($continuer);
354
+
355
+    // Enregistrement des modifs
356
+    sql_update('spip_rubriques', ['date' => 'date_tmp', 'statut' => 'statut_tmp']);
357 357
 }
358 358
 
359 359
 /**
@@ -368,123 +368,123 @@  discard block
 block discarded – undo
368 368
  * @return void
369 369
  **/
370 370
 function propager_les_secteurs() {
371
-	// Profondeur 0
372
-	// Toutes les rubriques racines sont de profondeur 0
373
-	// et fixer les id_secteur des rubriques racines
374
-	sql_update('spip_rubriques', ['id_secteur' => 'id_rubrique', 'profondeur' => 0], 'id_parent=0');
375
-	// Toute rubrique non racine est de profondeur >0
376
-	sql_updateq('spip_rubriques', ['profondeur' => 1], 'id_parent<>0 AND profondeur=0');
377
-
378
-	// securite : pas plus d'iteration que de rubriques dans la base
379
-	$maxiter = sql_countsel('spip_rubriques');
380
-
381
-	// reparer les rubriques qui n'ont pas l'id_secteur de leur parent
382
-	// on fait profondeur par profondeur
383
-
384
-	$prof = 0;
385
-	do {
386
-		$continuer = false;
387
-
388
-		// Par recursivite : si toutes les rubriques de profondeur $prof sont bonnes
389
-		// on fixe le profondeur $prof+1
390
-
391
-		// Toutes les rubriques dont le parent est de profondeur $prof ont une profondeur $prof+1
392
-		// on teste A.profondeur > $prof+1 car :
393
-		// - toutes les rubriques de profondeur 0 à $prof sont bonnes
394
-		// - si A.profondeur = $prof+1 c'est bon
395
-		// - cela nous protege de la boucle infinie en cas de reference circulaire dans les rubriques
396
-		$maxiter2 = $maxiter;
397
-		while (
398
-			$maxiter2--
399
-			and $rows = sql_allfetsel(
400
-				'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur',
401
-				'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique',
402
-				'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)',
403
-				'',
404
-				'R.id_secteur',
405
-				'0,100'
406
-			)
407
-		) {
408
-			$id_secteur = null;
409
-			$ids = [];
410
-			while ($row = array_shift($rows)) {
411
-				if ($row['id_secteur'] !== $id_secteur) {
412
-					if (count($ids)) {
413
-						sql_updateq(
414
-							'spip_rubriques',
415
-							['id_secteur' => $id_secteur, 'profondeur' => $prof + 1],
416
-							sql_in('id_rubrique', $ids)
417
-						);
418
-					}
419
-					$id_secteur = $row['id_secteur'];
420
-					$ids = [];
421
-				}
422
-				$ids[] = $row['id'];
423
-			}
424
-			if (count($ids)) {
425
-				sql_updateq(
426
-					'spip_rubriques',
427
-					['id_secteur' => $id_secteur, 'profondeur' => $prof + 1],
428
-					sql_in('id_rubrique', $ids)
429
-				);
430
-			}
431
-		}
432
-
433
-
434
-		// Toutes les rubriques de profondeur $prof+1 qui n'ont pas un parent de profondeur $prof sont decalees
435
-		$maxiter2 = $maxiter;
436
-		while (
437
-			$maxiter2--
438
-			and $rows = sql_allfetsel(
439
-				'id_rubrique as id',
440
-				'spip_rubriques',
441
-				'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select(
442
-					'zzz.id_rubrique',
443
-					'spip_rubriques AS zzz',
444
-					'zzz.profondeur=' . intval($prof)
445
-				) . ')',
446
-				'',
447
-				'',
448
-				'0,100'
449
-			)
450
-		) {
451
-			$rows = array_column($rows, 'id');
452
-			sql_updateq('spip_rubriques', ['profondeur' => $prof + 2], sql_in('id_rubrique', $rows));
453
-		}
454
-
455
-		// ici on a fini de valider $prof+1, toutes les rubriques de prondeur 0 a $prof+1 sont OK
456
-		// si pas de rubrique a profondeur $prof+1 pas la peine de continuer
457
-		// si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse)
458
-		// on arrete les frais
459
-		if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) {
460
-			$prof++;
461
-			$continuer = true;
462
-		}
463
-	} while ($continuer and $maxiter--);
464
-
465
-	// loger si la table des rubriques semble foireuse
466
-	// et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles
467
-	if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) {
468
-		spip_log(
469
-			'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)',
470
-			_LOG_CRITIQUE
471
-		);
472
-		sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1));
473
-	}
474
-
475
-	// reparer les articles
476
-	$r = sql_select(
477
-		'A.id_article AS id, R.id_secteur AS secteur',
478
-		'spip_articles AS A, spip_rubriques AS R',
479
-		'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur'
480
-	);
481
-
482
-	while ($row = sql_fetch($r)) {
483
-		sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id']));
484
-	}
485
-
486
-	// avertir les plugins qui peuvent faire leur mises a jour egalement
487
-	pipeline('trig_propager_les_secteurs', '');
371
+    // Profondeur 0
372
+    // Toutes les rubriques racines sont de profondeur 0
373
+    // et fixer les id_secteur des rubriques racines
374
+    sql_update('spip_rubriques', ['id_secteur' => 'id_rubrique', 'profondeur' => 0], 'id_parent=0');
375
+    // Toute rubrique non racine est de profondeur >0
376
+    sql_updateq('spip_rubriques', ['profondeur' => 1], 'id_parent<>0 AND profondeur=0');
377
+
378
+    // securite : pas plus d'iteration que de rubriques dans la base
379
+    $maxiter = sql_countsel('spip_rubriques');
380
+
381
+    // reparer les rubriques qui n'ont pas l'id_secteur de leur parent
382
+    // on fait profondeur par profondeur
383
+
384
+    $prof = 0;
385
+    do {
386
+        $continuer = false;
387
+
388
+        // Par recursivite : si toutes les rubriques de profondeur $prof sont bonnes
389
+        // on fixe le profondeur $prof+1
390
+
391
+        // Toutes les rubriques dont le parent est de profondeur $prof ont une profondeur $prof+1
392
+        // on teste A.profondeur > $prof+1 car :
393
+        // - toutes les rubriques de profondeur 0 à $prof sont bonnes
394
+        // - si A.profondeur = $prof+1 c'est bon
395
+        // - cela nous protege de la boucle infinie en cas de reference circulaire dans les rubriques
396
+        $maxiter2 = $maxiter;
397
+        while (
398
+            $maxiter2--
399
+            and $rows = sql_allfetsel(
400
+                'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur',
401
+                'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique',
402
+                'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)',
403
+                '',
404
+                'R.id_secteur',
405
+                '0,100'
406
+            )
407
+        ) {
408
+            $id_secteur = null;
409
+            $ids = [];
410
+            while ($row = array_shift($rows)) {
411
+                if ($row['id_secteur'] !== $id_secteur) {
412
+                    if (count($ids)) {
413
+                        sql_updateq(
414
+                            'spip_rubriques',
415
+                            ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1],
416
+                            sql_in('id_rubrique', $ids)
417
+                        );
418
+                    }
419
+                    $id_secteur = $row['id_secteur'];
420
+                    $ids = [];
421
+                }
422
+                $ids[] = $row['id'];
423
+            }
424
+            if (count($ids)) {
425
+                sql_updateq(
426
+                    'spip_rubriques',
427
+                    ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1],
428
+                    sql_in('id_rubrique', $ids)
429
+                );
430
+            }
431
+        }
432
+
433
+
434
+        // Toutes les rubriques de profondeur $prof+1 qui n'ont pas un parent de profondeur $prof sont decalees
435
+        $maxiter2 = $maxiter;
436
+        while (
437
+            $maxiter2--
438
+            and $rows = sql_allfetsel(
439
+                'id_rubrique as id',
440
+                'spip_rubriques',
441
+                'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select(
442
+                    'zzz.id_rubrique',
443
+                    'spip_rubriques AS zzz',
444
+                    'zzz.profondeur=' . intval($prof)
445
+                ) . ')',
446
+                '',
447
+                '',
448
+                '0,100'
449
+            )
450
+        ) {
451
+            $rows = array_column($rows, 'id');
452
+            sql_updateq('spip_rubriques', ['profondeur' => $prof + 2], sql_in('id_rubrique', $rows));
453
+        }
454
+
455
+        // ici on a fini de valider $prof+1, toutes les rubriques de prondeur 0 a $prof+1 sont OK
456
+        // si pas de rubrique a profondeur $prof+1 pas la peine de continuer
457
+        // si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse)
458
+        // on arrete les frais
459
+        if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) {
460
+            $prof++;
461
+            $continuer = true;
462
+        }
463
+    } while ($continuer and $maxiter--);
464
+
465
+    // loger si la table des rubriques semble foireuse
466
+    // et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles
467
+    if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) {
468
+        spip_log(
469
+            'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)',
470
+            _LOG_CRITIQUE
471
+        );
472
+        sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1));
473
+    }
474
+
475
+    // reparer les articles
476
+    $r = sql_select(
477
+        'A.id_article AS id, R.id_secteur AS secteur',
478
+        'spip_articles AS A, spip_rubriques AS R',
479
+        'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur'
480
+    );
481
+
482
+    while ($row = sql_fetch($r)) {
483
+        sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id']));
484
+    }
485
+
486
+    // avertir les plugins qui peuvent faire leur mises a jour egalement
487
+    pipeline('trig_propager_les_secteurs', '');
488 488
 }
489 489
 
490 490
 
@@ -499,23 +499,23 @@  discard block
 block discarded – undo
499 499
  *     true si un changement a eu lieu
500 500
  **/
501 501
 function calculer_langues_rubriques_etape() {
502
-	$s = sql_select(
503
-		'A.id_rubrique AS id_rubrique, R.lang AS lang',
504
-		'spip_rubriques AS A, spip_rubriques AS R',
505
-		"A.id_parent = R.id_rubrique AND A.langue_choisie != 'oui' AND R.lang<>'' AND R.lang<>A.lang"
506
-	);
507
-
508
-	$t = false;
509
-	while ($row = sql_fetch($s)) {
510
-		$id_rubrique = $row['id_rubrique'];
511
-		$t = sql_updateq(
512
-			'spip_rubriques',
513
-			['lang' => $row['lang'], 'langue_choisie' => 'non'],
514
-			'id_rubrique=' . intval($id_rubrique)
515
-		);
516
-	}
517
-
518
-	return $t;
502
+    $s = sql_select(
503
+        'A.id_rubrique AS id_rubrique, R.lang AS lang',
504
+        'spip_rubriques AS A, spip_rubriques AS R',
505
+        "A.id_parent = R.id_rubrique AND A.langue_choisie != 'oui' AND R.lang<>'' AND R.lang<>A.lang"
506
+    );
507
+
508
+    $t = false;
509
+    while ($row = sql_fetch($s)) {
510
+        $id_rubrique = $row['id_rubrique'];
511
+        $t = sql_updateq(
512
+            'spip_rubriques',
513
+            ['lang' => $row['lang'], 'langue_choisie' => 'non'],
514
+            'id_rubrique=' . intval($id_rubrique)
515
+        );
516
+    }
517
+
518
+    return $t;
519 519
 }
520 520
 
521 521
 /**
@@ -535,38 +535,38 @@  discard block
 block discarded – undo
535 535
  **/
536 536
 function calculer_langues_rubriques() {
537 537
 
538
-	// rubriques (recursivite)
539
-	sql_updateq(
540
-		'spip_rubriques',
541
-		['lang' => $GLOBALS['meta']['langue_site'], 'langue_choisie' => 'non'],
542
-		"id_parent=0 AND langue_choisie != 'oui'"
543
-	);
544
-	while (calculer_langues_rubriques_etape()) {
545
-		;
546
-	}
547
-
548
-	// articles
549
-	$s = sql_select(
550
-		'A.id_article AS id_article, R.lang AS lang',
551
-		'spip_articles AS A, spip_rubriques AS R',
552
-		"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"
553
-	);
554
-	while ($row = sql_fetch($s)) {
555
-		$id_article = $row['id_article'];
556
-		sql_updateq(
557
-			'spip_articles',
558
-			['lang' => $row['lang'], 'langue_choisie' => 'non'],
559
-			'id_article=' . intval($id_article)
560
-		);
561
-	}
562
-
563
-	if ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
564
-		$langues = calculer_langues_utilisees();
565
-		ecrire_meta('langues_utilisees', $langues);
566
-	}
567
-
568
-	// avertir les plugins qui peuvent faire leur mises a jour egalement
569
-	pipeline('trig_calculer_langues_rubriques', '');
538
+    // rubriques (recursivite)
539
+    sql_updateq(
540
+        'spip_rubriques',
541
+        ['lang' => $GLOBALS['meta']['langue_site'], 'langue_choisie' => 'non'],
542
+        "id_parent=0 AND langue_choisie != 'oui'"
543
+    );
544
+    while (calculer_langues_rubriques_etape()) {
545
+        ;
546
+    }
547
+
548
+    // articles
549
+    $s = sql_select(
550
+        'A.id_article AS id_article, R.lang AS lang',
551
+        'spip_articles AS A, spip_rubriques AS R',
552
+        "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"
553
+    );
554
+    while ($row = sql_fetch($s)) {
555
+        $id_article = $row['id_article'];
556
+        sql_updateq(
557
+            'spip_articles',
558
+            ['lang' => $row['lang'], 'langue_choisie' => 'non'],
559
+            'id_article=' . intval($id_article)
560
+        );
561
+    }
562
+
563
+    if ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
564
+        $langues = calculer_langues_utilisees();
565
+        ecrire_meta('langues_utilisees', $langues);
566
+    }
567
+
568
+    // avertir les plugins qui peuvent faire leur mises a jour egalement
569
+    pipeline('trig_calculer_langues_rubriques', '');
570 570
 }
571 571
 
572 572
 
@@ -583,80 +583,80 @@  discard block
 block discarded – undo
583 583
  *    Liste des langues utilisées séparées par des virgules
584 584
  **/
585 585
 function calculer_langues_utilisees($serveur = '') {
586
-	include_spip('public/interfaces');
587
-	include_spip('public/compiler');
588
-	include_spip('public/composer');
589
-	include_spip('public/phraser_html');
590
-	$langues = [];
591
-
592
-	$langues[$GLOBALS['meta']['langue_site']] = 1;
593
-
594
-	include_spip('base/objets');
595
-	$tables = lister_tables_objets_sql();
596
-	$trouver_table = charger_fonction('trouver_table', 'base');
597
-
598
-	foreach (array_keys($tables) as $t) {
599
-		$desc = $trouver_table($t, $serveur);
600
-		// c'est une table avec des langues
601
-		if (
602
-			$desc['exist']
603
-			and isset($desc['field']['lang'])
604
-			and isset($desc['field']['langue_choisie'])
605
-		) {
606
-			$boucle = new Boucle();
607
-			$boucle->show = $desc;
608
-			$boucle->nom = 'calculer_langues_utilisees';
609
-			$boucle->id_boucle = $desc['table_objet'];
610
-			$boucle->id_table = $desc['table_objet'];
611
-			$boucle->primary = $desc['key']['PRIMARY KEY'] ?? '';
612
-			$boucle->sql_serveur = $serveur;
613
-			$boucle->select[] = 'DISTINCT lang';
614
-			$boucle->from[$desc['table_objet']] = $t;
615
-			$boucle->separateur[] = ',';
616
-			$boucle->return = '$Pile[$SP][\'lang\']';
617
-			$boucle->iterateur = 'sql';
618
-
619
-			$boucle->descr['nom'] = 'calculer_langues_utilisees'; // eviter notice php
620
-			$boucle->descr['sourcefile'] = 'internal';
621
-			$boucle->descr['gram'] = 'html';
622
-
623
-			$boucle = pipeline('pre_boucle', $boucle);
624
-
625
-			if (
626
-				isset($desc['statut'])
627
-				and $desc['statut']
628
-			) {
629
-				$boucles = [
630
-					'calculer_langues_utilisees' => $boucle,
631
-				];
632
-				// generer un nom de fonction "anonyme" unique
633
-				do {
634
-					$functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax());
635
-				} while (function_exists($functionname));
636
-				$code = calculer_boucle('calculer_langues_utilisees', $boucles);
637
-				$code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code;
638
-				$code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();';
639
-				$res = '';
640
-				eval($code);
641
-				$res = explode(',', $res);
642
-				foreach ($res as $lang) {
643
-					$langues[$lang] = 1;
644
-				}
645
-			} else {
646
-				$res = sql_select(implode(',', $boucle->select), $boucle->from);
647
-				while ($row = sql_fetch($res)) {
648
-					$langues[$row['lang']] = 1;
649
-				}
650
-			}
651
-		}
652
-	}
653
-
654
-	$langues = array_filter(array_keys($langues));
655
-	sort($langues);
656
-	$langues = join(',', $langues);
657
-	spip_log("langues utilisees: $langues");
658
-
659
-	return $langues;
586
+    include_spip('public/interfaces');
587
+    include_spip('public/compiler');
588
+    include_spip('public/composer');
589
+    include_spip('public/phraser_html');
590
+    $langues = [];
591
+
592
+    $langues[$GLOBALS['meta']['langue_site']] = 1;
593
+
594
+    include_spip('base/objets');
595
+    $tables = lister_tables_objets_sql();
596
+    $trouver_table = charger_fonction('trouver_table', 'base');
597
+
598
+    foreach (array_keys($tables) as $t) {
599
+        $desc = $trouver_table($t, $serveur);
600
+        // c'est une table avec des langues
601
+        if (
602
+            $desc['exist']
603
+            and isset($desc['field']['lang'])
604
+            and isset($desc['field']['langue_choisie'])
605
+        ) {
606
+            $boucle = new Boucle();
607
+            $boucle->show = $desc;
608
+            $boucle->nom = 'calculer_langues_utilisees';
609
+            $boucle->id_boucle = $desc['table_objet'];
610
+            $boucle->id_table = $desc['table_objet'];
611
+            $boucle->primary = $desc['key']['PRIMARY KEY'] ?? '';
612
+            $boucle->sql_serveur = $serveur;
613
+            $boucle->select[] = 'DISTINCT lang';
614
+            $boucle->from[$desc['table_objet']] = $t;
615
+            $boucle->separateur[] = ',';
616
+            $boucle->return = '$Pile[$SP][\'lang\']';
617
+            $boucle->iterateur = 'sql';
618
+
619
+            $boucle->descr['nom'] = 'calculer_langues_utilisees'; // eviter notice php
620
+            $boucle->descr['sourcefile'] = 'internal';
621
+            $boucle->descr['gram'] = 'html';
622
+
623
+            $boucle = pipeline('pre_boucle', $boucle);
624
+
625
+            if (
626
+                isset($desc['statut'])
627
+                and $desc['statut']
628
+            ) {
629
+                $boucles = [
630
+                    'calculer_langues_utilisees' => $boucle,
631
+                ];
632
+                // generer un nom de fonction "anonyme" unique
633
+                do {
634
+                    $functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax());
635
+                } while (function_exists($functionname));
636
+                $code = calculer_boucle('calculer_langues_utilisees', $boucles);
637
+                $code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code;
638
+                $code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();';
639
+                $res = '';
640
+                eval($code);
641
+                $res = explode(',', $res);
642
+                foreach ($res as $lang) {
643
+                    $langues[$lang] = 1;
644
+                }
645
+            } else {
646
+                $res = sql_select(implode(',', $boucle->select), $boucle->from);
647
+                while ($row = sql_fetch($res)) {
648
+                    $langues[$row['lang']] = 1;
649
+                }
650
+            }
651
+        }
652
+    }
653
+
654
+    $langues = array_filter(array_keys($langues));
655
+    sort($langues);
656
+    $langues = join(',', $langues);
657
+    spip_log("langues utilisees: $langues");
658
+
659
+    return $langues;
660 660
 }
661 661
 
662 662
 /**
@@ -673,9 +673,9 @@  discard block
 block discarded – undo
673 673
  *     incluant les rubriques noeuds et toutes leurs descendances
674 674
  */
675 675
 function calcul_branche_in($id) {
676
-	$calcul_branche_in = charger_fonction('calcul_branche_in', 'inc');
676
+    $calcul_branche_in = charger_fonction('calcul_branche_in', 'inc');
677 677
 
678
-	return $calcul_branche_in($id);
678
+    return $calcul_branche_in($id);
679 679
 }
680 680
 
681 681
 /**
@@ -693,9 +693,9 @@  discard block
 block discarded – undo
693 693
  *     incluant les rubriques transmises et toutes leurs parentées
694 694
  */
695 695
 function calcul_hierarchie_in($id, $tout = true) {
696
-	$calcul_hierarchie_in = charger_fonction('calcul_hierarchie_in', 'inc');
696
+    $calcul_hierarchie_in = charger_fonction('calcul_hierarchie_in', 'inc');
697 697
 
698
-	return $calcul_hierarchie_in($id, $tout);
698
+    return $calcul_hierarchie_in($id, $tout);
699 699
 }
700 700
 
701 701
 
@@ -716,40 +716,40 @@  discard block
 block discarded – undo
716 716
  *     incluant les rubriques noeuds et toutes leurs descendances
717 717
  */
718 718
 function inc_calcul_branche_in_dist($id) {
719
-	static $b = [];
720
-
721
-	// normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN
722
-	if (!is_array($id)) {
723
-		$id = explode(',', $id);
724
-	}
725
-	$id = join(',', array_map('intval', $id));
726
-	if (isset($b[$id])) {
727
-		return $b[$id];
728
-	}
729
-
730
-	// Notre branche commence par la rubrique de depart
731
-	$branche = $r = $id;
732
-
733
-	// On ajoute une generation (les filles de la generation precedente)
734
-	// jusqu'a epuisement, en se protegeant des references circulaires
735
-	$maxiter = 10000;
736
-	while (
737
-		$maxiter-- and $filles = sql_allfetsel(
738
-			'id_rubrique',
739
-			'spip_rubriques',
740
-			sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT')
741
-		)
742
-	) {
743
-		$r = join(',', array_column($filles, 'id_rubrique'));
744
-		$branche .= ',' . $r;
745
-	}
746
-
747
-	# securite pour ne pas plomber la conso memoire sur les sites prolifiques
748
-	if (strlen($branche) < 10000) {
749
-		$b[$id] = $branche;
750
-	}
751
-
752
-	return $branche;
719
+    static $b = [];
720
+
721
+    // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN
722
+    if (!is_array($id)) {
723
+        $id = explode(',', $id);
724
+    }
725
+    $id = join(',', array_map('intval', $id));
726
+    if (isset($b[$id])) {
727
+        return $b[$id];
728
+    }
729
+
730
+    // Notre branche commence par la rubrique de depart
731
+    $branche = $r = $id;
732
+
733
+    // On ajoute une generation (les filles de la generation precedente)
734
+    // jusqu'a epuisement, en se protegeant des references circulaires
735
+    $maxiter = 10000;
736
+    while (
737
+        $maxiter-- and $filles = sql_allfetsel(
738
+            'id_rubrique',
739
+            'spip_rubriques',
740
+            sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT')
741
+        )
742
+    ) {
743
+        $r = join(',', array_column($filles, 'id_rubrique'));
744
+        $branche .= ',' . $r;
745
+    }
746
+
747
+    # securite pour ne pas plomber la conso memoire sur les sites prolifiques
748
+    if (strlen($branche) < 10000) {
749
+        $b[$id] = $branche;
750
+    }
751
+
752
+    return $branche;
753 753
 }
754 754
 
755 755
 
@@ -771,45 +771,45 @@  discard block
 block discarded – undo
771 771
  *     incluant les rubriques transmises et toutes leurs parentées
772 772
  */
773 773
 function inc_calcul_hierarchie_in_dist($id, $tout = true) {
774
-	static $b = [];
775
-
776
-	// normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN
777
-	if (!is_array($id)) {
778
-		$id = explode(',', $id);
779
-	}
780
-	$id = join(',', array_map('intval', $id));
781
-
782
-	if (isset($b[$id])) {
783
-		// Notre branche commence par la rubrique de depart si $tout=true
784
-		return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id];
785
-	}
786
-
787
-	$hier = '';
788
-
789
-	// On ajoute une generation (les filles de la generation precedente)
790
-	// jusqu'a epuisement, en se protegeant des references circulaires
791
-	$ids_nouveaux_parents = $id;
792
-	$maxiter = 10000;
793
-	while (
794
-		$maxiter-- and $parents = sql_allfetsel(
795
-			'id_parent',
796
-			'spip_rubriques',
797
-			sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT')
798
-		)
799
-	) {
800
-		$ids_nouveaux_parents = join(',', array_column($parents, 'id_parent'));
801
-		$hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : '');
802
-	}
803
-
804
-	# securite pour ne pas plomber la conso memoire sur les sites prolifiques
805
-	if (strlen($hier) < 10000) {
806
-		$b[$id] = $hier;
807
-	}
808
-
809
-	// Notre branche commence par la rubrique de depart si $tout=true
810
-	$hier = $tout ? (strlen($hier) ? "$hier,$id" : $id) : $hier;
811
-
812
-	return $hier;
774
+    static $b = [];
775
+
776
+    // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN
777
+    if (!is_array($id)) {
778
+        $id = explode(',', $id);
779
+    }
780
+    $id = join(',', array_map('intval', $id));
781
+
782
+    if (isset($b[$id])) {
783
+        // Notre branche commence par la rubrique de depart si $tout=true
784
+        return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id];
785
+    }
786
+
787
+    $hier = '';
788
+
789
+    // On ajoute une generation (les filles de la generation precedente)
790
+    // jusqu'a epuisement, en se protegeant des references circulaires
791
+    $ids_nouveaux_parents = $id;
792
+    $maxiter = 10000;
793
+    while (
794
+        $maxiter-- and $parents = sql_allfetsel(
795
+            'id_parent',
796
+            'spip_rubriques',
797
+            sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT')
798
+        )
799
+    ) {
800
+        $ids_nouveaux_parents = join(',', array_column($parents, 'id_parent'));
801
+        $hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : '');
802
+    }
803
+
804
+    # securite pour ne pas plomber la conso memoire sur les sites prolifiques
805
+    if (strlen($hier) < 10000) {
806
+        $b[$id] = $hier;
807
+    }
808
+
809
+    // Notre branche commence par la rubrique de depart si $tout=true
810
+    $hier = $tout ? (strlen($hier) ? "$hier,$id" : $id) : $hier;
811
+
812
+    return $hier;
813 813
 }
814 814
 
815 815
 
@@ -827,47 +827,47 @@  discard block
 block discarded – undo
827 827
  * @return void
828 828
  **/
829 829
 function calculer_prochain_postdate($check = false) {
830
-	include_spip('base/abstract_sql');
831
-	if ($check) {
832
-		$postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
833
-			'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
834
-
835
-		$r = sql_select(
836
-			'DISTINCT A.id_rubrique AS id',
837
-			'spip_articles AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique',
838
-			"R.statut != 'publie' AND A.statut='publie'$postdates"
839
-		);
840
-		while ($row = sql_fetch($r)) {
841
-			publier_branche_rubrique($row['id']);
842
-		}
843
-
844
-		pipeline('trig_calculer_prochain_postdate', '');
845
-	}
846
-
847
-	$t = sql_fetsel(
848
-		'date',
849
-		'spip_articles',
850
-		"statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')),
851
-		'',
852
-		'date',
853
-		'1'
854
-	);
855
-
856
-	if ($t) {
857
-		$t = $t['date'];
858
-		if (
859
-			!isset($GLOBALS['meta']['date_prochain_postdate'])
860
-			or $t <> $GLOBALS['meta']['date_prochain_postdate']
861
-		) {
862
-			ecrire_meta('date_prochain_postdate', strtotime($t));
863
-			ecrire_meta('derniere_modif', time());
864
-		}
865
-	} else {
866
-		effacer_meta('date_prochain_postdate');
867
-		ecrire_meta('derniere_modif', time());
868
-	}
869
-
870
-	spip_log("prochain postdate: $t");
830
+    include_spip('base/abstract_sql');
831
+    if ($check) {
832
+        $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ?
833
+            'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : '';
834
+
835
+        $r = sql_select(
836
+            'DISTINCT A.id_rubrique AS id',
837
+            'spip_articles AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique',
838
+            "R.statut != 'publie' AND A.statut='publie'$postdates"
839
+        );
840
+        while ($row = sql_fetch($r)) {
841
+            publier_branche_rubrique($row['id']);
842
+        }
843
+
844
+        pipeline('trig_calculer_prochain_postdate', '');
845
+    }
846
+
847
+    $t = sql_fetsel(
848
+        'date',
849
+        'spip_articles',
850
+        "statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')),
851
+        '',
852
+        'date',
853
+        '1'
854
+    );
855
+
856
+    if ($t) {
857
+        $t = $t['date'];
858
+        if (
859
+            !isset($GLOBALS['meta']['date_prochain_postdate'])
860
+            or $t <> $GLOBALS['meta']['date_prochain_postdate']
861
+        ) {
862
+            ecrire_meta('date_prochain_postdate', strtotime($t));
863
+            ecrire_meta('derniere_modif', time());
864
+        }
865
+    } else {
866
+        effacer_meta('date_prochain_postdate');
867
+        ecrire_meta('derniere_modif', time());
868
+    }
869
+
870
+    spip_log("prochain postdate: $t");
871 871
 }
872 872
 
873 873
 /**
@@ -892,62 +892,62 @@  discard block
 block discarded – undo
892 892
  */
893 893
 function creer_rubrique_nommee($titre, $id_parent = 0, $serveur = '') {
894 894
 
895
-	// eclater l'arborescence demandee
896
-	// echapper les </multi> et autres balises fermantes html
897
-	$titre = preg_replace(',</([a-z][^>]*)>,ims', "<@\\1>", $titre);
898
-	$arbo = explode('/', preg_replace(',^/,', '', $titre));
899
-	include_spip('base/abstract_sql');
900
-	foreach ($arbo as $titre) {
901
-		// retablir les </multi> et autres balises fermantes html
902
-		$titre = preg_replace(',<@([a-z][^>]*)>,ims', "</\\1>", $titre);
903
-		$r = sql_getfetsel(
904
-			'id_rubrique',
905
-			'spip_rubriques',
906
-			'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent),
907
-			$groupby = [],
908
-			$orderby = [],
909
-			$limit = '',
910
-			$having = [],
911
-			$serveur
912
-		);
913
-		if ($r !== null) {
914
-			$id_parent = $r;
915
-		} else {
916
-			$id_rubrique = sql_insertq('spip_rubriques', [
917
-					'titre' => $titre,
918
-					'id_parent' => $id_parent,
919
-					'statut' => 'prepa'
920
-				], $desc = [], $serveur);
921
-			if ($id_parent > 0) {
922
-				$data = sql_fetsel(
923
-					'id_secteur,lang',
924
-					'spip_rubriques',
925
-					"id_rubrique=$id_parent",
926
-					$groupby = [],
927
-					$orderby = [],
928
-					$limit = '',
929
-					$having = [],
930
-					$serveur
931
-				);
932
-				$id_secteur = $data['id_secteur'];
933
-				$lang = $data['lang'];
934
-			} else {
935
-				$id_secteur = $id_rubrique;
936
-				$lang = $GLOBALS['meta']['langue_site'];
937
-			}
938
-
939
-			sql_updateq(
940
-				'spip_rubriques',
941
-				['id_secteur' => $id_secteur, 'lang' => $lang],
942
-				'id_rubrique=' . intval($id_rubrique),
943
-				[],
944
-				$serveur
945
-			);
946
-
947
-			// pour la recursion
948
-			$id_parent = $id_rubrique;
949
-		}
950
-	}
951
-
952
-	return intval($id_parent);
895
+    // eclater l'arborescence demandee
896
+    // echapper les </multi> et autres balises fermantes html
897
+    $titre = preg_replace(',</([a-z][^>]*)>,ims', "<@\\1>", $titre);
898
+    $arbo = explode('/', preg_replace(',^/,', '', $titre));
899
+    include_spip('base/abstract_sql');
900
+    foreach ($arbo as $titre) {
901
+        // retablir les </multi> et autres balises fermantes html
902
+        $titre = preg_replace(',<@([a-z][^>]*)>,ims', "</\\1>", $titre);
903
+        $r = sql_getfetsel(
904
+            'id_rubrique',
905
+            'spip_rubriques',
906
+            'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent),
907
+            $groupby = [],
908
+            $orderby = [],
909
+            $limit = '',
910
+            $having = [],
911
+            $serveur
912
+        );
913
+        if ($r !== null) {
914
+            $id_parent = $r;
915
+        } else {
916
+            $id_rubrique = sql_insertq('spip_rubriques', [
917
+                    'titre' => $titre,
918
+                    'id_parent' => $id_parent,
919
+                    'statut' => 'prepa'
920
+                ], $desc = [], $serveur);
921
+            if ($id_parent > 0) {
922
+                $data = sql_fetsel(
923
+                    'id_secteur,lang',
924
+                    'spip_rubriques',
925
+                    "id_rubrique=$id_parent",
926
+                    $groupby = [],
927
+                    $orderby = [],
928
+                    $limit = '',
929
+                    $having = [],
930
+                    $serveur
931
+                );
932
+                $id_secteur = $data['id_secteur'];
933
+                $lang = $data['lang'];
934
+            } else {
935
+                $id_secteur = $id_rubrique;
936
+                $lang = $GLOBALS['meta']['langue_site'];
937
+            }
938
+
939
+            sql_updateq(
940
+                'spip_rubriques',
941
+                ['id_secteur' => $id_secteur, 'lang' => $lang],
942
+                'id_rubrique=' . intval($id_rubrique),
943
+                [],
944
+                $serveur
945
+            );
946
+
947
+            // pour la recursion
948
+            $id_parent = $id_rubrique;
949
+        }
950
+    }
951
+
952
+    return intval($id_parent);
953 953
 }
Please login to merge, or discard this patch.
ecrire/charsets/translit.php 1 patch
Indentation   +358 added lines, -358 removed lines patch added patch discarded remove patch
@@ -9,384 +9,384 @@
 block discarded – undo
9 9
 
10 10
 $GLOBALS['CHARSET']['translit'] = [
11 11
 // latin [fausse plage]
12
-	128 => 'EUR',
13
-	131 => 'f',
14
-	140 => 'OE',
15
-	147 => '\'\'',
16
-	148 => '\'\'',
17
-	153 => '(TM)',
18
-	156 => 'oe',
19
-	159 => 'Y',
12
+    128 => 'EUR',
13
+    131 => 'f',
14
+    140 => 'OE',
15
+    147 => '\'\'',
16
+    148 => '\'\'',
17
+    153 => '(TM)',
18
+    156 => 'oe',
19
+    159 => 'Y',
20 20
 
21 21
 // latin [legal]
22
-	160 => ' ',
23
-	161 => '!',
24
-	162 => 'c',
25
-	163 => 'L',
26
-	164 => 'O',
27
-	165 => 'yen',
28
-	166 => '|',
29
-	167 => 'p',
30
-	169 => '(c)',
31
-	171 => '<<',
32
-	172 => '-',
33
-	173 => '-',
34
-	174 => '(R)',
35
-	176 => 'o',
36
-	177 => '+-',
37
-	181 => 'mu',
38
-	182 => 'p',
39
-	183 => '.',
40
-	186 => 'o ',
41
-	187 => '>>',
42
-	191 => '?',
43
-	192 => 'A',
44
-	193 => 'A',
45
-	194 => 'A',
46
-	195 => 'A',
47
-	196 => 'A',
48
-	197 => 'A',
49
-	198 => 'AE',
50
-	199 => 'C',
51
-	200 => 'E',
52
-	201 => 'E',
53
-	202 => 'E',
54
-	203 => 'E',
55
-	204 => 'I',
56
-	205 => 'I',
57
-	206 => 'I',
58
-	207 => 'I',
59
-	209 => 'N',
60
-	210 => 'O',
61
-	211 => 'O',
62
-	212 => 'O',
63
-	213 => 'O',
64
-	214 => 'O',
65
-	216 => 'O',
66
-	217 => 'U',
67
-	218 => 'U',
68
-	219 => 'U',
69
-	220 => 'U',
70
-	223 => 'ss',
71
-	224 => 'a',
72
-	225 => 'a',
73
-	226 => 'a',
74
-	227 => 'a',
75
-	228 => 'a',
76
-	229 => 'a',
77
-	230 => 'ae',
78
-	231 => 'c',
79
-	232 => 'e',
80
-	233 => 'e',
81
-	234 => 'e',
82
-	235 => 'e',
83
-	236 => 'i',
84
-	237 => 'i',
85
-	238 => 'i',
86
-	239 => 'i',
87
-	241 => 'n',
88
-	242 => 'o',
89
-	243 => 'o',
90
-	244 => 'o',
91
-	245 => 'o',
92
-	246 => 'o',
93
-	248 => 'o',
94
-	249 => 'u',
95
-	250 => 'u',
96
-	251 => 'u',
97
-	252 => 'u',
98
-	255 => 'y',
22
+    160 => ' ',
23
+    161 => '!',
24
+    162 => 'c',
25
+    163 => 'L',
26
+    164 => 'O',
27
+    165 => 'yen',
28
+    166 => '|',
29
+    167 => 'p',
30
+    169 => '(c)',
31
+    171 => '<<',
32
+    172 => '-',
33
+    173 => '-',
34
+    174 => '(R)',
35
+    176 => 'o',
36
+    177 => '+-',
37
+    181 => 'mu',
38
+    182 => 'p',
39
+    183 => '.',
40
+    186 => 'o ',
41
+    187 => '>>',
42
+    191 => '?',
43
+    192 => 'A',
44
+    193 => 'A',
45
+    194 => 'A',
46
+    195 => 'A',
47
+    196 => 'A',
48
+    197 => 'A',
49
+    198 => 'AE',
50
+    199 => 'C',
51
+    200 => 'E',
52
+    201 => 'E',
53
+    202 => 'E',
54
+    203 => 'E',
55
+    204 => 'I',
56
+    205 => 'I',
57
+    206 => 'I',
58
+    207 => 'I',
59
+    209 => 'N',
60
+    210 => 'O',
61
+    211 => 'O',
62
+    212 => 'O',
63
+    213 => 'O',
64
+    214 => 'O',
65
+    216 => 'O',
66
+    217 => 'U',
67
+    218 => 'U',
68
+    219 => 'U',
69
+    220 => 'U',
70
+    223 => 'ss',
71
+    224 => 'a',
72
+    225 => 'a',
73
+    226 => 'a',
74
+    227 => 'a',
75
+    228 => 'a',
76
+    229 => 'a',
77
+    230 => 'ae',
78
+    231 => 'c',
79
+    232 => 'e',
80
+    233 => 'e',
81
+    234 => 'e',
82
+    235 => 'e',
83
+    236 => 'i',
84
+    237 => 'i',
85
+    238 => 'i',
86
+    239 => 'i',
87
+    241 => 'n',
88
+    242 => 'o',
89
+    243 => 'o',
90
+    244 => 'o',
91
+    245 => 'o',
92
+    246 => 'o',
93
+    248 => 'o',
94
+    249 => 'u',
95
+    250 => 'u',
96
+    251 => 'u',
97
+    252 => 'u',
98
+    255 => 'y',
99 99
 
100 100
 // turc
101
-	286 => 'G',
102
-	287 => 'g',
103
-	304 => 'I',
104
-	305 => 'i',
101
+    286 => 'G',
102
+    287 => 'g',
103
+    304 => 'I',
104
+    305 => 'i',
105 105
 
106 106
 // esperanto
107
-	264 => 'Cx',
108
-	265 => 'cx',
109
-	284 => 'Gx',
110
-	285 => 'gx',
111
-	292 => 'Hx',
112
-	293 => 'hx',
113
-	308 => 'Jx',
114
-	309 => 'jx',
115
-	348 => 'Sx',
116
-	349 => 'sx',
117
-	364 => 'Ux',
118
-	365 => 'ux',
107
+    264 => 'Cx',
108
+    265 => 'cx',
109
+    284 => 'Gx',
110
+    285 => 'gx',
111
+    292 => 'Hx',
112
+    293 => 'hx',
113
+    308 => 'Jx',
114
+    309 => 'jx',
115
+    348 => 'Sx',
116
+    349 => 'sx',
117
+    364 => 'Ux',
118
+    365 => 'ux',
119 119
 
120 120
 
121 121
 // latin2 [Czech]
122
-	283 => 'e',
123
-	353 => 's',
124
-	269 => 'c',
125
-	345 => 'r',
126
-	382 => 'z',
127
-	367 => 'u',
128
-	328 => 'n',
129
-	357 => 't',
130
-	271 => 'd',
131
-	449 => 'o',
132
-	282 => 'E',
133
-	352 => 'S',
134
-	268 => 'C',
135
-	344 => 'R',
136
-	381 => 'Z',
137
-	366 => 'U',
138
-	327 => 'N',
139
-	356 => 'T',
140
-	270 => 'D',
141
-	467 => 'O',
122
+    283 => 'e',
123
+    353 => 's',
124
+    269 => 'c',
125
+    345 => 'r',
126
+    382 => 'z',
127
+    367 => 'u',
128
+    328 => 'n',
129
+    357 => 't',
130
+    271 => 'd',
131
+    449 => 'o',
132
+    282 => 'E',
133
+    352 => 'S',
134
+    268 => 'C',
135
+    344 => 'R',
136
+    381 => 'Z',
137
+    366 => 'U',
138
+    327 => 'N',
139
+    356 => 'T',
140
+    270 => 'D',
141
+    467 => 'O',
142 142
 
143 143
 // francais
144
-	338 => 'OE',
145
-	339 => 'oe',
146
-	376 => 'Y',
147
-	402 => 'f',
144
+    338 => 'OE',
145
+    339 => 'oe',
146
+    376 => 'Y',
147
+    402 => 'f',
148 148
 
149 149
 //polskie
150
-	260 => 'A',
151
-	261 => 'a',
152
-	262 => 'C',
153
-	263 => 'c',
154
-	280 => 'E',
155
-	281 => 'e',
156
-	321 => 'L',
157
-	322 => 'l',
158
-	323 => 'N',
159
-	324 => 'n',
160
-	346 => 'S',
161
-	347 => 's',
162
-	377 => 'Z',
163
-	378 => 'z',
164
-	379 => 'Z',
165
-	380 => 'z',
150
+    260 => 'A',
151
+    261 => 'a',
152
+    262 => 'C',
153
+    263 => 'c',
154
+    280 => 'E',
155
+    281 => 'e',
156
+    321 => 'L',
157
+    322 => 'l',
158
+    323 => 'N',
159
+    324 => 'n',
160
+    346 => 'S',
161
+    347 => 's',
162
+    377 => 'Z',
163
+    378 => 'z',
164
+    379 => 'Z',
165
+    380 => 'z',
166 166
 
167 167
 //roumain
168
-	258 => 'A',
169
-	259 => 'a',
170
-	354 => 'T',
171
-	355 => 't',
168
+    258 => 'A',
169
+    259 => 'a',
170
+    354 => 'T',
171
+    355 => 't',
172 172
 
173 173
 //turc & roumain
174
-	350 => 'S',
175
-	351 => 's',
174
+    350 => 'S',
175
+    351 => 's',
176 176
 
177 177
 // cyrillique
178
-	1026 => 'D%',
179
-	1027 => 'G%',
180
-	8218 => '\'',
181
-	1107 => 'g%',
182
-	8222 => '"',
183
-	8230 => '...',
184
-	8224 => '/-',
185
-	8225 => '/=',
186
-	8364 => 'EUR',
187
-	8240 => '0/00',
188
-	1033 => 'LJ',
189
-	8249 => '<',
190
-	1034 => 'NJ',
191
-	1036 => 'KJ',
192
-	1035 => 'Ts',
193
-	1039 => 'DZ',
194
-	1106 => 'd%',
195
-	8216 => '`',
196
-	8217 => '\'',
197
-	8220 => '"',
198
-	8221 => '"',
199
-	8226 => ' o ',
200
-	8211 => '-',
201
-	8212 => '~',
202
-	8482 => '(TM)',
203
-	1113 => 'lj',
204
-	8250 => '>',
205
-	1114 => 'nj',
206
-	1116 => 'kj',
207
-	1115 => 'ts',
208
-	1119 => 'dz',
209
-	1038 => 'V%',
210
-	1118 => 'v%',
211
-	1032 => 'J%',
212
-	1168 => 'G3',
213
-	1025 => 'IO',
214
-	1028 => 'IE',
215
-	1031 => 'YI',
216
-	1030 => 'II',
217
-	1110 => 'ii',
218
-	1169 => 'g3',
219
-	1105 => 'io',
220
-	8470 => 'No.',
221
-	1108 => 'ie',
222
-	1112 => 'j%',
223
-	1029 => 'DS',
224
-	1109 => 'ds',
225
-	1111 => 'yi',
226
-	1040 => 'A',
227
-	1041 => 'B',
228
-	1042 => 'V',
229
-	1043 => 'G',
230
-	1044 => 'D',
231
-	1045 => 'E',
232
-	1046 => 'ZH',
233
-	1047 => 'Z',
234
-	1048 => 'I',
235
-	1049 => 'J',
236
-	1050 => 'K',
237
-	1051 => 'L',
238
-	1052 => 'M',
239
-	1053 => 'N',
240
-	1054 => 'O',
241
-	1055 => 'P',
242
-	1056 => 'R',
243
-	1057 => 'S',
244
-	1058 => 'T',
245
-	1059 => 'U',
246
-	1060 => 'F',
247
-	1061 => 'H',
248
-	1062 => 'C',
249
-	1063 => 'CH',
250
-	1064 => 'SH',
251
-	1065 => 'SCH',
252
-	1066 => '"',
253
-	1067 => 'Y',
254
-	1068 => '\'',
255
-	1069 => '`E',
256
-	1070 => 'YU',
257
-	1071 => 'YA',
258
-	1072 => 'a',
259
-	1073 => 'b',
260
-	1074 => 'v',
261
-	1075 => 'g',
262
-	1076 => 'd',
263
-	1077 => 'e',
264
-	1078 => 'zh',
265
-	1079 => 'z',
266
-	1080 => 'i',
267
-	1081 => 'j',
268
-	1082 => 'k',
269
-	1083 => 'l',
270
-	1084 => 'm',
271
-	1085 => 'n',
272
-	1086 => 'o',
273
-	1087 => 'p',
274
-	1088 => 'r',
275
-	1089 => 's',
276
-	1090 => 't',
277
-	1091 => 'u',
278
-	1092 => 'f',
279
-	1093 => 'h',
280
-	1094 => 'c',
281
-	1095 => 'ch',
282
-	1096 => 'sh',
283
-	1097 => 'sch',
284
-	1098 => '"',
285
-	1099 => 'y',
286
-	1100 => '\'',
287
-	1101 => '`e',
288
-	1102 => 'yu',
289
-	1103 => 'ya',
178
+    1026 => 'D%',
179
+    1027 => 'G%',
180
+    8218 => '\'',
181
+    1107 => 'g%',
182
+    8222 => '"',
183
+    8230 => '...',
184
+    8224 => '/-',
185
+    8225 => '/=',
186
+    8364 => 'EUR',
187
+    8240 => '0/00',
188
+    1033 => 'LJ',
189
+    8249 => '<',
190
+    1034 => 'NJ',
191
+    1036 => 'KJ',
192
+    1035 => 'Ts',
193
+    1039 => 'DZ',
194
+    1106 => 'd%',
195
+    8216 => '`',
196
+    8217 => '\'',
197
+    8220 => '"',
198
+    8221 => '"',
199
+    8226 => ' o ',
200
+    8211 => '-',
201
+    8212 => '~',
202
+    8482 => '(TM)',
203
+    1113 => 'lj',
204
+    8250 => '>',
205
+    1114 => 'nj',
206
+    1116 => 'kj',
207
+    1115 => 'ts',
208
+    1119 => 'dz',
209
+    1038 => 'V%',
210
+    1118 => 'v%',
211
+    1032 => 'J%',
212
+    1168 => 'G3',
213
+    1025 => 'IO',
214
+    1028 => 'IE',
215
+    1031 => 'YI',
216
+    1030 => 'II',
217
+    1110 => 'ii',
218
+    1169 => 'g3',
219
+    1105 => 'io',
220
+    8470 => 'No.',
221
+    1108 => 'ie',
222
+    1112 => 'j%',
223
+    1029 => 'DS',
224
+    1109 => 'ds',
225
+    1111 => 'yi',
226
+    1040 => 'A',
227
+    1041 => 'B',
228
+    1042 => 'V',
229
+    1043 => 'G',
230
+    1044 => 'D',
231
+    1045 => 'E',
232
+    1046 => 'ZH',
233
+    1047 => 'Z',
234
+    1048 => 'I',
235
+    1049 => 'J',
236
+    1050 => 'K',
237
+    1051 => 'L',
238
+    1052 => 'M',
239
+    1053 => 'N',
240
+    1054 => 'O',
241
+    1055 => 'P',
242
+    1056 => 'R',
243
+    1057 => 'S',
244
+    1058 => 'T',
245
+    1059 => 'U',
246
+    1060 => 'F',
247
+    1061 => 'H',
248
+    1062 => 'C',
249
+    1063 => 'CH',
250
+    1064 => 'SH',
251
+    1065 => 'SCH',
252
+    1066 => '"',
253
+    1067 => 'Y',
254
+    1068 => '\'',
255
+    1069 => '`E',
256
+    1070 => 'YU',
257
+    1071 => 'YA',
258
+    1072 => 'a',
259
+    1073 => 'b',
260
+    1074 => 'v',
261
+    1075 => 'g',
262
+    1076 => 'd',
263
+    1077 => 'e',
264
+    1078 => 'zh',
265
+    1079 => 'z',
266
+    1080 => 'i',
267
+    1081 => 'j',
268
+    1082 => 'k',
269
+    1083 => 'l',
270
+    1084 => 'm',
271
+    1085 => 'n',
272
+    1086 => 'o',
273
+    1087 => 'p',
274
+    1088 => 'r',
275
+    1089 => 's',
276
+    1090 => 't',
277
+    1091 => 'u',
278
+    1092 => 'f',
279
+    1093 => 'h',
280
+    1094 => 'c',
281
+    1095 => 'ch',
282
+    1096 => 'sh',
283
+    1097 => 'sch',
284
+    1098 => '"',
285
+    1099 => 'y',
286
+    1100 => '\'',
287
+    1101 => '`e',
288
+    1102 => 'yu',
289
+    1103 => 'ya',
290 290
 
291 291
 // vietnamien en translitteration de base
292
-	7843 => 'a',
293
-	7841 => 'a',
294
-	7845 => 'a',
295
-	7847 => 'a',
296
-	7849 => 'a',
297
-	7851 => 'a',
298
-	7853 => 'a',
299
-	7855 => 'a',
300
-	7857 => 'a',
301
-	7859 => 'a',
302
-	7861 => 'a',
303
-	7863 => 'a',
304
-	7842 => 'A',
305
-	7840 => 'A',
306
-	7844 => 'A',
307
-	7846 => 'A',
308
-	7848 => 'A',
309
-	7850 => 'A',
310
-	7852 => 'A',
311
-	7854 => 'A',
312
-	7856 => 'A',
313
-	7858 => 'A',
314
-	7860 => 'A',
315
-	7862 => 'A',
316
-	7867 => 'e',
317
-	7869 => 'e',
318
-	7865 => 'e',
319
-	7871 => 'e',
320
-	7873 => 'e',
321
-	7875 => 'e',
322
-	7877 => 'e',
323
-	7879 => 'e',
324
-	7866 => 'E',
325
-	7868 => 'E',
326
-	7864 => 'E',
327
-	7870 => 'E',
328
-	7872 => 'E',
329
-	7874 => 'E',
330
-	7876 => 'E',
331
-	7878 => 'E',
332
-	7881 => 'i',
333
-	7883 => 'i',
334
-	7880 => 'I',
335
-	7882 => 'I',
336
-	7887 => 'o',
337
-	7885 => 'o',
338
-	7889 => 'o',
339
-	7891 => 'o',
340
-	7893 => 'o',
341
-	7895 => 'o',
342
-	7897 => 'o',
343
-	417 => 'o',
344
-	7899 => 'o',
345
-	7901 => 'o',
346
-	7903 => 'o',
347
-	7905 => 'o',
348
-	7907 => 'o',
349
-	7886 => 'O',
350
-	7884 => 'O',
351
-	7888 => 'O',
352
-	7890 => 'O',
353
-	7892 => 'O',
354
-	7894 => 'O',
355
-	7896 => 'O',
356
-	416 => 'O',
357
-	7898 => 'O',
358
-	7900 => 'O',
359
-	7902 => 'O',
360
-	7904 => 'O',
361
-	7906 => 'O',
362
-	7911 => 'u',
363
-	361 => 'u',
364
-	7909 => 'u',
365
-	432 => 'u',
366
-	7913 => 'u',
367
-	7915 => 'u',
368
-	7917 => 'u',
369
-	7919 => 'u',
370
-	7921 => 'u',
371
-	7910 => 'U',
372
-	360 => 'U',
373
-	7908 => 'U',
374
-	431 => 'U',
375
-	7912 => 'U',
376
-	7914 => 'U',
377
-	7916 => 'U',
378
-	7918 => 'U',
379
-	7920 => 'U',
380
-	253 => 'y',
381
-	7923 => 'y',
382
-	7927 => 'y',
383
-	7929 => 'y',
384
-	7925 => 'y',
385
-	221 => 'Y',
386
-	7922 => 'Y',
387
-	7926 => 'Y',
388
-	7928 => 'Y',
389
-	7924 => 'Y',
390
-	273 => 'd'
292
+    7843 => 'a',
293
+    7841 => 'a',
294
+    7845 => 'a',
295
+    7847 => 'a',
296
+    7849 => 'a',
297
+    7851 => 'a',
298
+    7853 => 'a',
299
+    7855 => 'a',
300
+    7857 => 'a',
301
+    7859 => 'a',
302
+    7861 => 'a',
303
+    7863 => 'a',
304
+    7842 => 'A',
305
+    7840 => 'A',
306
+    7844 => 'A',
307
+    7846 => 'A',
308
+    7848 => 'A',
309
+    7850 => 'A',
310
+    7852 => 'A',
311
+    7854 => 'A',
312
+    7856 => 'A',
313
+    7858 => 'A',
314
+    7860 => 'A',
315
+    7862 => 'A',
316
+    7867 => 'e',
317
+    7869 => 'e',
318
+    7865 => 'e',
319
+    7871 => 'e',
320
+    7873 => 'e',
321
+    7875 => 'e',
322
+    7877 => 'e',
323
+    7879 => 'e',
324
+    7866 => 'E',
325
+    7868 => 'E',
326
+    7864 => 'E',
327
+    7870 => 'E',
328
+    7872 => 'E',
329
+    7874 => 'E',
330
+    7876 => 'E',
331
+    7878 => 'E',
332
+    7881 => 'i',
333
+    7883 => 'i',
334
+    7880 => 'I',
335
+    7882 => 'I',
336
+    7887 => 'o',
337
+    7885 => 'o',
338
+    7889 => 'o',
339
+    7891 => 'o',
340
+    7893 => 'o',
341
+    7895 => 'o',
342
+    7897 => 'o',
343
+    417 => 'o',
344
+    7899 => 'o',
345
+    7901 => 'o',
346
+    7903 => 'o',
347
+    7905 => 'o',
348
+    7907 => 'o',
349
+    7886 => 'O',
350
+    7884 => 'O',
351
+    7888 => 'O',
352
+    7890 => 'O',
353
+    7892 => 'O',
354
+    7894 => 'O',
355
+    7896 => 'O',
356
+    416 => 'O',
357
+    7898 => 'O',
358
+    7900 => 'O',
359
+    7902 => 'O',
360
+    7904 => 'O',
361
+    7906 => 'O',
362
+    7911 => 'u',
363
+    361 => 'u',
364
+    7909 => 'u',
365
+    432 => 'u',
366
+    7913 => 'u',
367
+    7915 => 'u',
368
+    7917 => 'u',
369
+    7919 => 'u',
370
+    7921 => 'u',
371
+    7910 => 'U',
372
+    360 => 'U',
373
+    7908 => 'U',
374
+    431 => 'U',
375
+    7912 => 'U',
376
+    7914 => 'U',
377
+    7916 => 'U',
378
+    7918 => 'U',
379
+    7920 => 'U',
380
+    253 => 'y',
381
+    7923 => 'y',
382
+    7927 => 'y',
383
+    7929 => 'y',
384
+    7925 => 'y',
385
+    221 => 'Y',
386
+    7922 => 'Y',
387
+    7926 => 'Y',
388
+    7928 => 'Y',
389
+    7924 => 'Y',
390
+    273 => 'd'
391 391
 
392 392
 ];
Please login to merge, or discard this patch.
ecrire/lang/public_de.php 1 patch
Indentation   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -4,123 +4,123 @@
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'accueil_site' => 'Startseite',
14
-	'article' => 'Artikel',
15
-	'articles' => 'Artikel',
16
-	'articles_auteur' => 'Artikel dieses Autors',
17
-	'articles_populaires' => 'Die beliebtesten Artikel',
18
-	'articles_rubrique' => 'Artikel dieser Rubrik',
19
-	'aucun_article' => 'Unter dieser Adresse gibt es keinen Artikel.',
20
-	'aucun_auteur' => 'Unter dieser Adresse gibt es keinen Autor.',
21
-	'aucun_site' => 'Unter dieser Adresse gibt es keien Website.',
22
-	'aucune_breve' => 'Unter dieser Adresse gibt es keine Meldung.',
23
-	'aucune_rubrique' => 'Unter dieser Adresse gibt es keine Rubrik.',
24
-	'auteur' => 'Autor',
25
-	'autres' => 'Andere',
26
-	'autres_breves' => 'Weitere Meldungen.',
27
-	'autres_groupes_mots_clefs' => 'Weitere Schlagwortgruppen',
28
-	'autres_sites' => 'Weitere Websites',
29
-
30
-	// B
31
-	'bonjour' => 'Hallo',
32
-
33
-	// C
34
-	'commenter_site' => 'Website kommentieren',
35
-	'contact' => 'Kontakt',
36
-	'copie_document_impossible' => 'Dokument kann nicht kopiert werden',
37
-
38
-	// D
39
-	'date' => 'Datum',
40
-	'dernier_ajout' => 'Neuester Eintrag',
41
-	'dernieres_breves' => 'Neue Meldungen',
42
-	'derniers_articles' => 'Neueste Artikel',
43
-	'derniers_commentaires' => 'Neueste Kommentare',
44
-	'derniers_messages_forum' => 'Neue Forumsbeiträge',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'Im Textmodus bearbeiten ',
48
-	'en_reponse' => 'Antwort auf:',
49
-	'en_resume' => 'Als Zusammenfassung',
50
-	'envoyer_message' => 'Nachricht senden',
51
-	'espace_prive' => 'Redaktion',
52
-
53
-	// F
54
-	'formats_acceptes' => 'Akzeptierte Formate: @formats@.',
55
-
56
-	// H
57
-	'hierarchie_site' => 'Baumstruktur der Website',
58
-
59
-	// J
60
-	'jours' => 'Tage',
61
-
62
-	// L
63
-	'lien_connecter' => 'Login',
64
-
65
-	// M
66
-	'meme_auteur' => 'Vom gleichen Autor',
67
-	'meme_rubrique' => 'In der gleichen Rubrik',
68
-	'memes_auteurs' => 'Von den gleichen Autoren',
69
-	'message' => 'Nachricht',
70
-	'messages_forum' => 'Nachrichten',
71
-	'messages_recents' => 'Neue Forumsbeiträge',
72
-	'mots_clef' => 'Schlagwort',
73
-	'mots_clefs' => 'Schlagworte',
74
-	'mots_clefs_meme_groupe' => 'Schlagworte der gleichen Kategorie',
75
-
76
-	// N
77
-	'navigation' => 'Navigation',
78
-	'nom' => 'Name',
79
-	'nouveautes' => 'Neuigkeiten',
80
-	'nouveautes_web' => 'Neues im WWW',
81
-	'nouveaux_articles' => 'Neue Artikel',
82
-	'nouvelles_breves' => 'Neue Meldungen',
83
-
84
-	// P
85
-	'page_precedente' => 'vorige Seite',
86
-	'page_suivante' => 'nächste Seite',
87
-	'par_auteur' => 'von ',
88
-	'participer_site' => 'Sie können bei dieser Website mitmachen, wenn Sie sich anmelden. Sie erhalten sofort eine E-Mail mit den Zugangsdaten zum Redaktionssystem.',
89
-	'plan_site' => 'Sitemap',
90
-	'popularite' => 'Beliebtheit',
91
-	'poster_message' => 'Nachricht senden',
92
-	'proposer_site' => 'Sie können in dieser Rubrik eine Seite vorschlagen :',
93
-
94
-	// R
95
-	'repondre_article' => 'auf diesen Artikel antworten',
96
-	'repondre_breve' => 'auf diese Meldung antworten',
97
-	'resultats_recherche' => 'Suchergebnis(se)',
98
-	'retour_debut_forums' => 'Zurück zum Beginn des Forums',
99
-	'rss_abonnement' => 'Kopieren Sie die folgende URL in Ihren Feedreader:',
100
-	'rss_abonnement_titre' => 'Abonnieren',
101
-	'rss_abonnement_titre_page' => 'Abonnieren von',
102
-	'rss_explication' => 'Ein RSS-Feed sammelt Informationen über die Aktualisierungen einer Website. Er liefert den Inhalt von Einträgen oder Kommentaren oder einen Auszug daraus sowie einen Link zu den Vollversionen und einige andere Informationen. Der Feed ist dazu gedacht, von einem RSS-Aggregator (Feedreader) gelesen zu werden',
103
-	'rss_explication_titre' => 'Was ist ein RSS-Feed ?',
104
-	'rubrique' => 'Rubrik',
105
-	'rubriques' => 'Rubriken',
106
-
107
-	// S
108
-	'signatures_petition' => 'Unterschrift',
109
-	'site_realise_avec_spip' => 'Realisiert mit SPIP',
110
-	'sites_web' => 'Websites',
111
-	'sous_rubriques' => 'Unterrubriken',
112
-	'spam' => 'SPAM',
113
-	'suite' => 'weiter',
114
-	'sur_web' => 'Im WWW',
115
-	'syndiquer_rubrique' => 'Diese Rubrik per RSS einbinden',
116
-	'syndiquer_site' => 'Die ganze Website mit RSS einbinden',
117
-
118
-	// T
119
-	'texte_lettre_information' => 'Dies ist der Newsletter der Website ',
120
-	'texte_lettre_information_2' => 'Diese Mail informiert über die Neuerscheinungen der letzten',
121
-
122
-	// V
123
-	'ver_imprimer' => 'Druckversion',
124
-	'voir_en_ligne' => 'Online ansehen',
125
-	'voir_squelette' => 'Layoutvorlage dieser Seite ansehen'
12
+    // A
13
+    'accueil_site' => 'Startseite',
14
+    'article' => 'Artikel',
15
+    'articles' => 'Artikel',
16
+    'articles_auteur' => 'Artikel dieses Autors',
17
+    'articles_populaires' => 'Die beliebtesten Artikel',
18
+    'articles_rubrique' => 'Artikel dieser Rubrik',
19
+    'aucun_article' => 'Unter dieser Adresse gibt es keinen Artikel.',
20
+    'aucun_auteur' => 'Unter dieser Adresse gibt es keinen Autor.',
21
+    'aucun_site' => 'Unter dieser Adresse gibt es keien Website.',
22
+    'aucune_breve' => 'Unter dieser Adresse gibt es keine Meldung.',
23
+    'aucune_rubrique' => 'Unter dieser Adresse gibt es keine Rubrik.',
24
+    'auteur' => 'Autor',
25
+    'autres' => 'Andere',
26
+    'autres_breves' => 'Weitere Meldungen.',
27
+    'autres_groupes_mots_clefs' => 'Weitere Schlagwortgruppen',
28
+    'autres_sites' => 'Weitere Websites',
29
+
30
+    // B
31
+    'bonjour' => 'Hallo',
32
+
33
+    // C
34
+    'commenter_site' => 'Website kommentieren',
35
+    'contact' => 'Kontakt',
36
+    'copie_document_impossible' => 'Dokument kann nicht kopiert werden',
37
+
38
+    // D
39
+    'date' => 'Datum',
40
+    'dernier_ajout' => 'Neuester Eintrag',
41
+    'dernieres_breves' => 'Neue Meldungen',
42
+    'derniers_articles' => 'Neueste Artikel',
43
+    'derniers_commentaires' => 'Neueste Kommentare',
44
+    'derniers_messages_forum' => 'Neue Forumsbeiträge',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'Im Textmodus bearbeiten ',
48
+    'en_reponse' => 'Antwort auf:',
49
+    'en_resume' => 'Als Zusammenfassung',
50
+    'envoyer_message' => 'Nachricht senden',
51
+    'espace_prive' => 'Redaktion',
52
+
53
+    // F
54
+    'formats_acceptes' => 'Akzeptierte Formate: @formats@.',
55
+
56
+    // H
57
+    'hierarchie_site' => 'Baumstruktur der Website',
58
+
59
+    // J
60
+    'jours' => 'Tage',
61
+
62
+    // L
63
+    'lien_connecter' => 'Login',
64
+
65
+    // M
66
+    'meme_auteur' => 'Vom gleichen Autor',
67
+    'meme_rubrique' => 'In der gleichen Rubrik',
68
+    'memes_auteurs' => 'Von den gleichen Autoren',
69
+    'message' => 'Nachricht',
70
+    'messages_forum' => 'Nachrichten',
71
+    'messages_recents' => 'Neue Forumsbeiträge',
72
+    'mots_clef' => 'Schlagwort',
73
+    'mots_clefs' => 'Schlagworte',
74
+    'mots_clefs_meme_groupe' => 'Schlagworte der gleichen Kategorie',
75
+
76
+    // N
77
+    'navigation' => 'Navigation',
78
+    'nom' => 'Name',
79
+    'nouveautes' => 'Neuigkeiten',
80
+    'nouveautes_web' => 'Neues im WWW',
81
+    'nouveaux_articles' => 'Neue Artikel',
82
+    'nouvelles_breves' => 'Neue Meldungen',
83
+
84
+    // P
85
+    'page_precedente' => 'vorige Seite',
86
+    'page_suivante' => 'nächste Seite',
87
+    'par_auteur' => 'von ',
88
+    'participer_site' => 'Sie können bei dieser Website mitmachen, wenn Sie sich anmelden. Sie erhalten sofort eine E-Mail mit den Zugangsdaten zum Redaktionssystem.',
89
+    'plan_site' => 'Sitemap',
90
+    'popularite' => 'Beliebtheit',
91
+    'poster_message' => 'Nachricht senden',
92
+    'proposer_site' => 'Sie können in dieser Rubrik eine Seite vorschlagen :',
93
+
94
+    // R
95
+    'repondre_article' => 'auf diesen Artikel antworten',
96
+    'repondre_breve' => 'auf diese Meldung antworten',
97
+    'resultats_recherche' => 'Suchergebnis(se)',
98
+    'retour_debut_forums' => 'Zurück zum Beginn des Forums',
99
+    'rss_abonnement' => 'Kopieren Sie die folgende URL in Ihren Feedreader:',
100
+    'rss_abonnement_titre' => 'Abonnieren',
101
+    'rss_abonnement_titre_page' => 'Abonnieren von',
102
+    'rss_explication' => 'Ein RSS-Feed sammelt Informationen über die Aktualisierungen einer Website. Er liefert den Inhalt von Einträgen oder Kommentaren oder einen Auszug daraus sowie einen Link zu den Vollversionen und einige andere Informationen. Der Feed ist dazu gedacht, von einem RSS-Aggregator (Feedreader) gelesen zu werden',
103
+    'rss_explication_titre' => 'Was ist ein RSS-Feed ?',
104
+    'rubrique' => 'Rubrik',
105
+    'rubriques' => 'Rubriken',
106
+
107
+    // S
108
+    'signatures_petition' => 'Unterschrift',
109
+    'site_realise_avec_spip' => 'Realisiert mit SPIP',
110
+    'sites_web' => 'Websites',
111
+    'sous_rubriques' => 'Unterrubriken',
112
+    'spam' => 'SPAM',
113
+    'suite' => 'weiter',
114
+    'sur_web' => 'Im WWW',
115
+    'syndiquer_rubrique' => 'Diese Rubrik per RSS einbinden',
116
+    'syndiquer_site' => 'Die ganze Website mit RSS einbinden',
117
+
118
+    // T
119
+    'texte_lettre_information' => 'Dies ist der Newsletter der Website ',
120
+    'texte_lettre_information_2' => 'Diese Mail informiert über die Neuerscheinungen der letzten',
121
+
122
+    // V
123
+    'ver_imprimer' => 'Druckversion',
124
+    'voir_en_ligne' => 'Online ansehen',
125
+    'voir_squelette' => 'Layoutvorlage dieser Seite ansehen'
126 126
 );
Please login to merge, or discard this patch.
ecrire/src/Chiffrer/Password.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
 			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
38 38
 			return password_verify($pass_poivre, $password_hash);
39 39
 		}
40
-		spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
40
+		spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer'._LOG_INFO_IMPORTANTE);
41 41
 		return false;
42 42
 	}
43 43
 
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
60 60
 			return password_hash($pass_poivre, PASSWORD_DEFAULT);
61 61
 		}
62
-		spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
62
+		spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer'._LOG_INFO_IMPORTANTE);
63 63
 		return null;
64 64
 	}
65 65
 
Please login to merge, or discard this patch.
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -13,49 +13,49 @@
 block discarded – undo
13 13
 
14 14
 /** Vérification et hachage de mot de passe */
15 15
 class Password {
16
-	/**
17
-	 * verifier qu'un mot de passe en clair est correct a l'aide de son hash
18
-	 *
19
-	 * Le mot de passe est poivre via la cle secret_des_auth
20
-	 */
21
-	public static function verifier(
22
-		#[\SensitiveParameter]
23
-		string $password_clair,
24
-		#[\SensitiveParameter]
25
-		string $password_hash,
26
-		#[\SensitiveParameter]
27
-		?string $key = null
28
-	): bool {
29
-		$key ??= self::getDefaultKey();
30
-		if ($key) {
31
-			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
32
-			return password_verify($pass_poivre, $password_hash);
33
-		}
34
-		spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
35
-		return false;
36
-	}
16
+    /**
17
+     * verifier qu'un mot de passe en clair est correct a l'aide de son hash
18
+     *
19
+     * Le mot de passe est poivre via la cle secret_des_auth
20
+     */
21
+    public static function verifier(
22
+        #[\SensitiveParameter]
23
+        string $password_clair,
24
+        #[\SensitiveParameter]
25
+        string $password_hash,
26
+        #[\SensitiveParameter]
27
+        ?string $key = null
28
+    ): bool {
29
+        $key ??= self::getDefaultKey();
30
+        if ($key) {
31
+            $pass_poivre = hash_hmac('sha256', $password_clair, $key);
32
+            return password_verify($pass_poivre, $password_hash);
33
+        }
34
+        spip_log('Aucune clé pour vérifier le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
35
+        return false;
36
+    }
37 37
 
38
-	/**
39
-	 * Calculer un hash salé du mot de passe
40
-	 */
41
-	public static function hacher(
42
-		#[\SensitiveParameter]
43
-		string $password_clair,
44
-		#[\SensitiveParameter]
45
-		?string $key = null
46
-	): ?string {
47
-		$key ??= self::getDefaultKey();
48
-		// ne pas fournir un hash errone si la cle nous manque
49
-		if ($key) {
50
-			$pass_poivre = hash_hmac('sha256', $password_clair, $key);
51
-			return password_hash($pass_poivre, PASSWORD_DEFAULT);
52
-		}
53
-		spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
54
-		return null;
55
-	}
38
+    /**
39
+     * Calculer un hash salé du mot de passe
40
+     */
41
+    public static function hacher(
42
+        #[\SensitiveParameter]
43
+        string $password_clair,
44
+        #[\SensitiveParameter]
45
+        ?string $key = null
46
+    ): ?string {
47
+        $key ??= self::getDefaultKey();
48
+        // ne pas fournir un hash errone si la cle nous manque
49
+        if ($key) {
50
+            $pass_poivre = hash_hmac('sha256', $password_clair, $key);
51
+            return password_hash($pass_poivre, PASSWORD_DEFAULT);
52
+        }
53
+        spip_log('Aucune clé pour chiffrer le mot de passe', 'chiffrer' . _LOG_INFO_IMPORTANTE);
54
+        return null;
55
+    }
56 56
 
57
-	private static function getDefaultKey(): ?string {
58
-		$keys = SpipCles::instance();
59
-		return $keys->getSecretAuth();
60
-	}
57
+    private static function getDefaultKey(): ?string {
58
+        $keys = SpipCles::instance();
59
+        return $keys->getSecretAuth();
60
+    }
61 61
 }
Please login to merge, or discard this patch.
ecrire/src/Chiffrer/Cles.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@
 block discarded – undo
30 30
 	public function generate(string $name): string {
31 31
 		$key = Chiffrement::keygen();
32 32
 		$this->keys[$name] = $key;
33
-		spip_log("Création de la cle $name", 'chiffrer' . _LOG_INFO_IMPORTANTE);
33
+		spip_log("Création de la cle $name", 'chiffrer'._LOG_INFO_IMPORTANTE);
34 34
 		return $key;
35 35
 	}
36 36
 
Please login to merge, or discard this patch.
Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -13,46 +13,46 @@
 block discarded – undo
13 13
 
14 14
 /** Conteneur de clés (chiffrement, authentification) */
15 15
 class Cles implements \Countable /* , ContainerInterface */ {
16
-	public function __construct(private array $keys) {
17
-	}
18
-
19
-	public function has(string $name): bool {
20
-		return array_key_exists($name, $this->keys);
21
-	}
22
-
23
-	public function get(string $name): ?string {
24
-		return $this->keys[$name] ?? null;
25
-	}
26
-
27
-	public function generate(string $name): string {
28
-		$key = Chiffrement::keygen();
29
-		$this->keys[$name] = $key;
30
-		spip_log("Création de la cle $name", 'chiffrer' . _LOG_INFO_IMPORTANTE);
31
-		return $key;
32
-	}
33
-
34
-	public function set(
35
-		string $name,
36
-		#[\SensitiveParameter]
37
-		string $key
38
-	): void {
39
-		$this->keys[$name] = $key;
40
-	}
41
-
42
-	public function delete(string $name): bool {
43
-		if (isset($this->keys[$name])) {
44
-			unset($this->keys[$name]);
45
-			return true;
46
-		};
47
-		return false;
48
-	}
49
-
50
-	public function count(): int {
51
-		return count($this->keys);
52
-	}
53
-
54
-	public function toJson(): string {
55
-		$json = array_map('base64_encode', $this->keys);
56
-		return \json_encode($json);
57
-	}
16
+    public function __construct(private array $keys) {
17
+    }
18
+
19
+    public function has(string $name): bool {
20
+        return array_key_exists($name, $this->keys);
21
+    }
22
+
23
+    public function get(string $name): ?string {
24
+        return $this->keys[$name] ?? null;
25
+    }
26
+
27
+    public function generate(string $name): string {
28
+        $key = Chiffrement::keygen();
29
+        $this->keys[$name] = $key;
30
+        spip_log("Création de la cle $name", 'chiffrer' . _LOG_INFO_IMPORTANTE);
31
+        return $key;
32
+    }
33
+
34
+    public function set(
35
+        string $name,
36
+        #[\SensitiveParameter]
37
+        string $key
38
+    ): void {
39
+        $this->keys[$name] = $key;
40
+    }
41
+
42
+    public function delete(string $name): bool {
43
+        if (isset($this->keys[$name])) {
44
+            unset($this->keys[$name]);
45
+            return true;
46
+        };
47
+        return false;
48
+    }
49
+
50
+    public function count(): int {
51
+        return count($this->keys);
52
+    }
53
+
54
+    public function toJson(): string {
55
+        $json = array_map('base64_encode', $this->keys);
56
+        return \json_encode($json);
57
+    }
58 58
 }
Please login to merge, or discard this patch.
ecrire/inc/queue.php 2 patches
Indentation   +476 added lines, -476 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Queue
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 define('_JQ_SCHEDULED', 1);
@@ -50,103 +50,103 @@  discard block
 block discarded – undo
50 50
  *  id of job
51 51
  */
52 52
 function queue_add_job(
53
-	$function,
54
-	$description,
55
-	$arguments = [],
56
-	$file = '',
57
-	$no_duplicate = false,
58
-	$time = 0,
59
-	$priority = 0
53
+    $function,
54
+    $description,
55
+    $arguments = [],
56
+    $file = '',
57
+    $no_duplicate = false,
58
+    $time = 0,
59
+    $priority = 0
60 60
 ) {
61
-	include_spip('base/abstract_sql');
62
-
63
-	// cas pourri de ecrire/action/editer_site avec l'option reload=oui
64
-	if (defined('_GENIE_SYNDIC_NOW')) {
65
-		$arguments['id_syndic'] = _GENIE_SYNDIC_NOW;
66
-	}
67
-
68
-	// serialiser les arguments
69
-	$arguments = serialize($arguments);
70
-	$md5args = md5($arguments);
71
-
72
-	// si pas de date programee, des que possible
73
-	$duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
74
-	if (!$time) {
75
-		$time = time();
76
-		$duplicate_where = ''; // ne pas dupliquer si deja le meme job en cours d'execution
77
-	}
78
-	$date = date('Y-m-d H:i:s', $time);
79
-
80
-	$set_job = [
81
-		'fonction' => $function,
82
-		'descriptif' => $description,
83
-		'args' => $arguments,
84
-		'md5args' => $md5args,
85
-		'inclure' => $file,
86
-		'priorite' => max(-10, min(10, intval($priority))),
87
-		'date' => $date,
88
-		'status' => _JQ_SCHEDULED,
89
-	];
90
-	// si option ne pas dupliquer, regarder si la fonction existe deja
91
-	// avec les memes args et file
92
-	if (
93
-		$no_duplicate
94
-		and
95
-		$id_job = sql_getfetsel(
96
-			'id_job',
97
-			'spip_jobs',
98
-			$duplicate_where =
99
-				$duplicate_where . 'fonction=' . sql_quote($function)
100
-				. (($no_duplicate === 'function_only') ? '' :
101
-			' AND md5args=' . sql_quote($md5args) . ' AND inclure=' . sql_quote($file))
102
-		)
103
-	) {
104
-		return $id_job;
105
-	}
106
-
107
-	$id_job = sql_insertq('spip_jobs', $set_job);
108
-	// en cas de concurrence, deux process peuvent arriver jusqu'ici en parallele
109
-	// avec le meme job unique a inserer. Dans ce cas, celui qui a eu l'id le plus grand
110
-	// doit s'effacer
111
-	if (
112
-		$no_duplicate
113
-		and
114
-		$id_prev = sql_getfetsel('id_job', 'spip_jobs', 'id_job<' . intval($id_job) . " AND $duplicate_where")
115
-	) {
116
-		sql_delete('spip_jobs', 'id_job=' . intval($id_job));
117
-
118
-		return $id_prev;
119
-	}
120
-
121
-	// verifier la non duplication qui peut etre problematique en cas de concurence
122
-	// il faut dans ce cas que seul le dernier ajoute se supprime !
123
-
124
-	// une option de debug pour verifier que les arguments en base sont bons
125
-	// ie cas d'un char non acceptables sur certains type de champs
126
-	// qui coupe la valeur
127
-	if (defined('_JQ_INSERT_CHECK_ARGS') and $id_job) {
128
-		$args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
129
-		if ($args !== $arguments) {
130
-			spip_log('arguments job errones / longueur ' . strlen($args) . ' vs ' . strlen($arguments) . ' / valeur : ' . var_export(
131
-				$arguments,
132
-				true
133
-			), 'queue');
134
-		}
135
-	}
136
-
137
-	if ($id_job) {
138
-		queue_update_next_job_time($time);
139
-	}
140
-	// si la mise en file d'attente du job echoue,
141
-	// il ne faut pas perdre l'execution de la fonction
142
-	// on la lance immediatement, c'est un fallback
143
-	// sauf en cas d'upgrade necessaire (table spip_jobs inexistante)
144
-	elseif ($GLOBALS['meta']['version_installee'] == $GLOBALS['spip_version_base']) {
145
-		$set_job['id_job'] = 0;
146
-		queue_start_job($set_job);
147
-	}
148
-
149
-	return $id_job;
61
+    include_spip('base/abstract_sql');
62
+
63
+    // cas pourri de ecrire/action/editer_site avec l'option reload=oui
64
+    if (defined('_GENIE_SYNDIC_NOW')) {
65
+        $arguments['id_syndic'] = _GENIE_SYNDIC_NOW;
66
+    }
67
+
68
+    // serialiser les arguments
69
+    $arguments = serialize($arguments);
70
+    $md5args = md5($arguments);
71
+
72
+    // si pas de date programee, des que possible
73
+    $duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
74
+    if (!$time) {
75
+        $time = time();
76
+        $duplicate_where = ''; // ne pas dupliquer si deja le meme job en cours d'execution
77
+    }
78
+    $date = date('Y-m-d H:i:s', $time);
79
+
80
+    $set_job = [
81
+        'fonction' => $function,
82
+        'descriptif' => $description,
83
+        'args' => $arguments,
84
+        'md5args' => $md5args,
85
+        'inclure' => $file,
86
+        'priorite' => max(-10, min(10, intval($priority))),
87
+        'date' => $date,
88
+        'status' => _JQ_SCHEDULED,
89
+    ];
90
+    // si option ne pas dupliquer, regarder si la fonction existe deja
91
+    // avec les memes args et file
92
+    if (
93
+        $no_duplicate
94
+        and
95
+        $id_job = sql_getfetsel(
96
+            'id_job',
97
+            'spip_jobs',
98
+            $duplicate_where =
99
+                $duplicate_where . 'fonction=' . sql_quote($function)
100
+                . (($no_duplicate === 'function_only') ? '' :
101
+            ' AND md5args=' . sql_quote($md5args) . ' AND inclure=' . sql_quote($file))
102
+        )
103
+    ) {
104
+        return $id_job;
105
+    }
106
+
107
+    $id_job = sql_insertq('spip_jobs', $set_job);
108
+    // en cas de concurrence, deux process peuvent arriver jusqu'ici en parallele
109
+    // avec le meme job unique a inserer. Dans ce cas, celui qui a eu l'id le plus grand
110
+    // doit s'effacer
111
+    if (
112
+        $no_duplicate
113
+        and
114
+        $id_prev = sql_getfetsel('id_job', 'spip_jobs', 'id_job<' . intval($id_job) . " AND $duplicate_where")
115
+    ) {
116
+        sql_delete('spip_jobs', 'id_job=' . intval($id_job));
117
+
118
+        return $id_prev;
119
+    }
120
+
121
+    // verifier la non duplication qui peut etre problematique en cas de concurence
122
+    // il faut dans ce cas que seul le dernier ajoute se supprime !
123
+
124
+    // une option de debug pour verifier que les arguments en base sont bons
125
+    // ie cas d'un char non acceptables sur certains type de champs
126
+    // qui coupe la valeur
127
+    if (defined('_JQ_INSERT_CHECK_ARGS') and $id_job) {
128
+        $args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
129
+        if ($args !== $arguments) {
130
+            spip_log('arguments job errones / longueur ' . strlen($args) . ' vs ' . strlen($arguments) . ' / valeur : ' . var_export(
131
+                $arguments,
132
+                true
133
+            ), 'queue');
134
+        }
135
+    }
136
+
137
+    if ($id_job) {
138
+        queue_update_next_job_time($time);
139
+    }
140
+    // si la mise en file d'attente du job echoue,
141
+    // il ne faut pas perdre l'execution de la fonction
142
+    // on la lance immediatement, c'est un fallback
143
+    // sauf en cas d'upgrade necessaire (table spip_jobs inexistante)
144
+    elseif ($GLOBALS['meta']['version_installee'] == $GLOBALS['spip_version_base']) {
145
+        $set_job['id_job'] = 0;
146
+        queue_start_job($set_job);
147
+    }
148
+
149
+    return $id_job;
150 150
 }
151 151
 
152 152
 /**
@@ -155,11 +155,11 @@  discard block
 block discarded – undo
155 155
  * @return void
156 156
  */
157 157
 function queue_purger() {
158
-	include_spip('base/abstract_sql');
159
-	sql_delete('spip_jobs');
160
-	sql_delete('spip_jobs_liens', 'id_job NOT IN (' . sql_get_select('id_job', 'spip_jobs') . ')');
161
-	include_spip('inc/genie');
162
-	genie_queue_watch_dist();
158
+    include_spip('base/abstract_sql');
159
+    sql_delete('spip_jobs');
160
+    sql_delete('spip_jobs_liens', 'id_job NOT IN (' . sql_get_select('id_job', 'spip_jobs') . ')');
161
+    include_spip('inc/genie');
162
+    genie_queue_watch_dist();
163 163
 }
164 164
 
165 165
 /**
@@ -170,25 +170,25 @@  discard block
 block discarded – undo
170 170
  * @return int|bool
171 171
  */
172 172
 function queue_remove_job($id_job) {
173
-	include_spip('base/abstract_sql');
174
-
175
-	if (
176
-		$row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job))
177
-		and $res = sql_delete('spip_jobs', 'id_job=' . intval($id_job))
178
-	) {
179
-		queue_unlink_job($id_job);
180
-		// est-ce une tache cron qu'il faut relancer ?
181
-		if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
182
-			// relancer avec les nouveaux arguments de temps
183
-			include_spip('inc/genie');
184
-			// relancer avec la periode prevue
185
-			queue_genie_replan_job($row['fonction'], $periode, strtotime($row['date']));
186
-		}
187
-		queue_update_next_job_time();
188
-		return $res;
189
-	}
190
-
191
-	return false;
173
+    include_spip('base/abstract_sql');
174
+
175
+    if (
176
+        $row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job))
177
+        and $res = sql_delete('spip_jobs', 'id_job=' . intval($id_job))
178
+    ) {
179
+        queue_unlink_job($id_job);
180
+        // est-ce une tache cron qu'il faut relancer ?
181
+        if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
182
+            // relancer avec les nouveaux arguments de temps
183
+            include_spip('inc/genie');
184
+            // relancer avec la periode prevue
185
+            queue_genie_replan_job($row['fonction'], $periode, strtotime($row['date']));
186
+        }
187
+        queue_update_next_job_time();
188
+        return $res;
189
+    }
190
+
191
+    return false;
192 192
 }
193 193
 
194 194
 /**
@@ -201,18 +201,18 @@  discard block
 block discarded – undo
201 201
  *  ou un tableau composé de tableaux simples pour lieur plusieurs objets en une fois
202 202
  */
203 203
 function queue_link_job($id_job, $objets) {
204
-	include_spip('base/abstract_sql');
205
-
206
-	if (is_array($objets) and count($objets)) {
207
-		if (is_array(reset($objets))) {
208
-			foreach ($objets as $k => $o) {
209
-				$objets[$k]['id_job'] = $id_job;
210
-			}
211
-			sql_insertq_multi('spip_jobs_liens', $objets);
212
-		} else {
213
-			sql_insertq('spip_jobs_liens', array_merge(['id_job' => $id_job], $objets));
214
-		}
215
-	}
204
+    include_spip('base/abstract_sql');
205
+
206
+    if (is_array($objets) and count($objets)) {
207
+        if (is_array(reset($objets))) {
208
+            foreach ($objets as $k => $o) {
209
+                $objets[$k]['id_job'] = $id_job;
210
+            }
211
+            sql_insertq_multi('spip_jobs_liens', $objets);
212
+        } else {
213
+            sql_insertq('spip_jobs_liens', array_merge(['id_job' => $id_job], $objets));
214
+        }
215
+    }
216 216
 }
217 217
 
218 218
 /**
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
  *  resultat du sql_delete
225 225
  */
226 226
 function queue_unlink_job($id_job) {
227
-	return sql_delete('spip_jobs_liens', 'id_job=' . intval($id_job));
227
+    return sql_delete('spip_jobs_liens', 'id_job=' . intval($id_job));
228 228
 }
229 229
 
230 230
 /**
@@ -237,36 +237,36 @@  discard block
 block discarded – undo
237 237
  */
238 238
 function queue_start_job($row) {
239 239
 
240
-	// deserialiser les arguments
241
-	$args = unserialize($row['args']);
242
-	if (!is_array($args)) {
243
-		spip_log('arguments job errones ' . var_export($row, true), 'queue');
244
-		$args = [];
245
-	}
246
-
247
-	$fonction = $row['fonction'];
248
-	if (strlen($inclure = trim($row['inclure']))) {
249
-		if (substr($inclure, -1) == '/') { // c'est un chemin pour charger_fonction
250
-			$f = charger_fonction($fonction, rtrim($inclure, '/'), false);
251
-			if ($f) {
252
-				$fonction = $f;
253
-			}
254
-		} else {
255
-			include_spip($inclure);
256
-		}
257
-	}
258
-
259
-	if (!function_exists($fonction)) {
260
-		spip_log("fonction $fonction ($inclure) inexistante " . var_export($row, true), 'queue');
261
-
262
-		return false;
263
-	}
264
-
265
-	spip_log('queue [' . $row['id_job'] . "]: $fonction() start", 'queue');
266
-	$res = $fonction(...$args);
267
-	spip_log('queue [' . $row['id_job'] . "]: $fonction() end", 'queue');
268
-
269
-	return $res;
240
+    // deserialiser les arguments
241
+    $args = unserialize($row['args']);
242
+    if (!is_array($args)) {
243
+        spip_log('arguments job errones ' . var_export($row, true), 'queue');
244
+        $args = [];
245
+    }
246
+
247
+    $fonction = $row['fonction'];
248
+    if (strlen($inclure = trim($row['inclure']))) {
249
+        if (substr($inclure, -1) == '/') { // c'est un chemin pour charger_fonction
250
+            $f = charger_fonction($fonction, rtrim($inclure, '/'), false);
251
+            if ($f) {
252
+                $fonction = $f;
253
+            }
254
+        } else {
255
+            include_spip($inclure);
256
+        }
257
+    }
258
+
259
+    if (!function_exists($fonction)) {
260
+        spip_log("fonction $fonction ($inclure) inexistante " . var_export($row, true), 'queue');
261
+
262
+        return false;
263
+    }
264
+
265
+    spip_log('queue [' . $row['id_job'] . "]: $fonction() start", 'queue');
266
+    $res = $fonction(...$args);
267
+    spip_log('queue [' . $row['id_job'] . "]: $fonction() end", 'queue');
268
+
269
+    return $res;
270 270
 }
271 271
 
272 272
 /**
@@ -293,89 +293,89 @@  discard block
 block discarded – undo
293 293
  *     - true : une planification a été faite.
294 294
  */
295 295
 function queue_schedule($force_jobs = null) {
296
-	$time = time();
297
-	if (defined('_DEBUG_BLOCK_QUEUE')) {
298
-		spip_log('_DEBUG_BLOCK_QUEUE : schedule stop', 'jq' . _LOG_DEBUG);
299
-
300
-		return;
301
-	}
302
-
303
-	// rien a faire si le prochain job est encore dans le futur
304
-	if (queue_sleep_time_to_next_job() > 0 and (!$force_jobs or !count($force_jobs))) {
305
-		spip_log('queue_sleep_time_to_next_job', 'jq' . _LOG_DEBUG);
306
-
307
-		return;
308
-	}
309
-
310
-	include_spip('base/abstract_sql');
311
-	// on ne peut rien faire si pas de connexion SQL
312
-	if (!spip_connect()) {
313
-		return false;
314
-	}
315
-
316
-	if (!defined('_JQ_MAX_JOBS_TIME_TO_EXECUTE')) {
317
-		$max_time = ini_get('max_execution_time') / 2;
318
-		// valeur conservatrice si on a pas reussi a lire le max_execution_time
319
-		if (!$max_time) {
320
-			$max_time = 5;
321
-		}
322
-		define('_JQ_MAX_JOBS_TIME_TO_EXECUTE', min($max_time, 15)); // une valeur maxi en temps.
323
-	}
324
-	$end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
325
-
326
-	spip_log("JQ schedule $time / $end_time", 'jq' . _LOG_DEBUG);
327
-
328
-	if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
329
-		define('_JQ_MAX_JOBS_EXECUTE', 200);
330
-	}
331
-	$nbj = 0;
332
-	// attraper les jobs
333
-	// dont la date est passee (echus en attente),
334
-	// par ordre :
335
-	//	- de priorite
336
-	//	- de date
337
-	// lorsqu'un job cron n'a pas fini, sa priorite est descendue
338
-	// pour qu'il ne bloque pas les autres jobs en attente
339
-	if (is_array($force_jobs) and count($force_jobs)) {
340
-		$cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND ' . sql_in('id_job', $force_jobs);
341
-	} else {
342
-		$now = date('Y-m-d H:i:s', $time);
343
-		$cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND date<=' . sql_quote($now);
344
-	}
345
-
346
-	register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
347
-	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
348
-	do {
349
-		if ($row = array_shift($res)) {
350
-			$nbj++;
351
-			// il faut un verrou, a base de sql_delete
352
-			if (sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']) . ' AND status=' . intval(_JQ_SCHEDULED))) {
353
-				#spip_log("JQ schedule job ".$nbj." OK",'jq');
354
-				// on reinsert dans la base aussitot avec un status=_JQ_PENDING
355
-				$row['status'] = _JQ_PENDING;
356
-				$row['date'] = date('Y-m-d H:i:s', $time);
357
-				sql_insertq('spip_jobs', $row);
358
-
359
-				// on a la main sur le job :
360
-				// l'executer
361
-				$result = queue_start_job($row);
362
-
363
-				$time = time();
364
-				queue_close_job($row, $time, $result);
365
-			}
366
-		}
367
-		spip_log('JQ schedule job end time ' . $time, 'jq' . _LOG_DEBUG);
368
-	} while ($nbj < _JQ_MAX_JOBS_EXECUTE and $row and $time < $end_time);
369
-	spip_log('JQ schedule end time ' . time(), 'jq' . _LOG_DEBUG);
370
-
371
-	if ($row = array_shift($res)) {
372
-		queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
373
-		spip_log('JQ encore !', 'jq' . _LOG_DEBUG);
374
-	} else {
375
-		queue_update_next_job_time();
376
-	}
377
-
378
-	return true;
296
+    $time = time();
297
+    if (defined('_DEBUG_BLOCK_QUEUE')) {
298
+        spip_log('_DEBUG_BLOCK_QUEUE : schedule stop', 'jq' . _LOG_DEBUG);
299
+
300
+        return;
301
+    }
302
+
303
+    // rien a faire si le prochain job est encore dans le futur
304
+    if (queue_sleep_time_to_next_job() > 0 and (!$force_jobs or !count($force_jobs))) {
305
+        spip_log('queue_sleep_time_to_next_job', 'jq' . _LOG_DEBUG);
306
+
307
+        return;
308
+    }
309
+
310
+    include_spip('base/abstract_sql');
311
+    // on ne peut rien faire si pas de connexion SQL
312
+    if (!spip_connect()) {
313
+        return false;
314
+    }
315
+
316
+    if (!defined('_JQ_MAX_JOBS_TIME_TO_EXECUTE')) {
317
+        $max_time = ini_get('max_execution_time') / 2;
318
+        // valeur conservatrice si on a pas reussi a lire le max_execution_time
319
+        if (!$max_time) {
320
+            $max_time = 5;
321
+        }
322
+        define('_JQ_MAX_JOBS_TIME_TO_EXECUTE', min($max_time, 15)); // une valeur maxi en temps.
323
+    }
324
+    $end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
325
+
326
+    spip_log("JQ schedule $time / $end_time", 'jq' . _LOG_DEBUG);
327
+
328
+    if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
329
+        define('_JQ_MAX_JOBS_EXECUTE', 200);
330
+    }
331
+    $nbj = 0;
332
+    // attraper les jobs
333
+    // dont la date est passee (echus en attente),
334
+    // par ordre :
335
+    //	- de priorite
336
+    //	- de date
337
+    // lorsqu'un job cron n'a pas fini, sa priorite est descendue
338
+    // pour qu'il ne bloque pas les autres jobs en attente
339
+    if (is_array($force_jobs) and count($force_jobs)) {
340
+        $cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND ' . sql_in('id_job', $force_jobs);
341
+    } else {
342
+        $now = date('Y-m-d H:i:s', $time);
343
+        $cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND date<=' . sql_quote($now);
344
+    }
345
+
346
+    register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
347
+    $res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
348
+    do {
349
+        if ($row = array_shift($res)) {
350
+            $nbj++;
351
+            // il faut un verrou, a base de sql_delete
352
+            if (sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']) . ' AND status=' . intval(_JQ_SCHEDULED))) {
353
+                #spip_log("JQ schedule job ".$nbj." OK",'jq');
354
+                // on reinsert dans la base aussitot avec un status=_JQ_PENDING
355
+                $row['status'] = _JQ_PENDING;
356
+                $row['date'] = date('Y-m-d H:i:s', $time);
357
+                sql_insertq('spip_jobs', $row);
358
+
359
+                // on a la main sur le job :
360
+                // l'executer
361
+                $result = queue_start_job($row);
362
+
363
+                $time = time();
364
+                queue_close_job($row, $time, $result);
365
+            }
366
+        }
367
+        spip_log('JQ schedule job end time ' . $time, 'jq' . _LOG_DEBUG);
368
+    } while ($nbj < _JQ_MAX_JOBS_EXECUTE and $row and $time < $end_time);
369
+    spip_log('JQ schedule end time ' . time(), 'jq' . _LOG_DEBUG);
370
+
371
+    if ($row = array_shift($res)) {
372
+        queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
373
+        spip_log('JQ encore !', 'jq' . _LOG_DEBUG);
374
+    } else {
375
+        queue_update_next_job_time();
376
+    }
377
+
378
+    return true;
379 379
 }
380 380
 
381 381
 /**
@@ -393,21 +393,21 @@  discard block
 block discarded – undo
393 393
  * @param int $result
394 394
  */
395 395
 function queue_close_job(&$row, $time, $result = 0) {
396
-	// est-ce une tache cron qu'il faut relancer ?
397
-	if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
398
-		// relancer avec les nouveaux arguments de temps
399
-		include_spip('inc/genie');
400
-		if ($result < 0) { // relancer tout de suite, mais en baissant la priorite
401
-		queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
402
-		} else // relancer avec la periode prevue
403
-		{
404
-			queue_genie_replan_job($row['fonction'], $periode, $time);
405
-		}
406
-	}
407
-	// purger ses liens eventuels avec des objets
408
-	sql_delete('spip_jobs_liens', 'id_job=' . intval($row['id_job']));
409
-	// supprimer le job fini
410
-	sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
396
+    // est-ce une tache cron qu'il faut relancer ?
397
+    if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
398
+        // relancer avec les nouveaux arguments de temps
399
+        include_spip('inc/genie');
400
+        if ($result < 0) { // relancer tout de suite, mais en baissant la priorite
401
+        queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
402
+        } else // relancer avec la periode prevue
403
+        {
404
+            queue_genie_replan_job($row['fonction'], $periode, $time);
405
+        }
406
+    }
407
+    // purger ses liens eventuels avec des objets
408
+    sql_delete('spip_jobs_liens', 'id_job=' . intval($row['id_job']));
409
+    // supprimer le job fini
410
+    sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
411 411
 }
412 412
 
413 413
 /**
@@ -417,10 +417,10 @@  discard block
 block discarded – undo
417 417
  * @uses queue_update_next_job_time()
418 418
  */
419 419
 function queue_error_handler() {
420
-	// se remettre dans le bon dossier, car Apache le change parfois (toujours?)
421
-	chdir(_ROOT_CWD);
420
+    // se remettre dans le bon dossier, car Apache le change parfois (toujours?)
421
+    chdir(_ROOT_CWD);
422 422
 
423
-	queue_update_next_job_time();
423
+    queue_update_next_job_time();
424 424
 }
425 425
 
426 426
 
@@ -437,18 +437,18 @@  discard block
 block discarded – undo
437 437
  *     Périodicité de la tâche en secondes, si tâche périodique, sinon false.
438 438
  */
439 439
 function queue_is_cron_job($function, $inclure) {
440
-	static $taches = null;
441
-	if (strncmp($inclure, 'genie/', 6) == 0) {
442
-		if (is_null($taches)) {
443
-			include_spip('inc/genie');
444
-			$taches = taches_generales();
445
-		}
446
-		if (isset($taches[$function])) {
447
-			return $taches[$function];
448
-		}
449
-	}
450
-
451
-	return false;
440
+    static $taches = null;
441
+    if (strncmp($inclure, 'genie/', 6) == 0) {
442
+        if (is_null($taches)) {
443
+            include_spip('inc/genie');
444
+            $taches = taches_generales();
445
+        }
446
+        if (isset($taches[$function])) {
447
+            return $taches[$function];
448
+        }
449
+    }
450
+
451
+    return false;
452 452
 }
453 453
 
454 454
 /**
@@ -462,62 +462,62 @@  discard block
 block discarded – undo
462 462
  *  temps de la tache ajoutee ou 0 pour ASAP
463 463
  */
464 464
 function queue_update_next_job_time($next_time = null) {
465
-	static $nb_jobs_scheduled = null;
466
-	static $deja_la = false;
467
-	// prendre le min des $next_time que l'on voit passer ici, en cas de reentrance
468
-	static $next = null;
469
-	// queue_close_job peut etre reentrant ici
470
-	if ($deja_la) {
471
-		return;
472
-	}
473
-	$deja_la = true;
474
-
475
-	include_spip('base/abstract_sql');
476
-	$time = time();
477
-
478
-	// traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
479
-	// pour cause de timeout ou autre erreur fatale
480
-	$res = sql_allfetsel(
481
-		'*',
482
-		'spip_jobs',
483
-		'status=' . intval(_JQ_PENDING) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time - 180))
484
-	);
485
-	if (is_array($res)) {
486
-		foreach ($res as $row) {
487
-			queue_close_job($row, $time);
488
-			spip_log('queue_close_job car _JQ_PENDING depuis +180s : ' . print_r($row, 1), 'job_mort' . _LOG_ERREUR);
489
-		}
490
-	}
491
-
492
-	// chercher la date du prochain job si pas connu
493
-	if (is_null($next) or is_null(queue_sleep_time_to_next_job())) {
494
-		$date = sql_getfetsel('date', 'spip_jobs', 'status=' . intval(_JQ_SCHEDULED), '', 'date', '0,1');
495
-		$next = strtotime($date);
496
-	}
497
-	if (!is_null($next_time)) {
498
-		if (is_null($next) or $next > $next_time) {
499
-			$next = $next_time;
500
-		}
501
-	}
502
-
503
-	if ($next) {
504
-		if (is_null($nb_jobs_scheduled)) {
505
-			$nb_jobs_scheduled = sql_countsel(
506
-				'spip_jobs',
507
-				'status=' . intval(_JQ_SCHEDULED) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time))
508
-			);
509
-		} elseif ($next <= $time) {
510
-			$nb_jobs_scheduled++;
511
-		}
512
-		// si trop de jobs en attente, on force la purge en fin de hit
513
-		// pour assurer le coup
514
-		if ($nb_jobs_scheduled > (defined('_JQ_NB_JOBS_OVERFLOW') ? _JQ_NB_JOBS_OVERFLOW : 10000)) {
515
-			define('_DIRECT_CRON_FORCE', true);
516
-		}
517
-	}
518
-
519
-	queue_set_next_job_time($next);
520
-	$deja_la = false;
465
+    static $nb_jobs_scheduled = null;
466
+    static $deja_la = false;
467
+    // prendre le min des $next_time que l'on voit passer ici, en cas de reentrance
468
+    static $next = null;
469
+    // queue_close_job peut etre reentrant ici
470
+    if ($deja_la) {
471
+        return;
472
+    }
473
+    $deja_la = true;
474
+
475
+    include_spip('base/abstract_sql');
476
+    $time = time();
477
+
478
+    // traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
479
+    // pour cause de timeout ou autre erreur fatale
480
+    $res = sql_allfetsel(
481
+        '*',
482
+        'spip_jobs',
483
+        'status=' . intval(_JQ_PENDING) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time - 180))
484
+    );
485
+    if (is_array($res)) {
486
+        foreach ($res as $row) {
487
+            queue_close_job($row, $time);
488
+            spip_log('queue_close_job car _JQ_PENDING depuis +180s : ' . print_r($row, 1), 'job_mort' . _LOG_ERREUR);
489
+        }
490
+    }
491
+
492
+    // chercher la date du prochain job si pas connu
493
+    if (is_null($next) or is_null(queue_sleep_time_to_next_job())) {
494
+        $date = sql_getfetsel('date', 'spip_jobs', 'status=' . intval(_JQ_SCHEDULED), '', 'date', '0,1');
495
+        $next = strtotime($date);
496
+    }
497
+    if (!is_null($next_time)) {
498
+        if (is_null($next) or $next > $next_time) {
499
+            $next = $next_time;
500
+        }
501
+    }
502
+
503
+    if ($next) {
504
+        if (is_null($nb_jobs_scheduled)) {
505
+            $nb_jobs_scheduled = sql_countsel(
506
+                'spip_jobs',
507
+                'status=' . intval(_JQ_SCHEDULED) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time))
508
+            );
509
+        } elseif ($next <= $time) {
510
+            $nb_jobs_scheduled++;
511
+        }
512
+        // si trop de jobs en attente, on force la purge en fin de hit
513
+        // pour assurer le coup
514
+        if ($nb_jobs_scheduled > (defined('_JQ_NB_JOBS_OVERFLOW') ? _JQ_NB_JOBS_OVERFLOW : 10000)) {
515
+            define('_DIRECT_CRON_FORCE', true);
516
+        }
517
+    }
518
+
519
+    queue_set_next_job_time($next);
520
+    $deja_la = false;
521 521
 }
522 522
 
523 523
 
@@ -528,26 +528,26 @@  discard block
 block discarded – undo
528 528
  */
529 529
 function queue_set_next_job_time($next) {
530 530
 
531
-	// utiliser le temps courant reel plutot que temps de la requete ici
532
-	$time = time();
533
-
534
-	// toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes
535
-	// et ne mettre a jour que si il y a un interet a le faire
536
-	// permet ausis d'initialiser le nom de fichier a coup sur
537
-	$curr_next = $_SERVER['REQUEST_TIME'] + max(0, queue_sleep_time_to_next_job(true));
538
-	if (
539
-		($curr_next <= $time and $next > $time) // le prochain job est dans le futur mais pas la date planifiee actuelle
540
-		or $curr_next > $next // le prochain job est plus tot que la date planifiee actuelle
541
-	) {
542
-		if (function_exists('cache_set') and defined('_MEMOIZE_MEMORY') and _MEMOIZE_MEMORY) {
543
-			cache_set(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
544
-		} else {
545
-			ecrire_fichier(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
546
-		}
547
-		queue_sleep_time_to_next_job($next);
548
-	}
549
-
550
-	return queue_sleep_time_to_next_job();
531
+    // utiliser le temps courant reel plutot que temps de la requete ici
532
+    $time = time();
533
+
534
+    // toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes
535
+    // et ne mettre a jour que si il y a un interet a le faire
536
+    // permet ausis d'initialiser le nom de fichier a coup sur
537
+    $curr_next = $_SERVER['REQUEST_TIME'] + max(0, queue_sleep_time_to_next_job(true));
538
+    if (
539
+        ($curr_next <= $time and $next > $time) // le prochain job est dans le futur mais pas la date planifiee actuelle
540
+        or $curr_next > $next // le prochain job est plus tot que la date planifiee actuelle
541
+    ) {
542
+        if (function_exists('cache_set') and defined('_MEMOIZE_MEMORY') and _MEMOIZE_MEMORY) {
543
+            cache_set(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
544
+        } else {
545
+            ecrire_fichier(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
546
+        }
547
+        queue_sleep_time_to_next_job($next);
548
+    }
549
+
550
+    return queue_sleep_time_to_next_job();
551 551
 }
552 552
 
553 553
 /**
@@ -564,60 +564,60 @@  discard block
 block discarded – undo
564 564
  * @return string
565 565
  */
566 566
 function queue_affichage_cron() {
567
-	$texte = '';
568
-
569
-	$time_to_next = queue_sleep_time_to_next_job();
570
-	// rien a faire si le prochain job est encore dans le futur
571
-	if ($time_to_next > 0 or defined('_DEBUG_BLOCK_QUEUE')) {
572
-		return $texte;
573
-	}
574
-
575
-	// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
576
-	if (file_exists($lock = _DIR_TMP . 'cron.lock') and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
577
-		return $texte;
578
-	}
579
-
580
-	@touch($lock);
581
-
582
-	// il y a des taches en attentes
583
-	// si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
584
-	// on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
585
-	$urgent = false;
586
-	if ($time_to_next < -300) {
587
-		$urgent = true;
588
-	}
589
-
590
-	$url_cron = generer_url_action('cron', '', false, true);
591
-
592
-	if (!defined('_HTML_BG_CRON_FORCE') or !_HTML_BG_CRON_FORCE) {
593
-		if (queue_lancer_url_http_async($url_cron) and !$urgent) {
594
-			return $texte;
595
-		}
596
-	}
597
-
598
-	// si deja force, on retourne sans rien
599
-	if (defined('_DIRECT_CRON_FORCE')) {
600
-		return $texte;
601
-	}
602
-
603
-	// si c'est un bot
604
-	// inutile de faire un appel par image background,
605
-	// on force un appel direct en fin de hit
606
-	if ((defined('_IS_BOT') and _IS_BOT)) {
607
-		define('_DIRECT_CRON_FORCE', true);
608
-
609
-		return $texte;
610
-	}
611
-
612
-	if (!defined('_HTML_BG_CRON_INHIB') or !_HTML_BG_CRON_INHIB) {
613
-		// en derniere solution, on insere un appel xhr non bloquant ou une image background dans la page si pas de JS
614
-		$url_cron = generer_url_action('cron');
615
-		$texte = '<!-- SPIP-CRON -->'
616
-		  . "<script>setTimeout(function(){var xo = new XMLHttpRequest();xo.open('GET', '$url_cron', true);xo.send('');},100);</script>"
617
-		  . "<noscript><div style=\"background-image: url('$url_cron');\"></div></noscript>";
618
-	}
619
-
620
-	return $texte;
567
+    $texte = '';
568
+
569
+    $time_to_next = queue_sleep_time_to_next_job();
570
+    // rien a faire si le prochain job est encore dans le futur
571
+    if ($time_to_next > 0 or defined('_DEBUG_BLOCK_QUEUE')) {
572
+        return $texte;
573
+    }
574
+
575
+    // ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
576
+    if (file_exists($lock = _DIR_TMP . 'cron.lock') and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
577
+        return $texte;
578
+    }
579
+
580
+    @touch($lock);
581
+
582
+    // il y a des taches en attentes
583
+    // si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
584
+    // on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
585
+    $urgent = false;
586
+    if ($time_to_next < -300) {
587
+        $urgent = true;
588
+    }
589
+
590
+    $url_cron = generer_url_action('cron', '', false, true);
591
+
592
+    if (!defined('_HTML_BG_CRON_FORCE') or !_HTML_BG_CRON_FORCE) {
593
+        if (queue_lancer_url_http_async($url_cron) and !$urgent) {
594
+            return $texte;
595
+        }
596
+    }
597
+
598
+    // si deja force, on retourne sans rien
599
+    if (defined('_DIRECT_CRON_FORCE')) {
600
+        return $texte;
601
+    }
602
+
603
+    // si c'est un bot
604
+    // inutile de faire un appel par image background,
605
+    // on force un appel direct en fin de hit
606
+    if ((defined('_IS_BOT') and _IS_BOT)) {
607
+        define('_DIRECT_CRON_FORCE', true);
608
+
609
+        return $texte;
610
+    }
611
+
612
+    if (!defined('_HTML_BG_CRON_INHIB') or !_HTML_BG_CRON_INHIB) {
613
+        // en derniere solution, on insere un appel xhr non bloquant ou une image background dans la page si pas de JS
614
+        $url_cron = generer_url_action('cron');
615
+        $texte = '<!-- SPIP-CRON -->'
616
+            . "<script>setTimeout(function(){var xo = new XMLHttpRequest();xo.open('GET', '$url_cron', true);xo.send('');},100);</script>"
617
+            . "<noscript><div style=\"background-image: url('$url_cron');\"></div></noscript>";
618
+    }
619
+
620
+    return $texte;
621 621
 }
622 622
 
623 623
 /**
@@ -626,73 +626,73 @@  discard block
 block discarded – undo
626 626
  * @return bool : true si l'url a pu être appelée en asynchrone, false sinon
627 627
  */
628 628
 function queue_lancer_url_http_async($url_cron) {
629
-	// methode la plus rapide :
630
-	// Si fsockopen est possible, on lance le cron via un socket en asynchrone
631
-	// si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL
632
-	// car on a toutes les chances d'echouer pareil mais sans moyen de le savoir
633
-	// mais on renvoie false direct
634
-	if (function_exists('fsockopen')) {
635
-		$parts = parse_url($url_cron);
636
-
637
-		switch ($parts['scheme']) {
638
-			case 'https':
639
-				$scheme = 'ssl://';
640
-				$port = 443;
641
-				break;
642
-			case 'http':
643
-			default:
644
-				$scheme = '';
645
-				$port = 80;
646
-		}
647
-		$fp = @fsockopen(
648
-			$scheme . $parts['host'],
649
-			$parts['port'] ?? $port,
650
-			$errno,
651
-			$errstr,
652
-			1
653
-		);
654
-
655
-		if ($fp) {
656
-			$host_sent = $parts['host'];
657
-			if (isset($parts['port']) and $parts['port'] !== $port) {
658
-				$host_sent .= ':' . $parts['port'];
659
-			}
660
-			$timeout = 200; // ms
661
-			stream_set_timeout($fp, 0, $timeout * 1000);
662
-			$query = $parts['path'] . ($parts['query'] ? '?' . $parts['query'] : '');
663
-			$out = 'GET ' . $query . " HTTP/1.1\r\n";
664
-			$out .= 'Host: ' . $host_sent . "\r\n";
665
-			$out .= "Connection: Close\r\n\r\n";
666
-			fwrite($fp, $out);
667
-			spip_timer('read');
668
-			$t = 0;
669
-			// on lit la reponse si possible pour fermer proprement la connexion
670
-			// avec un timeout total de 200ms pour ne pas se bloquer
671
-			while (!feof($fp) and $t < $timeout) {
672
-				@fgets($fp, 1024);
673
-				$t += spip_timer('read', true);
674
-				spip_timer('read');
675
-			}
676
-			fclose($fp);
677
-			return true;
678
-		}
679
-	}
680
-	// si fsockopen n'est pas dispo on essaye cURL :
681
-	// lancer le cron par un cURL asynchrone si cURL est present
682
-	elseif (function_exists('curl_init')) {
683
-		//setting the curl parameters.
684
-		$ch = curl_init($url_cron);
685
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
686
-		// cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
687
-		curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
688
-		// valeur mini pour que la requete soit lancee
689
-		curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
690
-		// lancer
691
-		curl_exec($ch);
692
-		// fermer
693
-		curl_close($ch);
694
-		return true;
695
-	}
696
-
697
-	return false;
629
+    // methode la plus rapide :
630
+    // Si fsockopen est possible, on lance le cron via un socket en asynchrone
631
+    // si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL
632
+    // car on a toutes les chances d'echouer pareil mais sans moyen de le savoir
633
+    // mais on renvoie false direct
634
+    if (function_exists('fsockopen')) {
635
+        $parts = parse_url($url_cron);
636
+
637
+        switch ($parts['scheme']) {
638
+            case 'https':
639
+                $scheme = 'ssl://';
640
+                $port = 443;
641
+                break;
642
+            case 'http':
643
+            default:
644
+                $scheme = '';
645
+                $port = 80;
646
+        }
647
+        $fp = @fsockopen(
648
+            $scheme . $parts['host'],
649
+            $parts['port'] ?? $port,
650
+            $errno,
651
+            $errstr,
652
+            1
653
+        );
654
+
655
+        if ($fp) {
656
+            $host_sent = $parts['host'];
657
+            if (isset($parts['port']) and $parts['port'] !== $port) {
658
+                $host_sent .= ':' . $parts['port'];
659
+            }
660
+            $timeout = 200; // ms
661
+            stream_set_timeout($fp, 0, $timeout * 1000);
662
+            $query = $parts['path'] . ($parts['query'] ? '?' . $parts['query'] : '');
663
+            $out = 'GET ' . $query . " HTTP/1.1\r\n";
664
+            $out .= 'Host: ' . $host_sent . "\r\n";
665
+            $out .= "Connection: Close\r\n\r\n";
666
+            fwrite($fp, $out);
667
+            spip_timer('read');
668
+            $t = 0;
669
+            // on lit la reponse si possible pour fermer proprement la connexion
670
+            // avec un timeout total de 200ms pour ne pas se bloquer
671
+            while (!feof($fp) and $t < $timeout) {
672
+                @fgets($fp, 1024);
673
+                $t += spip_timer('read', true);
674
+                spip_timer('read');
675
+            }
676
+            fclose($fp);
677
+            return true;
678
+        }
679
+    }
680
+    // si fsockopen n'est pas dispo on essaye cURL :
681
+    // lancer le cron par un cURL asynchrone si cURL est present
682
+    elseif (function_exists('curl_init')) {
683
+        //setting the curl parameters.
684
+        $ch = curl_init($url_cron);
685
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
686
+        // cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
687
+        curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
688
+        // valeur mini pour que la requete soit lancee
689
+        curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
690
+        // lancer
691
+        curl_exec($ch);
692
+        // fermer
693
+        curl_close($ch);
694
+        return true;
695
+    }
696
+
697
+    return false;
698 698
 }
Please login to merge, or discard this patch.
Spacing   +37 added lines, -38 removed lines patch added patch discarded remove patch
@@ -70,7 +70,7 @@  discard block
 block discarded – undo
70 70
 	$md5args = md5($arguments);
71 71
 
72 72
 	// si pas de date programee, des que possible
73
-	$duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
73
+	$duplicate_where = 'status='.intval(_JQ_SCHEDULED).' AND ';
74 74
 	if (!$time) {
75 75
 		$time = time();
76 76
 		$duplicate_where = ''; // ne pas dupliquer si deja le meme job en cours d'execution
@@ -96,9 +96,8 @@  discard block
 block discarded – undo
96 96
 			'id_job',
97 97
 			'spip_jobs',
98 98
 			$duplicate_where =
99
-				$duplicate_where . 'fonction=' . sql_quote($function)
100
-				. (($no_duplicate === 'function_only') ? '' :
101
-			' AND md5args=' . sql_quote($md5args) . ' AND inclure=' . sql_quote($file))
99
+				$duplicate_where.'fonction='.sql_quote($function)
100
+				. (($no_duplicate === 'function_only') ? '' : ' AND md5args='.sql_quote($md5args).' AND inclure='.sql_quote($file))
102 101
 		)
103 102
 	) {
104 103
 		return $id_job;
@@ -111,9 +110,9 @@  discard block
 block discarded – undo
111 110
 	if (
112 111
 		$no_duplicate
113 112
 		and
114
-		$id_prev = sql_getfetsel('id_job', 'spip_jobs', 'id_job<' . intval($id_job) . " AND $duplicate_where")
113
+		$id_prev = sql_getfetsel('id_job', 'spip_jobs', 'id_job<'.intval($id_job)." AND $duplicate_where")
115 114
 	) {
116
-		sql_delete('spip_jobs', 'id_job=' . intval($id_job));
115
+		sql_delete('spip_jobs', 'id_job='.intval($id_job));
117 116
 
118 117
 		return $id_prev;
119 118
 	}
@@ -125,9 +124,9 @@  discard block
 block discarded – undo
125 124
 	// ie cas d'un char non acceptables sur certains type de champs
126 125
 	// qui coupe la valeur
127 126
 	if (defined('_JQ_INSERT_CHECK_ARGS') and $id_job) {
128
-		$args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
127
+		$args = sql_getfetsel('args', 'spip_jobs', 'id_job='.intval($id_job));
129 128
 		if ($args !== $arguments) {
130
-			spip_log('arguments job errones / longueur ' . strlen($args) . ' vs ' . strlen($arguments) . ' / valeur : ' . var_export(
129
+			spip_log('arguments job errones / longueur '.strlen($args).' vs '.strlen($arguments).' / valeur : '.var_export(
131 130
 				$arguments,
132 131
 				true
133 132
 			), 'queue');
@@ -157,7 +156,7 @@  discard block
 block discarded – undo
157 156
 function queue_purger() {
158 157
 	include_spip('base/abstract_sql');
159 158
 	sql_delete('spip_jobs');
160
-	sql_delete('spip_jobs_liens', 'id_job NOT IN (' . sql_get_select('id_job', 'spip_jobs') . ')');
159
+	sql_delete('spip_jobs_liens', 'id_job NOT IN ('.sql_get_select('id_job', 'spip_jobs').')');
161 160
 	include_spip('inc/genie');
162 161
 	genie_queue_watch_dist();
163 162
 }
@@ -173,8 +172,8 @@  discard block
 block discarded – undo
173 172
 	include_spip('base/abstract_sql');
174 173
 
175 174
 	if (
176
-		$row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job))
177
-		and $res = sql_delete('spip_jobs', 'id_job=' . intval($id_job))
175
+		$row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job='.intval($id_job))
176
+		and $res = sql_delete('spip_jobs', 'id_job='.intval($id_job))
178 177
 	) {
179 178
 		queue_unlink_job($id_job);
180 179
 		// est-ce une tache cron qu'il faut relancer ?
@@ -224,7 +223,7 @@  discard block
 block discarded – undo
224 223
  *  resultat du sql_delete
225 224
  */
226 225
 function queue_unlink_job($id_job) {
227
-	return sql_delete('spip_jobs_liens', 'id_job=' . intval($id_job));
226
+	return sql_delete('spip_jobs_liens', 'id_job='.intval($id_job));
228 227
 }
229 228
 
230 229
 /**
@@ -240,7 +239,7 @@  discard block
 block discarded – undo
240 239
 	// deserialiser les arguments
241 240
 	$args = unserialize($row['args']);
242 241
 	if (!is_array($args)) {
243
-		spip_log('arguments job errones ' . var_export($row, true), 'queue');
242
+		spip_log('arguments job errones '.var_export($row, true), 'queue');
244 243
 		$args = [];
245 244
 	}
246 245
 
@@ -257,14 +256,14 @@  discard block
 block discarded – undo
257 256
 	}
258 257
 
259 258
 	if (!function_exists($fonction)) {
260
-		spip_log("fonction $fonction ($inclure) inexistante " . var_export($row, true), 'queue');
259
+		spip_log("fonction $fonction ($inclure) inexistante ".var_export($row, true), 'queue');
261 260
 
262 261
 		return false;
263 262
 	}
264 263
 
265
-	spip_log('queue [' . $row['id_job'] . "]: $fonction() start", 'queue');
264
+	spip_log('queue ['.$row['id_job']."]: $fonction() start", 'queue');
266 265
 	$res = $fonction(...$args);
267
-	spip_log('queue [' . $row['id_job'] . "]: $fonction() end", 'queue');
266
+	spip_log('queue ['.$row['id_job']."]: $fonction() end", 'queue');
268 267
 
269 268
 	return $res;
270 269
 }
@@ -295,14 +294,14 @@  discard block
 block discarded – undo
295 294
 function queue_schedule($force_jobs = null) {
296 295
 	$time = time();
297 296
 	if (defined('_DEBUG_BLOCK_QUEUE')) {
298
-		spip_log('_DEBUG_BLOCK_QUEUE : schedule stop', 'jq' . _LOG_DEBUG);
297
+		spip_log('_DEBUG_BLOCK_QUEUE : schedule stop', 'jq'._LOG_DEBUG);
299 298
 
300 299
 		return;
301 300
 	}
302 301
 
303 302
 	// rien a faire si le prochain job est encore dans le futur
304 303
 	if (queue_sleep_time_to_next_job() > 0 and (!$force_jobs or !count($force_jobs))) {
305
-		spip_log('queue_sleep_time_to_next_job', 'jq' . _LOG_DEBUG);
304
+		spip_log('queue_sleep_time_to_next_job', 'jq'._LOG_DEBUG);
306 305
 
307 306
 		return;
308 307
 	}
@@ -323,7 +322,7 @@  discard block
 block discarded – undo
323 322
 	}
324 323
 	$end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
325 324
 
326
-	spip_log("JQ schedule $time / $end_time", 'jq' . _LOG_DEBUG);
325
+	spip_log("JQ schedule $time / $end_time", 'jq'._LOG_DEBUG);
327 326
 
328 327
 	if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
329 328
 		define('_JQ_MAX_JOBS_EXECUTE', 200);
@@ -337,19 +336,19 @@  discard block
 block discarded – undo
337 336
 	// lorsqu'un job cron n'a pas fini, sa priorite est descendue
338 337
 	// pour qu'il ne bloque pas les autres jobs en attente
339 338
 	if (is_array($force_jobs) and count($force_jobs)) {
340
-		$cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND ' . sql_in('id_job', $force_jobs);
339
+		$cond = 'status='.intval(_JQ_SCHEDULED).' AND '.sql_in('id_job', $force_jobs);
341 340
 	} else {
342 341
 		$now = date('Y-m-d H:i:s', $time);
343
-		$cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND date<=' . sql_quote($now);
342
+		$cond = 'status='.intval(_JQ_SCHEDULED).' AND date<='.sql_quote($now);
344 343
 	}
345 344
 
346 345
 	register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
347
-	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
346
+	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,'.(_JQ_MAX_JOBS_EXECUTE + 1));
348 347
 	do {
349 348
 		if ($row = array_shift($res)) {
350 349
 			$nbj++;
351 350
 			// il faut un verrou, a base de sql_delete
352
-			if (sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']) . ' AND status=' . intval(_JQ_SCHEDULED))) {
351
+			if (sql_delete('spip_jobs', 'id_job='.intval($row['id_job']).' AND status='.intval(_JQ_SCHEDULED))) {
353 352
 				#spip_log("JQ schedule job ".$nbj." OK",'jq');
354 353
 				// on reinsert dans la base aussitot avec un status=_JQ_PENDING
355 354
 				$row['status'] = _JQ_PENDING;
@@ -364,13 +363,13 @@  discard block
 block discarded – undo
364 363
 				queue_close_job($row, $time, $result);
365 364
 			}
366 365
 		}
367
-		spip_log('JQ schedule job end time ' . $time, 'jq' . _LOG_DEBUG);
366
+		spip_log('JQ schedule job end time '.$time, 'jq'._LOG_DEBUG);
368 367
 	} while ($nbj < _JQ_MAX_JOBS_EXECUTE and $row and $time < $end_time);
369
-	spip_log('JQ schedule end time ' . time(), 'jq' . _LOG_DEBUG);
368
+	spip_log('JQ schedule end time '.time(), 'jq'._LOG_DEBUG);
370 369
 
371 370
 	if ($row = array_shift($res)) {
372 371
 		queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
373
-		spip_log('JQ encore !', 'jq' . _LOG_DEBUG);
372
+		spip_log('JQ encore !', 'jq'._LOG_DEBUG);
374 373
 	} else {
375 374
 		queue_update_next_job_time();
376 375
 	}
@@ -405,9 +404,9 @@  discard block
 block discarded – undo
405 404
 		}
406 405
 	}
407 406
 	// purger ses liens eventuels avec des objets
408
-	sql_delete('spip_jobs_liens', 'id_job=' . intval($row['id_job']));
407
+	sql_delete('spip_jobs_liens', 'id_job='.intval($row['id_job']));
409 408
 	// supprimer le job fini
410
-	sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
409
+	sql_delete('spip_jobs', 'id_job='.intval($row['id_job']));
411 410
 }
412 411
 
413 412
 /**
@@ -480,18 +479,18 @@  discard block
 block discarded – undo
480 479
 	$res = sql_allfetsel(
481 480
 		'*',
482 481
 		'spip_jobs',
483
-		'status=' . intval(_JQ_PENDING) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time - 180))
482
+		'status='.intval(_JQ_PENDING).' AND date<'.sql_quote(date('Y-m-d H:i:s', $time - 180))
484 483
 	);
485 484
 	if (is_array($res)) {
486 485
 		foreach ($res as $row) {
487 486
 			queue_close_job($row, $time);
488
-			spip_log('queue_close_job car _JQ_PENDING depuis +180s : ' . print_r($row, 1), 'job_mort' . _LOG_ERREUR);
487
+			spip_log('queue_close_job car _JQ_PENDING depuis +180s : '.print_r($row, 1), 'job_mort'._LOG_ERREUR);
489 488
 		}
490 489
 	}
491 490
 
492 491
 	// chercher la date du prochain job si pas connu
493 492
 	if (is_null($next) or is_null(queue_sleep_time_to_next_job())) {
494
-		$date = sql_getfetsel('date', 'spip_jobs', 'status=' . intval(_JQ_SCHEDULED), '', 'date', '0,1');
493
+		$date = sql_getfetsel('date', 'spip_jobs', 'status='.intval(_JQ_SCHEDULED), '', 'date', '0,1');
495 494
 		$next = strtotime($date);
496 495
 	}
497 496
 	if (!is_null($next_time)) {
@@ -504,7 +503,7 @@  discard block
 block discarded – undo
504 503
 		if (is_null($nb_jobs_scheduled)) {
505 504
 			$nb_jobs_scheduled = sql_countsel(
506 505
 				'spip_jobs',
507
-				'status=' . intval(_JQ_SCHEDULED) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time))
506
+				'status='.intval(_JQ_SCHEDULED).' AND date<'.sql_quote(date('Y-m-d H:i:s', $time))
508 507
 			);
509 508
 		} elseif ($next <= $time) {
510 509
 			$nb_jobs_scheduled++;
@@ -573,7 +572,7 @@  discard block
 block discarded – undo
573 572
 	}
574 573
 
575 574
 	// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
576
-	if (file_exists($lock = _DIR_TMP . 'cron.lock') and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
575
+	if (file_exists($lock = _DIR_TMP.'cron.lock') and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
577 576
 		return $texte;
578 577
 	}
579 578
 
@@ -645,7 +644,7 @@  discard block
 block discarded – undo
645 644
 				$port = 80;
646 645
 		}
647 646
 		$fp = @fsockopen(
648
-			$scheme . $parts['host'],
647
+			$scheme.$parts['host'],
649 648
 			$parts['port'] ?? $port,
650 649
 			$errno,
651 650
 			$errstr,
@@ -655,13 +654,13 @@  discard block
 block discarded – undo
655 654
 		if ($fp) {
656 655
 			$host_sent = $parts['host'];
657 656
 			if (isset($parts['port']) and $parts['port'] !== $port) {
658
-				$host_sent .= ':' . $parts['port'];
657
+				$host_sent .= ':'.$parts['port'];
659 658
 			}
660 659
 			$timeout = 200; // ms
661 660
 			stream_set_timeout($fp, 0, $timeout * 1000);
662
-			$query = $parts['path'] . ($parts['query'] ? '?' . $parts['query'] : '');
663
-			$out = 'GET ' . $query . " HTTP/1.1\r\n";
664
-			$out .= 'Host: ' . $host_sent . "\r\n";
661
+			$query = $parts['path'].($parts['query'] ? '?'.$parts['query'] : '');
662
+			$out = 'GET '.$query." HTTP/1.1\r\n";
663
+			$out .= 'Host: '.$host_sent."\r\n";
665 664
 			$out .= "Connection: Close\r\n\r\n";
666 665
 			fwrite($fp, $out);
667 666
 			spip_timer('read');
Please login to merge, or discard this patch.