Completed
Push — master ( e0f5c6...e54619 )
by cam
05:33
created
prive/formulaires/login.php 1 patch
Indentation   +204 added lines, -204 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('base/abstract_sql');
@@ -31,11 +31,11 @@  discard block
 block discarded – undo
31 31
  *     true si espace privé, false sinon.
32 32
  **/
33 33
 function is_url_prive($cible) {
34
-	include_spip('inc/filtres_mini');
35
-	$path = parse_url(tester_url_absolue($cible) ? $cible : url_absolue($cible));
36
-	$path = (isset($path['path']) ? $path['path'] : '');
34
+    include_spip('inc/filtres_mini');
35
+    $path = parse_url(tester_url_absolue($cible) ? $cible : url_absolue($cible));
36
+    $path = (isset($path['path']) ? $path['path'] : '');
37 37
 
38
-	return strncmp(substr($path, -strlen(_DIR_RESTREINT_ABS)), _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS)) == 0;
38
+    return strncmp(substr($path, -strlen(_DIR_RESTREINT_ABS)), _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS)) == 0;
39 39
 }
40 40
 
41 41
 /**
@@ -60,89 +60,89 @@  discard block
 block discarded – undo
60 60
  *     Environnement du formulaire
61 61
  **/
62 62
 function formulaires_login_charger_dist($cible = '', $login = '', $prive = null) {
63
-	$erreur = _request('var_erreur');
64
-
65
-	if (!$login) {
66
-		$login = strval(_request('var_login'));
67
-	}
68
-	// si on est deja identifie
69
-	if (!$login and isset($GLOBALS['visiteur_session']['email'])) {
70
-		$login = $GLOBALS['visiteur_session']['email'];
71
-	}
72
-	if (!$login and isset($GLOBALS['visiteur_session']['login'])) {
73
-		$login = $GLOBALS['visiteur_session']['login'];
74
-	}
75
-	// ou si on a un cookie admin
76
-	if (!$login) {
77
-		if (isset($_COOKIE['spip_admin'])
78
-			and preg_match(',^@(.*)$,', $_COOKIE['spip_admin'], $regs)
79
-		) {
80
-			$login = $regs[1];
81
-		}
82
-	}
83
-
84
-	include_spip('inc/auth');
85
-	$row = auth_informer_login($login);
86
-
87
-	// Construire l'environnement du squelette
88
-	// Ne pas proposer de "rester connecte quelques jours"
89
-	// si la duree de l'alea est inferieure a 12 h (valeur par defaut)
90
-
91
-	$valeurs = array(
92
-		'var_login' => $login,
93
-		'editable' => !$row,
94
-		'cnx' => isset($row['cnx']) ? $row['cnx'] : '0',
95
-		'auth_http' => login_auth_http(),
96
-		'rester_connecte' => ((_RENOUVELLE_ALEA < 12 * 3600) ? '' : ' '),
97
-		'_logo' => isset($row['logo']) ? $row['logo'] : '',
98
-		'_alea_actuel' => isset($row['alea_actuel']) ? $row['alea_actuel'] : '',
99
-		'_alea_futur' => isset($row['alea_futur']) ? $row['alea_futur'] : '',
100
-		'_pipeline' => 'affiche_formulaire_login', // faire passer le formulaire dans un pipe dedie pour les methodes auth
101
-	);
102
-
103
-	if ($erreur or !isset($GLOBALS['visiteur_session']['id_auteur']) or !$GLOBALS['visiteur_session']['id_auteur']) {
104
-		$valeurs['editable'] = true;
105
-	}
106
-
107
-	if (is_null($prive) ? is_url_prive($cible) : $prive) {
108
-		include_spip('inc/autoriser');
109
-		$loge = autoriser('ecrire');
110
-	} else {
111
-		$loge = (isset($GLOBALS['visiteur_session']['auth']) and $GLOBALS['visiteur_session']['auth'] != '');
112
-	}
113
-
114
-	// Si on est connecte, appeler traiter()
115
-	// et lancer la redirection si besoin
116
-	if (!$valeurs['editable'] and $loge and _request('formulaire_action')!=='login') {
117
-		$traiter = charger_fonction('traiter', 'formulaires/login');
118
-		$res = $traiter($cible, $login, $prive);
119
-		$valeurs = array_merge($valeurs, $res);
120
-
121
-		if (isset($res['redirect']) and $res['redirect']) {
122
-			include_spip('inc/headers');
123
-			# preparer un lien pour quand redirige_formulaire ne fonctionne pas
124
-			$m = redirige_formulaire($res['redirect'], '', 'ajaxform');
125
-			$valeurs['_deja_loge'] = inserer_attribut(
126
-				'<a>' . _T('login_par_ici') . "</a>$m",
127
-				'href',
128
-				$res['redirect']
129
-			);
130
-		}
131
-	}
132
-	// en cas d'echec de cookie, inc_auth a renvoye vers le script de
133
-	// pose de cookie ; s'il n'est pas la, c'est echec cookie
134
-	// s'il est la, c'est probablement un bookmark sur bonjour=oui,
135
-	// et pas un echec cookie.
136
-	if ($erreur == 'cookie') {
137
-		$valeurs['echec_cookie'] = ' ';
138
-	} elseif ($erreur) {
139
-		// une erreur d'un SSO indique dans la redirection vers ici
140
-		// mais il faut se proteger de toute tentative d'injection malveilante
141
-		include_spip('inc/texte');
142
-		$valeurs['message_erreur'] = safehtml($erreur);
143
-	}
144
-
145
-	return $valeurs;
63
+    $erreur = _request('var_erreur');
64
+
65
+    if (!$login) {
66
+        $login = strval(_request('var_login'));
67
+    }
68
+    // si on est deja identifie
69
+    if (!$login and isset($GLOBALS['visiteur_session']['email'])) {
70
+        $login = $GLOBALS['visiteur_session']['email'];
71
+    }
72
+    if (!$login and isset($GLOBALS['visiteur_session']['login'])) {
73
+        $login = $GLOBALS['visiteur_session']['login'];
74
+    }
75
+    // ou si on a un cookie admin
76
+    if (!$login) {
77
+        if (isset($_COOKIE['spip_admin'])
78
+            and preg_match(',^@(.*)$,', $_COOKIE['spip_admin'], $regs)
79
+        ) {
80
+            $login = $regs[1];
81
+        }
82
+    }
83
+
84
+    include_spip('inc/auth');
85
+    $row = auth_informer_login($login);
86
+
87
+    // Construire l'environnement du squelette
88
+    // Ne pas proposer de "rester connecte quelques jours"
89
+    // si la duree de l'alea est inferieure a 12 h (valeur par defaut)
90
+
91
+    $valeurs = array(
92
+        'var_login' => $login,
93
+        'editable' => !$row,
94
+        'cnx' => isset($row['cnx']) ? $row['cnx'] : '0',
95
+        'auth_http' => login_auth_http(),
96
+        'rester_connecte' => ((_RENOUVELLE_ALEA < 12 * 3600) ? '' : ' '),
97
+        '_logo' => isset($row['logo']) ? $row['logo'] : '',
98
+        '_alea_actuel' => isset($row['alea_actuel']) ? $row['alea_actuel'] : '',
99
+        '_alea_futur' => isset($row['alea_futur']) ? $row['alea_futur'] : '',
100
+        '_pipeline' => 'affiche_formulaire_login', // faire passer le formulaire dans un pipe dedie pour les methodes auth
101
+    );
102
+
103
+    if ($erreur or !isset($GLOBALS['visiteur_session']['id_auteur']) or !$GLOBALS['visiteur_session']['id_auteur']) {
104
+        $valeurs['editable'] = true;
105
+    }
106
+
107
+    if (is_null($prive) ? is_url_prive($cible) : $prive) {
108
+        include_spip('inc/autoriser');
109
+        $loge = autoriser('ecrire');
110
+    } else {
111
+        $loge = (isset($GLOBALS['visiteur_session']['auth']) and $GLOBALS['visiteur_session']['auth'] != '');
112
+    }
113
+
114
+    // Si on est connecte, appeler traiter()
115
+    // et lancer la redirection si besoin
116
+    if (!$valeurs['editable'] and $loge and _request('formulaire_action')!=='login') {
117
+        $traiter = charger_fonction('traiter', 'formulaires/login');
118
+        $res = $traiter($cible, $login, $prive);
119
+        $valeurs = array_merge($valeurs, $res);
120
+
121
+        if (isset($res['redirect']) and $res['redirect']) {
122
+            include_spip('inc/headers');
123
+            # preparer un lien pour quand redirige_formulaire ne fonctionne pas
124
+            $m = redirige_formulaire($res['redirect'], '', 'ajaxform');
125
+            $valeurs['_deja_loge'] = inserer_attribut(
126
+                '<a>' . _T('login_par_ici') . "</a>$m",
127
+                'href',
128
+                $res['redirect']
129
+            );
130
+        }
131
+    }
132
+    // en cas d'echec de cookie, inc_auth a renvoye vers le script de
133
+    // pose de cookie ; s'il n'est pas la, c'est echec cookie
134
+    // s'il est la, c'est probablement un bookmark sur bonjour=oui,
135
+    // et pas un echec cookie.
136
+    if ($erreur == 'cookie') {
137
+        $valeurs['echec_cookie'] = ' ';
138
+    } elseif ($erreur) {
139
+        // une erreur d'un SSO indique dans la redirection vers ici
140
+        // mais il faut se proteger de toute tentative d'injection malveilante
141
+        include_spip('inc/texte');
142
+        $valeurs['message_erreur'] = safehtml($erreur);
143
+    }
144
+
145
+    return $valeurs;
146 146
 }
147 147
 
148 148
 
@@ -157,19 +157,19 @@  discard block
 block discarded – undo
157 157
  *     - chaîne vide sinon.
158 158
  **/
