Completed
Push — master ( 38d21b...d83e9c )
by cam
05:18
created
ecrire/public/parametrer.php 1 patch
Indentation   +231 added lines, -231 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 include_fichiers_fonctions();
@@ -31,167 +31,167 @@  discard block
 block discarded – undo
31 31
 
32 32
 // https://code.spip.net/@public_parametrer_dist
33 33
 function public_parametrer_dist($fond, $contexte = '', $cache = '', $connect = '') {
34
-	static $composer, $styliser, $notes = null;
35
-	$page = tester_redirection($fond, $contexte, $connect);
36
-	if ($page) {
37
-		return $page;
38
-	}
39
-
40
-	if (isset($contexte['lang'])) {
41
-		$lang = $contexte['lang'];
42
-	} elseif (!isset($lang)) {
43
-		$lang = $GLOBALS['meta']['langue_site'];
44
-	}
45
-
46
-	$select = ((!isset($GLOBALS['forcer_lang']) or !$GLOBALS['forcer_lang']) and $lang <> $GLOBALS['spip_lang']);
47
-	if ($select) {
48
-		$select = lang_select($lang);
49
-	}
50
-
51
-	$debug = (defined('_VAR_MODE') && _VAR_MODE == 'debug');
52
-
53
-	if (!$styliser) {
54
-		$styliser = charger_fonction('styliser', 'public');
55
-	}
56
-	list($skel, $mime_type, $gram, $sourcefile) =
57
-		$styliser($fond, $contexte, $GLOBALS['spip_lang'], $connect);
58
-
59
-	if ($skel) {
60
-
61
-		// sauver le nom de l'eventuel squelette en cours d'execution
62
-		// (recursion possible a cause des modeles)
63
-		if ($debug) {
64
-			$courant = @$GLOBALS['debug_objets']['courant'];
65
-			$GLOBALS['debug_objets']['contexte'][$sourcefile] = $contexte;
66
-		}
67
-
68
-		// charger le squelette en specifiant les langages cibles et source
69
-		// au cas il faudrait le compiler (source posterieure au resultat)
70
-
71
-		if (!$composer) {
72
-			$composer = charger_fonction('composer', 'public');
73
-		}
74
-		$fonc = $composer($skel, $mime_type, $gram, $sourcefile, $connect);
75
-	} else {
76
-		$fonc = '';
77
-	}
78
-
79
-	if (!$fonc) { // squelette inconnu (==='') ou faux (===false)
80
-		$page = $fonc;
81
-	} else {
82
-		// Preparer l'appel de la fonction principale du squelette 
83
-
84
-		spip_timer($a = 'calcul page ' . rand(0, 1000));
85
-
86
-		// On cree un marqueur de notes unique lie a cette composition
87
-		// et on enregistre l'etat courant des globales de notes...
88
-		if (is_null($notes)) {
89
-			$notes = charger_fonction('notes', 'inc', true);
90
-		}
91
-		if ($notes) {
92
-			$notes('', 'empiler');
93
-		}
94
-
95
-		// Rajouter d'office ces deux parametres
96
-		// (mais vaudrait mieux que le compilateur sache le simuler
97
-		// car ca interdit l'usage de criteres conditionnels dessus).
98
-		if (!isset($contexte['date'])) {
99
-			$contexte['date'] = date("Y-m-d H:i:s");
100
-			$contexte['date_default'] = true;
101
-		} else {
102
-			$contexte['date'] = normaliser_date($contexte['date'], true);
103
-		}
104
-
105
-		if (!isset($contexte['date_redac'])) {
106
-			$contexte['date_redac'] = date("Y-m-d H:i:s");
107
-			$contexte['date_redac_default'] = true;
108
-		} else {
109
-			$contexte['date_redac'] = normaliser_date($contexte['date_redac'], true);
110
-		}
111
-
112
-		// Passer le nom du cache pour produire sa destruction automatique
113
-		$page = $fonc(array('cache' => $cache), array($contexte));
114
-
115
-		// Restituer les globales de notes telles qu'elles etaient avant l'appel
116
-		// Si l'inclus n'a pas affiche ses notes, tant pis (elles *doivent*
117
-		// etre dans son resultat, autrement elles ne seraient pas prises en
118
-		// compte a chaque calcul d'un texte contenant un modele, mais seulement
119
-		// quand le modele serait calcule, et on aurait des resultats incoherents)
120
-		if ($notes) {
121
-			$notes('', 'depiler');
122
-		}
123
-
124
-		// reinjecter en dynamique la pile des notes
125
-		// si il y a des inclure dynamiques
126
-		// si la pile n'est pas vide
127
-		// la generalisation de cette injection permettrait de corriger le point juste au dessus
128
-		// en faisant remonter les notes a l'incluant (A tester et valider avant application)
129
-		if ($notes) {
130
-			$page['notes'] = $notes('', 'sauver_etat');
131
-		}
132
-
133
-		// spip_log: un joli contexte
134
-		$infos = presenter_contexte(array_filter($contexte));
135
-
136
-		$profile = spip_timer($a);
137
-		spip_log("calcul ($profile) [$skel] $infos"
138
-			. ' (' . strlen($page['texte']) . ' octets)');
139
-
140
-		if (defined('_CALCUL_PROFILER') AND intval($profile)>_CALCUL_PROFILER){
141
-			spip_log("calcul ($profile) [$skel] $infos"
142
-				.' ('.strlen($page['texte']).' octets) | '.$_SERVER['REQUEST_URI'],"profiler"._LOG_AVERTISSEMENT);
143
-		}
144
-
145
-		if ($debug) {
146
-			// si c'est ce que demande le debusqueur, lui passer la main
147
-			$t = strlen($page['texte']) ? $page['texte'] : " ";
148
-			$GLOBALS['debug_objets']['resultat'][$fonc . 'tout'] = $t;
149
-			$GLOBALS['debug_objets']['courant'] = $courant;
150
-			$GLOBALS['debug_objets']['profile'][$sourcefile] = $profile;
151
-			if ($GLOBALS['debug_objets']['sourcefile']
152
-				and (_request('var_mode_objet') == $fonc)
153
-				and (_request('var_mode_affiche') == 'resultat')
154
-			) {
155
-				erreur_squelette();
156
-			}
157
-		}
158
-		// Si #CACHE{} n'etait pas la, le mettre a $delais
159
-		if (!isset($page['entetes']['X-Spip-Cache'])) {
160
-			// Dans l'espace prive ou dans un modeles/ on pose un cache 0 par defaut
161
-			// si aucun #CACHE{} spécifié
162
-			// le contexte implicite qui conditionne le cache assure qu'on retombe pas sur le meme
163
-			// entre public et prive
164
-			if (test_espace_prive() or strncmp($fond, 'modeles/', 8) == 0) {
165
-				$page['entetes']['X-Spip-Cache'] = 0;
166
-			} else {
167
-				$page['entetes']['X-Spip-Cache'] = isset($GLOBALS['delais']) ? $GLOBALS['delais'] : 36000;
168
-			}
169
-		}
170
-
171
-		$page['contexte'] = $contexte;
172
-
173
-		// faire remonter le fichier source
174
-		static $js_inclus = false;
175
-		if (defined('_VAR_INCLURE') and _VAR_INCLURE) {
176
-			$page['sourcefile'] = $sourcefile;
177
-			$page['texte'] =
178
-				"<div class='inclure_blocs'><h6>" . $page['sourcefile'] . "</h6>" . $page['texte'] . "</div>"
179
-				. ($js_inclus ? "" : "<script type='text/javascript'>jQuery(function(){jQuery('.inclure_blocs > h6:first-child').hover(function(){jQuery(this).parent().addClass('hover')},function(){jQuery(this).parent().removeClass('hover')})});</script>");
180
-			$js_inclus = true;
181
-		}
182
-
183
-		// Si un modele contenait #SESSION, on note l'info dans $page
184
-		if (isset($GLOBALS['cache_utilise_session'])) {
185
-			$page['invalideurs']['session'] = $GLOBALS['cache_utilise_session'];
186
-			unset($GLOBALS['cache_utilise_session']);
187
-		}
188
-	}
189
-
190
-	if ($select) {
191
-		lang_select();
192
-	}
193
-
194
-	return $page;
34
+    static $composer, $styliser, $notes = null;
35
+    $page = tester_redirection($fond, $contexte, $connect);
36
+    if ($page) {
37
+        return $page;
38
+    }
39
+
40
+    if (isset($contexte['lang'])) {
41
+        $lang = $contexte['lang'];
42
+    } elseif (!isset($lang)) {
43
+        $lang = $GLOBALS['meta']['langue_site'];
44
+    }
45
+
46
+    $select = ((!isset($GLOBALS['forcer_lang']) or !$GLOBALS['forcer_lang']) and $lang <> $GLOBALS['spip_lang']);
47
+    if ($select) {
48
+        $select = lang_select($lang);
49
+    }
50
+
51
+    $debug = (defined('_VAR_MODE') && _VAR_MODE == 'debug');
52
+
53
+    if (!$styliser) {
54
+        $styliser = charger_fonction('styliser', 'public');
55
+    }
56
+    list($skel, $mime_type, $gram, $sourcefile) =
57
+        $styliser($fond, $contexte, $GLOBALS['spip_lang'], $connect);
58
+
59
+    if ($skel) {
60
+
61
+        // sauver le nom de l'eventuel squelette en cours d'execution
62
+        // (recursion possible a cause des modeles)
63
+        if ($debug) {
64
+            $courant = @$GLOBALS['debug_objets']['courant'];
65
+            $GLOBALS['debug_objets']['contexte'][$sourcefile] = $contexte;
66
+        }
67
+
68
+        // charger le squelette en specifiant les langages cibles et source
69
+        // au cas il faudrait le compiler (source posterieure au resultat)
70
+
71
+        if (!$composer) {
72
+            $composer = charger_fonction('composer', 'public');
73
+        }
74
+        $fonc = $composer($skel, $mime_type, $gram, $sourcefile, $connect);
75
+    } else {
76
+        $fonc = '';
77
+    }
78
+
79
+    if (!$fonc) { // squelette inconnu (==='') ou faux (===false)
80
+        $page = $fonc;
81
+    } else {
82
+        // Preparer l'appel de la fonction principale du squelette 
83
+
84
+        spip_timer($a = 'calcul page ' . rand(0, 1000));
85
+
86
+        // On cree un marqueur de notes unique lie a cette composition
87
+        // et on enregistre l'etat courant des globales de notes...
88
+        if (is_null($notes)) {
89
+            $notes = charger_fonction('notes', 'inc', true);
90
+        }
91
+        if ($notes) {
92
+            $notes('', 'empiler');
93
+        }
94
+
95
+        // Rajouter d'office ces deux parametres
96
+        // (mais vaudrait mieux que le compilateur sache le simuler
97
+        // car ca interdit l'usage de criteres conditionnels dessus).
98
+        if (!isset($contexte['date'])) {
99
+            $contexte['date'] = date("Y-m-d H:i:s");
100
+            $contexte['date_default'] = true;
101
+        } else {
102
+            $contexte['date'] = normaliser_date($contexte['date'], true);
103
+        }
104
+
105
+        if (!isset($contexte['date_redac'])) {
106
+            $contexte['date_redac'] = date("Y-m-d H:i:s");
107
+            $contexte['date_redac_default'] = true;
108
+        } else {
109
+            $contexte['date_redac'] = normaliser_date($contexte['date_redac'], true);
110
+        }
111
+
112
+        // Passer le nom du cache pour produire sa destruction automatique
113
+        $page = $fonc(array('cache' => $cache), array($contexte));
114
+
115
+        // Restituer les globales de notes telles qu'elles etaient avant l'appel
116
+        // Si l'inclus n'a pas affiche ses notes, tant pis (elles *doivent*
117
+        // etre dans son resultat, autrement elles ne seraient pas prises en
118
+        // compte a chaque calcul d'un texte contenant un modele, mais seulement
119
+        // quand le modele serait calcule, et on aurait des resultats incoherents)
120
+        if ($notes) {
121
+            $notes('', 'depiler');
122
+        }
123
+
124
+        // reinjecter en dynamique la pile des notes
125
+        // si il y a des inclure dynamiques
126
+        // si la pile n'est pas vide
127
+        // la generalisation de cette injection permettrait de corriger le point juste au dessus
128
+        // en faisant remonter les notes a l'incluant (A tester et valider avant application)
129
+        if ($notes) {
130
+            $page['notes'] = $notes('', 'sauver_etat');
131
+        }
132
+
133
+        // spip_log: un joli contexte
134
+        $infos = presenter_contexte(array_filter($contexte));
135
+
136
+        $profile = spip_timer($a);
137
+        spip_log("calcul ($profile) [$skel] $infos"
138
+            . ' (' . strlen($page['texte']) . ' octets)');
139
+
140
+        if (defined('_CALCUL_PROFILER') AND intval($profile)>_CALCUL_PROFILER){
141
+            spip_log("calcul ($profile) [$skel] $infos"
142
+                .' ('.strlen($page['texte']).' octets) | '.$_SERVER['REQUEST_URI'],"profiler"._LOG_AVERTISSEMENT);
143
+        }
144
+
145
+        if ($debug) {
146
+            // si c'est ce que demande le debusqueur, lui passer la main
147
+            $t = strlen($page['texte']) ? $page['texte'] : " ";
148
+            $GLOBALS['debug_objets']['resultat'][$fonc . 'tout'] = $t;
149
+            $GLOBALS['debug_objets']['courant'] = $courant;
150
+            $GLOBALS['debug_objets']['profile'][$sourcefile] = $profile;
151
+            if ($GLOBALS['debug_objets']['sourcefile']
152
+                and (_request('var_mode_objet') == $fonc)
153
+                and (_request('var_mode_affiche') == 'resultat')
154
+            ) {
155
+                erreur_squelette();
156
+            }
157
+        }
158
+        // Si #CACHE{} n'etait pas la, le mettre a $delais
159
+        if (!isset($page['entetes']['X-Spip-Cache'])) {
160
+            // Dans l'espace prive ou dans un modeles/ on pose un cache 0 par defaut
161
+            // si aucun #CACHE{} spécifié
162
+            // le contexte implicite qui conditionne le cache assure qu'on retombe pas sur le meme
163
+            // entre public et prive
164
+            if (test_espace_prive() or strncmp($fond, 'modeles/', 8) == 0) {
165
+                $page['entetes']['X-Spip-Cache'] = 0;
166
+            } else {
167
+                $page['entetes']['X-Spip-Cache'] = isset($GLOBALS['delais']) ? $GLOBALS['delais'] : 36000;
168
+            }
169
+        }
170
+
171
+        $page['contexte'] = $contexte;
172
+
173
+        // faire remonter le fichier source
174
+        static $js_inclus = false;
175
+        if (defined('_VAR_INCLURE') and _VAR_INCLURE) {
176
+            $page['sourcefile'] = $sourcefile;
177
+            $page['texte'] =
178
+                "<div class='inclure_blocs'><h6>" . $page['sourcefile'] . "</h6>" . $page['texte'] . "</div>"
179
+                . ($js_inclus ? "" : "<script type='text/javascript'>jQuery(function(){jQuery('.inclure_blocs > h6:first-child').hover(function(){jQuery(this).parent().addClass('hover')},function(){jQuery(this).parent().removeClass('hover')})});</script>");
180
+            $js_inclus = true;
181
+        }
182
+
183
+        // Si un modele contenait #SESSION, on note l'info dans $page
184
+        if (isset($GLOBALS['cache_utilise_session'])) {
185
+            $page['invalideurs']['session'] = $GLOBALS['cache_utilise_session'];
186
+            unset($GLOBALS['cache_utilise_session']);
187
+        }
188
+    }
189
+
190
+    if ($select) {
191
+        lang_select();
192
+    }
193
+
194
+    return $page;
195 195
 }
