@@ -85,8 +85,7 @@ |
||
| 85 | 85 | $url_action = self(); |
| 86 | 86 | $action = _request('action'); |
| 87 | 87 | $url_action = parametre_url($url_action, 'action', $action, '&'); |
| 88 | - } |
|
| 89 | - else { |
|
| 88 | + } else { |
|
| 90 | 89 | $action = parametre_url($url_action, 'action'); |
| 91 | 90 | } |
| 92 | 91 | |
@@ -93,7 +93,7 @@ discard block |
||
| 93 | 93 | } |
| 94 | 94 | |
| 95 | 95 | $arg = parametre_url($url_action, 'arg'); |
| 96 | - $confirm = md5("$action:$arg:" . realpath(__FILE__)); |
|
| 96 | + $confirm = md5("$action:$arg:".realpath(__FILE__)); |
|
| 97 | 97 | if (_request('confirm_action') === $confirm) { |
| 98 | 98 | return true; |
| 99 | 99 | } |
@@ -146,7 +146,7 @@ discard block |
||
| 146 | 146 | } else { |
| 147 | 147 | return generer_url_action( |
| 148 | 148 | $action, |
| 149 | - 'arg=' . rawurlencode($arg) . "&hash=$hash" . (!$r ? '' : "&redirect=$r"), |
|
| 149 | + 'arg='.rawurlencode($arg)."&hash=$hash".(!$r ? '' : "&redirect=$r"), |
|
| 150 | 150 | $mode, |
| 151 | 151 | $public |
| 152 | 152 | ); |
@@ -157,9 +157,9 @@ discard block |
||
| 157 | 157 | $hash = calculer_action_auteur("$action-$arg"); |
| 158 | 158 | $att .= " style='margin: 0px; border: 0px'"; |
| 159 | 159 | if ($redirect) { |
| 160 | - $redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", ''', $redirect) . "' />"; |
|
| 160 | + $redirect = "\n\t\t<input name='redirect' type='hidden' value='".str_replace("'", ''', $redirect)."' />"; |
|
| 161 | 161 | } |
| 162 | - $mode .= $redirect . " |
|
| 162 | + $mode .= $redirect." |
|
| 163 | 163 | <input name='hash' type='hidden' value='$hash' /> |
| 164 | 164 | <input name='arg' type='hidden' value='$arg' />"; |
| 165 | 165 | |
@@ -233,7 +233,7 @@ discard block |
||
| 233 | 233 | $pass = $pass ?? ''; |
| 234 | 234 | $entry = "$action:$id_auteur:$pass:$alea"; |
| 235 | 235 | if (!isset($sha[$entry])) { |
| 236 | - $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea)); |
|
| 236 | + $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::"._action_get_alea($alea)); |
|
| 237 | 237 | } |
| 238 | 238 | |
| 239 | 239 | return $sha[$entry]; |
@@ -351,7 +351,7 @@ discard block |
||
| 351 | 351 | // On nettoie l’URL de tous les var_. |
| 352 | 352 | $url = nettoyer_uri_var($url); |
| 353 | 353 | |
| 354 | - $token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea); |
|
| 354 | + $token = _action_auteur('previsualiser-'.$url, $id_auteur, secret_du_site(), $alea); |
|
| 355 | 355 | return "$id_auteur-$token"; |
| 356 | 356 | } |
| 357 | 357 | |
@@ -16,10 +16,10 @@ discard block |
||
| 16 | 16 | * @package SPIP\Core\Actions |
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | - use Spip\Chiffrer\SpipCles; |
|
| 19 | + use Spip\Chiffrer\SpipCles; |
|
| 20 | 20 | |
| 21 | 21 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 22 | - return; |
|
| 22 | + return; |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | /** |
@@ -52,19 +52,19 @@ discard block |
||
| 52 | 52 | * @return array|string |
| 53 | 53 | */ |
| 54 | 54 | function inc_securiser_action_dist($action = '', $arg = '', $redirect = '', $mode = false, $att = '', $public = false) { |
| 55 | - if ($action) { |
|
| 56 | - return securiser_action_auteur($action, $arg, $redirect, $mode, $att, $public); |
|
| 57 | - } else { |
|
| 58 | - $arg = _request('arg'); |
|
| 59 | - $hash = _request('hash'); |
|
| 60 | - $action = _request('action') ?: _request('formulaire_action'); |
|
| 61 | - if ($a = verifier_action_auteur("$action-$arg", $hash)) { |
|
| 62 | - return $arg; |
|
| 63 | - } |
|
| 64 | - include_spip('inc/minipres'); |
|
| 65 | - echo minipres(); |
|
| 66 | - exit; |
|
| 67 | - } |
|
| 55 | + if ($action) { |
|
| 56 | + return securiser_action_auteur($action, $arg, $redirect, $mode, $att, $public); |
|
| 57 | + } else { |
|
| 58 | + $arg = _request('arg'); |
|
| 59 | + $hash = _request('hash'); |
|
| 60 | + $action = _request('action') ?: _request('formulaire_action'); |
|
| 61 | + if ($a = verifier_action_auteur("$action-$arg", $hash)) { |
|
| 62 | + return $arg; |
|
| 63 | + } |
|
| 64 | + include_spip('inc/minipres'); |
|
| 65 | + echo minipres(); |
|
| 66 | + exit; |
|
| 67 | + } |
|
| 68 | 68 | } |
| 69 | 69 | |
| 70 | 70 | /** |
@@ -83,29 +83,29 @@ discard block |
||
| 83 | 83 | */ |
| 84 | 84 | function demander_confirmation_avant_action($titre, $titre_bouton, $url_action = null) { |
| 85 | 85 | |
| 86 | - if (!$url_action) { |
|
| 87 | - $url_action = self(); |
|
| 88 | - $action = _request('action'); |
|
| 89 | - $url_action = parametre_url($url_action, 'action', $action, '&'); |
|
| 90 | - } |
|
| 91 | - else { |
|
| 92 | - $action = parametre_url($url_action, 'action'); |
|
| 93 | - } |
|
| 94 | - |
|
| 95 | - $arg = parametre_url($url_action, 'arg'); |
|
| 96 | - $confirm = md5("$action:$arg:" . realpath(__FILE__)); |
|
| 97 | - if (_request('confirm_action') === $confirm) { |
|
| 98 | - return true; |
|
| 99 | - } |
|
| 100 | - |
|
| 101 | - $url_confirm = parametre_url($url_action, 'confirm_action', $confirm, '&'); |
|
| 102 | - include_spip('inc/filtres'); |
|
| 103 | - $bouton_action = bouton_action($titre_bouton, $url_confirm); |
|
| 104 | - $corps = "<div style='text-align:center;'>$bouton_action</div>"; |
|
| 105 | - |
|
| 106 | - include_spip('inc/minipres'); |
|
| 107 | - echo minipres($titre, $corps); |
|
| 108 | - exit; |
|
| 86 | + if (!$url_action) { |
|
| 87 | + $url_action = self(); |
|
| 88 | + $action = _request('action'); |
|
| 89 | + $url_action = parametre_url($url_action, 'action', $action, '&'); |
|
| 90 | + } |
|
| 91 | + else { |
|
| 92 | + $action = parametre_url($url_action, 'action'); |
|
| 93 | + } |
|
| 94 | + |
|
| 95 | + $arg = parametre_url($url_action, 'arg'); |
|
| 96 | + $confirm = md5("$action:$arg:" . realpath(__FILE__)); |
|
| 97 | + if (_request('confirm_action') === $confirm) { |
|
| 98 | + return true; |
|
| 99 | + } |
|
| 100 | + |
|
| 101 | + $url_confirm = parametre_url($url_action, 'confirm_action', $confirm, '&'); |
|
| 102 | + include_spip('inc/filtres'); |
|
| 103 | + $bouton_action = bouton_action($titre_bouton, $url_confirm); |
|
| 104 | + $corps = "<div style='text-align:center;'>$bouton_action</div>"; |
|
| 105 | + |
|
| 106 | + include_spip('inc/minipres'); |
|
| 107 | + echo minipres($titre, $corps); |
|
| 108 | + exit; |
|
| 109 | 109 | } |
| 110 | 110 | |
| 111 | 111 | /** |
@@ -136,34 +136,34 @@ discard block |
||
| 136 | 136 | */ |
| 137 | 137 | function securiser_action_auteur($action, $arg, $redirect = '', $mode = false, $att = '', $public = false) { |
| 138 | 138 | |
| 139 | - // mode URL ou array |
|
| 140 | - if (!is_string($mode)) { |
|
| 141 | - $hash = calculer_action_auteur("$action-$arg", is_numeric($att) ? $att : null); |
|
| 142 | - |
|
| 143 | - $r = rawurlencode($redirect); |
|
| 144 | - if ($mode === -1) { |
|
| 145 | - return ['action' => $action, 'arg' => $arg, 'hash' => $hash]; |
|
| 146 | - } else { |
|
| 147 | - return generer_url_action( |
|
| 148 | - $action, |
|
| 149 | - 'arg=' . rawurlencode($arg) . "&hash=$hash" . (!$r ? '' : "&redirect=$r"), |
|
| 150 | - $mode, |
|
| 151 | - $public |
|
| 152 | - ); |
|
| 153 | - } |
|
| 154 | - } |
|
| 155 | - |
|
| 156 | - // mode formulaire |
|
| 157 | - $hash = calculer_action_auteur("$action-$arg"); |
|
| 158 | - $att .= " style='margin: 0px; border: 0px'"; |
|
| 159 | - if ($redirect) { |
|
| 160 | - $redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", ''', $redirect) . "' />"; |
|
| 161 | - } |
|
| 162 | - $mode .= $redirect . " |
|
| 139 | + // mode URL ou array |
|
| 140 | + if (!is_string($mode)) { |
|
| 141 | + $hash = calculer_action_auteur("$action-$arg", is_numeric($att) ? $att : null); |
|
| 142 | + |
|
| 143 | + $r = rawurlencode($redirect); |
|
| 144 | + if ($mode === -1) { |
|
| 145 | + return ['action' => $action, 'arg' => $arg, 'hash' => $hash]; |
|
| 146 | + } else { |
|
| 147 | + return generer_url_action( |
|
| 148 | + $action, |
|
| 149 | + 'arg=' . rawurlencode($arg) . "&hash=$hash" . (!$r ? '' : "&redirect=$r"), |
|
| 150 | + $mode, |
|
| 151 | + $public |
|
| 152 | + ); |
|
| 153 | + } |
|
| 154 | + } |
|
| 155 | + |
|
| 156 | + // mode formulaire |
|
| 157 | + $hash = calculer_action_auteur("$action-$arg"); |
|
| 158 | + $att .= " style='margin: 0px; border: 0px'"; |
|
| 159 | + if ($redirect) { |
|
| 160 | + $redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", ''', $redirect) . "' />"; |
|
| 161 | + } |
|
| 162 | + $mode .= $redirect . " |
|
| 163 | 163 | <input name='hash' type='hidden' value='$hash' /> |
| 164 | 164 | <input name='arg' type='hidden' value='$arg' />"; |
| 165 | 165 | |
| 166 | - return generer_form_action($action, $mode, $att, $public); |
|
| 166 | + return generer_form_action($action, $mode, $att, $public); |
|
| 167 | 167 | } |
| 168 | 168 | |
| 169 | 169 | /** |
@@ -173,48 +173,48 @@ discard block |
||
| 173 | 173 | * @return array |
| 174 | 174 | */ |
| 175 | 175 | function caracteriser_auteur($id_auteur = null) { |
| 176 | - static $caracterisation = []; |
|
| 177 | - |
|
| 178 | - if (is_null($id_auteur) and !isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 179 | - // si l'auteur courant n'est pas connu alors qu'il peut demander une action |
|
| 180 | - // c'est une connexion par php_auth ou 1 instal, on se rabat sur le cookie. |
|
| 181 | - // S'il n'avait pas le droit de realiser cette action, le hash sera faux. |
|
| 182 | - if ( |
|
| 183 | - isset($_COOKIE['spip_session']) |
|
| 184 | - and (preg_match('/^(\d+)/', $_COOKIE['spip_session'], $r)) |
|
| 185 | - ) { |
|
| 186 | - return [$r[1], '']; |
|
| 187 | - // Necessaire aux forums anonymes. |
|
| 188 | - // Pour le reste, ca echouera. |
|
| 189 | - } else { |
|
| 190 | - return ['0', '']; |
|
| 191 | - } |
|
| 192 | - } |
|
| 193 | - // Eviter l'acces SQL si le pass est connu de PHP |
|
| 194 | - if (is_null($id_auteur)) { |
|
| 195 | - $id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0; |
|
| 196 | - if (isset($GLOBALS['visiteur_session']['pass']) and $GLOBALS['visiteur_session']['pass']) { |
|
| 197 | - return $caracterisation[$id_auteur] = [$id_auteur, $GLOBALS['visiteur_session']['pass']]; |
|
| 198 | - } |
|
| 199 | - } |
|
| 200 | - |
|
| 201 | - if (isset($caracterisation[$id_auteur])) { |
|
| 202 | - return $caracterisation[$id_auteur]; |
|
| 203 | - } |
|
| 204 | - |
|
| 205 | - if ($id_auteur) { |
|
| 206 | - include_spip('base/abstract_sql'); |
|
| 207 | - $t = sql_fetsel('id_auteur, pass', 'spip_auteurs', "id_auteur=$id_auteur"); |
|
| 208 | - if ($t) { |
|
| 209 | - return $caracterisation[$id_auteur] = [$t['id_auteur'], $t['pass']]; |
|
| 210 | - } |
|
| 211 | - include_spip('inc/minipres'); |
|
| 212 | - echo minipres(); |
|
| 213 | - exit; |
|
| 214 | - } // Visiteur anonyme, pour ls forums par exemple |
|
| 215 | - else { |
|
| 216 | - return ['0', '']; |
|
| 217 | - } |
|
| 176 | + static $caracterisation = []; |
|
| 177 | + |
|
| 178 | + if (is_null($id_auteur) and !isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 179 | + // si l'auteur courant n'est pas connu alors qu'il peut demander une action |
|
| 180 | + // c'est une connexion par php_auth ou 1 instal, on se rabat sur le cookie. |
|
| 181 | + // S'il n'avait pas le droit de realiser cette action, le hash sera faux. |
|
| 182 | + if ( |
|
| 183 | + isset($_COOKIE['spip_session']) |
|
| 184 | + and (preg_match('/^(\d+)/', $_COOKIE['spip_session'], $r)) |
|
| 185 | + ) { |
|
| 186 | + return [$r[1], '']; |
|
| 187 | + // Necessaire aux forums anonymes. |
|
| 188 | + // Pour le reste, ca echouera. |
|
| 189 | + } else { |
|
| 190 | + return ['0', '']; |
|
| 191 | + } |
|
| 192 | + } |
|
| 193 | + // Eviter l'acces SQL si le pass est connu de PHP |
|
| 194 | + if (is_null($id_auteur)) { |
|
| 195 | + $id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0; |
|
| 196 | + if (isset($GLOBALS['visiteur_session']['pass']) and $GLOBALS['visiteur_session']['pass']) { |
|
| 197 | + return $caracterisation[$id_auteur] = [$id_auteur, $GLOBALS['visiteur_session']['pass']]; |
|
| 198 | + } |
|
| 199 | + } |
|
| 200 | + |
|
| 201 | + if (isset($caracterisation[$id_auteur])) { |
|
| 202 | + return $caracterisation[$id_auteur]; |
|
| 203 | + } |
|
| 204 | + |
|
| 205 | + if ($id_auteur) { |
|
| 206 | + include_spip('base/abstract_sql'); |
|
| 207 | + $t = sql_fetsel('id_auteur, pass', 'spip_auteurs', "id_auteur=$id_auteur"); |
|
| 208 | + if ($t) { |
|
| 209 | + return $caracterisation[$id_auteur] = [$t['id_auteur'], $t['pass']]; |
|
| 210 | + } |
|
| 211 | + include_spip('inc/minipres'); |
|
| 212 | + echo minipres(); |
|
| 213 | + exit; |
|
| 214 | + } // Visiteur anonyme, pour ls forums par exemple |
|
| 215 | + else { |
|
| 216 | + return ['0', '']; |
|
| 217 | + } |
|
| 218 | 218 | } |
| 219 | 219 | |
| 220 | 220 | /** |
@@ -229,30 +229,30 @@ discard block |
||
| 229 | 229 | * @return string |
| 230 | 230 | */ |
| 231 | 231 | function _action_auteur(string $action, int $id_auteur, ?string $pass, string $alea): string { |
| 232 | - static $sha = []; |
|
| 233 | - $pass = $pass ?? ''; |
|
| 234 | - $entry = "$action:$id_auteur:$pass:$alea"; |
|
| 235 | - if (!isset($sha[$entry])) { |
|
| 236 | - $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea)); |
|
| 237 | - } |
|
| 238 | - |
|
| 239 | - return $sha[$entry]; |
|
| 232 | + static $sha = []; |
|
| 233 | + $pass = $pass ?? ''; |
|
| 234 | + $entry = "$action:$id_auteur:$pass:$alea"; |
|
| 235 | + if (!isset($sha[$entry])) { |
|
| 236 | + $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea)); |
|
| 237 | + } |
|
| 238 | + |
|
| 239 | + return $sha[$entry]; |
|
| 240 | 240 | } |
| 241 | 241 | |
| 242 | 242 | function _action_get_alea(string $alea): string { |
| 243 | - if (!isset($GLOBALS['meta'][$alea])) { |
|
| 244 | - if (!$exec = _request('exec') or !autoriser_sans_cookie($exec)) { |
|
| 245 | - include_spip('inc/acces'); |
|
| 246 | - charger_aleas(); |
|
| 247 | - if (empty($GLOBALS['meta'][$alea])) { |
|
| 248 | - include_spip('inc/minipres'); |
|
| 249 | - echo minipres(); |
|
| 250 | - spip_log("$alea indisponible"); |
|
| 251 | - exit; |
|
| 252 | - } |
|
| 253 | - } |
|
| 254 | - } |
|
| 255 | - return $GLOBALS['meta'][$alea] ?? ''; |
|
| 243 | + if (!isset($GLOBALS['meta'][$alea])) { |
|
| 244 | + if (!$exec = _request('exec') or !autoriser_sans_cookie($exec)) { |
|
| 245 | + include_spip('inc/acces'); |
|
| 246 | + charger_aleas(); |
|
| 247 | + if (empty($GLOBALS['meta'][$alea])) { |
|
| 248 | + include_spip('inc/minipres'); |
|
| 249 | + echo minipres(); |
|
| 250 | + spip_log("$alea indisponible"); |
|
| 251 | + exit; |
|
| 252 | + } |
|
| 253 | + } |
|
| 254 | + } |
|
| 255 | + return $GLOBALS['meta'][$alea] ?? ''; |
|
| 256 | 256 | } |
| 257 | 257 | |
| 258 | 258 | /** |
@@ -263,9 +263,9 @@ discard block |
||
| 263 | 263 | * @return string |
| 264 | 264 | */ |
| 265 | 265 | function calculer_action_auteur($action, $id_auteur = null) { |
| 266 | - [$id_auteur, $pass] = caracteriser_auteur($id_auteur); |
|
| 266 | + [$id_auteur, $pass] = caracteriser_auteur($id_auteur); |
|
| 267 | 267 | |
| 268 | - return _action_auteur($action, $id_auteur, $pass, 'alea_ephemere'); |
|
| 268 | + return _action_auteur($action, $id_auteur, $pass, 'alea_ephemere'); |
|
| 269 | 269 | } |
| 270 | 270 | |
| 271 | 271 | |
@@ -278,15 +278,15 @@ discard block |
||
| 278 | 278 | * @return bool |
| 279 | 279 | */ |
| 280 | 280 | function verifier_action_auteur($action, $hash) { |
| 281 | - [$id_auteur, $pass] = caracteriser_auteur(); |
|
| 282 | - if ( |
|
| 283 | - hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere')) |
|
| 284 | - or hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien')) |
|
| 285 | - ) { |
|
| 286 | - return true; |
|
| 287 | - } |
|
| 288 | - |
|
| 289 | - return false; |
|
| 281 | + [$id_auteur, $pass] = caracteriser_auteur(); |
|
| 282 | + if ( |
|
| 283 | + hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere')) |
|
| 284 | + or hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien')) |
|
| 285 | + ) { |
|
| 286 | + return true; |
|
| 287 | + } |
|
| 288 | + |
|
| 289 | + return false; |
|
| 290 | 290 | } |
| 291 | 291 | |
| 292 | 292 | // |
@@ -301,8 +301,8 @@ discard block |
||
| 301 | 301 | * @return string |
| 302 | 302 | */ |
| 303 | 303 | function secret_du_site() { |
| 304 | - include_spip('inc/chiffrer'); |
|
| 305 | - return SpipCles::secret_du_site(); |
|
| 304 | + include_spip('inc/chiffrer'); |
|
| 305 | + return SpipCles::secret_du_site(); |
|
| 306 | 306 | } |
| 307 | 307 | |
| 308 | 308 | /** |
@@ -312,7 +312,7 @@ discard block |
||
| 312 | 312 | * @return string |
| 313 | 313 | */ |
| 314 | 314 | function calculer_cle_action($action) { |
| 315 | - return hash_hmac('sha256', $action, secret_du_site()); |
|
| 315 | + return hash_hmac('sha256', $action, secret_du_site()); |
|
| 316 | 316 | } |
| 317 | 317 | |
| 318 | 318 | /** |
@@ -323,7 +323,7 @@ discard block |
||
| 323 | 323 | * @return bool |
| 324 | 324 | */ |
| 325 | 325 | function verifier_cle_action($action, $cle) { |
| 326 | - return hash_equals($cle, calculer_cle_action($action)); |
|
| 326 | + return hash_equals($cle, calculer_cle_action($action)); |
|
| 327 | 327 | } |
| 328 | 328 | |
| 329 | 329 | |
@@ -340,19 +340,19 @@ discard block |
||
| 340 | 340 | * @return string Token, de la forme "{id}*{hash}" |
| 341 | 341 | */ |
| 342 | 342 | function calculer_token_previsu($url, $id_auteur = null, $alea = 'alea_ephemere') { |
| 343 | - if (is_null($id_auteur)) { |
|
| 344 | - if (!empty($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 345 | - $id_auteur = $GLOBALS['visiteur_session']['id_auteur']; |
|
| 346 | - } |
|
| 347 | - } |
|
| 348 | - if (!$id_auteur = intval($id_auteur)) { |
|
| 349 | - return ''; |
|
| 350 | - } |
|
| 351 | - // On nettoie l’URL de tous les var_. |
|
| 352 | - $url = nettoyer_uri_var($url); |
|
| 353 | - |
|
| 354 | - $token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea); |
|
| 355 | - return "$id_auteur-$token"; |
|
| 343 | + if (is_null($id_auteur)) { |
|
| 344 | + if (!empty($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 345 | + $id_auteur = $GLOBALS['visiteur_session']['id_auteur']; |
|
| 346 | + } |
|
| 347 | + } |
|
| 348 | + if (!$id_auteur = intval($id_auteur)) { |
|
| 349 | + return ''; |
|
| 350 | + } |
|
| 351 | + // On nettoie l’URL de tous les var_. |
|
| 352 | + $url = nettoyer_uri_var($url); |
|
| 353 | + |
|
| 354 | + $token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea); |
|
| 355 | + return "$id_auteur-$token"; |
|
| 356 | 356 | } |
| 357 | 357 | |
| 358 | 358 | |
@@ -370,31 +370,31 @@ discard block |
||
| 370 | 370 | * + Tableau (id auteur, type d’objet, id_objet) sinon. |
| 371 | 371 | */ |
| 372 | 372 | function verifier_token_previsu($token) { |
| 373 | - // retrouver auteur / hash |
|
| 374 | - $e = explode('-', $token, 2); |
|
| 375 | - if (count($e) == 2 and is_numeric(reset($e))) { |
|
| 376 | - $id_auteur = intval(reset($e)); |
|
| 377 | - } else { |
|
| 378 | - return false; |
|
| 379 | - } |
|
| 380 | - |
|
| 381 | - // calculer le type et id de l’url actuelle |
|
| 382 | - include_spip('inc/urls'); |
|
| 383 | - include_spip('inc/filtres_mini'); |
|
| 384 | - $url = url_absolue(self()); |
|
| 385 | - |
|
| 386 | - // verifier le token |
|
| 387 | - $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere'); |
|
| 388 | - if (!$_token or !hash_equals($token, $_token)) { |
|
| 389 | - $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere_ancien'); |
|
| 390 | - if (!$_token or !hash_equals($token, $_token)) { |
|
| 391 | - return false; |
|
| 392 | - } |
|
| 393 | - } |
|
| 394 | - |
|
| 395 | - return [ |
|
| 396 | - 'id_auteur' => $id_auteur, |
|
| 397 | - ]; |
|
| 373 | + // retrouver auteur / hash |
|
| 374 | + $e = explode('-', $token, 2); |
|
| 375 | + if (count($e) == 2 and is_numeric(reset($e))) { |
|
| 376 | + $id_auteur = intval(reset($e)); |
|
| 377 | + } else { |
|
| 378 | + return false; |
|
| 379 | + } |
|
| 380 | + |
|
| 381 | + // calculer le type et id de l’url actuelle |
|
| 382 | + include_spip('inc/urls'); |
|
| 383 | + include_spip('inc/filtres_mini'); |
|
| 384 | + $url = url_absolue(self()); |
|
| 385 | + |
|
| 386 | + // verifier le token |
|
| 387 | + $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere'); |
|
| 388 | + if (!$_token or !hash_equals($token, $_token)) { |
|
| 389 | + $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere_ancien'); |
|
| 390 | + if (!$_token or !hash_equals($token, $_token)) { |
|
| 391 | + return false; |
|
| 392 | + } |
|
| 393 | + } |
|
| 394 | + |
|
| 395 | + return [ |
|
| 396 | + 'id_auteur' => $id_auteur, |
|
| 397 | + ]; |
|
| 398 | 398 | } |
| 399 | 399 | |
| 400 | 400 | /** |
@@ -403,13 +403,13 @@ discard block |
||
| 403 | 403 | * @return bool|array |
| 404 | 404 | */ |
| 405 | 405 | function decrire_token_previsu() { |
| 406 | - static $desc = null; |
|
| 407 | - if (is_null($desc)) { |
|
| 408 | - if ($token = _request('var_previewtoken')) { |
|
| 409 | - $desc = verifier_token_previsu($token); |
|
| 410 | - } else { |
|
| 411 | - $desc = false; |
|
| 412 | - } |
|
| 413 | - } |
|
| 414 | - return $desc; |
|
| 406 | + static $desc = null; |
|
| 407 | + if (is_null($desc)) { |
|
| 408 | + if ($token = _request('var_previewtoken')) { |
|
| 409 | + $desc = verifier_token_previsu($token); |
|
| 410 | + } else { |
|
| 411 | + $desc = false; |
|
| 412 | + } |
|
| 413 | + } |
|
| 414 | + return $desc; |
|
| 415 | 415 | } |
@@ -45,7 +45,7 @@ |
||
| 45 | 45 | $les_couleurs = $couleurs(); |
| 46 | 46 | foreach ($les_couleurs as $k => $c) { |
| 47 | 47 | $valeurs['_couleurs_url'][$k] = generer_url_public('style_prive.css', 'ltr=' |
| 48 | - . $GLOBALS['spip_lang_left'] . '&' |
|
| 48 | + . $GLOBALS['spip_lang_left'].'&' |
|
| 49 | 49 | . $couleurs($k)); |
| 50 | 50 | $valeurs['couleurs'][$k] = $c; |
| 51 | 51 | } |
@@ -21,7 +21,7 @@ discard block |
||
| 21 | 21 | **/ |
| 22 | 22 | |
| 23 | 23 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 24 | - return; |
|
| 24 | + return; |
|
| 25 | 25 | } |
| 26 | 26 | |
| 27 | 27 | /** |
@@ -31,27 +31,27 @@ discard block |
||
| 31 | 31 | * Environnement du formulaire |
| 32 | 32 | **/ |
| 33 | 33 | function formulaires_configurer_preferences_charger_dist() { |
| 34 | - // travailler sur des meta fraiches |
|
| 35 | - include_spip('inc/meta'); |
|
| 36 | - lire_metas(); |
|
| 34 | + // travailler sur des meta fraiches |
|
| 35 | + include_spip('inc/meta'); |
|
| 36 | + lire_metas(); |
|
| 37 | 37 | |
| 38 | - $valeurs = []; |
|
| 39 | - $valeurs['display_navigation'] = $GLOBALS['visiteur_session']['prefs']['display_navigation'] ?? 'navigation_avec_icones'; |
|
| 40 | - $valeurs['display'] = (isset($GLOBALS['visiteur_session']['prefs']['display']) and $GLOBALS['visiteur_session']['prefs']['display'] > 0) ? $GLOBALS['visiteur_session']['prefs']['display'] : 2; |
|
| 41 | - $valeurs['couleur'] = (isset($GLOBALS['visiteur_session']['prefs']['couleur']) and $GLOBALS['visiteur_session']['prefs']['couleur'] > 0) ? $GLOBALS['visiteur_session']['prefs']['couleur'] : 1; |
|
| 38 | + $valeurs = []; |
|
| 39 | + $valeurs['display_navigation'] = $GLOBALS['visiteur_session']['prefs']['display_navigation'] ?? 'navigation_avec_icones'; |
|
| 40 | + $valeurs['display'] = (isset($GLOBALS['visiteur_session']['prefs']['display']) and $GLOBALS['visiteur_session']['prefs']['display'] > 0) ? $GLOBALS['visiteur_session']['prefs']['display'] : 2; |
|
| 41 | + $valeurs['couleur'] = (isset($GLOBALS['visiteur_session']['prefs']['couleur']) and $GLOBALS['visiteur_session']['prefs']['couleur'] > 0) ? $GLOBALS['visiteur_session']['prefs']['couleur'] : 1; |
|
| 42 | 42 | |
| 43 | - $couleurs = charger_fonction('couleurs', 'inc'); |
|
| 44 | - $les_couleurs = $couleurs(); |
|
| 45 | - foreach ($les_couleurs as $k => $c) { |
|
| 46 | - $valeurs['_couleurs_url'][$k] = generer_url_public('style_prive.css', 'ltr=' |
|
| 47 | - . $GLOBALS['spip_lang_left'] . '&' |
|
| 48 | - . $couleurs($k)); |
|
| 49 | - $valeurs['couleurs'][$k] = $c; |
|
| 50 | - } |
|
| 43 | + $couleurs = charger_fonction('couleurs', 'inc'); |
|
| 44 | + $les_couleurs = $couleurs(); |
|
| 45 | + foreach ($les_couleurs as $k => $c) { |
|
| 46 | + $valeurs['_couleurs_url'][$k] = generer_url_public('style_prive.css', 'ltr=' |
|
| 47 | + . $GLOBALS['spip_lang_left'] . '&' |
|
| 48 | + . $couleurs($k)); |
|
| 49 | + $valeurs['couleurs'][$k] = $c; |
|
| 50 | + } |
|
| 51 | 51 | |
| 52 | - $valeurs['imessage'] = $GLOBALS['visiteur_session']['imessage']; |
|
| 52 | + $valeurs['imessage'] = $GLOBALS['visiteur_session']['imessage']; |
|
| 53 | 53 | |
| 54 | - return $valeurs; |
|
| 54 | + return $valeurs; |
|
| 55 | 55 | } |
| 56 | 56 | |
| 57 | 57 | /** |
@@ -62,33 +62,33 @@ discard block |
||
| 62 | 62 | **/ |
| 63 | 63 | function formulaires_configurer_preferences_traiter_dist() { |
| 64 | 64 | |
| 65 | - if ($couleur = _request('couleur')) { |
|
| 66 | - $couleurs = charger_fonction('couleurs', 'inc'); |
|
| 67 | - $les_couleurs = $couleurs([], true); |
|
| 68 | - if (isset($les_couleurs[$couleur])) { |
|
| 69 | - $GLOBALS['visiteur_session']['prefs']['couleur'] = $couleur; |
|
| 70 | - } |
|
| 71 | - } |
|
| 72 | - if ($display = intval(_request('display'))) { |
|
| 73 | - $GLOBALS['visiteur_session']['prefs']['display'] = $display; |
|
| 74 | - } |
|
| 75 | - if ( |
|
| 76 | - $display_navigation = _request('display_navigation') |
|
| 77 | - and in_array($display_navigation, ['navigation_sans_icone', 'navigation_avec_icones']) |
|
| 78 | - ) { |
|
| 79 | - $GLOBALS['visiteur_session']['prefs']['display_navigation'] = $display_navigation; |
|
| 80 | - } |
|
| 65 | + if ($couleur = _request('couleur')) { |
|
| 66 | + $couleurs = charger_fonction('couleurs', 'inc'); |
|
| 67 | + $les_couleurs = $couleurs([], true); |
|
| 68 | + if (isset($les_couleurs[$couleur])) { |
|
| 69 | + $GLOBALS['visiteur_session']['prefs']['couleur'] = $couleur; |
|
| 70 | + } |
|
| 71 | + } |
|
| 72 | + if ($display = intval(_request('display'))) { |
|
| 73 | + $GLOBALS['visiteur_session']['prefs']['display'] = $display; |
|
| 74 | + } |
|
| 75 | + if ( |
|
| 76 | + $display_navigation = _request('display_navigation') |
|
| 77 | + and in_array($display_navigation, ['navigation_sans_icone', 'navigation_avec_icones']) |
|
| 78 | + ) { |
|
| 79 | + $GLOBALS['visiteur_session']['prefs']['display_navigation'] = $display_navigation; |
|
| 80 | + } |
|
| 81 | 81 | |
| 82 | - if (intval($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 83 | - include_spip('action/editer_auteur'); |
|
| 84 | - $c = ['prefs' => serialize($GLOBALS['visiteur_session']['prefs'])]; |
|
| 82 | + if (intval($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 83 | + include_spip('action/editer_auteur'); |
|
| 84 | + $c = ['prefs' => serialize($GLOBALS['visiteur_session']['prefs'])]; |
|
| 85 | 85 | |
| 86 | - if ($imessage = _request('imessage') and in_array($imessage, ['oui', 'non'])) { |
|
| 87 | - $c['imessage'] = $imessage; |
|
| 88 | - } |
|
| 86 | + if ($imessage = _request('imessage') and in_array($imessage, ['oui', 'non'])) { |
|
| 87 | + $c['imessage'] = $imessage; |
|
| 88 | + } |
|
| 89 | 89 | |
| 90 | - auteur_modifier($GLOBALS['visiteur_session']['id_auteur'], $c); |
|
| 91 | - } |
|
| 90 | + auteur_modifier($GLOBALS['visiteur_session']['id_auteur'], $c); |
|
| 91 | + } |
|
| 92 | 92 | |
| 93 | - return ['message_ok' => _T('config_info_enregistree'), 'editable' => true]; |
|
| 93 | + return ['message_ok' => _T('config_info_enregistree'), 'editable' => true]; |
|
| 94 | 94 | } |
@@ -135,7 +135,7 @@ |
||
| 135 | 135 | $titre = "<h3>$titre</h3>"; |
| 136 | 136 | } |
| 137 | 137 | |
| 138 | - return '<div class="' . $class . ($id ? "\" id=\"$id" : '') . '">' |
|
| 138 | + return '<div class="'.$class.($id ? "\" id=\"$id" : '').'">' |
|
| 139 | 139 | . ($titre ? "<div class=\"$head_class\">$titre<!--/hd--></div>" : '') |
| 140 | 140 | . '<div class="box__body clearfix">'; |
| 141 | 141 | } |
@@ -18,7 +18,7 @@ discard block |
||
| 18 | 18 | **/ |
| 19 | 19 | |
| 20 | 20 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 21 | - return; |
|
| 21 | + return; |
|
| 22 | 22 | } |
| 23 | 23 | |
| 24 | 24 | |
@@ -44,18 +44,18 @@ discard block |
||
| 44 | 44 | * Pile complétée par le code à générer |
| 45 | 45 | */ |
| 46 | 46 | function balise_BOITE_OUVRIR_dist($p) { |
| 47 | - $_titre = interprete_argument_balise(1, $p); |
|
| 48 | - $_class = interprete_argument_balise(2, $p); |
|
| 49 | - $_head_class = interprete_argument_balise(3, $p); |
|
| 50 | - $_titre = ($_titre ?: "''"); |
|
| 51 | - $_class = ($_class ? ", $_class" : ", 'simple'"); |
|
| 52 | - $_head_class = ($_head_class ? ", $_head_class" : ''); |
|
| 53 | - |
|
| 54 | - $f = chercher_filtre('boite_ouvrir'); |
|
| 55 | - $p->code = "$f($_titre$_class$_head_class)"; |
|
| 56 | - $p->interdire_scripts = false; |
|
| 57 | - |
|
| 58 | - return $p; |
|
| 47 | + $_titre = interprete_argument_balise(1, $p); |
|
| 48 | + $_class = interprete_argument_balise(2, $p); |
|
| 49 | + $_head_class = interprete_argument_balise(3, $p); |
|
| 50 | + $_titre = ($_titre ?: "''"); |
|
| 51 | + $_class = ($_class ? ", $_class" : ", 'simple'"); |
|
| 52 | + $_head_class = ($_head_class ? ", $_head_class" : ''); |
|
| 53 | + |
|
| 54 | + $f = chercher_filtre('boite_ouvrir'); |
|
| 55 | + $p->code = "$f($_titre$_class$_head_class)"; |
|
| 56 | + $p->interdire_scripts = false; |
|
| 57 | + |
|
| 58 | + return $p; |
|
| 59 | 59 | } |
| 60 | 60 | |
| 61 | 61 | /** |
@@ -75,14 +75,14 @@ discard block |
||
| 75 | 75 | * Pile complétée par le code à générer |
| 76 | 76 | */ |
| 77 | 77 | function balise_BOITE_PIED_dist($p) { |
| 78 | - $_class = interprete_argument_balise(1, $p); |
|
| 79 | - $_class = ($_class ? "$_class" : ''); |
|
| 78 | + $_class = interprete_argument_balise(1, $p); |
|
| 79 | + $_class = ($_class ? "$_class" : ''); |
|
| 80 | 80 | |
| 81 | - $f = chercher_filtre('boite_pied'); |
|
| 82 | - $p->code = "$f($_class)"; |
|
| 83 | - $p->interdire_scripts = false; |
|
| 81 | + $f = chercher_filtre('boite_pied'); |
|
| 82 | + $p->code = "$f($_class)"; |
|
| 83 | + $p->interdire_scripts = false; |
|
| 84 | 84 | |
| 85 | - return $p; |
|
| 85 | + return $p; |
|
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | |
@@ -102,11 +102,11 @@ discard block |
||
| 102 | 102 | * Pile complétée par le code à générer |
| 103 | 103 | */ |
| 104 | 104 | function balise_BOITE_FERMER_dist($p) { |
| 105 | - $f = chercher_filtre('boite_fermer'); |
|
| 106 | - $p->code = "$f()"; |
|
| 107 | - $p->interdire_scripts = false; |
|
| 105 | + $f = chercher_filtre('boite_fermer'); |
|
| 106 | + $p->code = "$f()"; |
|
| 107 | + $p->interdire_scripts = false; |
|
| 108 | 108 | |
| 109 | - return $p; |
|
| 109 | + return $p; |
|
| 110 | 110 | } |
| 111 | 111 | |
| 112 | 112 | /** |
@@ -128,16 +128,16 @@ discard block |
||
| 128 | 128 | * HTML du début de la boîte |
| 129 | 129 | */ |
| 130 | 130 | function boite_ouvrir($titre, $class = '', $head_class = '', $id = '') { |
| 131 | - $class = "box $class"; |
|
| 132 | - $head_class = "box__header $head_class clearfix"; |
|
| 133 | - // dans l'espace prive, titrer en h3 si pas de balise <hn> |
|
| 134 | - if (test_espace_prive() and strlen($titre) and strpos($titre, '<h') === false) { |
|
| 135 | - $titre = "<h3>$titre</h3>"; |
|
| 136 | - } |
|
| 137 | - |
|
| 138 | - return '<div class="' . $class . ($id ? "\" id=\"$id" : '') . '">' |
|
| 139 | - . ($titre ? "<div class=\"$head_class\">$titre<!--/hd--></div>" : '') |
|
| 140 | - . '<div class="box__body clearfix">'; |
|
| 131 | + $class = "box $class"; |
|
| 132 | + $head_class = "box__header $head_class clearfix"; |
|
| 133 | + // dans l'espace prive, titrer en h3 si pas de balise <hn> |
|
| 134 | + if (test_espace_prive() and strlen($titre) and strpos($titre, '<h') === false) { |
|
| 135 | + $titre = "<h3>$titre</h3>"; |
|
| 136 | + } |
|
| 137 | + |
|
| 138 | + return '<div class="' . $class . ($id ? "\" id=\"$id" : '') . '">' |
|
| 139 | + . ($titre ? "<div class=\"$head_class\">$titre<!--/hd--></div>" : '') |
|
| 140 | + . '<div class="box__body clearfix">'; |
|
| 141 | 141 | } |
| 142 | 142 | |
| 143 | 143 | |
@@ -154,10 +154,10 @@ discard block |
||
| 154 | 154 | * HTML de transition vers le pied de la boîte |
| 155 | 155 | */ |
| 156 | 156 | function boite_pied($class = 'act') { |
| 157 | - $class = "box__footer $class"; |
|
| 157 | + $class = "box__footer $class"; |
|
| 158 | 158 | |
| 159 | - return '</div>' |
|
| 160 | - . "<div class=\"$class clearfix\">"; |
|
| 159 | + return '</div>' |
|
| 160 | + . "<div class=\"$class clearfix\">"; |
|
| 161 | 161 | } |
| 162 | 162 | |
| 163 | 163 | |
@@ -172,6 +172,6 @@ discard block |
||
| 172 | 172 | * HTML de fin de la boîte |
| 173 | 173 | */ |
| 174 | 174 | function boite_fermer() { |
| 175 | - return '</div>' |
|
| 176 | - . '</div>'; |
|
| 175 | + return '</div>' |
|
| 176 | + . '</div>'; |
|
| 177 | 177 | } |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | */ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | /** |
@@ -39,7 +39,7 @@ discard block |
||
| 39 | 39 | * @uses queue_lancer_url_http_async() |
| 40 | 40 | */ |
| 41 | 41 | function action_super_cron_dist() { |
| 42 | - $url_cron = generer_url_action('cron'); |
|
| 43 | - include_spip('inc/queue'); |
|
| 44 | - queue_lancer_url_http_async($url_cron); |
|
| 42 | + $url_cron = generer_url_action('cron'); |
|
| 43 | + include_spip('inc/queue'); |
|
| 44 | + queue_lancer_url_http_async($url_cron); |
|
| 45 | 45 | } |
@@ -11,7 +11,7 @@ discard block |
||
| 11 | 11 | * @return string Le SHA de la chaîne |
| 12 | 12 | */ |
| 13 | 13 | function spip_sha256($str) { |
| 14 | - return hash('sha256', $str); |
|
| 14 | + return hash('sha256', $str); |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | /** |
@@ -22,5 +22,5 @@ discard block |
||
| 22 | 22 | * @see spip_sha256() |
| 23 | 23 | */ |
| 24 | 24 | function _nano_sha256($str, $ig_func = true) { |
| 25 | - return spip_sha256($str); |
|
| 25 | + return spip_sha256($str); |
|
| 26 | 26 | } |
@@ -2,123 +2,123 @@ |
||
| 2 | 2 | // This is a SPIP language file -- Ceci est un fichier langue de SPIP |
| 3 | 3 | // Fichier source, a modifier dans https://git.spip.net/spip/spip.git |
| 4 | 4 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 5 | - return; |
|
| 5 | + return; |
|
| 6 | 6 | } |
| 7 | 7 | |
| 8 | 8 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 9 | 9 | |
| 10 | - // A |
|
| 11 | - 'accueil_site' => 'Accueil', |
|
| 12 | - 'article' => 'Article', |
|
| 13 | - 'articles' => 'Articles', |
|
| 14 | - 'articles_auteur' => 'Articles de cet auteur', |
|
| 15 | - 'articles_populaires' => 'Articles les plus populaires', |
|
| 16 | - 'articles_rubrique' => 'Articles de cette rubrique', |
|
| 17 | - 'aucun_article' => 'Il n’y a pas d’article à cette adresse', |
|
| 18 | - 'aucun_auteur' => 'Il n’y a pas d’auteur à cette adresse', |
|
| 19 | - 'aucun_site' => 'Il n’y a pas de site à cette adresse', |
|
| 20 | - 'aucune_breve' => 'Il n’y a pas de brève à cette adresse', |
|
| 21 | - 'aucune_rubrique' => 'Il n’y a pas de rubrique à cette adresse', |
|
| 22 | - 'auteur' => 'Auteur', |
|
| 23 | - 'autres' => 'Autres', |
|
| 24 | - 'autres_breves' => 'Autres brèves', |
|
| 25 | - 'autres_groupes_mots_clefs' => 'Autres groupes de mots-clés', |
|
| 26 | - 'autres_sites' => 'Autres sites', |
|
| 27 | - |
|
| 28 | - // B |
|
| 29 | - 'bonjour' => 'Bonjour', |
|
| 30 | - |
|
| 31 | - // C |
|
| 32 | - 'commenter_site' => 'Commenter ce site', |
|
| 33 | - 'contact' => 'Contact', |
|
| 34 | - 'copie_document_impossible' => 'Impossible de copier le document', |
|
| 35 | - |
|
| 36 | - // D |
|
| 37 | - 'date' => 'Date', |
|
| 38 | - 'dernier_ajout' => 'Dernier ajout', |
|
| 39 | - 'dernieres_breves' => 'Dernières brèves', |
|
| 40 | - 'derniers_articles' => 'Derniers articles', |
|
| 41 | - 'derniers_commentaires' => 'Derniers commentaires', |
|
| 42 | - 'derniers_messages_forum' => 'Derniers messages publiés dans les forums', |
|
| 43 | - |
|
| 44 | - // E |
|
| 45 | - 'edition_mode_texte' => 'Édition en mode texte de', |
|
| 46 | - 'en_reponse' => 'En réponse à :', |
|
| 47 | - 'en_resume' => 'En résumé', |
|
| 48 | - 'envoyer_message' => 'Envoyer un message', |
|
| 49 | - 'espace_prive' => 'Espace privé', |
|
| 50 | - |
|
| 51 | - // F |
|
| 52 | - 'formats_acceptes' => 'Formats acceptés : @formats@.', |
|
| 53 | - |
|
| 54 | - // H |
|
| 55 | - 'hierarchie_site' => 'Hiérarchie du site', |
|
| 56 | - |
|
| 57 | - // J |
|
| 58 | - 'jours' => 'jours', |
|
| 59 | - |
|
| 60 | - // L |
|
| 61 | - 'lien_connecter' => 'Se connecter', |
|
| 62 | - |
|
| 63 | - // M |
|
| 64 | - 'meme_auteur' => 'Du même auteur', |
|
| 65 | - 'meme_rubrique' => 'Dans la même rubrique', |
|
| 66 | - 'memes_auteurs' => 'Des mêmes auteurs', |
|
| 67 | - 'message' => 'Message', |
|
| 68 | - 'messages_forum' => 'Messages', |
|
| 69 | - 'messages_recents' => 'Messages de forums les plus récents', |
|
| 70 | - 'mots_clef' => 'Mot-clé', |
|
| 71 | - 'mots_clefs' => 'Mots-clés', |
|
| 72 | - 'mots_clefs_meme_groupe' => 'Mots-clés dans le même groupe', |
|
| 73 | - |
|
| 74 | - // N |
|
| 75 | - 'navigation' => 'Navigation', |
|
| 76 | - 'nom' => 'Nom', |
|
| 77 | - 'nouveautes' => 'Les nouveautés', |
|
| 78 | - 'nouveautes_web' => 'Nouveautés sur le Web', |
|
| 79 | - 'nouveaux_articles' => 'Nouveaux articles', |
|
| 80 | - 'nouvelles_breves' => 'Nouvelles brèves', |
|
| 81 | - |
|
| 82 | - // P |
|
| 83 | - 'page_precedente' => 'page précédente', |
|
| 84 | - 'page_suivante' => 'page suivante', |
|
| 85 | - 'par_auteur' => 'par ', |
|
| 86 | - 'participer_site' => 'Vous pouvez participer à la vie de ce site et proposer vos propres articles en vous inscrivant ci-dessous. Vous recevrez immédiatement un email vous indiquant vos codes d’accès à l’espace privé du site.', |
|
| 87 | - 'plan_site' => 'Plan du site', |
|
| 88 | - 'popularite' => 'Popularité', |
|
| 89 | - 'poster_message' => 'Poster un message', |
|
| 90 | - 'proposer_site' => 'Vous pouvez proposer un site à ajouter dans cette rubrique :', |
|
| 91 | - |
|
| 92 | - // R |
|
| 93 | - 'repondre_article' => 'Répondre à cet article', |
|
| 94 | - 'repondre_breve' => 'Répondre à cette brève', |
|
| 95 | - 'resultats_recherche' => 'Résultats de la recherche', |
|
| 96 | - 'retour_debut_forums' => 'Retour au début des forums', |
|
| 97 | - 'rss_abonnement' => 'Copiez l’URL suivante dans votre agrégateur :', |
|
| 98 | - 'rss_abonnement_titre' => 'S’abonner', |
|
| 99 | - 'rss_abonnement_titre_page' => 'S’abonner à', |
|
| 100 | - 'rss_explication' => 'Un fil RSS recueille les informations de mise à jour d’un site. Il fournit le contenu des billets ou des commentaires ou un extrait de ceux-ci, ainsi qu’un lien vers les versions complètes et quelques autres informations. Ce fil a pour vocation d’être lu par un agrégateur RSS.', |
|
| 101 | - 'rss_explication_titre' => 'Qu’est-ce qu’un flux RSS ?', |
|
| 102 | - 'rubrique' => 'Rubrique', |
|
| 103 | - 'rubriques' => 'Rubriques', |
|
| 104 | - |
|
| 105 | - // S |
|
| 106 | - 'signatures_petition' => 'Signatures', |
|
| 107 | - 'site_realise_avec_spip' => 'Site réalisé avec SPIP', |
|
| 108 | - 'sites_web' => 'Sites Web', |
|
| 109 | - 'sous_rubriques' => 'Sous-rubriques', |
|
| 110 | - 'spam' => 'Spam', |
|
| 111 | - 'suite' => 'suite', |
|
| 112 | - 'sur_web' => 'Sur le Web', |
|
| 113 | - 'syndiquer_rubrique' => 'Syndiquer cette rubrique', |
|
| 114 | - 'syndiquer_site' => 'Syndiquer tout le site', |
|
| 115 | - |
|
| 116 | - // T |
|
| 117 | - 'texte_lettre_information' => 'Voici la lettre d’information du site', |
|
| 118 | - 'texte_lettre_information_2' => 'Cette lettre recense les nouveautés publiées depuis', |
|
| 119 | - |
|
| 120 | - // V |
|
| 121 | - 'ver_imprimer' => 'Version à imprimer', |
|
| 122 | - 'voir_en_ligne' => 'Voir en ligne', |
|
| 123 | - 'voir_squelette' => 'voir le squelette de cette page' |
|
| 10 | + // A |
|
| 11 | + 'accueil_site' => 'Accueil', |
|
| 12 | + 'article' => 'Article', |
|
| 13 | + 'articles' => 'Articles', |
|
| 14 | + 'articles_auteur' => 'Articles de cet auteur', |
|
| 15 | + 'articles_populaires' => 'Articles les plus populaires', |
|
| 16 | + 'articles_rubrique' => 'Articles de cette rubrique', |
|
| 17 | + 'aucun_article' => 'Il n’y a pas d’article à cette adresse', |
|
| 18 | + 'aucun_auteur' => 'Il n’y a pas d’auteur à cette adresse', |
|
| 19 | + 'aucun_site' => 'Il n’y a pas de site à cette adresse', |
|
| 20 | + 'aucune_breve' => 'Il n’y a pas de brève à cette adresse', |
|
| 21 | + 'aucune_rubrique' => 'Il n’y a pas de rubrique à cette adresse', |
|
| 22 | + 'auteur' => 'Auteur', |
|
| 23 | + 'autres' => 'Autres', |
|
| 24 | + 'autres_breves' => 'Autres brèves', |
|
| 25 | + 'autres_groupes_mots_clefs' => 'Autres groupes de mots-clés', |
|
| 26 | + 'autres_sites' => 'Autres sites', |
|
| 27 | + |
|
| 28 | + // B |
|
| 29 | + 'bonjour' => 'Bonjour', |
|
| 30 | + |
|
| 31 | + // C |
|
| 32 | + 'commenter_site' => 'Commenter ce site', |
|
| 33 | + 'contact' => 'Contact', |
|
| 34 | + 'copie_document_impossible' => 'Impossible de copier le document', |
|
| 35 | + |
|
| 36 | + // D |
|
| 37 | + 'date' => 'Date', |
|
| 38 | + 'dernier_ajout' => 'Dernier ajout', |
|
| 39 | + 'dernieres_breves' => 'Dernières brèves', |
|
| 40 | + 'derniers_articles' => 'Derniers articles', |
|
| 41 | + 'derniers_commentaires' => 'Derniers commentaires', |
|
| 42 | + 'derniers_messages_forum' => 'Derniers messages publiés dans les forums', |
|
| 43 | + |
|
| 44 | + // E |
|
| 45 | + 'edition_mode_texte' => 'Édition en mode texte de', |
|
| 46 | + 'en_reponse' => 'En réponse à :', |
|
| 47 | + 'en_resume' => 'En résumé', |
|
| 48 | + 'envoyer_message' => 'Envoyer un message', |
|
| 49 | + 'espace_prive' => 'Espace privé', |
|
| 50 | + |
|
| 51 | + // F |
|
| 52 | + 'formats_acceptes' => 'Formats acceptés : @formats@.', |
|
| 53 | + |
|
| 54 | + // H |
|
| 55 | + 'hierarchie_site' => 'Hiérarchie du site', |
|
| 56 | + |
|
| 57 | + // J |
|
| 58 | + 'jours' => 'jours', |
|
| 59 | + |
|
| 60 | + // L |
|
| 61 | + 'lien_connecter' => 'Se connecter', |
|
| 62 | + |
|
| 63 | + // M |
|
| 64 | + 'meme_auteur' => 'Du même auteur', |
|
| 65 | + 'meme_rubrique' => 'Dans la même rubrique', |
|
| 66 | + 'memes_auteurs' => 'Des mêmes auteurs', |
|
| 67 | + 'message' => 'Message', |
|
| 68 | + 'messages_forum' => 'Messages', |
|
| 69 | + 'messages_recents' => 'Messages de forums les plus récents', |
|
| 70 | + 'mots_clef' => 'Mot-clé', |
|
| 71 | + 'mots_clefs' => 'Mots-clés', |
|
| 72 | + 'mots_clefs_meme_groupe' => 'Mots-clés dans le même groupe', |
|
| 73 | + |
|
| 74 | + // N |
|
| 75 | + 'navigation' => 'Navigation', |
|
| 76 | + 'nom' => 'Nom', |
|
| 77 | + 'nouveautes' => 'Les nouveautés', |
|
| 78 | + 'nouveautes_web' => 'Nouveautés sur le Web', |
|
| 79 | + 'nouveaux_articles' => 'Nouveaux articles', |
|
| 80 | + 'nouvelles_breves' => 'Nouvelles brèves', |
|
| 81 | + |
|
| 82 | + // P |
|
| 83 | + 'page_precedente' => 'page précédente', |
|
| 84 | + 'page_suivante' => 'page suivante', |
|
| 85 | + 'par_auteur' => 'par ', |
|
| 86 | + 'participer_site' => 'Vous pouvez participer à la vie de ce site et proposer vos propres articles en vous inscrivant ci-dessous. Vous recevrez immédiatement un email vous indiquant vos codes d’accès à l’espace privé du site.', |
|
| 87 | + 'plan_site' => 'Plan du site', |
|
| 88 | + 'popularite' => 'Popularité', |
|
| 89 | + 'poster_message' => 'Poster un message', |
|
| 90 | + 'proposer_site' => 'Vous pouvez proposer un site à ajouter dans cette rubrique :', |
|
| 91 | + |
|
| 92 | + // R |
|
| 93 | + 'repondre_article' => 'Répondre à cet article', |
|
| 94 | + 'repondre_breve' => 'Répondre à cette brève', |
|
| 95 | + 'resultats_recherche' => 'Résultats de la recherche', |
|
| 96 | + 'retour_debut_forums' => 'Retour au début des forums', |
|
| 97 | + 'rss_abonnement' => 'Copiez l’URL suivante dans votre agrégateur :', |
|
| 98 | + 'rss_abonnement_titre' => 'S’abonner', |
|
| 99 | + 'rss_abonnement_titre_page' => 'S’abonner à', |
|
| 100 | + 'rss_explication' => 'Un fil RSS recueille les informations de mise à jour d’un site. Il fournit le contenu des billets ou des commentaires ou un extrait de ceux-ci, ainsi qu’un lien vers les versions complètes et quelques autres informations. Ce fil a pour vocation d’être lu par un agrégateur RSS.', |
|
| 101 | + 'rss_explication_titre' => 'Qu’est-ce qu’un flux RSS ?', |
|
| 102 | + 'rubrique' => 'Rubrique', |
|
| 103 | + 'rubriques' => 'Rubriques', |
|
| 104 | + |
|
| 105 | + // S |
|
| 106 | + 'signatures_petition' => 'Signatures', |
|
| 107 | + 'site_realise_avec_spip' => 'Site réalisé avec SPIP', |
|
| 108 | + 'sites_web' => 'Sites Web', |
|
| 109 | + 'sous_rubriques' => 'Sous-rubriques', |
|
| 110 | + 'spam' => 'Spam', |
|
| 111 | + 'suite' => 'suite', |
|
| 112 | + 'sur_web' => 'Sur le Web', |
|
| 113 | + 'syndiquer_rubrique' => 'Syndiquer cette rubrique', |
|
| 114 | + 'syndiquer_site' => 'Syndiquer tout le site', |
|
| 115 | + |
|
| 116 | + // T |
|
| 117 | + 'texte_lettre_information' => 'Voici la lettre d’information du site', |
|
| 118 | + 'texte_lettre_information_2' => 'Cette lettre recense les nouveautés publiées depuis', |
|
| 119 | + |
|
| 120 | + // V |
|
| 121 | + 'ver_imprimer' => 'Version à imprimer', |
|
| 122 | + 'voir_en_ligne' => 'Voir en ligne', |
|
| 123 | + 'voir_squelette' => 'voir le squelette de cette page' |
|
| 124 | 124 | ); |
@@ -4,123 +4,123 @@ |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'accueil_site' => 'Home', |
|
| 14 | - 'article' => 'Article', |
|
| 15 | - 'articles' => 'Articles', |
|
| 16 | - 'articles_auteur' => 'Articles by this author', |
|
| 17 | - 'articles_populaires' => 'Most popular articles', |
|
| 18 | - 'articles_rubrique' => 'Articles in this section', |
|
| 19 | - 'aucun_article' => 'No articles here', |
|
| 20 | - 'aucun_auteur' => 'No authors here', |
|
| 21 | - 'aucun_site' => 'No links here', |
|
| 22 | - 'aucune_breve' => 'No news items here', |
|
| 23 | - 'aucune_rubrique' => 'No sections here', |
|
| 24 | - 'auteur' => 'Author', |
|
| 25 | - 'autres' => 'Others', |
|
| 26 | - 'autres_breves' => 'Other news', |
|
| 27 | - 'autres_groupes_mots_clefs' => 'Other groups of keywords', |
|
| 28 | - 'autres_sites' => 'Other websites', |
|
| 29 | - |
|
| 30 | - // B |
|
| 31 | - 'bonjour' => 'Hello', |
|
| 32 | - |
|
| 33 | - // C |
|
| 34 | - 'commenter_site' => 'Comment on this site', |
|
| 35 | - 'contact' => 'Contact', |
|
| 36 | - 'copie_document_impossible' => 'Impossible to copy this document', |
|
| 37 | - |
|
| 38 | - // D |
|
| 39 | - 'date' => 'Date', |
|
| 40 | - 'dernier_ajout' => 'Latest update', |
|
| 41 | - 'dernieres_breves' => 'Latest news', |
|
| 42 | - 'derniers_articles' => 'Latest articles', |
|
| 43 | - 'derniers_commentaires' => 'Latest comments', |
|
| 44 | - 'derniers_messages_forum' => 'Latest forum posts', |
|
| 45 | - |
|
| 46 | - // E |
|
| 47 | - 'edition_mode_texte' => 'Text mode only', |
|
| 48 | - 'en_reponse' => 'Replying to:', |
|
| 49 | - 'en_resume' => 'Summary', |
|
| 50 | - 'envoyer_message' => 'Send a message', |
|
| 51 | - 'espace_prive' => 'Private area', |
|
| 52 | - |
|
| 53 | - // F |
|
| 54 | - 'formats_acceptes' => 'Valid formats: @formats@.', |
|
| 55 | - |
|
| 56 | - // H |
|
| 57 | - 'hierarchie_site' => 'Site map', |
|
| 58 | - |
|
| 59 | - // J |
|
| 60 | - 'jours' => 'days', |
|
| 61 | - |
|
| 62 | - // L |
|
| 63 | - 'lien_connecter' => 'Log in', |
|
| 64 | - |
|
| 65 | - // M |
|
| 66 | - 'meme_auteur' => 'By the same author', |
|
| 67 | - 'meme_rubrique' => 'Also in this section', |
|
| 68 | - 'memes_auteurs' => 'By the same authors', |
|
| 69 | - 'message' => 'Message', |
|
| 70 | - 'messages_forum' => 'Forum posts', |
|
| 71 | - 'messages_recents' => 'Most recent forum posts', |
|
| 72 | - 'mots_clef' => 'Keyword', |
|
| 73 | - 'mots_clefs' => 'Keywords', |
|
| 74 | - 'mots_clefs_meme_groupe' => 'Other keywords in this group', |
|
| 75 | - |
|
| 76 | - // N |
|
| 77 | - 'navigation' => 'Browsing', |
|
| 78 | - 'nom' => 'Name', |
|
| 79 | - 'nouveautes' => 'What’s new', |
|
| 80 | - 'nouveautes_web' => 'What’s new on the Web', |
|
| 81 | - 'nouveaux_articles' => 'New articles', |
|
| 82 | - 'nouvelles_breves' => 'Latest news items', |
|
| 83 | - |
|
| 84 | - // P |
|
| 85 | - 'page_precedente' => 'previous page', |
|
| 86 | - 'page_suivante' => 'next page', |
|
| 87 | - 'par_auteur' => 'by ', |
|
| 88 | - 'participer_site' => 'You can take active part in this website and write your own articles by signing up here. You will receive an email with your account information for the private area of the site.', |
|
| 89 | - 'plan_site' => 'Site Map', |
|
| 90 | - 'popularite' => 'Popularity', |
|
| 91 | - 'poster_message' => 'Post a message', |
|
| 92 | - 'proposer_site' => 'You can suggest a website for inclusion in this section:', |
|
| 93 | - |
|
| 94 | - // R |
|
| 95 | - 'repondre_article' => 'Comment on this article', |
|
| 96 | - 'repondre_breve' => 'Comment on this news item', |
|
| 97 | - 'resultats_recherche' => 'Search results', |
|
| 98 | - 'retour_debut_forums' => 'Back to forum top', |
|
| 99 | - 'rss_abonnement' => 'Simply copy the following URL into your aggregator:', |
|
| 100 | - 'rss_abonnement_titre' => 'Subscribe', |
|
| 101 | - 'rss_abonnement_titre_page' => 'Subscribe to', |
|
| 102 | - 'rss_explication' => 'An RSS thread collects information about a site’s update. It delivers the content of the tickets or the comments or an extract of them, as well as a link to the full versions et some other information. This thread is to be read by an RSS aggregator.', |
|
| 103 | - 'rss_explication_titre' => 'What is an RSS feed?', |
|
| 104 | - 'rubrique' => 'Section', |
|
| 105 | - 'rubriques' => 'Sections', |
|
| 106 | - |
|
| 107 | - // S |
|
| 108 | - 'signatures_petition' => 'Signatures', |
|
| 109 | - 'site_realise_avec_spip' => 'Site powered by SPIP', |
|
| 110 | - 'sites_web' => 'Websites', |
|
| 111 | - 'sous_rubriques' => 'Subsections', |
|
| 112 | - 'spam' => 'Spam', |
|
| 113 | - 'suite' => 'continue', |
|
| 114 | - 'sur_web' => 'Around the Web', |
|
| 115 | - 'syndiquer_rubrique' => 'Subscribe to this section', |
|
| 116 | - 'syndiquer_site' => 'Subscribe to the whole site', |
|
| 117 | - |
|
| 118 | - // T |
|
| 119 | - 'texte_lettre_information' => 'Here is the site newsletter', |
|
| 120 | - 'texte_lettre_information_2' => 'This site contains news items published since', |
|
| 121 | - |
|
| 122 | - // V |
|
| 123 | - 'ver_imprimer' => 'Printable version', |
|
| 124 | - 'voir_en_ligne' => 'View online', |
|
| 125 | - 'voir_squelette' => 'show the template of this page' |
|
| 12 | + // A |
|
| 13 | + 'accueil_site' => 'Home', |
|
| 14 | + 'article' => 'Article', |
|
| 15 | + 'articles' => 'Articles', |
|
| 16 | + 'articles_auteur' => 'Articles by this author', |
|
| 17 | + 'articles_populaires' => 'Most popular articles', |
|
| 18 | + 'articles_rubrique' => 'Articles in this section', |
|
| 19 | + 'aucun_article' => 'No articles here', |
|
| 20 | + 'aucun_auteur' => 'No authors here', |
|
| 21 | + 'aucun_site' => 'No links here', |
|
| 22 | + 'aucune_breve' => 'No news items here', |
|
| 23 | + 'aucune_rubrique' => 'No sections here', |
|
| 24 | + 'auteur' => 'Author', |
|
| 25 | + 'autres' => 'Others', |
|
| 26 | + 'autres_breves' => 'Other news', |
|
| 27 | + 'autres_groupes_mots_clefs' => 'Other groups of keywords', |
|
| 28 | + 'autres_sites' => 'Other websites', |
|
| 29 | + |
|
| 30 | + // B |
|
| 31 | + 'bonjour' => 'Hello', |
|
| 32 | + |
|
| 33 | + // C |
|
| 34 | + 'commenter_site' => 'Comment on this site', |
|
| 35 | + 'contact' => 'Contact', |
|
| 36 | + 'copie_document_impossible' => 'Impossible to copy this document', |
|
| 37 | + |
|
| 38 | + // D |
|
| 39 | + 'date' => 'Date', |
|
| 40 | + 'dernier_ajout' => 'Latest update', |
|
| 41 | + 'dernieres_breves' => 'Latest news', |
|
| 42 | + 'derniers_articles' => 'Latest articles', |
|
| 43 | + 'derniers_commentaires' => 'Latest comments', |
|
| 44 | + 'derniers_messages_forum' => 'Latest forum posts', |
|
| 45 | + |
|
| 46 | + // E |
|
| 47 | + 'edition_mode_texte' => 'Text mode only', |
|
| 48 | + 'en_reponse' => 'Replying to:', |
|
| 49 | + 'en_resume' => 'Summary', |
|
| 50 | + 'envoyer_message' => 'Send a message', |
|
| 51 | + 'espace_prive' => 'Private area', |
|
| 52 | + |
|
| 53 | + // F |
|
| 54 | + 'formats_acceptes' => 'Valid formats: @formats@.', |
|
| 55 | + |
|
| 56 | + // H |
|
| 57 | + 'hierarchie_site' => 'Site map', |
|
| 58 | + |
|
| 59 | + // J |
|
| 60 | + 'jours' => 'days', |
|
| 61 | + |
|
| 62 | + // L |
|
| 63 | + 'lien_connecter' => 'Log in', |
|
| 64 | + |
|
| 65 | + // M |
|
| 66 | + 'meme_auteur' => 'By the same author', |
|
| 67 | + 'meme_rubrique' => 'Also in this section', |
|
| 68 | + 'memes_auteurs' => 'By the same authors', |
|
| 69 | + 'message' => 'Message', |
|
| 70 | + 'messages_forum' => 'Forum posts', |
|
| 71 | + 'messages_recents' => 'Most recent forum posts', |
|
| 72 | + 'mots_clef' => 'Keyword', |
|
| 73 | + 'mots_clefs' => 'Keywords', |
|
| 74 | + 'mots_clefs_meme_groupe' => 'Other keywords in this group', |
|
| 75 | + |
|
| 76 | + // N |
|
| 77 | + 'navigation' => 'Browsing', |
|
| 78 | + 'nom' => 'Name', |
|
| 79 | + 'nouveautes' => 'What’s new', |
|
| 80 | + 'nouveautes_web' => 'What’s new on the Web', |
|
| 81 | + 'nouveaux_articles' => 'New articles', |
|
| 82 | + 'nouvelles_breves' => 'Latest news items', |
|
| 83 | + |
|
| 84 | + // P |
|
| 85 | + 'page_precedente' => 'previous page', |
|
| 86 | + 'page_suivante' => 'next page', |
|
| 87 | + 'par_auteur' => 'by ', |
|
| 88 | + 'participer_site' => 'You can take active part in this website and write your own articles by signing up here. You will receive an email with your account information for the private area of the site.', |
|
| 89 | + 'plan_site' => 'Site Map', |
|
| 90 | + 'popularite' => 'Popularity', |
|
| 91 | + 'poster_message' => 'Post a message', |
|
| 92 | + 'proposer_site' => 'You can suggest a website for inclusion in this section:', |
|
| 93 | + |
|
| 94 | + // R |
|
| 95 | + 'repondre_article' => 'Comment on this article', |
|
| 96 | + 'repondre_breve' => 'Comment on this news item', |
|
| 97 | + 'resultats_recherche' => 'Search results', |
|
| 98 | + 'retour_debut_forums' => 'Back to forum top', |
|
| 99 | + 'rss_abonnement' => 'Simply copy the following URL into your aggregator:', |
|
| 100 | + 'rss_abonnement_titre' => 'Subscribe', |
|
| 101 | + 'rss_abonnement_titre_page' => 'Subscribe to', |
|
| 102 | + 'rss_explication' => 'An RSS thread collects information about a site’s update. It delivers the content of the tickets or the comments or an extract of them, as well as a link to the full versions et some other information. This thread is to be read by an RSS aggregator.', |
|
| 103 | + 'rss_explication_titre' => 'What is an RSS feed?', |
|
| 104 | + 'rubrique' => 'Section', |
|
| 105 | + 'rubriques' => 'Sections', |
|
| 106 | + |
|
| 107 | + // S |
|
| 108 | + 'signatures_petition' => 'Signatures', |
|
| 109 | + 'site_realise_avec_spip' => 'Site powered by SPIP', |
|
| 110 | + 'sites_web' => 'Websites', |
|
| 111 | + 'sous_rubriques' => 'Subsections', |
|
| 112 | + 'spam' => 'Spam', |
|
| 113 | + 'suite' => 'continue', |
|
| 114 | + 'sur_web' => 'Around the Web', |
|
| 115 | + 'syndiquer_rubrique' => 'Subscribe to this section', |
|
| 116 | + 'syndiquer_site' => 'Subscribe to the whole site', |
|
| 117 | + |
|
| 118 | + // T |
|
| 119 | + 'texte_lettre_information' => 'Here is the site newsletter', |
|
| 120 | + 'texte_lettre_information_2' => 'This site contains news items published since', |
|
| 121 | + |
|
| 122 | + // V |
|
| 123 | + 'ver_imprimer' => 'Printable version', |
|
| 124 | + 'voir_en_ligne' => 'View online', |
|
| 125 | + 'voir_squelette' => 'show the template of this page' |
|
| 126 | 126 | ); |
@@ -4,123 +4,123 @@ |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'accueil_site' => 'الصفحة الرئيسية', |
|
| 14 | - 'article' => 'مقال', |
|
| 15 | - 'articles' => 'المقالات', |
|
| 16 | - 'articles_auteur' => 'مقالات هذا المؤلف', |
|
| 17 | - 'articles_populaires' => 'المقالات الأكثر شعبية', |
|
| 18 | - 'articles_rubrique' => 'مقالات هذا القسم', |
|
| 19 | - 'aucun_article' => 'لا توجد مقالات على هذا العنوان', |
|
| 20 | - 'aucun_auteur' => 'لا يوجد مؤلفون على هذا العنوان', |
|
| 21 | - 'aucun_site' => 'لا توجد مواقع على هذا العنوان', |
|
| 22 | - 'aucune_breve' => 'لا توجد أخبار على هذا العنوان', |
|
| 23 | - 'aucune_rubrique' => 'لا توجد أقسام على هذا العنوان', |
|
| 24 | - 'auteur' => 'مؤلف', |
|
| 25 | - 'autres' => 'آخرون', |
|
| 26 | - 'autres_breves' => 'أخبار أخرى', |
|
| 27 | - 'autres_groupes_mots_clefs' => 'مجموعات مفاتيح أخرى', |
|
| 28 | - 'autres_sites' => 'مواقع أخرى', |
|
| 29 | - |
|
| 30 | - // B |
|
| 31 | - 'bonjour' => 'أهلاً وسهلاً', |
|
| 32 | - |
|
| 33 | - // C |
|
| 34 | - 'commenter_site' => 'تعليق على هذا الموقع', |
|
| 35 | - 'contact' => 'للاتصال', |
|
| 36 | - 'copie_document_impossible' => 'لا يمكن نسخ المستند', |
|
| 37 | - |
|
| 38 | - // D |
|
| 39 | - 'date' => 'التاريخ', |
|
| 40 | - 'dernier_ajout' => 'آخر إضافة', |
|
| 41 | - 'dernieres_breves' => 'آخر الأخبار', |
|
| 42 | - 'derniers_articles' => 'آخر المقالات', |
|
| 43 | - 'derniers_commentaires' => 'آخر التعليقات', |
|
| 44 | - 'derniers_messages_forum' => 'آخر المشاركات المنشورة في المنتديات', |
|
| 45 | - |
|
| 46 | - // E |
|
| 47 | - 'edition_mode_texte' => 'النشرة في وضعية النصوص', |
|
| 48 | - 'en_reponse' => 'رداً على:', |
|
| 49 | - 'en_resume' => 'باختصار', |
|
| 50 | - 'envoyer_message' => 'إرسال مشاركة', |
|
| 51 | - 'espace_prive' => 'المجال الخاص', |
|
| 52 | - |
|
| 53 | - // F |
|
| 54 | - 'formats_acceptes' => 'التنسيقات المسموحة: @formats@.', |
|
| 55 | - |
|
| 56 | - // H |
|
| 57 | - 'hierarchie_site' => 'هرمية الموقع', |
|
| 58 | - |
|
| 59 | - // J |
|
| 60 | - 'jours' => 'يوم', |
|
| 61 | - |
|
| 62 | - // L |
|
| 63 | - 'lien_connecter' => 'دخول', |
|
| 64 | - |
|
| 65 | - // M |
|
| 66 | - 'meme_auteur' => 'من نفس المؤلف', |
|
| 67 | - 'meme_rubrique' => 'في هذا القسم أيضاً', |
|
| 68 | - 'memes_auteurs' => 'من المؤلفين نفسهم ايضاً', |
|
| 69 | - 'message' => 'مشاركة', |
|
| 70 | - 'messages_forum' => 'مشاركة منتدى', |
|
| 71 | - 'messages_recents' => 'أحدث المشاركات', |
|
| 72 | - 'mots_clef' => 'مفتاح', |
|
| 73 | - 'mots_clefs' => 'المفاتيح', |
|
| 74 | - 'mots_clefs_meme_groupe' => 'المفاتيح الأخرى في هذه المجموعة', |
|
| 75 | - |
|
| 76 | - // N |
|
| 77 | - 'navigation' => 'تصفح', |
|
| 78 | - 'nom' => 'الاسم', |
|
| 79 | - 'nouveautes' => 'الجديد', |
|
| 80 | - 'nouveautes_web' => 'الجديد على النسيج', |
|
| 81 | - 'nouveaux_articles' => 'المقالات الجديدة', |
|
| 82 | - 'nouvelles_breves' => 'الأخبار الجديدة', |
|
| 83 | - |
|
| 84 | - // P |
|
| 85 | - 'page_precedente' => 'الصفحة السابقة', |
|
| 86 | - 'page_suivante' => 'الصفحة التالية', |
|
| 87 | - 'par_auteur' => 'بقلم ', |
|
| 88 | - 'participer_site' => 'يمكنك المشاركة في هذا الموقع، بالتسجيل أدناه ونشر مقالاتك. وبعد التسجيل، سوف تصلك رسالة فورية بالبريد الإلكتروني تتضمن معرفك الخاص الذي يسمح لك بالدخول الى المجال الخاص.', |
|
| 89 | - 'plan_site' => 'خريطة الموقع', |
|
| 90 | - 'popularite' => 'الشعبية', |
|
| 91 | - 'poster_message' => 'إبعث برسالة', |
|
| 92 | - 'proposer_site' => 'يمكنك افتراح إضافة موقع الى هذا القسم:', |
|
| 93 | - |
|
| 94 | - // R |
|
| 95 | - 'repondre_article' => 'الرد على هذا المقال', |
|
| 96 | - 'repondre_breve' => 'الرد على هذا الخبر', |
|
| 97 | - 'resultats_recherche' => 'نتائج البحث', |
|
| 98 | - 'retour_debut_forums' => 'عودة الى بداية المنتديات', |
|
| 99 | - 'rss_abonnement' => 'نسخ عن،ان URL التالي في مجمّع RSS:', |
|
| 100 | - 'rss_abonnement_titre' => 'الاشتراك', |
|
| 101 | - 'rss_abonnement_titre_page' => 'الاشتراك في', |
|
| 102 | - 'rss_explication' => 'يجمع خيط RSS معلومات حول تحديث موقع. ويوفر محتوى تذاكر التحديث او التعليقات او مقتطفات منها إضافة الى رابط الى المحتويات الكاملة وبعض المعلومات الإضافية. هذا الخيط يُقرأ بواسطة مجمّع RSS.', |
|
| 103 | - 'rss_explication_titre' => 'ما هو تدفق RSS؟', |
|
| 104 | - 'rubrique' => 'القسم', |
|
| 105 | - 'rubriques' => 'الأقسام', |
|
| 106 | - |
|
| 107 | - // S |
|
| 108 | - 'signatures_petition' => 'التوقيعات', |
|
| 109 | - 'site_realise_avec_spip' => 'موقع صمم بنظام SPIP', |
|
| 110 | - 'sites_web' => 'مواقع النسيج', |
|
| 111 | - 'sous_rubriques' => 'الأقسام الفرعية', |
|
| 112 | - 'spam' => 'خنزرة', |
|
| 113 | - 'suite' => 'تتمة', |
|
| 114 | - 'sur_web' => 'على النسيج', |
|
| 115 | - 'syndiquer_rubrique' => 'ترخيص هذا القسم', |
|
| 116 | - 'syndiquer_site' => 'ترخيص كامل الموقع', |
|
| 117 | - |
|
| 118 | - // T |
|
| 119 | - 'texte_lettre_information' => 'ها هي نشرة الموقع', |
|
| 120 | - 'texte_lettre_information_2' => 'تحصي هذه النشرة المقالات والأخبار المنشورة منذ ', |
|
| 121 | - |
|
| 122 | - // V |
|
| 123 | - 'ver_imprimer' => 'نسخة للطباعة', |
|
| 124 | - 'voir_en_ligne' => 'عرض مباشر', |
|
| 125 | - 'voir_squelette' => 'عرض الصفحة النموذجية لهذه الصفحة' |
|
| 12 | + // A |
|
| 13 | + 'accueil_site' => 'الصفحة الرئيسية', |
|
| 14 | + 'article' => 'مقال', |
|
| 15 | + 'articles' => 'المقالات', |
|
| 16 | + 'articles_auteur' => 'مقالات هذا المؤلف', |
|
| 17 | + 'articles_populaires' => 'المقالات الأكثر شعبية', |
|
| 18 | + 'articles_rubrique' => 'مقالات هذا القسم', |
|
| 19 | + 'aucun_article' => 'لا توجد مقالات على هذا العنوان', |
|
| 20 | + 'aucun_auteur' => 'لا يوجد مؤلفون على هذا العنوان', |
|
| 21 | + 'aucun_site' => 'لا توجد مواقع على هذا العنوان', |
|
| 22 | + 'aucune_breve' => 'لا توجد أخبار على هذا العنوان', |
|
| 23 | + 'aucune_rubrique' => 'لا توجد أقسام على هذا العنوان', |
|
| 24 | + 'auteur' => 'مؤلف', |
|
| 25 | + 'autres' => 'آخرون', |
|
| 26 | + 'autres_breves' => 'أخبار أخرى', |
|
| 27 | + 'autres_groupes_mots_clefs' => 'مجموعات مفاتيح أخرى', |
|
| 28 | + 'autres_sites' => 'مواقع أخرى', |
|
| 29 | + |
|
| 30 | + // B |
|
| 31 | + 'bonjour' => 'أهلاً وسهلاً', |
|
| 32 | + |
|
| 33 | + // C |
|
| 34 | + 'commenter_site' => 'تعليق على هذا الموقع', |
|
| 35 | + 'contact' => 'للاتصال', |
|
| 36 | + 'copie_document_impossible' => 'لا يمكن نسخ المستند', |
|
| 37 | + |
|
| 38 | + // D |
|
| 39 | + 'date' => 'التاريخ', |
|
| 40 | + 'dernier_ajout' => 'آخر إضافة', |
|
| 41 | + 'dernieres_breves' => 'آخر الأخبار', |
|
| 42 | + 'derniers_articles' => 'آخر المقالات', |
|
| 43 | + 'derniers_commentaires' => 'آخر التعليقات', |
|
| 44 | + 'derniers_messages_forum' => 'آخر المشاركات المنشورة في المنتديات', |
|
| 45 | + |
|
| 46 | + // E |
|
| 47 | + 'edition_mode_texte' => 'النشرة في وضعية النصوص', |
|
| 48 | + 'en_reponse' => 'رداً على:', |
|
| 49 | + 'en_resume' => 'باختصار', |
|
| 50 | + 'envoyer_message' => 'إرسال مشاركة', |
|
| 51 | + 'espace_prive' => 'المجال الخاص', |
|
| 52 | + |
|
| 53 | + // F |
|
| 54 | + 'formats_acceptes' => 'التنسيقات المسموحة: @formats@.', |
|
| 55 | + |
|
| 56 | + // H |
|
| 57 | + 'hierarchie_site' => 'هرمية الموقع', |
|
| 58 | + |
|
| 59 | + // J |
|
| 60 | + 'jours' => 'يوم', |
|
| 61 | + |
|
| 62 | + // L |
|
| 63 | + 'lien_connecter' => 'دخول', |
|
| 64 | + |
|
| 65 | + // M |
|
| 66 | + 'meme_auteur' => 'من نفس المؤلف', |
|
| 67 | + 'meme_rubrique' => 'في هذا القسم أيضاً', |
|
| 68 | + 'memes_auteurs' => 'من المؤلفين نفسهم ايضاً', |
|
| 69 | + 'message' => 'مشاركة', |
|
| 70 | + 'messages_forum' => 'مشاركة منتدى', |
|
| 71 | + 'messages_recents' => 'أحدث المشاركات', |
|
| 72 | + 'mots_clef' => 'مفتاح', |
|
| 73 | + 'mots_clefs' => 'المفاتيح', |
|
| 74 | + 'mots_clefs_meme_groupe' => 'المفاتيح الأخرى في هذه المجموعة', |
|
| 75 | + |
|
| 76 | + // N |
|
| 77 | + 'navigation' => 'تصفح', |
|
| 78 | + 'nom' => 'الاسم', |
|
| 79 | + 'nouveautes' => 'الجديد', |
|
| 80 | + 'nouveautes_web' => 'الجديد على النسيج', |
|
| 81 | + 'nouveaux_articles' => 'المقالات الجديدة', |
|
| 82 | + 'nouvelles_breves' => 'الأخبار الجديدة', |
|
| 83 | + |
|
| 84 | + // P |
|
| 85 | + 'page_precedente' => 'الصفحة السابقة', |
|
| 86 | + 'page_suivante' => 'الصفحة التالية', |
|
| 87 | + 'par_auteur' => 'بقلم ', |
|
| 88 | + 'participer_site' => 'يمكنك المشاركة في هذا الموقع، بالتسجيل أدناه ونشر مقالاتك. وبعد التسجيل، سوف تصلك رسالة فورية بالبريد الإلكتروني تتضمن معرفك الخاص الذي يسمح لك بالدخول الى المجال الخاص.', |
|
| 89 | + 'plan_site' => 'خريطة الموقع', |
|
| 90 | + 'popularite' => 'الشعبية', |
|
| 91 | + 'poster_message' => 'إبعث برسالة', |
|
| 92 | + 'proposer_site' => 'يمكنك افتراح إضافة موقع الى هذا القسم:', |
|
| 93 | + |
|
| 94 | + // R |
|
| 95 | + 'repondre_article' => 'الرد على هذا المقال', |
|
| 96 | + 'repondre_breve' => 'الرد على هذا الخبر', |
|
| 97 | + 'resultats_recherche' => 'نتائج البحث', |
|
| 98 | + 'retour_debut_forums' => 'عودة الى بداية المنتديات', |
|
| 99 | + 'rss_abonnement' => 'نسخ عن،ان URL التالي في مجمّع RSS:', |
|
| 100 | + 'rss_abonnement_titre' => 'الاشتراك', |
|
| 101 | + 'rss_abonnement_titre_page' => 'الاشتراك في', |
|
| 102 | + 'rss_explication' => 'يجمع خيط RSS معلومات حول تحديث موقع. ويوفر محتوى تذاكر التحديث او التعليقات او مقتطفات منها إضافة الى رابط الى المحتويات الكاملة وبعض المعلومات الإضافية. هذا الخيط يُقرأ بواسطة مجمّع RSS.', |
|
| 103 | + 'rss_explication_titre' => 'ما هو تدفق RSS؟', |
|
| 104 | + 'rubrique' => 'القسم', |
|
| 105 | + 'rubriques' => 'الأقسام', |
|
| 106 | + |
|
| 107 | + // S |
|
| 108 | + 'signatures_petition' => 'التوقيعات', |
|
| 109 | + 'site_realise_avec_spip' => 'موقع صمم بنظام SPIP', |
|
| 110 | + 'sites_web' => 'مواقع النسيج', |
|
| 111 | + 'sous_rubriques' => 'الأقسام الفرعية', |
|
| 112 | + 'spam' => 'خنزرة', |
|
| 113 | + 'suite' => 'تتمة', |
|
| 114 | + 'sur_web' => 'على النسيج', |
|
| 115 | + 'syndiquer_rubrique' => 'ترخيص هذا القسم', |
|
| 116 | + 'syndiquer_site' => 'ترخيص كامل الموقع', |
|
| 117 | + |
|
| 118 | + // T |
|
| 119 | + 'texte_lettre_information' => 'ها هي نشرة الموقع', |
|
| 120 | + 'texte_lettre_information_2' => 'تحصي هذه النشرة المقالات والأخبار المنشورة منذ ', |
|
| 121 | + |
|
| 122 | + // V |
|
| 123 | + 'ver_imprimer' => 'نسخة للطباعة', |
|
| 124 | + 'voir_en_ligne' => 'عرض مباشر', |
|
| 125 | + 'voir_squelette' => 'عرض الصفحة النموذجية لهذه الصفحة' |
|
| 126 | 126 | ); |
@@ -20,15 +20,13 @@ discard block |
||
| 20 | 20 | if ($trace === '?' or defined('_DEBUG_TRACE_QUERIES')) { |
| 21 | 21 | if (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES) { |
| 22 | 22 | $trace = true; |
| 23 | - } |
|
| 24 | - else { |
|
| 23 | + } else { |
|
| 25 | 24 | if (empty($GLOBALS['visiteur_session'])) { |
| 26 | 25 | // si un anonyme fait un var_profile on est oblige de remplir le tableau des temps en attendant de savoir |
| 27 | 26 | // car ici on ne sait pas si c'est un hit anonyme |
| 28 | 27 | // ou une requete SQL faite avant chargement de la session |
| 29 | 28 | $trace = (!empty($_GET['var_profile']) ? '?' : false); |
| 30 | - } |
|
| 31 | - else { |
|
| 29 | + } else { |
|
| 32 | 30 | include_spip('inc/autoriser'); |
| 33 | 31 | // gare au bouclage sur calcul de droits au premier appel |
| 34 | 32 | // A fortiori quand on demande une trace |
@@ -50,8 +48,7 @@ discard block |
||
| 50 | 48 | // car ici on ne sait pas si c'est un hit anonyme |
| 51 | 49 | // ou une requete SQL faite avant chargement de la session |
| 52 | 50 | $trace = (!empty($_GET['var_profile']) ? '?' : false); |
| 53 | - } |
|
| 54 | - else { |
|
| 51 | + } else { |
|
| 55 | 52 | include_spip('inc/autoriser'); |
| 56 | 53 | // gare au bouclage sur calcul de droits au premier appel |
| 57 | 54 | // A fortiori quand on demande une trace |
@@ -111,13 +111,13 @@ discard block |
||
| 111 | 111 | |
| 112 | 112 | function chrono_requete($temps) { |
| 113 | 113 | $total = 0; |
| 114 | - $hors = '<i>' . _T('zbug_hors_compilation') . '</i>'; |
|
| 114 | + $hors = '<i>'._T('zbug_hors_compilation').'</i>'; |
|
| 115 | 115 | $t = $q = $n = $d = []; |
| 116 | 116 | // Totaliser les temps et completer le Explain |
| 117 | 117 | foreach ($temps as $key => $v) { |
| 118 | 118 | [$dt, $nb, $boucle, $query, $explain, $res, $contexte] = $v; |
| 119 | 119 | if (is_array($contexte)) { |
| 120 | - $k = ($contexte[0] . " $boucle"); |
|
| 120 | + $k = ($contexte[0]." $boucle"); |
|
| 121 | 121 | include_spip('public/compiler'); |
| 122 | 122 | $env = reconstruire_contexte_compil($contexte); |
| 123 | 123 | } else { |
@@ -162,7 +162,7 @@ discard block |
||
| 162 | 162 | // Fabriquer les liens de navigations dans le tableau des temps |
| 163 | 163 | foreach ($temps as $k => $v) { |
| 164 | 164 | $titre = strip_tags($v[2]); |
| 165 | - $href = quote_amp($GLOBALS['REQUEST_URI']) . "#req$i"; |
|
| 165 | + $href = quote_amp($GLOBALS['REQUEST_URI'])."#req$i"; |
|
| 166 | 166 | $href = str_replace("\\'", ''', $href); |
| 167 | 167 | |
| 168 | 168 | if (!isset($t[$v[2]])) { |
@@ -183,7 +183,7 @@ discard block |
||
| 183 | 183 | unset($d['']); |
| 184 | 184 | // Fabriquer le tableau des liens de navigation dans le grand tableau |
| 185 | 185 | foreach ($d as $k => $v) { |
| 186 | - $d[$k] = $n[$k] . "</td><td>$k</td><td class='time'>$v</td><td class='liste-reqs'>" |
|
| 186 | + $d[$k] = $n[$k]."</td><td>$k</td><td class='time'>$v</td><td class='liste-reqs'>" |
|
| 187 | 187 | . join('', $t[$k]); |
| 188 | 188 | } |
| 189 | 189 | |
@@ -193,7 +193,7 @@ discard block |
||
| 193 | 193 | . join("</td></tr>\n<tr><td>", $d) |
| 194 | 194 | . "</td></tr>\n" |
| 195 | 195 | . (# _request('var_mode_objet') ? '' : |
| 196 | - ('<tr><td>' . (is_countable($temps) ? count($temps) : 0) . '</td><td>' . _T('info_total') . '</td><td class="time">' . $total . '</td><td></td></tr>')) |
|
| 196 | + ('<tr><td>'.(is_countable($temps) ? count($temps) : 0).'</td><td>'._T('info_total').'</td><td class="time">'.$total.'</td><td></td></tr>')) |
|
| 197 | 197 | ]; |
| 198 | 198 | |
| 199 | 199 | return [$temps, $navigation]; |
@@ -11,187 +11,187 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | function trace_query_start() { |
| 18 | - static $trace = '?'; |
|
| 19 | - if ($trace === '?' or defined('_DEBUG_TRACE_QUERIES')) { |
|
| 20 | - if (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES) { |
|
| 21 | - $trace = true; |
|
| 22 | - } |
|
| 23 | - else { |
|
| 24 | - if (empty($GLOBALS['visiteur_session'])) { |
|
| 25 | - // si un anonyme fait un var_profile on est oblige de remplir le tableau des temps en attendant de savoir |
|
| 26 | - // car ici on ne sait pas si c'est un hit anonyme |
|
| 27 | - // ou une requete SQL faite avant chargement de la session |
|
| 28 | - $trace = (!empty($_GET['var_profile']) ? '?' : false); |
|
| 29 | - } |
|
| 30 | - else { |
|
| 31 | - include_spip('inc/autoriser'); |
|
| 32 | - // gare au bouclage sur calcul de droits au premier appel |
|
| 33 | - // A fortiori quand on demande une trace |
|
| 34 | - $trace = false; // on ne trace pas la requete provoquee par autoriser('debug') |
|
| 35 | - $trace = (!empty($_GET['var_profile']) and autoriser('debug')); |
|
| 36 | - } |
|
| 37 | - } |
|
| 38 | - } |
|
| 39 | - |
|
| 40 | - return $trace ? microtime() : 0; |
|
| 18 | + static $trace = '?'; |
|
| 19 | + if ($trace === '?' or defined('_DEBUG_TRACE_QUERIES')) { |
|
| 20 | + if (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES) { |
|
| 21 | + $trace = true; |
|
| 22 | + } |
|
| 23 | + else { |
|
| 24 | + if (empty($GLOBALS['visiteur_session'])) { |
|
| 25 | + // si un anonyme fait un var_profile on est oblige de remplir le tableau des temps en attendant de savoir |
|
| 26 | + // car ici on ne sait pas si c'est un hit anonyme |
|
| 27 | + // ou une requete SQL faite avant chargement de la session |
|
| 28 | + $trace = (!empty($_GET['var_profile']) ? '?' : false); |
|
| 29 | + } |
|
| 30 | + else { |
|
| 31 | + include_spip('inc/autoriser'); |
|
| 32 | + // gare au bouclage sur calcul de droits au premier appel |
|
| 33 | + // A fortiori quand on demande une trace |
|
| 34 | + $trace = false; // on ne trace pas la requete provoquee par autoriser('debug') |
|
| 35 | + $trace = (!empty($_GET['var_profile']) and autoriser('debug')); |
|
| 36 | + } |
|
| 37 | + } |
|
| 38 | + } |
|
| 39 | + |
|
| 40 | + return $trace ? microtime() : 0; |
|
| 41 | 41 | } |
| 42 | 42 | |
| 43 | 43 | function trace_query_end($query, $start, $result, $erreur, $serveur = '') { |
| 44 | - static $trace = '?'; |
|
| 45 | - if ($trace === '?') { |
|
| 46 | - if (empty($GLOBALS['visiteur_session'])) { |
|
| 47 | - // si un anonyme fait un var_profile on est oblige de remplir le tableau des temps en attendant de savoir |
|
| 48 | - // car ici on ne sait pas si c'est un hit anonyme |
|
| 49 | - // ou une requete SQL faite avant chargement de la session |
|
| 50 | - $trace = (!empty($_GET['var_profile']) ? '?' : false); |
|
| 51 | - } |
|
| 52 | - else { |
|
| 53 | - include_spip('inc/autoriser'); |
|
| 54 | - // gare au bouclage sur calcul de droits au premier appel |
|
| 55 | - // A fortiori quand on demande une trace |
|
| 56 | - $trace = false; // on ne trace pas la requete provoquee par autoriser('debug') |
|
| 57 | - $trace = (!empty($_GET['var_profile']) and autoriser('debug')); |
|
| 58 | - } |
|
| 59 | - } |
|
| 60 | - if ($start) { |
|
| 61 | - $end = microtime(); |
|
| 62 | - [$usec, $sec] = explode(' ', $start); |
|
| 63 | - [$usec2, $sec2] = explode(' ', $end); |
|
| 64 | - $dt = $sec2 + $usec2 - $sec - $usec; |
|
| 65 | - pipeline('trig_trace_query', ['query' => $query, 'start' => $start, 'end' => $end, 'time' => $dt, 'result' => $result, 'erreur' => $erreur, 'serveur' => $serveur]); |
|
| 66 | - if ($trace) { |
|
| 67 | - trace_query_chrono($dt, $query, $result, $serveur); |
|
| 68 | - } |
|
| 69 | - } |
|
| 70 | - // tracer les erreurs, sauf pour select, c'est fait dans abstract_sql |
|
| 71 | - if ($trace and $erreur and !preg_match('/^select\b/i', $query)) { |
|
| 72 | - erreur_squelette([sql_errno($serveur), $erreur, $query]); |
|
| 73 | - } |
|
| 74 | - |
|
| 75 | - return $result; |
|
| 44 | + static $trace = '?'; |
|
| 45 | + if ($trace === '?') { |
|
| 46 | + if (empty($GLOBALS['visiteur_session'])) { |
|
| 47 | + // si un anonyme fait un var_profile on est oblige de remplir le tableau des temps en attendant de savoir |
|
| 48 | + // car ici on ne sait pas si c'est un hit anonyme |
|
| 49 | + // ou une requete SQL faite avant chargement de la session |
|
| 50 | + $trace = (!empty($_GET['var_profile']) ? '?' : false); |
|
| 51 | + } |
|
| 52 | + else { |
|
| 53 | + include_spip('inc/autoriser'); |
|
| 54 | + // gare au bouclage sur calcul de droits au premier appel |
|
| 55 | + // A fortiori quand on demande une trace |
|
| 56 | + $trace = false; // on ne trace pas la requete provoquee par autoriser('debug') |
|
| 57 | + $trace = (!empty($_GET['var_profile']) and autoriser('debug')); |
|
| 58 | + } |
|
| 59 | + } |
|
| 60 | + if ($start) { |
|
| 61 | + $end = microtime(); |
|
| 62 | + [$usec, $sec] = explode(' ', $start); |
|
| 63 | + [$usec2, $sec2] = explode(' ', $end); |
|
| 64 | + $dt = $sec2 + $usec2 - $sec - $usec; |
|
| 65 | + pipeline('trig_trace_query', ['query' => $query, 'start' => $start, 'end' => $end, 'time' => $dt, 'result' => $result, 'erreur' => $erreur, 'serveur' => $serveur]); |
|
| 66 | + if ($trace) { |
|
| 67 | + trace_query_chrono($dt, $query, $result, $serveur); |
|
| 68 | + } |
|
| 69 | + } |
|
| 70 | + // tracer les erreurs, sauf pour select, c'est fait dans abstract_sql |
|
| 71 | + if ($trace and $erreur and !preg_match('/^select\b/i', $query)) { |
|
| 72 | + erreur_squelette([sql_errno($serveur), $erreur, $query]); |
|
| 73 | + } |
|
| 74 | + |
|
| 75 | + return $result; |
|
| 76 | 76 | } |
| 77 | 77 | |
| 78 | 78 | function trace_query_chrono($dt, $query, $result, $serveur = '') { |
| 79 | - include_spip('inc/filtres_mini'); |
|
| 80 | - static $tt = 0, $nb = 0; |
|
| 81 | - |
|
| 82 | - $x = _request('var_mode_objet'); |
|
| 83 | - if (isset($GLOBALS['debug']['aucasou'])) { |
|
| 84 | - [, $boucle, $serveur, $contexte] = $GLOBALS['debug']['aucasou']; |
|
| 85 | - if ($x and !preg_match("/$boucle\$/", $x)) { |
|
| 86 | - return; |
|
| 87 | - } |
|
| 88 | - if ($serveur) { |
|
| 89 | - $boucle .= " ($serveur)"; |
|
| 90 | - } |
|
| 91 | - $boucle = "<b>$boucle</b>"; |
|
| 92 | - } else { |
|
| 93 | - if ($x) { |
|
| 94 | - return; |
|
| 95 | - } |
|
| 96 | - $boucle = $contexte = ''; |
|
| 97 | - } |
|
| 98 | - |
|
| 99 | - $tt += $dt; |
|
| 100 | - $nb++; |
|
| 101 | - |
|
| 102 | - $q = preg_replace('/([a-z)`])\s+([A-Z])/', "$1\n<br />$2", spip_htmlentities($query)); |
|
| 103 | - $e = sql_explain($query, $serveur); |
|
| 104 | - $r = str_replace('Resource id ', '', (is_object($result) ? get_class($result) : $result)); |
|
| 105 | - $GLOBALS['tableau_des_temps'][] = [$dt, $nb, $boucle, $q, $e, $r, $contexte]; |
|
| 79 | + include_spip('inc/filtres_mini'); |
|
| 80 | + static $tt = 0, $nb = 0; |
|
| 81 | + |
|
| 82 | + $x = _request('var_mode_objet'); |
|
| 83 | + if (isset($GLOBALS['debug']['aucasou'])) { |
|
| 84 | + [, $boucle, $serveur, $contexte] = $GLOBALS['debug']['aucasou']; |
|
| 85 | + if ($x and !preg_match("/$boucle\$/", $x)) { |
|
| 86 | + return; |
|
| 87 | + } |
|
| 88 | + if ($serveur) { |
|
| 89 | + $boucle .= " ($serveur)"; |
|
| 90 | + } |
|
| 91 | + $boucle = "<b>$boucle</b>"; |
|
| 92 | + } else { |
|
| 93 | + if ($x) { |
|
| 94 | + return; |
|
| 95 | + } |
|
| 96 | + $boucle = $contexte = ''; |
|
| 97 | + } |
|
| 98 | + |
|
| 99 | + $tt += $dt; |
|
| 100 | + $nb++; |
|
| 101 | + |
|
| 102 | + $q = preg_replace('/([a-z)`])\s+([A-Z])/', "$1\n<br />$2", spip_htmlentities($query)); |
|
| 103 | + $e = sql_explain($query, $serveur); |
|
| 104 | + $r = str_replace('Resource id ', '', (is_object($result) ? get_class($result) : $result)); |
|
| 105 | + $GLOBALS['tableau_des_temps'][] = [$dt, $nb, $boucle, $q, $e, $r, $contexte]; |
|
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | |
| 109 | 109 | function chrono_requete($temps) { |
| 110 | - $total = 0; |
|
| 111 | - $hors = '<i>' . _T('zbug_hors_compilation') . '</i>'; |
|
| 112 | - $t = $q = $n = $d = []; |
|
| 113 | - // Totaliser les temps et completer le Explain |
|
| 114 | - foreach ($temps as $key => $v) { |
|
| 115 | - [$dt, $nb, $boucle, $query, $explain, $res, $contexte] = $v; |
|
| 116 | - if (is_array($contexte)) { |
|
| 117 | - $k = ($contexte[0] . " $boucle"); |
|
| 118 | - include_spip('public/compiler'); |
|
| 119 | - $env = reconstruire_contexte_compil($contexte); |
|
| 120 | - } else { |
|
| 121 | - $k = $env = $boucle; |
|
| 122 | - } |
|
| 123 | - |
|
| 124 | - $total += $dt; |
|
| 125 | - $t[$key] = $dt; |
|
| 126 | - $q[$key] = $nb; |
|
| 127 | - if (!isset($d[$k])) { |
|
| 128 | - $d[$k] = 0; |
|
| 129 | - $n[$k] = 0; |
|
| 130 | - } |
|
| 131 | - $d[$k] += $dt; |
|
| 132 | - ++$n[$k]; |
|
| 133 | - |
|
| 134 | - if (!is_array($explain)) { |
|
| 135 | - $explain = []; |
|
| 136 | - } |
|
| 137 | - foreach ($explain as $j => $v) { |
|
| 138 | - $explain[$j] = "<tr><th>$j</th><td>" |
|
| 139 | - . str_replace(';', '<br />', $v) |
|
| 140 | - . '</td></tr>'; |
|
| 141 | - } |
|
| 142 | - $e = "<table class='explain'>" |
|
| 143 | - . '<caption>' |
|
| 144 | - . $query |
|
| 145 | - . '</caption>' |
|
| 146 | - . "<tr><th>Time</th><td>$dt</td></tr>" |
|
| 147 | - . "<tr><th>Order</th><td>$nb</td></tr>" |
|
| 148 | - . "<tr><th>Res</th><td>$res</td></tr>" |
|
| 149 | - . join('', $explain) |
|
| 150 | - . '</table>'; |
|
| 151 | - |
|
| 152 | - $temps[$key] = [$e, $env, $k]; |
|
| 153 | - } |
|
| 154 | - // Trier par temps d'execution decroissant |
|
| 155 | - array_multisort($t, SORT_DESC, $q, $temps); |
|
| 156 | - arsort($d); |
|
| 157 | - $i = 1; |
|
| 158 | - $t = []; |
|
| 159 | - // Fabriquer les liens de navigations dans le tableau des temps |
|
| 160 | - foreach ($temps as $k => $v) { |
|
| 161 | - $titre = strip_tags($v[2]); |
|
| 162 | - $href = quote_amp($GLOBALS['REQUEST_URI']) . "#req$i"; |
|
| 163 | - $href = str_replace("\\'", ''', $href); |
|
| 164 | - |
|
| 165 | - if (!isset($t[$v[2]])) { |
|
| 166 | - $t[$v[2]] = []; |
|
| 167 | - } |
|
| 168 | - $t[$v[2]][] = "<span class='spip-debug-arg'> " |
|
| 169 | - . "<a title='$titre' href='$href'>$i</a>" |
|
| 170 | - . '</span>' |
|
| 171 | - . ((count($t[$v[2]]) % 10 == 9) ? '<br />' : ''); |
|
| 172 | - $i++; |
|
| 173 | - } |
|
| 174 | - |
|
| 175 | - if ($d['']) { |
|
| 176 | - $d[$hors] = $d['']; |
|
| 177 | - $n[$hors] = $n['']; |
|
| 178 | - $t[$hors] = $t['']; |
|
| 179 | - } |
|
| 180 | - unset($d['']); |
|
| 181 | - // Fabriquer le tableau des liens de navigation dans le grand tableau |
|
| 182 | - foreach ($d as $k => $v) { |
|
| 183 | - $d[$k] = $n[$k] . "</td><td>$k</td><td class='time'>$v</td><td class='liste-reqs'>" |
|
| 184 | - . join('', $t[$k]); |
|
| 185 | - } |
|
| 186 | - |
|
| 187 | - $navigation = [ |
|
| 188 | - _T('zbug_statistiques'), |
|
| 189 | - '<tr><td>' |
|
| 190 | - . join("</td></tr>\n<tr><td>", $d) |
|
| 191 | - . "</td></tr>\n" |
|
| 192 | - . (# _request('var_mode_objet') ? '' : |
|
| 193 | - ('<tr><td>' . (is_countable($temps) ? count($temps) : 0) . '</td><td>' . _T('info_total') . '</td><td class="time">' . $total . '</td><td></td></tr>')) |
|
| 194 | - ]; |
|
| 195 | - |
|
| 196 | - return [$temps, $navigation]; |
|
| 110 | + $total = 0; |
|
| 111 | + $hors = '<i>' . _T('zbug_hors_compilation') . '</i>'; |
|
| 112 | + $t = $q = $n = $d = []; |
|
| 113 | + // Totaliser les temps et completer le Explain |
|
| 114 | + foreach ($temps as $key => $v) { |
|
| 115 | + [$dt, $nb, $boucle, $query, $explain, $res, $contexte] = $v; |
|
| 116 | + if (is_array($contexte)) { |
|
| 117 | + $k = ($contexte[0] . " $boucle"); |
|
| 118 | + include_spip('public/compiler'); |
|
| 119 | + $env = reconstruire_contexte_compil($contexte); |
|
| 120 | + } else { |
|
| 121 | + $k = $env = $boucle; |
|
| 122 | + } |
|
| 123 | + |
|
| 124 | + $total += $dt; |
|
| 125 | + $t[$key] = $dt; |
|
| 126 | + $q[$key] = $nb; |
|
| 127 | + if (!isset($d[$k])) { |
|
| 128 | + $d[$k] = 0; |
|
| 129 | + $n[$k] = 0; |
|
| 130 | + } |
|
| 131 | + $d[$k] += $dt; |
|
| 132 | + ++$n[$k]; |
|
| 133 | + |
|
| 134 | + if (!is_array($explain)) { |
|
| 135 | + $explain = []; |
|
| 136 | + } |
|
| 137 | + foreach ($explain as $j => $v) { |
|
| 138 | + $explain[$j] = "<tr><th>$j</th><td>" |
|
| 139 | + . str_replace(';', '<br />', $v) |
|
| 140 | + . '</td></tr>'; |
|
| 141 | + } |
|
| 142 | + $e = "<table class='explain'>" |
|
| 143 | + . '<caption>' |
|
| 144 | + . $query |
|
| 145 | + . '</caption>' |
|
| 146 | + . "<tr><th>Time</th><td>$dt</td></tr>" |
|
| 147 | + . "<tr><th>Order</th><td>$nb</td></tr>" |
|
| 148 | + . "<tr><th>Res</th><td>$res</td></tr>" |
|
| 149 | + . join('', $explain) |
|
| 150 | + . '</table>'; |
|
| 151 | + |
|
| 152 | + $temps[$key] = [$e, $env, $k]; |
|
| 153 | + } |
|
| 154 | + // Trier par temps d'execution decroissant |
|
| 155 | + array_multisort($t, SORT_DESC, $q, $temps); |
|
| 156 | + arsort($d); |
|
| 157 | + $i = 1; |
|
| 158 | + $t = []; |
|
| 159 | + // Fabriquer les liens de navigations dans le tableau des temps |
|
| 160 | + foreach ($temps as $k => $v) { |
|
| 161 | + $titre = strip_tags($v[2]); |
|
| 162 | + $href = quote_amp($GLOBALS['REQUEST_URI']) . "#req$i"; |
|
| 163 | + $href = str_replace("\\'", ''', $href); |
|
| 164 | + |
|
| 165 | + if (!isset($t[$v[2]])) { |
|
| 166 | + $t[$v[2]] = []; |
|
| 167 | + } |
|
| 168 | + $t[$v[2]][] = "<span class='spip-debug-arg'> " |
|
| 169 | + . "<a title='$titre' href='$href'>$i</a>" |
|
| 170 | + . '</span>' |
|
| 171 | + . ((count($t[$v[2]]) % 10 == 9) ? '<br />' : ''); |
|
| 172 | + $i++; |
|
| 173 | + } |
|
| 174 | + |
|
| 175 | + if ($d['']) { |
|
| 176 | + $d[$hors] = $d['']; |
|
| 177 | + $n[$hors] = $n['']; |
|
| 178 | + $t[$hors] = $t['']; |
|
| 179 | + } |
|
| 180 | + unset($d['']); |
|
| 181 | + // Fabriquer le tableau des liens de navigation dans le grand tableau |
|
| 182 | + foreach ($d as $k => $v) { |
|
| 183 | + $d[$k] = $n[$k] . "</td><td>$k</td><td class='time'>$v</td><td class='liste-reqs'>" |
|
| 184 | + . join('', $t[$k]); |
|
| 185 | + } |
|
| 186 | + |
|
| 187 | + $navigation = [ |
|
| 188 | + _T('zbug_statistiques'), |
|
| 189 | + '<tr><td>' |
|
| 190 | + . join("</td></tr>\n<tr><td>", $d) |
|
| 191 | + . "</td></tr>\n" |
|
| 192 | + . (# _request('var_mode_objet') ? '' : |
|
| 193 | + ('<tr><td>' . (is_countable($temps) ? count($temps) : 0) . '</td><td>' . _T('info_total') . '</td><td class="time">' . $total . '</td><td></td></tr>')) |
|
| 194 | + ]; |
|
| 195 | + |
|
| 196 | + return [$temps, $navigation]; |
|
| 197 | 197 | } |