159 159
 function login_auth_http() {
160
-	if (!$GLOBALS['ignore_auth_http']
161
-		and _request('var_erreur') == 'cookie'
162
-		and (!isset($_COOKIE['spip_session']) or $_COOKIE['spip_session'] != 'test_echec_cookie')
163
-		and (($GLOBALS['flag_sapi_name'] and preg_match(',apache,i', @php_sapi_name()))
164
-			or preg_match(',^Apache.* PHP,', $_SERVER['SERVER_SOFTWARE']))
165
-		// Attention dans le cas 'intranet' la proposition de se loger
166
-		// par auth_http peut conduire a l'echec.
167
-		and !(isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW']))
168
-	) {
169
-		return generer_url_action('cookie', '', false, true);
170
-	} else {
171
-		return '';
172
-	}
160
+    if (!$GLOBALS['ignore_auth_http']
161
+        and _request('var_erreur') == 'cookie'
162
+        and (!isset($_COOKIE['spip_session']) or $_COOKIE['spip_session'] != 'test_echec_cookie')
163
+        and (($GLOBALS['flag_sapi_name'] and preg_match(',apache,i', @php_sapi_name()))
164
+            or preg_match(',^Apache.* PHP,', $_SERVER['SERVER_SOFTWARE']))
165
+        // Attention dans le cas 'intranet' la proposition de se loger
166
+        // par auth_http peut conduire a l'echec.
167
+        and !(isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW']))
168
+    ) {
169
+        return generer_url_action('cookie', '', false, true);
170
+    } else {
171
+        return '';
172
+    }
173 173
 }
174 174
 
175 175
 /**
@@ -195,54 +195,54 @@  discard block
 block discarded – undo
195 195
  **/
196 196
 function formulaires_login_verifier_dist($cible = '', $login = '', $prive = null) {
197 197
 
198
-	$session_login = _request('var_login');
199
-	$session_password = _request('password');
200
-	$session_remember = _request('session_remember');
201
-
202
-	if (!$session_login) {
203
-		# pas de login saisi !
204
-		return array('var_login' => _T('info_obligatoire'));
205
-	}
206
-
207
-	// appeler auth_identifier_login qui va :
208
-	// - renvoyer un string si echec (message d'erreur)
209
-	// - un array decrivant l'auteur identifie si possible
210
-	// - rediriger vers un SSO qui renverra in fine sur action/auth qui finira l'authentification
211
-	include_spip('inc/auth');
212
-	$auteur = auth_identifier_login($session_login, $session_password);
213
-	// on arrive ici si on ne s'est pas identifie avec un SSO
214
-	if (!is_array($auteur)) {
215
-		$erreurs = array();
216
-		if (is_string($auteur) and strlen($auteur)) {
217
-			$erreurs['var_login'] = $auteur;
218
-		}
219
-		include_spip('inc/cookie');
220
-		spip_setcookie('spip_admin', '', time() - 3600);
221
-		if (strlen($session_password)) {
222
-			$erreurs['password'] = _T('login_erreur_pass');
223
-		} else {
224
-			// sinon c'est un login en deux passe old style (ou js en panne)
225
-			// pas de message d'erreur
226
-			$erreurs['password'] = ' ';
227
-		}
228
-
229
-		return
230
-			$erreurs;
231
-	}
232
-	// on a ete authentifie, construire la session
233
-	// en gerant la duree demandee pour son cookie
234
-	if ($session_remember !== null) {
235
-		$auteur['cookie'] = $session_remember;
236
-	}
237
-	// si la connexion est refusee on renvoi un message erreur de mot de passe
238
-	// car en donnant plus de detail on renseignerait un assaillant sur l'existence d'un compte
239
-	if (auth_loger($auteur) === false) {
240
-		$erreurs['message_erreur'] = _T('login_erreur_pass');
241
-		return $erreurs;
242
-	}
243
-
244
-	return (is_null($prive) ? is_url_prive($cible) : $prive)
245
-		? login_autoriser() : array();
198
+    $session_login = _request('var_login');
199
+    $session_password = _request('password');
200
+    $session_remember = _request('session_remember');
201
+
202
+    if (!$session_login) {
203
+        # pas de login saisi !
204
+        return array('var_login' => _T('info_obligatoire'));
205
+    }
206
+
207
+    // appeler auth_identifier_login qui va :
208
+    // - renvoyer un string si echec (message d'erreur)
209
+    // - un array decrivant l'auteur identifie si possible
210
+    // - rediriger vers un SSO qui renverra in fine sur action/auth qui finira l'authentification
211
+    include_spip('inc/auth');
212
+    $auteur = auth_identifier_login($session_login, $session_password);
213
+    // on arrive ici si on ne s'est pas identifie avec un SSO
214
+    if (!is_array($auteur)) {
215
+        $erreurs = array();
216
+        if (is_string($auteur) and strlen($auteur)) {
217
+            $erreurs['var_login'] = $auteur;
218
+        }
219
+        include_spip('inc/cookie');
220
+        spip_setcookie('spip_admin', '', time() - 3600);
221
+        if (strlen($session_password)) {
222
+            $erreurs['password'] = _T('login_erreur_pass');
223
+        } else {
224
+            // sinon c'est un login en deux passe old style (ou js en panne)
225
+            // pas de message d'erreur
226
+            $erreurs['password'] = ' ';
227
+        }
228
+
229
+        return
230
+            $erreurs;
231
+    }
232
+    // on a ete authentifie, construire la session
233
+    // en gerant la duree demandee pour son cookie
234
+    if ($session_remember !== null) {
235
+        $auteur['cookie'] = $session_remember;
236
+    }
237
+    // si la connexion est refusee on renvoi un message erreur de mot de passe
238
+    // car en donnant plus de detail on renseignerait un assaillant sur l'existence d'un compte
239
+    if (auth_loger($auteur) === false) {
240
+        $erreurs['message_erreur'] = _T('login_erreur_pass');
241
+        return $erreurs;
242
+    }
243
+
244
+    return (is_null($prive) ? is_url_prive($cible) : $prive)
245
+        ? login_autoriser() : array();
246 246
 }
247 247
 
248 248
 /**
@@ -257,21 +257,21 @@  discard block
 block discarded – undo
257 257
  *     - tableau vide sinon.
258 258
  **/
259 259
 function login_autoriser() {
260
-	include_spip('inc/autoriser');
261
-	if (!autoriser('ecrire')) {
262
-		$h = generer_url_action('logout', 'logout=prive&url=' . urlencode(self()));
263
-
264
-		return array(
265
-			'message_erreur' => '<h1>'
266
-				. _T('avis_erreur_visiteur')
267
-				. '</h1><p>'
268
-				. _T('texte_erreur_visiteur')
269
-				. "</p><p class='retour'>[<a href='$h'>"
270
-				. _T('icone_deconnecter') . '</a>]</p>'
271
-		);
272
-	}
273
-
274
-	return array();
260
+    include_spip('inc/autoriser');
261
+    if (!autoriser('ecrire')) {
262
+        $h = generer_url_action('logout', 'logout=prive&url=' . urlencode(self()));
263
+
264
+        return array(
265
+            'message_erreur' => '<h1>'
266
+                . _T('avis_erreur_visiteur')
267
+                . '</h1><p>'
268
+                . _T('texte_erreur_visiteur')
269
+                . "</p><p class='retour'>[<a href='$h'>"
270
+                . _T('icone_deconnecter') . '</a>]</p>'
271
+        );
272
+    }
273
+
274
+    return array();
275 275
 }
276 276
 
277 277
 /**
@@ -293,44 +293,44 @@  discard block
 block discarded – undo
293 293
  *     Retours du traitement
294 294
  **/
295 295
 function formulaires_login_traiter_dist($cible = '', $login = '', $prive = null) {
296
-	$res = array();
297
-	// Si on se connecte dans l'espace prive,
298
-	// ajouter "bonjour" (repere a peu pres les cookies desactives)
299
-	if (is_null($prive) ? is_url_prive($cible) : $prive) {
300
-		$cible = parametre_url($cible, 'bonjour', 'oui', '&');
301
-	}
302
-	if ($cible == '@page_auteur') {
303
-		$cible = generer_url_entite($GLOBALS['auteur_session']['id_auteur'], 'auteur');
304
-	}
305
-
306
-	if ($cible) {
307
-		$cible = parametre_url($cible, 'var_login', '', '&');
308
-
309
-		// transformer la cible absolue en cible relative
310
-		// pour pas echouer quand la meta adresse_site est foireuse
311
-		if (strncmp($cible, $u = url_de_base(), strlen($u)) == 0) {
312
-			$cible = './' . substr($cible, strlen($u));
313
-		} elseif (tester_url_absolue($cible) and !defined('_AUTORISER_LOGIN_ABS_REDIRECT')) {
314
-			// si c'est une url absolue, refuser la redirection
315
-			// sauf si cette securite est levee volontairement par le webmestre
316
-			$cible = '';
317
-		}
318
-	}
319
-
320
-	// Si on est connecte, envoyer vers la destination
321
-	if ($cible and ($cible != self('&')) and ($cible != self())) {
322
-		$res['redirect'] = $cible;
323
-		$res['message_ok'] = inserer_attribut(
324
-			'<a>' . _T('login_par_ici') . '</a>',
325
-			'href',
326
-			$cible
327
-		);
328
-	}
329
-
330
-	// avant de rediriger il faut mettre a jour les sessions sur le disque si on a charge une session
331
-	if (function_exists('terminer_actualiser_sessions')) {
332
-		terminer_actualiser_sessions();
333
-	}
334
-
335
-	return $res;
296
+    $res = array();
297
+    // Si on se connecte dans l'espace prive,
298
+    // ajouter "bonjour" (repere a peu pres les cookies desactives)
299
+    if (is_null($prive) ? is_url_prive($cible) : $prive) {
300
+        $cible = parametre_url($cible, 'bonjour', 'oui', '&');
301
+    }
302
+    if ($cible == '@page_auteur') {
303
+        $cible = generer_url_entite($GLOBALS['auteur_session']['id_auteur'], 'auteur');
304
+    }
305
+
306
+    if ($cible) {
307
+        $cible = parametre_url($cible, 'var_login', '', '&');
308
+
309
+        // transformer la cible absolue en cible relative
310
+        // pour pas echouer quand la meta adresse_site est foireuse
311
+        if (strncmp($cible, $u = url_de_base(), strlen($u)) == 0) {
312
+            $cible = './' . substr($cible, strlen($u));
313
+        } elseif (tester_url_absolue($cible) and !defined('_AUTORISER_LOGIN_ABS_REDIRECT')) {
314
+            // si c'est une url absolue, refuser la redirection
315
+            // sauf si cette securite est levee volontairement par le webmestre
316
+            $cible = '';
317
+        }
318
+    }
319
+
320
+    // Si on est connecte, envoyer vers la destination
321
+    if ($cible and ($cible != self('&')) and ($cible != self())) {
322
+        $res['redirect'] = $cible;
323
+        $res['message_ok'] = inserer_attribut(
324
+            '<a>' . _T('login_par_ici') . '</a>',
325
+            'href',
326
+            $cible
327
+        );
328
+    }
329
+
330
+    // avant de rediriger il faut mettre a jour les sessions sur le disque si on a charge une session
331
+    if (function_exists('terminer_actualiser_sessions')) {
332
+        terminer_actualiser_sessions();
333
+    }
334
+
335
+    return $res;
336 336
 }
Please login to merge, or discard this patch.
ecrire/inc/session.php 2 patches
Indentation   +435 added lines, -435 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
 
@@ -40,15 +40,15 @@  discard block
 block discarded – undo
40 40
  * @return bool|null|void
41 41
  */
42 42
 function inc_session_dist($auteur = false) {
43
-	if (is_numeric($auteur)) {
44
-		return supprimer_sessions($auteur, $auteur > 0);
45
-	} else {
46
-		if (is_array($auteur)) {
47
-			return ajouter_session($auteur);
48
-		} else {
49
-			return verifier_session($auteur);
50
-		}
51
-	}
43
+    if (is_numeric($auteur)) {
44
+        return supprimer_sessions($auteur, $auteur > 0);
45
+    } else {
46
+        if (is_array($auteur)) {
47
+            return ajouter_session($auteur);
48
+        } else {
49
+            return verifier_session($auteur);
50
+        }
51
+    }
52 52
 }
53 53
 
54 54
 
@@ -77,26 +77,26 @@  discard block
 block discarded – undo
77 77
  */
78 78
 function supprimer_sessions($id_auteur, $toutes = true, $actives = true) {
79 79
 
80
-	spip_log("supprimer sessions auteur $id_auteur", "session");
81
-	if ($toutes or $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) {
82
-		if ($dir = opendir(_DIR_SESSIONS)) {
83
-			$t = time() - (4 * _RENOUVELLE_ALEA);
84
-			while (($f = readdir($dir)) !== false) {
85
-				if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)) {
86
-					$f = _DIR_SESSIONS . $f;
87
-					if (($actives and $regs[1] == $id_auteur) or ($t > filemtime($f))) {
88
-						spip_unlink($f);
89
-					}
90
-				}
91
-			}
92
-		}
93
-	} else {
94
-		verifier_session();
95
-		spip_unlink(fichier_session('alea_ephemere', true));
96
-	}
97
-
98
-	// forcer le recalcul de la session courante
99
-	spip_session(true);
80
+    spip_log("supprimer sessions auteur $id_auteur", "session");
81
+    if ($toutes or $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) {
82
+        if ($dir = opendir(_DIR_SESSIONS)) {
83
+            $t = time() - (4 * _RENOUVELLE_ALEA);
84
+            while (($f = readdir($dir)) !== false) {
85
+                if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)) {
86
+                    $f = _DIR_SESSIONS . $f;
87
+                    if (($actives and $regs[1] == $id_auteur) or ($t > filemtime($f))) {
88
+                        spip_unlink($f);
89
+                    }
90
+                }
91
+            }
92
+        }
93
+    } else {
94
+        verifier_session();
95
+        spip_unlink(fichier_session('alea_ephemere', true));
96
+    }
97
+
98
+    // forcer le recalcul de la session courante
99
+    spip_session(true);
100 100
 }