196 196
 
197 197
 /** 
@@ -200,33 +200,33 @@  discard block
 block discarded – undo
200 200
  * @return string
201 201
 */
202 202
 function presenter_contexte($contexte, $profondeur_max = 1, $max_lines = 0) {
203
-	$infos = array();
204
-	$line = 0;
205
-	foreach ($contexte as $var => $val) {
206
-		$line++;
207
-		if ($max_lines and $max_lines < $line) {
208
-			$infos[] = '…';
209
-			break;
210
-		}
211
-		if (is_array($val)) {
212
-			if ($profondeur_max > 0) {
213
-				$val = 'array:' . count($val) . '(' . presenter_contexte($val, $profondeur_max - 1, 3) . ')';
214
-			} else {
215
-				$val = 'array:' . count($val);
216
-			}
217
-		} elseif (is_object($val)) {
218
-			$val = get_class($val);
219
-		} elseif (strlen("$val") > 30) {
220
-			$val = substr("$val", 0, 29) . '…';
221
-			if (strstr($val, ' ')) {
222
-				$val = "'$val'";
223
-			}
224
-		} elseif (strstr($val, ' ')) {
225
-			$val = "'$val'";
226
-		}
227
-		$infos[] = $var . '=' . $val;
228
-	}
229
-	return join(', ', $infos);
203
+    $infos = array();
204
+    $line = 0;
205
+    foreach ($contexte as $var => $val) {
206
+        $line++;
207
+        if ($max_lines and $max_lines < $line) {
208
+            $infos[] = '…';
209
+            break;
210
+        }
211
+        if (is_array($val)) {
212
+            if ($profondeur_max > 0) {
213
+                $val = 'array:' . count($val) . '(' . presenter_contexte($val, $profondeur_max - 1, 3) . ')';
214
+            } else {
215
+                $val = 'array:' . count($val);
216
+            }
217
+        } elseif (is_object($val)) {
218
+            $val = get_class($val);
219
+        } elseif (strlen("$val") > 30) {
220
+            $val = substr("$val", 0, 29) . '…';
221
+            if (strstr($val, ' ')) {
222
+                $val = "'$val'";
223
+            }
224
+        } elseif (strstr($val, ' ')) {
225
+            $val = "'$val'";
226
+        }
227
+        $infos[] = $var . '=' . $val;
228
+    }
229
+    return join(', ', $infos);
230 230
 }