101 101
 
102 102
 /**
@@ -114,116 +114,116 @@  discard block
 block discarded – undo
114 114
  * @return bool|string
115 115
  */
116 116
 function ajouter_session($auteur) {
117
-	// Si le client a deja une session valide pour son id_auteur
118
-	// on conserve le meme fichier
119
-
120
-	// Attention un visiteur peut avoir une session et un id=0,
121
-	// => ne pas melanger les sessions des differents visiteurs
122
-	$id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
123
-
124
-	// Si ce n'est pas un inscrit (les inscrits ont toujours des choses en session)
125
-	// on va vérifier s'il y a vraiment des choses à écrire
126
-	if (!$id_auteur) {
127
-		// On supprime les données de base pour voir le contenu réel de la session
128
-		$auteur_verif = $auteur;
129
-		if (isset($auteur_verif['id_auteur'])) {
130
-			unset($auteur_verif['id_auteur']);
131
-		}
132
-		if (isset($auteur_verif['hash_env'])) {
133
-			unset($auteur_verif['hash_env']);
134
-		}
135
-		if (isset($auteur_verif['ip_change'])) {
136
-			unset($auteur_verif['ip_change']);
137
-		}
138
-		if (isset($auteur_verif['date_session'])) {
139
-			unset($auteur_verif['date_session']);
140
-		}
141
-
142
-		// Les variables vraiment nulle ne sont pas à prendre en compte non plus
143
-		foreach ($auteur_verif as $variable => $valeur) {
144
-			if ($valeur === null) {
145
-				unset($auteur_verif[$variable]);
146
-			}
147
-		}
148
-
149
-		// Si après ça la session est vide alors on supprime l'éventuel fichier et on arrête là
150
-		if (!$auteur_verif) {
151
-			if (isset($_COOKIE['spip_session']) and isset($_SESSION[$_COOKIE['spip_session']])) {
152
-				unset($_SESSION[$_COOKIE['spip_session']]);
153
-			}
154
-			if (isset($_COOKIE['spip_session'])) {
155
-				unset($_COOKIE['spip_session']);
156
-			}
157
-
158
-			return false;
159
-		}
160
-	}
161
-
162
-	if (!isset($_COOKIE['spip_session'])
163
-		or !preg_match(',^' . $id_auteur . '_,', $_COOKIE['spip_session'])
164
-	) {
165
-		$_COOKIE['spip_session'] = $id_auteur . '_' . md5(uniqid(rand(), true));
166
-	}
167
-
168
-	// Maintenant on sait qu'on a des choses à écrire
169
-	// On s'assure d'avoir au moins ces valeurs
170
-	$auteur['id_auteur'] = $id_auteur;
171
-	if (!isset($auteur['hash_env'])) {
172
-		$auteur['hash_env'] = hash_env();
173
-	}
174
-	if (!isset($auteur['ip_change'])) {
175
-		$auteur['ip_change'] = false;
176
-	}
177
-
178
-	if (!isset($auteur['date_session'])) {
179
-		$auteur['date_session'] = time();
180
-	}
181
-	if (isset($auteur['prefs'])
182
-		and is_string($auteur['prefs'])
183
-	  and $prefs = @unserialize($auteur['prefs'])) {
184
-		$auteur['prefs'] = $prefs;
185
-	}
186
-
187
-	$fichier_session = "";
188
-
189
-	// les sessions anonymes sont stockees dans $_SESSION
190
-	if (!$id_auteur) {
191
-		spip_php_session_start();
192
-		$_SESSION[$_COOKIE['spip_session']] = preparer_ecriture_session($auteur);
193
-	} else {
194
-		$fichier_session = fichier_session('alea_ephemere');
195
-		if (!ecrire_fichier_session($fichier_session, $auteur)) {
196
-			spip_log('Echec ecriture fichier session ' . $fichier_session, "session" . _LOG_HS);
197
-			include_spip('inc/minipres');
198
-			echo minipres();
199
-			exit;
200
-		}
201
-		// verifier et limiter le nombre maxi de sessions
202
-		// https://core.spip.net/issues/3807
203
-		lister_sessions_auteur($id_auteur);
204
-	}
205
-
206
-	// poser le cookie de session SPIP
207
-	include_spip('inc/cookie');
208
-	$duree = definir_duree_cookie_session($auteur);
209
-	spip_setcookie( 'spip_session', $_COOKIE['spip_session'], time() + $duree);
210
-	spip_log("ajoute session $fichier_session cookie $duree", "session");
211
-
212
-	// Si on est admin, poser le cookie de correspondance
213
-	if (!function_exists('autoriser')) {
214
-		include_spip('inc/autoriser');
215
-	}
216
-	if (autoriser('ecrire','','',$auteur) and _DUREE_COOKIE_ADMIN) {
217
-		spip_setcookie('spip_admin', '@' . ($auteur['email'] ?: $auteur['login']), time() + max(_DUREE_COOKIE_ADMIN, $duree));
218
-	} // sinon le supprimer ...
219
-	else {
220
-		spip_setcookie('spip_admin', '', 1);
221
-	}
222
-
223
-	# on en profite pour purger les vieilles sessions anonymes abandonnees
224
-	# supprimer_sessions(0, true, false);
225
-
226
-	return $_COOKIE['spip_session'];
117
+    // Si le client a deja une session valide pour son id_auteur
118
+    // on conserve le meme fichier
119
+
120
+    // Attention un visiteur peut avoir une session et un id=0,
121
+    // => ne pas melanger les sessions des differents visiteurs
122
+    $id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
123
+
124
+    // Si ce n'est pas un inscrit (les inscrits ont toujours des choses en session)
125
+    // on va vérifier s'il y a vraiment des choses à écrire
126
+    if (!$id_auteur) {
127
+        // On supprime les données de base pour voir le contenu réel de la session
128
+        $auteur_verif = $auteur;
129
+        if (isset($auteur_verif['id_auteur'])) {
130
+            unset($auteur_verif['id_auteur']);
131
+        }
132
+        if (isset($auteur_verif['hash_env'])) {
133
+            unset($auteur_verif['hash_env']);
134
+        }
135
+        if (isset($auteur_verif['ip_change'])) {
136
+            unset($auteur_verif['ip_change']);
137
+        }
138
+        if (isset($auteur_verif['date_session'])) {
139
+            unset($auteur_verif['date_session']);
140
+        }
141
+
142
+        // Les variables vraiment nulle ne sont pas à prendre en compte non plus
143
+        foreach ($auteur_verif as $variable => $valeur) {
144
+            if ($valeur === null) {
145
+                unset($auteur_verif[$variable]);
146
+            }
147
+        }
148
+
149
+        // Si après ça la session est vide alors on supprime l'éventuel fichier et on arrête là
150
+        if (!$auteur_verif) {
151
+            if (isset($_COOKIE['spip_session']) and isset($_SESSION[$_COOKIE['spip_session']])) {
152
+                unset($_SESSION[$_COOKIE['spip_session']]);
153
+            }
154
+            if (isset($_COOKIE['spip_session'])) {
155
+                unset($_COOKIE['spip_session']);
156
+            }
157
+
158
+            return false;
159
+        }
160
+    }
161
+
162
+    if (!isset($_COOKIE['spip_session'])
163
+        or !preg_match(',^' . $id_auteur . '_,', $_COOKIE['spip_session'])
164
+    ) {
165
+        $_COOKIE['spip_session'] = $id_auteur . '_' . md5(uniqid(rand(), true));
166
+    }
167
+
168
+    // Maintenant on sait qu'on a des choses à écrire
169
+    // On s'assure d'avoir au moins ces valeurs
170
+    $auteur['id_auteur'] = $id_auteur;
171
+    if (!isset($auteur['hash_env'])) {
172
+        $auteur['hash_env'] = hash_env();
173
+    }
174
+    if (!isset($auteur['ip_change'])) {
175
+        $auteur['ip_change'] = false;
176
+    }
177
+
178
+    if (!isset($auteur['date_session'])) {
179
+        $auteur['date_session'] = time();
180
+    }
181
+    if (isset($auteur['prefs'])
182
+        and is_string($auteur['prefs'])
183
+      and $prefs = @unserialize($auteur['prefs'])) {
184
+        $auteur['prefs'] = $prefs;
185
+    }
186
+
187
+    $fichier_session = "";
188
+
189
+    // les sessions anonymes sont stockees dans $_SESSION
190
+    if (!$id_auteur) {
191
+        spip_php_session_start();
192
+        $_SESSION[$_COOKIE['spip_session']] = preparer_ecriture_session($auteur);
193
+    } else {
194
+        $fichier_session = fichier_session('alea_ephemere');
195
+        if (!ecrire_fichier_session($fichier_session, $auteur)) {
196
+            spip_log('Echec ecriture fichier session ' . $fichier_session, "session" . _LOG_HS);
197
+            include_spip('inc/minipres');
198
+            echo minipres();
199
+            exit;
200
+        }
201
+        // verifier et limiter le nombre maxi de sessions
202
+        // https://core.spip.net/issues/3807
203
+        lister_sessions_auteur($id_auteur);
204
+    }
205
+
206
+    // poser le cookie de session SPIP
207
+    include_spip('inc/cookie');
208
+    $duree = definir_duree_cookie_session($auteur);
209
+    spip_setcookie( 'spip_session', $_COOKIE['spip_session'], time() + $duree);
210
+    spip_log("ajoute session $fichier_session cookie $duree", "session");
211
+
212
+    // Si on est admin, poser le cookie de correspondance
213
+    if (!function_exists('autoriser')) {
214
+        include_spip('inc/autoriser');
215
+    }
216
+    if (autoriser('ecrire','','',$auteur) and _DUREE_COOKIE_ADMIN) {
217
+        spip_setcookie('spip_admin', '@' . ($auteur['email'] ?: $auteur['login']), time() + max(_DUREE_COOKIE_ADMIN, $duree));
218
+    } // sinon le supprimer ...
219
+    else {
220
+        spip_setcookie('spip_admin', '', 1);
221
+    }
222
+
223
+    # on en profite pour purger les vieilles sessions anonymes abandonnees
224
+    # supprimer_sessions(0, true, false);
225
+
226
+    return $_COOKIE['spip_session'];
227 227
 }
228 228
 
229 229
 /**
@@ -243,15 +243,15 @@  discard block
 block discarded – undo
243 243
  *     Durée en secondes
244 244
 **/
245 245
 function definir_duree_cookie_session($auteur) {
246
-	$coef = 2;
247
-	if (isset($auteur['cookie'])) {
248
-		if (is_numeric($auteur['cookie'])) {
249
-			$coef = $auteur['cookie'];
250
-		} else {
251
-			$coef = 20;
252
-		}
253
-	}
254
-	return (int)(_RENOUVELLE_ALEA * $coef);
246
+    $coef = 2;
247
+    if (isset($auteur['cookie'])) {
248
+        if (is_numeric($auteur['cookie'])) {
249
+            $coef = $auteur['cookie'];
250
+        } else {
251
+            $coef = 20;
252
+        }
253
+    }
254
+    return (int)(_RENOUVELLE_ALEA * $coef);
255 255
 }
256 256
 
257 257
 /**
@@ -271,90 +271,90 @@  discard block
 block discarded – undo
271 271
  * @return bool|int|null
272 272
  */
273 273
 function verifier_session($change = false) {
274
-	// si pas de cookie, c'est fichu
275
-	if (!isset($_COOKIE['spip_session'])) {
276
-		return false;
277
-	}
278
-
279
-	$fichier_session = "";
280
-
281
-	// est-ce une session anonyme ?
282
-	if (!intval($_COOKIE['spip_session'])) {
283
-		spip_php_session_start();
284
-		if (!isset($_SESSION[$_COOKIE['spip_session']]) or !is_array($_SESSION[$_COOKIE['spip_session']])) {
285
-			return false;
286
-		}
287
-		$GLOBALS['visiteur_session'] = $_SESSION[$_COOKIE['spip_session']];
288
-	} else {
289
-		// Tester avec alea courant
290
-		$fichier_session = fichier_session('alea_ephemere', true);
291
-		if ($fichier_session and @file_exists($fichier_session)) {
292
-			include($fichier_session);
293
-		} else {
294
-			// Sinon, tester avec alea precedent
295
-			$fichier_session = fichier_session('alea_ephemere_ancien', true);
296
-			if (!$fichier_session or !@file_exists($fichier_session)) {
297
-				return false;
298
-			}
299
-
300
-			// Renouveler la session avec l'alea courant
301
-			include($fichier_session);
302
-			spip_log('renouvelle session ' . $GLOBALS['visiteur_session']['id_auteur'], "session");
303
-			spip_unlink($fichier_session);
304
-			ajouter_session($GLOBALS['visiteur_session']);
305
-		}
306
-	}
307
-
308
-	// Compatibilite ascendante : auteur_session est visiteur_session si
309
-	// c'est un auteur SPIP authentifie (tandis qu'un visiteur_session peut
310
-	// n'etre qu'identifie, sans aucune authentification).
311
-
312
-	if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur']) {
313
-		$GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
314
-	}
315
-
316
-
317
-	// Si l'adresse IP change, inc/presentation mettra une balise image
318
-	// avec un URL de rappel demandant a changer le nom de la session.
319
-	// Seul celui qui a l'IP d'origine est rejoue
320
-	// ainsi un eventuel voleur de cookie ne pourrait pas deconnecter
321
-	// sa victime, mais se ferait deconnecter par elle.
322
-	if (hash_env() != $GLOBALS['visiteur_session']['hash_env']) {
323
-		if (!$GLOBALS['visiteur_session']['ip_change']) {
324
-			define('_SESSION_REJOUER', true);
325
-			$GLOBALS['visiteur_session']['ip_change'] = true;
326
-			ajouter_session($GLOBALS['visiteur_session']);
327
-		} else {
328
-			if ($change) {
329
-				spip_log("session non rejouee, vol de cookie ?", "session");
330
-			}
331
-		}
332
-	} else {
333
-		if ($change) {
334
-			spip_log("rejoue session $fichier_session " . $_COOKIE['spip_session'], "session");
335
-			if ($fichier_session) {
336
-				spip_unlink($fichier_session);
337
-			}
338
-			$GLOBALS['visiteur_session']['ip_change'] = false;
339
-			unset($_COOKIE['spip_session']);
340
-			ajouter_session($GLOBALS['visiteur_session']);
341
-		}
342
-	}
343
-
344
-	// Si la session a ete initiee il y a trop longtemps, elle est annulee
345
-	if (isset($GLOBALS['visiteur_session'])
346
-		and defined('_AGE_SESSION_MAX')
347
-		and _AGE_SESSION_MAX > 0
348
-		and time() - @$GLOBALS['visiteur_session']['date_session'] > _AGE_SESSION_MAX
349
-	) {
350
-		unset($GLOBALS['visiteur_session']);
351
-
352
-		return false;
353
-	}
354
-
355
-	return is_numeric($GLOBALS['visiteur_session']['id_auteur'])
356
-		? $GLOBALS['visiteur_session']['id_auteur']
357
-		: null;
274
+    // si pas de cookie, c'est fichu
275
+    if (!isset($_COOKIE['spip_session'])) {
276
+        return false;
277
+    }
278
+
279
+    $fichier_session = "";
280
+
281
+    // est-ce une session anonyme ?
282
+    if (!intval($_COOKIE['spip_session'])) {
283
+        spip_php_session_start();
284
+        if (!isset($_SESSION[$_COOKIE['spip_session']]) or !is_array($_SESSION[$_COOKIE['spip_session']])) {
285
+            return false;
286
+        }
287
+        $GLOBALS['visiteur_session'] = $_SESSION[$_COOKIE['spip_session']];
288
+    } else {
289
+        // Tester avec alea courant
290
+        $fichier_session = fichier_session('alea_ephemere', true);
291
+        if ($fichier_session and @file_exists($fichier_session)) {
292
+            include($fichier_session);
293
+        } else {
294
+            // Sinon, tester avec alea precedent
295
+            $fichier_session = fichier_session('alea_ephemere_ancien', true);
296
+            if (!$fichier_session or !@file_exists($fichier_session)) {
297
+                return false;
298
+            }
299
+
300
+            // Renouveler la session avec l'alea courant
301
+            include($fichier_session);
302
+            spip_log('renouvelle session ' . $GLOBALS['visiteur_session']['id_auteur'], "session");
303
+            spip_unlink($fichier_session);
304
+            ajouter_session($GLOBALS['visiteur_session']);
305
+        }
306
+    }
307
+
308
+    // Compatibilite ascendante : auteur_session est visiteur_session si
309
+    // c'est un auteur SPIP authentifie (tandis qu'un visiteur_session peut
310
+    // n'etre qu'identifie, sans aucune authentification).
311
+
312
+    if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur']) {
313
+        $GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
314
+    }
315
+
316
+
317
+    // Si l'adresse IP change, inc/presentation mettra une balise image
318
+    // avec un URL de rappel demandant a changer le nom de la session.
319
+    // Seul celui qui a l'IP d'origine est rejoue
320
+    // ainsi un eventuel voleur de cookie ne pourrait pas deconnecter
321
+    // sa victime, mais se ferait deconnecter par elle.
322
+    if (hash_env() != $GLOBALS['visiteur_session']['hash_env']) {
323
+        if (!$GLOBALS['visiteur_session']['ip_change']) {
324
+            define('_SESSION_REJOUER', true);
325
+            $GLOBALS['visiteur_session']['ip_change'] = true;
326
+            ajouter_session($GLOBALS['visiteur_session']);
327
+        } else {
328
+            if ($change) {
329
+                spip_log("session non rejouee, vol de cookie ?", "session");
330
+            }
331
+        }
332
+    } else {
333
+        if ($change) {
334
+            spip_log("rejoue session $fichier_session " . $_COOKIE['spip_session'], "session");
335
+            if ($fichier_session) {
336
+                spip_unlink($fichier_session);
337
+            }
338
+            $GLOBALS['visiteur_session']['ip_change'] = false;
339
+            unset($_COOKIE['spip_session']);
340
+            ajouter_session($GLOBALS['visiteur_session']);
341
+        }
342
+    }
343
+
344
+    // Si la session a ete initiee il y a trop longtemps, elle est annulee
345
+    if (isset($GLOBALS['visiteur_session'])
346
+        and defined('_AGE_SESSION_MAX')
347
+        and _AGE_SESSION_MAX > 0
348
+        and time() - @$GLOBALS['visiteur_session']['date_session'] > _AGE_SESSION_MAX
349
+    ) {
350
+        unset($GLOBALS['visiteur_session']);
351
+
352
+        return false;
353
+    }
354
+
355
+    return is_numeric($GLOBALS['visiteur_session']['id_auteur'])
356
+        ? $GLOBALS['visiteur_session']['id_auteur']
357
+        : null;
358 358
 }
359 359
 
360 360
 /**
@@ -369,7 +369,7 @@  discard block
 block discarded – undo
369 369
  *     Valeur, si trouvée, `null` sinon.
370 370
  */
371 371
 function session_get($nom) {
372
-	return isset($GLOBALS['visiteur_session'][$nom]) ? $GLOBALS['visiteur_session'][$nom] : null;
372
+    return isset($GLOBALS['visiteur_session'][$nom]) ? $GLOBALS['visiteur_session'][$nom] : null;
373 373
 }
374 374
 
375 375
 
@@ -385,32 +385,32 @@  discard block
 block discarded – undo
385 385
  * @return void|array
386 386
  */