231 231
 
232 232
 
@@ -243,11 +243,11 @@  discard block
 block discarded – undo
243 243
  * @return array|bool
244 244
  */
245 245
 function tester_redirection($fond, $contexte, $connect) {
246
-	static $tester_redirection = null;
247
-	if (is_null($tester_redirection)) {
248
-		$tester_redirection = charger_fonction('tester_redirection', 'public');
249
-	}
250
-	return $tester_redirection($fond, $contexte, $connect);
246
+    static $tester_redirection = null;
247
+    if (is_null($tester_redirection)) {
248
+        $tester_redirection = charger_fonction('tester_redirection', 'public');
249
+    }
250
+    return $tester_redirection($fond, $contexte, $connect);
251 251
 }
252 252
 
253 253
 
@@ -263,41 +263,41 @@  discard block
 block discarded – undo
263 263
  * @return array|bool
264 264
  */
265 265
 function public_tester_redirection_dist($fond, $contexte, $connect) {
266
-	if ($fond == 'article'
267
-		and !empty($contexte['id_article'])
268
-		and $id_article = intval($contexte['id_article'])
269
-	) {
270
-		include_spip('public/quete'); // pour quete_virtuel et ses dependances
271
-		$m = quete_virtuel($id_article, $connect);
272
-		if (strlen($m)) {
273
-			include_spip('inc/texte');
274
-			// les navigateurs pataugent si l'URL est vide
275
-			if ($url = virtuel_redirige($m, true)) {
276
-				// passer en url absolue car cette redirection pourra
277
-				// etre utilisee dans un contexte d'url qui change
278
-				// y compris url arbo
279
-				$status = 302;
280
-				if (defined('_STATUS_REDIRECTION_VIRTUEL')) {
281
-					$status = _STATUS_REDIRECTION_VIRTUEL;
282
-				}
283
-				if (!preg_match(',^\w+:,', $url)) {
284
-					include_spip('inc/filtres_mini');
285
-					$url = url_absolue($url);
286
-				}
287
-				$url = str_replace('&amp;', '&', $url);
288
-
289
-				return array(
290
-					'texte' => "<"
291
-						. "?php include_spip('inc/headers');redirige_par_entete('"
292
-						. texte_script($url)
293
-						. "','',$status);"
294
-						. "?" . ">",
295
-					'process_ins' => 'php',
296
-					'status' => $status
297
-				);
298
-			}
299
-		}
300
-	}
301
-
302
-	return false;
266
+    if ($fond == 'article'
267
+        and !empty($contexte['id_article'])
268
+        and $id_article = intval($contexte['id_article'])
269
+    ) {
270
+        include_spip('public/quete'); // pour quete_virtuel et ses dependances
271
+        $m = quete_virtuel($id_article, $connect);
272
+        if (strlen($m)) {
273
+            include_spip('inc/texte');
274
+            // les navigateurs pataugent si l'URL est vide
275
+            if ($url = virtuel_redirige($m, true)) {
276
+                // passer en url absolue car cette redirection pourra
277
+                // etre utilisee dans un contexte d'url qui change
278
+                // y compris url arbo
279
+                $status = 302;
280
+                if (defined('_STATUS_REDIRECTION_VIRTUEL')) {
281
+                    $status = _STATUS_REDIRECTION_VIRTUEL;
282
+                }
283
+                if (!preg_match(',^\w+:,', $url)) {
284
+                    include_spip('inc/filtres_mini');
285
+                    $url = url_absolue($url);
286
+                }
287
+                $url = str_replace('&amp;', '&', $url);
288
+
289
+                return array(
290
+                    'texte' => "<"
291
+                        . "?php include_spip('inc/headers');redirige_par_entete('"
292
+                        . texte_script($url)
293
+                        . "','',$status);"
294
+                        . "?" . ">",
295
+                    'process_ins' => 'php',
296
+                    'status' => $status
297
+                );
298
+            }
299
+        }
300
+    }
301
+
302
+    return false;
303 303
 }
Please login to merge, or discard this patch.