387 387
 function session_set($nom, $val = null) {
388
-	static $remove = array();
389
-	static $actualiser_sessions = false;
390
-	if ($nom === false) {
391
-		return $remove;
392
-	}
393
-	if (is_null($val)) {
394
-		// rien a faire
395
-		if (!isset($GLOBALS['visiteur_session'][$nom])) {
396
-			return;
397
-		}
398
-		unset($GLOBALS['visiteur_session'][$nom]);
399
-		$remove[] = $nom;
400
-	} else {
401
-		// On ajoute la valeur dans la globale
402
-		$GLOBALS['visiteur_session'][$nom] = $val;
403
-		if ($remove) {
404
-			$remove = array_diff($remove, array($nom));
405
-		}
406
-	}
407
-	if (!$actualiser_sessions) {
408
-		// il faut creer la session si on en a pas, la premiere fois
409
-		ajouter_session($GLOBALS['visiteur_session']);
410
-		// in register la fonction qui mettra a jour toutes les sessions en fin de hit
411
-		register_shutdown_function('terminer_actualiser_sessions');
412
-		$actualiser_sessions = true;
413
-	}
388
+    static $remove = array();
389
+    static $actualiser_sessions = false;
390
+    if ($nom === false) {
391
+        return $remove;
392
+    }
393
+    if (is_null($val)) {
394
+        // rien a faire
395
+        if (!isset($GLOBALS['visiteur_session'][$nom])) {
396
+            return;
397
+        }
398
+        unset($GLOBALS['visiteur_session'][$nom]);
399
+        $remove[] = $nom;
400
+    } else {
401
+        // On ajoute la valeur dans la globale
402
+        $GLOBALS['visiteur_session'][$nom] = $val;
403
+        if ($remove) {
404
+            $remove = array_diff($remove, array($nom));
405
+        }
406
+    }
407
+    if (!$actualiser_sessions) {
408
+        // il faut creer la session si on en a pas, la premiere fois
409
+        ajouter_session($GLOBALS['visiteur_session']);
410
+        // in register la fonction qui mettra a jour toutes les sessions en fin de hit
411
+        register_shutdown_function('terminer_actualiser_sessions');
412
+        $actualiser_sessions = true;
413
+    }
414 414
 }
415 415
 
416 416
 /**
@@ -419,12 +419,12 @@  discard block
 block discarded – undo
419 419
  * @uses actualiser_sessions()
420 420
  */
421 421
 function terminer_actualiser_sessions() {
422
-	// se remettre dans le dossier de travail au cas ou Apache a change
423
-	chdir(_ROOT_CWD);
424
-	// recuperer les variables a effacer
425
-	$remove = session_set(false);
426
-	// mettre a jour toutes les sessions
427
-	actualiser_sessions($GLOBALS['visiteur_session'], $remove);
422
+    // se remettre dans le dossier de travail au cas ou Apache a change
423
+    chdir(_ROOT_CWD);
424
+    // recuperer les variables a effacer
425
+    $remove = session_set(false);
426
+    // mettre a jour toutes les sessions
427
+    actualiser_sessions($GLOBALS['visiteur_session'], $remove);
428 428
 }
429 429
 
430 430
 
@@ -449,78 +449,78 @@  discard block
 block discarded – undo
449 449
  */
450 450
 function actualiser_sessions($auteur, $supprimer_cles = array()) {
451 451
 
452
-	$id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
453
-	$id_auteur_courant = isset($GLOBALS['visiteur_session']['id_auteur']) ? intval($GLOBALS['visiteur_session']['id_auteur']) : 0;
454
-
455
-	// si l'auteur est celui de la session courante, verifier/creer la session si besoin
456
-	$fichier_session_courante = "";
457
-	if ($id_auteur == $id_auteur_courant) {
458
-		$auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
459
-		ajouter_session($auteur);
460
-		if ($id_auteur) {
461
-			$fichier_session_courante = fichier_session('alea_ephemere');
462
-		}
463
-	}
464
-
465
-	// si session anonyme on ne fait rien d'autre ici : les sessions anonymes sont non partagees
466
-	if (!$id_auteur) {
467
-		return;
468
-	}
469
-
470
-	// les préférences sont désérialisées, toujours.
471
-	if (isset($auteur['prefs']) and is_string($auteur['prefs'])) {
472
-		$auteur['prefs'] = unserialize($auteur['prefs']);
473
-	}
474
-
475
-	// memoriser l'auteur courant (celui qui modifie la fiche)
476
-	$sauve = $GLOBALS['visiteur_session'];
477
-
478
-	// .. mettre a jour les sessions de l'auteur cible
479
-	// attention au $ final pour ne pas risquer d'embarquer un .php.jeton temporaire
480
-	// cree par une ecriture concurente d'une session (fichier atomique temporaire)
481
-	$sessions = lister_sessions_auteur($id_auteur);
482
-
483
-	// 1ere passe : lire et fusionner les sessions
484
-	foreach ($sessions as $session) {
485
-		$GLOBALS['visiteur_session'] = array();
486
-		// a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
487
-		if ($session !== $fichier_session_courante
488
-			and @file_exists($session)
489
-		) {
490
-			include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
491
-
492
-			$auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
493
-		}
494
-	}
495
-
496
-	// supprimer les eventuelles cles dont on ne veut plus
497
-	foreach ($supprimer_cles as $cle) {
498
-		unset($auteur[$cle]);
499
-	}
500
-
501
-	$auteur_session = preparer_ecriture_session($auteur);
502
-
503
-	// seconde passe : ecrire les sessions qui ne sont pas a jour
504
-	foreach ($sessions as $session) {
505
-		$GLOBALS['visiteur_session'] = array();
506
-		// a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
507
-		if (@file_exists($session)) {
508
-			include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
509
-
510
-			// est-ce que cette session est a mettre a jour ?
511
-			if ($auteur_session != $GLOBALS['visiteur_session']) {
512
-				ecrire_fichier_session($session, $auteur);
513
-			}
514
-		}
515
-	}
516
-
517
-	if ($id_auteur == $id_auteur_courant) {
518
-		$GLOBALS['visiteur_session'] = $auteur;
519
-		$GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
520
-	} else {
521
-		// restaurer l'auteur courant
522
-		$GLOBALS['visiteur_session'] = $sauve;
523
-	}
452
+    $id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
453
+    $id_auteur_courant = isset($GLOBALS['visiteur_session']['id_auteur']) ? intval($GLOBALS['visiteur_session']['id_auteur']) : 0;
454
+
455
+    // si l'auteur est celui de la session courante, verifier/creer la session si besoin
456
+    $fichier_session_courante = "";
457
+    if ($id_auteur == $id_auteur_courant) {
458
+        $auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
459
+        ajouter_session($auteur);
460
+        if ($id_auteur) {
461
+            $fichier_session_courante = fichier_session('alea_ephemere');
462
+        }
463
+    }
464
+
465
+    // si session anonyme on ne fait rien d'autre ici : les sessions anonymes sont non partagees
466
+    if (!$id_auteur) {
467
+        return;
468
+    }
469
+
470
+    // les préférences sont désérialisées, toujours.
471
+    if (isset($auteur['prefs']) and is_string($auteur['prefs'])) {
472
+        $auteur['prefs'] = unserialize($auteur['prefs']);
473
+    }
474
+
475
+    // memoriser l'auteur courant (celui qui modifie la fiche)
476
+    $sauve = $GLOBALS['visiteur_session'];
477
+
478
+    // .. mettre a jour les sessions de l'auteur cible
479
+    // attention au $ final pour ne pas risquer d'embarquer un .php.jeton temporaire
480
+    // cree par une ecriture concurente d'une session (fichier atomique temporaire)
481
+    $sessions = lister_sessions_auteur($id_auteur);
482
+
483
+    // 1ere passe : lire et fusionner les sessions
484
+    foreach ($sessions as $session) {
485
+        $GLOBALS['visiteur_session'] = array();
486
+        // a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
487
+        if ($session !== $fichier_session_courante
488
+            and @file_exists($session)
489
+        ) {
490
+            include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
491
+
492
+            $auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
493
+        }
494
+    }
495
+
496
+    // supprimer les eventuelles cles dont on ne veut plus
497
+    foreach ($supprimer_cles as $cle) {
498
+        unset($auteur[$cle]);
499
+    }
500
+
501
+    $auteur_session = preparer_ecriture_session($auteur);
502
+
503
+    // seconde passe : ecrire les sessions qui ne sont pas a jour
504
+    foreach ($sessions as $session) {
505
+        $GLOBALS['visiteur_session'] = array();
506
+        // a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
507
+        if (@file_exists($session)) {
508
+            include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
509
+
510
+            // est-ce que cette session est a mettre a jour ?
511
+            if ($auteur_session != $GLOBALS['visiteur_session']) {
512
+                ecrire_fichier_session($session, $auteur);
513
+            }
514
+        }
515
+    }
516
+
517
+    if ($id_auteur == $id_auteur_courant) {
518
+        $GLOBALS['visiteur_session'] = $auteur;
519
+        $GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
520
+    } else {
521
+        // restaurer l'auteur courant
522
+        $GLOBALS['visiteur_session'] = $sauve;
523
+    }
524 524
 
525 525
 }
526 526
 
@@ -535,46 +535,46 @@  discard block
 block discarded – undo
535 535
  */
536 536
 function lister_sessions_auteur($id_auteur, $nb_max = null) {
537 537
 
538
-	if (is_null($nb_max)) {
539
-		if (!defined('_NB_SESSIONS_MAX')) {
540
-			define('_NB_SESSIONS_MAX', 100);
541
-		}
542
-		$nb_max = _NB_SESSIONS_MAX;
543
-	}
544
-
545
-	// liste des sessions
546
-	$sessions = preg_files(_DIR_SESSIONS, '/' . $id_auteur . '_.*\.php$');
547
-
548
-	// si on en a plus que la limite, supprimer les plus vieilles
549
-	// si ce ne sont pas des sessions anonymes car elles sont alors chacune differentes
550
-	if ($id_auteur
551
-		and count($sessions) > $nb_max) {
552
-
553
-		// limiter le nombre de sessions ouvertes par un auteur
554
-		// filemtime sur les sessions
555
-		$sessions = array_flip($sessions);
556
-
557
-		// 1ere passe : lire les filemtime
558
-		foreach ($sessions as $session => $z) {
559
-			if ($d = @filemtime($session)
560
-			) {
561
-				$sessions[$session] = $d;
562
-			} else {
563
-				$sessions[$session] = 0;
564
-			}
565
-		}
566
-
567
-		// les plus anciennes en premier
568
-		asort($sessions);
569
-
570
-		$sessions = array_keys($sessions);
571
-		while (count($sessions) > $nb_max) {
572
-			$session = array_shift($sessions);
573
-			@unlink($session);
574
-		}
575
-	}
576
-
577
-	return $sessions;
538
+    if (is_null($nb_max)) {
539
+        if (!defined('_NB_SESSIONS_MAX')) {
540
+            define('_NB_SESSIONS_MAX', 100);
541
+        }
542
+        $nb_max = _NB_SESSIONS_MAX;
543
+    }
544
+
545
+    // liste des sessions
546
+    $sessions = preg_files(_DIR_SESSIONS, '/' . $id_auteur . '_.*\.php$');
547
+
548
+    // si on en a plus que la limite, supprimer les plus vieilles
549
+    // si ce ne sont pas des sessions anonymes car elles sont alors chacune differentes
550
+    if ($id_auteur
551
+        and count($sessions) > $nb_max) {
552
+
553
+        // limiter le nombre de sessions ouvertes par un auteur
554
+        // filemtime sur les sessions
555
+        $sessions = array_flip($sessions);
556
+
557
+        // 1ere passe : lire les filemtime
558
+        foreach ($sessions as $session => $z) {
559
+            if ($d = @filemtime($session)
560
+            ) {
561
+                $sessions[$session] = $d;
562
+            } else {
563
+                $sessions[$session] = 0;
564
+            }
565
+        }
566
+
567
+        // les plus anciennes en premier
568
+        asort($sessions);
569
+
570
+        $sessions = array_keys($sessions);
571
+        while (count($sessions) > $nb_max) {
572
+            $session = array_shift($sessions);
573
+            @unlink($session);
574
+        }
575
+    }
576
+
577
+    return $sessions;
578 578
 }
579 579
 
580 580
 
@@ -588,26 +588,26 @@  discard block
 block discarded – undo
588 588
  * @return array
589 589
  */
590 590
 function preparer_ecriture_session($auteur) {
591
-	$row = $auteur;
592
-
593
-	// ne pas enregistrer ces elements de securite
594
-	// dans le fichier de session
595
-	unset($auteur['pass']);
596
-	unset($auteur['htpass']);
597
-	unset($auteur['low_sec']);
598
-	unset($auteur['alea_actuel']);
599
-	unset($auteur['alea_futur']);
600
-
601
-	$auteur = pipeline('preparer_fichier_session', array('args' => array('row' => $row), 'data' => $auteur));
602
-
603
-	// ne pas enregistrer les valeurs vraiment nulle dans le fichier
604
-	foreach ($auteur as $variable => $valeur) {
605
-		if ($valeur === null) {
606
-			unset($auteur[$variable]);
607
-		}
608
-	}
609
-
610
-	return $auteur;
591
+    $row = $auteur;
592
+
593
+    // ne pas enregistrer ces elements de securite
594
+    // dans le fichier de session
595
+    unset($auteur['pass']);
596
+    unset($auteur['htpass']);
597
+    unset($auteur['low_sec']);
598
+    unset($auteur['alea_actuel']);
599
+    unset($auteur['alea_futur']);
600
+
601
+    $auteur = pipeline('preparer_fichier_session', array('args' => array('row' => $row), 'data' => $auteur));
602
+
603
+    // ne pas enregistrer les valeurs vraiment nulle dans le fichier
604
+    foreach ($auteur as $variable => $valeur) {
605
+        if ($valeur === null) {
606
+            unset($auteur[$variable]);
607
+        }
608
+    }
609
+
610
+    return $auteur;
611 611
 }
612 612
 
613 613
 /**
@@ -619,17 +619,17 @@  discard block
 block discarded – undo
619 619
  */
620 620
 function ecrire_fichier_session($fichier, $auteur) {
621 621
 
622
-	$auteur = preparer_ecriture_session($auteur);
622
+    $auteur = preparer_ecriture_session($auteur);
623 623
 
624
-	// enregistrer les autres donnees du visiteur
625
-	$texte = "<" . "?php\n";
626
-	foreach ($auteur as $var => $val) {
627
-		$texte .= '$GLOBALS[\'visiteur_session\'][' . var_export($var, true) . '] = '
628
-			. var_export($val, true) . ";\n";
629
-	}
630
-	$texte .= "?" . ">\n";
624
+    // enregistrer les autres donnees du visiteur
625
+    $texte = "<" . "?php\n";
626
+    foreach ($auteur as $var => $val) {
627
+        $texte .= '$GLOBALS[\'visiteur_session\'][' . var_export($var, true) . '] = '
628
+            . var_export($val, true) . ";\n";
629
+    }
630
+    $texte .= "?" . ">\n";
631 631
 
632
-	return ecrire_fichier($fichier, $texte);
632
+    return ecrire_fichier($fichier, $texte);
633 633
 }
634 634
 
635 635
 
@@ -642,23 +642,23 @@  discard block
 block discarded – undo
642 642
  */
643 643
 function fichier_session($alea, $tantpis = false) {
644 644
 
645
-	include_spip('inc/acces');
646
-	charger_aleas();
645
+    include_spip('inc/acces');
646
+    charger_aleas();
647 647
 
648
-	if (empty($GLOBALS['meta'][$alea])) {
649
-		if (!$tantpis) {
650
-			spip_log("fichier session ($tantpis): $alea indisponible", "session");
651
-			include_spip('inc/minipres');
652
-			echo minipres();
653
-		}
648
+    if (empty($GLOBALS['meta'][$alea])) {
649
+        if (!$tantpis) {
650
+            spip_log("fichier session ($tantpis): $alea indisponible", "session");
651
+            include_spip('inc/minipres');
652
+            echo minipres();
653
+        }
654 654
 
655
-		return ''; // echec mais $tanpis
656
-	} else {
657
-		$repertoire = sous_repertoire(_DIR_SESSIONS, '', false, $tantpis);
658
-		$c = $_COOKIE['spip_session'];
655
+        return ''; // echec mais $tanpis
656
+    } else {
657
+        $repertoire = sous_repertoire(_DIR_SESSIONS, '', false, $tantpis);
658
+        $c = $_COOKIE['spip_session'];
659 659
 
660
-		return $repertoire . intval($c) . '_' . md5($c . ' ' . $GLOBALS['meta'][$alea]) . '.php';
661
-	}
660
+        return $repertoire . intval($c) . '_' . md5($c . ' ' . $GLOBALS['meta'][$alea]) . '.php';
661
+    }
662 662
 }
663 663
 
664 664
 
@@ -675,7 +675,7 @@  discard block
 block discarded – undo
675 675
  * @return string
676 676
  */
677 677
 function rejouer_session() {
678
-	return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
678
+    return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
679 679
 }
680 680
 
681 681
 
@@ -685,12 +685,12 @@  discard block
 block discarded – undo
685 685
  * @return string
686 686
  */
687 687
 function hash_env() {
688
-	static $res = '';
689
-	if ($res) {
690
-		return $res;
691
-	}
688
+    static $res = '';
689
+    if ($res) {
690
+        return $res;
691
+    }
692 692
 
693
-	return $res = md5($GLOBALS['ip'] . (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
693
+    return $res = md5($GLOBALS['ip'] . (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
694 694
 }
695 695
 
696 696
 
@@ -702,11 +702,11 @@  discard block
 block discarded – undo
702 702
  * @return bool True si une session PHP est ouverte.
703 703
  **/
704 704
 function spip_php_session_start() {
705
-	if (!is_php_session_started()) {
706
-		return session_start();
707
-	}
705
+    if (!is_php_session_started()) {
706
+        return session_start();
707
+    }
708 708
 
709
-	return true;
709
+    return true;
710 710
 }
711 711
 
712 712
 /**
@@ -716,9 +716,9 @@  discard block
 block discarded – undo
716 716
  * @return bool true si une session PHP est active
717 717
  **/
718 718
 function is_php_session_started() {
719
-	if (php_sapi_name() !== 'cli') {
720
-		return session_status() === PHP_SESSION_ACTIVE ? true : false;
721
-	}
719
+    if (php_sapi_name() !== 'cli') {
720
+        return session_status() === PHP_SESSION_ACTIVE ? true : false;
721
+    }
722 722
 
723
-	return false;
723
+    return false;
724 724
 }
Please login to merge, or discard this patch.
Spacing   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -83,7 +83,7 @@  discard block
 block discarded – undo
83 83
 			$t = time() - (4 * _RENOUVELLE_ALEA);
84 84
 			while (($f = readdir($dir)) !== false) {
85 85
 				if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)) {
86
-					$f = _DIR_SESSIONS . $f;
86
+					$f = _DIR_SESSIONS.$f;
87 87
 					if (($actives and $regs[1] == $id_auteur) or ($t > filemtime($f))) {
88 88
 						spip_unlink($f);
89 89
 					}
@@ -160,9 +160,9 @@  discard block
 block discarded – undo
160 160
 	}
161 161
 
162 162
 	if (!isset($_COOKIE['spip_session'])
163
-		or !preg_match(',^' . $id_auteur . '_,', $_COOKIE['spip_session'])
163
+		or !preg_match(',^'.$id_auteur.'_,', $_COOKIE['spip_session'])
164 164
 	) {
165
-		$_COOKIE['spip_session'] = $id_auteur . '_' . md5(uniqid(rand(), true));
165
+		$_COOKIE['spip_session'] = $id_auteur.'_'.md5(uniqid(rand(), true));
166 166
 	}
167 167
 
168 168
 	// Maintenant on sait qu'on a des choses à écrire
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
 	} else {
194 194
 		$fichier_session = fichier_session('alea_ephemere');
195 195
 		if (!ecrire_fichier_session($fichier_session, $auteur)) {
196
-			spip_log('Echec ecriture fichier session ' . $fichier_session, "session" . _LOG_HS);
196
+			spip_log('Echec ecriture fichier session '.$fichier_session, "session"._LOG_HS);
197 197
 			include_spip('inc/minipres');
198 198
 			echo minipres();
199 199
 			exit;
@@ -206,15 +206,15 @@  discard block
 block discarded – undo
206 206
 	// poser le cookie de session SPIP
207 207
 	include_spip('inc/cookie');
208 208
 	$duree = definir_duree_cookie_session($auteur);
209
-	spip_setcookie( 'spip_session', $_COOKIE['spip_session'], time() + $duree);
209
+	spip_setcookie('spip_session', $_COOKIE['spip_session'], time() + $duree);
210 210
 	spip_log("ajoute session $fichier_session cookie $duree", "session");
211 211
 
212 212
 	// Si on est admin, poser le cookie de correspondance
213 213
 	if (!function_exists('autoriser')) {
214 214
 		include_spip('inc/autoriser');
215 215
 	}
216
-	if (autoriser('ecrire','','',$auteur) and _DUREE_COOKIE_ADMIN) {
217
-		spip_setcookie('spip_admin', '@' . ($auteur['email'] ?: $auteur['login']), time() + max(_DUREE_COOKIE_ADMIN, $duree));
216
+	if (autoriser('ecrire', '', '', $auteur) and _DUREE_COOKIE_ADMIN) {
217
+		spip_setcookie('spip_admin', '@'.($auteur['email'] ?: $auteur['login']), time() + max(_DUREE_COOKIE_ADMIN, $duree));
218 218
 	} // sinon le supprimer ...
219 219
 	else {
220 220
 		spip_setcookie('spip_admin', '', 1);
@@ -251,7 +251,7 @@  discard block
 block discarded – undo
251 251
 			$coef = 20;
252 252
 		}
253 253
 	}
254
-	return (int)(_RENOUVELLE_ALEA * $coef);
254
+	return (int) (_RENOUVELLE_ALEA * $coef);
255 255
 }
256 256
 
257 257
 /**
@@ -299,7 +299,7 @@  discard block
 block discarded – undo
299 299
 
300 300
 			// Renouveler la session avec l'alea courant
301 301
 			include($fichier_session);
302
-			spip_log('renouvelle session ' . $GLOBALS['visiteur_session']['id_auteur'], "session");
302
+			spip_log('renouvelle session '.$GLOBALS['visiteur_session']['id_auteur'], "session");
303 303
 			spip_unlink($fichier_session);
304 304
 			ajouter_session($GLOBALS['visiteur_session']);
305 305
 		}
@@ -331,7 +331,7 @@  discard block
 block discarded – undo
331 331
 		}
332 332
 	} else {
333 333
 		if ($change) {
334
-			spip_log("rejoue session $fichier_session " . $_COOKIE['spip_session'], "session");
334
+			spip_log("rejoue session $fichier_session ".$_COOKIE['spip_session'], "session");
335 335
 			if ($fichier_session) {
336 336
 				spip_unlink($fichier_session);
337 337
 			}
@@ -543,7 +543,7 @@  discard block
 block discarded – undo
543 543
 	}
544 544
 
545 545
 	// liste des sessions
546
-	$sessions = preg_files(_DIR_SESSIONS, '/' . $id_auteur . '_.*\.php$');
546
+	$sessions = preg_files(_DIR_SESSIONS, '/'.$id_auteur.'_.*\.php$');
547 547
 
548 548
 	// si on en a plus que la limite, supprimer les plus vieilles
549 549
 	// si ce ne sont pas des sessions anonymes car elles sont alors chacune differentes
@@ -622,12 +622,12 @@  discard block
 block discarded – undo
622 622
 	$auteur = preparer_ecriture_session($auteur);
623 623
 
624 624
 	// enregistrer les autres donnees du visiteur
625
-	$texte = "<" . "?php\n";
625
+	$texte = "<"."?php\n";
626 626
 	foreach ($auteur as $var => $val) {
627
-		$texte .= '$GLOBALS[\'visiteur_session\'][' . var_export($var, true) . '] = '
628
-			. var_export($val, true) . ";\n";
627
+		$texte .= '$GLOBALS[\'visiteur_session\']['.var_export($var, true).'] = '
628
+			. var_export($val, true).";\n";
629 629
 	}
630
-	$texte .= "?" . ">\n";
630
+	$texte .= "?".">\n";
631 631
 
632 632
 	return ecrire_fichier($fichier, $texte);
633 633
 }
@@ -657,7 +657,7 @@  discard block
 block discarded – undo
657 657
 		$repertoire = sous_repertoire(_DIR_SESSIONS, '', false, $tantpis);
658 658
 		$c = $_COOKIE['spip_session'];
659 659
 
660
-		return $repertoire . intval($c) . '_' . md5($c . ' ' . $GLOBALS['meta'][$alea]) . '.php';
660
+		return $repertoire.intval($c).'_'.md5($c.' '.$GLOBALS['meta'][$alea]).'.php';
661 661
 	}
662 662
 }
663 663
 
@@ -675,7 +675,7 @@  discard block
 block discarded – undo
675 675
  * @return string
676 676
  */
677 677
 function rejouer_session() {
678
-	return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
678
+	return '<img src="'.generer_url_action('cookie', 'change_session=oui', true).'" width="0" height="0" alt="" />';
679 679
 }
680 680
 
681 681
 
@@ -690,7 +690,7 @@  discard block
 block discarded – undo
690 690
 		return $res;
691 691
 	}
692 692
 
693
-	return $res = md5($GLOBALS['ip'] . (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
693
+	return $res = md5($GLOBALS['ip'].(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
694 694
 }
695 695
 
696 696
 
Please login to merge, or discard this patch.
ecrire/balise/formulaire_admin.php 2 patches
Indentation   +146 added lines, -146 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
  *     Pile complétée du code compilé
43 43
  **/
44 44
 function balise_FORMULAIRE_ADMIN($p) {
45
-	return calculer_balise_dynamique($p, 'FORMULAIRE_ADMIN', array());
45
+    return calculer_balise_dynamique($p, 'FORMULAIRE_ADMIN', array());
46 46
 }
47 47
 
48 48
 /**
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
  *   - chaîne vide sinon.
60 60
  */
61 61
 function balise_FORMULAIRE_ADMIN_stat($args, $context_compil) {
62
-	return $args;
62
+    return $args;
63 63
 }
64 64
 
65 65
 
@@ -84,66 +84,66 @@  discard block
 block discarded – undo
84 84
  **/
85 85
 function balise_FORMULAIRE_ADMIN_dyn($float = '', $debug = '') {
86 86
 
87
-	static $dejafait = false;
87
+    static $dejafait = false;
88 88
 
89
-	if (empty($_COOKIE['spip_admin'])) {
90
-		return '';
91
-	}
89
+    if (empty($_COOKIE['spip_admin'])) {
90
+        return '';
91
+    }
92 92
 
93
-	if (!is_array($debug)) {
94
-		if ($dejafait) {
95
-			return '';
96
-		}
97
-	} else {
98
-		if ($dejafait) {
99
-			if (empty($debug['sourcefile'])) {
100
-				return '';
101
-			}
102
-			foreach ($debug['sourcefile'] as $k => $v) {
103
-				if (strpos($v, 'administration.') !== false) {
104
-					if (isset($debug['resultat'][$k . 'tout'])) {
105
-						return $debug['resultat'][$k . 'tout'];
106
-					}
107
-				}
108
-			}
93
+    if (!is_array($debug)) {
94
+        if ($dejafait) {
95
+            return '';
96
+        }
97
+    } else {
98
+        if ($dejafait) {
99
+            if (empty($debug['sourcefile'])) {
100
+                return '';
101
+            }
102
+            foreach ($debug['sourcefile'] as $k => $v) {
103
+                if (strpos($v, 'administration.') !== false) {
104
+                    if (isset($debug['resultat'][$k . 'tout'])) {
105
+                        return $debug['resultat'][$k . 'tout'];
106
+                    }
107
+                }
108
+            }
109 109
 
110
-			return '';
111
-		}
112
-	}
110
+            return '';
111
+        }
112
+    }
113 113
 
114
-	include_spip('inc/autoriser');
115
-	include_spip('base/abstract_sql');
114
+    include_spip('inc/autoriser');
115
+    include_spip('base/abstract_sql');
116 116
 
117 117
 
118
-	$dejafait = true;
118
+    $dejafait = true;
119 119
 
120
-	// Preparer le #ENV des boutons
120
+    // Preparer le #ENV des boutons
121 121
 
122
-	$env = admin_objet();
122
+    $env = admin_objet();
123 123
 
124
-	// Pas de "modifier ce..." ? -> donner "acces a l'espace prive"
125
-	if (!$env) {
126
-		$env['ecrire'] = _DIR_RESTREINT_ABS;
127
-	}
124
+    // Pas de "modifier ce..." ? -> donner "acces a l'espace prive"
125
+    if (!$env) {
126
+        $env['ecrire'] = _DIR_RESTREINT_ABS;
127
+    }
128 128
 
129
-	$env['divclass'] = $float;
130
-	$env['lang'] = admin_lang();
131
-	$env['calcul'] = (_request('var_mode') ? 'recalcul' : 'calcul');
132
-	$env['debug'] = ((defined('_VAR_PREVIEW') and _VAR_PREVIEW) ? "" : admin_debug());
133
-	$env['analyser'] = (!$env['debug'] and !$GLOBALS['xhtml']) ? '' : admin_valider();
134
-	$env['inclure'] = ((defined('_VAR_INCLURE') and _VAR_INCLURE) ? 'inclure' : '');
129
+    $env['divclass'] = $float;
130
+    $env['lang'] = admin_lang();
131
+    $env['calcul'] = (_request('var_mode') ? 'recalcul' : 'calcul');
132
+    $env['debug'] = ((defined('_VAR_PREVIEW') and _VAR_PREVIEW) ? "" : admin_debug());
133
+    $env['analyser'] = (!$env['debug'] and !$GLOBALS['xhtml']) ? '' : admin_valider();
134
+    $env['inclure'] = ((defined('_VAR_INCLURE') and _VAR_INCLURE) ? 'inclure' : '');
135 135
 
136
-	if (!$GLOBALS['use_cache']) {
137
-		$env['use_cache'] = ' *';
138
-	}
136
+    if (!$GLOBALS['use_cache']) {
137
+        $env['use_cache'] = ' *';
138
+    }
139 139
 
140
-	if (isset($debug['validation'])) {
141
-		$env['xhtml_error'] = $debug['validation'];
142
-	}
140
+    if (isset($debug['validation'])) {
141
+        $env['xhtml_error'] = $debug['validation'];
142
+    }
143 143
 
144
-	$env['_pipelines']['formulaire_admin'] = array();
144
+    $env['_pipelines']['formulaire_admin'] = array();
145 145
 
146
-	return array('formulaires/administration', 0, $env);
146
+    return array('formulaires/administration', 0, $env);
147 147
 }
148 148
 
149 149
 
@@ -161,45 +161,45 @@  discard block
 block discarded – undo
161 161
  *     Tableau de l'environnement calculé
162 162
  **/
163 163
 function admin_objet() {
164
-	include_spip('inc/urls');
165
-	$env = array();
166
-
167
-	$trouver_table = charger_fonction('trouver_table', 'base');
168
-	$objets = urls_liste_objets(false);
169
-	$objets = array_diff($objets, array('rubrique'));
170
-	$objets = array_reverse($objets);
171
-	array_unshift($objets, 'rubrique');
172
-	foreach ($objets as $obj) {
173
-		$type = $obj;
174
-		if ($type == objet_type($type, false)
175
-			and $_id_type = id_table_objet($type)
176
-			and isset($GLOBALS['contexte'][$_id_type])
177
-			and $id = $GLOBALS['contexte'][$_id_type]
178
-			and !is_array($id)
179
-			and $id = intval($id)
180
-		) {
181
-			$id = sql_getfetsel($_id_type, table_objet_sql($type), "$_id_type=" . intval($id));
182
-			if ($id) {
183
-				$env[$_id_type] = $id;
184
-				$env['objet'] = $type;
185
-				$env['id_objet'] = $id;
186
-				$env['voir_' . $obj] =
187
-					str_replace('&amp;', '&', generer_url_entite($id, $obj, '', '', false));
188
-				if ($desc = $trouver_table(table_objet_sql($type))
189
-					and isset($desc['field']['id_rubrique'])
190
-					and $type != 'rubrique'
191
-				) {
192
-					unset($env['id_rubrique']);
193
-					unset($env['voir_rubrique']);
194
-					if (admin_preview($type, $id, $desc)) {
195
-						$env['preview'] = parametre_url(self(), 'var_mode', 'preview', '&');
196
-					}
197
-				}
198
-			}
199
-		}
200
-	}
201
-
202
-	return $env;
164
+    include_spip('inc/urls');
165
+    $env = array();
166
+
167
+    $trouver_table = charger_fonction('trouver_table', 'base');
168
+    $objets = urls_liste_objets(false);
169
+    $objets = array_diff($objets, array('rubrique'));
170
+    $objets = array_reverse($objets);
171
+    array_unshift($objets, 'rubrique');
172
+    foreach ($objets as $obj) {
173
+        $type = $obj;
174
+        if ($type == objet_type($type, false)
175
+            and $_id_type = id_table_objet($type)
176
+            and isset($GLOBALS['contexte'][$_id_type])
177
+            and $id = $GLOBALS['contexte'][$_id_type]
178
+            and !is_array($id)
179
+            and $id = intval($id)
180
+        ) {
181
+            $id = sql_getfetsel($_id_type, table_objet_sql($type), "$_id_type=" . intval($id));
182
+            if ($id) {
183
+                $env[$_id_type] = $id;
184
+                $env['objet'] = $type;
185
+                $env['id_objet'] = $id;
186
+                $env['voir_' . $obj] =
187
+                    str_replace('&amp;', '&', generer_url_entite($id, $obj, '', '', false));
188
+                if ($desc = $trouver_table(table_objet_sql($type))
189
+                    and isset($desc['field']['id_rubrique'])
190
+                    and $type != 'rubrique'
191
+                ) {
192
+                    unset($env['id_rubrique']);
193
+                    unset($env['voir_rubrique']);
194
+                    if (admin_preview($type, $id, $desc)) {
195
+                        $env['preview'] = parametre_url(self(), 'var_mode', 'preview', '&');
196
+                    }
197
+                }
198
+            }
199
+        }
200
+    }
201
+
202
+    return $env;
203 203
 }
204 204
 
205 205
 
@@ -217,30 +217,30 @@  discard block
 block discarded – undo
217 217
  *     - Tableau d'un élément sinon.
218 218
  **/
219 219
 function admin_preview($type, $id, $desc = null) {
220
-	if (defined('_VAR_PREVIEW') and _VAR_PREVIEW) {
221
-		return '';
222
-	}
223
-
224
-	if (!$desc) {
225
-		$trouver_table = charger_fonction('trouver_table', 'base');
226
-		$desc = $trouver_table(table_objet_sql($type));
227
-	}
228
-	if (!$desc or !isset($desc['field']['statut'])) {
229
-		return '';
230
-	}
231
-
232
-	include_spip('inc/autoriser');
233
-	if (!autoriser('previsualiser')) {
234
-		return '';
235
-	}
236
-
237
-	$notpub = sql_in("statut", array('prop', 'prive'));
238
-
239
-	if ($type == 'article' and $GLOBALS['meta']['post_dates'] != 'oui') {
240
-		$notpub .= " OR (statut='publie' AND date>" . sql_quote(date('Y-m-d H:i:s')) . ")";
241
-	}
242
-
243
-	return sql_fetsel('1', table_objet_sql($type), id_table_objet($type) . "=" . $id . " AND ($notpub)");
220
+    if (defined('_VAR_PREVIEW') and _VAR_PREVIEW) {
221
+        return '';
222
+    }
223
+
224
+    if (!$desc) {
225
+        $trouver_table = charger_fonction('trouver_table', 'base');
226
+        $desc = $trouver_table(table_objet_sql($type));
227
+    }
228
+    if (!$desc or !isset($desc['field']['statut'])) {
229
+        return '';
230
+    }
231
+
232
+    include_spip('inc/autoriser');
233
+    if (!autoriser('previsualiser')) {
234
+        return '';
235
+    }
236
+
237
+    $notpub = sql_in("statut", array('prop', 'prive'));
238
+
239
+    if ($type == 'article' and $GLOBALS['meta']['post_dates'] != 'oui') {
240
+        $notpub .= " OR (statut='publie' AND date>" . sql_quote(date('Y-m-d H:i:s')) . ")";
241
+    }
242
+
243
+    return sql_fetsel('1', table_objet_sql($type), id_table_objet($type) . "=" . $id . " AND ($notpub)");
244 244
 }
245 245
 
246 246
 
@@ -251,25 +251,25 @@  discard block
 block discarded – undo
251 251
  *     Code de langue
252 252
  **/
253 253
 function admin_lang() {
254
-	$alang = '';
255
-	if (!empty($_COOKIE['spip_admin'])) {
256
-		$email_or_login = preg_replace(',^@,', '', $_COOKIE['spip_admin']);
257
-		$alang = sql_getfetsel('lang', 'spip_auteurs', "email=" . sql_quote($email_or_login));
258
-		if (!$alang) {
259
-			$alang = sql_getfetsel('lang', 'spip_auteurs', "login=" . sql_quote($email_or_login));
260
-		}
261
-	}
262
-	if (!$alang) {
263
-		return '';
264
-	}
265
-
266
-	$l = lang_select($alang);
267
-	$alang = $GLOBALS['spip_lang'];
268
-	if ($l) {
269
-		lang_select();
270
-	}
271
-
272
-	return $alang;
254
+    $alang = '';
255
+    if (!empty($_COOKIE['spip_admin'])) {
256
+        $email_or_login = preg_replace(',^@,', '', $_COOKIE['spip_admin']);
257
+        $alang = sql_getfetsel('lang', 'spip_auteurs', "email=" . sql_quote($email_or_login));
258
+        if (!$alang) {
259
+            $alang = sql_getfetsel('lang', 'spip_auteurs', "login=" . sql_quote($email_or_login));
260
+        }
261
+    }
262
+    if (!$alang) {
263
+        return '';
264
+    }
265
+
266
+    $l = lang_select($alang);
267
+    $alang = $GLOBALS['spip_lang'];
268
+    if ($l) {
269
+        lang_select();
270
+    }
271
+
272
+    return $alang;
273 273
 }
274 274
 
275 275
 /**
@@ -279,11 +279,11 @@  discard block
 block discarded – undo
279 279
  **/
280 280
 function admin_valider() {
281 281
 
282
-	return ((!isset($GLOBALS['xhtml']) or $GLOBALS['xhtml'] !== 'true') ?
283
-		(parametre_url(self(), 'var_mode', 'debug', '&')
284
-			. '&var_mode_affiche=validation') :
285
-		('http://validator.w3.org/check?uri='
286
-			. rawurlencode("http://" . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
282
+    return ((!isset($GLOBALS['xhtml']) or $GLOBALS['xhtml'] !== 'true') ?
283
+        (parametre_url(self(), 'var_mode', 'debug', '&')
284
+            . '&var_mode_affiche=validation') :
285
+        ('http://validator.w3.org/check?uri='
286
+            . rawurlencode("http://" . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
287 287
 }
288 288
 
289 289
 /**
@@ -292,14 +292,14 @@  discard block
 block discarded – undo
292 292
  * @return string
293 293
  **/
294 294
 function admin_debug() {
295
-	return ((
296
-			(isset($GLOBALS['forcer_debug']) and $GLOBALS['forcer_debug'])
297
-			or (isset($GLOBALS['bouton_admin_debug']) and $GLOBALS['bouton_admin_debug'])
298
-			or (
299
-				defined('_VAR_MODE') and _VAR_MODE == 'debug'
300
-				and isset($_COOKIE['spip_debug']) and $_COOKIE['spip_debug']
301
-			)
302
-		) and autoriser('debug')
303
-	)
304
-		? parametre_url(self(), 'var_mode', 'debug', '&') : '';
295
+    return ((
296
+            (isset($GLOBALS['forcer_debug']) and $GLOBALS['forcer_debug'])
297
+            or (isset($GLOBALS['bouton_admin_debug']) and $GLOBALS['bouton_admin_debug'])
298
+            or (
299
+                defined('_VAR_MODE') and _VAR_MODE == 'debug'
300
+                and isset($_COOKIE['spip_debug']) and $_COOKIE['spip_debug']
301
+            )
302
+        ) and autoriser('debug')
303
+    )
304
+        ? parametre_url(self(), 'var_mode', 'debug', '&') : '';
305 305
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -11 removed lines patch added patch discarded remove patch
@@ -101,8 +101,8 @@  discard block
 block discarded – undo
101 101
 			}
102 102
 			foreach ($debug['sourcefile'] as $k => $v) {
103 103
 				if (strpos($v, 'administration.') !== false) {
104
-					if (isset($debug['resultat'][$k . 'tout'])) {
105
-						return $debug['resultat'][$k . 'tout'];
104
+					if (isset($debug['resultat'][$k.'tout'])) {
105
+						return $debug['resultat'][$k.'tout'];
106 106
 					}
107 107
 				}
108 108
 			}
@@ -178,12 +178,12 @@  discard block
 block discarded – undo
178 178
 			and !is_array($id)
179 179
 			and $id = intval($id)
180 180
 		) {
181
-			$id = sql_getfetsel($_id_type, table_objet_sql($type), "$_id_type=" . intval($id));
181
+			$id = sql_getfetsel($_id_type, table_objet_sql($type), "$_id_type=".intval($id));
182 182
 			if ($id) {
183 183
 				$env[$_id_type] = $id;
184 184
 				$env['objet'] = $type;
185 185
 				$env['id_objet'] = $id;
186
-				$env['voir_' . $obj] =
186
+				$env['voir_'.$obj] =
187 187
 					str_replace('&amp;', '&', generer_url_entite($id, $obj, '', '', false));
188 188
 				if ($desc = $trouver_table(table_objet_sql($type))
189 189
 					and isset($desc['field']['id_rubrique'])
@@ -237,10 +237,10 @@  discard block
 block discarded – undo
237 237
 	$notpub = sql_in("statut", array('prop', 'prive'));
238 238
 
239 239
 	if ($type == 'article' and $GLOBALS['meta']['post_dates'] != 'oui') {
240
-		$notpub .= " OR (statut='publie' AND date>" . sql_quote(date('Y-m-d H:i:s')) . ")";
240
+		$notpub .= " OR (statut='publie' AND date>".sql_quote(date('Y-m-d H:i:s')).")";
241 241
 	}
242 242
 
243
-	return sql_fetsel('1', table_objet_sql($type), id_table_objet($type) . "=" . $id . " AND ($notpub)");
243
+	return sql_fetsel('1', table_objet_sql($type), id_table_objet($type)."=".$id." AND ($notpub)");
244 244
 }
245 245
 
246 246
 
@@ -254,9 +254,9 @@  discard block
 block discarded – undo
254 254
 	$alang = '';
255 255
 	if (!empty($_COOKIE['spip_admin'])) {
256 256
 		$email_or_login = preg_replace(',^@,', '', $_COOKIE['spip_admin']);
257
-		$alang = sql_getfetsel('lang', 'spip_auteurs', "email=" . sql_quote($email_or_login));
257
+		$alang = sql_getfetsel('lang', 'spip_auteurs', "email=".sql_quote($email_or_login));
258 258
 		if (!$alang) {
259
-			$alang = sql_getfetsel('lang', 'spip_auteurs', "login=" . sql_quote($email_or_login));
259
+			$alang = sql_getfetsel('lang', 'spip_auteurs', "login=".sql_quote($email_or_login));
260 260
 		}
261 261
 	}
262 262
 	if (!$alang) {
@@ -281,9 +281,8 @@  discard block
 block discarded – undo
281 281
 
282 282
 	return ((!isset($GLOBALS['xhtml']) or $GLOBALS['xhtml'] !== 'true') ?
283 283
 		(parametre_url(self(), 'var_mode', 'debug', '&')
284
-			. '&var_mode_affiche=validation') :
285
-		('http://validator.w3.org/check?uri='
286
-			. rawurlencode("http://" . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
284
+			. '&var_mode_affiche=validation') : ('http://validator.w3.org/check?uri='
285
+			. rawurlencode("http://".$_SERVER['HTTP_HOST'].nettoyer_uri())));
287 286
 }
288 287
 
289 288
 /**
Please login to merge, or discard this patch.