@@ -18,7 +18,7 @@ discard block |
||
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | 19 | return; |
| 20 | 20 | } |
| 21 | -require_once _ROOT_RESTREINT . 'base/objets.php'; |
|
| 21 | +require_once _ROOT_RESTREINT.'base/objets.php'; |
|
| 22 | 22 | |
| 23 | 23 | |
| 24 | 24 | /** |
@@ -59,7 +59,7 @@ discard block |
||
| 59 | 59 | $f = (!preg_match('/^[\w\.]*$/', $serveur)) |
| 60 | 60 | ? '' // nom de serveur mal ecrit |
| 61 | 61 | : ($serveur ? |
| 62 | - (_DIR_CONNECT . $serveur . '.php') // serveur externe |
|
| 62 | + (_DIR_CONNECT.$serveur.'.php') // serveur externe |
|
| 63 | 63 | : (_FILE_CONNECT ?: ($install ? _FILE_CONNECT_TMP // init du serveur principal |
| 64 | 64 | : ''))); // installation pas faite |
| 65 | 65 | |
@@ -101,9 +101,9 @@ discard block |
||
| 101 | 101 | // chargement de la version du jeu de fonctions |
| 102 | 102 | // si pas dans le fichier par defaut |
| 103 | 103 | $type = $GLOBALS['db_ok']['type']; |
| 104 | - $jeu = 'spip_' . $type . '_functions_' . $version; |
|
| 104 | + $jeu = 'spip_'.$type.'_functions_'.$version; |
|
| 105 | 105 | if (!isset($GLOBALS[$jeu])) { |
| 106 | - if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) { |
|
| 106 | + if (!find_in_path($type.'_'.$version.'.php', 'req/', true)) { |
|
| 107 | 107 | spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS); |
| 108 | 108 | |
| 109 | 109 | // ne plus reessayer |
@@ -165,9 +165,9 @@ discard block |
||
| 165 | 165 | $connexion = spip_connect($serveur); |
| 166 | 166 | $e = sql_errno($serveur); |
| 167 | 167 | $t = ($connexion['type'] ?? 'sql'); |
| 168 | - $m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim($connexion['last']); |
|
| 169 | - $f = $t . $serveur; |
|
| 170 | - spip_log($m, $f . '.' . _LOG_ERREUR); |
|
| 168 | + $m = "Erreur $e de $t: ".sql_error($serveur)."\nin ".sql_error_backtrace()."\n".trim($connexion['last']); |
|
| 169 | + $f = $t.$serveur; |
|
| 170 | + spip_log($m, $f.'.'._LOG_ERREUR); |
|
| 171 | 171 | } |
| 172 | 172 | |
| 173 | 173 | /** |
@@ -253,7 +253,7 @@ discard block |
||
| 253 | 253 | // si en cours d'installation ou si db=@test@ on ne pose rien |
| 254 | 254 | // car c'est un test de connexion |
| 255 | 255 | if (!defined('_ECRIRE_INSTALL') and $db !== '@test@') { |
| 256 | - $f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out'; |
|
| 256 | + $f = _DIR_TMP.$type.'.'.substr(md5($host.$port.$db), 0, 8).'.out'; |
|
| 257 | 257 | } elseif ($db == '@test@') { |
| 258 | 258 | $db = ''; |
| 259 | 259 | } |
@@ -292,7 +292,7 @@ discard block |
||
| 292 | 292 | // En cas d'indisponibilite du serveur, eviter de le bombarder |
| 293 | 293 | if ($f) { |
| 294 | 294 | @touch($f); |
| 295 | - spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type . '.' . _LOG_HS); |
|
| 295 | + spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type.'.'._LOG_HS); |
|
| 296 | 296 | } |
| 297 | 297 | return null; |
| 298 | 298 | } |
@@ -390,11 +390,11 @@ discard block |
||
| 390 | 390 | } elseif (is_array($a)) { |
| 391 | 391 | return join(',', array_map('_q', $a)); |
| 392 | 392 | } elseif (is_scalar($a)) { |
| 393 | - return ("'" . addslashes($a) . "'"); |
|
| 393 | + return ("'".addslashes($a)."'"); |
|
| 394 | 394 | } elseif ($a === null) { |
| 395 | 395 | return "''"; |
| 396 | 396 | } |
| 397 | - throw new \RuntimeException('Can’t use _q with ' . gettype($a)); |
|
| 397 | + throw new \RuntimeException('Can’t use _q with '.gettype($a)); |
|
| 398 | 398 | } |
| 399 | 399 | |
| 400 | 400 | /** |
@@ -445,7 +445,7 @@ discard block |
||
| 445 | 445 | $next = reset($textes); |
| 446 | 446 | if ( |
| 447 | 447 | strpos($next, "'") === 0 |
| 448 | - and strpos($query_echappees, $part . $next, $currentpos) === $nextpos |
|
| 448 | + and strpos($query_echappees, $part.$next, $currentpos) === $nextpos |
|
| 449 | 449 | ) { |
| 450 | 450 | $part .= array_shift($textes); |
| 451 | 451 | } |
@@ -457,7 +457,7 @@ discard block |
||
| 457 | 457 | $parts[$k] = [ |
| 458 | 458 | 'texte' => $part, |
| 459 | 459 | 'position' => $nextpos, |
| 460 | - 'placeholder' => '%' . $k . '$s', |
|
| 460 | + 'placeholder' => '%'.$k.'$s', |
|
| 461 | 461 | ]; |
| 462 | 462 | $currentpos = $nextpos + strlen($part); |
| 463 | 463 | } |
@@ -448,8 +448,7 @@ |
||
| 448 | 448 | and strpos($query_echappees, $part . $next, $currentpos) === $nextpos |
| 449 | 449 | ) { |
| 450 | 450 | $part .= array_shift($textes); |
| 451 | - } |
|
| 452 | - else { |
|
| 451 | + } else { |
|
| 453 | 452 | break; |
| 454 | 453 | } |
| 455 | 454 | } |
@@ -16,7 +16,7 @@ discard block |
||
| 16 | 16 | * @package SPIP\Core\SQL |
| 17 | 17 | **/ |
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | - return; |
|
| 19 | + return; |
|
| 20 | 20 | } |
| 21 | 21 | require_once _ROOT_RESTREINT . 'base/objets.php'; |
| 22 | 22 | |
@@ -42,118 +42,118 @@ discard block |
||
| 42 | 42 | **/ |
| 43 | 43 | function spip_connect($serveur = '', $version = '') { |
| 44 | 44 | |
| 45 | - $serveur = !is_string($serveur) ? '' : strtolower($serveur); |
|
| 46 | - $index = $serveur ?: 0; |
|
| 47 | - if (!$version) { |
|
| 48 | - $version = $GLOBALS['spip_sql_version']; |
|
| 49 | - } |
|
| 50 | - if (isset($GLOBALS['connexions'][$index][$version])) { |
|
| 51 | - return $GLOBALS['connexions'][$index]; |
|
| 52 | - } |
|
| 53 | - |
|
| 54 | - include_spip('base/abstract_sql'); |
|
| 55 | - $install = (_request('exec') == 'install'); |
|
| 56 | - |
|
| 57 | - // Premiere connexion ? |
|
| 58 | - if (!($old = isset($GLOBALS['connexions'][$index]))) { |
|
| 59 | - $f = (!preg_match('/^[\w\.]*$/', $serveur)) |
|
| 60 | - ? '' // nom de serveur mal ecrit |
|
| 61 | - : ($serveur ? |
|
| 62 | - (_DIR_CONNECT . $serveur . '.php') // serveur externe |
|
| 63 | - : (_FILE_CONNECT ?: ($install ? _FILE_CONNECT_TMP // init du serveur principal |
|
| 64 | - : ''))); // installation pas faite |
|
| 65 | - |
|
| 66 | - unset($GLOBALS['db_ok']); |
|
| 67 | - unset($GLOBALS['spip_connect_version']); |
|
| 68 | - if ($f) { |
|
| 69 | - if (is_readable($f)) { |
|
| 70 | - include($f); |
|
| 71 | - } elseif ($serveur and !$install) { |
|
| 72 | - // chercher une declaration de serveur dans le path |
|
| 73 | - // qui pourra un jour servir a declarer des bases sqlite |
|
| 74 | - // par des plugins. Et sert aussi aux boucles POUR. |
|
| 75 | - find_in_path("$serveur.php", 'connect/', true); |
|
| 76 | - } |
|
| 77 | - } |
|
| 78 | - if (!isset($GLOBALS['db_ok'])) { |
|
| 79 | - // fera mieux la prochaine fois |
|
| 80 | - if ($install) { |
|
| 81 | - return false; |
|
| 82 | - } |
|
| 83 | - if ($f and is_readable($f)) { |
|
| 84 | - spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE); |
|
| 85 | - } else { |
|
| 86 | - spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE); |
|
| 87 | - } |
|
| 88 | - spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS); |
|
| 89 | - |
|
| 90 | - // ne plus reessayer si ce n'est pas l'install |
|
| 91 | - return $GLOBALS['connexions'][$index] = false; |
|
| 92 | - } |
|
| 93 | - $GLOBALS['connexions'][$index] = $GLOBALS['db_ok']; |
|
| 94 | - } |
|
| 95 | - // si la connexion a deja ete tentee mais a echoue, le dire! |
|
| 96 | - if (!$GLOBALS['connexions'][$index]) { |
|
| 97 | - return false; |
|
| 98 | - } |
|
| 99 | - |
|
| 100 | - // la connexion a reussi ou etait deja faite. |
|
| 101 | - // chargement de la version du jeu de fonctions |
|
| 102 | - // si pas dans le fichier par defaut |
|
| 103 | - $type = $GLOBALS['db_ok']['type']; |
|
| 104 | - $jeu = 'spip_' . $type . '_functions_' . $version; |
|
| 105 | - if (!isset($GLOBALS[$jeu])) { |
|
| 106 | - if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) { |
|
| 107 | - spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS); |
|
| 108 | - |
|
| 109 | - // ne plus reessayer |
|
| 110 | - return $GLOBALS['connexions'][$index][$version] = []; |
|
| 111 | - } |
|
| 112 | - } |
|
| 113 | - $GLOBALS['connexions'][$index][$version] = $GLOBALS[$jeu]; |
|
| 114 | - if ($old) { |
|
| 115 | - return $GLOBALS['connexions'][$index]; |
|
| 116 | - } |
|
| 117 | - |
|
| 118 | - $GLOBALS['connexions'][$index]['spip_connect_version'] = $GLOBALS['spip_connect_version'] ?? 0; |
|
| 119 | - |
|
| 120 | - // initialisation de l'alphabet utilise dans les connexions SQL |
|
| 121 | - // si l'installation l'a determine. |
|
| 122 | - // Celui du serveur principal l'impose aux serveurs secondaires |
|
| 123 | - // s'ils le connaissent |
|
| 124 | - |
|
| 125 | - if (!$serveur) { |
|
| 126 | - $charset = spip_connect_main($GLOBALS[$jeu], $GLOBALS['db_ok']['charset']); |
|
| 127 | - if (!$charset) { |
|
| 128 | - unset($GLOBALS['connexions'][$index]); |
|
| 129 | - spip_log('spip_connect: absence de charset', _LOG_AVERTISSEMENT); |
|
| 130 | - |
|
| 131 | - return false; |
|
| 132 | - } |
|
| 133 | - } else { |
|
| 134 | - if ($GLOBALS['db_ok']['charset']) { |
|
| 135 | - $charset = $GLOBALS['db_ok']['charset']; |
|
| 136 | - } |
|
| 137 | - // spip_meta n'existe pas toujours dans la base |
|
| 138 | - // C'est le cas d'un dump sqlite par exemple |
|
| 139 | - elseif ( |
|
| 140 | - $GLOBALS['connexions'][$index]['spip_connect_version'] |
|
| 141 | - and sql_showtable('spip_meta', true, $serveur) |
|
| 142 | - and $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur) |
|
| 143 | - ) { |
|
| 144 | - $charset = $r; |
|
| 145 | - } else { |
|
| 146 | - $charset = -1; |
|
| 147 | - } |
|
| 148 | - } |
|
| 149 | - if ($charset != -1) { |
|
| 150 | - $f = $GLOBALS[$jeu]['set_charset']; |
|
| 151 | - if (function_exists($f)) { |
|
| 152 | - $f($charset, $serveur); |
|
| 153 | - } |
|
| 154 | - } |
|
| 155 | - |
|
| 156 | - return $GLOBALS['connexions'][$index]; |
|
| 45 | + $serveur = !is_string($serveur) ? '' : strtolower($serveur); |
|
| 46 | + $index = $serveur ?: 0; |
|
| 47 | + if (!$version) { |
|
| 48 | + $version = $GLOBALS['spip_sql_version']; |
|
| 49 | + } |
|
| 50 | + if (isset($GLOBALS['connexions'][$index][$version])) { |
|
| 51 | + return $GLOBALS['connexions'][$index]; |
|
| 52 | + } |
|
| 53 | + |
|
| 54 | + include_spip('base/abstract_sql'); |
|
| 55 | + $install = (_request('exec') == 'install'); |
|
| 56 | + |
|
| 57 | + // Premiere connexion ? |
|
| 58 | + if (!($old = isset($GLOBALS['connexions'][$index]))) { |
|
| 59 | + $f = (!preg_match('/^[\w\.]*$/', $serveur)) |
|
| 60 | + ? '' // nom de serveur mal ecrit |
|
| 61 | + : ($serveur ? |
|
| 62 | + (_DIR_CONNECT . $serveur . '.php') // serveur externe |
|
| 63 | + : (_FILE_CONNECT ?: ($install ? _FILE_CONNECT_TMP // init du serveur principal |
|
| 64 | + : ''))); // installation pas faite |
|
| 65 | + |
|
| 66 | + unset($GLOBALS['db_ok']); |
|
| 67 | + unset($GLOBALS['spip_connect_version']); |
|
| 68 | + if ($f) { |
|
| 69 | + if (is_readable($f)) { |
|
| 70 | + include($f); |
|
| 71 | + } elseif ($serveur and !$install) { |
|
| 72 | + // chercher une declaration de serveur dans le path |
|
| 73 | + // qui pourra un jour servir a declarer des bases sqlite |
|
| 74 | + // par des plugins. Et sert aussi aux boucles POUR. |
|
| 75 | + find_in_path("$serveur.php", 'connect/', true); |
|
| 76 | + } |
|
| 77 | + } |
|
| 78 | + if (!isset($GLOBALS['db_ok'])) { |
|
| 79 | + // fera mieux la prochaine fois |
|
| 80 | + if ($install) { |
|
| 81 | + return false; |
|
| 82 | + } |
|
| 83 | + if ($f and is_readable($f)) { |
|
| 84 | + spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE); |
|
| 85 | + } else { |
|
| 86 | + spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE); |
|
| 87 | + } |
|
| 88 | + spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS); |
|
| 89 | + |
|
| 90 | + // ne plus reessayer si ce n'est pas l'install |
|
| 91 | + return $GLOBALS['connexions'][$index] = false; |
|
| 92 | + } |
|
| 93 | + $GLOBALS['connexions'][$index] = $GLOBALS['db_ok']; |
|
| 94 | + } |
|
| 95 | + // si la connexion a deja ete tentee mais a echoue, le dire! |
|
| 96 | + if (!$GLOBALS['connexions'][$index]) { |
|
| 97 | + return false; |
|
| 98 | + } |
|
| 99 | + |
|
| 100 | + // la connexion a reussi ou etait deja faite. |
|
| 101 | + // chargement de la version du jeu de fonctions |
|
| 102 | + // si pas dans le fichier par defaut |
|
| 103 | + $type = $GLOBALS['db_ok']['type']; |
|
| 104 | + $jeu = 'spip_' . $type . '_functions_' . $version; |
|
| 105 | + if (!isset($GLOBALS[$jeu])) { |
|
| 106 | + if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) { |
|
| 107 | + spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS); |
|
| 108 | + |
|
| 109 | + // ne plus reessayer |
|
| 110 | + return $GLOBALS['connexions'][$index][$version] = []; |
|
| 111 | + } |
|
| 112 | + } |
|
| 113 | + $GLOBALS['connexions'][$index][$version] = $GLOBALS[$jeu]; |
|
| 114 | + if ($old) { |
|
| 115 | + return $GLOBALS['connexions'][$index]; |
|
| 116 | + } |
|
| 117 | + |
|
| 118 | + $GLOBALS['connexions'][$index]['spip_connect_version'] = $GLOBALS['spip_connect_version'] ?? 0; |
|
| 119 | + |
|
| 120 | + // initialisation de l'alphabet utilise dans les connexions SQL |
|
| 121 | + // si l'installation l'a determine. |
|
| 122 | + // Celui du serveur principal l'impose aux serveurs secondaires |
|
| 123 | + // s'ils le connaissent |
|
| 124 | + |
|
| 125 | + if (!$serveur) { |
|
| 126 | + $charset = spip_connect_main($GLOBALS[$jeu], $GLOBALS['db_ok']['charset']); |
|
| 127 | + if (!$charset) { |
|
| 128 | + unset($GLOBALS['connexions'][$index]); |
|
| 129 | + spip_log('spip_connect: absence de charset', _LOG_AVERTISSEMENT); |
|
| 130 | + |
|
| 131 | + return false; |
|
| 132 | + } |
|
| 133 | + } else { |
|
| 134 | + if ($GLOBALS['db_ok']['charset']) { |
|
| 135 | + $charset = $GLOBALS['db_ok']['charset']; |
|
| 136 | + } |
|
| 137 | + // spip_meta n'existe pas toujours dans la base |
|
| 138 | + // C'est le cas d'un dump sqlite par exemple |
|
| 139 | + elseif ( |
|
| 140 | + $GLOBALS['connexions'][$index]['spip_connect_version'] |
|
| 141 | + and sql_showtable('spip_meta', true, $serveur) |
|
| 142 | + and $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur) |
|
| 143 | + ) { |
|
| 144 | + $charset = $r; |
|
| 145 | + } else { |
|
| 146 | + $charset = -1; |
|
| 147 | + } |
|
| 148 | + } |
|
| 149 | + if ($charset != -1) { |
|
| 150 | + $f = $GLOBALS[$jeu]['set_charset']; |
|
| 151 | + if (function_exists($f)) { |
|
| 152 | + $f($charset, $serveur); |
|
| 153 | + } |
|
| 154 | + } |
|
| 155 | + |
|
| 156 | + return $GLOBALS['connexions'][$index]; |
|
| 157 | 157 | } |
| 158 | 158 | |
| 159 | 159 | /** |
@@ -162,12 +162,12 @@ discard block |
||
| 162 | 162 | * @param string $serveur Nom du connecteur de bdd utilisé |
| 163 | 163 | **/ |
| 164 | 164 | function spip_sql_erreur($serveur = '') { |
| 165 | - $connexion = spip_connect($serveur); |
|
| 166 | - $e = sql_errno($serveur); |
|
| 167 | - $t = ($connexion['type'] ?? 'sql'); |
|
| 168 | - $m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim($connexion['last']); |
|
| 169 | - $f = $t . $serveur; |
|
| 170 | - spip_log($m, $f . '.' . _LOG_ERREUR); |
|
| 165 | + $connexion = spip_connect($serveur); |
|
| 166 | + $e = sql_errno($serveur); |
|
| 167 | + $t = ($connexion['type'] ?? 'sql'); |
|
| 168 | + $m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim($connexion['last']); |
|
| 169 | + $f = $t . $serveur; |
|
| 170 | + spip_log($m, $f . '.' . _LOG_ERREUR); |
|
| 171 | 171 | } |
| 172 | 172 | |
| 173 | 173 | /** |
@@ -189,23 +189,23 @@ discard block |
||
| 189 | 189 | * - array : description de la connexion, si l'instruction sql est indisponible pour cette connexion |
| 190 | 190 | **/ |
| 191 | 191 | function spip_connect_sql($version, $ins = '', $serveur = '', $continue = false) { |
| 192 | - $desc = spip_connect($serveur, $version); |
|
| 193 | - if ( |
|
| 194 | - $desc |
|
| 195 | - and $f = ($desc[$version][$ins] ?? '') |
|
| 196 | - and function_exists($f) |
|
| 197 | - ) { |
|
| 198 | - return $f; |
|
| 199 | - } |
|
| 200 | - if ($continue) { |
|
| 201 | - return $desc; |
|
| 202 | - } |
|
| 203 | - if ($ins) { |
|
| 204 | - spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR); |
|
| 205 | - } |
|
| 206 | - include_spip('inc/minipres'); |
|
| 207 | - echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]); |
|
| 208 | - exit; |
|
| 192 | + $desc = spip_connect($serveur, $version); |
|
| 193 | + if ( |
|
| 194 | + $desc |
|
| 195 | + and $f = ($desc[$version][$ins] ?? '') |
|
| 196 | + and function_exists($f) |
|
| 197 | + ) { |
|
| 198 | + return $f; |
|
| 199 | + } |
|
| 200 | + if ($continue) { |
|
| 201 | + return $desc; |
|
| 202 | + } |
|
| 203 | + if ($ins) { |
|
| 204 | + spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR); |
|
| 205 | + } |
|
| 206 | + include_spip('inc/minipres'); |
|
| 207 | + echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]); |
|
| 208 | + exit; |
|
| 209 | 209 | } |
| 210 | 210 | |
| 211 | 211 | /** |
@@ -231,70 +231,70 @@ discard block |
||
| 231 | 231 | * @return array|null Description de la connexion |
| 232 | 232 | */ |
| 233 | 233 | function spip_connect_db( |
| 234 | - $host, |
|
| 235 | - $port, |
|
| 236 | - $login, |
|
| 237 | - $pass, |
|
| 238 | - $db = '', |
|
| 239 | - $type = 'mysql', |
|
| 240 | - $prefixe = '', |
|
| 241 | - $auth = '', |
|
| 242 | - $charset = '' |
|
| 234 | + $host, |
|
| 235 | + $port, |
|
| 236 | + $login, |
|
| 237 | + $pass, |
|
| 238 | + $db = '', |
|
| 239 | + $type = 'mysql', |
|
| 240 | + $prefixe = '', |
|
| 241 | + $auth = '', |
|
| 242 | + $charset = '' |
|
| 243 | 243 | ) { |
| 244 | - // temps avant nouvelle tentative de connexion |
|
| 245 | - // suite a une connection echouee |
|
| 246 | - if (!defined('_CONNECT_RETRY_DELAY')) { |
|
| 247 | - define('_CONNECT_RETRY_DELAY', 30); |
|
| 248 | - } |
|
| 249 | - |
|
| 250 | - $f = ''; |
|
| 251 | - // un fichier de identifiant par combinaison (type,host,port,db) |
|
| 252 | - // pour ne pas declarer tout indisponible d'un coup |
|
| 253 | - // si en cours d'installation ou si db=@test@ on ne pose rien |
|
| 254 | - // car c'est un test de connexion |
|
| 255 | - if (!defined('_ECRIRE_INSTALL') and $db !== '@test@') { |
|
| 256 | - $f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out'; |
|
| 257 | - } elseif ($db == '@test@') { |
|
| 258 | - $db = ''; |
|
| 259 | - } |
|
| 260 | - |
|
| 261 | - if ( |
|
| 262 | - $f |
|
| 263 | - and @file_exists($f) |
|
| 264 | - and (time() - @filemtime($f) < _CONNECT_RETRY_DELAY) |
|
| 265 | - ) { |
|
| 266 | - spip_log("Echec : $f recent. Pas de tentative de connexion", _LOG_HS); |
|
| 267 | - |
|
| 268 | - return null; |
|
| 269 | - } |
|
| 270 | - |
|
| 271 | - if (!$prefixe) { |
|
| 272 | - $prefixe = $GLOBALS['table_prefix'] ?? $db; |
|
| 273 | - } |
|
| 274 | - $h = charger_fonction($type, 'req', true); |
|
| 275 | - if (!$h) { |
|
| 276 | - spip_log("les requetes $type ne sont pas fournies", _LOG_HS); |
|
| 277 | - |
|
| 278 | - return null; |
|
| 279 | - } |
|
| 280 | - if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) { |
|
| 281 | - if (!is_array($auth)) { |
|
| 282 | - // compatibilite version 0.7 initiale |
|
| 283 | - $g['ldap'] = $auth; |
|
| 284 | - $auth = ['ldap' => $auth]; |
|
| 285 | - } |
|
| 286 | - $g['authentification'] = $auth; |
|
| 287 | - $g['type'] = $type; |
|
| 288 | - $g['charset'] = $charset; |
|
| 289 | - |
|
| 290 | - return $GLOBALS['db_ok'] = $g; |
|
| 291 | - } |
|
| 292 | - // En cas d'indisponibilite du serveur, eviter de le bombarder |
|
| 293 | - if ($f) { |
|
| 294 | - @touch($f); |
|
| 295 | - spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type . '.' . _LOG_HS); |
|
| 296 | - } |
|
| 297 | - return null; |
|
| 244 | + // temps avant nouvelle tentative de connexion |
|
| 245 | + // suite a une connection echouee |
|
| 246 | + if (!defined('_CONNECT_RETRY_DELAY')) { |
|
| 247 | + define('_CONNECT_RETRY_DELAY', 30); |
|
| 248 | + } |
|
| 249 | + |
|
| 250 | + $f = ''; |
|
| 251 | + // un fichier de identifiant par combinaison (type,host,port,db) |
|
| 252 | + // pour ne pas declarer tout indisponible d'un coup |
|
| 253 | + // si en cours d'installation ou si db=@test@ on ne pose rien |
|
| 254 | + // car c'est un test de connexion |
|
| 255 | + if (!defined('_ECRIRE_INSTALL') and $db !== '@test@') { |
|
| 256 | + $f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out'; |
|
| 257 | + } elseif ($db == '@test@') { |
|
| 258 | + $db = ''; |
|
| 259 | + } |
|
| 260 | + |
|
| 261 | + if ( |
|
| 262 | + $f |
|
| 263 | + and @file_exists($f) |
|
| 264 | + and (time() - @filemtime($f) < _CONNECT_RETRY_DELAY) |
|
| 265 | + ) { |
|
| 266 | + spip_log("Echec : $f recent. Pas de tentative de connexion", _LOG_HS); |
|
| 267 | + |
|
| 268 | + return null; |
|
| 269 | + } |
|
| 270 | + |
|
| 271 | + if (!$prefixe) { |
|
| 272 | + $prefixe = $GLOBALS['table_prefix'] ?? $db; |
|
| 273 | + } |
|
| 274 | + $h = charger_fonction($type, 'req', true); |
|
| 275 | + if (!$h) { |
|
| 276 | + spip_log("les requetes $type ne sont pas fournies", _LOG_HS); |
|
| 277 | + |
|
| 278 | + return null; |
|
| 279 | + } |
|
| 280 | + if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) { |
|
| 281 | + if (!is_array($auth)) { |
|
| 282 | + // compatibilite version 0.7 initiale |
|
| 283 | + $g['ldap'] = $auth; |
|
| 284 | + $auth = ['ldap' => $auth]; |
|
| 285 | + } |
|
| 286 | + $g['authentification'] = $auth; |
|
| 287 | + $g['type'] = $type; |
|
| 288 | + $g['charset'] = $charset; |
|
| 289 | + |
|
| 290 | + return $GLOBALS['db_ok'] = $g; |
|
| 291 | + } |
|
| 292 | + // En cas d'indisponibilite du serveur, eviter de le bombarder |
|
| 293 | + if ($f) { |
|
| 294 | + @touch($f); |
|
| 295 | + spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type . '.' . _LOG_HS); |
|
| 296 | + } |
|
| 297 | + return null; |
|
| 298 | 298 | } |
| 299 | 299 | |
| 300 | 300 | |
@@ -326,32 +326,32 @@ discard block |
||
| 326 | 326 | * - nom du charset sinon |
| 327 | 327 | **/ |
| 328 | 328 | function spip_connect_main($connexion, $charset_sql_connexion = '') { |
| 329 | - if ($GLOBALS['spip_connect_version'] < 0.1 and _DIR_RESTREINT) { |
|
| 330 | - include_spip('inc/headers'); |
|
| 331 | - redirige_url_ecrire('upgrade', 'reinstall=oui'); |
|
| 332 | - } |
|
| 333 | - |
|
| 334 | - if (!($f = $connexion['select'])) { |
|
| 335 | - return false; |
|
| 336 | - } |
|
| 337 | - // si le charset est fourni, l'utiliser |
|
| 338 | - if ($charset_sql_connexion) { |
|
| 339 | - return $charset_sql_connexion; |
|
| 340 | - } |
|
| 341 | - // sinon on regarde la table spip_meta |
|
| 342 | - // en cas d'erreur select retourne la requette (is_string=true donc) |
|
| 343 | - if ( |
|
| 344 | - !$r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'") |
|
| 345 | - or is_string($r) |
|
| 346 | - ) { |
|
| 347 | - return false; |
|
| 348 | - } |
|
| 349 | - if (!($f = $connexion['fetch'])) { |
|
| 350 | - return false; |
|
| 351 | - } |
|
| 352 | - $r = $f($r); |
|
| 353 | - |
|
| 354 | - return (isset($r['valeur']) && $r['valeur']) ? $r['valeur'] : -1; |
|
| 329 | + if ($GLOBALS['spip_connect_version'] < 0.1 and _DIR_RESTREINT) { |
|
| 330 | + include_spip('inc/headers'); |
|
| 331 | + redirige_url_ecrire('upgrade', 'reinstall=oui'); |
|
| 332 | + } |
|
| 333 | + |
|
| 334 | + if (!($f = $connexion['select'])) { |
|
| 335 | + return false; |
|
| 336 | + } |
|
| 337 | + // si le charset est fourni, l'utiliser |
|
| 338 | + if ($charset_sql_connexion) { |
|
| 339 | + return $charset_sql_connexion; |
|
| 340 | + } |
|
| 341 | + // sinon on regarde la table spip_meta |
|
| 342 | + // en cas d'erreur select retourne la requette (is_string=true donc) |
|
| 343 | + if ( |
|
| 344 | + !$r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'") |
|
| 345 | + or is_string($r) |
|
| 346 | + ) { |
|
| 347 | + return false; |
|
| 348 | + } |
|
| 349 | + if (!($f = $connexion['fetch'])) { |
|
| 350 | + return false; |
|
| 351 | + } |
|
| 352 | + $r = $f($r); |
|
| 353 | + |
|
| 354 | + return (isset($r['valeur']) && $r['valeur']) ? $r['valeur'] : -1; |
|
| 355 | 355 | } |
| 356 | 356 | |
| 357 | 357 | /** |
@@ -367,8 +367,8 @@ discard block |
||
| 367 | 367 | * @return array |
| 368 | 368 | */ |
| 369 | 369 | function spip_connect_ldap($serveur = '') { |
| 370 | - include_spip('auth/ldap'); |
|
| 371 | - return auth_ldap_connect($serveur); |
|
| 370 | + include_spip('auth/ldap'); |
|
| 371 | + return auth_ldap_connect($serveur); |
|
| 372 | 372 | } |
| 373 | 373 | |
| 374 | 374 | /** |
@@ -384,16 +384,16 @@ discard block |
||
| 384 | 384 | * @return string Valeur échappée. |
| 385 | 385 | **/ |
| 386 | 386 | function _q($a): string { |
| 387 | - if (is_numeric($a)) { |
|
| 388 | - return strval($a); |
|
| 389 | - } elseif (is_array($a)) { |
|
| 390 | - return join(',', array_map('_q', $a)); |
|
| 391 | - } elseif (is_scalar($a)) { |
|
| 392 | - return ("'" . addslashes($a) . "'"); |
|
| 393 | - } elseif ($a === null) { |
|
| 394 | - return "''"; |
|
| 395 | - } |
|
| 396 | - throw new \RuntimeException('Can’t use _q with ' . gettype($a)); |
|
| 387 | + if (is_numeric($a)) { |
|
| 388 | + return strval($a); |
|
| 389 | + } elseif (is_array($a)) { |
|
| 390 | + return join(',', array_map('_q', $a)); |
|
| 391 | + } elseif (is_scalar($a)) { |
|
| 392 | + return ("'" . addslashes($a) . "'"); |
|
| 393 | + } elseif ($a === null) { |
|
| 394 | + return "''"; |
|
| 395 | + } |
|
| 396 | + throw new \RuntimeException('Can’t use _q with ' . gettype($a)); |
|
| 397 | 397 | } |
| 398 | 398 | |
| 399 | 399 | /** |
@@ -409,75 +409,75 @@ discard block |
||
| 409 | 409 | * @return array |
| 410 | 410 | */ |
| 411 | 411 | function query_echappe_textes($query, $uniqid = null) { |
| 412 | - static $codeEchappements = null; |
|
| 413 | - if (is_null($codeEchappements) or $uniqid) { |
|
| 414 | - if (is_null($uniqid)) { |
|
| 415 | - $uniqid = uniqid(); |
|
| 416 | - } |
|
| 417 | - $uniqid = substr(md5($uniqid), 0, 4); |
|
| 418 | - $codeEchappements = ['\\\\' => "\x1@#{$uniqid}#@\x1", "\\'" => "\x2@#{$uniqid}#@\x2", '\\"' => "\x3@#{$uniqid}#@\x3", '%' => "\x4@#{$uniqid}#@\x4"]; |
|
| 419 | - } |
|
| 420 | - if ($query === null) { |
|
| 421 | - return $codeEchappements; |
|
| 422 | - } |
|
| 423 | - |
|
| 424 | - // si la query contient deja des codes d'echappement on va s'emmeler les pinceaux et donc on ne touche a rien |
|
| 425 | - // ce n'est pas un cas legitime |
|
| 426 | - foreach ($codeEchappements as $codeEchappement) { |
|
| 427 | - if (strpos($query, (string) $codeEchappement) !== false) { |
|
| 428 | - return [$query, []]; |
|
| 429 | - } |
|
| 430 | - } |
|
| 431 | - |
|
| 432 | - $query_echappees = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query); |
|
| 433 | - if (preg_match_all("/('[^']*')|(\"[^\"]*\")/S", $query_echappees, $textes)) { |
|
| 434 | - $textes = reset($textes); |
|
| 435 | - |
|
| 436 | - $parts = []; |
|
| 437 | - $currentpos = 0; |
|
| 438 | - $k = 0; |
|
| 439 | - while (count($textes)) { |
|
| 440 | - $part = array_shift($textes); |
|
| 441 | - $nextpos = strpos($query_echappees, $part, $currentpos); |
|
| 442 | - // si besoin recoller ensemble les doubles '' de sqlite (echappement des ') |
|
| 443 | - while (count($textes) and substr($part, -1) === "'") { |
|
| 444 | - $next = reset($textes); |
|
| 445 | - if ( |
|
| 446 | - strpos($next, "'") === 0 |
|
| 447 | - and strpos($query_echappees, $part . $next, $currentpos) === $nextpos |
|
| 448 | - ) { |
|
| 449 | - $part .= array_shift($textes); |
|
| 450 | - } |
|
| 451 | - else { |
|
| 452 | - break; |
|
| 453 | - } |
|
| 454 | - } |
|
| 455 | - $k++; |
|
| 456 | - $parts[$k] = [ |
|
| 457 | - 'texte' => $part, |
|
| 458 | - 'position' => $nextpos, |
|
| 459 | - 'placeholder' => '%' . $k . '$s', |
|
| 460 | - ]; |
|
| 461 | - $currentpos = $nextpos + strlen($part); |
|
| 462 | - } |
|
| 463 | - |
|
| 464 | - // et on replace les parts une par une en commencant par la fin |
|
| 465 | - while ($k > 0) { |
|
| 466 | - $query_echappees = substr_replace($query_echappees, $parts[$k]['placeholder'], $parts[$k]['position'], strlen($parts[$k]['texte'])); |
|
| 467 | - $k--; |
|
| 468 | - } |
|
| 469 | - $textes = array_column($parts, 'texte'); |
|
| 470 | - } else { |
|
| 471 | - $textes = []; |
|
| 472 | - } |
|
| 473 | - |
|
| 474 | - // si il reste des quotes simples ou doubles, c'est qu'on s'est emmelle les pinceaux |
|
| 475 | - // dans le doute on ne touche a rien |
|
| 476 | - if (strpbrk($query_echappees, "'\"") !== false) { |
|
| 477 | - return [$query, []]; |
|
| 478 | - } |
|
| 479 | - |
|
| 480 | - return [$query_echappees, $textes]; |
|
| 412 | + static $codeEchappements = null; |
|
| 413 | + if (is_null($codeEchappements) or $uniqid) { |
|
| 414 | + if (is_null($uniqid)) { |
|
| 415 | + $uniqid = uniqid(); |
|
| 416 | + } |
|
| 417 | + $uniqid = substr(md5($uniqid), 0, 4); |
|
| 418 | + $codeEchappements = ['\\\\' => "\x1@#{$uniqid}#@\x1", "\\'" => "\x2@#{$uniqid}#@\x2", '\\"' => "\x3@#{$uniqid}#@\x3", '%' => "\x4@#{$uniqid}#@\x4"]; |
|
| 419 | + } |
|
| 420 | + if ($query === null) { |
|
| 421 | + return $codeEchappements; |
|
| 422 | + } |
|
| 423 | + |
|
| 424 | + // si la query contient deja des codes d'echappement on va s'emmeler les pinceaux et donc on ne touche a rien |
|
| 425 | + // ce n'est pas un cas legitime |
|
| 426 | + foreach ($codeEchappements as $codeEchappement) { |
|
| 427 | + if (strpos($query, (string) $codeEchappement) !== false) { |
|
| 428 | + return [$query, []]; |
|
| 429 | + } |
|
| 430 | + } |
|
| 431 | + |
|
| 432 | + $query_echappees = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query); |
|
| 433 | + if (preg_match_all("/('[^']*')|(\"[^\"]*\")/S", $query_echappees, $textes)) { |
|
| 434 | + $textes = reset($textes); |
|
| 435 | + |
|
| 436 | + $parts = []; |
|
| 437 | + $currentpos = 0; |
|
| 438 | + $k = 0; |
|
| 439 | + while (count($textes)) { |
|
| 440 | + $part = array_shift($textes); |
|
| 441 | + $nextpos = strpos($query_echappees, $part, $currentpos); |
|
| 442 | + // si besoin recoller ensemble les doubles '' de sqlite (echappement des ') |
|
| 443 | + while (count($textes) and substr($part, -1) === "'") { |
|
| 444 | + $next = reset($textes); |
|
| 445 | + if ( |
|
| 446 | + strpos($next, "'") === 0 |
|
| 447 | + and strpos($query_echappees, $part . $next, $currentpos) === $nextpos |
|
| 448 | + ) { |
|
| 449 | + $part .= array_shift($textes); |
|
| 450 | + } |
|
| 451 | + else { |
|
| 452 | + break; |
|
| 453 | + } |
|
| 454 | + } |
|
| 455 | + $k++; |
|
| 456 | + $parts[$k] = [ |
|
| 457 | + 'texte' => $part, |
|
| 458 | + 'position' => $nextpos, |
|
| 459 | + 'placeholder' => '%' . $k . '$s', |
|
| 460 | + ]; |
|
| 461 | + $currentpos = $nextpos + strlen($part); |
|
| 462 | + } |
|
| 463 | + |
|
| 464 | + // et on replace les parts une par une en commencant par la fin |
|
| 465 | + while ($k > 0) { |
|
| 466 | + $query_echappees = substr_replace($query_echappees, $parts[$k]['placeholder'], $parts[$k]['position'], strlen($parts[$k]['texte'])); |
|
| 467 | + $k--; |
|
| 468 | + } |
|
| 469 | + $textes = array_column($parts, 'texte'); |
|
| 470 | + } else { |
|
| 471 | + $textes = []; |
|
| 472 | + } |
|
| 473 | + |
|
| 474 | + // si il reste des quotes simples ou doubles, c'est qu'on s'est emmelle les pinceaux |
|
| 475 | + // dans le doute on ne touche a rien |
|
| 476 | + if (strpbrk($query_echappees, "'\"") !== false) { |
|
| 477 | + return [$query, []]; |
|
| 478 | + } |
|
| 479 | + |
|
| 480 | + return [$query_echappees, $textes]; |
|
| 481 | 481 | } |
| 482 | 482 | |
| 483 | 483 | /** |
@@ -491,16 +491,16 @@ discard block |
||
| 491 | 491 | * @return string |
| 492 | 492 | */ |
| 493 | 493 | function query_reinjecte_textes($query, $textes) { |
| 494 | - // recuperer les codes echappements |
|
| 495 | - $codeEchappements = query_echappe_textes(null); |
|
| 494 | + // recuperer les codes echappements |
|
| 495 | + $codeEchappements = query_echappe_textes(null); |
|
| 496 | 496 | |
| 497 | - if (!empty($textes)) { |
|
| 498 | - $query = sprintf($query, ...$textes); |
|
| 499 | - } |
|
| 497 | + if (!empty($textes)) { |
|
| 498 | + $query = sprintf($query, ...$textes); |
|
| 499 | + } |
|
| 500 | 500 | |
| 501 | - $query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query); |
|
| 501 | + $query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query); |
|
| 502 | 502 | |
| 503 | - return $query; |
|
| 503 | + return $query; |
|
| 504 | 504 | } |
| 505 | 505 | |
| 506 | 506 | |
@@ -519,7 +519,7 @@ discard block |
||
| 519 | 519 | **/ |
| 520 | 520 | function spip_query($query, $serveur = '') { |
| 521 | 521 | |
| 522 | - $f = spip_connect_sql($GLOBALS['spip_sql_version'], 'query', $serveur, true); |
|
| 522 | + $f = spip_connect_sql($GLOBALS['spip_sql_version'], 'query', $serveur, true); |
|
| 523 | 523 | |
| 524 | - return function_exists($f) ? $f($query, $serveur) : false; |
|
| 524 | + return function_exists($f) ? $f($query, $serveur) : false; |
|
| 525 | 525 | } |
@@ -4,248 +4,248 @@ discard block |
||
| 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 | - 'access_interface_graphique' => 'Back to the full graphic interface', |
|
| 14 | - 'access_mode_texte' => 'Show the simplified text interface', |
|
| 15 | - 'admin_debug' => 'debug', |
|
| 16 | - 'admin_modifier_article' => 'Modify this article', |
|
| 17 | - 'admin_modifier_auteur' => 'Modify this author', |
|
| 18 | - 'admin_modifier_breve' => 'Modify this news item', |
|
| 19 | - 'admin_modifier_mot' => 'Modify this keyword', |
|
| 20 | - 'admin_modifier_rubrique' => 'Modify this section', |
|
| 21 | - 'admin_recalculer' => 'Re-process this page', |
|
| 22 | - 'afficher_calendrier' => 'Show the calendar', |
|
| 23 | - 'afficher_trad' => 'show translations', |
|
| 24 | - 'alerte_maj_impossible' => '<b>Warning!</b> Failed to update the SQL database to version @version@. This may be due to a permissions problem on the database. Please contact your ISP.', |
|
| 25 | - 'alerte_modif_info_concourante' => 'WARNING: This information has been modified elsewhere. The current value is :', |
|
| 26 | - 'analyse_xml' => 'XML parsing', |
|
| 27 | - 'annuler' => 'Cancel', |
|
| 28 | - 'antispam_champ_vide' => 'Please leave this field empty:', |
|
| 29 | - 'articles_recents' => 'Most recent articles', |
|
| 30 | - 'attention_champ_mini_nb_caractères' => 'Warning! At least @nb@ characters', |
|
| 31 | - 'avis_1_erreur_saisie' => 'Your entry contains an error, please check your information.', |
|
| 32 | - 'avis_archive_incorrect' => 'archive is not a valid SPIP file', |
|
| 33 | - 'avis_archive_invalide' => 'archive file is not valid', |
|
| 34 | - 'avis_attention' => 'CAUTION!', |
|
| 35 | - 'avis_champ_incorrect_type_objet' => 'Invalid field name @name@ for object of type @type@', |
|
| 36 | - 'avis_colonne_inexistante' => 'Column @col@ does not exist', |
|
| 37 | - 'avis_erreur' => 'Error: see below', |
|
| 38 | - 'avis_erreur_connexion' => 'Connection error', |
|
| 39 | - 'avis_erreur_cookie' => 'cookie problem', |
|
| 40 | - 'avis_erreur_fonction_contexte' => 'Programming error. This function cannot be called in this context.', |
|
| 41 | - 'avis_erreur_mysql' => 'SQL error', |
|
| 42 | - 'avis_erreur_sauvegarde' => 'Error in backup (@type@ @id_objet@)!', |
|
| 43 | - 'avis_erreur_visiteur' => 'Problem entering the private area', |
|
| 44 | - 'avis_nb_erreurs_saisie' => 'Your entry contains @nb@ errors, please check your information.', |
|
| 12 | + // A |
|
| 13 | + 'access_interface_graphique' => 'Back to the full graphic interface', |
|
| 14 | + 'access_mode_texte' => 'Show the simplified text interface', |
|
| 15 | + 'admin_debug' => 'debug', |
|
| 16 | + 'admin_modifier_article' => 'Modify this article', |
|
| 17 | + 'admin_modifier_auteur' => 'Modify this author', |
|
| 18 | + 'admin_modifier_breve' => 'Modify this news item', |
|
| 19 | + 'admin_modifier_mot' => 'Modify this keyword', |
|
| 20 | + 'admin_modifier_rubrique' => 'Modify this section', |
|
| 21 | + 'admin_recalculer' => 'Re-process this page', |
|
| 22 | + 'afficher_calendrier' => 'Show the calendar', |
|
| 23 | + 'afficher_trad' => 'show translations', |
|
| 24 | + 'alerte_maj_impossible' => '<b>Warning!</b> Failed to update the SQL database to version @version@. This may be due to a permissions problem on the database. Please contact your ISP.', |
|
| 25 | + 'alerte_modif_info_concourante' => 'WARNING: This information has been modified elsewhere. The current value is :', |
|
| 26 | + 'analyse_xml' => 'XML parsing', |
|
| 27 | + 'annuler' => 'Cancel', |
|
| 28 | + 'antispam_champ_vide' => 'Please leave this field empty:', |
|
| 29 | + 'articles_recents' => 'Most recent articles', |
|
| 30 | + 'attention_champ_mini_nb_caractères' => 'Warning! At least @nb@ characters', |
|
| 31 | + 'avis_1_erreur_saisie' => 'Your entry contains an error, please check your information.', |
|
| 32 | + 'avis_archive_incorrect' => 'archive is not a valid SPIP file', |
|
| 33 | + 'avis_archive_invalide' => 'archive file is not valid', |
|
| 34 | + 'avis_attention' => 'CAUTION!', |
|
| 35 | + 'avis_champ_incorrect_type_objet' => 'Invalid field name @name@ for object of type @type@', |
|
| 36 | + 'avis_colonne_inexistante' => 'Column @col@ does not exist', |
|
| 37 | + 'avis_erreur' => 'Error: see below', |
|
| 38 | + 'avis_erreur_connexion' => 'Connection error', |
|
| 39 | + 'avis_erreur_cookie' => 'cookie problem', |
|
| 40 | + 'avis_erreur_fonction_contexte' => 'Programming error. This function cannot be called in this context.', |
|
| 41 | + 'avis_erreur_mysql' => 'SQL error', |
|
| 42 | + 'avis_erreur_sauvegarde' => 'Error in backup (@type@ @id_objet@)!', |
|
| 43 | + 'avis_erreur_visiteur' => 'Problem entering the private area', |
|
| 44 | + 'avis_nb_erreurs_saisie' => 'Your entry contains @nb@ errors, please check your information.', |
|
| 45 | 45 | |
| 46 | - // B |
|
| 47 | - 'barre_a_accent_grave' => 'Insert a capital A with grave accent', |
|
| 48 | - 'barre_aide' => 'Use the typographic short cuts to refine your layout', |
|
| 49 | - 'barre_e_accent_aigu' => 'Insert a capital E with acute accent', |
|
| 50 | - 'barre_eo' => 'Insert an oe-ligature', |
|
| 51 | - 'barre_eo_maj' => 'Insert a capital EO-ligature', |
|
| 52 | - 'barre_euro' => 'Insert a € symbol', |
|
| 53 | - 'barre_gras' => 'Put in {{bold type}}', |
|
| 54 | - 'barre_guillemets' => 'Place between "double quotes"', |
|
| 55 | - 'barre_guillemets_simples' => 'Place between ‘single quotes’', |
|
| 56 | - 'barre_intertitre' => 'Turn into a {{{subheading}}}', |
|
| 57 | - 'barre_italic' => 'Put in {italics}', |
|
| 58 | - 'barre_lien' => 'Turn into a [hyperlink->http://...]', |
|
| 59 | - 'barre_lien_input' => 'Please enter the link address. You may use either an external URL (http://www.mysite.com) or reference another article on this site by simplying entering its number.', |
|
| 60 | - 'barre_note' => 'Turn into a [[Footnote]]', |
|
| 61 | - 'barre_paragraphe' => 'Create a paragraph', |
|
| 62 | - 'barre_quote' => '<quote>Quote a message</quote>', |
|
| 63 | - 'bouton_changer' => 'Change', |
|
| 64 | - 'bouton_chercher' => 'Search', |
|
| 65 | - 'bouton_choisir' => 'Select', |
|
| 66 | - 'bouton_deplacer' => 'Move', |
|
| 67 | - 'bouton_download' => 'Download', |
|
| 68 | - 'bouton_enregistrer' => 'Save', |
|
| 69 | - 'bouton_radio_desactiver_messagerie_interne' => 'Disable internal messaging', |
|
| 70 | - 'bouton_radio_envoi_annonces' => 'Send editorial announcements', |
|
| 71 | - 'bouton_radio_non_envoi_annonces' => 'Do not send any announcements', |
|
| 72 | - 'bouton_radio_non_envoi_liste_nouveautes' => 'Do not send latest news list', |
|
| 73 | - 'bouton_recharger_page' => 'reload this page', |
|
| 74 | - 'bouton_telecharger' => 'Upload', |
|
| 75 | - 'bouton_upload' => 'Upload', |
|
| 76 | - 'bouton_valider' => 'Submit', |
|
| 46 | + // B |
|
| 47 | + 'barre_a_accent_grave' => 'Insert a capital A with grave accent', |
|
| 48 | + 'barre_aide' => 'Use the typographic short cuts to refine your layout', |
|
| 49 | + 'barre_e_accent_aigu' => 'Insert a capital E with acute accent', |
|
| 50 | + 'barre_eo' => 'Insert an oe-ligature', |
|
| 51 | + 'barre_eo_maj' => 'Insert a capital EO-ligature', |
|
| 52 | + 'barre_euro' => 'Insert a € symbol', |
|
| 53 | + 'barre_gras' => 'Put in {{bold type}}', |
|
| 54 | + 'barre_guillemets' => 'Place between "double quotes"', |
|
| 55 | + 'barre_guillemets_simples' => 'Place between ‘single quotes’', |
|
| 56 | + 'barre_intertitre' => 'Turn into a {{{subheading}}}', |
|
| 57 | + 'barre_italic' => 'Put in {italics}', |
|
| 58 | + 'barre_lien' => 'Turn into a [hyperlink->http://...]', |
|
| 59 | + 'barre_lien_input' => 'Please enter the link address. You may use either an external URL (http://www.mysite.com) or reference another article on this site by simplying entering its number.', |
|
| 60 | + 'barre_note' => 'Turn into a [[Footnote]]', |
|
| 61 | + 'barre_paragraphe' => 'Create a paragraph', |
|
| 62 | + 'barre_quote' => '<quote>Quote a message</quote>', |
|
| 63 | + 'bouton_changer' => 'Change', |
|
| 64 | + 'bouton_chercher' => 'Search', |
|
| 65 | + 'bouton_choisir' => 'Select', |
|
| 66 | + 'bouton_deplacer' => 'Move', |
|
| 67 | + 'bouton_download' => 'Download', |
|
| 68 | + 'bouton_enregistrer' => 'Save', |
|
| 69 | + 'bouton_radio_desactiver_messagerie_interne' => 'Disable internal messaging', |
|
| 70 | + 'bouton_radio_envoi_annonces' => 'Send editorial announcements', |
|
| 71 | + 'bouton_radio_non_envoi_annonces' => 'Do not send any announcements', |
|
| 72 | + 'bouton_radio_non_envoi_liste_nouveautes' => 'Do not send latest news list', |
|
| 73 | + 'bouton_recharger_page' => 'reload this page', |
|
| 74 | + 'bouton_telecharger' => 'Upload', |
|
| 75 | + 'bouton_upload' => 'Upload', |
|
| 76 | + 'bouton_valider' => 'Submit', |
|
| 77 | 77 | |
| 78 | - // C |
|
| 79 | - 'cal_apresmidi' => 'afternoon (p.m.)', |
|
| 80 | - 'cal_jour_entier' => 'entire day', |
|
| 81 | - 'cal_matin' => 'morning (a.m.)', |
|
| 82 | - 'cal_par_jour' => 'daily calendar', |
|
| 83 | - 'cal_par_mois' => 'monthly calendar', |
|
| 84 | - 'cal_par_semaine' => 'weekly calendar', |
|
| 85 | - 'choix_couleur_interface' => 'colour', |
|
| 86 | - 'choix_interface' => 'choice of interface', |
|
| 87 | - 'colonne' => 'Column', |
|
| 88 | - 'confirm_changer_statut' => 'Warning: You are about to change this article’s status. Do you wish to continue?', |
|
| 89 | - 'correcte' => 'correct', |
|
| 78 | + // C |
|
| 79 | + 'cal_apresmidi' => 'afternoon (p.m.)', |
|
| 80 | + 'cal_jour_entier' => 'entire day', |
|
| 81 | + 'cal_matin' => 'morning (a.m.)', |
|
| 82 | + 'cal_par_jour' => 'daily calendar', |
|
| 83 | + 'cal_par_mois' => 'monthly calendar', |
|
| 84 | + 'cal_par_semaine' => 'weekly calendar', |
|
| 85 | + 'choix_couleur_interface' => 'colour', |
|
| 86 | + 'choix_interface' => 'choice of interface', |
|
| 87 | + 'colonne' => 'Column', |
|
| 88 | + 'confirm_changer_statut' => 'Warning: You are about to change this article’s status. Do you wish to continue?', |
|
| 89 | + 'correcte' => 'correct', |
|
| 90 | 90 | |
| 91 | - // D |
|
| 92 | - 'date_aujourdhui' => 'today', |
|
| 93 | - 'date_avant_jc' => 'B.C.', |
|
| 94 | - 'date_dans' => 'in @delai@', |
|
| 95 | - 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | - 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | - 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | - 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | - 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | - 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | - 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | - 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | - 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | - 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | - 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | - 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | - 'date_demain' => 'tomorrow', |
|
| 108 | - 'date_fmt_heures_minutes' => '@h@:@m@', |
|
| 109 | - 'date_fmt_heures_minutes_court' => '@h@:@m@', |
|
| 110 | - 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | - 'date_fmt_jour_heure' => '@jour@ at @heure@', |
|
| 112 | - 'date_fmt_jour_heure_debut_fin' => '@jour@ from @heure_debut@ to @heure_fin@', |
|
| 113 | - 'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ from @heure_debut@@dtabbr@ to @dtend@@heure_fin@@dtabbr@', |
|
| 114 | - 'date_fmt_jour_mois' => '@jourmois@', |
|
| 115 | - 'date_fmt_jour_mois_annee' => '@jourmois@ @annee@', |
|
| 116 | - 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | - 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | - 'date_fmt_nomjour_date' => 'on @nomjour@ @date@', |
|
| 119 | - 'date_fmt_periode' => 'From @date_debut@ to @date_fin@', |
|
| 120 | - 'date_fmt_periode_abbr' => 'From @dtart@@date_debut@@dtabbr@ to @dtend@@date_fin@@dtabbr@', |
|
| 121 | - 'date_fmt_periode_from' => 'From', |
|
| 122 | - 'date_fmt_periode_to' => 'to', |
|
| 123 | - 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | - 'date_heures' => 'hours', |
|
| 125 | - 'date_hier' => 'yesterday', |
|
| 126 | - 'date_il_y_a' => '@delai@ ago', |
|
| 127 | - 'date_jnum1' => '1', |
|
| 128 | - 'date_jnum10' => '10', |
|
| 129 | - 'date_jnum11' => '11', |
|
| 130 | - 'date_jnum12' => '12', |
|
| 131 | - 'date_jnum13' => '13', |
|
| 132 | - 'date_jnum14' => '14', |
|
| 133 | - 'date_jnum15' => '15', |
|
| 134 | - 'date_jnum16' => '16', |
|
| 135 | - 'date_jnum17' => '17', |
|
| 136 | - 'date_jnum18' => '18', |
|
| 137 | - 'date_jnum19' => '19', |
|
| 138 | - 'date_jnum2' => '2', |
|
| 139 | - 'date_jnum20' => '20', |
|
| 140 | - 'date_jnum21' => '21', |
|
| 141 | - 'date_jnum22' => '22', |
|
| 142 | - 'date_jnum23' => '23', |
|
| 143 | - 'date_jnum24' => '24', |
|
| 144 | - 'date_jnum25' => '25', |
|
| 145 | - 'date_jnum26' => '26', |
|
| 146 | - 'date_jnum27' => '27', |
|
| 147 | - 'date_jnum28' => '28', |
|
| 148 | - 'date_jnum29' => '29', |
|
| 149 | - 'date_jnum3' => '3', |
|
| 150 | - 'date_jnum30' => '30', |
|
| 151 | - 'date_jnum31' => '31', |
|
| 152 | - 'date_jnum4' => '4', |
|
| 153 | - 'date_jnum5' => '5', |
|
| 154 | - 'date_jnum6' => '6', |
|
| 155 | - 'date_jnum7' => '7', |
|
| 156 | - 'date_jnum8' => '8', |
|
| 157 | - 'date_jnum9' => '9', |
|
| 158 | - 'date_jour_1' => 'Sunday', |
|
| 159 | - 'date_jour_1_abbr' => 'Sun.', |
|
| 160 | - 'date_jour_1_initiale' => 'S.', |
|
| 161 | - 'date_jour_2' => 'Monday', |
|
| 162 | - 'date_jour_2_abbr' => 'Mon.', |
|
| 163 | - 'date_jour_2_initiale' => 'M.', |
|
| 164 | - 'date_jour_3' => 'Tuesday', |
|
| 165 | - 'date_jour_3_abbr' => 'Tue.', |
|
| 166 | - 'date_jour_3_initiale' => 'T.', |
|
| 167 | - 'date_jour_4' => 'Wednesday', |
|
| 168 | - 'date_jour_4_abbr' => 'Wed.', |
|
| 169 | - 'date_jour_4_initiale' => 'W.', |
|
| 170 | - 'date_jour_5' => 'Thursday', |
|
| 171 | - 'date_jour_5_abbr' => 'Thu.', |
|
| 172 | - 'date_jour_5_initiale' => 'T.', |
|
| 173 | - 'date_jour_6' => 'Friday', |
|
| 174 | - 'date_jour_6_abbr' => 'Fri.', |
|
| 175 | - 'date_jour_6_initiale' => 'F.', |
|
| 176 | - 'date_jour_7' => 'Saturday', |
|
| 177 | - 'date_jour_7_abbr' => 'Sat.', |
|
| 178 | - 'date_jour_7_initiale' => 'S.', |
|
| 179 | - 'date_jours' => 'days', |
|
| 180 | - 'date_minutes' => 'minutes', |
|
| 181 | - 'date_mois' => 'months', |
|
| 182 | - 'date_mois_1' => 'January', |
|
| 183 | - 'date_mois_10' => 'October', |
|
| 184 | - 'date_mois_10_abbr' => 'Oct', |
|
| 185 | - 'date_mois_11' => 'November', |
|
| 186 | - 'date_mois_11_abbr' => 'Nov', |
|
| 187 | - 'date_mois_12' => 'December', |
|
| 188 | - 'date_mois_12_abbr' => 'Dec', |
|
| 189 | - 'date_mois_1_abbr' => 'Jan', |
|
| 190 | - 'date_mois_2' => 'February', |
|
| 191 | - 'date_mois_2_abbr' => 'Feb', |
|
| 192 | - 'date_mois_3' => 'March', |
|
| 193 | - 'date_mois_3_abbr' => 'Mar', |
|
| 194 | - 'date_mois_4' => 'April', |
|
| 195 | - 'date_mois_4_abbr' => 'Apr', |
|
| 196 | - 'date_mois_5' => 'May', |
|
| 197 | - 'date_mois_5_abbr' => 'May', |
|
| 198 | - 'date_mois_6' => 'June', |
|
| 199 | - 'date_mois_6_abbr' => 'Jun', |
|
| 200 | - 'date_mois_7' => 'July', |
|
| 201 | - 'date_mois_7_abbr' => 'Jul', |
|
| 202 | - 'date_mois_8' => 'August', |
|
| 203 | - 'date_mois_8_abbr' => 'Aug', |
|
| 204 | - 'date_mois_9' => 'September', |
|
| 205 | - 'date_mois_9_abbr' => 'Sep', |
|
| 206 | - 'date_saison_1' => 'winter', |
|
| 207 | - 'date_saison_2' => 'spring', |
|
| 208 | - 'date_saison_3' => 'summer', |
|
| 209 | - 'date_saison_4' => 'autumn', |
|
| 210 | - 'date_secondes' => 'seconds', |
|
| 211 | - 'date_semaines' => 'weeks', |
|
| 212 | - 'date_un_mois' => 'month', |
|
| 213 | - 'date_une_heure' => 'hour', |
|
| 214 | - 'date_une_minute' => 'minute', |
|
| 215 | - 'date_une_seconde' => 'second', |
|
| 216 | - 'date_une_semaine' => 'week', |
|
| 217 | - 'dirs_commencer' => ' in order to start installation for real', |
|
| 218 | - 'dirs_preliminaire' => 'Preliminary: <b>Setting up access permissions</b>', |
|
| 219 | - 'dirs_probleme_droits' => 'Problem with access permissions', |
|
| 220 | - 'dirs_repertoires_absents' => '<p><b>The following directories were not found: </b></p><ul>@bad_dirs@.</ul> |
|
| 91 | + // D |
|
| 92 | + 'date_aujourdhui' => 'today', |
|
| 93 | + 'date_avant_jc' => 'B.C.', |
|
| 94 | + 'date_dans' => 'in @delai@', |
|
| 95 | + 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | + 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | + 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | + 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | + 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | + 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | + 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | + 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | + 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | + 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | + 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | + 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | + 'date_demain' => 'tomorrow', |
|
| 108 | + 'date_fmt_heures_minutes' => '@h@:@m@', |
|
| 109 | + 'date_fmt_heures_minutes_court' => '@h@:@m@', |
|
| 110 | + 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | + 'date_fmt_jour_heure' => '@jour@ at @heure@', |
|
| 112 | + 'date_fmt_jour_heure_debut_fin' => '@jour@ from @heure_debut@ to @heure_fin@', |
|
| 113 | + 'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ from @heure_debut@@dtabbr@ to @dtend@@heure_fin@@dtabbr@', |
|
| 114 | + 'date_fmt_jour_mois' => '@jourmois@', |
|
| 115 | + 'date_fmt_jour_mois_annee' => '@jourmois@ @annee@', |
|
| 116 | + 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | + 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | + 'date_fmt_nomjour_date' => 'on @nomjour@ @date@', |
|
| 119 | + 'date_fmt_periode' => 'From @date_debut@ to @date_fin@', |
|
| 120 | + 'date_fmt_periode_abbr' => 'From @dtart@@date_debut@@dtabbr@ to @dtend@@date_fin@@dtabbr@', |
|
| 121 | + 'date_fmt_periode_from' => 'From', |
|
| 122 | + 'date_fmt_periode_to' => 'to', |
|
| 123 | + 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | + 'date_heures' => 'hours', |
|
| 125 | + 'date_hier' => 'yesterday', |
|
| 126 | + 'date_il_y_a' => '@delai@ ago', |
|
| 127 | + 'date_jnum1' => '1', |
|
| 128 | + 'date_jnum10' => '10', |
|
| 129 | + 'date_jnum11' => '11', |
|
| 130 | + 'date_jnum12' => '12', |
|
| 131 | + 'date_jnum13' => '13', |
|
| 132 | + 'date_jnum14' => '14', |
|
| 133 | + 'date_jnum15' => '15', |
|
| 134 | + 'date_jnum16' => '16', |
|
| 135 | + 'date_jnum17' => '17', |
|
| 136 | + 'date_jnum18' => '18', |
|
| 137 | + 'date_jnum19' => '19', |
|
| 138 | + 'date_jnum2' => '2', |
|
| 139 | + 'date_jnum20' => '20', |
|
| 140 | + 'date_jnum21' => '21', |
|
| 141 | + 'date_jnum22' => '22', |
|
| 142 | + 'date_jnum23' => '23', |
|
| 143 | + 'date_jnum24' => '24', |
|
| 144 | + 'date_jnum25' => '25', |
|
| 145 | + 'date_jnum26' => '26', |
|
| 146 | + 'date_jnum27' => '27', |
|
| 147 | + 'date_jnum28' => '28', |
|
| 148 | + 'date_jnum29' => '29', |
|
| 149 | + 'date_jnum3' => '3', |
|
| 150 | + 'date_jnum30' => '30', |
|
| 151 | + 'date_jnum31' => '31', |
|
| 152 | + 'date_jnum4' => '4', |
|
| 153 | + 'date_jnum5' => '5', |
|
| 154 | + 'date_jnum6' => '6', |
|
| 155 | + 'date_jnum7' => '7', |
|
| 156 | + 'date_jnum8' => '8', |
|
| 157 | + 'date_jnum9' => '9', |
|
| 158 | + 'date_jour_1' => 'Sunday', |
|
| 159 | + 'date_jour_1_abbr' => 'Sun.', |
|
| 160 | + 'date_jour_1_initiale' => 'S.', |
|
| 161 | + 'date_jour_2' => 'Monday', |
|
| 162 | + 'date_jour_2_abbr' => 'Mon.', |
|
| 163 | + 'date_jour_2_initiale' => 'M.', |
|
| 164 | + 'date_jour_3' => 'Tuesday', |
|
| 165 | + 'date_jour_3_abbr' => 'Tue.', |
|
| 166 | + 'date_jour_3_initiale' => 'T.', |
|
| 167 | + 'date_jour_4' => 'Wednesday', |
|
| 168 | + 'date_jour_4_abbr' => 'Wed.', |
|
| 169 | + 'date_jour_4_initiale' => 'W.', |
|
| 170 | + 'date_jour_5' => 'Thursday', |
|
| 171 | + 'date_jour_5_abbr' => 'Thu.', |
|
| 172 | + 'date_jour_5_initiale' => 'T.', |
|
| 173 | + 'date_jour_6' => 'Friday', |
|
| 174 | + 'date_jour_6_abbr' => 'Fri.', |
|
| 175 | + 'date_jour_6_initiale' => 'F.', |
|
| 176 | + 'date_jour_7' => 'Saturday', |
|
| 177 | + 'date_jour_7_abbr' => 'Sat.', |
|
| 178 | + 'date_jour_7_initiale' => 'S.', |
|
| 179 | + 'date_jours' => 'days', |
|
| 180 | + 'date_minutes' => 'minutes', |
|
| 181 | + 'date_mois' => 'months', |
|
| 182 | + 'date_mois_1' => 'January', |
|
| 183 | + 'date_mois_10' => 'October', |
|
| 184 | + 'date_mois_10_abbr' => 'Oct', |
|
| 185 | + 'date_mois_11' => 'November', |
|
| 186 | + 'date_mois_11_abbr' => 'Nov', |
|
| 187 | + 'date_mois_12' => 'December', |
|
| 188 | + 'date_mois_12_abbr' => 'Dec', |
|
| 189 | + 'date_mois_1_abbr' => 'Jan', |
|
| 190 | + 'date_mois_2' => 'February', |
|
| 191 | + 'date_mois_2_abbr' => 'Feb', |
|
| 192 | + 'date_mois_3' => 'March', |
|
| 193 | + 'date_mois_3_abbr' => 'Mar', |
|
| 194 | + 'date_mois_4' => 'April', |
|
| 195 | + 'date_mois_4_abbr' => 'Apr', |
|
| 196 | + 'date_mois_5' => 'May', |
|
| 197 | + 'date_mois_5_abbr' => 'May', |
|
| 198 | + 'date_mois_6' => 'June', |
|
| 199 | + 'date_mois_6_abbr' => 'Jun', |
|
| 200 | + 'date_mois_7' => 'July', |
|
| 201 | + 'date_mois_7_abbr' => 'Jul', |
|
| 202 | + 'date_mois_8' => 'August', |
|
| 203 | + 'date_mois_8_abbr' => 'Aug', |
|
| 204 | + 'date_mois_9' => 'September', |
|
| 205 | + 'date_mois_9_abbr' => 'Sep', |
|
| 206 | + 'date_saison_1' => 'winter', |
|
| 207 | + 'date_saison_2' => 'spring', |
|
| 208 | + 'date_saison_3' => 'summer', |
|
| 209 | + 'date_saison_4' => 'autumn', |
|
| 210 | + 'date_secondes' => 'seconds', |
|
| 211 | + 'date_semaines' => 'weeks', |
|
| 212 | + 'date_un_mois' => 'month', |
|
| 213 | + 'date_une_heure' => 'hour', |
|
| 214 | + 'date_une_minute' => 'minute', |
|
| 215 | + 'date_une_seconde' => 'second', |
|
| 216 | + 'date_une_semaine' => 'week', |
|
| 217 | + 'dirs_commencer' => ' in order to start installation for real', |
|
| 218 | + 'dirs_preliminaire' => 'Preliminary: <b>Setting up access permissions</b>', |
|
| 219 | + 'dirs_probleme_droits' => 'Problem with access permissions', |
|
| 220 | + 'dirs_repertoires_absents' => '<p><b>The following directories were not found: </b></p><ul>@bad_dirs@.</ul> |
|
| 221 | 221 | <p>It is possible that this is due to inappropriate lower or upper case letters in directory names. |
| 222 | 222 | Please check that the case of the letters in the names of these directories match what is displayed |
| 223 | 223 | above. If they don’t, correct the directory names using your FTP client.</p> |
| 224 | 224 | <p>Once this is done, you can', |
| 225 | - 'dirs_repertoires_suivants' => '<p><b>The following directories do not have write permission: </b></p><ul>@bad_dirs@</ul> |
|
| 225 | + 'dirs_repertoires_suivants' => '<p><b>The following directories do not have write permission: </b></p><ul>@bad_dirs@</ul> |
|
| 226 | 226 | <p>To change this, use your FTP client to set access permissions for each |
| 227 | 227 | of these directories. The procedure is detailed in the installation guide.</p> |
| 228 | 228 | <p>Once you have done this, you can ', |
| 229 | - 'double_occurrence' => 'Two instances of @balise@', |
|
| 229 | + 'double_occurrence' => 'Two instances of @balise@', |
|
| 230 | 230 | |
| 231 | - // E |
|
| 232 | - 'en_cours' => 'processing', |
|
| 233 | - 'envoi_via_le_site' => 'Sent via the site', |
|
| 234 | - 'erreur' => 'Error', |
|
| 235 | - 'erreur_balise_non_fermee' => 'last tag not closed:', |
|
| 236 | - 'erreur_technique_ajaxform' => 'Ooops. An unexpected error prevented to submit the form. You can try again.', |
|
| 237 | - 'erreur_technique_enregistrement_champs' => 'A technical error prevented the right registration of the field @champs@.', |
|
| 238 | - 'erreur_technique_enregistrement_impossible' => 'A technical error prevented the registration.', |
|
| 239 | - 'erreur_texte' => 'error(s)', |
|
| 240 | - 'etape' => 'Step', |
|
| 231 | + // E |
|
| 232 | + 'en_cours' => 'processing', |
|
| 233 | + 'envoi_via_le_site' => 'Sent via the site', |
|
| 234 | + 'erreur' => 'Error', |
|
| 235 | + 'erreur_balise_non_fermee' => 'last tag not closed:', |
|
| 236 | + 'erreur_technique_ajaxform' => 'Ooops. An unexpected error prevented to submit the form. You can try again.', |
|
| 237 | + 'erreur_technique_enregistrement_champs' => 'A technical error prevented the right registration of the field @champs@.', |
|
| 238 | + 'erreur_technique_enregistrement_impossible' => 'A technical error prevented the registration.', |
|
| 239 | + 'erreur_texte' => 'error(s)', |
|
| 240 | + 'etape' => 'Step', |
|
| 241 | 241 | |
| 242 | - // F |
|
| 243 | - 'fichier_introuvable' => 'File not found: @fichier@', |
|
| 244 | - 'fonction_introuvable' => 'Function @fonction@() not found.', |
|
| 245 | - 'form_auteur_confirmation' => 'Please confirm your email address', |
|
| 246 | - 'form_auteur_email_modifie' => 'Your email address has been changed.', |
|
| 247 | - 'form_auteur_envoi_mail_confirmation' => 'A confirmation email has been sent to @email@. You must visit the URL mentioned in the message to validate your email address.', |
|
| 248 | - 'form_auteur_mail_confirmation' => 'Hello, |
|
| 242 | + // F |
|
| 243 | + 'fichier_introuvable' => 'File not found: @fichier@', |
|
| 244 | + 'fonction_introuvable' => 'Function @fonction@() not found.', |
|
| 245 | + 'form_auteur_confirmation' => 'Please confirm your email address', |
|
| 246 | + 'form_auteur_email_modifie' => 'Your email address has been changed.', |
|
| 247 | + 'form_auteur_envoi_mail_confirmation' => 'A confirmation email has been sent to @email@. You must visit the URL mentioned in the message to validate your email address.', |
|
| 248 | + 'form_auteur_mail_confirmation' => 'Hello, |
|
| 249 | 249 | |
| 250 | 250 | You have asked to change your email address. |
| 251 | 251 | To confirm your new address, you need to connect to |
@@ -253,347 +253,347 @@ discard block |
||
| 253 | 253 | |
| 254 | 254 | @url@ |
| 255 | 255 | ', |
| 256 | - 'form_deja_inscrit' => 'You are already registered.', |
|
| 257 | - 'form_email_non_valide' => 'Your email address is not valid.', |
|
| 258 | - 'form_forum_access_refuse' => 'You no longer have access to this site.', |
|
| 259 | - 'form_forum_bonjour' => 'Hello @nom@,', |
|
| 260 | - 'form_forum_confirmer_email' => 'To confirm your email address, follow this link: @url_confirm@', |
|
| 261 | - 'form_forum_email_deja_enregistre' => 'This email address is already registered. Enter your usual password.', |
|
| 262 | - 'form_forum_identifiant_mail' => 'Your new identifier has just been emailed to you.', |
|
| 263 | - 'form_forum_identifiants' => 'Personal identifiers', |
|
| 264 | - 'form_forum_indiquer_nom_email' => 'Enter your name and email address here. You will receive your personal identifier shortly by email.', |
|
| 265 | - 'form_forum_login' => 'login:', |
|
| 266 | - 'form_forum_message_auto' => '(this is an automated message)', |
|
| 267 | - 'form_forum_pass' => 'password:', |
|
| 268 | - 'form_forum_probleme_mail' => 'Mail problem: the identifier could not be sent.', |
|
| 269 | - 'form_forum_voici1' => 'Here are your identifiers. You may now participate on the site |
|
| 256 | + 'form_deja_inscrit' => 'You are already registered.', |
|
| 257 | + 'form_email_non_valide' => 'Your email address is not valid.', |
|
| 258 | + 'form_forum_access_refuse' => 'You no longer have access to this site.', |
|
| 259 | + 'form_forum_bonjour' => 'Hello @nom@,', |
|
| 260 | + 'form_forum_confirmer_email' => 'To confirm your email address, follow this link: @url_confirm@', |
|
| 261 | + 'form_forum_email_deja_enregistre' => 'This email address is already registered. Enter your usual password.', |
|
| 262 | + 'form_forum_identifiant_mail' => 'Your new identifier has just been emailed to you.', |
|
| 263 | + 'form_forum_identifiants' => 'Personal identifiers', |
|
| 264 | + 'form_forum_indiquer_nom_email' => 'Enter your name and email address here. You will receive your personal identifier shortly by email.', |
|
| 265 | + 'form_forum_login' => 'login:', |
|
| 266 | + 'form_forum_message_auto' => '(this is an automated message)', |
|
| 267 | + 'form_forum_pass' => 'password:', |
|
| 268 | + 'form_forum_probleme_mail' => 'Mail problem: the identifier could not be sent.', |
|
| 269 | + 'form_forum_voici1' => 'Here are your identifiers. You may now participate on the site |
|
| 270 | 270 | "@nom_site_spip@" (@adresse_site@):', |
| 271 | - 'form_forum_voici2' => 'Here are your identifiers for submitting articles to |
|
| 271 | + 'form_forum_voici2' => 'Here are your identifiers for submitting articles to |
|
| 272 | 272 | the site "@nom_site_spip@" (@adresse_login@):', |
| 273 | - 'form_indiquer_email' => 'Please enter your email address.', |
|
| 274 | - 'form_indiquer_nom' => 'Please enter your name.', |
|
| 275 | - 'form_indiquer_nom_site' => 'Please enter the name of your site.', |
|
| 276 | - 'form_pet_deja_enregistre' => 'This site is already registered', |
|
| 277 | - 'form_pet_signature_pasprise' => 'Your signature has been ignored.', |
|
| 278 | - 'form_prop_confirmer_envoi' => 'Confirm send', |
|
| 279 | - 'form_prop_description' => 'Description/comment', |
|
| 280 | - 'form_prop_enregistre' => 'Your suggestion has been recorded. It will appear online after being validated by the administrators of this site.', |
|
| 281 | - 'form_prop_envoyer' => 'Send a message', |
|
| 282 | - 'form_prop_indiquer_email' => 'Please enter a valid email address', |
|
| 283 | - 'form_prop_indiquer_nom_site' => 'Please enter the site’s name.', |
|
| 284 | - 'form_prop_indiquer_sujet' => 'Please enter a subject', |
|
| 285 | - 'form_prop_message_envoye' => 'Message sent', |
|
| 286 | - 'form_prop_non_enregistre' => 'Your suggestion has not been recorded.', |
|
| 287 | - 'form_prop_sujet' => 'Subject', |
|
| 288 | - 'form_prop_url_site' => 'Site URL', |
|
| 289 | - 'format_date_attendu' => 'Enter a date in jj/mm/aaaa format.', |
|
| 290 | - 'format_date_incorrecte' => 'The date or its format is incorrect.', |
|
| 291 | - 'format_heure_attendu' => 'Enter a time in hh:mm format.', |
|
| 292 | - 'format_heure_incorrecte' => 'The hour or its format is incorrect.', |
|
| 293 | - 'forum_non_inscrit' => 'Either you are not registered, or the address or password are wrong.', |
|
| 294 | - 'forum_par_auteur' => 'by @auteur@', |
|
| 295 | - 'forum_titre_erreur' => 'Error...', |
|
| 273 | + 'form_indiquer_email' => 'Please enter your email address.', |
|
| 274 | + 'form_indiquer_nom' => 'Please enter your name.', |
|
| 275 | + 'form_indiquer_nom_site' => 'Please enter the name of your site.', |
|
| 276 | + 'form_pet_deja_enregistre' => 'This site is already registered', |
|
| 277 | + 'form_pet_signature_pasprise' => 'Your signature has been ignored.', |
|
| 278 | + 'form_prop_confirmer_envoi' => 'Confirm send', |
|
| 279 | + 'form_prop_description' => 'Description/comment', |
|
| 280 | + 'form_prop_enregistre' => 'Your suggestion has been recorded. It will appear online after being validated by the administrators of this site.', |
|
| 281 | + 'form_prop_envoyer' => 'Send a message', |
|
| 282 | + 'form_prop_indiquer_email' => 'Please enter a valid email address', |
|
| 283 | + 'form_prop_indiquer_nom_site' => 'Please enter the site’s name.', |
|
| 284 | + 'form_prop_indiquer_sujet' => 'Please enter a subject', |
|
| 285 | + 'form_prop_message_envoye' => 'Message sent', |
|
| 286 | + 'form_prop_non_enregistre' => 'Your suggestion has not been recorded.', |
|
| 287 | + 'form_prop_sujet' => 'Subject', |
|
| 288 | + 'form_prop_url_site' => 'Site URL', |
|
| 289 | + 'format_date_attendu' => 'Enter a date in jj/mm/aaaa format.', |
|
| 290 | + 'format_date_incorrecte' => 'The date or its format is incorrect.', |
|
| 291 | + 'format_heure_attendu' => 'Enter a time in hh:mm format.', |
|
| 292 | + 'format_heure_incorrecte' => 'The hour or its format is incorrect.', |
|
| 293 | + 'forum_non_inscrit' => 'Either you are not registered, or the address or password are wrong.', |
|
| 294 | + 'forum_par_auteur' => 'by @auteur@', |
|
| 295 | + 'forum_titre_erreur' => 'Error...', |
|
| 296 | 296 | |
| 297 | - // I |
|
| 298 | - 'ical_texte_rss_articles' => 'The site’s backend file for articles is:', |
|
| 299 | - 'ical_texte_rss_articles2' => 'You can also get backend files for individual sections on the site:', |
|
| 300 | - 'ical_texte_rss_breves' => 'Furthermore, there is a file containing the site’s news items. By selecting a section number, you can choose to get news items in that section only.', |
|
| 301 | - 'icone_a_suivre' => 'Launch pad', |
|
| 302 | - 'icone_admin_site' => 'Site administration', |
|
| 303 | - 'icone_agenda' => 'Calendar', |
|
| 304 | - 'icone_aide_ligne' => 'Help', |
|
| 305 | - 'icone_articles' => 'Articles', |
|
| 306 | - 'icone_auteurs' => 'Authors', |
|
| 307 | - 'icone_brouteur' => 'Quick browsing', |
|
| 308 | - 'icone_configuration_site' => 'Configuration', |
|
| 309 | - 'icone_configurer_site' => 'Configure your site', |
|
| 310 | - 'icone_creer_nouvel_auteur' => 'Create a new author', |
|
| 311 | - 'icone_creer_rubrique' => 'Create a section', |
|
| 312 | - 'icone_creer_sous_rubrique' => 'Create a subsection', |
|
| 313 | - 'icone_deconnecter' => 'Log out', |
|
| 314 | - 'icone_discussions' => 'Discussions', |
|
| 315 | - 'icone_doc_rubrique' => 'Documents attached', |
|
| 316 | - 'icone_ecrire_article' => 'Write a new article', |
|
| 317 | - 'icone_edition_site' => 'Edit site', |
|
| 318 | - 'icone_gestion_langues' => 'Language options', |
|
| 319 | - 'icone_informations_personnelles' => 'Personal information', |
|
| 320 | - 'icone_interface_complet' => 'full interface', |
|
| 321 | - 'icone_interface_simple' => 'Simplified interface', |
|
| 322 | - 'icone_maintenance_site' => 'Site maintenance', |
|
| 323 | - 'icone_messagerie_personnelle' => 'Private messages', |
|
| 324 | - 'icone_repartition_debut' => 'Show distribution from the start', |
|
| 325 | - 'icone_rubriques' => 'Sections', |
|
| 326 | - 'icone_sauver_site' => 'Site backup', |
|
| 327 | - 'icone_site_entier' => 'The entire site', |
|
| 328 | - 'icone_sites_references' => 'Referenced sites', |
|
| 329 | - 'icone_statistiques' => 'Site statistics', |
|
| 330 | - 'icone_suivi_activite' => 'Follow site activity', |
|
| 331 | - 'icone_suivi_actualite' => 'Site statistics', |
|
| 332 | - 'icone_suivi_pettions' => 'Manage petitions', |
|
| 333 | - 'icone_suivi_revisions' => 'Article revisions', |
|
| 334 | - 'icone_supprimer_document' => 'Delete this document', |
|
| 335 | - 'icone_supprimer_image' => 'Delete this image', |
|
| 336 | - 'icone_tous_articles' => 'All your articles', |
|
| 337 | - 'icone_tous_auteur' => 'All authors', |
|
| 338 | - 'icone_tous_visiteur' => 'All visitors', |
|
| 339 | - 'icone_visiter_site' => 'View the public site', |
|
| 340 | - 'icone_voir_en_ligne' => 'View online', |
|
| 341 | - 'img_indisponible' => 'image unavailable', |
|
| 342 | - 'impossible' => 'impossible', |
|
| 343 | - 'info_a_suivre' => 'LAUNCH PAD»', |
|
| 344 | - 'info_acces_interdit' => 'Access forbidden', |
|
| 345 | - 'info_acces_refuse' => 'Access denied', |
|
| 346 | - 'info_action' => 'Action: @action@', |
|
| 347 | - 'info_administrer_rubriques' => 'You can manage this section and any subsections', |
|
| 348 | - 'info_adresse_non_indiquee' => 'You did not specify an address to test!', |
|
| 349 | - 'info_aide' => 'HELP:', |
|
| 350 | - 'info_ajouter_mot' => 'Add keyword', |
|
| 351 | - 'info_annonce' => 'ANNOUNCEMENT', |
|
| 352 | - 'info_annonces_generales' => 'General announcements:', |
|
| 353 | - 'info_article_propose' => 'Article submitted', |
|
| 354 | - 'info_article_publie' => 'Article published', |
|
| 355 | - 'info_article_redaction' => 'Article in progress', |
|
| 356 | - 'info_article_refuse' => 'Article rejected', |
|
| 357 | - 'info_article_supprime' => 'Article deleted', |
|
| 358 | - 'info_articles' => 'Articles', |
|
| 359 | - 'info_articles_a_valider' => 'Articles awaiting validation', |
|
| 360 | - 'info_articles_nb' => '@nb@ articles', |
|
| 361 | - 'info_articles_proposes' => 'Articles submitted', |
|
| 362 | - 'info_articles_un' => '1 article', |
|
| 363 | - 'info_auteurs_nombre' => 'author(s):', |
|
| 364 | - 'info_authentification_ftp' => 'Authentication (by FTP).', |
|
| 365 | - 'info_breves_2' => 'news', |
|
| 366 | - 'info_breves_nb' => '@nb@ news items', |
|
| 367 | - 'info_breves_un' => '1 news item', |
|
| 368 | - 'info_connexion_refusee' => 'Connection denied', |
|
| 369 | - 'info_contact_developpeur' => 'Please contact a developer.', |
|
| 370 | - 'info_contenance' => 'This site contains:', |
|
| 371 | - 'info_contribution' => 'contributions', |
|
| 372 | - 'info_copyright' => '@spip@ is free software distributed @lien_gpl@.', |
|
| 373 | - 'info_copyright_doc' => 'For more visit <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 374 | - 'info_copyright_gpl' => 'under the GPL license', |
|
| 375 | - 'info_cours_edition' => 'In progress', |
|
| 376 | - 'info_creer_repertoire' => 'Please create a file or a directory called:', |
|
| 377 | - 'info_creer_repertoire_2' => 'inside the sub-directory <b>@repertoire@</b>, then', |
|
| 378 | - 'info_creer_vignette' => 'automatic thumbnail creation', |
|
| 379 | - 'info_creerdansrubrique_non_autorise' => 'You don’t have sufficient rights to create content in this section', |
|
| 380 | - 'info_deplier' => 'Unfold', |
|
| 381 | - 'info_descriptif_nombre' => 'description(s):', |
|
| 382 | - 'info_description' => 'Description:', |
|
| 383 | - 'info_description_2' => 'Description:', |
|
| 384 | - 'info_dimension' => 'Size:', |
|
| 385 | - 'info_documents_nb' => '@nb@ documents', |
|
| 386 | - 'info_documents_un' => '1 document', |
|
| 387 | - 'info_ecire_message_prive' => 'Write a private message', |
|
| 388 | - 'info_email_invalide' => 'Invalid email address.', |
|
| 389 | - 'info_en_cours_validation' => 'Your articles in progress', |
|
| 390 | - 'info_en_ligne' => 'Online now:', |
|
| 391 | - 'info_envoyer_message_prive' => 'Send a private message to this author', |
|
| 392 | - 'info_erreur_requete' => 'Error in query:', |
|
| 393 | - 'info_erreur_squelette2' => 'No <b>@fichier@</b> template available ...', |
|
| 394 | - 'info_erreur_systeme' => 'System error (errno @errsys@)', |
|
| 395 | - 'info_erreur_systeme2' => 'The hard disk may be full or the database damaged. <br /> |
|
| 297 | + // I |
|
| 298 | + 'ical_texte_rss_articles' => 'The site’s backend file for articles is:', |
|
| 299 | + 'ical_texte_rss_articles2' => 'You can also get backend files for individual sections on the site:', |
|
| 300 | + 'ical_texte_rss_breves' => 'Furthermore, there is a file containing the site’s news items. By selecting a section number, you can choose to get news items in that section only.', |
|
| 301 | + 'icone_a_suivre' => 'Launch pad', |
|
| 302 | + 'icone_admin_site' => 'Site administration', |
|
| 303 | + 'icone_agenda' => 'Calendar', |
|
| 304 | + 'icone_aide_ligne' => 'Help', |
|
| 305 | + 'icone_articles' => 'Articles', |
|
| 306 | + 'icone_auteurs' => 'Authors', |
|
| 307 | + 'icone_brouteur' => 'Quick browsing', |
|
| 308 | + 'icone_configuration_site' => 'Configuration', |
|
| 309 | + 'icone_configurer_site' => 'Configure your site', |
|
| 310 | + 'icone_creer_nouvel_auteur' => 'Create a new author', |
|
| 311 | + 'icone_creer_rubrique' => 'Create a section', |
|
| 312 | + 'icone_creer_sous_rubrique' => 'Create a subsection', |
|
| 313 | + 'icone_deconnecter' => 'Log out', |
|
| 314 | + 'icone_discussions' => 'Discussions', |
|
| 315 | + 'icone_doc_rubrique' => 'Documents attached', |
|
| 316 | + 'icone_ecrire_article' => 'Write a new article', |
|
| 317 | + 'icone_edition_site' => 'Edit site', |
|
| 318 | + 'icone_gestion_langues' => 'Language options', |
|
| 319 | + 'icone_informations_personnelles' => 'Personal information', |
|
| 320 | + 'icone_interface_complet' => 'full interface', |
|
| 321 | + 'icone_interface_simple' => 'Simplified interface', |
|
| 322 | + 'icone_maintenance_site' => 'Site maintenance', |
|
| 323 | + 'icone_messagerie_personnelle' => 'Private messages', |
|
| 324 | + 'icone_repartition_debut' => 'Show distribution from the start', |
|
| 325 | + 'icone_rubriques' => 'Sections', |
|
| 326 | + 'icone_sauver_site' => 'Site backup', |
|
| 327 | + 'icone_site_entier' => 'The entire site', |
|
| 328 | + 'icone_sites_references' => 'Referenced sites', |
|
| 329 | + 'icone_statistiques' => 'Site statistics', |
|
| 330 | + 'icone_suivi_activite' => 'Follow site activity', |
|
| 331 | + 'icone_suivi_actualite' => 'Site statistics', |
|
| 332 | + 'icone_suivi_pettions' => 'Manage petitions', |
|
| 333 | + 'icone_suivi_revisions' => 'Article revisions', |
|
| 334 | + 'icone_supprimer_document' => 'Delete this document', |
|
| 335 | + 'icone_supprimer_image' => 'Delete this image', |
|
| 336 | + 'icone_tous_articles' => 'All your articles', |
|
| 337 | + 'icone_tous_auteur' => 'All authors', |
|
| 338 | + 'icone_tous_visiteur' => 'All visitors', |
|
| 339 | + 'icone_visiter_site' => 'View the public site', |
|
| 340 | + 'icone_voir_en_ligne' => 'View online', |
|
| 341 | + 'img_indisponible' => 'image unavailable', |
|
| 342 | + 'impossible' => 'impossible', |
|
| 343 | + 'info_a_suivre' => 'LAUNCH PAD»', |
|
| 344 | + 'info_acces_interdit' => 'Access forbidden', |
|
| 345 | + 'info_acces_refuse' => 'Access denied', |
|
| 346 | + 'info_action' => 'Action: @action@', |
|
| 347 | + 'info_administrer_rubriques' => 'You can manage this section and any subsections', |
|
| 348 | + 'info_adresse_non_indiquee' => 'You did not specify an address to test!', |
|
| 349 | + 'info_aide' => 'HELP:', |
|
| 350 | + 'info_ajouter_mot' => 'Add keyword', |
|
| 351 | + 'info_annonce' => 'ANNOUNCEMENT', |
|
| 352 | + 'info_annonces_generales' => 'General announcements:', |
|
| 353 | + 'info_article_propose' => 'Article submitted', |
|
| 354 | + 'info_article_publie' => 'Article published', |
|
| 355 | + 'info_article_redaction' => 'Article in progress', |
|
| 356 | + 'info_article_refuse' => 'Article rejected', |
|
| 357 | + 'info_article_supprime' => 'Article deleted', |
|
| 358 | + 'info_articles' => 'Articles', |
|
| 359 | + 'info_articles_a_valider' => 'Articles awaiting validation', |
|
| 360 | + 'info_articles_nb' => '@nb@ articles', |
|
| 361 | + 'info_articles_proposes' => 'Articles submitted', |
|
| 362 | + 'info_articles_un' => '1 article', |
|
| 363 | + 'info_auteurs_nombre' => 'author(s):', |
|
| 364 | + 'info_authentification_ftp' => 'Authentication (by FTP).', |
|
| 365 | + 'info_breves_2' => 'news', |
|
| 366 | + 'info_breves_nb' => '@nb@ news items', |
|
| 367 | + 'info_breves_un' => '1 news item', |
|
| 368 | + 'info_connexion_refusee' => 'Connection denied', |
|
| 369 | + 'info_contact_developpeur' => 'Please contact a developer.', |
|
| 370 | + 'info_contenance' => 'This site contains:', |
|
| 371 | + 'info_contribution' => 'contributions', |
|
| 372 | + 'info_copyright' => '@spip@ is free software distributed @lien_gpl@.', |
|
| 373 | + 'info_copyright_doc' => 'For more visit <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 374 | + 'info_copyright_gpl' => 'under the GPL license', |
|
| 375 | + 'info_cours_edition' => 'In progress', |
|
| 376 | + 'info_creer_repertoire' => 'Please create a file or a directory called:', |
|
| 377 | + 'info_creer_repertoire_2' => 'inside the sub-directory <b>@repertoire@</b>, then', |
|
| 378 | + 'info_creer_vignette' => 'automatic thumbnail creation', |
|
| 379 | + 'info_creerdansrubrique_non_autorise' => 'You don’t have sufficient rights to create content in this section', |
|
| 380 | + 'info_deplier' => 'Unfold', |
|
| 381 | + 'info_descriptif_nombre' => 'description(s):', |
|
| 382 | + 'info_description' => 'Description:', |
|
| 383 | + 'info_description_2' => 'Description:', |
|
| 384 | + 'info_dimension' => 'Size:', |
|
| 385 | + 'info_documents_nb' => '@nb@ documents', |
|
| 386 | + 'info_documents_un' => '1 document', |
|
| 387 | + 'info_ecire_message_prive' => 'Write a private message', |
|
| 388 | + 'info_email_invalide' => 'Invalid email address.', |
|
| 389 | + 'info_en_cours_validation' => 'Your articles in progress', |
|
| 390 | + 'info_en_ligne' => 'Online now:', |
|
| 391 | + 'info_envoyer_message_prive' => 'Send a private message to this author', |
|
| 392 | + 'info_erreur_requete' => 'Error in query:', |
|
| 393 | + 'info_erreur_squelette2' => 'No <b>@fichier@</b> template available ...', |
|
| 394 | + 'info_erreur_systeme' => 'System error (errno @errsys@)', |
|
| 395 | + 'info_erreur_systeme2' => 'The hard disk may be full or the database damaged. <br /> |
|
| 396 | 396 | <span style="color:red;">Try <a href=\'@script@\'>repairing the database</a>, or contact your service provider.</span>', |
| 397 | - 'info_fini' => 'Done!', |
|
| 398 | - 'info_format_image' => 'Image format to be used for vignettes: @gd_formats@.', |
|
| 399 | - 'info_format_non_defini' => 'undefined format', |
|
| 400 | - 'info_grand_ecran' => 'Large display', |
|
| 401 | - 'info_image_aide' => 'HELP', |
|
| 402 | - 'info_image_process_titre' => 'How to create thumbnails', |
|
| 403 | - 'info_impossible_lire_page' => '<b>Error!</b> The page <tt><html>@test_proxy@</html></tt> cannot be viewed through the proxy', |
|
| 404 | - 'info_installation_systeme_publication' => 'Installing publication system...', |
|
| 405 | - 'info_installer_documents' => 'You can automatically install all documents in the folder @upload@.', |
|
| 406 | - 'info_installer_ftp' => 'As an administrator, you can install files via FTP to the folder @upload@ in order to select them directly from here.', |
|
| 407 | - 'info_installer_images' => 'You can install images in the formats JPEG, GIF, and PNG.', |
|
| 408 | - 'info_installer_images_dossier' => 'Install images in folder @upload@ if you want to select them here.', |
|
| 409 | - 'info_interface_complete' => 'full interface', |
|
| 410 | - 'info_interface_simple' => 'Simplified interface', |
|
| 411 | - 'info_joindre_document_article' => 'You can attach the following types of document to your article', |
|
| 412 | - 'info_joindre_document_rubrique' => 'You can add documents of the following types to this section ', |
|
| 413 | - 'info_joindre_documents_article' => 'You can attach documents of the following types to your article:', |
|
| 414 | - 'info_l_article' => 'the article', |
|
| 415 | - 'info_la_breve' => 'the news item', |
|
| 416 | - 'info_la_rubrique' => 'the section', |
|
| 417 | - 'info_langue_principale' => 'Main language for site', |
|
| 418 | - 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels', |
|
| 419 | - 'info_les_auteurs_1' => 'by @les_auteurs@', |
|
| 420 | - 'info_logo_format_interdit' => 'Only logos in these formats @formats@ are allowed.', |
|
| 421 | - 'info_logo_max_poids' => 'Logos must be less than @maxi@ (this file is @actuel@).', |
|
| 422 | - 'info_mail_fournisseur' => '[email protected]', |
|
| 423 | - 'info_message_2' => 'MESSAGE', |
|
| 424 | - 'info_message_supprime' => 'MESSAGE DELETED', |
|
| 425 | - 'info_messages_nb' => '@nb@ messages', |
|
| 426 | - 'info_messages_un' => '1 message', |
|
| 427 | - 'info_mise_en_ligne' => 'Published on:', |
|
| 428 | - 'info_modification_parametres_securite' => 'modifying security parameters', |
|
| 429 | - 'info_mois_courant' => 'During the month:', |
|
| 430 | - 'info_mot_cle_ajoute' => 'The following keyword was added to', |
|
| 431 | - 'info_multi_herit' => 'Default language', |
|
| 432 | - 'info_multi_langues_soulignees' => 'The <u>languages underlined</u> provide partial or total translations for all the interface texts. If you select these languages, many elements of the public site (dates, forms) will be translated automatically. As for the languages that are not underlined, those elements will be displayed using the site’s default language.', |
|
| 433 | - 'info_multilinguisme' => 'Multilingual', |
|
| 434 | - 'info_nom_non_utilisateurs_connectes' => 'Your name does not appear in the list of users online.', |
|
| 435 | - 'info_nom_utilisateurs_connectes' => 'Your name appears in the list of users online.', |
|
| 436 | - 'info_nombre_en_ligne' => 'Online now:', |
|
| 437 | - 'info_non_resultat' => 'No results for "@cherche_mot@"', |
|
| 438 | - 'info_non_utilisation_messagerie' => 'You are not using private messaging on this site.', |
|
| 439 | - 'info_nouveau_message' => 'YOU HAVE A NEW MESSAGE', |
|
| 440 | - 'info_nouveaux_messages' => 'YOU HAVE @total_messages@ NEW MESSAGES', |
|
| 441 | - 'info_numero_abbreviation' => 'No', |
|
| 442 | - 'info_obligatoire' => 'This information is required', |
|
| 443 | - 'info_page_actuelle' => 'Actual page', |
|
| 444 | - 'info_pense_bete' => 'MEMO', |
|
| 445 | - 'info_petit_ecran' => 'Small display', |
|
| 446 | - 'info_petition_close' => 'Petition closed', |
|
| 447 | - 'info_pixels' => 'pixels', |
|
| 448 | - 'info_plusieurs_mots_trouves' => 'Several keywords were found for "@cherche_mot@":', |
|
| 449 | - 'info_portfolio_automatique' => 'Automated portfolio:', |
|
| 450 | - 'info_premier_resultat' => '[First @debut_limit@ results out of @total@]', |
|
| 451 | - 'info_premier_resultat_sur' => '[First @debut_limit@ results out of @total@]', |
|
| 452 | - 'info_propose_1' => '[@nom_site_spip@] Submitted: @titre@', |
|
| 453 | - 'info_propose_2' => 'Article submitted |
|
| 397 | + 'info_fini' => 'Done!', |
|
| 398 | + 'info_format_image' => 'Image format to be used for vignettes: @gd_formats@.', |
|
| 399 | + 'info_format_non_defini' => 'undefined format', |
|
| 400 | + 'info_grand_ecran' => 'Large display', |
|
| 401 | + 'info_image_aide' => 'HELP', |
|
| 402 | + 'info_image_process_titre' => 'How to create thumbnails', |
|
| 403 | + 'info_impossible_lire_page' => '<b>Error!</b> The page <tt><html>@test_proxy@</html></tt> cannot be viewed through the proxy', |
|
| 404 | + 'info_installation_systeme_publication' => 'Installing publication system...', |
|
| 405 | + 'info_installer_documents' => 'You can automatically install all documents in the folder @upload@.', |
|
| 406 | + 'info_installer_ftp' => 'As an administrator, you can install files via FTP to the folder @upload@ in order to select them directly from here.', |
|
| 407 | + 'info_installer_images' => 'You can install images in the formats JPEG, GIF, and PNG.', |
|
| 408 | + 'info_installer_images_dossier' => 'Install images in folder @upload@ if you want to select them here.', |
|
| 409 | + 'info_interface_complete' => 'full interface', |
|
| 410 | + 'info_interface_simple' => 'Simplified interface', |
|
| 411 | + 'info_joindre_document_article' => 'You can attach the following types of document to your article', |
|
| 412 | + 'info_joindre_document_rubrique' => 'You can add documents of the following types to this section ', |
|
| 413 | + 'info_joindre_documents_article' => 'You can attach documents of the following types to your article:', |
|
| 414 | + 'info_l_article' => 'the article', |
|
| 415 | + 'info_la_breve' => 'the news item', |
|
| 416 | + 'info_la_rubrique' => 'the section', |
|
| 417 | + 'info_langue_principale' => 'Main language for site', |
|
| 418 | + 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels', |
|
| 419 | + 'info_les_auteurs_1' => 'by @les_auteurs@', |
|
| 420 | + 'info_logo_format_interdit' => 'Only logos in these formats @formats@ are allowed.', |
|
| 421 | + 'info_logo_max_poids' => 'Logos must be less than @maxi@ (this file is @actuel@).', |
|
| 422 | + 'info_mail_fournisseur' => '[email protected]', |
|
| 423 | + 'info_message_2' => 'MESSAGE', |
|
| 424 | + 'info_message_supprime' => 'MESSAGE DELETED', |
|
| 425 | + 'info_messages_nb' => '@nb@ messages', |
|
| 426 | + 'info_messages_un' => '1 message', |
|
| 427 | + 'info_mise_en_ligne' => 'Published on:', |
|
| 428 | + 'info_modification_parametres_securite' => 'modifying security parameters', |
|
| 429 | + 'info_mois_courant' => 'During the month:', |
|
| 430 | + 'info_mot_cle_ajoute' => 'The following keyword was added to', |
|
| 431 | + 'info_multi_herit' => 'Default language', |
|
| 432 | + 'info_multi_langues_soulignees' => 'The <u>languages underlined</u> provide partial or total translations for all the interface texts. If you select these languages, many elements of the public site (dates, forms) will be translated automatically. As for the languages that are not underlined, those elements will be displayed using the site’s default language.', |
|
| 433 | + 'info_multilinguisme' => 'Multilingual', |
|
| 434 | + 'info_nom_non_utilisateurs_connectes' => 'Your name does not appear in the list of users online.', |
|
| 435 | + 'info_nom_utilisateurs_connectes' => 'Your name appears in the list of users online.', |
|
| 436 | + 'info_nombre_en_ligne' => 'Online now:', |
|
| 437 | + 'info_non_resultat' => 'No results for "@cherche_mot@"', |
|
| 438 | + 'info_non_utilisation_messagerie' => 'You are not using private messaging on this site.', |
|
| 439 | + 'info_nouveau_message' => 'YOU HAVE A NEW MESSAGE', |
|
| 440 | + 'info_nouveaux_messages' => 'YOU HAVE @total_messages@ NEW MESSAGES', |
|
| 441 | + 'info_numero_abbreviation' => 'No', |
|
| 442 | + 'info_obligatoire' => 'This information is required', |
|
| 443 | + 'info_page_actuelle' => 'Actual page', |
|
| 444 | + 'info_pense_bete' => 'MEMO', |
|
| 445 | + 'info_petit_ecran' => 'Small display', |
|
| 446 | + 'info_petition_close' => 'Petition closed', |
|
| 447 | + 'info_pixels' => 'pixels', |
|
| 448 | + 'info_plusieurs_mots_trouves' => 'Several keywords were found for "@cherche_mot@":', |
|
| 449 | + 'info_portfolio_automatique' => 'Automated portfolio:', |
|
| 450 | + 'info_premier_resultat' => '[First @debut_limit@ results out of @total@]', |
|
| 451 | + 'info_premier_resultat_sur' => '[First @debut_limit@ results out of @total@]', |
|
| 452 | + 'info_propose_1' => '[@nom_site_spip@] Submitted: @titre@', |
|
| 453 | + 'info_propose_2' => 'Article submitted |
|
| 454 | 454 | -----------------', |
| 455 | - 'info_propose_3' => 'The article "@titre@" has been submitted for publication.', |
|
| 456 | - 'info_propose_4' => 'You are invited to review it and give your opinion', |
|
| 457 | - 'info_propose_5' => 'in the associated forum. It is available here:', |
|
| 458 | - 'info_publie_01' => 'The article "@titre@" was validated by @connect_nom@.', |
|
| 459 | - 'info_publie_1' => '[@nom_site_spip@] PUBLISHED: @titre@', |
|
| 460 | - 'info_publie_2' => 'Article published |
|
| 455 | + 'info_propose_3' => 'The article "@titre@" has been submitted for publication.', |
|
| 456 | + 'info_propose_4' => 'You are invited to review it and give your opinion', |
|
| 457 | + 'info_propose_5' => 'in the associated forum. It is available here:', |
|
| 458 | + 'info_publie_01' => 'The article "@titre@" was validated by @connect_nom@.', |
|
| 459 | + 'info_publie_1' => '[@nom_site_spip@] PUBLISHED: @titre@', |
|
| 460 | + 'info_publie_2' => 'Article published |
|
| 461 | 461 | -----------------', |
| 462 | - 'info_rechercher' => 'Search', |
|
| 463 | - 'info_rechercher_02' => 'Search:', |
|
| 464 | - 'info_remplacer_vignette' => 'Replace the default vignette by a customised logo:', |
|
| 465 | - 'info_rubriques_nb' => '@nb@ sections', |
|
| 466 | - 'info_rubriques_un' => '1 section', |
|
| 467 | - 'info_sans_titre_2' => 'untitled', |
|
| 468 | - 'info_selectionner_fichier' => 'You can select a file from the folder @upload@', |
|
| 469 | - 'info_selectionner_fichier_2' => 'Select a file:', |
|
| 470 | - 'info_sites_nb' => '@nb@ sites', |
|
| 471 | - 'info_sites_un' => '1 site', |
|
| 472 | - 'info_supprimer_vignette' => 'delete the vignette', |
|
| 473 | - 'info_symbole_bleu' => 'A <b>blue</b> symbol indicates a <b>memo</b>: i.e. a message for your personal use.', |
|
| 474 | - 'info_symbole_jaune' => 'A <b>yellow</b> symbol indicates an <b>announcement to all editors</b>: it can be edited by all administrators, and is visible to all editors.', |
|
| 475 | - 'info_symbole_vert' => 'A <b>green</b> symbol indicates the <b>messages exchanged with other users</b> of the site.', |
|
| 476 | - 'info_telecharger_nouveau_logo' => 'Upload a new logo:', |
|
| 477 | - 'info_telecharger_ordinateur' => 'Upload from your computer:', |
|
| 478 | - 'info_tous_resultats_enregistres' => '[all the results are recorded]', |
|
| 479 | - 'info_tout_afficher' => 'Show all', |
|
| 480 | - 'info_travaux_texte' => 'This site is not yet set up. Please come back later...', |
|
| 481 | - 'info_travaux_titre' => 'Site under construction', |
|
| 482 | - 'info_trop_resultat' => 'Too many results for "@cherche_mot@"; please refine the search.', |
|
| 483 | - 'info_utilisation_messagerie_interne' => 'You are using the internal message system of this site.', |
|
| 484 | - 'info_valider_lien' => 'validate this link', |
|
| 485 | - 'info_verifier_image' => ', please make sure your images have been transferred correctly.', |
|
| 486 | - 'info_vignette_defaut' => 'Default vignette', |
|
| 487 | - 'info_vignette_personnalisee' => 'Custom vignette', |
|
| 488 | - 'info_visite' => 'visit:', |
|
| 489 | - 'info_vos_rendez_vous' => 'Your future appointments', |
|
| 490 | - 'infos_vos_pense_bete' => 'Your memos', |
|
| 462 | + 'info_rechercher' => 'Search', |
|
| 463 | + 'info_rechercher_02' => 'Search:', |
|
| 464 | + 'info_remplacer_vignette' => 'Replace the default vignette by a customised logo:', |
|
| 465 | + 'info_rubriques_nb' => '@nb@ sections', |
|
| 466 | + 'info_rubriques_un' => '1 section', |
|
| 467 | + 'info_sans_titre_2' => 'untitled', |
|
| 468 | + 'info_selectionner_fichier' => 'You can select a file from the folder @upload@', |
|
| 469 | + 'info_selectionner_fichier_2' => 'Select a file:', |
|
| 470 | + 'info_sites_nb' => '@nb@ sites', |
|
| 471 | + 'info_sites_un' => '1 site', |
|
| 472 | + 'info_supprimer_vignette' => 'delete the vignette', |
|
| 473 | + 'info_symbole_bleu' => 'A <b>blue</b> symbol indicates a <b>memo</b>: i.e. a message for your personal use.', |
|
| 474 | + 'info_symbole_jaune' => 'A <b>yellow</b> symbol indicates an <b>announcement to all editors</b>: it can be edited by all administrators, and is visible to all editors.', |
|
| 475 | + 'info_symbole_vert' => 'A <b>green</b> symbol indicates the <b>messages exchanged with other users</b> of the site.', |
|
| 476 | + 'info_telecharger_nouveau_logo' => 'Upload a new logo:', |
|
| 477 | + 'info_telecharger_ordinateur' => 'Upload from your computer:', |
|
| 478 | + 'info_tous_resultats_enregistres' => '[all the results are recorded]', |
|
| 479 | + 'info_tout_afficher' => 'Show all', |
|
| 480 | + 'info_travaux_texte' => 'This site is not yet set up. Please come back later...', |
|
| 481 | + 'info_travaux_titre' => 'Site under construction', |
|
| 482 | + 'info_trop_resultat' => 'Too many results for "@cherche_mot@"; please refine the search.', |
|
| 483 | + 'info_utilisation_messagerie_interne' => 'You are using the internal message system of this site.', |
|
| 484 | + 'info_valider_lien' => 'validate this link', |
|
| 485 | + 'info_verifier_image' => ', please make sure your images have been transferred correctly.', |
|
| 486 | + 'info_vignette_defaut' => 'Default vignette', |
|
| 487 | + 'info_vignette_personnalisee' => 'Custom vignette', |
|
| 488 | + 'info_visite' => 'visit:', |
|
| 489 | + 'info_vos_rendez_vous' => 'Your future appointments', |
|
| 490 | + 'infos_vos_pense_bete' => 'Your memos', |
|
| 491 | 491 | |
| 492 | - // L |
|
| 493 | - 'label_ajout_id_rapide' => 'Quick addition', |
|
| 494 | - 'label_poids_fichier' => 'Size', |
|
| 495 | - 'label_ponctuer' => '@label@:', |
|
| 496 | - 'lien_afficher_icones_seuls' => 'Show only icons', |
|
| 497 | - 'lien_afficher_texte_icones' => 'Show icons and text', |
|
| 498 | - 'lien_afficher_texte_seul' => 'Show only text', |
|
| 499 | - 'lien_aller_a_la_derniere_page' => 'Go to the last page', |
|
| 500 | - 'lien_aller_a_la_page_nb' => 'Go to page @nb@', |
|
| 501 | - 'lien_aller_a_la_page_precedente' => 'Go to the previous page', |
|
| 502 | - 'lien_aller_a_la_page_suivante' => 'Go to the next page', |
|
| 503 | - 'lien_aller_a_la_premiere_page' => 'Go to the first page', |
|
| 504 | - 'lien_liberer' => 'release', |
|
| 505 | - 'lien_liberer_tous' => 'Release all', |
|
| 506 | - 'lien_nouvea_pense_bete' => 'NEW MEMO', |
|
| 507 | - 'lien_nouveau_message' => 'NEW MESSAGE', |
|
| 508 | - 'lien_nouvelle_annonce' => 'NEW ANNOUNCEMENT', |
|
| 509 | - 'lien_petitions' => 'PETITION', |
|
| 510 | - 'lien_popularite' => 'popularity: @popularite@%', |
|
| 511 | - 'lien_racine_site' => 'SITE ROOT', |
|
| 512 | - 'lien_reessayer' => 'try again', |
|
| 513 | - 'lien_repondre_message' => 'Reply to this message', |
|
| 514 | - 'lien_supprimer' => 'delete', |
|
| 515 | - 'lien_tout_afficher' => 'Show all', |
|
| 516 | - 'lien_visite_site' => 'visit this site', |
|
| 517 | - 'lien_visites' => '@visites@ visits', |
|
| 518 | - 'lien_voir_auteur' => 'Check this author', |
|
| 519 | - 'ligne' => 'Line', |
|
| 520 | - 'login' => 'Connection', |
|
| 521 | - 'login_acces_prive' => 'access to the private area', |
|
| 522 | - 'login_autre_identifiant' => 'use a different ID', |
|
| 523 | - 'login_cookie_accepte' => 'Please configure your browser to accept them for this site.', |
|
| 524 | - 'login_cookie_oblige' => 'For secure identification, your browser must accept cookies.', |
|
| 525 | - 'login_deconnexion_ok' => 'Logged out.', |
|
| 526 | - 'login_erreur_pass' => 'Wrong password.', |
|
| 527 | - 'login_espace_prive' => 'private area', |
|
| 528 | - 'login_identifiant_inconnu' => 'The identifier "@login@" is unknown.', |
|
| 529 | - 'login_login' => 'Login:', |
|
| 530 | - 'login_login2' => 'Login or e-mail address:', |
|
| 531 | - 'login_login_pass_incorrect' => '(Wrong login or password).', |
|
| 532 | - 'login_motpasseoublie' => 'password forgotten?', |
|
| 533 | - 'login_non_securise' => 'Caution, this form is not secure. |
|
| 492 | + // L |
|
| 493 | + 'label_ajout_id_rapide' => 'Quick addition', |
|
| 494 | + 'label_poids_fichier' => 'Size', |
|
| 495 | + 'label_ponctuer' => '@label@:', |
|
| 496 | + 'lien_afficher_icones_seuls' => 'Show only icons', |
|
| 497 | + 'lien_afficher_texte_icones' => 'Show icons and text', |
|
| 498 | + 'lien_afficher_texte_seul' => 'Show only text', |
|
| 499 | + 'lien_aller_a_la_derniere_page' => 'Go to the last page', |
|
| 500 | + 'lien_aller_a_la_page_nb' => 'Go to page @nb@', |
|
| 501 | + 'lien_aller_a_la_page_precedente' => 'Go to the previous page', |
|
| 502 | + 'lien_aller_a_la_page_suivante' => 'Go to the next page', |
|
| 503 | + 'lien_aller_a_la_premiere_page' => 'Go to the first page', |
|
| 504 | + 'lien_liberer' => 'release', |
|
| 505 | + 'lien_liberer_tous' => 'Release all', |
|
| 506 | + 'lien_nouvea_pense_bete' => 'NEW MEMO', |
|
| 507 | + 'lien_nouveau_message' => 'NEW MESSAGE', |
|
| 508 | + 'lien_nouvelle_annonce' => 'NEW ANNOUNCEMENT', |
|
| 509 | + 'lien_petitions' => 'PETITION', |
|
| 510 | + 'lien_popularite' => 'popularity: @popularite@%', |
|
| 511 | + 'lien_racine_site' => 'SITE ROOT', |
|
| 512 | + 'lien_reessayer' => 'try again', |
|
| 513 | + 'lien_repondre_message' => 'Reply to this message', |
|
| 514 | + 'lien_supprimer' => 'delete', |
|
| 515 | + 'lien_tout_afficher' => 'Show all', |
|
| 516 | + 'lien_visite_site' => 'visit this site', |
|
| 517 | + 'lien_visites' => '@visites@ visits', |
|
| 518 | + 'lien_voir_auteur' => 'Check this author', |
|
| 519 | + 'ligne' => 'Line', |
|
| 520 | + 'login' => 'Connection', |
|
| 521 | + 'login_acces_prive' => 'access to the private area', |
|
| 522 | + 'login_autre_identifiant' => 'use a different ID', |
|
| 523 | + 'login_cookie_accepte' => 'Please configure your browser to accept them for this site.', |
|
| 524 | + 'login_cookie_oblige' => 'For secure identification, your browser must accept cookies.', |
|
| 525 | + 'login_deconnexion_ok' => 'Logged out.', |
|
| 526 | + 'login_erreur_pass' => 'Wrong password.', |
|
| 527 | + 'login_espace_prive' => 'private area', |
|
| 528 | + 'login_identifiant_inconnu' => 'The identifier "@login@" is unknown.', |
|
| 529 | + 'login_login' => 'Login:', |
|
| 530 | + 'login_login2' => 'Login or e-mail address:', |
|
| 531 | + 'login_login_pass_incorrect' => '(Wrong login or password).', |
|
| 532 | + 'login_motpasseoublie' => 'password forgotten?', |
|
| 533 | + 'login_non_securise' => 'Caution, this form is not secure. |
|
| 534 | 534 | If you do not want your password to be open to |
| 535 | 535 | interception on the network, please activate Javascript |
| 536 | 536 | in your browser and', |
| 537 | - 'login_nouvelle_tentative' => 'New attempt', |
|
| 538 | - 'login_par_ici' => 'You are registered... this way...', |
|
| 539 | - 'login_pass2' => 'Password:', |
|
| 540 | - 'login_preferez_refuser' => '<b>If you prefer to refuse cookies</b>, there is another, less secure, method of connection available:', |
|
| 541 | - 'login_recharger' => 'reload this page', |
|
| 542 | - 'login_rester_identifie' => 'Remember me', |
|
| 543 | - 'login_retour_public' => 'Back to the public site', |
|
| 544 | - 'login_retour_site' => 'Back to the public site', |
|
| 545 | - 'login_retoursitepublic' => 'back to the public site', |
|
| 546 | - 'login_sans_cookie' => 'Identification without cookie', |
|
| 547 | - 'login_securise' => 'Secure login', |
|
| 548 | - 'login_sinscrire' => 'register', |
|
| 549 | - 'login_test_navigateur' => 'testing browser/reconnection', |
|
| 550 | - 'login_verifiez_navigateur' => '(However, check that your browser did not memorise your password...)', |
|
| 537 | + 'login_nouvelle_tentative' => 'New attempt', |
|
| 538 | + 'login_par_ici' => 'You are registered... this way...', |
|
| 539 | + 'login_pass2' => 'Password:', |
|
| 540 | + 'login_preferez_refuser' => '<b>If you prefer to refuse cookies</b>, there is another, less secure, method of connection available:', |
|
| 541 | + 'login_recharger' => 'reload this page', |
|
| 542 | + 'login_rester_identifie' => 'Remember me', |
|
| 543 | + 'login_retour_public' => 'Back to the public site', |
|
| 544 | + 'login_retour_site' => 'Back to the public site', |
|
| 545 | + 'login_retoursitepublic' => 'back to the public site', |
|
| 546 | + 'login_sans_cookie' => 'Identification without cookie', |
|
| 547 | + 'login_securise' => 'Secure login', |
|
| 548 | + 'login_sinscrire' => 'register', |
|
| 549 | + 'login_test_navigateur' => 'testing browser/reconnection', |
|
| 550 | + 'login_verifiez_navigateur' => '(However, check that your browser did not memorise your password...)', |
|
| 551 | 551 | |
| 552 | - // M |
|
| 553 | - 'masquer_colonne' => 'Hide this column', |
|
| 554 | - 'masquer_trad' => 'hide translations', |
|
| 555 | - 'message_nouveaux_identifiants_echec' => 'New identifiers could not be created.', |
|
| 556 | - 'message_nouveaux_identifiants_echec_envoi' => 'The new connection identifiers could not be sent.', |
|
| 557 | - 'message_nouveaux_identifiants_ok' => 'The new connection identifiers were sent to @email@.', |
|
| 558 | - 'module_fichiers_langues' => 'Language files', |
|
| 552 | + // M |
|
| 553 | + 'masquer_colonne' => 'Hide this column', |
|
| 554 | + 'masquer_trad' => 'hide translations', |
|
| 555 | + 'message_nouveaux_identifiants_echec' => 'New identifiers could not be created.', |
|
| 556 | + 'message_nouveaux_identifiants_echec_envoi' => 'The new connection identifiers could not be sent.', |
|
| 557 | + 'message_nouveaux_identifiants_ok' => 'The new connection identifiers were sent to @email@.', |
|
| 558 | + 'module_fichiers_langues' => 'Language files', |
|
| 559 | 559 | |
| 560 | - // N |
|
| 561 | - 'navigateur_pas_redirige' => 'If you are not automatically redirected, click here to continue.', |
|
| 562 | - 'numero' => 'Number', |
|
| 560 | + // N |
|
| 561 | + 'navigateur_pas_redirige' => 'If you are not automatically redirected, click here to continue.', |
|
| 562 | + 'numero' => 'Number', |
|
| 563 | 563 | |
| 564 | - // O |
|
| 565 | - 'occurence' => 'Instance', |
|
| 566 | - 'onglet_affacer_base' => 'Delete the database', |
|
| 567 | - 'onglet_auteur' => 'The author', |
|
| 568 | - 'onglet_contenu_site' => 'Site content', |
|
| 569 | - 'onglet_evolution_visite_mod' => 'Trend in visits', |
|
| 570 | - 'onglet_fonctions_avances' => 'Advanced functions', |
|
| 571 | - 'onglet_informations_personnelles' => 'Personal Information', |
|
| 572 | - 'onglet_interactivite' => 'Interactivity', |
|
| 573 | - 'onglet_messagerie' => 'Messaging', |
|
| 574 | - 'onglet_repartition_rubrique' => 'Distribution by section', |
|
| 575 | - 'onglet_save_restaur_base' => 'Backup/restore the database', |
|
| 576 | - 'onglet_vider_cache' => 'Empty the cache', |
|
| 564 | + // O |
|
| 565 | + 'occurence' => 'Instance', |
|
| 566 | + 'onglet_affacer_base' => 'Delete the database', |
|
| 567 | + 'onglet_auteur' => 'The author', |
|
| 568 | + 'onglet_contenu_site' => 'Site content', |
|
| 569 | + 'onglet_evolution_visite_mod' => 'Trend in visits', |
|
| 570 | + 'onglet_fonctions_avances' => 'Advanced functions', |
|
| 571 | + 'onglet_informations_personnelles' => 'Personal Information', |
|
| 572 | + 'onglet_interactivite' => 'Interactivity', |
|
| 573 | + 'onglet_messagerie' => 'Messaging', |
|
| 574 | + 'onglet_repartition_rubrique' => 'Distribution by section', |
|
| 575 | + 'onglet_save_restaur_base' => 'Backup/restore the database', |
|
| 576 | + 'onglet_vider_cache' => 'Empty the cache', |
|
| 577 | 577 | |
| 578 | - // P |
|
| 579 | - 'pass_choix_pass' => 'Please choose a new password:', |
|
| 580 | - 'pass_erreur' => 'Error', |
|
| 581 | - 'pass_erreur_acces_refuse' => '<b>Error:</b> you no longer have access to this site.', |
|
| 582 | - 'pass_erreur_code_inconnu' => '<b>Error:</b> this code does not match any visitors with access permission to this site.', |
|
| 583 | - 'pass_erreur_non_enregistre' => '<b>Error :</b> the address <tt>@email_oubli@</tt> is not registered on this site.', |
|
| 584 | - 'pass_erreur_non_valide' => '<b>Error :</b> the e-mail <tt>@email_oubli@</tt> is not valid!', |
|
| 585 | - 'pass_erreur_probleme_technique' => '<b>Error :</b> this e-mail could not be sent due to a technical problem.', |
|
| 586 | - 'pass_espace_prive_bla' => 'The private area of this site is open to |
|
| 578 | + // P |
|
| 579 | + 'pass_choix_pass' => 'Please choose a new password:', |
|
| 580 | + 'pass_erreur' => 'Error', |
|
| 581 | + 'pass_erreur_acces_refuse' => '<b>Error:</b> you no longer have access to this site.', |
|
| 582 | + 'pass_erreur_code_inconnu' => '<b>Error:</b> this code does not match any visitors with access permission to this site.', |
|
| 583 | + 'pass_erreur_non_enregistre' => '<b>Error :</b> the address <tt>@email_oubli@</tt> is not registered on this site.', |
|
| 584 | + 'pass_erreur_non_valide' => '<b>Error :</b> the e-mail <tt>@email_oubli@</tt> is not valid!', |
|
| 585 | + 'pass_erreur_probleme_technique' => '<b>Error :</b> this e-mail could not be sent due to a technical problem.', |
|
| 586 | + 'pass_espace_prive_bla' => 'The private area of this site is open to |
|
| 587 | 587 | visitors after registration. Once you have registered, |
| 588 | 588 | you can review the articles in progress, |
| 589 | 589 | submit articles and participate in forums.', |
| 590 | - 'pass_forum_bla' => 'You have requested to take part in a forum |
|
| 590 | + 'pass_forum_bla' => 'You have requested to take part in a forum |
|
| 591 | 591 | reserved for registered visitors.', |
| 592 | - 'pass_indiquez_cidessous' => 'Enter the email address with which you |
|
| 592 | + 'pass_indiquez_cidessous' => 'Enter the email address with which you |
|
| 593 | 593 | registered. You |
| 594 | 594 | will receive an email explaining how you |
| 595 | 595 | can retrieve your password.', |
| 596 | - 'pass_mail_passcookie' => '(this is an automated message) |
|
| 596 | + 'pass_mail_passcookie' => '(this is an automated message) |
|
| 597 | 597 | |
| 598 | 598 | To recover your access to the site |
| 599 | 599 | @nom_site_spip@ (@adresse_site@) |
@@ -604,146 +604,146 @@ discard block |
||
| 604 | 604 | You can then enter a new password |
| 605 | 605 | and log in to the site. |
| 606 | 606 | ', |
| 607 | - 'pass_mot_oublie' => 'Password forgotten', |
|
| 608 | - 'pass_nouveau_enregistre' => 'Your new password has been recorded.', |
|
| 609 | - 'pass_nouveau_pass' => 'New password', |
|
| 610 | - 'pass_ok' => 'OK', |
|
| 611 | - 'pass_oubli_mot' => 'Forgotten password', |
|
| 612 | - 'pass_procedure_changer' => 'In order to change your password, we have to check your identity first. Please enter the e-mail address associated with this account.', |
|
| 613 | - 'pass_quitter_fenetre' => 'Close this window', |
|
| 614 | - 'pass_rappel_login' => 'Reminder: your identifier (login) is "@login@".', |
|
| 615 | - 'pass_recevoir_mail' => 'A link to reset your password has been sent to your email address (if it is valid).', |
|
| 616 | - 'pass_retour_public' => 'Back to the public site', |
|
| 617 | - 'pass_rien_a_faire_ici' => 'Nothing to do here.', |
|
| 618 | - 'pass_vousinscrire' => 'Registering with the site', |
|
| 619 | - 'precedent' => 'previous', |
|
| 620 | - 'previsualisation' => 'Preview', |
|
| 621 | - 'previsualiser' => 'Show preview', |
|
| 607 | + 'pass_mot_oublie' => 'Password forgotten', |
|
| 608 | + 'pass_nouveau_enregistre' => 'Your new password has been recorded.', |
|
| 609 | + 'pass_nouveau_pass' => 'New password', |
|
| 610 | + 'pass_ok' => 'OK', |
|
| 611 | + 'pass_oubli_mot' => 'Forgotten password', |
|
| 612 | + 'pass_procedure_changer' => 'In order to change your password, we have to check your identity first. Please enter the e-mail address associated with this account.', |
|
| 613 | + 'pass_quitter_fenetre' => 'Close this window', |
|
| 614 | + 'pass_rappel_login' => 'Reminder: your identifier (login) is "@login@".', |
|
| 615 | + 'pass_recevoir_mail' => 'A link to reset your password has been sent to your email address (if it is valid).', |
|
| 616 | + 'pass_retour_public' => 'Back to the public site', |
|
| 617 | + 'pass_rien_a_faire_ici' => 'Nothing to do here.', |
|
| 618 | + 'pass_vousinscrire' => 'Registering with the site', |
|
| 619 | + 'precedent' => 'previous', |
|
| 620 | + 'previsualisation' => 'Preview', |
|
| 621 | + 'previsualiser' => 'Show preview', |
|
| 622 | 622 | |
| 623 | - // R |
|
| 624 | - 'retour' => 'Back', |
|
| 623 | + // R |
|
| 624 | + 'retour' => 'Back', |
|
| 625 | 625 | |
| 626 | - // S |
|
| 627 | - 'spip_conforme_dtd' => 'SPIP finds this page to be in compliance with its DOCTYPE:', |
|
| 628 | - 'squelette' => 'template', |
|
| 629 | - 'squelette_inclus_ligne' => 'included template, line', |
|
| 630 | - 'squelette_ligne' => 'template, line', |
|
| 631 | - 'stats_visites_et_popularite' => '@visites@ visits; popularity: @popularite@', |
|
| 632 | - 'suivant' => 'next', |
|
| 626 | + // S |
|
| 627 | + 'spip_conforme_dtd' => 'SPIP finds this page to be in compliance with its DOCTYPE:', |
|
| 628 | + 'squelette' => 'template', |
|
| 629 | + 'squelette_inclus_ligne' => 'included template, line', |
|
| 630 | + 'squelette_ligne' => 'template, line', |
|
| 631 | + 'stats_visites_et_popularite' => '@visites@ visits; popularity: @popularite@', |
|
| 632 | + 'suivant' => 'next', |
|
| 633 | 633 | |
| 634 | - // T |
|
| 635 | - 'taille_go' => '@taille@ Gb', |
|
| 636 | - 'taille_ko' => '@taille@ kb', |
|
| 637 | - 'taille_mo' => '@taille@ Mb', |
|
| 638 | - 'taille_octets' => '@taille@ bytes', |
|
| 639 | - 'texte_actualite_site_1' => 'When you are more familiar with the interface, click on "', |
|
| 640 | - 'texte_actualite_site_2' => 'full interface', |
|
| 641 | - 'texte_actualite_site_3' => '" to make more features available.', |
|
| 642 | - 'texte_creation_automatique_vignette' => 'Automatic creation of preview vignettes is enabled. If you use this form to install, images in the format(s) @gd_formats@, they will be coupled with a vignette whose maximum size is @taille_preview@ pixels.', |
|
| 643 | - 'texte_documents_associes' => 'The following documents are associated with the article,, |
|
| 634 | + // T |
|
| 635 | + 'taille_go' => '@taille@ Gb', |
|
| 636 | + 'taille_ko' => '@taille@ kb', |
|
| 637 | + 'taille_mo' => '@taille@ Mb', |
|
| 638 | + 'taille_octets' => '@taille@ bytes', |
|
| 639 | + 'texte_actualite_site_1' => 'When you are more familiar with the interface, click on "', |
|
| 640 | + 'texte_actualite_site_2' => 'full interface', |
|
| 641 | + 'texte_actualite_site_3' => '" to make more features available.', |
|
| 642 | + 'texte_creation_automatique_vignette' => 'Automatic creation of preview vignettes is enabled. If you use this form to install, images in the format(s) @gd_formats@, they will be coupled with a vignette whose maximum size is @taille_preview@ pixels.', |
|
| 643 | + 'texte_documents_associes' => 'The following documents are associated with the article,, |
|
| 644 | 644 | but they were not directly |
| 645 | 645 | inserted. Depending on the layout of the public site, |
| 646 | 646 | they may appear as attached documents.', |
| 647 | - 'texte_erreur_mise_niveau_base' => 'Database error during the upgrade. |
|
| 647 | + 'texte_erreur_mise_niveau_base' => 'Database error during the upgrade. |
|
| 648 | 648 | The image <b>@fichier@</b> did not pass (article @id_article@).<p> |
| 649 | 649 | Note this reference carefully, try the upgrade procedure again, |
| 650 | 650 | and check afterwards that the images still appear |
| 651 | 651 | in the articles.', |
| 652 | - 'texte_erreur_visiteur' => 'You have tried to enter the private area using an unauthorised login.', |
|
| 653 | - 'texte_inc_auth_1' => 'You used the login |
|
| 652 | + 'texte_erreur_visiteur' => 'You have tried to enter the private area using an unauthorised login.', |
|
| 653 | + 'texte_inc_auth_1' => 'You used the login |
|
| 654 | 654 | <b>@auth_login@</b>, but it does not exist in the database. |
| 655 | 655 | Try to', |
| 656 | - 'texte_inc_auth_2' => 'reconnect', |
|
| 657 | - 'texte_inc_auth_3' => ', having quit and |
|
| 656 | + 'texte_inc_auth_2' => 'reconnect', |
|
| 657 | + 'texte_inc_auth_3' => ', having quit and |
|
| 658 | 658 | restarted your browser if necessary.', |
| 659 | - 'texte_inc_config' => 'Changes made to the options on these pages have a great effect on |
|
| 659 | + 'texte_inc_config' => 'Changes made to the options on these pages have a great effect on |
|
| 660 | 660 | the functioning of the site. You are advised not to make any changes unless you are |
| 661 | 661 | familiar with how SPIP works. <br /><br /><b>In |
| 662 | 662 | general, you are strongly advised |
| 663 | 663 | to let the main webmaster of the site deal with these pages.</b>', |
| 664 | - 'texte_inc_meta_1' => 'The system encountered an error when trying to write the file <code>@fichier@</code>. As a site administrator, please', |
|
| 665 | - 'texte_inc_meta_2' => 'verify write permissions', |
|
| 666 | - 'texte_inc_meta_3' => 'of the directory <code>@repertoire@</code>.', |
|
| 667 | - 'texte_statut_en_cours_redaction' => 'editing in progress', |
|
| 668 | - 'texte_statut_poubelle' => 'to the dustbin', |
|
| 669 | - 'texte_statut_propose_evaluation' => 'submitted for evaluation', |
|
| 670 | - 'texte_statut_publie' => 'published online', |
|
| 671 | - 'texte_statut_refuse' => 'rejected', |
|
| 672 | - 'titre_ajouter_mot_cle' => 'ADD A KEYWORD:', |
|
| 673 | - 'titre_cadre_raccourcis' => 'SHORTCUTS:', |
|
| 674 | - 'titre_changer_couleur_interface' => 'Changing interface colour', |
|
| 675 | - 'titre_image_admin_article' => 'You can administrate this article', |
|
| 676 | - 'titre_image_administrateur' => 'Administrator', |
|
| 677 | - 'titre_image_aide' => 'Help on this item', |
|
| 678 | - 'titre_image_auteur_supprime' => 'Author deleted', |
|
| 679 | - 'titre_image_redacteur' => 'Editor without access', |
|
| 680 | - 'titre_image_redacteur_02' => 'Editor', |
|
| 681 | - 'titre_image_selecteur' => 'Display list', |
|
| 682 | - 'titre_image_visiteur' => 'Visitor', |
|
| 683 | - 'titre_joindre_document' => 'ATTACH A DOCUMENT', |
|
| 684 | - 'titre_mots_cles' => 'KEYWORDS', |
|
| 685 | - 'titre_probleme_technique' => 'Warning: a technical problem (SQL server) is preventing access to this part of the site. Thank you for your patience.', |
|
| 686 | - 'titre_publier_document' => 'PUBLISH A DOCUMENT IN THIS SECTION', |
|
| 687 | - 'titre_signatures_attente' => 'Signatures awaiting validation', |
|
| 688 | - 'titre_signatures_confirmees' => 'Signatures confirmed', |
|
| 689 | - 'titre_statistiques' => 'Site statistics', |
|
| 690 | - 'titre_titre_document' => 'Document title:', |
|
| 691 | - 'todo' => 'to come', |
|
| 692 | - 'trad_definir_reference' => 'Choose "@titre@" as a reference for translations', |
|
| 693 | - 'trad_reference' => '(reference for translations)', |
|
| 664 | + 'texte_inc_meta_1' => 'The system encountered an error when trying to write the file <code>@fichier@</code>. As a site administrator, please', |
|
| 665 | + 'texte_inc_meta_2' => 'verify write permissions', |
|
| 666 | + 'texte_inc_meta_3' => 'of the directory <code>@repertoire@</code>.', |
|
| 667 | + 'texte_statut_en_cours_redaction' => 'editing in progress', |
|
| 668 | + 'texte_statut_poubelle' => 'to the dustbin', |
|
| 669 | + 'texte_statut_propose_evaluation' => 'submitted for evaluation', |
|
| 670 | + 'texte_statut_publie' => 'published online', |
|
| 671 | + 'texte_statut_refuse' => 'rejected', |
|
| 672 | + 'titre_ajouter_mot_cle' => 'ADD A KEYWORD:', |
|
| 673 | + 'titre_cadre_raccourcis' => 'SHORTCUTS:', |
|
| 674 | + 'titre_changer_couleur_interface' => 'Changing interface colour', |
|
| 675 | + 'titre_image_admin_article' => 'You can administrate this article', |
|
| 676 | + 'titre_image_administrateur' => 'Administrator', |
|
| 677 | + 'titre_image_aide' => 'Help on this item', |
|
| 678 | + 'titre_image_auteur_supprime' => 'Author deleted', |
|
| 679 | + 'titre_image_redacteur' => 'Editor without access', |
|
| 680 | + 'titre_image_redacteur_02' => 'Editor', |
|
| 681 | + 'titre_image_selecteur' => 'Display list', |
|
| 682 | + 'titre_image_visiteur' => 'Visitor', |
|
| 683 | + 'titre_joindre_document' => 'ATTACH A DOCUMENT', |
|
| 684 | + 'titre_mots_cles' => 'KEYWORDS', |
|
| 685 | + 'titre_probleme_technique' => 'Warning: a technical problem (SQL server) is preventing access to this part of the site. Thank you for your patience.', |
|
| 686 | + 'titre_publier_document' => 'PUBLISH A DOCUMENT IN THIS SECTION', |
|
| 687 | + 'titre_signatures_attente' => 'Signatures awaiting validation', |
|
| 688 | + 'titre_signatures_confirmees' => 'Signatures confirmed', |
|
| 689 | + 'titre_statistiques' => 'Site statistics', |
|
| 690 | + 'titre_titre_document' => 'Document title:', |
|
| 691 | + 'todo' => 'to come', |
|
| 692 | + 'trad_definir_reference' => 'Choose "@titre@" as a reference for translations', |
|
| 693 | + 'trad_reference' => '(reference for translations)', |
|
| 694 | 694 | |
| 695 | - // U |
|
| 696 | - 'upload_limit' => 'This file is too big for the server: the maximum size allowed for <i>upload</i> is @max@.', |
|
| 695 | + // U |
|
| 696 | + 'upload_limit' => 'This file is too big for the server: the maximum size allowed for <i>upload</i> is @max@.', |
|
| 697 | 697 | |
| 698 | - // Z |
|
| 699 | - 'zbug_balise_b_aval' => ': B tag too late in loop', |
|
| 700 | - 'zbug_balise_inexistante' => 'Tag @balise@ wrongly declared for @from@', |
|
| 701 | - 'zbug_balise_sans_argument' => 'Missing argument in the @balise@ tag', |
|
| 702 | - 'zbug_boucle' => 'loop', |
|
| 703 | - 'zbug_boucle_recursive_undef' => 'undefined recursive loop: @nom@', |
|
| 704 | - 'zbug_calcul' => 'calculation', |
|
| 705 | - 'zbug_champ_hors_boucle' => 'Field @champ@ outside loop', |
|
| 706 | - 'zbug_champ_hors_critere' => 'Field @champ@ outside criterion @critere@', |
|
| 707 | - 'zbug_champ_hors_motif' => 'Field @champ@ outside context @motif@', |
|
| 708 | - 'zbug_code' => 'code', |
|
| 709 | - 'zbug_critere_inconnu' => 'Unknown criterion @critere@', |
|
| 710 | - 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} on a table without atomic primary key', |
|
| 711 | - 'zbug_distant_interdit' => 'External data forbidden', |
|
| 712 | - 'zbug_doublon_table_sans_cle_primaire' => 'Duplicate entries on a table which does not have a simple primary key', |
|
| 713 | - 'zbug_doublon_table_sans_index' => 'Duplicate entries on a table without an index', |
|
| 714 | - 'zbug_erreur_boucle_double' => 'Loop @id@: double definition', |
|
| 715 | - 'zbug_erreur_boucle_fermant' => 'Loop @id@: missing closing tag', |
|
| 716 | - 'zbug_erreur_boucle_syntaxe' => 'Syntax error in loop (BOUCLE)', |
|
| 717 | - 'zbug_erreur_compilation' => 'Compilation error', |
|
| 718 | - 'zbug_erreur_execution_page' => 'Execution error', |
|
| 719 | - 'zbug_erreur_filtre' => 'Undefined filter @filtre@', |
|
| 720 | - 'zbug_erreur_filtre_nbarg_min' => '@filtre@ filter: @nb@ argument(s) missing', |
|
| 721 | - 'zbug_erreur_meme_parent' => '{meme_parent} only applies to loops (FORUMS) and (RUBRIQUES)', |
|
| 722 | - 'zbug_erreur_squelette' => 'Error(s) in template', |
|
| 723 | - 'zbug_hors_compilation' => 'Uncompiled', |
|
| 724 | - 'zbug_info_erreur_squelette' => 'Error in the site', |
|
| 725 | - 'zbug_inversion_ordre_inexistant' => 'Reversion of non-existent order', |
|
| 726 | - 'zbug_pagination_sans_critere' => '#PAGINATION tag without {pagination} criterion, or used in a recursive loop', |
|
| 727 | - 'zbug_parametres_inclus_incorrects' => 'Wrong inclusion parameter: @param@', |
|
| 728 | - 'zbug_profile' => 'Calculation time: @time@', |
|
| 729 | - 'zbug_resultat' => 'result', |
|
| 730 | - 'zbug_serveur_indefini' => 'Undefined SQL server', |
|
| 731 | - 'zbug_statistiques' => 'SQL query statistics in order of duration', |
|
| 732 | - 'zbug_table_inconnue' => 'Unknown SQL table "@table@"', |
|
| 733 | - 'zxml_connus_attributs' => 'known attributes', |
|
| 734 | - 'zxml_de' => 'from', |
|
| 735 | - 'zxml_inconnu_attribut' => 'unknown attribute', |
|
| 736 | - 'zxml_inconnu_balise' => 'unknown tag', |
|
| 737 | - 'zxml_inconnu_entite' => 'unknown entity', |
|
| 738 | - 'zxml_inconnu_id' => 'unknown ID', |
|
| 739 | - 'zxml_mais_de' => 'but from', |
|
| 740 | - 'zxml_non_conforme' => 'not true to the principle', |
|
| 741 | - 'zxml_non_fils' => 'is not a child of', |
|
| 742 | - 'zxml_nonvide_balise' => 'tag not empty', |
|
| 743 | - 'zxml_obligatoire_attribut' => 'required attribute absent in', |
|
| 744 | - 'zxml_succession_fils_incorrecte' => 'incorrect child inheritance', |
|
| 745 | - 'zxml_survoler' => 'to see the correct ones, hover with the cursor', |
|
| 746 | - 'zxml_valeur_attribut' => 'attribute value', |
|
| 747 | - 'zxml_vide_balise' => 'empty tag', |
|
| 748 | - 'zxml_vu' => 'seen before' |
|
| 698 | + // Z |
|
| 699 | + 'zbug_balise_b_aval' => ': B tag too late in loop', |
|
| 700 | + 'zbug_balise_inexistante' => 'Tag @balise@ wrongly declared for @from@', |
|
| 701 | + 'zbug_balise_sans_argument' => 'Missing argument in the @balise@ tag', |
|
| 702 | + 'zbug_boucle' => 'loop', |
|
| 703 | + 'zbug_boucle_recursive_undef' => 'undefined recursive loop: @nom@', |
|
| 704 | + 'zbug_calcul' => 'calculation', |
|
| 705 | + 'zbug_champ_hors_boucle' => 'Field @champ@ outside loop', |
|
| 706 | + 'zbug_champ_hors_critere' => 'Field @champ@ outside criterion @critere@', |
|
| 707 | + 'zbug_champ_hors_motif' => 'Field @champ@ outside context @motif@', |
|
| 708 | + 'zbug_code' => 'code', |
|
| 709 | + 'zbug_critere_inconnu' => 'Unknown criterion @critere@', |
|
| 710 | + 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} on a table without atomic primary key', |
|
| 711 | + 'zbug_distant_interdit' => 'External data forbidden', |
|
| 712 | + 'zbug_doublon_table_sans_cle_primaire' => 'Duplicate entries on a table which does not have a simple primary key', |
|
| 713 | + 'zbug_doublon_table_sans_index' => 'Duplicate entries on a table without an index', |
|
| 714 | + 'zbug_erreur_boucle_double' => 'Loop @id@: double definition', |
|
| 715 | + 'zbug_erreur_boucle_fermant' => 'Loop @id@: missing closing tag', |
|
| 716 | + 'zbug_erreur_boucle_syntaxe' => 'Syntax error in loop (BOUCLE)', |
|
| 717 | + 'zbug_erreur_compilation' => 'Compilation error', |
|
| 718 | + 'zbug_erreur_execution_page' => 'Execution error', |
|
| 719 | + 'zbug_erreur_filtre' => 'Undefined filter @filtre@', |
|
| 720 | + 'zbug_erreur_filtre_nbarg_min' => '@filtre@ filter: @nb@ argument(s) missing', |
|
| 721 | + 'zbug_erreur_meme_parent' => '{meme_parent} only applies to loops (FORUMS) and (RUBRIQUES)', |
|
| 722 | + 'zbug_erreur_squelette' => 'Error(s) in template', |
|
| 723 | + 'zbug_hors_compilation' => 'Uncompiled', |
|
| 724 | + 'zbug_info_erreur_squelette' => 'Error in the site', |
|
| 725 | + 'zbug_inversion_ordre_inexistant' => 'Reversion of non-existent order', |
|
| 726 | + 'zbug_pagination_sans_critere' => '#PAGINATION tag without {pagination} criterion, or used in a recursive loop', |
|
| 727 | + 'zbug_parametres_inclus_incorrects' => 'Wrong inclusion parameter: @param@', |
|
| 728 | + 'zbug_profile' => 'Calculation time: @time@', |
|
| 729 | + 'zbug_resultat' => 'result', |
|
| 730 | + 'zbug_serveur_indefini' => 'Undefined SQL server', |
|
| 731 | + 'zbug_statistiques' => 'SQL query statistics in order of duration', |
|
| 732 | + 'zbug_table_inconnue' => 'Unknown SQL table "@table@"', |
|
| 733 | + 'zxml_connus_attributs' => 'known attributes', |
|
| 734 | + 'zxml_de' => 'from', |
|
| 735 | + 'zxml_inconnu_attribut' => 'unknown attribute', |
|
| 736 | + 'zxml_inconnu_balise' => 'unknown tag', |
|
| 737 | + 'zxml_inconnu_entite' => 'unknown entity', |
|
| 738 | + 'zxml_inconnu_id' => 'unknown ID', |
|
| 739 | + 'zxml_mais_de' => 'but from', |
|
| 740 | + 'zxml_non_conforme' => 'not true to the principle', |
|
| 741 | + 'zxml_non_fils' => 'is not a child of', |
|
| 742 | + 'zxml_nonvide_balise' => 'tag not empty', |
|
| 743 | + 'zxml_obligatoire_attribut' => 'required attribute absent in', |
|
| 744 | + 'zxml_succession_fils_incorrecte' => 'incorrect child inheritance', |
|
| 745 | + 'zxml_survoler' => 'to see the correct ones, hover with the cursor', |
|
| 746 | + 'zxml_valeur_attribut' => 'attribute value', |
|
| 747 | + 'zxml_vide_balise' => 'empty tag', |
|
| 748 | + 'zxml_vu' => 'seen before' |
|
| 749 | 749 | ); |
@@ -4,246 +4,246 @@ discard block |
||
| 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 | - 'access_interface_graphique' => 'عودة إلى الواجهة الرسومية الكاملة', |
|
| 14 | - 'access_mode_texte' => 'عرض الواجهة النصية المبسّطة', |
|
| 15 | - 'admin_debug' => 'اكتشاف الأخطاء', |
|
| 16 | - 'admin_modifier_article' => 'تعديل هذا المقال', |
|
| 17 | - 'admin_modifier_auteur' => 'تغيير هذا المؤلف', |
|
| 18 | - 'admin_modifier_breve' => 'تعديل هذا الخبر', |
|
| 19 | - 'admin_modifier_mot' => 'تغيير هذا المفتاح', |
|
| 20 | - 'admin_modifier_rubrique' => 'تعديل هذا القسم', |
|
| 21 | - 'admin_recalculer' => 'إعادة تحديث هذه الصفحة', |
|
| 22 | - 'afficher_calendrier' => 'عرض الروزنامة', |
|
| 23 | - 'afficher_trad' => 'عرض الترجمات', |
|
| 24 | - 'alerte_maj_impossible' => '<b>تحذير!</b> ترقية قاعدة SQL إلى الإصدار @version@ متعذر. قد يكون السبب مشكلة في حقل التعديل. الرجاء الاتصال بمضيف موقعك.', |
|
| 25 | - 'alerte_modif_info_concourante' => 'تحذير:هذه المعلومة عُدلت في مكان آخر. القيمة الحالية هي:', |
|
| 26 | - 'analyse_xml' => 'تحليل XML', |
|
| 27 | - 'annuler' => 'إلغاء', |
|
| 28 | - 'antispam_champ_vide' => 'الرجاء الإبقاء على هذا الحقل فارغاً:', |
|
| 29 | - 'articles_recents' => 'أحدث المقالات', |
|
| 30 | - 'attention_champ_mini_nb_caractères' => 'تنبيه! @nb@ حروف على الأقل', |
|
| 31 | - 'avis_1_erreur_saisie' => 'هناك خطأ في إدخالك، الرجاء التدقيق في المعلومات.', |
|
| 32 | - 'avis_archive_incorrect' => 'ملف الأرشيف ليس ملف SPIP', |
|
| 33 | - 'avis_archive_invalide' => 'ملف الأرشيف غير صالح', |
|
| 34 | - 'avis_attention' => 'تحذير!', |
|
| 35 | - 'avis_champ_incorrect_type_objet' => 'إسم حقل @name@ غير صالح لنوع العنصر @type@', |
|
| 36 | - 'avis_colonne_inexistante' => 'العمود @col@ غير موجود', |
|
| 37 | - 'avis_erreur' => 'خطأ: انظر أدناه', |
|
| 38 | - 'avis_erreur_connexion' => 'خطأ اتصال', |
|
| 39 | - 'avis_erreur_cookie' => 'مشكلة في الكعكة', |
|
| 40 | - 'avis_erreur_fonction_contexte' => 'خطأ برمجة. لا يجب المناداة على هذه الوظيفة في هذا السياق.', |
|
| 41 | - 'avis_erreur_mysql' => 'خطأ SQL ', |
|
| 42 | - 'avis_erreur_sauvegarde' => 'خطأ في النسخة الاحتياطية (@type@ @id_objet@)!', |
|
| 43 | - 'avis_erreur_visiteur' => 'هناك مشكلة في الدخول إلى المجال الخاص', |
|
| 44 | - 'avis_nb_erreurs_saisie' => 'هناك @nb@ خطأ في إدخالك، الرجاء التدقيق في المعلومات.', |
|
| 12 | + // A |
|
| 13 | + 'access_interface_graphique' => 'عودة إلى الواجهة الرسومية الكاملة', |
|
| 14 | + 'access_mode_texte' => 'عرض الواجهة النصية المبسّطة', |
|
| 15 | + 'admin_debug' => 'اكتشاف الأخطاء', |
|
| 16 | + 'admin_modifier_article' => 'تعديل هذا المقال', |
|
| 17 | + 'admin_modifier_auteur' => 'تغيير هذا المؤلف', |
|
| 18 | + 'admin_modifier_breve' => 'تعديل هذا الخبر', |
|
| 19 | + 'admin_modifier_mot' => 'تغيير هذا المفتاح', |
|
| 20 | + 'admin_modifier_rubrique' => 'تعديل هذا القسم', |
|
| 21 | + 'admin_recalculer' => 'إعادة تحديث هذه الصفحة', |
|
| 22 | + 'afficher_calendrier' => 'عرض الروزنامة', |
|
| 23 | + 'afficher_trad' => 'عرض الترجمات', |
|
| 24 | + 'alerte_maj_impossible' => '<b>تحذير!</b> ترقية قاعدة SQL إلى الإصدار @version@ متعذر. قد يكون السبب مشكلة في حقل التعديل. الرجاء الاتصال بمضيف موقعك.', |
|
| 25 | + 'alerte_modif_info_concourante' => 'تحذير:هذه المعلومة عُدلت في مكان آخر. القيمة الحالية هي:', |
|
| 26 | + 'analyse_xml' => 'تحليل XML', |
|
| 27 | + 'annuler' => 'إلغاء', |
|
| 28 | + 'antispam_champ_vide' => 'الرجاء الإبقاء على هذا الحقل فارغاً:', |
|
| 29 | + 'articles_recents' => 'أحدث المقالات', |
|
| 30 | + 'attention_champ_mini_nb_caractères' => 'تنبيه! @nb@ حروف على الأقل', |
|
| 31 | + 'avis_1_erreur_saisie' => 'هناك خطأ في إدخالك، الرجاء التدقيق في المعلومات.', |
|
| 32 | + 'avis_archive_incorrect' => 'ملف الأرشيف ليس ملف SPIP', |
|
| 33 | + 'avis_archive_invalide' => 'ملف الأرشيف غير صالح', |
|
| 34 | + 'avis_attention' => 'تحذير!', |
|
| 35 | + 'avis_champ_incorrect_type_objet' => 'إسم حقل @name@ غير صالح لنوع العنصر @type@', |
|
| 36 | + 'avis_colonne_inexistante' => 'العمود @col@ غير موجود', |
|
| 37 | + 'avis_erreur' => 'خطأ: انظر أدناه', |
|
| 38 | + 'avis_erreur_connexion' => 'خطأ اتصال', |
|
| 39 | + 'avis_erreur_cookie' => 'مشكلة في الكعكة', |
|
| 40 | + 'avis_erreur_fonction_contexte' => 'خطأ برمجة. لا يجب المناداة على هذه الوظيفة في هذا السياق.', |
|
| 41 | + 'avis_erreur_mysql' => 'خطأ SQL ', |
|
| 42 | + 'avis_erreur_sauvegarde' => 'خطأ في النسخة الاحتياطية (@type@ @id_objet@)!', |
|
| 43 | + 'avis_erreur_visiteur' => 'هناك مشكلة في الدخول إلى المجال الخاص', |
|
| 44 | + 'avis_nb_erreurs_saisie' => 'هناك @nb@ خطأ في إدخالك، الرجاء التدقيق في المعلومات.', |
|
| 45 | 45 | |
| 46 | - // B |
|
| 47 | - 'barre_a_accent_grave' => 'إدراج حرف A كبير مع نبر الإطالة', |
|
| 48 | - 'barre_aide' => 'استخدم شريط اختصارات الكتابة لإثراء تصميم صفحتك', |
|
| 49 | - 'barre_e_accent_aigu' => 'إدراج حرف E كبير مع نبر حاد', |
|
| 50 | - 'barre_eo' => 'إدراج E داخل O', |
|
| 51 | - 'barre_eo_maj' => 'إدراج E كبير داخل O كبير', |
|
| 52 | - 'barre_euro' => 'إدراج رمز €', |
|
| 53 | - 'barre_gras' => '{{غامق{{', |
|
| 54 | - 'barre_guillemets' => 'إحاطة «بعلامتي اقتباس مزدوجة»', |
|
| 55 | - 'barre_guillemets_simples' => 'وضع بين "علامتي اقتباس مزدوجة من المستوى الثاني"', |
|
| 56 | - 'barre_intertitre' => 'تحويل إلى {{{عنوان فقرة}}}', |
|
| 57 | - 'barre_italic' => '{مائل{', |
|
| 58 | - 'barre_lien' => 'تحويل إلى [وصلة هايبرتكست->http://...]', |
|
| 59 | - 'barre_lien_input' => 'الرجاء إدخال عنوان الوصلة (يمكنك إدخال عنوان نسيج على شكل http://www.mysite.com أو إدخال رقم مقال من الموقع الحالي فقط).', |
|
| 60 | - 'barre_note' => 'تحويل إلى [[حاشية]]', |
|
| 61 | - 'barre_paragraphe' => 'إنشاء فقرة', |
|
| 62 | - 'barre_quote' => '<quote>اقتباس رسالة</quote>', |
|
| 63 | - 'bouton_changer' => 'تغيير', |
|
| 64 | - 'bouton_chercher' => 'بحث', |
|
| 65 | - 'bouton_choisir' => 'تحديد', |
|
| 66 | - 'bouton_deplacer' => 'نقل', |
|
| 67 | - 'bouton_download' => 'تحميل', |
|
| 68 | - 'bouton_enregistrer' => 'إدخال', |
|
| 69 | - 'bouton_radio_desactiver_messagerie_interne' => 'إيقاف المراسلة الداخلية', |
|
| 70 | - 'bouton_radio_envoi_annonces' => 'إرسال إعلانات التحرير', |
|
| 71 | - 'bouton_radio_non_envoi_annonces' => 'عدم إرسال الإعلانات', |
|
| 72 | - 'bouton_radio_non_envoi_liste_nouveautes' => 'عدم إرسال قائمة بآخر الأخبار', |
|
| 73 | - 'bouton_recharger_page' => 'إعادة تحميل الصفحة', |
|
| 74 | - 'bouton_telecharger' => 'تحميل', |
|
| 75 | - 'bouton_upload' => 'تنزيل', |
|
| 76 | - 'bouton_valider' => 'إدخال', |
|
| 46 | + // B |
|
| 47 | + 'barre_a_accent_grave' => 'إدراج حرف A كبير مع نبر الإطالة', |
|
| 48 | + 'barre_aide' => 'استخدم شريط اختصارات الكتابة لإثراء تصميم صفحتك', |
|
| 49 | + 'barre_e_accent_aigu' => 'إدراج حرف E كبير مع نبر حاد', |
|
| 50 | + 'barre_eo' => 'إدراج E داخل O', |
|
| 51 | + 'barre_eo_maj' => 'إدراج E كبير داخل O كبير', |
|
| 52 | + 'barre_euro' => 'إدراج رمز €', |
|
| 53 | + 'barre_gras' => '{{غامق{{', |
|
| 54 | + 'barre_guillemets' => 'إحاطة «بعلامتي اقتباس مزدوجة»', |
|
| 55 | + 'barre_guillemets_simples' => 'وضع بين "علامتي اقتباس مزدوجة من المستوى الثاني"', |
|
| 56 | + 'barre_intertitre' => 'تحويل إلى {{{عنوان فقرة}}}', |
|
| 57 | + 'barre_italic' => '{مائل{', |
|
| 58 | + 'barre_lien' => 'تحويل إلى [وصلة هايبرتكست->http://...]', |
|
| 59 | + 'barre_lien_input' => 'الرجاء إدخال عنوان الوصلة (يمكنك إدخال عنوان نسيج على شكل http://www.mysite.com أو إدخال رقم مقال من الموقع الحالي فقط).', |
|
| 60 | + 'barre_note' => 'تحويل إلى [[حاشية]]', |
|
| 61 | + 'barre_paragraphe' => 'إنشاء فقرة', |
|
| 62 | + 'barre_quote' => '<quote>اقتباس رسالة</quote>', |
|
| 63 | + 'bouton_changer' => 'تغيير', |
|
| 64 | + 'bouton_chercher' => 'بحث', |
|
| 65 | + 'bouton_choisir' => 'تحديد', |
|
| 66 | + 'bouton_deplacer' => 'نقل', |
|
| 67 | + 'bouton_download' => 'تحميل', |
|
| 68 | + 'bouton_enregistrer' => 'إدخال', |
|
| 69 | + 'bouton_radio_desactiver_messagerie_interne' => 'إيقاف المراسلة الداخلية', |
|
| 70 | + 'bouton_radio_envoi_annonces' => 'إرسال إعلانات التحرير', |
|
| 71 | + 'bouton_radio_non_envoi_annonces' => 'عدم إرسال الإعلانات', |
|
| 72 | + 'bouton_radio_non_envoi_liste_nouveautes' => 'عدم إرسال قائمة بآخر الأخبار', |
|
| 73 | + 'bouton_recharger_page' => 'إعادة تحميل الصفحة', |
|
| 74 | + 'bouton_telecharger' => 'تحميل', |
|
| 75 | + 'bouton_upload' => 'تنزيل', |
|
| 76 | + 'bouton_valider' => 'إدخال', |
|
| 77 | 77 | |
| 78 | - // C |
|
| 79 | - 'cal_apresmidi' => 'بعد الظهر', |
|
| 80 | - 'cal_jour_entier' => 'يوم كامل', |
|
| 81 | - 'cal_matin' => 'الصباح', |
|
| 82 | - 'cal_par_jour' => 'روزنامة يومية', |
|
| 83 | - 'cal_par_mois' => 'روزنامة شهرية', |
|
| 84 | - 'cal_par_semaine' => 'روزنامة أسبوعية', |
|
| 85 | - 'choix_couleur_interface' => 'اللون', |
|
| 86 | - 'choix_interface' => 'اختيار الواجهة', |
|
| 87 | - 'colonne' => 'عمود', |
|
| 88 | - 'confirm_changer_statut' => 'تحذير، لقد طلبت تغيير حالة هذا العنصر. هل تريد المتابعة؟', |
|
| 89 | - 'correcte' => 'صحيح', |
|
| 78 | + // C |
|
| 79 | + 'cal_apresmidi' => 'بعد الظهر', |
|
| 80 | + 'cal_jour_entier' => 'يوم كامل', |
|
| 81 | + 'cal_matin' => 'الصباح', |
|
| 82 | + 'cal_par_jour' => 'روزنامة يومية', |
|
| 83 | + 'cal_par_mois' => 'روزنامة شهرية', |
|
| 84 | + 'cal_par_semaine' => 'روزنامة أسبوعية', |
|
| 85 | + 'choix_couleur_interface' => 'اللون', |
|
| 86 | + 'choix_interface' => 'اختيار الواجهة', |
|
| 87 | + 'colonne' => 'عمود', |
|
| 88 | + 'confirm_changer_statut' => 'تحذير، لقد طلبت تغيير حالة هذا العنصر. هل تريد المتابعة؟', |
|
| 89 | + 'correcte' => 'صحيح', |
|
| 90 | 90 | |
| 91 | - // D |
|
| 92 | - 'date_aujourdhui' => 'اليوم', |
|
| 93 | - 'date_avant_jc' => 'قبل الميلاد', |
|
| 94 | - 'date_dans' => 'بعد @delai@', |
|
| 95 | - 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | - 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | - 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | - 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | - 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | - 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | - 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | - 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | - 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | - 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | - 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | - 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | - 'date_demain' => 'غداً', |
|
| 108 | - 'date_fmt_heures_minutes' => '@h@ و@m@ دقيقة', |
|
| 109 | - 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 110 | - 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | - 'date_fmt_jour_heure' => '@jour@ الساعة @heure@', |
|
| 112 | - 'date_fmt_jour_heure_debut_fin' => 'في @jour@ من @heure_debut@ الى @heure_fin@', |
|
| 113 | - 'date_fmt_jour_heure_debut_fin_abbr' => 'في @dtstart@@jour@ من @heure_debut@@dtabbr@ الى @dtend@@heure_fin@@dtabbr@', |
|
| 114 | - 'date_fmt_jour_mois' => '@jour@ @nommois@', |
|
| 115 | - 'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@', |
|
| 116 | - 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | - 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | - 'date_fmt_nomjour_date' => 'في @nomjour@ @date@', |
|
| 119 | - 'date_fmt_periode' => 'من @date_debut@ الى @date_fin@', |
|
| 120 | - 'date_fmt_periode_abbr' => 'من @dtart@@date_debut@@dtabbr@ الى @dtend@@date_fin@@dtabbr@', |
|
| 121 | - 'date_fmt_periode_from' => 'من', |
|
| 122 | - 'date_fmt_periode_to' => 'الى', |
|
| 123 | - 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | - 'date_heures' => 'ساعة', |
|
| 125 | - 'date_hier' => 'البارحة', |
|
| 126 | - 'date_il_y_a' => 'منذ @delai@', |
|
| 127 | - 'date_jnum1' => '1', |
|
| 128 | - 'date_jnum10' => '10', |
|
| 129 | - 'date_jnum11' => '11', |
|
| 130 | - 'date_jnum12' => '12', |
|
| 131 | - 'date_jnum13' => '13', |
|
| 132 | - 'date_jnum14' => '14', |
|
| 133 | - 'date_jnum15' => '15', |
|
| 134 | - 'date_jnum16' => '16', |
|
| 135 | - 'date_jnum17' => '17', |
|
| 136 | - 'date_jnum18' => '18', |
|
| 137 | - 'date_jnum19' => '19', |
|
| 138 | - 'date_jnum2' => '2', |
|
| 139 | - 'date_jnum20' => '20', |
|
| 140 | - 'date_jnum21' => '21', |
|
| 141 | - 'date_jnum22' => '22', |
|
| 142 | - 'date_jnum23' => '23', |
|
| 143 | - 'date_jnum24' => '24', |
|
| 144 | - 'date_jnum25' => '25', |
|
| 145 | - 'date_jnum26' => '26', |
|
| 146 | - 'date_jnum27' => '27', |
|
| 147 | - 'date_jnum28' => '28', |
|
| 148 | - 'date_jnum29' => '29', |
|
| 149 | - 'date_jnum3' => '3', |
|
| 150 | - 'date_jnum30' => '30', |
|
| 151 | - 'date_jnum31' => '31', |
|
| 152 | - 'date_jnum4' => '4', |
|
| 153 | - 'date_jnum5' => '5', |
|
| 154 | - 'date_jnum6' => '6', |
|
| 155 | - 'date_jnum7' => '7', |
|
| 156 | - 'date_jnum8' => '8', |
|
| 157 | - 'date_jnum9' => '9', |
|
| 158 | - 'date_jour_1' => 'الأحد', |
|
| 159 | - 'date_jour_1_abbr' => 'أحد', |
|
| 160 | - 'date_jour_1_initiale' => 'أحد', |
|
| 161 | - 'date_jour_2' => 'الاثنين', |
|
| 162 | - 'date_jour_2_abbr' => 'اثنين', |
|
| 163 | - 'date_jour_2_initiale' => 'اثنين', |
|
| 164 | - 'date_jour_3' => 'الثلاثاء', |
|
| 165 | - 'date_jour_3_abbr' => 'ثلاثاء', |
|
| 166 | - 'date_jour_3_initiale' => 'ثلاثاء', |
|
| 167 | - 'date_jour_4' => 'الأربعاء', |
|
| 168 | - 'date_jour_4_abbr' => 'أربعاء', |
|
| 169 | - 'date_jour_4_initiale' => 'أربعاء', |
|
| 170 | - 'date_jour_5' => 'الخميس', |
|
| 171 | - 'date_jour_5_abbr' => 'خميس', |
|
| 172 | - 'date_jour_5_initiale' => 'خميس', |
|
| 173 | - 'date_jour_6' => 'الجمعة', |
|
| 174 | - 'date_jour_6_abbr' => 'جمعة', |
|
| 175 | - 'date_jour_6_initiale' => 'جمعة', |
|
| 176 | - 'date_jour_7' => 'السبت', |
|
| 177 | - 'date_jour_7_abbr' => 'سبت', |
|
| 178 | - 'date_jour_7_initiale' => 'سبت', |
|
| 179 | - 'date_jours' => 'يوم', |
|
| 180 | - 'date_minutes' => 'دقيقة', |
|
| 181 | - 'date_mois' => 'شهر', |
|
| 182 | - 'date_mois_1' => 'كانون الثاني (يناير)', |
|
| 183 | - 'date_mois_10' => 'تشرين الأول (أكتوبر)', |
|
| 184 | - 'date_mois_10_abbr' => 'ت١', |
|
| 185 | - 'date_mois_11' => 'تشرين الثاني (نوفمبر)', |
|
| 186 | - 'date_mois_11_abbr' => 'ت٢', |
|
| 187 | - 'date_mois_12' => 'كانون الأول (ديسمبر)', |
|
| 188 | - 'date_mois_12_abbr' => 'ك١', |
|
| 189 | - 'date_mois_1_abbr' => 'ك٢', |
|
| 190 | - 'date_mois_2' => 'شباط (فبراير)', |
|
| 191 | - 'date_mois_2_abbr' => 'شباط', |
|
| 192 | - 'date_mois_3' => 'آذار (مارس)', |
|
| 193 | - 'date_mois_3_abbr' => 'آذار', |
|
| 194 | - 'date_mois_4' => 'نيسان (أبريل)', |
|
| 195 | - 'date_mois_4_abbr' => 'نيسان', |
|
| 196 | - 'date_mois_5' => 'أيار (مايو)', |
|
| 197 | - 'date_mois_5_abbr' => 'أيار', |
|
| 198 | - 'date_mois_6' => 'حزيران (يونيو)', |
|
| 199 | - 'date_mois_6_abbr' => 'جزيران', |
|
| 200 | - 'date_mois_7' => 'تموز (يوليو)', |
|
| 201 | - 'date_mois_7_abbr' => 'تموز', |
|
| 202 | - 'date_mois_8' => 'آب (أغسطس)', |
|
| 203 | - 'date_mois_8_abbr' => 'آب', |
|
| 204 | - 'date_mois_9' => 'أيلول (سبتمبر)', |
|
| 205 | - 'date_mois_9_abbr' => 'أيلول', |
|
| 206 | - 'date_saison_1' => 'الشتاء', |
|
| 207 | - 'date_saison_2' => 'الربيع', |
|
| 208 | - 'date_saison_3' => 'الصيف', |
|
| 209 | - 'date_saison_4' => 'الخريف', |
|
| 210 | - 'date_secondes' => 'ثانية', |
|
| 211 | - 'date_semaines' => 'أسبوع', |
|
| 212 | - 'date_un_mois' => 'شهر', |
|
| 213 | - 'date_une_heure' => 'ساعة', |
|
| 214 | - 'date_une_minute' => 'دقيقة', |
|
| 215 | - 'date_une_seconde' => 'ثانية', |
|
| 216 | - 'date_une_semaine' => 'أسبوع', |
|
| 217 | - 'dirs_commencer' => 'للبدء فعلاً بعملية التثبيت', |
|
| 218 | - 'dirs_preliminaire' => 'تمهيد: <b>إعداد امتيازات الدخول</b>', |
|
| 219 | - 'dirs_probleme_droits' => 'مشكلة في امتيازات الدخول', |
|
| 220 | - 'dirs_repertoires_absents' => '<p><b>لم يتم العثور على الأدلة التالية: </b></p><ul>@bad_dirs@</ul> |
|
| 91 | + // D |
|
| 92 | + 'date_aujourdhui' => 'اليوم', |
|
| 93 | + 'date_avant_jc' => 'قبل الميلاد', |
|
| 94 | + 'date_dans' => 'بعد @delai@', |
|
| 95 | + 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | + 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | + 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | + 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | + 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | + 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | + 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | + 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | + 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | + 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | + 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | + 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | + 'date_demain' => 'غداً', |
|
| 108 | + 'date_fmt_heures_minutes' => '@h@ و@m@ دقيقة', |
|
| 109 | + 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 110 | + 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | + 'date_fmt_jour_heure' => '@jour@ الساعة @heure@', |
|
| 112 | + 'date_fmt_jour_heure_debut_fin' => 'في @jour@ من @heure_debut@ الى @heure_fin@', |
|
| 113 | + 'date_fmt_jour_heure_debut_fin_abbr' => 'في @dtstart@@jour@ من @heure_debut@@dtabbr@ الى @dtend@@heure_fin@@dtabbr@', |
|
| 114 | + 'date_fmt_jour_mois' => '@jour@ @nommois@', |
|
| 115 | + 'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@', |
|
| 116 | + 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | + 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | + 'date_fmt_nomjour_date' => 'في @nomjour@ @date@', |
|
| 119 | + 'date_fmt_periode' => 'من @date_debut@ الى @date_fin@', |
|
| 120 | + 'date_fmt_periode_abbr' => 'من @dtart@@date_debut@@dtabbr@ الى @dtend@@date_fin@@dtabbr@', |
|
| 121 | + 'date_fmt_periode_from' => 'من', |
|
| 122 | + 'date_fmt_periode_to' => 'الى', |
|
| 123 | + 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | + 'date_heures' => 'ساعة', |
|
| 125 | + 'date_hier' => 'البارحة', |
|
| 126 | + 'date_il_y_a' => 'منذ @delai@', |
|
| 127 | + 'date_jnum1' => '1', |
|
| 128 | + 'date_jnum10' => '10', |
|
| 129 | + 'date_jnum11' => '11', |
|
| 130 | + 'date_jnum12' => '12', |
|
| 131 | + 'date_jnum13' => '13', |
|
| 132 | + 'date_jnum14' => '14', |
|
| 133 | + 'date_jnum15' => '15', |
|
| 134 | + 'date_jnum16' => '16', |
|
| 135 | + 'date_jnum17' => '17', |
|
| 136 | + 'date_jnum18' => '18', |
|
| 137 | + 'date_jnum19' => '19', |
|
| 138 | + 'date_jnum2' => '2', |
|
| 139 | + 'date_jnum20' => '20', |
|
| 140 | + 'date_jnum21' => '21', |
|
| 141 | + 'date_jnum22' => '22', |
|
| 142 | + 'date_jnum23' => '23', |
|
| 143 | + 'date_jnum24' => '24', |
|
| 144 | + 'date_jnum25' => '25', |
|
| 145 | + 'date_jnum26' => '26', |
|
| 146 | + 'date_jnum27' => '27', |
|
| 147 | + 'date_jnum28' => '28', |
|
| 148 | + 'date_jnum29' => '29', |
|
| 149 | + 'date_jnum3' => '3', |
|
| 150 | + 'date_jnum30' => '30', |
|
| 151 | + 'date_jnum31' => '31', |
|
| 152 | + 'date_jnum4' => '4', |
|
| 153 | + 'date_jnum5' => '5', |
|
| 154 | + 'date_jnum6' => '6', |
|
| 155 | + 'date_jnum7' => '7', |
|
| 156 | + 'date_jnum8' => '8', |
|
| 157 | + 'date_jnum9' => '9', |
|
| 158 | + 'date_jour_1' => 'الأحد', |
|
| 159 | + 'date_jour_1_abbr' => 'أحد', |
|
| 160 | + 'date_jour_1_initiale' => 'أحد', |
|
| 161 | + 'date_jour_2' => 'الاثنين', |
|
| 162 | + 'date_jour_2_abbr' => 'اثنين', |
|
| 163 | + 'date_jour_2_initiale' => 'اثنين', |
|
| 164 | + 'date_jour_3' => 'الثلاثاء', |
|
| 165 | + 'date_jour_3_abbr' => 'ثلاثاء', |
|
| 166 | + 'date_jour_3_initiale' => 'ثلاثاء', |
|
| 167 | + 'date_jour_4' => 'الأربعاء', |
|
| 168 | + 'date_jour_4_abbr' => 'أربعاء', |
|
| 169 | + 'date_jour_4_initiale' => 'أربعاء', |
|
| 170 | + 'date_jour_5' => 'الخميس', |
|
| 171 | + 'date_jour_5_abbr' => 'خميس', |
|
| 172 | + 'date_jour_5_initiale' => 'خميس', |
|
| 173 | + 'date_jour_6' => 'الجمعة', |
|
| 174 | + 'date_jour_6_abbr' => 'جمعة', |
|
| 175 | + 'date_jour_6_initiale' => 'جمعة', |
|
| 176 | + 'date_jour_7' => 'السبت', |
|
| 177 | + 'date_jour_7_abbr' => 'سبت', |
|
| 178 | + 'date_jour_7_initiale' => 'سبت', |
|
| 179 | + 'date_jours' => 'يوم', |
|
| 180 | + 'date_minutes' => 'دقيقة', |
|
| 181 | + 'date_mois' => 'شهر', |
|
| 182 | + 'date_mois_1' => 'كانون الثاني (يناير)', |
|
| 183 | + 'date_mois_10' => 'تشرين الأول (أكتوبر)', |
|
| 184 | + 'date_mois_10_abbr' => 'ت١', |
|
| 185 | + 'date_mois_11' => 'تشرين الثاني (نوفمبر)', |
|
| 186 | + 'date_mois_11_abbr' => 'ت٢', |
|
| 187 | + 'date_mois_12' => 'كانون الأول (ديسمبر)', |
|
| 188 | + 'date_mois_12_abbr' => 'ك١', |
|
| 189 | + 'date_mois_1_abbr' => 'ك٢', |
|
| 190 | + 'date_mois_2' => 'شباط (فبراير)', |
|
| 191 | + 'date_mois_2_abbr' => 'شباط', |
|
| 192 | + 'date_mois_3' => 'آذار (مارس)', |
|
| 193 | + 'date_mois_3_abbr' => 'آذار', |
|
| 194 | + 'date_mois_4' => 'نيسان (أبريل)', |
|
| 195 | + 'date_mois_4_abbr' => 'نيسان', |
|
| 196 | + 'date_mois_5' => 'أيار (مايو)', |
|
| 197 | + 'date_mois_5_abbr' => 'أيار', |
|
| 198 | + 'date_mois_6' => 'حزيران (يونيو)', |
|
| 199 | + 'date_mois_6_abbr' => 'جزيران', |
|
| 200 | + 'date_mois_7' => 'تموز (يوليو)', |
|
| 201 | + 'date_mois_7_abbr' => 'تموز', |
|
| 202 | + 'date_mois_8' => 'آب (أغسطس)', |
|
| 203 | + 'date_mois_8_abbr' => 'آب', |
|
| 204 | + 'date_mois_9' => 'أيلول (سبتمبر)', |
|
| 205 | + 'date_mois_9_abbr' => 'أيلول', |
|
| 206 | + 'date_saison_1' => 'الشتاء', |
|
| 207 | + 'date_saison_2' => 'الربيع', |
|
| 208 | + 'date_saison_3' => 'الصيف', |
|
| 209 | + 'date_saison_4' => 'الخريف', |
|
| 210 | + 'date_secondes' => 'ثانية', |
|
| 211 | + 'date_semaines' => 'أسبوع', |
|
| 212 | + 'date_un_mois' => 'شهر', |
|
| 213 | + 'date_une_heure' => 'ساعة', |
|
| 214 | + 'date_une_minute' => 'دقيقة', |
|
| 215 | + 'date_une_seconde' => 'ثانية', |
|
| 216 | + 'date_une_semaine' => 'أسبوع', |
|
| 217 | + 'dirs_commencer' => 'للبدء فعلاً بعملية التثبيت', |
|
| 218 | + 'dirs_preliminaire' => 'تمهيد: <b>إعداد امتيازات الدخول</b>', |
|
| 219 | + 'dirs_probleme_droits' => 'مشكلة في امتيازات الدخول', |
|
| 220 | + 'dirs_repertoires_absents' => '<p><b>لم يتم العثور على الأدلة التالية: </b></p><ul>@bad_dirs@</ul> |
|
| 221 | 221 | <p>قد يكون السبب خطأ في اعتماد الحروف الكبيرة أو الصغيرة في أسمائها. الرجاء التأكد من أن الحروف الكبيرة والصغيرة في أسماء هذه الأدلة تناسب ما هو معروض أعلاه؛ إذا لم يكن الأمر كذلك، الرجاء إعادة تسمية الأدلة بواسطة برنامج FTP لتصحيح الخطأ. |
| 222 | 222 | <p>بعد تنفيذ هذه العملية يمكنك </p>', |
| 223 | - 'dirs_repertoires_suivants' => '<p><b>الأدلة التالية ممنوعة على الكتابة: </b></p |
|
| 223 | + 'dirs_repertoires_suivants' => '<p><b>الأدلة التالية ممنوعة على الكتابة: </b></p |
|
| 224 | 224 | <ul>@bad_dirs@</ul> |
| 225 | 225 | <p>لحل هذه المشكلة، استخدم برنامج FTP لإعداد امتيازات الدخول لكل من هذه الأدلة. ويوضح دليل الاستخدام هذه العملية بالتفصيل. |
| 226 | 226 | <p>بعد إتمام هذه العملية يمكنك</p>', |
| 227 | - 'double_occurrence' => 'ظهور مكرر لعلامة @balise@', |
|
| 227 | + 'double_occurrence' => 'ظهور مكرر لعلامة @balise@', |
|
| 228 | 228 | |
| 229 | - // E |
|
| 230 | - 'en_cours' => 'جاري', |
|
| 231 | - 'envoi_via_le_site' => 'إرسال عبر الموقع', |
|
| 232 | - 'erreur' => 'خطأ', |
|
| 233 | - 'erreur_balise_non_fermee' => 'آخر علامة غير مغلقة:', |
|
| 234 | - 'erreur_technique_ajaxform' => 'عفواً. حدث خطأ غير متوقع خلال إرسال الاستمارة. الرجاء المحاولة من جديد.', |
|
| 235 | - 'erreur_technique_enregistrement_champs' => 'خطأ تقني منع التسجيل السليم للحقل @champs@. ', |
|
| 236 | - 'erreur_technique_enregistrement_impossible' => 'خطأ تقني منع التسجيل.', |
|
| 237 | - 'erreur_texte' => 'خطأ (أخطاء)', |
|
| 238 | - 'etape' => 'خطوة', |
|
| 229 | + // E |
|
| 230 | + 'en_cours' => 'جاري', |
|
| 231 | + 'envoi_via_le_site' => 'إرسال عبر الموقع', |
|
| 232 | + 'erreur' => 'خطأ', |
|
| 233 | + 'erreur_balise_non_fermee' => 'آخر علامة غير مغلقة:', |
|
| 234 | + 'erreur_technique_ajaxform' => 'عفواً. حدث خطأ غير متوقع خلال إرسال الاستمارة. الرجاء المحاولة من جديد.', |
|
| 235 | + 'erreur_technique_enregistrement_champs' => 'خطأ تقني منع التسجيل السليم للحقل @champs@. ', |
|
| 236 | + 'erreur_technique_enregistrement_impossible' => 'خطأ تقني منع التسجيل.', |
|
| 237 | + 'erreur_texte' => 'خطأ (أخطاء)', |
|
| 238 | + 'etape' => 'خطوة', |
|
| 239 | 239 | |
| 240 | - // F |
|
| 241 | - 'fichier_introuvable' => 'لا يمكن العثور على الملف @fichier@', |
|
| 242 | - 'fonction_introuvable' => 'دالة @fonction@() غير موجودة.', |
|
| 243 | - 'form_auteur_confirmation' => 'تأكيد عنوان البريد الالكتروني', |
|
| 244 | - 'form_auteur_email_modifie' => 'تغير عنوان بريدك.', |
|
| 245 | - 'form_auteur_envoi_mail_confirmation' => 'لفد تم ارسال بريد تأكيد الى @email@. عليك زيارة عنوان الموقع الموجود في الرسالة للتصديق على عنوان بريدك.', |
|
| 246 | - 'form_auteur_mail_confirmation' => 'أهلاً وسهلاً |
|
| 240 | + // F |
|
| 241 | + 'fichier_introuvable' => 'لا يمكن العثور على الملف @fichier@', |
|
| 242 | + 'fonction_introuvable' => 'دالة @fonction@() غير موجودة.', |
|
| 243 | + 'form_auteur_confirmation' => 'تأكيد عنوان البريد الالكتروني', |
|
| 244 | + 'form_auteur_email_modifie' => 'تغير عنوان بريدك.', |
|
| 245 | + 'form_auteur_envoi_mail_confirmation' => 'لفد تم ارسال بريد تأكيد الى @email@. عليك زيارة عنوان الموقع الموجود في الرسالة للتصديق على عنوان بريدك.', |
|
| 246 | + 'form_auteur_mail_confirmation' => 'أهلاً وسهلاً |
|
| 247 | 247 | |
| 248 | 248 | لقد طلبت تغيير عنوان بريدك. |
| 249 | 249 | للتصديق على العنوان الجديد، يكفي الاتصال |
@@ -252,347 +252,347 @@ discard block |
||
| 252 | 252 | |
| 253 | 253 | @url@ |
| 254 | 254 | ', |
| 255 | - 'form_deja_inscrit' => 'سبق لك التسجيل.', |
|
| 256 | - 'form_email_non_valide' => 'عنوانك البريدي غير صالح.', |
|
| 257 | - 'form_forum_access_refuse' => 'لم تعد تملك امتياز الدحول إلى هذا الموقع.', |
|
| 258 | - 'form_forum_bonjour' => 'مرحباً @nom@،', |
|
| 259 | - 'form_forum_confirmer_email' => 'لتأكيد عنوان بريدك، إذهب الى:@url_confirm@', |
|
| 260 | - 'form_forum_email_deja_enregistre' => 'سبق تسجيل هذا العنوان البريدي، يمكنك إذاً استخدام كلمة سرك الاعتيادية.', |
|
| 261 | - 'form_forum_identifiant_mail' => 'لقد تم إرسال معرّفك الجديد بالبريد الالكتروني.', |
|
| 262 | - 'form_forum_identifiants' => 'بيانات الاتصال الشخصية', |
|
| 263 | - 'form_forum_indiquer_nom_email' => 'قم بإدخال اسمك وعنوانك البريدي هنا. ستحصل على بيانات اتصالك قريباً في البريد الإلكتروني.', |
|
| 264 | - 'form_forum_login' => 'المعرّف:', |
|
| 265 | - 'form_forum_message_auto' => '(هذه رسالة آلية)', |
|
| 266 | - 'form_forum_pass' => 'كلمة السر:', |
|
| 267 | - 'form_forum_probleme_mail' => 'مشكلة بريد إلكتروني: لا يمكن إرسال بيانات الدخول.', |
|
| 268 | - 'form_forum_voici1' => 'هذه هي بياناتك للاشتراك في نشاط |
|
| 255 | + 'form_deja_inscrit' => 'سبق لك التسجيل.', |
|
| 256 | + 'form_email_non_valide' => 'عنوانك البريدي غير صالح.', |
|
| 257 | + 'form_forum_access_refuse' => 'لم تعد تملك امتياز الدحول إلى هذا الموقع.', |
|
| 258 | + 'form_forum_bonjour' => 'مرحباً @nom@،', |
|
| 259 | + 'form_forum_confirmer_email' => 'لتأكيد عنوان بريدك، إذهب الى:@url_confirm@', |
|
| 260 | + 'form_forum_email_deja_enregistre' => 'سبق تسجيل هذا العنوان البريدي، يمكنك إذاً استخدام كلمة سرك الاعتيادية.', |
|
| 261 | + 'form_forum_identifiant_mail' => 'لقد تم إرسال معرّفك الجديد بالبريد الالكتروني.', |
|
| 262 | + 'form_forum_identifiants' => 'بيانات الاتصال الشخصية', |
|
| 263 | + 'form_forum_indiquer_nom_email' => 'قم بإدخال اسمك وعنوانك البريدي هنا. ستحصل على بيانات اتصالك قريباً في البريد الإلكتروني.', |
|
| 264 | + 'form_forum_login' => 'المعرّف:', |
|
| 265 | + 'form_forum_message_auto' => '(هذه رسالة آلية)', |
|
| 266 | + 'form_forum_pass' => 'كلمة السر:', |
|
| 267 | + 'form_forum_probleme_mail' => 'مشكلة بريد إلكتروني: لا يمكن إرسال بيانات الدخول.', |
|
| 268 | + 'form_forum_voici1' => 'هذه هي بياناتك للاشتراك في نشاط |
|
| 269 | 269 | الموقع "@nom_site_spip@" (@adresse_site@):', |
| 270 | - 'form_forum_voici2' => 'هذه هي بياناتك لاقتراح مقالات |
|
| 270 | + 'form_forum_voici2' => 'هذه هي بياناتك لاقتراح مقالات |
|
| 271 | 271 | للموقع "@nom_site_spip@" (@adresse_login@):', |
| 272 | - 'form_indiquer_email' => 'الرجاء إدخال عنوانك الإلكتروني.', |
|
| 273 | - 'form_indiquer_nom' => 'الرجاء إدخال اسمك.', |
|
| 274 | - 'form_indiquer_nom_site' => 'الرجاء إدخال إسم موقعك.', |
|
| 275 | - 'form_pet_deja_enregistre' => 'سبق تسجيل هذا الموقع', |
|
| 276 | - 'form_pet_signature_pasprise' => 'تم تجاهل توقيعك.', |
|
| 277 | - 'form_prop_confirmer_envoi' => 'تأكيد الإرسال', |
|
| 278 | - 'form_prop_description' => 'وصف/تعليق', |
|
| 279 | - 'form_prop_enregistre' => 'تم تسجيل اقتراحك، سوف يظهر بعد تصديقه من قبل مسئولي هذا الموقع.', |
|
| 280 | - 'form_prop_envoyer' => 'ابعث برسالة', |
|
| 281 | - 'form_prop_indiquer_email' => 'الرجاء إدخال عنوان بريد إلكتروني صالح', |
|
| 282 | - 'form_prop_indiquer_nom_site' => 'الرجاء إدخال اسم الموقع.', |
|
| 283 | - 'form_prop_indiquer_sujet' => 'الرجاء إدخال موضوع', |
|
| 284 | - 'form_prop_message_envoye' => 'تم بعث الرسالة', |
|
| 285 | - 'form_prop_non_enregistre' => 'لم يتم تسجيل اقتراحك.', |
|
| 286 | - 'form_prop_sujet' => 'الموضوع', |
|
| 287 | - 'form_prop_url_site' => 'عنوان الموقع', |
|
| 288 | - 'format_date_attendu' => 'إدخال تاريخ بتنسيق jj/mm/aaaa.', |
|
| 289 | - 'format_date_incorrecte' => 'التاريخ او تنسيقه غير صحيح', |
|
| 290 | - 'format_heure_attendu' => 'إدخال ساعة بتنسيق hh:mm.', |
|
| 291 | - 'format_heure_incorrecte' => 'الساعة او تنسيقها غير صحيح', |
|
| 292 | - 'forum_non_inscrit' => 'إما انك غير مسجل أو هناك خطأ في العنوان أو كلمة السر.', |
|
| 293 | - 'forum_par_auteur' => 'من @auteur@', |
|
| 294 | - 'forum_titre_erreur' => 'خطأ...', |
|
| 272 | + 'form_indiquer_email' => 'الرجاء إدخال عنوانك الإلكتروني.', |
|
| 273 | + 'form_indiquer_nom' => 'الرجاء إدخال اسمك.', |
|
| 274 | + 'form_indiquer_nom_site' => 'الرجاء إدخال إسم موقعك.', |
|
| 275 | + 'form_pet_deja_enregistre' => 'سبق تسجيل هذا الموقع', |
|
| 276 | + 'form_pet_signature_pasprise' => 'تم تجاهل توقيعك.', |
|
| 277 | + 'form_prop_confirmer_envoi' => 'تأكيد الإرسال', |
|
| 278 | + 'form_prop_description' => 'وصف/تعليق', |
|
| 279 | + 'form_prop_enregistre' => 'تم تسجيل اقتراحك، سوف يظهر بعد تصديقه من قبل مسئولي هذا الموقع.', |
|
| 280 | + 'form_prop_envoyer' => 'ابعث برسالة', |
|
| 281 | + 'form_prop_indiquer_email' => 'الرجاء إدخال عنوان بريد إلكتروني صالح', |
|
| 282 | + 'form_prop_indiquer_nom_site' => 'الرجاء إدخال اسم الموقع.', |
|
| 283 | + 'form_prop_indiquer_sujet' => 'الرجاء إدخال موضوع', |
|
| 284 | + 'form_prop_message_envoye' => 'تم بعث الرسالة', |
|
| 285 | + 'form_prop_non_enregistre' => 'لم يتم تسجيل اقتراحك.', |
|
| 286 | + 'form_prop_sujet' => 'الموضوع', |
|
| 287 | + 'form_prop_url_site' => 'عنوان الموقع', |
|
| 288 | + 'format_date_attendu' => 'إدخال تاريخ بتنسيق jj/mm/aaaa.', |
|
| 289 | + 'format_date_incorrecte' => 'التاريخ او تنسيقه غير صحيح', |
|
| 290 | + 'format_heure_attendu' => 'إدخال ساعة بتنسيق hh:mm.', |
|
| 291 | + 'format_heure_incorrecte' => 'الساعة او تنسيقها غير صحيح', |
|
| 292 | + 'forum_non_inscrit' => 'إما انك غير مسجل أو هناك خطأ في العنوان أو كلمة السر.', |
|
| 293 | + 'forum_par_auteur' => 'من @auteur@', |
|
| 294 | + 'forum_titre_erreur' => 'خطأ...', |
|
| 295 | 295 | |
| 296 | - // I |
|
| 297 | - 'ical_texte_rss_articles' => 'يوجد ملف «الترخيص الخلفي» لمقالات هذا الموقع على العنوان: ', |
|
| 298 | - 'ical_texte_rss_articles2' => 'يمكنك أيضاً الحصول على ملفات «الترخيص الخلفي» لمقالات كل قسم في الموقع:', |
|
| 299 | - 'ical_texte_rss_breves' => 'يوجد كذلك ملف يحتوي على أخبار الموقع. وبإدخال رقم قسم ما، تحصل على أخبار هذا القسم فقط.', |
|
| 300 | - 'icone_a_suivre' => 'للمتابعة', |
|
| 301 | - 'icone_admin_site' => 'إدارة الموقع', |
|
| 302 | - 'icone_agenda' => 'المفكرة', |
|
| 303 | - 'icone_aide_ligne' => 'التعليمات الفورية', |
|
| 304 | - 'icone_articles' => 'المقالات', |
|
| 305 | - 'icone_auteurs' => 'المؤلفون', |
|
| 306 | - 'icone_brouteur' => 'تصفح سريع', |
|
| 307 | - 'icone_configuration_site' => 'إعداد', |
|
| 308 | - 'icone_configurer_site' => 'إعداد موقعك', |
|
| 309 | - 'icone_creer_nouvel_auteur' => 'إضافة مؤلف جديد', |
|
| 310 | - 'icone_creer_rubrique' => 'إنشاء قسم', |
|
| 311 | - 'icone_creer_sous_rubrique' => 'إنشاء قسم فرعي', |
|
| 312 | - 'icone_deconnecter' => 'خروج', |
|
| 313 | - 'icone_discussions' => 'نقاشات', |
|
| 314 | - 'icone_doc_rubrique' => 'مستندات الأقسام', |
|
| 315 | - 'icone_ecrire_article' => 'كتابة مقال جديد', |
|
| 316 | - 'icone_edition_site' => 'تحرير الموقع', |
|
| 317 | - 'icone_gestion_langues' => 'إدارة اللغات', |
|
| 318 | - 'icone_informations_personnelles' => 'المعلومات الشخصية', |
|
| 319 | - 'icone_interface_complet' => 'واجهة كاملة', |
|
| 320 | - 'icone_interface_simple' => 'واجهة مبسّطة', |
|
| 321 | - 'icone_maintenance_site' => 'صيانة الموقع', |
|
| 322 | - 'icone_messagerie_personnelle' => 'المراسلة الشخصية', |
|
| 323 | - 'icone_repartition_debut' => 'إظهار التوزيع منذ البداية', |
|
| 324 | - 'icone_rubriques' => 'الأقسام', |
|
| 325 | - 'icone_sauver_site' => 'نسخة احتياطية للموقع', |
|
| 326 | - 'icone_site_entier' => 'الموقع بالكامل', |
|
| 327 | - 'icone_sites_references' => 'المواقع المبوبة', |
|
| 328 | - 'icone_statistiques' => 'إحصاءات الموقع', |
|
| 329 | - 'icone_suivi_activite' => 'متابعة نشاط الموقع', |
|
| 330 | - 'icone_suivi_actualite' => 'تطور الموقع', |
|
| 331 | - 'icone_suivi_pettions' => 'متابعة/إدارة العرائض', |
|
| 332 | - 'icone_suivi_revisions' => 'تعديل المقالات', |
|
| 333 | - 'icone_supprimer_document' => 'حذف هذا المستند', |
|
| 334 | - 'icone_supprimer_image' => 'حذف هذه الصورة', |
|
| 335 | - 'icone_tous_articles' => 'كل مقالاتك', |
|
| 336 | - 'icone_tous_auteur' => 'جميع المؤلفين', |
|
| 337 | - 'icone_tous_visiteur' => 'جميع الزوار', |
|
| 338 | - 'icone_visiter_site' => 'تصفح الموقع العمومي', |
|
| 339 | - 'icone_voir_en_ligne' => 'عرض مباشر', |
|
| 340 | - 'img_indisponible' => 'صورة غير متوفرة', |
|
| 341 | - 'impossible' => 'مستحيل', |
|
| 342 | - 'info_a_suivre' => 'للمتابعة»', |
|
| 343 | - 'info_acces_interdit' => 'الدخول محظور', |
|
| 344 | - 'info_acces_refuse' => 'دخول محظور', |
|
| 345 | - 'info_action' => 'عملية: @action@', |
|
| 346 | - 'info_administrer_rubriques' => 'يمكنك إدارة هذا القسم وأقسامه الفرعية', |
|
| 347 | - 'info_adresse_non_indiquee' => 'لم تدخل أي عنوان لاختباره!', |
|
| 348 | - 'info_aide' => 'تعليمات :', |
|
| 349 | - 'info_ajouter_mot' => 'إضافة هذا المفتاح', |
|
| 350 | - 'info_annonce' => 'إعلان', |
|
| 351 | - 'info_annonces_generales' => 'إعلانات عامة:', |
|
| 352 | - 'info_article_propose' => 'مقال مقترح', |
|
| 353 | - 'info_article_publie' => 'مقال منشور', |
|
| 354 | - 'info_article_redaction' => 'مقال قيد التحرير', |
|
| 355 | - 'info_article_refuse' => 'مقال مرفوض', |
|
| 356 | - 'info_article_supprime' => 'مقال محذوف', |
|
| 357 | - 'info_articles' => 'المقالات', |
|
| 358 | - 'info_articles_a_valider' => 'مقالات معروضة للتصديق', |
|
| 359 | - 'info_articles_nb' => '@nb@ مقال', |
|
| 360 | - 'info_articles_proposes' => 'المقالات المعروضة', |
|
| 361 | - 'info_articles_un' => 'مقال واحد', |
|
| 362 | - 'info_auteurs_nombre' => 'مؤلف (مؤلفون):', |
|
| 363 | - 'info_authentification_ftp' => 'التحقق ( عبر بروتوكول FTP ).', |
|
| 364 | - 'info_breves_2' => 'خبر', |
|
| 365 | - 'info_breves_nb' => '@nb@ خبر', |
|
| 366 | - 'info_breves_un' => 'خبر واحد', |
|
| 367 | - 'info_connexion_refusee' => 'رفض الاتصال', |
|
| 368 | - 'info_contact_developpeur' => 'الرجاء الاتصال بمطوّر.', |
|
| 369 | - 'info_contenance' => 'هذا الموقع يحتوي على:', |
|
| 370 | - 'info_contribution' => 'مشاركة منتديات', |
|
| 371 | - 'info_copyright' => '@spip@ برنامج حر موزع @lien_gpl@.', |
|
| 372 | - 'info_copyright_doc' => 'لمزيد من المعلومات راجع الموقع<a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 373 | - 'info_copyright_gpl' => 'بموجب الترخيص العام GPL', |
|
| 374 | - 'info_cours_edition' => 'قيد التحرير', |
|
| 375 | - 'info_creer_repertoire' => 'الرجاء إنشاء ملف أو دليل باسم', |
|
| 376 | - 'info_creer_repertoire_2' => 'داخل الدليل الفرعي <b>@repertoire@</b>، ثم:', |
|
| 377 | - 'info_creer_vignette' => 'إنشاء آلي للمصغر', |
|
| 378 | - 'info_creerdansrubrique_non_autorise' => 'لا تملك الحقوق الكافية لإنشاء اي محتوى في هذا القسم', |
|
| 379 | - 'info_deplier' => 'بسط', |
|
| 380 | - 'info_descriptif_nombre' => 'الوصف:', |
|
| 381 | - 'info_description' => 'الوصف:', |
|
| 382 | - 'info_description_2' => 'الوصف:', |
|
| 383 | - 'info_dimension' => 'الحجم:', |
|
| 384 | - 'info_documents_nb' => '@nb@ مستند', |
|
| 385 | - 'info_documents_un' => 'مستند واحد', |
|
| 386 | - 'info_ecire_message_prive' => 'تحرير رسالة خاصة', |
|
| 387 | - 'info_email_invalide' => 'عنوان بريد غير صالح.', |
|
| 388 | - 'info_en_cours_validation' => 'مقالاتك قيد التحرير', |
|
| 389 | - 'info_en_ligne' => 'متصل حالياً:', |
|
| 390 | - 'info_envoyer_message_prive' => 'ابعث برسالة خاصة لهذا المؤلف', |
|
| 391 | - 'info_erreur_requete' => 'خطأ في الاستفسار:', |
|
| 392 | - 'info_erreur_squelette2' => 'لا توجد صفحة نموذجية <b>@fichier@</b> متاحة...', |
|
| 393 | - 'info_erreur_systeme' => 'خطأ في النظام (خطأ رقم @errsys@)', |
|
| 394 | - 'info_erreur_systeme2' => 'قد يكون القرص الصلب ممتلئاً أو قد تكون قاعدة البيانات معطلة.<br /> |
|
| 296 | + // I |
|
| 297 | + 'ical_texte_rss_articles' => 'يوجد ملف «الترخيص الخلفي» لمقالات هذا الموقع على العنوان: ', |
|
| 298 | + 'ical_texte_rss_articles2' => 'يمكنك أيضاً الحصول على ملفات «الترخيص الخلفي» لمقالات كل قسم في الموقع:', |
|
| 299 | + 'ical_texte_rss_breves' => 'يوجد كذلك ملف يحتوي على أخبار الموقع. وبإدخال رقم قسم ما، تحصل على أخبار هذا القسم فقط.', |
|
| 300 | + 'icone_a_suivre' => 'للمتابعة', |
|
| 301 | + 'icone_admin_site' => 'إدارة الموقع', |
|
| 302 | + 'icone_agenda' => 'المفكرة', |
|
| 303 | + 'icone_aide_ligne' => 'التعليمات الفورية', |
|
| 304 | + 'icone_articles' => 'المقالات', |
|
| 305 | + 'icone_auteurs' => 'المؤلفون', |
|
| 306 | + 'icone_brouteur' => 'تصفح سريع', |
|
| 307 | + 'icone_configuration_site' => 'إعداد', |
|
| 308 | + 'icone_configurer_site' => 'إعداد موقعك', |
|
| 309 | + 'icone_creer_nouvel_auteur' => 'إضافة مؤلف جديد', |
|
| 310 | + 'icone_creer_rubrique' => 'إنشاء قسم', |
|
| 311 | + 'icone_creer_sous_rubrique' => 'إنشاء قسم فرعي', |
|
| 312 | + 'icone_deconnecter' => 'خروج', |
|
| 313 | + 'icone_discussions' => 'نقاشات', |
|
| 314 | + 'icone_doc_rubrique' => 'مستندات الأقسام', |
|
| 315 | + 'icone_ecrire_article' => 'كتابة مقال جديد', |
|
| 316 | + 'icone_edition_site' => 'تحرير الموقع', |
|
| 317 | + 'icone_gestion_langues' => 'إدارة اللغات', |
|
| 318 | + 'icone_informations_personnelles' => 'المعلومات الشخصية', |
|
| 319 | + 'icone_interface_complet' => 'واجهة كاملة', |
|
| 320 | + 'icone_interface_simple' => 'واجهة مبسّطة', |
|
| 321 | + 'icone_maintenance_site' => 'صيانة الموقع', |
|
| 322 | + 'icone_messagerie_personnelle' => 'المراسلة الشخصية', |
|
| 323 | + 'icone_repartition_debut' => 'إظهار التوزيع منذ البداية', |
|
| 324 | + 'icone_rubriques' => 'الأقسام', |
|
| 325 | + 'icone_sauver_site' => 'نسخة احتياطية للموقع', |
|
| 326 | + 'icone_site_entier' => 'الموقع بالكامل', |
|
| 327 | + 'icone_sites_references' => 'المواقع المبوبة', |
|
| 328 | + 'icone_statistiques' => 'إحصاءات الموقع', |
|
| 329 | + 'icone_suivi_activite' => 'متابعة نشاط الموقع', |
|
| 330 | + 'icone_suivi_actualite' => 'تطور الموقع', |
|
| 331 | + 'icone_suivi_pettions' => 'متابعة/إدارة العرائض', |
|
| 332 | + 'icone_suivi_revisions' => 'تعديل المقالات', |
|
| 333 | + 'icone_supprimer_document' => 'حذف هذا المستند', |
|
| 334 | + 'icone_supprimer_image' => 'حذف هذه الصورة', |
|
| 335 | + 'icone_tous_articles' => 'كل مقالاتك', |
|
| 336 | + 'icone_tous_auteur' => 'جميع المؤلفين', |
|
| 337 | + 'icone_tous_visiteur' => 'جميع الزوار', |
|
| 338 | + 'icone_visiter_site' => 'تصفح الموقع العمومي', |
|
| 339 | + 'icone_voir_en_ligne' => 'عرض مباشر', |
|
| 340 | + 'img_indisponible' => 'صورة غير متوفرة', |
|
| 341 | + 'impossible' => 'مستحيل', |
|
| 342 | + 'info_a_suivre' => 'للمتابعة»', |
|
| 343 | + 'info_acces_interdit' => 'الدخول محظور', |
|
| 344 | + 'info_acces_refuse' => 'دخول محظور', |
|
| 345 | + 'info_action' => 'عملية: @action@', |
|
| 346 | + 'info_administrer_rubriques' => 'يمكنك إدارة هذا القسم وأقسامه الفرعية', |
|
| 347 | + 'info_adresse_non_indiquee' => 'لم تدخل أي عنوان لاختباره!', |
|
| 348 | + 'info_aide' => 'تعليمات :', |
|
| 349 | + 'info_ajouter_mot' => 'إضافة هذا المفتاح', |
|
| 350 | + 'info_annonce' => 'إعلان', |
|
| 351 | + 'info_annonces_generales' => 'إعلانات عامة:', |
|
| 352 | + 'info_article_propose' => 'مقال مقترح', |
|
| 353 | + 'info_article_publie' => 'مقال منشور', |
|
| 354 | + 'info_article_redaction' => 'مقال قيد التحرير', |
|
| 355 | + 'info_article_refuse' => 'مقال مرفوض', |
|
| 356 | + 'info_article_supprime' => 'مقال محذوف', |
|
| 357 | + 'info_articles' => 'المقالات', |
|
| 358 | + 'info_articles_a_valider' => 'مقالات معروضة للتصديق', |
|
| 359 | + 'info_articles_nb' => '@nb@ مقال', |
|
| 360 | + 'info_articles_proposes' => 'المقالات المعروضة', |
|
| 361 | + 'info_articles_un' => 'مقال واحد', |
|
| 362 | + 'info_auteurs_nombre' => 'مؤلف (مؤلفون):', |
|
| 363 | + 'info_authentification_ftp' => 'التحقق ( عبر بروتوكول FTP ).', |
|
| 364 | + 'info_breves_2' => 'خبر', |
|
| 365 | + 'info_breves_nb' => '@nb@ خبر', |
|
| 366 | + 'info_breves_un' => 'خبر واحد', |
|
| 367 | + 'info_connexion_refusee' => 'رفض الاتصال', |
|
| 368 | + 'info_contact_developpeur' => 'الرجاء الاتصال بمطوّر.', |
|
| 369 | + 'info_contenance' => 'هذا الموقع يحتوي على:', |
|
| 370 | + 'info_contribution' => 'مشاركة منتديات', |
|
| 371 | + 'info_copyright' => '@spip@ برنامج حر موزع @lien_gpl@.', |
|
| 372 | + 'info_copyright_doc' => 'لمزيد من المعلومات راجع الموقع<a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 373 | + 'info_copyright_gpl' => 'بموجب الترخيص العام GPL', |
|
| 374 | + 'info_cours_edition' => 'قيد التحرير', |
|
| 375 | + 'info_creer_repertoire' => 'الرجاء إنشاء ملف أو دليل باسم', |
|
| 376 | + 'info_creer_repertoire_2' => 'داخل الدليل الفرعي <b>@repertoire@</b>، ثم:', |
|
| 377 | + 'info_creer_vignette' => 'إنشاء آلي للمصغر', |
|
| 378 | + 'info_creerdansrubrique_non_autorise' => 'لا تملك الحقوق الكافية لإنشاء اي محتوى في هذا القسم', |
|
| 379 | + 'info_deplier' => 'بسط', |
|
| 380 | + 'info_descriptif_nombre' => 'الوصف:', |
|
| 381 | + 'info_description' => 'الوصف:', |
|
| 382 | + 'info_description_2' => 'الوصف:', |
|
| 383 | + 'info_dimension' => 'الحجم:', |
|
| 384 | + 'info_documents_nb' => '@nb@ مستند', |
|
| 385 | + 'info_documents_un' => 'مستند واحد', |
|
| 386 | + 'info_ecire_message_prive' => 'تحرير رسالة خاصة', |
|
| 387 | + 'info_email_invalide' => 'عنوان بريد غير صالح.', |
|
| 388 | + 'info_en_cours_validation' => 'مقالاتك قيد التحرير', |
|
| 389 | + 'info_en_ligne' => 'متصل حالياً:', |
|
| 390 | + 'info_envoyer_message_prive' => 'ابعث برسالة خاصة لهذا المؤلف', |
|
| 391 | + 'info_erreur_requete' => 'خطأ في الاستفسار:', |
|
| 392 | + 'info_erreur_squelette2' => 'لا توجد صفحة نموذجية <b>@fichier@</b> متاحة...', |
|
| 393 | + 'info_erreur_systeme' => 'خطأ في النظام (خطأ رقم @errsys@)', |
|
| 394 | + 'info_erreur_systeme2' => 'قد يكون القرص الصلب ممتلئاً أو قد تكون قاعدة البيانات معطلة.<br /> |
|
| 395 | 395 | <span style="color:red;">حاول <a href=\'@script@\'>إصلاح القاعدة</a>، أو الاتصال بمضيف موقعك.</font> ', |
| 396 | - 'info_fini' => 'انتهى!', |
|
| 397 | - 'info_format_image' => 'تنسيق ملفات الصور الذي يمكن استخدامه لإنشاء المصغرات: @gd_formats@ .', |
|
| 398 | - 'info_format_non_defini' => 'تنسيق غير معروف', |
|
| 399 | - 'info_grand_ecran' => 'شاشة كبيرة', |
|
| 400 | - 'info_image_aide' => 'تعليمات', |
|
| 401 | - 'info_image_process_titre' => 'طريقة إنشاء المصغرات', |
|
| 402 | - 'info_impossible_lire_page' => '<b>خطأ!</b> لا يمكن قراءة الصفحة <tt><html>@test_proxy@</html></tt> عبر الجهاز الوكيل', |
|
| 403 | - 'info_installation_systeme_publication' => 'تثبيت نظام النشر...', |
|
| 404 | - 'info_installer_documents' => 'يمكنك تثبيت كل المستندات الموجودة في المجلد @upload@ آلياً.', |
|
| 405 | - 'info_installer_ftp' => 'بصفتك مديراً، يمكنك تثبيت (بواسطة بروتوكول FTP) ملفات في المجلد@upload@ من أجل تحديدهم في ما بعد مباشرة من هنا.', |
|
| 406 | - 'info_installer_images' => 'يمكنك تثبيت صور بتنسيقات JPEG وGIF وPNG.', |
|
| 407 | - 'info_installer_images_dossier' => 'تثبيت صور في المجلد @upload@ للتمكن من تحديدها هنا.', |
|
| 408 | - 'info_interface_complete' => 'واجهة كاملة', |
|
| 409 | - 'info_interface_simple' => 'واجهة مبسّطة', |
|
| 410 | - 'info_joindre_document_article' => 'يمكنك إرفاق مقالك بمستندات من الأنواع', |
|
| 411 | - 'info_joindre_document_rubrique' => 'يمكنك إضافة مستندات من الأنواع التالية إلى هذا القسم', |
|
| 412 | - 'info_joindre_documents_article' => 'يمكنك إرفاق مستندات من الأنواع التالية بمقالك :', |
|
| 413 | - 'info_l_article' => 'المقال', |
|
| 414 | - 'info_la_breve' => 'الخبر', |
|
| 415 | - 'info_la_rubrique' => 'القسم', |
|
| 416 | - 'info_langue_principale' => 'اللغة الأساسية للموقع', |
|
| 417 | - 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ نقطة', |
|
| 418 | - 'info_les_auteurs_1' => 'من @les_auteurs@', |
|
| 419 | - 'info_logo_format_interdit' => 'الرموز بتنسيق @formats@ هي الوحيدة المسموح بها.', |
|
| 420 | - 'info_logo_max_poids' => 'يجب ألا يتعدى حجم الرموز @maxi@ (يبلغ حجم الملف الحالي @actuel@). ', |
|
| 421 | - 'info_mail_fournisseur' => '[email protected]', |
|
| 422 | - 'info_message_2' => 'رسالة', |
|
| 423 | - 'info_message_supprime' => 'تم حذف المشاركة', |
|
| 424 | - 'info_messages_nb' => '@nb@ رسالة', |
|
| 425 | - 'info_messages_un' => 'رسالة واحدة', |
|
| 426 | - 'info_mise_en_ligne' => 'تاريخ النشر:', |
|
| 427 | - 'info_modification_parametres_securite' => 'تعديل إعدادات الأمان', |
|
| 428 | - 'info_mois_courant' => 'في بحر الشهر:', |
|
| 429 | - 'info_mot_cle_ajoute' => 'تمت إضافة المفتاح التالي إلى', |
|
| 430 | - 'info_multi_herit' => 'اللغة الافتراضية', |
|
| 431 | - 'info_multi_langues_soulignees' => '<u>اللغات التي تحتها خط</u> تتمتع بترجمة كاملة او جزئية لكل نصوص الواجهة. فإذا حددت هذه اللغات، سيتم ترجمة العديد من عناصر الموقع العمومي (التواريخ والاستمارات) آلياً. أما بالنسبة للغات التي ليس تحتها خط، فستظهر هذه العناصر في لغة الموقع الأساسية.', |
|
| 432 | - 'info_multilinguisme' => 'تعدد اللغات', |
|
| 433 | - 'info_nom_non_utilisateurs_connectes' => 'اسمك لا يظهر في قائمة المستخدمين المتصلين.', |
|
| 434 | - 'info_nom_utilisateurs_connectes' => 'اسمك يظهر في قائمة المستخدمين المتصلين.', |
|
| 435 | - 'info_nombre_en_ligne' => 'متصل حالياً:', |
|
| 436 | - 'info_non_resultat' => 'لا توجد نتائج لـ "@cherche_mot@"', |
|
| 437 | - 'info_non_utilisation_messagerie' => 'أنت لا تستخدم المراسلة الداخلية في هذا الموقع.', |
|
| 438 | - 'info_nouveau_message' => 'وصلت رسالة جديدة', |
|
| 439 | - 'info_nouveaux_messages' => 'وصلت @total_messages@ رسالة جديدة', |
|
| 440 | - 'info_numero_abbreviation' => 'رقم', |
|
| 441 | - 'info_obligatoire' => 'هذه المعلومة إجبارية', |
|
| 442 | - 'info_page_actuelle' => 'الصفحة الحالية', |
|
| 443 | - 'info_pense_bete' => 'مذكرة', |
|
| 444 | - 'info_petit_ecran' => 'شاشة صغيرة', |
|
| 445 | - 'info_petition_close' => 'عريضة مقفلة', |
|
| 446 | - 'info_pixels' => 'نقطة', |
|
| 447 | - 'info_plusieurs_mots_trouves' => 'تم العثور على عدة مفاتيح لـ "@cherche_mot@" :', |
|
| 448 | - 'info_portfolio_automatique' => 'محفظة آلية:', |
|
| 449 | - 'info_premier_resultat' => '[النتائج الـ@debut_limit@ الأولى من أصل @total@]', |
|
| 450 | - 'info_premier_resultat_sur' => '[النتائج الـ@debut_limit@ الأولى من أصل @total@]', |
|
| 451 | - 'info_propose_1' => '[@nom_site_spip@] يقترح: @titre@', |
|
| 452 | - 'info_propose_2' => 'مقال معروض |
|
| 396 | + 'info_fini' => 'انتهى!', |
|
| 397 | + 'info_format_image' => 'تنسيق ملفات الصور الذي يمكن استخدامه لإنشاء المصغرات: @gd_formats@ .', |
|
| 398 | + 'info_format_non_defini' => 'تنسيق غير معروف', |
|
| 399 | + 'info_grand_ecran' => 'شاشة كبيرة', |
|
| 400 | + 'info_image_aide' => 'تعليمات', |
|
| 401 | + 'info_image_process_titre' => 'طريقة إنشاء المصغرات', |
|
| 402 | + 'info_impossible_lire_page' => '<b>خطأ!</b> لا يمكن قراءة الصفحة <tt><html>@test_proxy@</html></tt> عبر الجهاز الوكيل', |
|
| 403 | + 'info_installation_systeme_publication' => 'تثبيت نظام النشر...', |
|
| 404 | + 'info_installer_documents' => 'يمكنك تثبيت كل المستندات الموجودة في المجلد @upload@ آلياً.', |
|
| 405 | + 'info_installer_ftp' => 'بصفتك مديراً، يمكنك تثبيت (بواسطة بروتوكول FTP) ملفات في المجلد@upload@ من أجل تحديدهم في ما بعد مباشرة من هنا.', |
|
| 406 | + 'info_installer_images' => 'يمكنك تثبيت صور بتنسيقات JPEG وGIF وPNG.', |
|
| 407 | + 'info_installer_images_dossier' => 'تثبيت صور في المجلد @upload@ للتمكن من تحديدها هنا.', |
|
| 408 | + 'info_interface_complete' => 'واجهة كاملة', |
|
| 409 | + 'info_interface_simple' => 'واجهة مبسّطة', |
|
| 410 | + 'info_joindre_document_article' => 'يمكنك إرفاق مقالك بمستندات من الأنواع', |
|
| 411 | + 'info_joindre_document_rubrique' => 'يمكنك إضافة مستندات من الأنواع التالية إلى هذا القسم', |
|
| 412 | + 'info_joindre_documents_article' => 'يمكنك إرفاق مستندات من الأنواع التالية بمقالك :', |
|
| 413 | + 'info_l_article' => 'المقال', |
|
| 414 | + 'info_la_breve' => 'الخبر', |
|
| 415 | + 'info_la_rubrique' => 'القسم', |
|
| 416 | + 'info_langue_principale' => 'اللغة الأساسية للموقع', |
|
| 417 | + 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ نقطة', |
|
| 418 | + 'info_les_auteurs_1' => 'من @les_auteurs@', |
|
| 419 | + 'info_logo_format_interdit' => 'الرموز بتنسيق @formats@ هي الوحيدة المسموح بها.', |
|
| 420 | + 'info_logo_max_poids' => 'يجب ألا يتعدى حجم الرموز @maxi@ (يبلغ حجم الملف الحالي @actuel@). ', |
|
| 421 | + 'info_mail_fournisseur' => '[email protected]', |
|
| 422 | + 'info_message_2' => 'رسالة', |
|
| 423 | + 'info_message_supprime' => 'تم حذف المشاركة', |
|
| 424 | + 'info_messages_nb' => '@nb@ رسالة', |
|
| 425 | + 'info_messages_un' => 'رسالة واحدة', |
|
| 426 | + 'info_mise_en_ligne' => 'تاريخ النشر:', |
|
| 427 | + 'info_modification_parametres_securite' => 'تعديل إعدادات الأمان', |
|
| 428 | + 'info_mois_courant' => 'في بحر الشهر:', |
|
| 429 | + 'info_mot_cle_ajoute' => 'تمت إضافة المفتاح التالي إلى', |
|
| 430 | + 'info_multi_herit' => 'اللغة الافتراضية', |
|
| 431 | + 'info_multi_langues_soulignees' => '<u>اللغات التي تحتها خط</u> تتمتع بترجمة كاملة او جزئية لكل نصوص الواجهة. فإذا حددت هذه اللغات، سيتم ترجمة العديد من عناصر الموقع العمومي (التواريخ والاستمارات) آلياً. أما بالنسبة للغات التي ليس تحتها خط، فستظهر هذه العناصر في لغة الموقع الأساسية.', |
|
| 432 | + 'info_multilinguisme' => 'تعدد اللغات', |
|
| 433 | + 'info_nom_non_utilisateurs_connectes' => 'اسمك لا يظهر في قائمة المستخدمين المتصلين.', |
|
| 434 | + 'info_nom_utilisateurs_connectes' => 'اسمك يظهر في قائمة المستخدمين المتصلين.', |
|
| 435 | + 'info_nombre_en_ligne' => 'متصل حالياً:', |
|
| 436 | + 'info_non_resultat' => 'لا توجد نتائج لـ "@cherche_mot@"', |
|
| 437 | + 'info_non_utilisation_messagerie' => 'أنت لا تستخدم المراسلة الداخلية في هذا الموقع.', |
|
| 438 | + 'info_nouveau_message' => 'وصلت رسالة جديدة', |
|
| 439 | + 'info_nouveaux_messages' => 'وصلت @total_messages@ رسالة جديدة', |
|
| 440 | + 'info_numero_abbreviation' => 'رقم', |
|
| 441 | + 'info_obligatoire' => 'هذه المعلومة إجبارية', |
|
| 442 | + 'info_page_actuelle' => 'الصفحة الحالية', |
|
| 443 | + 'info_pense_bete' => 'مذكرة', |
|
| 444 | + 'info_petit_ecran' => 'شاشة صغيرة', |
|
| 445 | + 'info_petition_close' => 'عريضة مقفلة', |
|
| 446 | + 'info_pixels' => 'نقطة', |
|
| 447 | + 'info_plusieurs_mots_trouves' => 'تم العثور على عدة مفاتيح لـ "@cherche_mot@" :', |
|
| 448 | + 'info_portfolio_automatique' => 'محفظة آلية:', |
|
| 449 | + 'info_premier_resultat' => '[النتائج الـ@debut_limit@ الأولى من أصل @total@]', |
|
| 450 | + 'info_premier_resultat_sur' => '[النتائج الـ@debut_limit@ الأولى من أصل @total@]', |
|
| 451 | + 'info_propose_1' => '[@nom_site_spip@] يقترح: @titre@', |
|
| 452 | + 'info_propose_2' => 'مقال معروض |
|
| 453 | 453 | ----------', |
| 454 | - 'info_propose_3' => 'المقال "@titre@" معروض للنشر.', |
|
| 455 | - 'info_propose_4' => 'أنت مدعو لمراجعته وإبداء رأيك', |
|
| 456 | - 'info_propose_5' => 'في المنتدى المرتبط به. إنه موجود على العنوان:', |
|
| 457 | - 'info_publie_01' => 'تم التصديق على المقال "@titre@" من قبل @connect_nom@ .', |
|
| 458 | - 'info_publie_1' => '[@nom_site_spip@] ينشر: @titre@', |
|
| 459 | - 'info_publie_2' => 'مقال منشور |
|
| 454 | + 'info_propose_3' => 'المقال "@titre@" معروض للنشر.', |
|
| 455 | + 'info_propose_4' => 'أنت مدعو لمراجعته وإبداء رأيك', |
|
| 456 | + 'info_propose_5' => 'في المنتدى المرتبط به. إنه موجود على العنوان:', |
|
| 457 | + 'info_publie_01' => 'تم التصديق على المقال "@titre@" من قبل @connect_nom@ .', |
|
| 458 | + 'info_publie_1' => '[@nom_site_spip@] ينشر: @titre@', |
|
| 459 | + 'info_publie_2' => 'مقال منشور |
|
| 460 | 460 | ----------', |
| 461 | - 'info_rechercher' => 'بحث', |
|
| 462 | - 'info_rechercher_02' => 'بحث:', |
|
| 463 | - 'info_remplacer_vignette' => 'استبدال المصغر الافتراضي برمز شخصي:', |
|
| 464 | - 'info_rubriques_nb' => '@nb@ قسم', |
|
| 465 | - 'info_rubriques_un' => 'قسم واحد', |
|
| 466 | - 'info_sans_titre_2' => 'بدون عنوان', |
|
| 467 | - 'info_selectionner_fichier' => 'يمكنك تحديد ملف من المجلد @upload@:', |
|
| 468 | - 'info_selectionner_fichier_2' => 'تحديد ملف:', |
|
| 469 | - 'info_sites_nb' => '@nb@ موقع', |
|
| 470 | - 'info_sites_un' => 'موقع واحد', |
|
| 471 | - 'info_supprimer_vignette' => 'حذف المصغر', |
|
| 472 | - 'info_symbole_bleu' => 'الرمز <b>أزرق</b> يرمز إلى <b>مذكرة</b>: أي رسالة لاستخدامك الشخصي.', |
|
| 473 | - 'info_symbole_jaune' => 'الرمز <b>أصفر</b> يرمز إلى <b>إعلان لجميع المحررين</b>: يمكن لجميع المدراء تحريره وهو ظاهر لجميع المحررين.', |
|
| 474 | - 'info_symbole_vert' => 'الرمز <b>أخضر</b> يرمز إلى <b>الرسائل المتبادلة بين مستخدمي</b> الموقع.', |
|
| 475 | - 'info_telecharger_nouveau_logo' => 'تحميل رمز جديد:', |
|
| 476 | - 'info_telecharger_ordinateur' => 'تحميل من جهازك:', |
|
| 477 | - 'info_tous_resultats_enregistres' => '[تم تسجيل كل النتائج]', |
|
| 478 | - 'info_tout_afficher' => 'إظهار الكل', |
|
| 479 | - 'info_travaux_texte' => 'هذا الموقع قيد الإعداد. برجاء العودة في وقت لاحق...', |
|
| 480 | - 'info_travaux_titre' => 'موقع قيد التصميم', |
|
| 481 | - 'info_trop_resultat' => 'تم العثور على عدد كبير جداً من النتائج لـ "@cherche_mot@" ، الرجاء زيادة دقة البحث.', |
|
| 482 | - 'info_utilisation_messagerie_interne' => 'أنت تستخدم المراسلة الداخلية في هذا الموقع.', |
|
| 483 | - 'info_valider_lien' => 'التصديق على هذه الوصلة', |
|
| 484 | - 'info_verifier_image' => '، الرجاء التأكد من أنه تم نقل الصور بشكل سليم.', |
|
| 485 | - 'info_vignette_defaut' => 'المصغر الافتراضي', |
|
| 486 | - 'info_vignette_personnalisee' => 'مصغر شخصي', |
|
| 487 | - 'info_visite' => 'زيارة:', |
|
| 488 | - 'info_vos_rendez_vous' => 'مواعيدك القادمة', |
|
| 489 | - 'infos_vos_pense_bete' => 'مذكراتك', |
|
| 461 | + 'info_rechercher' => 'بحث', |
|
| 462 | + 'info_rechercher_02' => 'بحث:', |
|
| 463 | + 'info_remplacer_vignette' => 'استبدال المصغر الافتراضي برمز شخصي:', |
|
| 464 | + 'info_rubriques_nb' => '@nb@ قسم', |
|
| 465 | + 'info_rubriques_un' => 'قسم واحد', |
|
| 466 | + 'info_sans_titre_2' => 'بدون عنوان', |
|
| 467 | + 'info_selectionner_fichier' => 'يمكنك تحديد ملف من المجلد @upload@:', |
|
| 468 | + 'info_selectionner_fichier_2' => 'تحديد ملف:', |
|
| 469 | + 'info_sites_nb' => '@nb@ موقع', |
|
| 470 | + 'info_sites_un' => 'موقع واحد', |
|
| 471 | + 'info_supprimer_vignette' => 'حذف المصغر', |
|
| 472 | + 'info_symbole_bleu' => 'الرمز <b>أزرق</b> يرمز إلى <b>مذكرة</b>: أي رسالة لاستخدامك الشخصي.', |
|
| 473 | + 'info_symbole_jaune' => 'الرمز <b>أصفر</b> يرمز إلى <b>إعلان لجميع المحررين</b>: يمكن لجميع المدراء تحريره وهو ظاهر لجميع المحررين.', |
|
| 474 | + 'info_symbole_vert' => 'الرمز <b>أخضر</b> يرمز إلى <b>الرسائل المتبادلة بين مستخدمي</b> الموقع.', |
|
| 475 | + 'info_telecharger_nouveau_logo' => 'تحميل رمز جديد:', |
|
| 476 | + 'info_telecharger_ordinateur' => 'تحميل من جهازك:', |
|
| 477 | + 'info_tous_resultats_enregistres' => '[تم تسجيل كل النتائج]', |
|
| 478 | + 'info_tout_afficher' => 'إظهار الكل', |
|
| 479 | + 'info_travaux_texte' => 'هذا الموقع قيد الإعداد. برجاء العودة في وقت لاحق...', |
|
| 480 | + 'info_travaux_titre' => 'موقع قيد التصميم', |
|
| 481 | + 'info_trop_resultat' => 'تم العثور على عدد كبير جداً من النتائج لـ "@cherche_mot@" ، الرجاء زيادة دقة البحث.', |
|
| 482 | + 'info_utilisation_messagerie_interne' => 'أنت تستخدم المراسلة الداخلية في هذا الموقع.', |
|
| 483 | + 'info_valider_lien' => 'التصديق على هذه الوصلة', |
|
| 484 | + 'info_verifier_image' => '، الرجاء التأكد من أنه تم نقل الصور بشكل سليم.', |
|
| 485 | + 'info_vignette_defaut' => 'المصغر الافتراضي', |
|
| 486 | + 'info_vignette_personnalisee' => 'مصغر شخصي', |
|
| 487 | + 'info_visite' => 'زيارة:', |
|
| 488 | + 'info_vos_rendez_vous' => 'مواعيدك القادمة', |
|
| 489 | + 'infos_vos_pense_bete' => 'مذكراتك', |
|
| 490 | 490 | |
| 491 | - // L |
|
| 492 | - 'label_ajout_id_rapide' => 'إضافة سريعة', |
|
| 493 | - 'label_poids_fichier' => 'الحجم', |
|
| 494 | - 'label_ponctuer' => '@label@ :', |
|
| 495 | - 'lien_afficher_icones_seuls' => 'عرض الرموز فقط', |
|
| 496 | - 'lien_afficher_texte_icones' => 'عرض الرموز والعناوين', |
|
| 497 | - 'lien_afficher_texte_seul' => 'عرض العناوين فقط', |
|
| 498 | - 'lien_aller_a_la_derniere_page' => 'الذهاب الى الصفحة الأخيرة', |
|
| 499 | - 'lien_aller_a_la_page_nb' => 'الذهاب الى الصفحة @nb@', |
|
| 500 | - 'lien_aller_a_la_page_precedente' => 'الذهاب الى الصفحة الالسابقة', |
|
| 501 | - 'lien_aller_a_la_page_suivante' => 'الذهاب الى الصفحة التالية', |
|
| 502 | - 'lien_aller_a_la_premiere_page' => 'الذهاب الى الصفحة الأولى', |
|
| 503 | - 'lien_liberer' => 'فك الحجز', |
|
| 504 | - 'lien_liberer_tous' => 'فك حجز الكل', |
|
| 505 | - 'lien_nouvea_pense_bete' => 'مذكرة جديدة', |
|
| 506 | - 'lien_nouveau_message' => 'رسالة جديدة', |
|
| 507 | - 'lien_nouvelle_annonce' => 'إعلان جديد', |
|
| 508 | - 'lien_petitions' => 'عريضة', |
|
| 509 | - 'lien_popularite' => 'شعبية: @popularite@%', |
|
| 510 | - 'lien_racine_site' => 'أصل الموقع', |
|
| 511 | - 'lien_reessayer' => 'إعادة المحاولة', |
|
| 512 | - 'lien_repondre_message' => 'الرد على هذه المشاركة', |
|
| 513 | - 'lien_supprimer' => 'حذف', |
|
| 514 | - 'lien_tout_afficher' => 'إظهار الكل', |
|
| 515 | - 'lien_visite_site' => 'زيارة هذا الموقع', |
|
| 516 | - 'lien_visites' => '@visites@ زيارة', |
|
| 517 | - 'lien_voir_auteur' => 'مراجعة هذا المؤلف', |
|
| 518 | - 'ligne' => 'سطر', |
|
| 519 | - 'login' => 'الدخول', |
|
| 520 | - 'login_acces_prive' => 'الدخول إلى المجال الخاص', |
|
| 521 | - 'login_autre_identifiant' => 'الاتصال بمعرّف آخر', |
|
| 522 | - 'login_cookie_accepte' => 'الرجاء تهيئ برنامج التصفح ليتقبلها (من هذا الموقع على الأقل)', |
|
| 523 | - 'login_cookie_oblige' => 'للتعريف عن نفسك بشكل آمن في هذا الموقع، يجب قبول الكعكات (cookies).', |
|
| 524 | - 'login_deconnexion_ok' => 'تم قطع الاتصال.', |
|
| 525 | - 'login_erreur_pass' => 'خطأ في كلمة السر.', |
|
| 526 | - 'login_espace_prive' => 'المجال الخاص', |
|
| 527 | - 'login_identifiant_inconnu' => 'المعرّف «@login@» غير معروف.', |
|
| 528 | - 'login_login' => 'المعرّف:', |
|
| 529 | - 'login_login2' => 'المعرّف او عنوان البريد الالكتروني:', |
|
| 530 | - 'login_login_pass_incorrect' => '(خطأ في المعرّف أو كلمة السر).', |
|
| 531 | - 'login_motpasseoublie' => 'هل نسيت كلمة السر؟', |
|
| 532 | - 'login_non_securise' => 'لطفا، هذه الاستمارة غير آمنة. |
|
| 491 | + // L |
|
| 492 | + 'label_ajout_id_rapide' => 'إضافة سريعة', |
|
| 493 | + 'label_poids_fichier' => 'الحجم', |
|
| 494 | + 'label_ponctuer' => '@label@ :', |
|
| 495 | + 'lien_afficher_icones_seuls' => 'عرض الرموز فقط', |
|
| 496 | + 'lien_afficher_texte_icones' => 'عرض الرموز والعناوين', |
|
| 497 | + 'lien_afficher_texte_seul' => 'عرض العناوين فقط', |
|
| 498 | + 'lien_aller_a_la_derniere_page' => 'الذهاب الى الصفحة الأخيرة', |
|
| 499 | + 'lien_aller_a_la_page_nb' => 'الذهاب الى الصفحة @nb@', |
|
| 500 | + 'lien_aller_a_la_page_precedente' => 'الذهاب الى الصفحة الالسابقة', |
|
| 501 | + 'lien_aller_a_la_page_suivante' => 'الذهاب الى الصفحة التالية', |
|
| 502 | + 'lien_aller_a_la_premiere_page' => 'الذهاب الى الصفحة الأولى', |
|
| 503 | + 'lien_liberer' => 'فك الحجز', |
|
| 504 | + 'lien_liberer_tous' => 'فك حجز الكل', |
|
| 505 | + 'lien_nouvea_pense_bete' => 'مذكرة جديدة', |
|
| 506 | + 'lien_nouveau_message' => 'رسالة جديدة', |
|
| 507 | + 'lien_nouvelle_annonce' => 'إعلان جديد', |
|
| 508 | + 'lien_petitions' => 'عريضة', |
|
| 509 | + 'lien_popularite' => 'شعبية: @popularite@%', |
|
| 510 | + 'lien_racine_site' => 'أصل الموقع', |
|
| 511 | + 'lien_reessayer' => 'إعادة المحاولة', |
|
| 512 | + 'lien_repondre_message' => 'الرد على هذه المشاركة', |
|
| 513 | + 'lien_supprimer' => 'حذف', |
|
| 514 | + 'lien_tout_afficher' => 'إظهار الكل', |
|
| 515 | + 'lien_visite_site' => 'زيارة هذا الموقع', |
|
| 516 | + 'lien_visites' => '@visites@ زيارة', |
|
| 517 | + 'lien_voir_auteur' => 'مراجعة هذا المؤلف', |
|
| 518 | + 'ligne' => 'سطر', |
|
| 519 | + 'login' => 'الدخول', |
|
| 520 | + 'login_acces_prive' => 'الدخول إلى المجال الخاص', |
|
| 521 | + 'login_autre_identifiant' => 'الاتصال بمعرّف آخر', |
|
| 522 | + 'login_cookie_accepte' => 'الرجاء تهيئ برنامج التصفح ليتقبلها (من هذا الموقع على الأقل)', |
|
| 523 | + 'login_cookie_oblige' => 'للتعريف عن نفسك بشكل آمن في هذا الموقع، يجب قبول الكعكات (cookies).', |
|
| 524 | + 'login_deconnexion_ok' => 'تم قطع الاتصال.', |
|
| 525 | + 'login_erreur_pass' => 'خطأ في كلمة السر.', |
|
| 526 | + 'login_espace_prive' => 'المجال الخاص', |
|
| 527 | + 'login_identifiant_inconnu' => 'المعرّف «@login@» غير معروف.', |
|
| 528 | + 'login_login' => 'المعرّف:', |
|
| 529 | + 'login_login2' => 'المعرّف او عنوان البريد الالكتروني:', |
|
| 530 | + 'login_login_pass_incorrect' => '(خطأ في المعرّف أو كلمة السر).', |
|
| 531 | + 'login_motpasseoublie' => 'هل نسيت كلمة السر؟', |
|
| 532 | + 'login_non_securise' => 'لطفا، هذه الاستمارة غير آمنة. |
|
| 533 | 533 | إذا كنت ترغب أن تكون كلمة سرك |
| 534 | 534 | آمنة على الشبكة، يجب تفعيل جافاسكريبت |
| 535 | 535 | في برنامج التصفح', |
| 536 | - 'login_nouvelle_tentative' => 'محاولة جديدة', |
|
| 537 | - 'login_par_ici' => 'أنت مسجّل... توجه من هنا...', |
|
| 538 | - 'login_pass2' => 'كلمة السر:', |
|
| 539 | - 'login_preferez_refuser' => '<b>إذا كنت تفضل عدم قبول الكعكات</b>، يمكنك استخدام طريقة دخول أخرى (أقل أماناً):', |
|
| 540 | - 'login_recharger' => 'وإعادة تحميل الصفحة', |
|
| 541 | - 'login_rester_identifie' => 'تذكروني', |
|
| 542 | - 'login_retour_public' => 'عودة إلى الموقع العام', |
|
| 543 | - 'login_retour_site' => 'عودة إلى الموقع العام', |
|
| 544 | - 'login_retoursitepublic' => 'عودة إلى الموقع العام', |
|
| 545 | - 'login_sans_cookie' => 'تعريف بدون الكعكة', |
|
| 546 | - 'login_securise' => 'تعريف مؤمّن', |
|
| 547 | - 'login_sinscrire' => 'تسجيل', |
|
| 548 | - 'login_test_navigateur' => 'تجربة المتصفح/إعادة الاتصال', |
|
| 549 | - 'login_verifiez_navigateur' => '(على أي حال، تأكد من أن المتصفح لم يقم بحفظ كلمة سرك...)', |
|
| 536 | + 'login_nouvelle_tentative' => 'محاولة جديدة', |
|
| 537 | + 'login_par_ici' => 'أنت مسجّل... توجه من هنا...', |
|
| 538 | + 'login_pass2' => 'كلمة السر:', |
|
| 539 | + 'login_preferez_refuser' => '<b>إذا كنت تفضل عدم قبول الكعكات</b>، يمكنك استخدام طريقة دخول أخرى (أقل أماناً):', |
|
| 540 | + 'login_recharger' => 'وإعادة تحميل الصفحة', |
|
| 541 | + 'login_rester_identifie' => 'تذكروني', |
|
| 542 | + 'login_retour_public' => 'عودة إلى الموقع العام', |
|
| 543 | + 'login_retour_site' => 'عودة إلى الموقع العام', |
|
| 544 | + 'login_retoursitepublic' => 'عودة إلى الموقع العام', |
|
| 545 | + 'login_sans_cookie' => 'تعريف بدون الكعكة', |
|
| 546 | + 'login_securise' => 'تعريف مؤمّن', |
|
| 547 | + 'login_sinscrire' => 'تسجيل', |
|
| 548 | + 'login_test_navigateur' => 'تجربة المتصفح/إعادة الاتصال', |
|
| 549 | + 'login_verifiez_navigateur' => '(على أي حال، تأكد من أن المتصفح لم يقم بحفظ كلمة سرك...)', |
|
| 550 | 550 | |
| 551 | - // M |
|
| 552 | - 'masquer_colonne' => 'حجب هذا العمود', |
|
| 553 | - 'masquer_trad' => 'حجب الترجمات', |
|
| 554 | - 'message_nouveaux_identifiants_echec' => 'لا يمكن إنشاء معرف وكلمة سر جديدين.', |
|
| 555 | - 'message_nouveaux_identifiants_echec_envoi' => 'مشكلة في إرسال المعرف وكلمة السر الجديدين.', |
|
| 556 | - 'message_nouveaux_identifiants_ok' => 'تم إرسال المعرف وكلمة السر الجديدين الى @email@.', |
|
| 557 | - 'module_fichiers_langues' => 'ملفات اللغة', |
|
| 551 | + // M |
|
| 552 | + 'masquer_colonne' => 'حجب هذا العمود', |
|
| 553 | + 'masquer_trad' => 'حجب الترجمات', |
|
| 554 | + 'message_nouveaux_identifiants_echec' => 'لا يمكن إنشاء معرف وكلمة سر جديدين.', |
|
| 555 | + 'message_nouveaux_identifiants_echec_envoi' => 'مشكلة في إرسال المعرف وكلمة السر الجديدين.', |
|
| 556 | + 'message_nouveaux_identifiants_ok' => 'تم إرسال المعرف وكلمة السر الجديدين الى @email@.', |
|
| 557 | + 'module_fichiers_langues' => 'ملفات اللغة', |
|
| 558 | 558 | |
| 559 | - // N |
|
| 560 | - 'navigateur_pas_redirige' => 'إذا لم تتم إعادة توجيه متصفحك، انقر هنا للمتابعة.', |
|
| 561 | - 'numero' => 'رقم', |
|
| 559 | + // N |
|
| 560 | + 'navigateur_pas_redirige' => 'إذا لم تتم إعادة توجيه متصفحك، انقر هنا للمتابعة.', |
|
| 561 | + 'numero' => 'رقم', |
|
| 562 | 562 | |
| 563 | - // O |
|
| 564 | - 'occurence' => 'ظهور', |
|
| 565 | - 'onglet_affacer_base' => 'حذف قاعدة البيانات', |
|
| 566 | - 'onglet_auteur' => 'المؤلف', |
|
| 567 | - 'onglet_contenu_site' => 'محتوى الموقع', |
|
| 568 | - 'onglet_evolution_visite_mod' => 'تطور', |
|
| 569 | - 'onglet_fonctions_avances' => 'الوظائف المتطورة', |
|
| 570 | - 'onglet_informations_personnelles' => 'المعلومات الشخصية', |
|
| 571 | - 'onglet_interactivite' => 'التفاعلية', |
|
| 572 | - 'onglet_messagerie' => 'المراسلة', |
|
| 573 | - 'onglet_repartition_rubrique' => 'التوزيع حسب الأقسام', |
|
| 574 | - 'onglet_save_restaur_base' => 'نسخ احتياطي / استرجاع القاعدة', |
|
| 575 | - 'onglet_vider_cache' => 'تفريغ الذاكرة المخبأة', |
|
| 563 | + // O |
|
| 564 | + 'occurence' => 'ظهور', |
|
| 565 | + 'onglet_affacer_base' => 'حذف قاعدة البيانات', |
|
| 566 | + 'onglet_auteur' => 'المؤلف', |
|
| 567 | + 'onglet_contenu_site' => 'محتوى الموقع', |
|
| 568 | + 'onglet_evolution_visite_mod' => 'تطور', |
|
| 569 | + 'onglet_fonctions_avances' => 'الوظائف المتطورة', |
|
| 570 | + 'onglet_informations_personnelles' => 'المعلومات الشخصية', |
|
| 571 | + 'onglet_interactivite' => 'التفاعلية', |
|
| 572 | + 'onglet_messagerie' => 'المراسلة', |
|
| 573 | + 'onglet_repartition_rubrique' => 'التوزيع حسب الأقسام', |
|
| 574 | + 'onglet_save_restaur_base' => 'نسخ احتياطي / استرجاع القاعدة', |
|
| 575 | + 'onglet_vider_cache' => 'تفريغ الذاكرة المخبأة', |
|
| 576 | 576 | |
| 577 | - // P |
|
| 578 | - 'pass_choix_pass' => 'الرجاء اختيار كلمة السر الجديدة:', |
|
| 579 | - 'pass_erreur' => 'خطأ', |
|
| 580 | - 'pass_erreur_acces_refuse' => '<b>خطأ:< b> لم تعد تملك حق الدخول إلى هذا الموقع.', |
|
| 581 | - 'pass_erreur_code_inconnu' => '<b>خطأ:< b> هذا المعرّف لا يتناسب مع أي من الزوار الذين يتمتعون بحق الدخول إلى هذا الموقع.', |
|
| 582 | - 'pass_erreur_non_enregistre' => '<b>خطأ:< b> العنوان <tt>@email_oubli@</tt> ليس مسجلاً في هذا الموقع.', |
|
| 583 | - 'pass_erreur_non_valide' => '<b>خطأ:< b> العنوان <tt>@email_oubli@</tt> ليس صالحاً.', |
|
| 584 | - 'pass_erreur_probleme_technique' => '<b>خطأ:< b> لم يتم بعث هذه الرسالة بسبب مشكلة تقنية.', |
|
| 585 | - 'pass_espace_prive_bla' => 'المجال الخاص لهذا الموقع مفتوح |
|
| 577 | + // P |
|
| 578 | + 'pass_choix_pass' => 'الرجاء اختيار كلمة السر الجديدة:', |
|
| 579 | + 'pass_erreur' => 'خطأ', |
|
| 580 | + 'pass_erreur_acces_refuse' => '<b>خطأ:< b> لم تعد تملك حق الدخول إلى هذا الموقع.', |
|
| 581 | + 'pass_erreur_code_inconnu' => '<b>خطأ:< b> هذا المعرّف لا يتناسب مع أي من الزوار الذين يتمتعون بحق الدخول إلى هذا الموقع.', |
|
| 582 | + 'pass_erreur_non_enregistre' => '<b>خطأ:< b> العنوان <tt>@email_oubli@</tt> ليس مسجلاً في هذا الموقع.', |
|
| 583 | + 'pass_erreur_non_valide' => '<b>خطأ:< b> العنوان <tt>@email_oubli@</tt> ليس صالحاً.', |
|
| 584 | + 'pass_erreur_probleme_technique' => '<b>خطأ:< b> لم يتم بعث هذه الرسالة بسبب مشكلة تقنية.', |
|
| 585 | + 'pass_espace_prive_bla' => 'المجال الخاص لهذا الموقع مفتوح |
|
| 586 | 586 | للزوار بعد تسجيلهم. بعد تسجيلك |
| 587 | 587 | يمكنك مراجعة المقالات قيد التحرير |
| 588 | 588 | واقتراح مقالات والمشاركة في كل المنتديات.', |
| 589 | - 'pass_forum_bla' => 'طلبت المشاركة في منتدى |
|
| 589 | + 'pass_forum_bla' => 'طلبت المشاركة في منتدى |
|
| 590 | 590 | محصور بالزوار المسجلين.', |
| 591 | - 'pass_indiquez_cidessous' => 'قم بإدخال العنوان الإلكتروني الذي |
|
| 591 | + 'pass_indiquez_cidessous' => 'قم بإدخال العنوان الإلكتروني الذي |
|
| 592 | 592 | تسجلت بواستطه سابقاً. |
| 593 | 593 | ستحصل على رسالة تفسر لك كيفية |
| 594 | 594 | استعادة دخولك.', |
| 595 | - 'pass_mail_passcookie' => '(هذه رسالة آلية) |
|
| 595 | + 'pass_mail_passcookie' => '(هذه رسالة آلية) |
|
| 596 | 596 | لاستعادة دخولك إلى الموقع |
| 597 | 597 | @nom_site_spip@ (@adresse_site@) |
| 598 | 598 | |
@@ -604,146 +604,146 @@ discard block |
||
| 604 | 604 | وإعادة الاتصال بالموقع. |
| 605 | 605 | |
| 606 | 606 | ', |
| 607 | - 'pass_mot_oublie' => 'نسيان كلمة السر', |
|
| 608 | - 'pass_nouveau_enregistre' => 'تم تسجيل كلمة سرك الجديدة.', |
|
| 609 | - 'pass_nouveau_pass' => 'كلمة السر الجديدة', |
|
| 610 | - 'pass_ok' => 'موافق', |
|
| 611 | - 'pass_oubli_mot' => 'نسيان كلمة السر', |
|
| 612 | - 'pass_procedure_changer' => 'من أجل تغيير كلمة السر، قم بأدخال عنوان البريد الالكتروني المرتبط بحسابك.', |
|
| 613 | - 'pass_quitter_fenetre' => 'إقفال هذه النافذة', |
|
| 614 | - 'pass_rappel_login' => 'تذكير: معرّفك هو «@login@».', |
|
| 615 | - 'pass_recevoir_mail' => 'تم ارسال رابط لإعادة تأصيل كلمة السر الى عنوان البريد لديك (اذا كان صالحاً).', |
|
| 616 | - 'pass_retour_public' => 'عودة إلى الموقع العام', |
|
| 617 | - 'pass_rien_a_faire_ici' => 'لا شغل لك هنا.', |
|
| 618 | - 'pass_vousinscrire' => 'تسجيلك في الموقع', |
|
| 619 | - 'precedent' => 'السابق', |
|
| 620 | - 'previsualisation' => 'عرض مسبق', |
|
| 621 | - 'previsualiser' => 'عرض مسبق', |
|
| 607 | + 'pass_mot_oublie' => 'نسيان كلمة السر', |
|
| 608 | + 'pass_nouveau_enregistre' => 'تم تسجيل كلمة سرك الجديدة.', |
|
| 609 | + 'pass_nouveau_pass' => 'كلمة السر الجديدة', |
|
| 610 | + 'pass_ok' => 'موافق', |
|
| 611 | + 'pass_oubli_mot' => 'نسيان كلمة السر', |
|
| 612 | + 'pass_procedure_changer' => 'من أجل تغيير كلمة السر، قم بأدخال عنوان البريد الالكتروني المرتبط بحسابك.', |
|
| 613 | + 'pass_quitter_fenetre' => 'إقفال هذه النافذة', |
|
| 614 | + 'pass_rappel_login' => 'تذكير: معرّفك هو «@login@».', |
|
| 615 | + 'pass_recevoir_mail' => 'تم ارسال رابط لإعادة تأصيل كلمة السر الى عنوان البريد لديك (اذا كان صالحاً).', |
|
| 616 | + 'pass_retour_public' => 'عودة إلى الموقع العام', |
|
| 617 | + 'pass_rien_a_faire_ici' => 'لا شغل لك هنا.', |
|
| 618 | + 'pass_vousinscrire' => 'تسجيلك في الموقع', |
|
| 619 | + 'precedent' => 'السابق', |
|
| 620 | + 'previsualisation' => 'عرض مسبق', |
|
| 621 | + 'previsualiser' => 'عرض مسبق', |
|
| 622 | 622 | |
| 623 | - // R |
|
| 624 | - 'retour' => 'عودة', |
|
| 623 | + // R |
|
| 624 | + 'retour' => 'عودة', |
|
| 625 | 625 | |
| 626 | - // S |
|
| 627 | - 'spip_conforme_dtd' => 'يعتبر SPIP أن هذا المستند مطابق لتحديد DOCTYPE:', |
|
| 628 | - 'squelette' => 'صفحة نموذجية', |
|
| 629 | - 'squelette_inclus_ligne' => 'صفحة نموذجية مدمجة، سطر', |
|
| 630 | - 'squelette_ligne' => 'صفحة نموذجية، سطر', |
|
| 631 | - 'stats_visites_et_popularite' => '@visites@ زيارة؛ شعبية: @popularite@', |
|
| 632 | - 'suivant' => 'التالي', |
|
| 626 | + // S |
|
| 627 | + 'spip_conforme_dtd' => 'يعتبر SPIP أن هذا المستند مطابق لتحديد DOCTYPE:', |
|
| 628 | + 'squelette' => 'صفحة نموذجية', |
|
| 629 | + 'squelette_inclus_ligne' => 'صفحة نموذجية مدمجة، سطر', |
|
| 630 | + 'squelette_ligne' => 'صفحة نموذجية، سطر', |
|
| 631 | + 'stats_visites_et_popularite' => '@visites@ زيارة؛ شعبية: @popularite@', |
|
| 632 | + 'suivant' => 'التالي', |
|
| 633 | 633 | |
| 634 | - // T |
|
| 635 | - 'taille_go' => '@taille@ غيغابايت', |
|
| 636 | - 'taille_ko' => '@taille@ كيلوبايت', |
|
| 637 | - 'taille_mo' => '@taille@ ميغابايت', |
|
| 638 | - 'taille_octets' => '@taille@ بايت', |
|
| 639 | - 'texte_actualite_site_1' => 'عندما تتأقلم مع واجهة النظام انقر على «', |
|
| 640 | - 'texte_actualite_site_2' => 'الواجهة الكاملة', |
|
| 641 | - 'texte_actualite_site_3' => '» لإتاحة المزيد من الوظائف.', |
|
| 642 | - 'texte_creation_automatique_vignette' => 'لقد تم تفعيل الإنشاء الآلي لمصغرات المعاينة. إذا استخدمت هذه الاستمارة لإدخال صور بتنسيق (أو تنسيقات) @gd_formats@، سيتم تزويدها بمصغر لا يزيد حجمه عن @taille_preview@ نقطة. ', |
|
| 643 | - 'texte_documents_associes' => 'المستندات التالية ترافق المقال، |
|
| 634 | + // T |
|
| 635 | + 'taille_go' => '@taille@ غيغابايت', |
|
| 636 | + 'taille_ko' => '@taille@ كيلوبايت', |
|
| 637 | + 'taille_mo' => '@taille@ ميغابايت', |
|
| 638 | + 'taille_octets' => '@taille@ بايت', |
|
| 639 | + 'texte_actualite_site_1' => 'عندما تتأقلم مع واجهة النظام انقر على «', |
|
| 640 | + 'texte_actualite_site_2' => 'الواجهة الكاملة', |
|
| 641 | + 'texte_actualite_site_3' => '» لإتاحة المزيد من الوظائف.', |
|
| 642 | + 'texte_creation_automatique_vignette' => 'لقد تم تفعيل الإنشاء الآلي لمصغرات المعاينة. إذا استخدمت هذه الاستمارة لإدخال صور بتنسيق (أو تنسيقات) @gd_formats@، سيتم تزويدها بمصغر لا يزيد حجمه عن @taille_preview@ نقطة. ', |
|
| 643 | + 'texte_documents_associes' => 'المستندات التالية ترافق المقال، |
|
| 644 | 644 | لكنها لم تُدرج |
| 645 | 645 | مباشرة. بالاعتماد على تصميم الموقع العمومي، |
| 646 | 646 | قد تظهر على شكل مستندات مرفقة.', |
| 647 | - 'texte_erreur_mise_niveau_base' => 'خطأ في قاعدة البيانات خلال الترقية. |
|
| 647 | + 'texte_erreur_mise_niveau_base' => 'خطأ في قاعدة البيانات خلال الترقية. |
|
| 648 | 648 | تعذر تمرير الصورة <b>@fichier@</b> (المقال @id_article@). |
| 649 | 649 | سجل هذا المرجع وحاول إعادة عملية |
| 650 | 650 | الترقية، وأخيراً تأكد من أن الصور لا تزال تظهر |
| 651 | 651 | في المقالات.', |
| 652 | - 'texte_erreur_visiteur' => 'حاولت الدخول إلى المجال الخاص بمعرّف لا يسمح بذلك.', |
|
| 653 | - 'texte_inc_auth_1' => 'عرّفت عن نفسك |
|
| 652 | + 'texte_erreur_visiteur' => 'حاولت الدخول إلى المجال الخاص بمعرّف لا يسمح بذلك.', |
|
| 653 | + 'texte_inc_auth_1' => 'عرّفت عن نفسك |
|
| 654 | 654 | بالمعرّف <b>@auth_login@</b>، لكنه غير (لم يعد) موجود في قاعدة البيانات. |
| 655 | 655 | حاول ', |
| 656 | - 'texte_inc_auth_2' => 'إعادة الاتصال', |
|
| 657 | - 'texte_inc_auth_3' => '، بعد إنهاء المتصفح ثم |
|
| 656 | + 'texte_inc_auth_2' => 'إعادة الاتصال', |
|
| 657 | + 'texte_inc_auth_3' => '، بعد إنهاء المتصفح ثم |
|
| 658 | 658 | إعادة تشغيله إذا اقتضت الحاجة.', |
| 659 | - 'texte_inc_config' => 'التغييرات الداخلة على هذه الصفحة تؤثر بشكل ملحوظ على |
|
| 659 | + 'texte_inc_config' => 'التغييرات الداخلة على هذه الصفحة تؤثر بشكل ملحوظ على |
|
| 660 | 660 | تشغيل الموقع. يستحسن عدم إدخال تغييرات قبل |
| 661 | 661 | التأقلم مع نظام SPIP للنشر. <br /><br /><b>بشكل |
| 662 | 662 | عام، ننصحك |
| 663 | 663 | بحصر التعامل مع هذه الصفحات بالمسؤول الأساسي عن تصميم الموقع.</b>', |
| 664 | - 'texte_inc_meta_1' => 'واجه النظام خطأً خلال كتابة الملف <code>@fichier@</code>. بصفتك أحد مدراء الموقع، الرجاء', |
|
| 665 | - 'texte_inc_meta_2' => 'التأكد من حقوق الكتابة', |
|
| 666 | - 'texte_inc_meta_3' => 'الخاصة بالدليل <code>@repertoire@</code>. ', |
|
| 667 | - 'texte_statut_en_cours_redaction' => 'قيد التحرير', |
|
| 668 | - 'texte_statut_poubelle' => 'إلى المهملات', |
|
| 669 | - 'texte_statut_propose_evaluation' => 'معروض للتقييم', |
|
| 670 | - 'texte_statut_publie' => 'منشور', |
|
| 671 | - 'texte_statut_refuse' => 'مرفوض', |
|
| 672 | - 'titre_ajouter_mot_cle' => 'إضافة مفتاح:', |
|
| 673 | - 'titre_cadre_raccourcis' => 'اختصارات:', |
|
| 674 | - 'titre_changer_couleur_interface' => 'تغيير لون الواجهة', |
|
| 675 | - 'titre_image_admin_article' => 'أنت مخول إدارة هذا المقال', |
|
| 676 | - 'titre_image_administrateur' => 'مدير', |
|
| 677 | - 'titre_image_aide' => 'تعليمات حول هذا العنصر', |
|
| 678 | - 'titre_image_auteur_supprime' => 'مؤلف محذوف', |
|
| 679 | - 'titre_image_redacteur' => 'محرر دون إذن دخول', |
|
| 680 | - 'titre_image_redacteur_02' => 'محرر', |
|
| 681 | - 'titre_image_selecteur' => 'عرض القائمة', |
|
| 682 | - 'titre_image_visiteur' => 'زائر', |
|
| 683 | - 'titre_joindre_document' => 'إرفاق مستند', |
|
| 684 | - 'titre_mots_cles' => 'المفاتيح', |
|
| 685 | - 'titre_probleme_technique' => 'تحذير: مشكلة تقنية (خادم SQL) تمنع الدخول إلى هذا الجزء من الموقع. شكراً على تفهمكم.', |
|
| 686 | - 'titre_publier_document' => 'نشر مستند في هذا القسم', |
|
| 687 | - 'titre_signatures_attente' => 'تواقيع بانتظار التصديق', |
|
| 688 | - 'titre_signatures_confirmees' => 'توقيعات مصدّقة', |
|
| 689 | - 'titre_statistiques' => 'إحصاءات الموقع', |
|
| 690 | - 'titre_titre_document' => 'اسم المستند: ', |
|
| 691 | - 'todo' => 'قريباً', |
|
| 692 | - 'trad_definir_reference' => 'اختيار "@titre@" كمرجع للترجمات', |
|
| 693 | - 'trad_reference' => '(مرجع الترجمات)', |
|
| 664 | + 'texte_inc_meta_1' => 'واجه النظام خطأً خلال كتابة الملف <code>@fichier@</code>. بصفتك أحد مدراء الموقع، الرجاء', |
|
| 665 | + 'texte_inc_meta_2' => 'التأكد من حقوق الكتابة', |
|
| 666 | + 'texte_inc_meta_3' => 'الخاصة بالدليل <code>@repertoire@</code>. ', |
|
| 667 | + 'texte_statut_en_cours_redaction' => 'قيد التحرير', |
|
| 668 | + 'texte_statut_poubelle' => 'إلى المهملات', |
|
| 669 | + 'texte_statut_propose_evaluation' => 'معروض للتقييم', |
|
| 670 | + 'texte_statut_publie' => 'منشور', |
|
| 671 | + 'texte_statut_refuse' => 'مرفوض', |
|
| 672 | + 'titre_ajouter_mot_cle' => 'إضافة مفتاح:', |
|
| 673 | + 'titre_cadre_raccourcis' => 'اختصارات:', |
|
| 674 | + 'titre_changer_couleur_interface' => 'تغيير لون الواجهة', |
|
| 675 | + 'titre_image_admin_article' => 'أنت مخول إدارة هذا المقال', |
|
| 676 | + 'titre_image_administrateur' => 'مدير', |
|
| 677 | + 'titre_image_aide' => 'تعليمات حول هذا العنصر', |
|
| 678 | + 'titre_image_auteur_supprime' => 'مؤلف محذوف', |
|
| 679 | + 'titre_image_redacteur' => 'محرر دون إذن دخول', |
|
| 680 | + 'titre_image_redacteur_02' => 'محرر', |
|
| 681 | + 'titre_image_selecteur' => 'عرض القائمة', |
|
| 682 | + 'titre_image_visiteur' => 'زائر', |
|
| 683 | + 'titre_joindre_document' => 'إرفاق مستند', |
|
| 684 | + 'titre_mots_cles' => 'المفاتيح', |
|
| 685 | + 'titre_probleme_technique' => 'تحذير: مشكلة تقنية (خادم SQL) تمنع الدخول إلى هذا الجزء من الموقع. شكراً على تفهمكم.', |
|
| 686 | + 'titre_publier_document' => 'نشر مستند في هذا القسم', |
|
| 687 | + 'titre_signatures_attente' => 'تواقيع بانتظار التصديق', |
|
| 688 | + 'titre_signatures_confirmees' => 'توقيعات مصدّقة', |
|
| 689 | + 'titre_statistiques' => 'إحصاءات الموقع', |
|
| 690 | + 'titre_titre_document' => 'اسم المستند: ', |
|
| 691 | + 'todo' => 'قريباً', |
|
| 692 | + 'trad_definir_reference' => 'اختيار "@titre@" كمرجع للترجمات', |
|
| 693 | + 'trad_reference' => '(مرجع الترجمات)', |
|
| 694 | 694 | |
| 695 | - // U |
|
| 696 | - 'upload_limit' => 'حجم هذا الملف أكبر مما يتحمل جهاز الخدمة: الحجم الأقصى المسموح به <b>للتنزيل</b> هو @max@.', |
|
| 695 | + // U |
|
| 696 | + 'upload_limit' => 'حجم هذا الملف أكبر مما يتحمل جهاز الخدمة: الحجم الأقصى المسموح به <b>للتنزيل</b> هو @max@.', |
|
| 697 | 697 | |
| 698 | - // Z |
|
| 699 | - 'zbug_balise_b_aval' => ': العلامة B متأخرة', |
|
| 700 | - 'zbug_balise_inexistante' => 'خطأ في الاعلان عن العلامة @balise@ لـ@from@', |
|
| 701 | - 'zbug_balise_sans_argument' => 'عامل غير موجود في علامة @balise@', |
|
| 702 | - 'zbug_boucle' => 'حلقة', |
|
| 703 | - 'zbug_boucle_recursive_undef' => 'حلقة دورية غير معرّفة: @nom@', |
|
| 704 | - 'zbug_calcul' => 'حساب', |
|
| 705 | - 'zbug_champ_hors_boucle' => 'الحقل @champ@ خارج الحلقة', |
|
| 706 | - 'zbug_champ_hors_critere' => 'الحقل @champ@ خارج المقياس @critere@', |
|
| 707 | - 'zbug_champ_hors_motif' => 'الحقل @champ@ خارج سياق @motif@', |
|
| 708 | - 'zbug_code' => 'الرموز البرمجية', |
|
| 709 | - 'zbug_critere_inconnu' => 'معيار غير معروف @critere@', |
|
| 710 | - 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} على جدول دون مفتاح اساسي افرادي', |
|
| 711 | - 'zbug_distant_interdit' => 'عملية خارجية ممنوعة', |
|
| 712 | - 'zbug_doublon_table_sans_cle_primaire' => 'قيمة مكررة في جدول لا يملك مفتاح أساسي', |
|
| 713 | - 'zbug_doublon_table_sans_index' => 'تكرار في جدول غير مفهرس', |
|
| 714 | - 'zbug_erreur_boucle_double' => 'تعريف متكرر للحلقة @id@', |
|
| 715 | - 'zbug_erreur_boucle_fermant' => 'علامة إغلاق غائبة في حلقة @id@', |
|
| 716 | - 'zbug_erreur_boucle_syntaxe' => 'تركيب حلقة @id@ غير صحيح', |
|
| 717 | - 'zbug_erreur_compilation' => 'خطأ تصنيف', |
|
| 718 | - 'zbug_erreur_execution_page' => 'خطأ في التنفيذ', |
|
| 719 | - 'zbug_erreur_filtre' => 'المرشح @filtre@ غير معرّف ', |
|
| 720 | - 'zbug_erreur_filtre_nbarg_min' => 'المرشح @filtre@ : ينقص @nb@ عامل', |
|
| 721 | - 'zbug_erreur_meme_parent' => 'لا ينطبق معيار {meme_parent} إلا على حلقتي (FORUMS) أو (RUBRIQUES)', |
|
| 722 | - 'zbug_erreur_squelette' => 'خطأ في الصفحة النموذجية', |
|
| 723 | - 'zbug_hors_compilation' => 'خارج التصنيف', |
|
| 724 | - 'zbug_info_erreur_squelette' => 'خطأ في الموفع', |
|
| 725 | - 'zbug_inversion_ordre_inexistant' => 'عكس ترتيب غير موجود أصلاً', |
|
| 726 | - 'zbug_pagination_sans_critere' => 'علامة PAGINATION# بدون معيار {pagination} أو مستخدمة في حلقة دورية', |
|
| 727 | - 'zbug_parametres_inclus_incorrects' => 'عامل إدراج غير صحيحة: @param@', |
|
| 728 | - 'zbug_profile' => 'فترة المعالجة: @time@', |
|
| 729 | - 'zbug_resultat' => 'النتيجة', |
|
| 730 | - 'zbug_serveur_indefini' => 'خادم SQL غير محدد', |
|
| 731 | - 'zbug_statistiques' => 'احصاءات استفسارات SQL مرتبة حسب المدة', |
|
| 732 | - 'zbug_table_inconnue' => 'جدول SQL هو «@table@» غير معروف', |
|
| 733 | - 'zxml_connus_attributs' => 'خاصيات معروفة', |
|
| 734 | - 'zxml_de' => 'من', |
|
| 735 | - 'zxml_inconnu_attribut' => 'خاصية غير معروفة', |
|
| 736 | - 'zxml_inconnu_balise' => 'علامة غير معروفة', |
|
| 737 | - 'zxml_inconnu_entite' => 'كائن غير معروف', |
|
| 738 | - 'zxml_inconnu_id' => 'هوية ID غير معروفة', |
|
| 739 | - 'zxml_mais_de' => 'لكن من', |
|
| 740 | - 'zxml_non_conforme' => 'غير مطابق للشكل', |
|
| 741 | - 'zxml_non_fils' => 'ليس من سلالة', |
|
| 742 | - 'zxml_nonvide_balise' => 'علامة غير فارغة', |
|
| 743 | - 'zxml_obligatoire_attribut' => 'خاصية إجبارية لكنها غير موجودة في', |
|
| 744 | - 'zxml_succession_fils_incorrecte' => 'تتابع سلالات غير سليم', |
|
| 745 | - 'zxml_survoler' => 'الحوم لعرض الصحيح', |
|
| 746 | - 'zxml_valeur_attribut' => 'قيمة الخاصية', |
|
| 747 | - 'zxml_vide_balise' => 'علامة فارغة', |
|
| 748 | - 'zxml_vu' => 'ظهر مسبقاً' |
|
| 698 | + // Z |
|
| 699 | + 'zbug_balise_b_aval' => ': العلامة B متأخرة', |
|
| 700 | + 'zbug_balise_inexistante' => 'خطأ في الاعلان عن العلامة @balise@ لـ@from@', |
|
| 701 | + 'zbug_balise_sans_argument' => 'عامل غير موجود في علامة @balise@', |
|
| 702 | + 'zbug_boucle' => 'حلقة', |
|
| 703 | + 'zbug_boucle_recursive_undef' => 'حلقة دورية غير معرّفة: @nom@', |
|
| 704 | + 'zbug_calcul' => 'حساب', |
|
| 705 | + 'zbug_champ_hors_boucle' => 'الحقل @champ@ خارج الحلقة', |
|
| 706 | + 'zbug_champ_hors_critere' => 'الحقل @champ@ خارج المقياس @critere@', |
|
| 707 | + 'zbug_champ_hors_motif' => 'الحقل @champ@ خارج سياق @motif@', |
|
| 708 | + 'zbug_code' => 'الرموز البرمجية', |
|
| 709 | + 'zbug_critere_inconnu' => 'معيار غير معروف @critere@', |
|
| 710 | + 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} على جدول دون مفتاح اساسي افرادي', |
|
| 711 | + 'zbug_distant_interdit' => 'عملية خارجية ممنوعة', |
|
| 712 | + 'zbug_doublon_table_sans_cle_primaire' => 'قيمة مكررة في جدول لا يملك مفتاح أساسي', |
|
| 713 | + 'zbug_doublon_table_sans_index' => 'تكرار في جدول غير مفهرس', |
|
| 714 | + 'zbug_erreur_boucle_double' => 'تعريف متكرر للحلقة @id@', |
|
| 715 | + 'zbug_erreur_boucle_fermant' => 'علامة إغلاق غائبة في حلقة @id@', |
|
| 716 | + 'zbug_erreur_boucle_syntaxe' => 'تركيب حلقة @id@ غير صحيح', |
|
| 717 | + 'zbug_erreur_compilation' => 'خطأ تصنيف', |
|
| 718 | + 'zbug_erreur_execution_page' => 'خطأ في التنفيذ', |
|
| 719 | + 'zbug_erreur_filtre' => 'المرشح @filtre@ غير معرّف ', |
|
| 720 | + 'zbug_erreur_filtre_nbarg_min' => 'المرشح @filtre@ : ينقص @nb@ عامل', |
|
| 721 | + 'zbug_erreur_meme_parent' => 'لا ينطبق معيار {meme_parent} إلا على حلقتي (FORUMS) أو (RUBRIQUES)', |
|
| 722 | + 'zbug_erreur_squelette' => 'خطأ في الصفحة النموذجية', |
|
| 723 | + 'zbug_hors_compilation' => 'خارج التصنيف', |
|
| 724 | + 'zbug_info_erreur_squelette' => 'خطأ في الموفع', |
|
| 725 | + 'zbug_inversion_ordre_inexistant' => 'عكس ترتيب غير موجود أصلاً', |
|
| 726 | + 'zbug_pagination_sans_critere' => 'علامة PAGINATION# بدون معيار {pagination} أو مستخدمة في حلقة دورية', |
|
| 727 | + 'zbug_parametres_inclus_incorrects' => 'عامل إدراج غير صحيحة: @param@', |
|
| 728 | + 'zbug_profile' => 'فترة المعالجة: @time@', |
|
| 729 | + 'zbug_resultat' => 'النتيجة', |
|
| 730 | + 'zbug_serveur_indefini' => 'خادم SQL غير محدد', |
|
| 731 | + 'zbug_statistiques' => 'احصاءات استفسارات SQL مرتبة حسب المدة', |
|
| 732 | + 'zbug_table_inconnue' => 'جدول SQL هو «@table@» غير معروف', |
|
| 733 | + 'zxml_connus_attributs' => 'خاصيات معروفة', |
|
| 734 | + 'zxml_de' => 'من', |
|
| 735 | + 'zxml_inconnu_attribut' => 'خاصية غير معروفة', |
|
| 736 | + 'zxml_inconnu_balise' => 'علامة غير معروفة', |
|
| 737 | + 'zxml_inconnu_entite' => 'كائن غير معروف', |
|
| 738 | + 'zxml_inconnu_id' => 'هوية ID غير معروفة', |
|
| 739 | + 'zxml_mais_de' => 'لكن من', |
|
| 740 | + 'zxml_non_conforme' => 'غير مطابق للشكل', |
|
| 741 | + 'zxml_non_fils' => 'ليس من سلالة', |
|
| 742 | + 'zxml_nonvide_balise' => 'علامة غير فارغة', |
|
| 743 | + 'zxml_obligatoire_attribut' => 'خاصية إجبارية لكنها غير موجودة في', |
|
| 744 | + 'zxml_succession_fils_incorrecte' => 'تتابع سلالات غير سليم', |
|
| 745 | + 'zxml_survoler' => 'الحوم لعرض الصحيح', |
|
| 746 | + 'zxml_valeur_attribut' => 'قيمة الخاصية', |
|
| 747 | + 'zxml_vide_balise' => 'علامة فارغة', |
|
| 748 | + 'zxml_vu' => 'ظهر مسبقاً' |
|
| 749 | 749 | ); |
@@ -339,8 +339,7 @@ |
||
| 339 | 339 | if (!autoriser('modifier', $type, intval($id))) { |
| 340 | 340 | $contexte['editable'] = ''; |
| 341 | 341 | } |
| 342 | - } |
|
| 343 | - else { |
|
| 342 | + } else { |
|
| 344 | 343 | if (!autoriser('creer', $type, 0, null, ['id_parent' => $id_parent])) { |
| 345 | 344 | $contexte['editable'] = ''; |
| 346 | 345 | } |
@@ -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 | include_spip('base/abstract_sql'); |
| 23 | 23 | |
@@ -59,56 +59,56 @@ discard block |
||
| 59 | 59 | * Retour des traitements. |
| 60 | 60 | **/ |
| 61 | 61 | function formulaires_editer_objet_traiter( |
| 62 | - $type, |
|
| 63 | - $id = 'new', |
|
| 64 | - $id_parent = 0, |
|
| 65 | - $lier_trad = 0, |
|
| 66 | - $retour = '', |
|
| 67 | - $config_fonc = 'articles_edit_config', |
|
| 68 | - $row = [], |
|
| 69 | - $hidden = '' |
|
| 62 | + $type, |
|
| 63 | + $id = 'new', |
|
| 64 | + $id_parent = 0, |
|
| 65 | + $lier_trad = 0, |
|
| 66 | + $retour = '', |
|
| 67 | + $config_fonc = 'articles_edit_config', |
|
| 68 | + $row = [], |
|
| 69 | + $hidden = '' |
|
| 70 | 70 | ) { |
| 71 | 71 | |
| 72 | - $res = []; |
|
| 73 | - // eviter la redirection forcee par l'action... |
|
| 74 | - set_request('redirect'); |
|
| 75 | - if ($action_editer = charger_fonction("editer_$type", 'action', true)) { |
|
| 76 | - [$id, $err] = $action_editer($id); |
|
| 77 | - } else { |
|
| 78 | - $action_editer = charger_fonction('editer_objet', 'action'); |
|
| 79 | - [$id, $err] = $action_editer($id, $type); |
|
| 80 | - } |
|
| 81 | - $id_table_objet = id_table_objet($type); |
|
| 82 | - $res[$id_table_objet] = $id; |
|
| 83 | - if ($err or !$id) { |
|
| 84 | - $res['message_erreur'] = ($err ?: _T('erreur')); |
|
| 85 | - } else { |
|
| 86 | - // Un lien de trad a prendre en compte |
|
| 87 | - if ($lier_trad) { |
|
| 88 | - // referencer la traduction |
|
| 89 | - $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 90 | - $referencer_traduction($type, $id, $lier_trad); |
|
| 91 | - // actions de recopie de champs / liens sur le nouvel objet créé |
|
| 92 | - $completer_traduction = charger_fonction('completer_traduction', 'inc'); |
|
| 93 | - $err = $completer_traduction($type, $id, $lier_trad); |
|
| 94 | - if ($err) { |
|
| 95 | - $res['message_erreur'] = $err; |
|
| 96 | - return $res; |
|
| 97 | - } |
|
| 98 | - } |
|
| 99 | - |
|
| 100 | - $res['message_ok'] = _T('info_modification_enregistree'); |
|
| 101 | - if ($retour) { |
|
| 102 | - if (strncmp($retour, 'javascript:', 11) == 0) { |
|
| 103 | - $res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/' . substr($retour, 11) . '/*]]>*/</script>'; |
|
| 104 | - $res['editable'] = true; |
|
| 105 | - } else { |
|
| 106 | - $res['redirect'] = parametre_url($retour, $id_table_objet, $id); |
|
| 107 | - } |
|
| 108 | - } |
|
| 109 | - } |
|
| 110 | - |
|
| 111 | - return $res; |
|
| 72 | + $res = []; |
|
| 73 | + // eviter la redirection forcee par l'action... |
|
| 74 | + set_request('redirect'); |
|
| 75 | + if ($action_editer = charger_fonction("editer_$type", 'action', true)) { |
|
| 76 | + [$id, $err] = $action_editer($id); |
|
| 77 | + } else { |
|
| 78 | + $action_editer = charger_fonction('editer_objet', 'action'); |
|
| 79 | + [$id, $err] = $action_editer($id, $type); |
|
| 80 | + } |
|
| 81 | + $id_table_objet = id_table_objet($type); |
|
| 82 | + $res[$id_table_objet] = $id; |
|
| 83 | + if ($err or !$id) { |
|
| 84 | + $res['message_erreur'] = ($err ?: _T('erreur')); |
|
| 85 | + } else { |
|
| 86 | + // Un lien de trad a prendre en compte |
|
| 87 | + if ($lier_trad) { |
|
| 88 | + // referencer la traduction |
|
| 89 | + $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 90 | + $referencer_traduction($type, $id, $lier_trad); |
|
| 91 | + // actions de recopie de champs / liens sur le nouvel objet créé |
|
| 92 | + $completer_traduction = charger_fonction('completer_traduction', 'inc'); |
|
| 93 | + $err = $completer_traduction($type, $id, $lier_trad); |
|
| 94 | + if ($err) { |
|
| 95 | + $res['message_erreur'] = $err; |
|
| 96 | + return $res; |
|
| 97 | + } |
|
| 98 | + } |
|
| 99 | + |
|
| 100 | + $res['message_ok'] = _T('info_modification_enregistree'); |
|
| 101 | + if ($retour) { |
|
| 102 | + if (strncmp($retour, 'javascript:', 11) == 0) { |
|
| 103 | + $res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/' . substr($retour, 11) . '/*]]>*/</script>'; |
|
| 104 | + $res['editable'] = true; |
|
| 105 | + } else { |
|
| 106 | + $res['redirect'] = parametre_url($retour, $id_table_objet, $id); |
|
| 107 | + } |
|
| 108 | + } |
|
| 109 | + } |
|
| 110 | + |
|
| 111 | + return $res; |
|
| 112 | 112 | } |
| 113 | 113 | |
| 114 | 114 | /** |
@@ -132,29 +132,29 @@ discard block |
||
| 132 | 132 | * Tableau des erreurs |
| 133 | 133 | **/ |
| 134 | 134 | function formulaires_editer_objet_verifier($type, $id = 'new', $oblis = []) { |
| 135 | - $erreurs = []; |
|
| 136 | - if (intval($id)) { |
|
| 137 | - $conflits = controler_contenu($type, $id); |
|
| 138 | - if ($conflits and is_countable($conflits) ? count($conflits) : 0) { |
|
| 139 | - foreach ($conflits as $champ => $conflit) { |
|
| 140 | - if (!isset($erreurs[$champ])) { |
|
| 141 | - $erreurs[$champ] = ''; |
|
| 142 | - } |
|
| 143 | - $erreurs[$champ] .= _T('alerte_modif_info_concourante') . "<br /><textarea readonly='readonly' class='forml'>" . entites_html($conflit['base']) . '</textarea>'; |
|
| 144 | - } |
|
| 145 | - } |
|
| 146 | - } |
|
| 147 | - foreach ($oblis as $obli) { |
|
| 148 | - $value = _request($obli); |
|
| 149 | - if (is_null($value) or !(is_array($value) ? count($value) : strlen($value))) { |
|
| 150 | - if (!isset($erreurs[$obli])) { |
|
| 151 | - $erreurs[$obli] = ''; |
|
| 152 | - } |
|
| 153 | - $erreurs[$obli] .= _T('info_obligatoire'); |
|
| 154 | - } |
|
| 155 | - } |
|
| 156 | - |
|
| 157 | - return $erreurs; |
|
| 135 | + $erreurs = []; |
|
| 136 | + if (intval($id)) { |
|
| 137 | + $conflits = controler_contenu($type, $id); |
|
| 138 | + if ($conflits and is_countable($conflits) ? count($conflits) : 0) { |
|
| 139 | + foreach ($conflits as $champ => $conflit) { |
|
| 140 | + if (!isset($erreurs[$champ])) { |
|
| 141 | + $erreurs[$champ] = ''; |
|
| 142 | + } |
|
| 143 | + $erreurs[$champ] .= _T('alerte_modif_info_concourante') . "<br /><textarea readonly='readonly' class='forml'>" . entites_html($conflit['base']) . '</textarea>'; |
|
| 144 | + } |
|
| 145 | + } |
|
| 146 | + } |
|
| 147 | + foreach ($oblis as $obli) { |
|
| 148 | + $value = _request($obli); |
|
| 149 | + if (is_null($value) or !(is_array($value) ? count($value) : strlen($value))) { |
|
| 150 | + if (!isset($erreurs[$obli])) { |
|
| 151 | + $erreurs[$obli] = ''; |
|
| 152 | + } |
|
| 153 | + $erreurs[$obli] .= _T('info_obligatoire'); |
|
| 154 | + } |
|
| 155 | + } |
|
| 156 | + |
|
| 157 | + return $erreurs; |
|
| 158 | 158 | } |
| 159 | 159 | |
| 160 | 160 | /** |
@@ -199,154 +199,154 @@ discard block |
||
| 199 | 199 | * Environnement du formulaire. |
| 200 | 200 | **/ |
| 201 | 201 | function formulaires_editer_objet_charger( |
| 202 | - $type, |
|
| 203 | - $id = 'new', |
|
| 204 | - $id_parent = 0, |
|
| 205 | - $lier_trad = 0, |
|
| 206 | - $retour = '', |
|
| 207 | - $config_fonc = 'articles_edit_config', |
|
| 208 | - $row = [], |
|
| 209 | - $hidden = '' |
|
| 202 | + $type, |
|
| 203 | + $id = 'new', |
|
| 204 | + $id_parent = 0, |
|
| 205 | + $lier_trad = 0, |
|
| 206 | + $retour = '', |
|
| 207 | + $config_fonc = 'articles_edit_config', |
|
| 208 | + $row = [], |
|
| 209 | + $hidden = '' |
|
| 210 | 210 | ) { |
| 211 | 211 | |
| 212 | - $table_objet = table_objet($type); |
|
| 213 | - $table_objet_sql = table_objet_sql($type); |
|
| 214 | - $id_table_objet = id_table_objet($type); |
|
| 215 | - if (!is_array($row)) { |
|
| 216 | - $row = []; |
|
| 217 | - } |
|
| 218 | - |
|
| 219 | - // on accepte pas une fonction de config inconnue si elle vient d'un modele |
|
| 220 | - if ( |
|
| 221 | - $config_fonc |
|
| 222 | - and !in_array($config_fonc, ['articles_edit_config', 'rubriques_edit_config', 'auteurs_edit_config']) |
|
| 223 | - and $config_fonc !== $table_objet . '_edit_config' |
|
| 224 | - ) { |
|
| 225 | - if ( |
|
| 226 | - $args = test_formulaire_inclus_par_modele() |
|
| 227 | - and in_array($config_fonc, $args) |
|
| 228 | - ) { |
|
| 229 | - $config_fonc = ''; |
|
| 230 | - } |
|
| 231 | - } |
|
| 232 | - |
|
| 233 | - $new = !is_numeric($id); |
|
| 234 | - $lang_default = ''; |
|
| 235 | - // Appel direct dans un squelette |
|
| 236 | - if (!$row) { |
|
| 237 | - if (!$new or $lier_trad) { |
|
| 238 | - if ($select = charger_fonction('precharger_' . $type, 'inc', true)) { |
|
| 239 | - $row = $select($id, $id_parent, $lier_trad); |
|
| 240 | - // si on a une fonction precharger, elle pu faire un reglage de langue |
|
| 241 | - $lang_default = (!empty($row['lang']) ? $row['lang'] : null); |
|
| 242 | - } else { |
|
| 243 | - $row = sql_fetsel('*', $table_objet_sql, $id_table_objet . '=' . intval($id)); |
|
| 244 | - } |
|
| 245 | - if (!$new) { |
|
| 246 | - $md5 = controles_md5($row ?: []); |
|
| 247 | - } |
|
| 248 | - } |
|
| 249 | - if (!$row) { |
|
| 250 | - $row = []; |
|
| 251 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 252 | - if ($desc = $trouver_table($table_objet)) { |
|
| 253 | - foreach ($desc['field'] as $k => $v) { |
|
| 254 | - $row[$k] = ''; |
|
| 255 | - } |
|
| 256 | - } |
|
| 257 | - } |
|
| 258 | - } |
|
| 259 | - |
|
| 260 | - // Gaffe: sans ceci, on ecrase systematiquement l'article d'origine |
|
| 261 | - // (et donc: pas de lien de traduction) |
|
| 262 | - $id = ($new or $lier_trad) |
|
| 263 | - ? 'oui' |
|
| 264 | - : $row[$id_table_objet]; |
|
| 265 | - $row[$id_table_objet] = $id; |
|
| 266 | - |
|
| 267 | - $contexte = $row; |
|
| 268 | - if (is_numeric($id_parent) && strlen($id_parent) && (!isset($contexte['id_parent']) or $new)) { |
|
| 269 | - if (!isset($contexte['id_parent'])) { |
|
| 270 | - unset($contexte['id_rubrique']); |
|
| 271 | - } |
|
| 272 | - $contexte['id_parent'] = $id_parent; |
|
| 273 | - } elseif (!isset($contexte['id_parent'])) { |
|
| 274 | - // id_rubrique dans id_parent si possible |
|
| 275 | - if (isset($contexte['id_rubrique'])) { |
|
| 276 | - $contexte['id_parent'] = $contexte['id_rubrique']; |
|
| 277 | - unset($contexte['id_rubrique']); |
|
| 278 | - } else { |
|
| 279 | - $contexte['id_parent'] = ''; |
|
| 280 | - } |
|
| 281 | - if ( |
|
| 282 | - !$contexte['id_parent'] |
|
| 283 | - and $preselectionner_parent_nouvel_objet = charger_fonction('preselectionner_parent_nouvel_objet', 'inc', true) |
|
| 284 | - ) { |
|
| 285 | - $contexte['id_parent'] = $preselectionner_parent_nouvel_objet($type, $row); |
|
| 286 | - } |
|
| 287 | - } |
|
| 288 | - |
|
| 289 | - $config = []; |
|
| 290 | - if ($config_fonc) { |
|
| 291 | - $contexte['config'] = $config = $config_fonc($contexte); |
|
| 292 | - if (!$lang_default) { |
|
| 293 | - $lang_default = $config['langue'] ?? session_get('lang') ; |
|
| 294 | - } |
|
| 295 | - } |
|
| 296 | - $config = $config + [ |
|
| 297 | - 'lignes' => 0, |
|
| 298 | - 'langue' => '', |
|
| 299 | - ]; |
|
| 300 | - |
|
| 301 | - $att_text = " class='textarea' " |
|
| 302 | - . " rows='" |
|
| 303 | - . ($config['lignes'] + 15) |
|
| 304 | - . "' cols='40'"; |
|
| 305 | - if (isset($contexte['texte'])) { |
|
| 306 | - [$contexte['texte'], $contexte['_texte_trop_long']] = editer_texte_recolle($contexte['texte'], $att_text); |
|
| 307 | - } |
|
| 308 | - |
|
| 309 | - // on veut conserver la langue de l'interface ; |
|
| 310 | - // on passe cette donnee sous un autre nom, au cas ou le squelette |
|
| 311 | - // voudrait l'exploiter |
|
| 312 | - if (isset($contexte['lang'])) { |
|
| 313 | - $contexte['langue'] = $contexte['lang']; |
|
| 314 | - unset($contexte['lang']); |
|
| 315 | - } |
|
| 316 | - |
|
| 317 | - $contexte['_hidden'] = "<input type='hidden' name='editer_$type' value='oui' />\n" . |
|
| 318 | - (!$lier_trad ? '' : |
|
| 319 | - ("\n<input type='hidden' name='lier_trad' value='" . |
|
| 320 | - $lier_trad . |
|
| 321 | - "' />" . |
|
| 322 | - "\n<input type='hidden' name='changer_lang' value='" . |
|
| 323 | - $lang_default . |
|
| 324 | - "' />")) |
|
| 325 | - . $hidden |
|
| 326 | - . ($md5 ?? ''); |
|
| 327 | - |
|
| 328 | - // preciser que le formulaire doit passer dans un pipeline |
|
| 329 | - $contexte['_pipeline'] = ['editer_contenu_objet', ['type' => $type, 'id' => $id]]; |
|
| 330 | - |
|
| 331 | - // preciser que le formulaire doit etre securise auteur/action |
|
| 332 | - // n'est plus utile lorsque l'action accepte l'id en argument direct |
|
| 333 | - // on le garde pour compat |
|
| 334 | - $contexte['_action'] = ["editer_$type", $id]; |
|
| 335 | - |
|
| 336 | - // et in fine placer l'autorisation |
|
| 337 | - include_spip('inc/autoriser'); |
|
| 338 | - if (intval($id)) { |
|
| 339 | - if (!autoriser('modifier', $type, intval($id))) { |
|
| 340 | - $contexte['editable'] = ''; |
|
| 341 | - } |
|
| 342 | - } |
|
| 343 | - else { |
|
| 344 | - if (!autoriser('creer', $type, 0, null, ['id_parent' => $id_parent])) { |
|
| 345 | - $contexte['editable'] = ''; |
|
| 346 | - } |
|
| 347 | - } |
|
| 348 | - |
|
| 349 | - return $contexte; |
|
| 212 | + $table_objet = table_objet($type); |
|
| 213 | + $table_objet_sql = table_objet_sql($type); |
|
| 214 | + $id_table_objet = id_table_objet($type); |
|
| 215 | + if (!is_array($row)) { |
|
| 216 | + $row = []; |
|
| 217 | + } |
|
| 218 | + |
|
| 219 | + // on accepte pas une fonction de config inconnue si elle vient d'un modele |
|
| 220 | + if ( |
|
| 221 | + $config_fonc |
|
| 222 | + and !in_array($config_fonc, ['articles_edit_config', 'rubriques_edit_config', 'auteurs_edit_config']) |
|
| 223 | + and $config_fonc !== $table_objet . '_edit_config' |
|
| 224 | + ) { |
|
| 225 | + if ( |
|
| 226 | + $args = test_formulaire_inclus_par_modele() |
|
| 227 | + and in_array($config_fonc, $args) |
|
| 228 | + ) { |
|
| 229 | + $config_fonc = ''; |
|
| 230 | + } |
|
| 231 | + } |
|
| 232 | + |
|
| 233 | + $new = !is_numeric($id); |
|
| 234 | + $lang_default = ''; |
|
| 235 | + // Appel direct dans un squelette |
|
| 236 | + if (!$row) { |
|
| 237 | + if (!$new or $lier_trad) { |
|
| 238 | + if ($select = charger_fonction('precharger_' . $type, 'inc', true)) { |
|
| 239 | + $row = $select($id, $id_parent, $lier_trad); |
|
| 240 | + // si on a une fonction precharger, elle pu faire un reglage de langue |
|
| 241 | + $lang_default = (!empty($row['lang']) ? $row['lang'] : null); |
|
| 242 | + } else { |
|
| 243 | + $row = sql_fetsel('*', $table_objet_sql, $id_table_objet . '=' . intval($id)); |
|
| 244 | + } |
|
| 245 | + if (!$new) { |
|
| 246 | + $md5 = controles_md5($row ?: []); |
|
| 247 | + } |
|
| 248 | + } |
|
| 249 | + if (!$row) { |
|
| 250 | + $row = []; |
|
| 251 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 252 | + if ($desc = $trouver_table($table_objet)) { |
|
| 253 | + foreach ($desc['field'] as $k => $v) { |
|
| 254 | + $row[$k] = ''; |
|
| 255 | + } |
|
| 256 | + } |
|
| 257 | + } |
|
| 258 | + } |
|
| 259 | + |
|
| 260 | + // Gaffe: sans ceci, on ecrase systematiquement l'article d'origine |
|
| 261 | + // (et donc: pas de lien de traduction) |
|
| 262 | + $id = ($new or $lier_trad) |
|
| 263 | + ? 'oui' |
|
| 264 | + : $row[$id_table_objet]; |
|
| 265 | + $row[$id_table_objet] = $id; |
|
| 266 | + |
|
| 267 | + $contexte = $row; |
|
| 268 | + if (is_numeric($id_parent) && strlen($id_parent) && (!isset($contexte['id_parent']) or $new)) { |
|
| 269 | + if (!isset($contexte['id_parent'])) { |
|
| 270 | + unset($contexte['id_rubrique']); |
|
| 271 | + } |
|
| 272 | + $contexte['id_parent'] = $id_parent; |
|
| 273 | + } elseif (!isset($contexte['id_parent'])) { |
|
| 274 | + // id_rubrique dans id_parent si possible |
|
| 275 | + if (isset($contexte['id_rubrique'])) { |
|
| 276 | + $contexte['id_parent'] = $contexte['id_rubrique']; |
|
| 277 | + unset($contexte['id_rubrique']); |
|
| 278 | + } else { |
|
| 279 | + $contexte['id_parent'] = ''; |
|
| 280 | + } |
|
| 281 | + if ( |
|
| 282 | + !$contexte['id_parent'] |
|
| 283 | + and $preselectionner_parent_nouvel_objet = charger_fonction('preselectionner_parent_nouvel_objet', 'inc', true) |
|
| 284 | + ) { |
|
| 285 | + $contexte['id_parent'] = $preselectionner_parent_nouvel_objet($type, $row); |
|
| 286 | + } |
|
| 287 | + } |
|
| 288 | + |
|
| 289 | + $config = []; |
|
| 290 | + if ($config_fonc) { |
|
| 291 | + $contexte['config'] = $config = $config_fonc($contexte); |
|
| 292 | + if (!$lang_default) { |
|
| 293 | + $lang_default = $config['langue'] ?? session_get('lang') ; |
|
| 294 | + } |
|
| 295 | + } |
|
| 296 | + $config = $config + [ |
|
| 297 | + 'lignes' => 0, |
|
| 298 | + 'langue' => '', |
|
| 299 | + ]; |
|
| 300 | + |
|
| 301 | + $att_text = " class='textarea' " |
|
| 302 | + . " rows='" |
|
| 303 | + . ($config['lignes'] + 15) |
|
| 304 | + . "' cols='40'"; |
|
| 305 | + if (isset($contexte['texte'])) { |
|
| 306 | + [$contexte['texte'], $contexte['_texte_trop_long']] = editer_texte_recolle($contexte['texte'], $att_text); |
|
| 307 | + } |
|
| 308 | + |
|
| 309 | + // on veut conserver la langue de l'interface ; |
|
| 310 | + // on passe cette donnee sous un autre nom, au cas ou le squelette |
|
| 311 | + // voudrait l'exploiter |
|
| 312 | + if (isset($contexte['lang'])) { |
|
| 313 | + $contexte['langue'] = $contexte['lang']; |
|
| 314 | + unset($contexte['lang']); |
|
| 315 | + } |
|
| 316 | + |
|
| 317 | + $contexte['_hidden'] = "<input type='hidden' name='editer_$type' value='oui' />\n" . |
|
| 318 | + (!$lier_trad ? '' : |
|
| 319 | + ("\n<input type='hidden' name='lier_trad' value='" . |
|
| 320 | + $lier_trad . |
|
| 321 | + "' />" . |
|
| 322 | + "\n<input type='hidden' name='changer_lang' value='" . |
|
| 323 | + $lang_default . |
|
| 324 | + "' />")) |
|
| 325 | + . $hidden |
|
| 326 | + . ($md5 ?? ''); |
|
| 327 | + |
|
| 328 | + // preciser que le formulaire doit passer dans un pipeline |
|
| 329 | + $contexte['_pipeline'] = ['editer_contenu_objet', ['type' => $type, 'id' => $id]]; |
|
| 330 | + |
|
| 331 | + // preciser que le formulaire doit etre securise auteur/action |
|
| 332 | + // n'est plus utile lorsque l'action accepte l'id en argument direct |
|
| 333 | + // on le garde pour compat |
|
| 334 | + $contexte['_action'] = ["editer_$type", $id]; |
|
| 335 | + |
|
| 336 | + // et in fine placer l'autorisation |
|
| 337 | + include_spip('inc/autoriser'); |
|
| 338 | + if (intval($id)) { |
|
| 339 | + if (!autoriser('modifier', $type, intval($id))) { |
|
| 340 | + $contexte['editable'] = ''; |
|
| 341 | + } |
|
| 342 | + } |
|
| 343 | + else { |
|
| 344 | + if (!autoriser('creer', $type, 0, null, ['id_parent' => $id_parent])) { |
|
| 345 | + $contexte['editable'] = ''; |
|
| 346 | + } |
|
| 347 | + } |
|
| 348 | + |
|
| 349 | + return $contexte; |
|
| 350 | 350 | } |
| 351 | 351 | |
| 352 | 352 | /** |
@@ -357,29 +357,29 @@ discard block |
||
| 357 | 357 | * @return array |
| 358 | 358 | */ |
| 359 | 359 | function coupe_trop_long($texte) { |
| 360 | - $aider = charger_fonction('aider', 'inc'); |
|
| 361 | - if (strlen($texte) > 28 * 1024) { |
|
| 362 | - $texte = str_replace("\r\n", "\n", $texte); |
|
| 363 | - $pos = strpos($texte, "\n\n", 28 * 1024); // coupe para > 28 ko |
|
| 364 | - if ($pos > 0 and $pos < 32 * 1024) { |
|
| 365 | - $debut = substr($texte, 0, $pos) . "\n\n<!--SPIP-->\n"; |
|
| 366 | - $suite = substr($texte, $pos + 2); |
|
| 367 | - } else { |
|
| 368 | - $pos = strpos($texte, ' ', 28 * 1024); // sinon coupe espace |
|
| 369 | - if (!($pos > 0 and $pos < 32 * 1024)) { |
|
| 370 | - $pos = 28 * 1024; // au pire (pas d'espace trouv'e) |
|
| 371 | - $decalage = 0; // si y'a pas d'espace, il ne faut pas perdre le caract`ere |
|
| 372 | - } else { |
|
| 373 | - $decalage = 1; |
|
| 374 | - } |
|
| 375 | - $debut = substr($texte, 0, $pos + $decalage); // Il faut conserver l'espace s'il y en a un |
|
| 376 | - $suite = substr($texte, $pos + $decalage); |
|
| 377 | - } |
|
| 378 | - |
|
| 379 | - return ([$debut, $suite]); |
|
| 380 | - } else { |
|
| 381 | - return ([$texte, '']); |
|
| 382 | - } |
|
| 360 | + $aider = charger_fonction('aider', 'inc'); |
|
| 361 | + if (strlen($texte) > 28 * 1024) { |
|
| 362 | + $texte = str_replace("\r\n", "\n", $texte); |
|
| 363 | + $pos = strpos($texte, "\n\n", 28 * 1024); // coupe para > 28 ko |
|
| 364 | + if ($pos > 0 and $pos < 32 * 1024) { |
|
| 365 | + $debut = substr($texte, 0, $pos) . "\n\n<!--SPIP-->\n"; |
|
| 366 | + $suite = substr($texte, $pos + 2); |
|
| 367 | + } else { |
|
| 368 | + $pos = strpos($texte, ' ', 28 * 1024); // sinon coupe espace |
|
| 369 | + if (!($pos > 0 and $pos < 32 * 1024)) { |
|
| 370 | + $pos = 28 * 1024; // au pire (pas d'espace trouv'e) |
|
| 371 | + $decalage = 0; // si y'a pas d'espace, il ne faut pas perdre le caract`ere |
|
| 372 | + } else { |
|
| 373 | + $decalage = 1; |
|
| 374 | + } |
|
| 375 | + $debut = substr($texte, 0, $pos + $decalage); // Il faut conserver l'espace s'il y en a un |
|
| 376 | + $suite = substr($texte, $pos + $decalage); |
|
| 377 | + } |
|
| 378 | + |
|
| 379 | + return ([$debut, $suite]); |
|
| 380 | + } else { |
|
| 381 | + return ([$texte, '']); |
|
| 382 | + } |
|
| 383 | 383 | } |
| 384 | 384 | |
| 385 | 385 | /** |
@@ -390,25 +390,25 @@ discard block |
||
| 390 | 390 | * @return array |
| 391 | 391 | */ |
| 392 | 392 | function editer_texte_recolle($texte, $att_text) { |
| 393 | - if ( |
|
| 394 | - (strlen($texte) < 29 * 1024) |
|
| 395 | - or (include_spip('inc/layer') and ($GLOBALS['browser_name'] != 'MSIE')) |
|
| 396 | - ) { |
|
| 397 | - return [$texte, '']; |
|
| 398 | - } |
|
| 399 | - |
|
| 400 | - include_spip('inc/barre'); |
|
| 401 | - $textes_supplement = "<br /><span style='color: red'>" . _T('info_texte_long') . "</span>\n"; |
|
| 402 | - $nombre = 0; |
|
| 403 | - |
|
| 404 | - while (strlen($texte) > 29 * 1024) { |
|
| 405 | - $nombre++; |
|
| 406 | - [$texte1, $texte] = coupe_trop_long($texte); |
|
| 407 | - $textes_supplement .= '<br />' . |
|
| 408 | - "<textarea id='texte$nombre' name='texte_plus[$nombre]'$att_text>$texte1</textarea>\n"; |
|
| 409 | - } |
|
| 410 | - |
|
| 411 | - return [$texte, $textes_supplement]; |
|
| 393 | + if ( |
|
| 394 | + (strlen($texte) < 29 * 1024) |
|
| 395 | + or (include_spip('inc/layer') and ($GLOBALS['browser_name'] != 'MSIE')) |
|
| 396 | + ) { |
|
| 397 | + return [$texte, '']; |
|
| 398 | + } |
|
| 399 | + |
|
| 400 | + include_spip('inc/barre'); |
|
| 401 | + $textes_supplement = "<br /><span style='color: red'>" . _T('info_texte_long') . "</span>\n"; |
|
| 402 | + $nombre = 0; |
|
| 403 | + |
|
| 404 | + while (strlen($texte) > 29 * 1024) { |
|
| 405 | + $nombre++; |
|
| 406 | + [$texte1, $texte] = coupe_trop_long($texte); |
|
| 407 | + $textes_supplement .= '<br />' . |
|
| 408 | + "<textarea id='texte$nombre' name='texte_plus[$nombre]'$att_text>$texte1</textarea>\n"; |
|
| 409 | + } |
|
| 410 | + |
|
| 411 | + return [$texte, $textes_supplement]; |
|
| 412 | 412 | } |
| 413 | 413 | |
| 414 | 414 | /** |
@@ -419,17 +419,17 @@ discard block |
||
| 419 | 419 | * @param int $longueur |
| 420 | 420 | */ |
| 421 | 421 | function titre_automatique($champ_titre, $champs_contenu, $longueur = null) { |
| 422 | - if (!_request($champ_titre)) { |
|
| 423 | - $titrer_contenu = charger_fonction('titrer_contenu', 'inc'); |
|
| 424 | - if (!is_null($longueur)) { |
|
| 425 | - $t = $titrer_contenu($champs_contenu, null, $longueur); |
|
| 426 | - } else { |
|
| 427 | - $t = $titrer_contenu($champs_contenu); |
|
| 428 | - } |
|
| 429 | - if ($t) { |
|
| 430 | - set_request($champ_titre, $t); |
|
| 431 | - } |
|
| 432 | - } |
|
| 422 | + if (!_request($champ_titre)) { |
|
| 423 | + $titrer_contenu = charger_fonction('titrer_contenu', 'inc'); |
|
| 424 | + if (!is_null($longueur)) { |
|
| 425 | + $t = $titrer_contenu($champs_contenu, null, $longueur); |
|
| 426 | + } else { |
|
| 427 | + $t = $titrer_contenu($champs_contenu); |
|
| 428 | + } |
|
| 429 | + if ($t) { |
|
| 430 | + set_request($champ_titre, $t); |
|
| 431 | + } |
|
| 432 | + } |
|
| 433 | 433 | } |
| 434 | 434 | |
| 435 | 435 | /** |
@@ -449,20 +449,20 @@ discard block |
||
| 449 | 449 | * @return string |
| 450 | 450 | */ |
| 451 | 451 | function inc_titrer_contenu_dist($champs_contenu, $c = null, $longueur = 50) { |
| 452 | - // trouver un champ texte non vide |
|
| 453 | - $t = ''; |
|
| 454 | - foreach ($champs_contenu as $champ) { |
|
| 455 | - if ($t = _request($champ, $c)) { |
|
| 456 | - break; |
|
| 457 | - } |
|
| 458 | - } |
|
| 459 | - |
|
| 460 | - if ($t) { |
|
| 461 | - include_spip('inc/texte_mini'); |
|
| 462 | - $t = couper($t, $longueur, '...'); |
|
| 463 | - } |
|
| 464 | - |
|
| 465 | - return $t; |
|
| 452 | + // trouver un champ texte non vide |
|
| 453 | + $t = ''; |
|
| 454 | + foreach ($champs_contenu as $champ) { |
|
| 455 | + if ($t = _request($champ, $c)) { |
|
| 456 | + break; |
|
| 457 | + } |
|
| 458 | + } |
|
| 459 | + |
|
| 460 | + if ($t) { |
|
| 461 | + include_spip('inc/texte_mini'); |
|
| 462 | + $t = couper($t, $longueur, '...'); |
|
| 463 | + } |
|
| 464 | + |
|
| 465 | + return $t; |
|
| 466 | 466 | } |
| 467 | 467 | |
| 468 | 468 | /** |
@@ -484,26 +484,26 @@ discard block |
||
| 484 | 484 | * - array sinon couples ('$prefixe$colonne => md5) |
| 485 | 485 | **/ |
| 486 | 486 | function controles_md5(array $data, string $prefixe = 'ctr_', string $format = 'html') { |
| 487 | - $ctr = []; |
|
| 488 | - foreach ($data as $key => $val) { |
|
| 489 | - $m = md5($val ?? ''); |
|
| 490 | - $k = $prefixe . $key; |
|
| 491 | - |
|
| 492 | - switch ($format) { |
|
| 493 | - case 'html': |
|
| 494 | - $ctr[$k] = "<input type='hidden' value='$m' name='$k' />"; |
|
| 495 | - break; |
|
| 496 | - default: |
|
| 497 | - $ctr[$k] = $m; |
|
| 498 | - break; |
|
| 499 | - } |
|
| 500 | - } |
|
| 501 | - |
|
| 502 | - if ($format === 'html') { |
|
| 503 | - return "\n\n<!-- controles md5 -->\n" . join("\n", $ctr) . "\n\n"; |
|
| 504 | - } else { |
|
| 505 | - return $ctr; |
|
| 506 | - } |
|
| 487 | + $ctr = []; |
|
| 488 | + foreach ($data as $key => $val) { |
|
| 489 | + $m = md5($val ?? ''); |
|
| 490 | + $k = $prefixe . $key; |
|
| 491 | + |
|
| 492 | + switch ($format) { |
|
| 493 | + case 'html': |
|
| 494 | + $ctr[$k] = "<input type='hidden' value='$m' name='$k' />"; |
|
| 495 | + break; |
|
| 496 | + default: |
|
| 497 | + $ctr[$k] = $m; |
|
| 498 | + break; |
|
| 499 | + } |
|
| 500 | + } |
|
| 501 | + |
|
| 502 | + if ($format === 'html') { |
|
| 503 | + return "\n\n<!-- controles md5 -->\n" . join("\n", $ctr) . "\n\n"; |
|
| 504 | + } else { |
|
| 505 | + return $ctr; |
|
| 506 | + } |
|
| 507 | 507 | } |
| 508 | 508 | |
| 509 | 509 | /** |
@@ -542,80 +542,80 @@ discard block |
||
| 542 | 542 | * - post : le contenu posté |
| 543 | 543 | **/ |
| 544 | 544 | function controler_contenu($type, $id, $options = [], $c = false, $serveur = '') { |
| 545 | - include_spip('inc/filtres'); |
|
| 546 | - |
|
| 547 | - $table_objet = table_objet($type); |
|
| 548 | - $spip_table_objet = table_objet_sql($type); |
|
| 549 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 550 | - $desc = $trouver_table($table_objet, $serveur); |
|
| 551 | - |
|
| 552 | - // Appels incomplets (sans $c) |
|
| 553 | - if (!is_array($c)) { |
|
| 554 | - $c = []; |
|
| 555 | - foreach ($desc['field'] as $champ => $ignore) { |
|
| 556 | - if (_request($champ)) { |
|
| 557 | - $c[$champ] = _request($champ); |
|
| 558 | - } |
|
| 559 | - } |
|
| 560 | - } |
|
| 561 | - |
|
| 562 | - // Securite : certaines variables ne sont jamais acceptees ici |
|
| 563 | - // car elles ne relevent pas de autoriser(article, modifier) ; |
|
| 564 | - // il faut passer par instituer_XX() |
|
| 565 | - // TODO: faut-il passer ces variables interdites |
|
| 566 | - // dans un fichier de description separe ? |
|
| 567 | - unset($c['statut']); |
|
| 568 | - unset($c['id_parent']); |
|
| 569 | - unset($c['id_rubrique']); |
|
| 570 | - unset($c['id_secteur']); |
|
| 571 | - |
|
| 572 | - // Gerer les champs non vides |
|
| 573 | - if (isset($options['nonvide']) and is_array($options['nonvide'])) { |
|
| 574 | - foreach ($options['nonvide'] as $champ => $sinon) { |
|
| 575 | - if ($c[$champ] === '') { |
|
| 576 | - $c[$champ] = $sinon; |
|
| 577 | - } |
|
| 578 | - } |
|
| 579 | - } |
|
| 580 | - |
|
| 581 | - // N'accepter que les champs qui existent |
|
| 582 | - // [TODO] ici aussi on peut valider les contenus en fonction du type |
|
| 583 | - $champs = []; |
|
| 584 | - foreach ($desc['field'] as $champ => $ignore) { |
|
| 585 | - if (isset($c[$champ])) { |
|
| 586 | - $champs[$champ] = $c[$champ]; |
|
| 587 | - } |
|
| 588 | - } |
|
| 589 | - |
|
| 590 | - // Nettoyer les valeurs |
|
| 591 | - $champs = array_map('corriger_caracteres', $champs); |
|
| 592 | - |
|
| 593 | - // Envoyer aux plugins |
|
| 594 | - $champs = pipeline( |
|
| 595 | - 'pre_edition', |
|
| 596 | - [ |
|
| 597 | - 'args' => [ |
|
| 598 | - 'table' => $spip_table_objet, // compatibilite |
|
| 599 | - 'table_objet' => $table_objet, |
|
| 600 | - 'spip_table_objet' => $spip_table_objet, |
|
| 601 | - 'type' => $type, |
|
| 602 | - 'id_objet' => $id, |
|
| 603 | - 'champs' => $options['champs'] ?? [], // [doc] c'est quoi ? |
|
| 604 | - 'action' => 'controler', |
|
| 605 | - 'serveur' => $serveur, |
|
| 606 | - ], |
|
| 607 | - 'data' => $champs |
|
| 608 | - ] |
|
| 609 | - ); |
|
| 610 | - |
|
| 611 | - if (!$champs) { |
|
| 612 | - return false; |
|
| 613 | - } |
|
| 614 | - |
|
| 615 | - // Verifier si les mises a jour sont pertinentes, datees, en conflit etc |
|
| 616 | - $conflits = controler_md5($champs, $_POST, $type, $id, $serveur, $options['prefix'] ?? 'ctr_'); |
|
| 617 | - |
|
| 618 | - return $conflits; |
|
| 545 | + include_spip('inc/filtres'); |
|
| 546 | + |
|
| 547 | + $table_objet = table_objet($type); |
|
| 548 | + $spip_table_objet = table_objet_sql($type); |
|
| 549 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 550 | + $desc = $trouver_table($table_objet, $serveur); |
|
| 551 | + |
|
| 552 | + // Appels incomplets (sans $c) |
|
| 553 | + if (!is_array($c)) { |
|
| 554 | + $c = []; |
|
| 555 | + foreach ($desc['field'] as $champ => $ignore) { |
|
| 556 | + if (_request($champ)) { |
|
| 557 | + $c[$champ] = _request($champ); |
|
| 558 | + } |
|
| 559 | + } |
|
| 560 | + } |
|
| 561 | + |
|
| 562 | + // Securite : certaines variables ne sont jamais acceptees ici |
|
| 563 | + // car elles ne relevent pas de autoriser(article, modifier) ; |
|
| 564 | + // il faut passer par instituer_XX() |
|
| 565 | + // TODO: faut-il passer ces variables interdites |
|
| 566 | + // dans un fichier de description separe ? |
|
| 567 | + unset($c['statut']); |
|
| 568 | + unset($c['id_parent']); |
|
| 569 | + unset($c['id_rubrique']); |
|
| 570 | + unset($c['id_secteur']); |
|
| 571 | + |
|
| 572 | + // Gerer les champs non vides |
|
| 573 | + if (isset($options['nonvide']) and is_array($options['nonvide'])) { |
|
| 574 | + foreach ($options['nonvide'] as $champ => $sinon) { |
|
| 575 | + if ($c[$champ] === '') { |
|
| 576 | + $c[$champ] = $sinon; |
|
| 577 | + } |
|
| 578 | + } |
|
| 579 | + } |
|
| 580 | + |
|
| 581 | + // N'accepter que les champs qui existent |
|
| 582 | + // [TODO] ici aussi on peut valider les contenus en fonction du type |
|
| 583 | + $champs = []; |
|
| 584 | + foreach ($desc['field'] as $champ => $ignore) { |
|
| 585 | + if (isset($c[$champ])) { |
|
| 586 | + $champs[$champ] = $c[$champ]; |
|
| 587 | + } |
|
| 588 | + } |
|
| 589 | + |
|
| 590 | + // Nettoyer les valeurs |
|
| 591 | + $champs = array_map('corriger_caracteres', $champs); |
|
| 592 | + |
|
| 593 | + // Envoyer aux plugins |
|
| 594 | + $champs = pipeline( |
|
| 595 | + 'pre_edition', |
|
| 596 | + [ |
|
| 597 | + 'args' => [ |
|
| 598 | + 'table' => $spip_table_objet, // compatibilite |
|
| 599 | + 'table_objet' => $table_objet, |
|
| 600 | + 'spip_table_objet' => $spip_table_objet, |
|
| 601 | + 'type' => $type, |
|
| 602 | + 'id_objet' => $id, |
|
| 603 | + 'champs' => $options['champs'] ?? [], // [doc] c'est quoi ? |
|
| 604 | + 'action' => 'controler', |
|
| 605 | + 'serveur' => $serveur, |
|
| 606 | + ], |
|
| 607 | + 'data' => $champs |
|
| 608 | + ] |
|
| 609 | + ); |
|
| 610 | + |
|
| 611 | + if (!$champs) { |
|
| 612 | + return false; |
|
| 613 | + } |
|
| 614 | + |
|
| 615 | + // Verifier si les mises a jour sont pertinentes, datees, en conflit etc |
|
| 616 | + $conflits = controler_md5($champs, $_POST, $type, $id, $serveur, $options['prefix'] ?? 'ctr_'); |
|
| 617 | + |
|
| 618 | + return $conflits; |
|
| 619 | 619 | } |
| 620 | 620 | |
| 621 | 621 | |
@@ -645,64 +645,64 @@ discard block |
||
| 645 | 645 | * - post : le contenu posté |
| 646 | 646 | **/ |
| 647 | 647 | function controler_md5(&$champs, $ctr, $type, $id, $serveur, $prefix = 'ctr_') { |
| 648 | - $spip_table_objet = table_objet_sql($type); |
|
| 649 | - $id_table_objet = id_table_objet($type); |
|
| 650 | - |
|
| 651 | - // Controle des MD5 envoyes |
|
| 652 | - // On elimine les donnees non modifiees par le formulaire (mais |
|
| 653 | - // potentiellement modifiees entre temps par un autre utilisateur) |
|
| 654 | - foreach ($champs as $key => $val) { |
|
| 655 | - if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) { |
|
| 656 | - if (is_scalar($val) and $m == md5($val)) { |
|
| 657 | - unset($champs[$key]); |
|
| 658 | - } |
|
| 659 | - } |
|
| 660 | - } |
|
| 661 | - if (!$champs) { |
|
| 662 | - return; |
|
| 663 | - } |
|
| 664 | - |
|
| 665 | - // On veut savoir si notre modif va avoir un impact |
|
| 666 | - // par rapport aux donnees contenues dans la base |
|
| 667 | - // (qui peuvent etre differentes de celles ayant servi a calculer le ctr) |
|
| 668 | - $s = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=$id", $serveur); |
|
| 669 | - $intact = true; |
|
| 670 | - foreach ($champs as $ch => $val) { |
|
| 671 | - $intact &= ($s[$ch] == $val); |
|
| 672 | - } |
|
| 673 | - if ($intact) { |
|
| 674 | - return; |
|
| 675 | - } |
|
| 676 | - |
|
| 677 | - // Detection de conflits : |
|
| 678 | - // On verifie si notre modif ne provient pas d'un formulaire |
|
| 679 | - // genere a partir de donnees modifiees dans l'intervalle ; ici |
|
| 680 | - // on compare a ce qui est dans la base, et on bloque en cas |
|
| 681 | - // de conflit. |
|
| 682 | - $ctrh = $ctrq = $conflits = []; |
|
| 683 | - foreach (array_keys($champs) as $key) { |
|
| 684 | - if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) { |
|
| 685 | - $ctrh[$key] = $m; |
|
| 686 | - $ctrq[] = $key; |
|
| 687 | - } |
|
| 688 | - } |
|
| 689 | - if ($ctrq) { |
|
| 690 | - $ctrq = sql_fetsel($ctrq, $spip_table_objet, "$id_table_objet=$id", $serveur); |
|
| 691 | - foreach ($ctrh as $key => $m) { |
|
| 692 | - if ( |
|
| 693 | - $m != md5($ctrq[$key]) |
|
| 694 | - and $champs[$key] !== $ctrq[$key] |
|
| 695 | - ) { |
|
| 696 | - $conflits[$key] = [ |
|
| 697 | - 'base' => $ctrq[$key], |
|
| 698 | - 'post' => $champs[$key] |
|
| 699 | - ]; |
|
| 700 | - unset($champs[$key]); # stocker quand meme les modifs ? |
|
| 701 | - } |
|
| 702 | - } |
|
| 703 | - } |
|
| 704 | - |
|
| 705 | - return $conflits; |
|
| 648 | + $spip_table_objet = table_objet_sql($type); |
|
| 649 | + $id_table_objet = id_table_objet($type); |
|
| 650 | + |
|
| 651 | + // Controle des MD5 envoyes |
|
| 652 | + // On elimine les donnees non modifiees par le formulaire (mais |
|
| 653 | + // potentiellement modifiees entre temps par un autre utilisateur) |
|
| 654 | + foreach ($champs as $key => $val) { |
|
| 655 | + if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) { |
|
| 656 | + if (is_scalar($val) and $m == md5($val)) { |
|
| 657 | + unset($champs[$key]); |
|
| 658 | + } |
|
| 659 | + } |
|
| 660 | + } |
|
| 661 | + if (!$champs) { |
|
| 662 | + return; |
|
| 663 | + } |
|
| 664 | + |
|
| 665 | + // On veut savoir si notre modif va avoir un impact |
|
| 666 | + // par rapport aux donnees contenues dans la base |
|
| 667 | + // (qui peuvent etre differentes de celles ayant servi a calculer le ctr) |
|
| 668 | + $s = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=$id", $serveur); |
|
| 669 | + $intact = true; |
|
| 670 | + foreach ($champs as $ch => $val) { |
|
| 671 | + $intact &= ($s[$ch] == $val); |
|
| 672 | + } |
|
| 673 | + if ($intact) { |
|
| 674 | + return; |
|
| 675 | + } |
|
| 676 | + |
|
| 677 | + // Detection de conflits : |
|
| 678 | + // On verifie si notre modif ne provient pas d'un formulaire |
|
| 679 | + // genere a partir de donnees modifiees dans l'intervalle ; ici |
|
| 680 | + // on compare a ce qui est dans la base, et on bloque en cas |
|
| 681 | + // de conflit. |
|
| 682 | + $ctrh = $ctrq = $conflits = []; |
|
| 683 | + foreach (array_keys($champs) as $key) { |
|
| 684 | + if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) { |
|
| 685 | + $ctrh[$key] = $m; |
|
| 686 | + $ctrq[] = $key; |
|
| 687 | + } |
|
| 688 | + } |
|
| 689 | + if ($ctrq) { |
|
| 690 | + $ctrq = sql_fetsel($ctrq, $spip_table_objet, "$id_table_objet=$id", $serveur); |
|
| 691 | + foreach ($ctrh as $key => $m) { |
|
| 692 | + if ( |
|
| 693 | + $m != md5($ctrq[$key]) |
|
| 694 | + and $champs[$key] !== $ctrq[$key] |
|
| 695 | + ) { |
|
| 696 | + $conflits[$key] = [ |
|
| 697 | + 'base' => $ctrq[$key], |
|
| 698 | + 'post' => $champs[$key] |
|
| 699 | + ]; |
|
| 700 | + unset($champs[$key]); # stocker quand meme les modifs ? |
|
| 701 | + } |
|
| 702 | + } |
|
| 703 | + } |
|
| 704 | + |
|
| 705 | + return $conflits; |
|
| 706 | 706 | } |
| 707 | 707 | |
| 708 | 708 | /** |
@@ -714,9 +714,9 @@ discard block |
||
| 714 | 714 | * @return string |
| 715 | 715 | */ |
| 716 | 716 | function display_conflit_champ($x) { |
| 717 | - if (strstr($x, "\n") or strlen($x) > 80) { |
|
| 718 | - return "<textarea style='width:99%; height:10em;'>" . entites_html($x) . "</textarea>\n"; |
|
| 719 | - } else { |
|
| 720 | - return "<input type='text' size='40' style='width:99%' value=\"" . entites_html($x) . "\" />\n"; |
|
| 721 | - } |
|
| 717 | + if (strstr($x, "\n") or strlen($x) > 80) { |
|
| 718 | + return "<textarea style='width:99%; height:10em;'>" . entites_html($x) . "</textarea>\n"; |
|
| 719 | + } else { |
|
| 720 | + return "<input type='text' size='40' style='width:99%' value=\"" . entites_html($x) . "\" />\n"; |
|
| 721 | + } |
|
| 722 | 722 | } |
@@ -100,7 +100,7 @@ discard block |
||
| 100 | 100 | $res['message_ok'] = _T('info_modification_enregistree'); |
| 101 | 101 | if ($retour) { |
| 102 | 102 | if (strncmp($retour, 'javascript:', 11) == 0) { |
| 103 | - $res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/' . substr($retour, 11) . '/*]]>*/</script>'; |
|
| 103 | + $res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/'.substr($retour, 11).'/*]]>*/</script>'; |
|
| 104 | 104 | $res['editable'] = true; |
| 105 | 105 | } else { |
| 106 | 106 | $res['redirect'] = parametre_url($retour, $id_table_objet, $id); |
@@ -140,7 +140,7 @@ discard block |
||
| 140 | 140 | if (!isset($erreurs[$champ])) { |
| 141 | 141 | $erreurs[$champ] = ''; |
| 142 | 142 | } |
| 143 | - $erreurs[$champ] .= _T('alerte_modif_info_concourante') . "<br /><textarea readonly='readonly' class='forml'>" . entites_html($conflit['base']) . '</textarea>'; |
|
| 143 | + $erreurs[$champ] .= _T('alerte_modif_info_concourante')."<br /><textarea readonly='readonly' class='forml'>".entites_html($conflit['base']).'</textarea>'; |
|
| 144 | 144 | } |
| 145 | 145 | } |
| 146 | 146 | } |
@@ -220,7 +220,7 @@ discard block |
||
| 220 | 220 | if ( |
| 221 | 221 | $config_fonc |
| 222 | 222 | and !in_array($config_fonc, ['articles_edit_config', 'rubriques_edit_config', 'auteurs_edit_config']) |
| 223 | - and $config_fonc !== $table_objet . '_edit_config' |
|
| 223 | + and $config_fonc !== $table_objet.'_edit_config' |
|
| 224 | 224 | ) { |
| 225 | 225 | if ( |
| 226 | 226 | $args = test_formulaire_inclus_par_modele() |
@@ -235,12 +235,12 @@ discard block |
||
| 235 | 235 | // Appel direct dans un squelette |
| 236 | 236 | if (!$row) { |
| 237 | 237 | if (!$new or $lier_trad) { |
| 238 | - if ($select = charger_fonction('precharger_' . $type, 'inc', true)) { |
|
| 238 | + if ($select = charger_fonction('precharger_'.$type, 'inc', true)) { |
|
| 239 | 239 | $row = $select($id, $id_parent, $lier_trad); |
| 240 | 240 | // si on a une fonction precharger, elle pu faire un reglage de langue |
| 241 | 241 | $lang_default = (!empty($row['lang']) ? $row['lang'] : null); |
| 242 | 242 | } else { |
| 243 | - $row = sql_fetsel('*', $table_objet_sql, $id_table_objet . '=' . intval($id)); |
|
| 243 | + $row = sql_fetsel('*', $table_objet_sql, $id_table_objet.'='.intval($id)); |
|
| 244 | 244 | } |
| 245 | 245 | if (!$new) { |
| 246 | 246 | $md5 = controles_md5($row ?: []); |
@@ -290,7 +290,7 @@ discard block |
||
| 290 | 290 | if ($config_fonc) { |
| 291 | 291 | $contexte['config'] = $config = $config_fonc($contexte); |
| 292 | 292 | if (!$lang_default) { |
| 293 | - $lang_default = $config['langue'] ?? session_get('lang') ; |
|
| 293 | + $lang_default = $config['langue'] ?? session_get('lang'); |
|
| 294 | 294 | } |
| 295 | 295 | } |
| 296 | 296 | $config = $config + [ |
@@ -314,13 +314,12 @@ discard block |
||
| 314 | 314 | unset($contexte['lang']); |
| 315 | 315 | } |
| 316 | 316 | |
| 317 | - $contexte['_hidden'] = "<input type='hidden' name='editer_$type' value='oui' />\n" . |
|
| 318 | - (!$lier_trad ? '' : |
|
| 319 | - ("\n<input type='hidden' name='lier_trad' value='" . |
|
| 320 | - $lier_trad . |
|
| 321 | - "' />" . |
|
| 322 | - "\n<input type='hidden' name='changer_lang' value='" . |
|
| 323 | - $lang_default . |
|
| 317 | + $contexte['_hidden'] = "<input type='hidden' name='editer_$type' value='oui' />\n". |
|
| 318 | + (!$lier_trad ? '' : ("\n<input type='hidden' name='lier_trad' value='". |
|
| 319 | + $lier_trad. |
|
| 320 | + "' />". |
|
| 321 | + "\n<input type='hidden' name='changer_lang' value='". |
|
| 322 | + $lang_default. |
|
| 324 | 323 | "' />")) |
| 325 | 324 | . $hidden |
| 326 | 325 | . ($md5 ?? ''); |
@@ -360,14 +359,14 @@ discard block |
||
| 360 | 359 | $aider = charger_fonction('aider', 'inc'); |
| 361 | 360 | if (strlen($texte) > 28 * 1024) { |
| 362 | 361 | $texte = str_replace("\r\n", "\n", $texte); |
| 363 | - $pos = strpos($texte, "\n\n", 28 * 1024); // coupe para > 28 ko |
|
| 362 | + $pos = strpos($texte, "\n\n", 28 * 1024); // coupe para > 28 ko |
|
| 364 | 363 | if ($pos > 0 and $pos < 32 * 1024) { |
| 365 | - $debut = substr($texte, 0, $pos) . "\n\n<!--SPIP-->\n"; |
|
| 364 | + $debut = substr($texte, 0, $pos)."\n\n<!--SPIP-->\n"; |
|
| 366 | 365 | $suite = substr($texte, $pos + 2); |
| 367 | 366 | } else { |
| 368 | - $pos = strpos($texte, ' ', 28 * 1024); // sinon coupe espace |
|
| 367 | + $pos = strpos($texte, ' ', 28 * 1024); // sinon coupe espace |
|
| 369 | 368 | if (!($pos > 0 and $pos < 32 * 1024)) { |
| 370 | - $pos = 28 * 1024; // au pire (pas d'espace trouv'e) |
|
| 369 | + $pos = 28 * 1024; // au pire (pas d'espace trouv'e) |
|
| 371 | 370 | $decalage = 0; // si y'a pas d'espace, il ne faut pas perdre le caract`ere |
| 372 | 371 | } else { |
| 373 | 372 | $decalage = 1; |
@@ -398,13 +397,13 @@ discard block |
||
| 398 | 397 | } |
| 399 | 398 | |
| 400 | 399 | include_spip('inc/barre'); |
| 401 | - $textes_supplement = "<br /><span style='color: red'>" . _T('info_texte_long') . "</span>\n"; |
|
| 400 | + $textes_supplement = "<br /><span style='color: red'>"._T('info_texte_long')."</span>\n"; |
|
| 402 | 401 | $nombre = 0; |
| 403 | 402 | |
| 404 | 403 | while (strlen($texte) > 29 * 1024) { |
| 405 | 404 | $nombre++; |
| 406 | 405 | [$texte1, $texte] = coupe_trop_long($texte); |
| 407 | - $textes_supplement .= '<br />' . |
|
| 406 | + $textes_supplement .= '<br />'. |
|
| 408 | 407 | "<textarea id='texte$nombre' name='texte_plus[$nombre]'$att_text>$texte1</textarea>\n"; |
| 409 | 408 | } |
| 410 | 409 | |
@@ -487,7 +486,7 @@ discard block |
||
| 487 | 486 | $ctr = []; |
| 488 | 487 | foreach ($data as $key => $val) { |
| 489 | 488 | $m = md5($val ?? ''); |
| 490 | - $k = $prefixe . $key; |
|
| 489 | + $k = $prefixe.$key; |
|
| 491 | 490 | |
| 492 | 491 | switch ($format) { |
| 493 | 492 | case 'html': |
@@ -500,7 +499,7 @@ discard block |
||
| 500 | 499 | } |
| 501 | 500 | |
| 502 | 501 | if ($format === 'html') { |
| 503 | - return "\n\n<!-- controles md5 -->\n" . join("\n", $ctr) . "\n\n"; |
|
| 502 | + return "\n\n<!-- controles md5 -->\n".join("\n", $ctr)."\n\n"; |
|
| 504 | 503 | } else { |
| 505 | 504 | return $ctr; |
| 506 | 505 | } |
@@ -652,7 +651,7 @@ discard block |
||
| 652 | 651 | // On elimine les donnees non modifiees par le formulaire (mais |
| 653 | 652 | // potentiellement modifiees entre temps par un autre utilisateur) |
| 654 | 653 | foreach ($champs as $key => $val) { |
| 655 | - if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) { |
|
| 654 | + if (isset($ctr[$prefix.$key]) and $m = $ctr[$prefix.$key]) { |
|
| 656 | 655 | if (is_scalar($val) and $m == md5($val)) { |
| 657 | 656 | unset($champs[$key]); |
| 658 | 657 | } |
@@ -681,7 +680,7 @@ discard block |
||
| 681 | 680 | // de conflit. |
| 682 | 681 | $ctrh = $ctrq = $conflits = []; |
| 683 | 682 | foreach (array_keys($champs) as $key) { |
| 684 | - if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) { |
|
| 683 | + if (isset($ctr[$prefix.$key]) and $m = $ctr[$prefix.$key]) { |
|
| 685 | 684 | $ctrh[$key] = $m; |
| 686 | 685 | $ctrq[] = $key; |
| 687 | 686 | } |
@@ -715,8 +714,8 @@ discard block |
||
| 715 | 714 | */ |
| 716 | 715 | function display_conflit_champ($x) { |
| 717 | 716 | if (strstr($x, "\n") or strlen($x) > 80) { |
| 718 | - return "<textarea style='width:99%; height:10em;'>" . entites_html($x) . "</textarea>\n"; |
|
| 717 | + return "<textarea style='width:99%; height:10em;'>".entites_html($x)."</textarea>\n"; |
|
| 719 | 718 | } else { |
| 720 | - return "<input type='text' size='40' style='width:99%' value=\"" . entites_html($x) . "\" />\n"; |
|
| 719 | + return "<input type='text' size='40' style='width:99%' value=\"".entites_html($x)."\" />\n"; |
|
| 721 | 720 | } |
| 722 | 721 | } |
@@ -11,7 +11,7 @@ discard block |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | /** |
@@ -21,31 +21,31 @@ discard block |
||
| 21 | 21 | * @return array |
| 22 | 22 | */ |
| 23 | 23 | function plugins_extraire_boutons_dist($arbre) { |
| 24 | - $les_boutons = null; |
|
| 25 | - $ret = ['bouton' => [], 'onglet' => []]; |
|
| 26 | - // recuperer les boutons et onglets si necessaire |
|
| 27 | - spip_xml_match_nodes(',^(bouton|onglet)\s,', $arbre, $les_boutons); |
|
| 28 | - if (is_array($les_boutons) && count($les_boutons)) { |
|
| 29 | - $ret['bouton'] = []; |
|
| 30 | - $ret['onglet'] = []; |
|
| 31 | - foreach ($les_boutons as $bouton => $val) { |
|
| 32 | - $bouton = spip_xml_decompose_tag($bouton); |
|
| 33 | - $type = reset($bouton); |
|
| 34 | - $bouton = end($bouton); |
|
| 35 | - if (isset($bouton['id'])) { |
|
| 36 | - $id = $bouton['id']; |
|
| 37 | - $val = reset($val); |
|
| 38 | - if (is_array($val)) { |
|
| 39 | - $ret[$type][$id]['parent'] = $bouton['parent'] ?? ''; |
|
| 40 | - $ret[$type][$id]['position'] = $bouton['position'] ?? ''; |
|
| 41 | - $ret[$type][$id]['titre'] = isset($val['titre']) ? trim(spip_xml_aplatit($val['titre'])) : ''; |
|
| 42 | - $ret[$type][$id]['icone'] = isset($val['icone']) ? trim(end($val['icone'])) : ''; |
|
| 43 | - $ret[$type][$id]['action'] = isset($val['url']) ? trim(end($val['url'])) : ''; |
|
| 44 | - $ret[$type][$id]['parametres'] = isset($val['args']) ? trim(end($val['args'])) : ''; |
|
| 45 | - } |
|
| 46 | - } |
|
| 47 | - } |
|
| 48 | - } |
|
| 24 | + $les_boutons = null; |
|
| 25 | + $ret = ['bouton' => [], 'onglet' => []]; |
|
| 26 | + // recuperer les boutons et onglets si necessaire |
|
| 27 | + spip_xml_match_nodes(',^(bouton|onglet)\s,', $arbre, $les_boutons); |
|
| 28 | + if (is_array($les_boutons) && count($les_boutons)) { |
|
| 29 | + $ret['bouton'] = []; |
|
| 30 | + $ret['onglet'] = []; |
|
| 31 | + foreach ($les_boutons as $bouton => $val) { |
|
| 32 | + $bouton = spip_xml_decompose_tag($bouton); |
|
| 33 | + $type = reset($bouton); |
|
| 34 | + $bouton = end($bouton); |
|
| 35 | + if (isset($bouton['id'])) { |
|
| 36 | + $id = $bouton['id']; |
|
| 37 | + $val = reset($val); |
|
| 38 | + if (is_array($val)) { |
|
| 39 | + $ret[$type][$id]['parent'] = $bouton['parent'] ?? ''; |
|
| 40 | + $ret[$type][$id]['position'] = $bouton['position'] ?? ''; |
|
| 41 | + $ret[$type][$id]['titre'] = isset($val['titre']) ? trim(spip_xml_aplatit($val['titre'])) : ''; |
|
| 42 | + $ret[$type][$id]['icone'] = isset($val['icone']) ? trim(end($val['icone'])) : ''; |
|
| 43 | + $ret[$type][$id]['action'] = isset($val['url']) ? trim(end($val['url'])) : ''; |
|
| 44 | + $ret[$type][$id]['parametres'] = isset($val['args']) ? trim(end($val['args'])) : ''; |
|
| 45 | + } |
|
| 46 | + } |
|
| 47 | + } |
|
| 48 | + } |
|
| 49 | 49 | |
| 50 | - return $ret; |
|
| 50 | + return $ret; |
|
| 51 | 51 | } |
@@ -46,11 +46,11 @@ discard block |
||
| 46 | 46 | } |
| 47 | 47 | ob_start(); |
| 48 | 48 | if (strpos($page['texte'], '?xml') !== false) { |
| 49 | - $page['texte'] = str_replace('<' . '?xml', "<\1?xml", $page['texte']); |
|
| 49 | + $page['texte'] = str_replace('<'.'?xml', "<\1?xml", $page['texte']); |
|
| 50 | 50 | } |
| 51 | 51 | |
| 52 | 52 | try { |
| 53 | - $res = eval('?' . '>' . $page['texte']); |
|
| 53 | + $res = eval('?'.'>'.$page['texte']); |
|
| 54 | 54 | $page['texte'] = ob_get_contents(); |
| 55 | 55 | } catch (\Throwable $e) { |
| 56 | 56 | $code = $page['texte']; |
@@ -58,12 +58,12 @@ discard block |
||
| 58 | 58 | if (!function_exists('numerote_ligne_php')) { |
| 59 | 59 | function numerote_ligne_php($match) { |
| 60 | 60 | $GLOBALS['numero_ligne_php']++; |
| 61 | - return "\n/*" . str_pad($GLOBALS['numero_ligne_php'], 3, '0', STR_PAD_LEFT) . '*/'; |
|
| 61 | + return "\n/*".str_pad($GLOBALS['numero_ligne_php'], 3, '0', STR_PAD_LEFT).'*/'; |
|
| 62 | 62 | } |
| 63 | 63 | } |
| 64 | - $code = '/*001*/' . preg_replace_callback(",\n,", 'numerote_ligne_php', $code); |
|
| 64 | + $code = '/*001*/'.preg_replace_callback(",\n,", 'numerote_ligne_php', $code); |
|
| 65 | 65 | $code = trim(highlight_string($code, true)); |
| 66 | - erreur_squelette('L' . $e->getLine() . ': ' . $e->getMessage() . '<br />' . $code, [$page['source'],'',$e->getFile(),'',$GLOBALS['spip_lang']]); |
|
| 66 | + erreur_squelette('L'.$e->getLine().': '.$e->getMessage().'<br />'.$code, [$page['source'], '', $e->getFile(), '', $GLOBALS['spip_lang']]); |
|
| 67 | 67 | $page['texte'] = '<!-- Erreur -->'; |
| 68 | 68 | } |
| 69 | 69 | ob_end_clean(); |
@@ -71,7 +71,7 @@ discard block |
||
| 71 | 71 | $page['process_ins'] = 'html'; |
| 72 | 72 | |
| 73 | 73 | if (strpos($page['texte'], '?xml') !== false) { |
| 74 | - $page['texte'] = str_replace("<\1?xml", '<' . '?xml', $page['texte']); |
|
| 74 | + $page['texte'] = str_replace("<\1?xml", '<'.'?xml', $page['texte']); |
|
| 75 | 75 | } |
| 76 | 76 | } |
| 77 | 77 | |
@@ -11,7 +11,7 @@ discard block |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | /** |
@@ -29,50 +29,50 @@ discard block |
||
| 29 | 29 | * @return void |
| 30 | 30 | */ |
| 31 | 31 | |
| 32 | - /** @var bool Évaluation réussie ? */ |
|
| 32 | + /** @var bool Évaluation réussie ? */ |
|
| 33 | 33 | $res = true; |
| 34 | 34 | |
| 35 | 35 | // Cas d'une page contenant du PHP : |
| 36 | 36 | if (empty($page['process_ins']) or $page['process_ins'] != 'html') { |
| 37 | - include_spip('inc/lang'); |
|
| 37 | + include_spip('inc/lang'); |
|
| 38 | 38 | |
| 39 | - // restaurer l'etat des notes avant calcul |
|
| 40 | - if ( |
|
| 41 | - isset($page['notes']) |
|
| 42 | - and $page['notes'] |
|
| 43 | - and $notes = charger_fonction('notes', 'inc', true) |
|
| 44 | - ) { |
|
| 45 | - $notes($page['notes'], 'restaurer_etat'); |
|
| 46 | - } |
|
| 47 | - ob_start(); |
|
| 48 | - if (strpos($page['texte'], '?xml') !== false) { |
|
| 49 | - $page['texte'] = str_replace('<' . '?xml', "<\1?xml", $page['texte']); |
|
| 50 | - } |
|
| 39 | + // restaurer l'etat des notes avant calcul |
|
| 40 | + if ( |
|
| 41 | + isset($page['notes']) |
|
| 42 | + and $page['notes'] |
|
| 43 | + and $notes = charger_fonction('notes', 'inc', true) |
|
| 44 | + ) { |
|
| 45 | + $notes($page['notes'], 'restaurer_etat'); |
|
| 46 | + } |
|
| 47 | + ob_start(); |
|
| 48 | + if (strpos($page['texte'], '?xml') !== false) { |
|
| 49 | + $page['texte'] = str_replace('<' . '?xml', "<\1?xml", $page['texte']); |
|
| 50 | + } |
|
| 51 | 51 | |
| 52 | - try { |
|
| 53 | - $res = eval('?' . '>' . $page['texte']); |
|
| 54 | - $page['texte'] = ob_get_contents(); |
|
| 55 | - } catch (\Throwable $e) { |
|
| 56 | - $code = $page['texte']; |
|
| 57 | - $GLOBALS['numero_ligne_php'] = 1; |
|
| 58 | - if (!function_exists('numerote_ligne_php')) { |
|
| 59 | - function numerote_ligne_php($match) { |
|
| 60 | - $GLOBALS['numero_ligne_php']++; |
|
| 61 | - return "\n/*" . str_pad($GLOBALS['numero_ligne_php'], 3, '0', STR_PAD_LEFT) . '*/'; |
|
| 62 | - } |
|
| 63 | - } |
|
| 64 | - $code = '/*001*/' . preg_replace_callback(",\n,", 'numerote_ligne_php', $code); |
|
| 65 | - $code = trim(highlight_string($code, true)); |
|
| 66 | - erreur_squelette('L' . $e->getLine() . ': ' . $e->getMessage() . '<br />' . $code, [$page['source'],'',$e->getFile(),'',$GLOBALS['spip_lang']]); |
|
| 67 | - $page['texte'] = '<!-- Erreur -->'; |
|
| 68 | - } |
|
| 69 | - ob_end_clean(); |
|
| 52 | + try { |
|
| 53 | + $res = eval('?' . '>' . $page['texte']); |
|
| 54 | + $page['texte'] = ob_get_contents(); |
|
| 55 | + } catch (\Throwable $e) { |
|
| 56 | + $code = $page['texte']; |
|
| 57 | + $GLOBALS['numero_ligne_php'] = 1; |
|
| 58 | + if (!function_exists('numerote_ligne_php')) { |
|
| 59 | + function numerote_ligne_php($match) { |
|
| 60 | + $GLOBALS['numero_ligne_php']++; |
|
| 61 | + return "\n/*" . str_pad($GLOBALS['numero_ligne_php'], 3, '0', STR_PAD_LEFT) . '*/'; |
|
| 62 | + } |
|
| 63 | + } |
|
| 64 | + $code = '/*001*/' . preg_replace_callback(",\n,", 'numerote_ligne_php', $code); |
|
| 65 | + $code = trim(highlight_string($code, true)); |
|
| 66 | + erreur_squelette('L' . $e->getLine() . ': ' . $e->getMessage() . '<br />' . $code, [$page['source'],'',$e->getFile(),'',$GLOBALS['spip_lang']]); |
|
| 67 | + $page['texte'] = '<!-- Erreur -->'; |
|
| 68 | + } |
|
| 69 | + ob_end_clean(); |
|
| 70 | 70 | |
| 71 | - $page['process_ins'] = 'html'; |
|
| 71 | + $page['process_ins'] = 'html'; |
|
| 72 | 72 | |
| 73 | - if (strpos($page['texte'], '?xml') !== false) { |
|
| 74 | - $page['texte'] = str_replace("<\1?xml", '<' . '?xml', $page['texte']); |
|
| 75 | - } |
|
| 73 | + if (strpos($page['texte'], '?xml') !== false) { |
|
| 74 | + $page['texte'] = str_replace("<\1?xml", '<' . '?xml', $page['texte']); |
|
| 75 | + } |
|
| 76 | 76 | } |
| 77 | 77 | |
| 78 | 78 | // le résultat de calcul d'un squelette est toujours de type string |
@@ -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 | |
@@ -54,65 +54,65 @@ discard block |
||
| 54 | 54 | * true si le statut change effectivement |
| 55 | 55 | **/ |
| 56 | 56 | function calculer_rubriques_if($id_rubrique, $modifs, $infos = [], $postdate = false) { |
| 57 | - $statuts_publies = null; |
|
| 58 | - $neuf = false; |
|
| 59 | - |
|
| 60 | - // Compat avec l'ancienne signature |
|
| 61 | - if (is_string($infos)) { |
|
| 62 | - $infos = ['statut_ancien' => $infos]; |
|
| 63 | - } |
|
| 64 | - if (!isset($infos['statut_ancien'])) { |
|
| 65 | - $infos['statut_ancien'] = ''; |
|
| 66 | - } |
|
| 67 | - |
|
| 68 | - // On recherche quels statuts tester |
|
| 69 | - if ( |
|
| 70 | - isset($infos['objet']) |
|
| 71 | - and include_spip('inc/filtres') |
|
| 72 | - and $declaration_statut = objet_info($infos['objet'], 'statut') |
|
| 73 | - and is_array($declaration_statut) |
|
| 74 | - ) { |
|
| 75 | - foreach ($declaration_statut as $champ_statut) { |
|
| 76 | - if ($champ_statut['champ'] == 'statut') { |
|
| 77 | - $statuts_publies = array_map('trim', explode(',', $champ_statut['publie'])); |
|
| 78 | - break; // stop on a trouvé le bon champ |
|
| 79 | - } |
|
| 80 | - } |
|
| 81 | - } else { |
|
| 82 | - $statuts_publies = ['publie']; |
|
| 83 | - } |
|
| 84 | - |
|
| 85 | - if (in_array($infos['statut_ancien'], $statuts_publies)) { |
|
| 86 | - if ( |
|
| 87 | - isset($modifs['statut']) |
|
| 88 | - or isset($modifs['id_rubrique']) |
|
| 89 | - or ($postdate and strtotime($postdate) > time()) |
|
| 90 | - ) { |
|
| 91 | - $neuf |= depublier_branche_rubrique_if($id_rubrique); |
|
| 92 | - } |
|
| 93 | - // ne publier que si c'est pas un postdate, ou si la date n'est pas dans le futur |
|
| 94 | - if ($postdate) { |
|
| 95 | - calculer_prochain_postdate(true); |
|
| 96 | - $neuf |= (strtotime($postdate) <= time()); // par securite |
|
| 97 | - } elseif (isset($modifs['id_rubrique'])) { |
|
| 98 | - $neuf |= publier_branche_rubrique($modifs['id_rubrique']); |
|
| 99 | - } |
|
| 100 | - } elseif (isset($modifs['statut']) and in_array($modifs['statut'], $statuts_publies)) { |
|
| 101 | - if ($postdate) { |
|
| 102 | - calculer_prochain_postdate(true); |
|
| 103 | - $neuf |= (strtotime($postdate) <= time()); // par securite |
|
| 104 | - } else { |
|
| 105 | - $neuf |= publier_branche_rubrique($id_rubrique); |
|
| 106 | - } |
|
| 107 | - } |
|
| 108 | - |
|
| 109 | - if ($neuf) { |
|
| 110 | - // Sauver la date de la derniere mise a jour (pour menu_rubriques) |
|
| 111 | - ecrire_meta('date_calcul_rubriques', date('U')); |
|
| 112 | - } |
|
| 113 | - |
|
| 114 | - $langues = calculer_langues_utilisees(); |
|
| 115 | - ecrire_meta('langues_utilisees', $langues); |
|
| 57 | + $statuts_publies = null; |
|
| 58 | + $neuf = false; |
|
| 59 | + |
|
| 60 | + // Compat avec l'ancienne signature |
|
| 61 | + if (is_string($infos)) { |
|
| 62 | + $infos = ['statut_ancien' => $infos]; |
|
| 63 | + } |
|
| 64 | + if (!isset($infos['statut_ancien'])) { |
|
| 65 | + $infos['statut_ancien'] = ''; |
|
| 66 | + } |
|
| 67 | + |
|
| 68 | + // On recherche quels statuts tester |
|
| 69 | + if ( |
|
| 70 | + isset($infos['objet']) |
|
| 71 | + and include_spip('inc/filtres') |
|
| 72 | + and $declaration_statut = objet_info($infos['objet'], 'statut') |
|
| 73 | + and is_array($declaration_statut) |
|
| 74 | + ) { |
|
| 75 | + foreach ($declaration_statut as $champ_statut) { |
|
| 76 | + if ($champ_statut['champ'] == 'statut') { |
|
| 77 | + $statuts_publies = array_map('trim', explode(',', $champ_statut['publie'])); |
|
| 78 | + break; // stop on a trouvé le bon champ |
|
| 79 | + } |
|
| 80 | + } |
|
| 81 | + } else { |
|
| 82 | + $statuts_publies = ['publie']; |
|
| 83 | + } |
|
| 84 | + |
|
| 85 | + if (in_array($infos['statut_ancien'], $statuts_publies)) { |
|
| 86 | + if ( |
|
| 87 | + isset($modifs['statut']) |
|
| 88 | + or isset($modifs['id_rubrique']) |
|
| 89 | + or ($postdate and strtotime($postdate) > time()) |
|
| 90 | + ) { |
|
| 91 | + $neuf |= depublier_branche_rubrique_if($id_rubrique); |
|
| 92 | + } |
|
| 93 | + // ne publier que si c'est pas un postdate, ou si la date n'est pas dans le futur |
|
| 94 | + if ($postdate) { |
|
| 95 | + calculer_prochain_postdate(true); |
|
| 96 | + $neuf |= (strtotime($postdate) <= time()); // par securite |
|
| 97 | + } elseif (isset($modifs['id_rubrique'])) { |
|
| 98 | + $neuf |= publier_branche_rubrique($modifs['id_rubrique']); |
|
| 99 | + } |
|
| 100 | + } elseif (isset($modifs['statut']) and in_array($modifs['statut'], $statuts_publies)) { |
|
| 101 | + if ($postdate) { |
|
| 102 | + calculer_prochain_postdate(true); |
|
| 103 | + $neuf |= (strtotime($postdate) <= time()); // par securite |
|
| 104 | + } else { |
|
| 105 | + $neuf |= publier_branche_rubrique($id_rubrique); |
|
| 106 | + } |
|
| 107 | + } |
|
| 108 | + |
|
| 109 | + if ($neuf) { |
|
| 110 | + // Sauver la date de la derniere mise a jour (pour menu_rubriques) |
|
| 111 | + ecrire_meta('date_calcul_rubriques', date('U')); |
|
| 112 | + } |
|
| 113 | + |
|
| 114 | + $langues = calculer_langues_utilisees(); |
|
| 115 | + ecrire_meta('langues_utilisees', $langues); |
|
| 116 | 116 | } |
| 117 | 117 | |
| 118 | 118 | |
@@ -130,22 +130,22 @@ discard block |
||
| 130 | 130 | * true si le statut change effectivement |
| 131 | 131 | */ |
| 132 | 132 | function publier_branche_rubrique($id_rubrique) { |
| 133 | - $id_pred = $id_rubrique; |
|
| 134 | - while (true) { |
|
| 135 | - sql_updateq( |
|
| 136 | - 'spip_rubriques', |
|
| 137 | - ['statut' => 'publie', 'date' => date('Y-m-d H:i:s')], |
|
| 138 | - 'id_rubrique=' . intval($id_rubrique) |
|
| 139 | - ); |
|
| 140 | - $id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique)); |
|
| 141 | - if (!$id_parent) { |
|
| 142 | - break; |
|
| 143 | - } |
|
| 144 | - $id_rubrique = $id_parent; |
|
| 145 | - } |
|
| 133 | + $id_pred = $id_rubrique; |
|
| 134 | + while (true) { |
|
| 135 | + sql_updateq( |
|
| 136 | + 'spip_rubriques', |
|
| 137 | + ['statut' => 'publie', 'date' => date('Y-m-d H:i:s')], |
|
| 138 | + 'id_rubrique=' . intval($id_rubrique) |
|
| 139 | + ); |
|
| 140 | + $id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique)); |
|
| 141 | + if (!$id_parent) { |
|
| 142 | + break; |
|
| 143 | + } |
|
| 144 | + $id_rubrique = $id_parent; |
|
| 145 | + } |
|
| 146 | 146 | |
| 147 | 147 | # spip_log(" publier_branche_rubrique($id_rubrique $id_pred"); |
| 148 | - return $id_pred != $id_rubrique; |
|
| 148 | + return $id_pred != $id_rubrique; |
|
| 149 | 149 | } |
| 150 | 150 | |
| 151 | 151 | /** |
@@ -163,20 +163,20 @@ discard block |
||
| 163 | 163 | * true si le statut change effectivement |
| 164 | 164 | */ |
| 165 | 165 | function depublier_branche_rubrique_if($id_rubrique) { |
| 166 | - $date = date('Y-m-d H:i:s'); // figer la date |
|
| 167 | - |
|
| 168 | - # spip_log("depublier_branche_rubrique($id_rubrique ?"); |
|
| 169 | - $id_pred = $id_rubrique; |
|
| 170 | - while ($id_pred) { |
|
| 171 | - if (!depublier_rubrique_if($id_pred, $date)) { |
|
| 172 | - return $id_pred != $id_rubrique; |
|
| 173 | - } |
|
| 174 | - // passer au parent si on a depublie |
|
| 175 | - $r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred)); |
|
| 176 | - $id_pred = $r['id_parent']; |
|
| 177 | - } |
|
| 178 | - |
|
| 179 | - return $id_pred != $id_rubrique; |
|
| 166 | + $date = date('Y-m-d H:i:s'); // figer la date |
|
| 167 | + |
|
| 168 | + # spip_log("depublier_branche_rubrique($id_rubrique ?"); |
|
| 169 | + $id_pred = $id_rubrique; |
|
| 170 | + while ($id_pred) { |
|
| 171 | + if (!depublier_rubrique_if($id_pred, $date)) { |
|
| 172 | + return $id_pred != $id_rubrique; |
|
| 173 | + } |
|
| 174 | + // passer au parent si on a depublie |
|
| 175 | + $r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred)); |
|
| 176 | + $id_pred = $r['id_parent']; |
|
| 177 | + } |
|
| 178 | + |
|
| 179 | + return $id_pred != $id_rubrique; |
|
| 180 | 180 | } |
| 181 | 181 | |
| 182 | 182 | /** |
@@ -193,61 +193,61 @@ discard block |
||
| 193 | 193 | * true si la rubrique a été dépubliée |
| 194 | 194 | */ |
| 195 | 195 | function depublier_rubrique_if($id_rubrique, $date = null) { |
| 196 | - if (is_null($date)) { |
|
| 197 | - $date = date('Y-m-d H:i:s'); |
|
| 198 | - } |
|
| 199 | - $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 200 | - ' AND date <= ' . sql_quote($date) : ''; |
|
| 201 | - |
|
| 202 | - if (!$id_rubrique = intval($id_rubrique)) { |
|
| 203 | - return false; |
|
| 204 | - } |
|
| 205 | - |
|
| 206 | - // verifier qu'elle existe et est bien publiee |
|
| 207 | - $r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 208 | - if (!$r or $r['statut'] !== 'publie') { |
|
| 209 | - return false; |
|
| 210 | - } |
|
| 211 | - |
|
| 212 | - // On met le nombre de chaque type d'enfants dans un tableau |
|
| 213 | - // Le type de l'objet est au pluriel |
|
| 214 | - $compte = [ |
|
| 215 | - 'articles' => sql_countsel( |
|
| 216 | - 'spip_articles', |
|
| 217 | - 'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates" |
|
| 218 | - ), |
|
| 219 | - 'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"), |
|
| 220 | - 'documents' => sql_countsel( |
|
| 221 | - 'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', |
|
| 222 | - 'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') " |
|
| 223 | - ) |
|
| 224 | - ]; |
|
| 225 | - |
|
| 226 | - // On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants |
|
| 227 | - $compte = pipeline( |
|
| 228 | - 'objet_compte_enfants', |
|
| 229 | - [ |
|
| 230 | - 'args' => [ |
|
| 231 | - 'objet' => 'rubrique', |
|
| 232 | - 'id_objet' => $id_rubrique, |
|
| 233 | - 'statut' => 'publie', |
|
| 234 | - 'date' => $date |
|
| 235 | - ], |
|
| 236 | - 'data' => $compte |
|
| 237 | - ] |
|
| 238 | - ); |
|
| 239 | - |
|
| 240 | - // S'il y a au moins un enfant de n'importe quoi, on ne dépublie pas |
|
| 241 | - foreach ($compte as $objet => $n) { |
|
| 242 | - if ($n) { |
|
| 243 | - return false; |
|
| 244 | - } |
|
| 245 | - } |
|
| 246 | - |
|
| 247 | - sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique)); |
|
| 196 | + if (is_null($date)) { |
|
| 197 | + $date = date('Y-m-d H:i:s'); |
|
| 198 | + } |
|
| 199 | + $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 200 | + ' AND date <= ' . sql_quote($date) : ''; |
|
| 201 | + |
|
| 202 | + if (!$id_rubrique = intval($id_rubrique)) { |
|
| 203 | + return false; |
|
| 204 | + } |
|
| 205 | + |
|
| 206 | + // verifier qu'elle existe et est bien publiee |
|
| 207 | + $r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 208 | + if (!$r or $r['statut'] !== 'publie') { |
|
| 209 | + return false; |
|
| 210 | + } |
|
| 211 | + |
|
| 212 | + // On met le nombre de chaque type d'enfants dans un tableau |
|
| 213 | + // Le type de l'objet est au pluriel |
|
| 214 | + $compte = [ |
|
| 215 | + 'articles' => sql_countsel( |
|
| 216 | + 'spip_articles', |
|
| 217 | + 'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates" |
|
| 218 | + ), |
|
| 219 | + 'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"), |
|
| 220 | + 'documents' => sql_countsel( |
|
| 221 | + 'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', |
|
| 222 | + 'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') " |
|
| 223 | + ) |
|
| 224 | + ]; |
|
| 225 | + |
|
| 226 | + // On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants |
|
| 227 | + $compte = pipeline( |
|
| 228 | + 'objet_compte_enfants', |
|
| 229 | + [ |
|
| 230 | + 'args' => [ |
|
| 231 | + 'objet' => 'rubrique', |
|
| 232 | + 'id_objet' => $id_rubrique, |
|
| 233 | + 'statut' => 'publie', |
|
| 234 | + 'date' => $date |
|
| 235 | + ], |
|
| 236 | + 'data' => $compte |
|
| 237 | + ] |
|
| 238 | + ); |
|
| 239 | + |
|
| 240 | + // S'il y a au moins un enfant de n'importe quoi, on ne dépublie pas |
|
| 241 | + foreach ($compte as $objet => $n) { |
|
| 242 | + if ($n) { |
|
| 243 | + return false; |
|
| 244 | + } |
|
| 245 | + } |
|
| 246 | + |
|
| 247 | + sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique)); |
|
| 248 | 248 | |
| 249 | 249 | # spip_log("depublier_rubrique $id_pred"); |
| 250 | - return true; |
|
| 250 | + return true; |
|
| 251 | 251 | } |
| 252 | 252 | |
| 253 | 253 | |
@@ -270,18 +270,18 @@ discard block |
||
| 270 | 270 | **/ |
| 271 | 271 | function calculer_rubriques() { |
| 272 | 272 | |
| 273 | - calculer_rubriques_publiees(); |
|
| 273 | + calculer_rubriques_publiees(); |
|
| 274 | 274 | |
| 275 | - // Apres chaque (de)publication |
|
| 276 | - // recalculer les langues utilisees sur le site |
|
| 277 | - $langues = calculer_langues_utilisees(); |
|
| 278 | - ecrire_meta('langues_utilisees', $langues); |
|
| 275 | + // Apres chaque (de)publication |
|
| 276 | + // recalculer les langues utilisees sur le site |
|
| 277 | + $langues = calculer_langues_utilisees(); |
|
| 278 | + ecrire_meta('langues_utilisees', $langues); |
|
| 279 | 279 | |
| 280 | - // Sauver la date de la derniere mise a jour (pour menu_rubriques) |
|
| 281 | - ecrire_meta('date_calcul_rubriques', date('U')); |
|
| 280 | + // Sauver la date de la derniere mise a jour (pour menu_rubriques) |
|
| 281 | + ecrire_meta('date_calcul_rubriques', date('U')); |
|
| 282 | 282 | |
| 283 | - // on calcule la date du prochain article post-date |
|
| 284 | - calculer_prochain_postdate(); |
|
| 283 | + // on calcule la date du prochain article post-date |
|
| 284 | + calculer_prochain_postdate(); |
|
| 285 | 285 | } |
| 286 | 286 | |
| 287 | 287 | |
@@ -298,61 +298,61 @@ discard block |
||
| 298 | 298 | **/ |
| 299 | 299 | function calculer_rubriques_publiees() { |
| 300 | 300 | |
| 301 | - // Mettre les compteurs a zero |
|
| 302 | - sql_updateq('spip_rubriques', ['date_tmp' => '0000-00-00 00:00:00', 'statut_tmp' => 'prepa']); |
|
| 303 | - |
|
| 304 | - // |
|
| 305 | - // Publier et dater les rubriques qui ont un article publie |
|
| 306 | - // |
|
| 307 | - |
|
| 308 | - // Afficher les articles post-dates ? |
|
| 309 | - $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 310 | - 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 311 | - |
|
| 312 | - $r = sql_select( |
|
| 313 | - 'R.id_rubrique AS id, max(A.date) AS date_h', |
|
| 314 | - 'spip_rubriques AS R JOIN spip_articles AS A ON R.id_rubrique = A.id_rubrique', |
|
| 315 | - "A.date>R.date_tmp AND A.statut='publie' $postdates ", |
|
| 316 | - 'R.id_rubrique' |
|
| 317 | - ); |
|
| 318 | - while ($row = sql_fetch($r)) { |
|
| 319 | - sql_updateq( |
|
| 320 | - 'spip_rubriques', |
|
| 321 | - ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
|
| 322 | - 'id_rubrique=' . intval($row['id']) |
|
| 323 | - ); |
|
| 324 | - } |
|
| 325 | - |
|
| 326 | - // point d'entree pour permettre a des plugins de gerer le statut |
|
| 327 | - // autrement (par ex: toute rubrique est publiee des sa creation) |
|
| 328 | - // Ce pipeline fait ce qu'il veut, mais s'il touche aux statuts/dates |
|
| 329 | - // c'est statut_tmp/date_tmp qu'il doit modifier |
|
| 330 | - // [C'est un trigger... a renommer en trig_calculer_rubriques ?] |
|
| 331 | - pipeline('calculer_rubriques', null); |
|
| 332 | - |
|
| 333 | - |
|
| 334 | - // Les rubriques qui ont une rubrique fille plus recente |
|
| 335 | - // on tourne tant que les donnees remontent vers la racine. |
|
| 336 | - do { |
|
| 337 | - $continuer = false; |
|
| 338 | - $r = sql_select( |
|
| 339 | - 'R.id_rubrique AS id, max(SR.date_tmp) AS date_h', |
|
| 340 | - 'spip_rubriques AS R JOIN spip_rubriques AS SR ON R.id_rubrique = SR.id_parent', |
|
| 341 | - "(SR.date_tmp>R.date_tmp OR R.statut_tmp<>'publie') AND SR.statut_tmp='publie' ", |
|
| 342 | - 'R.id_rubrique' |
|
| 343 | - ); |
|
| 344 | - while ($row = sql_fetch($r)) { |
|
| 345 | - sql_updateq( |
|
| 346 | - 'spip_rubriques', |
|
| 347 | - ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
|
| 348 | - 'id_rubrique=' . intval($row['id']) |
|
| 349 | - ); |
|
| 350 | - $continuer = true; |
|
| 351 | - } |
|
| 352 | - } while ($continuer); |
|
| 353 | - |
|
| 354 | - // Enregistrement des modifs |
|
| 355 | - sql_update('spip_rubriques', ['date' => 'date_tmp', 'statut' => 'statut_tmp']); |
|
| 301 | + // Mettre les compteurs a zero |
|
| 302 | + sql_updateq('spip_rubriques', ['date_tmp' => '0000-00-00 00:00:00', 'statut_tmp' => 'prepa']); |
|
| 303 | + |
|
| 304 | + // |
|
| 305 | + // Publier et dater les rubriques qui ont un article publie |
|
| 306 | + // |
|
| 307 | + |
|
| 308 | + // Afficher les articles post-dates ? |
|
| 309 | + $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 310 | + 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 311 | + |
|
| 312 | + $r = sql_select( |
|
| 313 | + 'R.id_rubrique AS id, max(A.date) AS date_h', |
|
| 314 | + 'spip_rubriques AS R JOIN spip_articles AS A ON R.id_rubrique = A.id_rubrique', |
|
| 315 | + "A.date>R.date_tmp AND A.statut='publie' $postdates ", |
|
| 316 | + 'R.id_rubrique' |
|
| 317 | + ); |
|
| 318 | + while ($row = sql_fetch($r)) { |
|
| 319 | + sql_updateq( |
|
| 320 | + 'spip_rubriques', |
|
| 321 | + ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
|
| 322 | + 'id_rubrique=' . intval($row['id']) |
|
| 323 | + ); |
|
| 324 | + } |
|
| 325 | + |
|
| 326 | + // point d'entree pour permettre a des plugins de gerer le statut |
|
| 327 | + // autrement (par ex: toute rubrique est publiee des sa creation) |
|
| 328 | + // Ce pipeline fait ce qu'il veut, mais s'il touche aux statuts/dates |
|
| 329 | + // c'est statut_tmp/date_tmp qu'il doit modifier |
|
| 330 | + // [C'est un trigger... a renommer en trig_calculer_rubriques ?] |
|
| 331 | + pipeline('calculer_rubriques', null); |
|
| 332 | + |
|
| 333 | + |
|
| 334 | + // Les rubriques qui ont une rubrique fille plus recente |
|
| 335 | + // on tourne tant que les donnees remontent vers la racine. |
|
| 336 | + do { |
|
| 337 | + $continuer = false; |
|
| 338 | + $r = sql_select( |
|
| 339 | + 'R.id_rubrique AS id, max(SR.date_tmp) AS date_h', |
|
| 340 | + 'spip_rubriques AS R JOIN spip_rubriques AS SR ON R.id_rubrique = SR.id_parent', |
|
| 341 | + "(SR.date_tmp>R.date_tmp OR R.statut_tmp<>'publie') AND SR.statut_tmp='publie' ", |
|
| 342 | + 'R.id_rubrique' |
|
| 343 | + ); |
|
| 344 | + while ($row = sql_fetch($r)) { |
|
| 345 | + sql_updateq( |
|
| 346 | + 'spip_rubriques', |
|
| 347 | + ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
|
| 348 | + 'id_rubrique=' . intval($row['id']) |
|
| 349 | + ); |
|
| 350 | + $continuer = true; |
|
| 351 | + } |
|
| 352 | + } while ($continuer); |
|
| 353 | + |
|
| 354 | + // Enregistrement des modifs |
|
| 355 | + sql_update('spip_rubriques', ['date' => 'date_tmp', 'statut' => 'statut_tmp']); |
|
| 356 | 356 | } |
| 357 | 357 | |
| 358 | 358 | /** |
@@ -367,123 +367,123 @@ discard block |
||
| 367 | 367 | * @return void |
| 368 | 368 | **/ |
| 369 | 369 | function propager_les_secteurs() { |
| 370 | - // Profondeur 0 |
|
| 371 | - // Toutes les rubriques racines sont de profondeur 0 |
|
| 372 | - // et fixer les id_secteur des rubriques racines |
|
| 373 | - sql_update('spip_rubriques', ['id_secteur' => 'id_rubrique', 'profondeur' => 0], 'id_parent=0'); |
|
| 374 | - // Toute rubrique non racine est de profondeur >0 |
|
| 375 | - sql_updateq('spip_rubriques', ['profondeur' => 1], 'id_parent<>0 AND profondeur=0'); |
|
| 376 | - |
|
| 377 | - // securite : pas plus d'iteration que de rubriques dans la base |
|
| 378 | - $maxiter = sql_countsel('spip_rubriques'); |
|
| 379 | - |
|
| 380 | - // reparer les rubriques qui n'ont pas l'id_secteur de leur parent |
|
| 381 | - // on fait profondeur par profondeur |
|
| 382 | - |
|
| 383 | - $prof = 0; |
|
| 384 | - do { |
|
| 385 | - $continuer = false; |
|
| 386 | - |
|
| 387 | - // Par recursivite : si toutes les rubriques de profondeur $prof sont bonnes |
|
| 388 | - // on fixe le profondeur $prof+1 |
|
| 389 | - |
|
| 390 | - // Toutes les rubriques dont le parent est de profondeur $prof ont une profondeur $prof+1 |
|
| 391 | - // on teste A.profondeur > $prof+1 car : |
|
| 392 | - // - toutes les rubriques de profondeur 0 à $prof sont bonnes |
|
| 393 | - // - si A.profondeur = $prof+1 c'est bon |
|
| 394 | - // - cela nous protege de la boucle infinie en cas de reference circulaire dans les rubriques |
|
| 395 | - $maxiter2 = $maxiter; |
|
| 396 | - while ( |
|
| 397 | - $maxiter2-- |
|
| 398 | - and $rows = sql_allfetsel( |
|
| 399 | - 'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur', |
|
| 400 | - 'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique', |
|
| 401 | - 'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)', |
|
| 402 | - '', |
|
| 403 | - 'R.id_secteur', |
|
| 404 | - '0,100' |
|
| 405 | - ) |
|
| 406 | - ) { |
|
| 407 | - $id_secteur = null; |
|
| 408 | - $ids = []; |
|
| 409 | - while ($row = array_shift($rows)) { |
|
| 410 | - if ($row['id_secteur'] !== $id_secteur) { |
|
| 411 | - if (count($ids)) { |
|
| 412 | - sql_updateq( |
|
| 413 | - 'spip_rubriques', |
|
| 414 | - ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1], |
|
| 415 | - sql_in('id_rubrique', $ids) |
|
| 416 | - ); |
|
| 417 | - } |
|
| 418 | - $id_secteur = $row['id_secteur']; |
|
| 419 | - $ids = []; |
|
| 420 | - } |
|
| 421 | - $ids[] = $row['id']; |
|
| 422 | - } |
|
| 423 | - if (count($ids)) { |
|
| 424 | - sql_updateq( |
|
| 425 | - 'spip_rubriques', |
|
| 426 | - ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1], |
|
| 427 | - sql_in('id_rubrique', $ids) |
|
| 428 | - ); |
|
| 429 | - } |
|
| 430 | - } |
|
| 431 | - |
|
| 432 | - |
|
| 433 | - // Toutes les rubriques de profondeur $prof+1 qui n'ont pas un parent de profondeur $prof sont decalees |
|
| 434 | - $maxiter2 = $maxiter; |
|
| 435 | - while ( |
|
| 436 | - $maxiter2-- |
|
| 437 | - and $rows = sql_allfetsel( |
|
| 438 | - 'id_rubrique as id', |
|
| 439 | - 'spip_rubriques', |
|
| 440 | - 'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select( |
|
| 441 | - 'zzz.id_rubrique', |
|
| 442 | - 'spip_rubriques AS zzz', |
|
| 443 | - 'zzz.profondeur=' . intval($prof) |
|
| 444 | - ) . ')', |
|
| 445 | - '', |
|
| 446 | - '', |
|
| 447 | - '0,100' |
|
| 448 | - ) |
|
| 449 | - ) { |
|
| 450 | - $rows = array_column($rows, 'id'); |
|
| 451 | - sql_updateq('spip_rubriques', ['profondeur' => $prof + 2], sql_in('id_rubrique', $rows)); |
|
| 452 | - } |
|
| 453 | - |
|
| 454 | - // ici on a fini de valider $prof+1, toutes les rubriques de prondeur 0 a $prof+1 sont OK |
|
| 455 | - // si pas de rubrique a profondeur $prof+1 pas la peine de continuer |
|
| 456 | - // si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse) |
|
| 457 | - // on arrete les frais |
|
| 458 | - if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) { |
|
| 459 | - $prof++; |
|
| 460 | - $continuer = true; |
|
| 461 | - } |
|
| 462 | - } while ($continuer and $maxiter--); |
|
| 463 | - |
|
| 464 | - // loger si la table des rubriques semble foireuse |
|
| 465 | - // et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles |
|
| 466 | - if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) { |
|
| 467 | - spip_log( |
|
| 468 | - 'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)', |
|
| 469 | - _LOG_CRITIQUE |
|
| 470 | - ); |
|
| 471 | - sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1)); |
|
| 472 | - } |
|
| 473 | - |
|
| 474 | - // reparer les articles |
|
| 475 | - $r = sql_select( |
|
| 476 | - 'A.id_article AS id, R.id_secteur AS secteur', |
|
| 477 | - 'spip_articles AS A, spip_rubriques AS R', |
|
| 478 | - 'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur' |
|
| 479 | - ); |
|
| 480 | - |
|
| 481 | - while ($row = sql_fetch($r)) { |
|
| 482 | - sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id'])); |
|
| 483 | - } |
|
| 484 | - |
|
| 485 | - // avertir les plugins qui peuvent faire leur mises a jour egalement |
|
| 486 | - pipeline('trig_propager_les_secteurs', ''); |
|
| 370 | + // Profondeur 0 |
|
| 371 | + // Toutes les rubriques racines sont de profondeur 0 |
|
| 372 | + // et fixer les id_secteur des rubriques racines |
|
| 373 | + sql_update('spip_rubriques', ['id_secteur' => 'id_rubrique', 'profondeur' => 0], 'id_parent=0'); |
|
| 374 | + // Toute rubrique non racine est de profondeur >0 |
|
| 375 | + sql_updateq('spip_rubriques', ['profondeur' => 1], 'id_parent<>0 AND profondeur=0'); |
|
| 376 | + |
|
| 377 | + // securite : pas plus d'iteration que de rubriques dans la base |
|
| 378 | + $maxiter = sql_countsel('spip_rubriques'); |
|
| 379 | + |
|
| 380 | + // reparer les rubriques qui n'ont pas l'id_secteur de leur parent |
|
| 381 | + // on fait profondeur par profondeur |
|
| 382 | + |
|
| 383 | + $prof = 0; |
|
| 384 | + do { |
|
| 385 | + $continuer = false; |
|
| 386 | + |
|
| 387 | + // Par recursivite : si toutes les rubriques de profondeur $prof sont bonnes |
|
| 388 | + // on fixe le profondeur $prof+1 |
|
| 389 | + |
|
| 390 | + // Toutes les rubriques dont le parent est de profondeur $prof ont une profondeur $prof+1 |
|
| 391 | + // on teste A.profondeur > $prof+1 car : |
|
| 392 | + // - toutes les rubriques de profondeur 0 à $prof sont bonnes |
|
| 393 | + // - si A.profondeur = $prof+1 c'est bon |
|
| 394 | + // - cela nous protege de la boucle infinie en cas de reference circulaire dans les rubriques |
|
| 395 | + $maxiter2 = $maxiter; |
|
| 396 | + while ( |
|
| 397 | + $maxiter2-- |
|
| 398 | + and $rows = sql_allfetsel( |
|
| 399 | + 'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur', |
|
| 400 | + 'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique', |
|
| 401 | + 'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)', |
|
| 402 | + '', |
|
| 403 | + 'R.id_secteur', |
|
| 404 | + '0,100' |
|
| 405 | + ) |
|
| 406 | + ) { |
|
| 407 | + $id_secteur = null; |
|
| 408 | + $ids = []; |
|
| 409 | + while ($row = array_shift($rows)) { |
|
| 410 | + if ($row['id_secteur'] !== $id_secteur) { |
|
| 411 | + if (count($ids)) { |
|
| 412 | + sql_updateq( |
|
| 413 | + 'spip_rubriques', |
|
| 414 | + ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1], |
|
| 415 | + sql_in('id_rubrique', $ids) |
|
| 416 | + ); |
|
| 417 | + } |
|
| 418 | + $id_secteur = $row['id_secteur']; |
|
| 419 | + $ids = []; |
|
| 420 | + } |
|
| 421 | + $ids[] = $row['id']; |
|
| 422 | + } |
|
| 423 | + if (count($ids)) { |
|
| 424 | + sql_updateq( |
|
| 425 | + 'spip_rubriques', |
|
| 426 | + ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1], |
|
| 427 | + sql_in('id_rubrique', $ids) |
|
| 428 | + ); |
|
| 429 | + } |
|
| 430 | + } |
|
| 431 | + |
|
| 432 | + |
|
| 433 | + // Toutes les rubriques de profondeur $prof+1 qui n'ont pas un parent de profondeur $prof sont decalees |
|
| 434 | + $maxiter2 = $maxiter; |
|
| 435 | + while ( |
|
| 436 | + $maxiter2-- |
|
| 437 | + and $rows = sql_allfetsel( |
|
| 438 | + 'id_rubrique as id', |
|
| 439 | + 'spip_rubriques', |
|
| 440 | + 'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select( |
|
| 441 | + 'zzz.id_rubrique', |
|
| 442 | + 'spip_rubriques AS zzz', |
|
| 443 | + 'zzz.profondeur=' . intval($prof) |
|
| 444 | + ) . ')', |
|
| 445 | + '', |
|
| 446 | + '', |
|
| 447 | + '0,100' |
|
| 448 | + ) |
|
| 449 | + ) { |
|
| 450 | + $rows = array_column($rows, 'id'); |
|
| 451 | + sql_updateq('spip_rubriques', ['profondeur' => $prof + 2], sql_in('id_rubrique', $rows)); |
|
| 452 | + } |
|
| 453 | + |
|
| 454 | + // ici on a fini de valider $prof+1, toutes les rubriques de prondeur 0 a $prof+1 sont OK |
|
| 455 | + // si pas de rubrique a profondeur $prof+1 pas la peine de continuer |
|
| 456 | + // si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse) |
|
| 457 | + // on arrete les frais |
|
| 458 | + if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) { |
|
| 459 | + $prof++; |
|
| 460 | + $continuer = true; |
|
| 461 | + } |
|
| 462 | + } while ($continuer and $maxiter--); |
|
| 463 | + |
|
| 464 | + // loger si la table des rubriques semble foireuse |
|
| 465 | + // et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles |
|
| 466 | + if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) { |
|
| 467 | + spip_log( |
|
| 468 | + 'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)', |
|
| 469 | + _LOG_CRITIQUE |
|
| 470 | + ); |
|
| 471 | + sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1)); |
|
| 472 | + } |
|
| 473 | + |
|
| 474 | + // reparer les articles |
|
| 475 | + $r = sql_select( |
|
| 476 | + 'A.id_article AS id, R.id_secteur AS secteur', |
|
| 477 | + 'spip_articles AS A, spip_rubriques AS R', |
|
| 478 | + 'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur' |
|
| 479 | + ); |
|
| 480 | + |
|
| 481 | + while ($row = sql_fetch($r)) { |
|
| 482 | + sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id'])); |
|
| 483 | + } |
|
| 484 | + |
|
| 485 | + // avertir les plugins qui peuvent faire leur mises a jour egalement |
|
| 486 | + pipeline('trig_propager_les_secteurs', ''); |
|
| 487 | 487 | } |
| 488 | 488 | |
| 489 | 489 | |
@@ -498,23 +498,23 @@ discard block |
||
| 498 | 498 | * true si un changement a eu lieu |
| 499 | 499 | **/ |
| 500 | 500 | function calculer_langues_rubriques_etape() { |
| 501 | - $s = sql_select( |
|
| 502 | - 'A.id_rubrique AS id_rubrique, R.lang AS lang', |
|
| 503 | - 'spip_rubriques AS A, spip_rubriques AS R', |
|
| 504 | - "A.id_parent = R.id_rubrique AND A.langue_choisie != 'oui' AND R.lang<>'' AND R.lang<>A.lang" |
|
| 505 | - ); |
|
| 506 | - |
|
| 507 | - $t = false; |
|
| 508 | - while ($row = sql_fetch($s)) { |
|
| 509 | - $id_rubrique = $row['id_rubrique']; |
|
| 510 | - $t = sql_updateq( |
|
| 511 | - 'spip_rubriques', |
|
| 512 | - ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
|
| 513 | - 'id_rubrique=' . intval($id_rubrique) |
|
| 514 | - ); |
|
| 515 | - } |
|
| 516 | - |
|
| 517 | - return $t; |
|
| 501 | + $s = sql_select( |
|
| 502 | + 'A.id_rubrique AS id_rubrique, R.lang AS lang', |
|
| 503 | + 'spip_rubriques AS A, spip_rubriques AS R', |
|
| 504 | + "A.id_parent = R.id_rubrique AND A.langue_choisie != 'oui' AND R.lang<>'' AND R.lang<>A.lang" |
|
| 505 | + ); |
|
| 506 | + |
|
| 507 | + $t = false; |
|
| 508 | + while ($row = sql_fetch($s)) { |
|
| 509 | + $id_rubrique = $row['id_rubrique']; |
|
| 510 | + $t = sql_updateq( |
|
| 511 | + 'spip_rubriques', |
|
| 512 | + ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
|
| 513 | + 'id_rubrique=' . intval($id_rubrique) |
|
| 514 | + ); |
|
| 515 | + } |
|
| 516 | + |
|
| 517 | + return $t; |
|
| 518 | 518 | } |
| 519 | 519 | |
| 520 | 520 | /** |
@@ -534,38 +534,38 @@ discard block |
||
| 534 | 534 | **/ |
| 535 | 535 | function calculer_langues_rubriques() { |
| 536 | 536 | |
| 537 | - // rubriques (recursivite) |
|
| 538 | - sql_updateq( |
|
| 539 | - 'spip_rubriques', |
|
| 540 | - ['lang' => $GLOBALS['meta']['langue_site'], 'langue_choisie' => 'non'], |
|
| 541 | - "id_parent=0 AND langue_choisie != 'oui'" |
|
| 542 | - ); |
|
| 543 | - while (calculer_langues_rubriques_etape()) { |
|
| 544 | - ; |
|
| 545 | - } |
|
| 546 | - |
|
| 547 | - // articles |
|
| 548 | - $s = sql_select( |
|
| 549 | - 'A.id_article AS id_article, R.lang AS lang', |
|
| 550 | - 'spip_articles AS A, spip_rubriques AS R', |
|
| 551 | - "A.id_rubrique = R.id_rubrique AND A.langue_choisie != 'oui' AND (length(A.lang)=0 OR length(R.lang)>0) AND R.lang<>A.lang" |
|
| 552 | - ); |
|
| 553 | - while ($row = sql_fetch($s)) { |
|
| 554 | - $id_article = $row['id_article']; |
|
| 555 | - sql_updateq( |
|
| 556 | - 'spip_articles', |
|
| 557 | - ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
|
| 558 | - 'id_article=' . intval($id_article) |
|
| 559 | - ); |
|
| 560 | - } |
|
| 561 | - |
|
| 562 | - if ($GLOBALS['meta']['multi_rubriques'] == 'oui') { |
|
| 563 | - $langues = calculer_langues_utilisees(); |
|
| 564 | - ecrire_meta('langues_utilisees', $langues); |
|
| 565 | - } |
|
| 566 | - |
|
| 567 | - // avertir les plugins qui peuvent faire leur mises a jour egalement |
|
| 568 | - pipeline('trig_calculer_langues_rubriques', ''); |
|
| 537 | + // rubriques (recursivite) |
|
| 538 | + sql_updateq( |
|
| 539 | + 'spip_rubriques', |
|
| 540 | + ['lang' => $GLOBALS['meta']['langue_site'], 'langue_choisie' => 'non'], |
|
| 541 | + "id_parent=0 AND langue_choisie != 'oui'" |
|
| 542 | + ); |
|
| 543 | + while (calculer_langues_rubriques_etape()) { |
|
| 544 | + ; |
|
| 545 | + } |
|
| 546 | + |
|
| 547 | + // articles |
|
| 548 | + $s = sql_select( |
|
| 549 | + 'A.id_article AS id_article, R.lang AS lang', |
|
| 550 | + 'spip_articles AS A, spip_rubriques AS R', |
|
| 551 | + "A.id_rubrique = R.id_rubrique AND A.langue_choisie != 'oui' AND (length(A.lang)=0 OR length(R.lang)>0) AND R.lang<>A.lang" |
|
| 552 | + ); |
|
| 553 | + while ($row = sql_fetch($s)) { |
|
| 554 | + $id_article = $row['id_article']; |
|
| 555 | + sql_updateq( |
|
| 556 | + 'spip_articles', |
|
| 557 | + ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
|
| 558 | + 'id_article=' . intval($id_article) |
|
| 559 | + ); |
|
| 560 | + } |
|
| 561 | + |
|
| 562 | + if ($GLOBALS['meta']['multi_rubriques'] == 'oui') { |
|
| 563 | + $langues = calculer_langues_utilisees(); |
|
| 564 | + ecrire_meta('langues_utilisees', $langues); |
|
| 565 | + } |
|
| 566 | + |
|
| 567 | + // avertir les plugins qui peuvent faire leur mises a jour egalement |
|
| 568 | + pipeline('trig_calculer_langues_rubriques', ''); |
|
| 569 | 569 | } |
| 570 | 570 | |
| 571 | 571 | |
@@ -582,80 +582,80 @@ discard block |
||
| 582 | 582 | * Liste des langues utilisées séparées par des virgules |
| 583 | 583 | **/ |
| 584 | 584 | function calculer_langues_utilisees($serveur = '') { |
| 585 | - include_spip('public/interfaces'); |
|
| 586 | - include_spip('public/compiler'); |
|
| 587 | - include_spip('public/composer'); |
|
| 588 | - include_spip('public/phraser_html'); |
|
| 589 | - $langues = []; |
|
| 590 | - |
|
| 591 | - $langues[$GLOBALS['meta']['langue_site']] = 1; |
|
| 592 | - |
|
| 593 | - include_spip('base/objets'); |
|
| 594 | - $tables = lister_tables_objets_sql(); |
|
| 595 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 596 | - |
|
| 597 | - foreach (array_keys($tables) as $t) { |
|
| 598 | - $desc = $trouver_table($t, $serveur); |
|
| 599 | - // c'est une table avec des langues |
|
| 600 | - if ( |
|
| 601 | - $desc['exist'] |
|
| 602 | - and isset($desc['field']['lang']) |
|
| 603 | - and isset($desc['field']['langue_choisie']) |
|
| 604 | - ) { |
|
| 605 | - $boucle = new Boucle(); |
|
| 606 | - $boucle->show = $desc; |
|
| 607 | - $boucle->nom = 'calculer_langues_utilisees'; |
|
| 608 | - $boucle->id_boucle = $desc['table_objet']; |
|
| 609 | - $boucle->id_table = $desc['table_objet']; |
|
| 610 | - $boucle->primary = $desc['key']['PRIMARY KEY'] ?? ''; |
|
| 611 | - $boucle->sql_serveur = $serveur; |
|
| 612 | - $boucle->select[] = 'DISTINCT lang'; |
|
| 613 | - $boucle->from[$desc['table_objet']] = $t; |
|
| 614 | - $boucle->separateur[] = ','; |
|
| 615 | - $boucle->return = '$Pile[$SP][\'lang\']'; |
|
| 616 | - $boucle->iterateur = 'sql'; |
|
| 617 | - |
|
| 618 | - $boucle->descr['nom'] = 'calculer_langues_utilisees'; // eviter notice php |
|
| 619 | - $boucle->descr['sourcefile'] = 'internal'; |
|
| 620 | - $boucle->descr['gram'] = 'html'; |
|
| 621 | - |
|
| 622 | - $boucle = pipeline('pre_boucle', $boucle); |
|
| 623 | - |
|
| 624 | - if ( |
|
| 625 | - isset($desc['statut']) |
|
| 626 | - and $desc['statut'] |
|
| 627 | - ) { |
|
| 628 | - $boucles = [ |
|
| 629 | - 'calculer_langues_utilisees' => $boucle, |
|
| 630 | - ]; |
|
| 631 | - // generer un nom de fonction "anonyme" unique |
|
| 632 | - do { |
|
| 633 | - $functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax()); |
|
| 634 | - } while (function_exists($functionname)); |
|
| 635 | - $code = calculer_boucle('calculer_langues_utilisees', $boucles); |
|
| 636 | - $code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code; |
|
| 637 | - $code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();'; |
|
| 638 | - $res = ''; |
|
| 639 | - eval($code); |
|
| 640 | - $res = explode(',', $res); |
|
| 641 | - foreach ($res as $lang) { |
|
| 642 | - $langues[$lang] = 1; |
|
| 643 | - } |
|
| 644 | - } else { |
|
| 645 | - $res = sql_select(implode(',', $boucle->select), $boucle->from); |
|
| 646 | - while ($row = sql_fetch($res)) { |
|
| 647 | - $langues[$row['lang']] = 1; |
|
| 648 | - } |
|
| 649 | - } |
|
| 650 | - } |
|
| 651 | - } |
|
| 652 | - |
|
| 653 | - $langues = array_filter(array_keys($langues)); |
|
| 654 | - sort($langues); |
|
| 655 | - $langues = join(',', $langues); |
|
| 656 | - spip_log("langues utilisees: $langues"); |
|
| 657 | - |
|
| 658 | - return $langues; |
|
| 585 | + include_spip('public/interfaces'); |
|
| 586 | + include_spip('public/compiler'); |
|
| 587 | + include_spip('public/composer'); |
|
| 588 | + include_spip('public/phraser_html'); |
|
| 589 | + $langues = []; |
|
| 590 | + |
|
| 591 | + $langues[$GLOBALS['meta']['langue_site']] = 1; |
|
| 592 | + |
|
| 593 | + include_spip('base/objets'); |
|
| 594 | + $tables = lister_tables_objets_sql(); |
|
| 595 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 596 | + |
|
| 597 | + foreach (array_keys($tables) as $t) { |
|
| 598 | + $desc = $trouver_table($t, $serveur); |
|
| 599 | + // c'est une table avec des langues |
|
| 600 | + if ( |
|
| 601 | + $desc['exist'] |
|
| 602 | + and isset($desc['field']['lang']) |
|
| 603 | + and isset($desc['field']['langue_choisie']) |
|
| 604 | + ) { |
|
| 605 | + $boucle = new Boucle(); |
|
| 606 | + $boucle->show = $desc; |
|
| 607 | + $boucle->nom = 'calculer_langues_utilisees'; |
|
| 608 | + $boucle->id_boucle = $desc['table_objet']; |
|
| 609 | + $boucle->id_table = $desc['table_objet']; |
|
| 610 | + $boucle->primary = $desc['key']['PRIMARY KEY'] ?? ''; |
|
| 611 | + $boucle->sql_serveur = $serveur; |
|
| 612 | + $boucle->select[] = 'DISTINCT lang'; |
|
| 613 | + $boucle->from[$desc['table_objet']] = $t; |
|
| 614 | + $boucle->separateur[] = ','; |
|
| 615 | + $boucle->return = '$Pile[$SP][\'lang\']'; |
|
| 616 | + $boucle->iterateur = 'sql'; |
|
| 617 | + |
|
| 618 | + $boucle->descr['nom'] = 'calculer_langues_utilisees'; // eviter notice php |
|
| 619 | + $boucle->descr['sourcefile'] = 'internal'; |
|
| 620 | + $boucle->descr['gram'] = 'html'; |
|
| 621 | + |
|
| 622 | + $boucle = pipeline('pre_boucle', $boucle); |
|
| 623 | + |
|
| 624 | + if ( |
|
| 625 | + isset($desc['statut']) |
|
| 626 | + and $desc['statut'] |
|
| 627 | + ) { |
|
| 628 | + $boucles = [ |
|
| 629 | + 'calculer_langues_utilisees' => $boucle, |
|
| 630 | + ]; |
|
| 631 | + // generer un nom de fonction "anonyme" unique |
|
| 632 | + do { |
|
| 633 | + $functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax()); |
|
| 634 | + } while (function_exists($functionname)); |
|
| 635 | + $code = calculer_boucle('calculer_langues_utilisees', $boucles); |
|
| 636 | + $code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code; |
|
| 637 | + $code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();'; |
|
| 638 | + $res = ''; |
|
| 639 | + eval($code); |
|
| 640 | + $res = explode(',', $res); |
|
| 641 | + foreach ($res as $lang) { |
|
| 642 | + $langues[$lang] = 1; |
|
| 643 | + } |
|
| 644 | + } else { |
|
| 645 | + $res = sql_select(implode(',', $boucle->select), $boucle->from); |
|
| 646 | + while ($row = sql_fetch($res)) { |
|
| 647 | + $langues[$row['lang']] = 1; |
|
| 648 | + } |
|
| 649 | + } |
|
| 650 | + } |
|
| 651 | + } |
|
| 652 | + |
|
| 653 | + $langues = array_filter(array_keys($langues)); |
|
| 654 | + sort($langues); |
|
| 655 | + $langues = join(',', $langues); |
|
| 656 | + spip_log("langues utilisees: $langues"); |
|
| 657 | + |
|
| 658 | + return $langues; |
|
| 659 | 659 | } |
| 660 | 660 | |
| 661 | 661 | /** |
@@ -672,9 +672,9 @@ discard block |
||
| 672 | 672 | * incluant les rubriques noeuds et toutes leurs descendances |
| 673 | 673 | */ |
| 674 | 674 | function calcul_branche_in($id) { |
| 675 | - $calcul_branche_in = charger_fonction('calcul_branche_in', 'inc'); |
|
| 675 | + $calcul_branche_in = charger_fonction('calcul_branche_in', 'inc'); |
|
| 676 | 676 | |
| 677 | - return $calcul_branche_in($id); |
|
| 677 | + return $calcul_branche_in($id); |
|
| 678 | 678 | } |
| 679 | 679 | |
| 680 | 680 | /** |
@@ -692,9 +692,9 @@ discard block |
||
| 692 | 692 | * incluant les rubriques transmises et toutes leurs parentées |
| 693 | 693 | */ |
| 694 | 694 | function calcul_hierarchie_in($id, $tout = true) { |
| 695 | - $calcul_hierarchie_in = charger_fonction('calcul_hierarchie_in', 'inc'); |
|
| 695 | + $calcul_hierarchie_in = charger_fonction('calcul_hierarchie_in', 'inc'); |
|
| 696 | 696 | |
| 697 | - return $calcul_hierarchie_in($id, $tout); |
|
| 697 | + return $calcul_hierarchie_in($id, $tout); |
|
| 698 | 698 | } |
| 699 | 699 | |
| 700 | 700 | |
@@ -715,40 +715,40 @@ discard block |
||
| 715 | 715 | * incluant les rubriques noeuds et toutes leurs descendances |
| 716 | 716 | */ |
| 717 | 717 | function inc_calcul_branche_in_dist($id) { |
| 718 | - static $b = []; |
|
| 719 | - |
|
| 720 | - // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN |
|
| 721 | - if (!is_array($id)) { |
|
| 722 | - $id = explode(',', $id); |
|
| 723 | - } |
|
| 724 | - $id = join(',', array_map('intval', $id)); |
|
| 725 | - if (isset($b[$id])) { |
|
| 726 | - return $b[$id]; |
|
| 727 | - } |
|
| 728 | - |
|
| 729 | - // Notre branche commence par la rubrique de depart |
|
| 730 | - $branche = $r = $id; |
|
| 731 | - |
|
| 732 | - // On ajoute une generation (les filles de la generation precedente) |
|
| 733 | - // jusqu'a epuisement, en se protegeant des references circulaires |
|
| 734 | - $maxiter = 10000; |
|
| 735 | - while ( |
|
| 736 | - $maxiter-- and $filles = sql_allfetsel( |
|
| 737 | - 'id_rubrique', |
|
| 738 | - 'spip_rubriques', |
|
| 739 | - sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT') |
|
| 740 | - ) |
|
| 741 | - ) { |
|
| 742 | - $r = join(',', array_column($filles, 'id_rubrique')); |
|
| 743 | - $branche .= ',' . $r; |
|
| 744 | - } |
|
| 745 | - |
|
| 746 | - # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
|
| 747 | - if (strlen($branche) < 10000) { |
|
| 748 | - $b[$id] = $branche; |
|
| 749 | - } |
|
| 750 | - |
|
| 751 | - return $branche; |
|
| 718 | + static $b = []; |
|
| 719 | + |
|
| 720 | + // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN |
|
| 721 | + if (!is_array($id)) { |
|
| 722 | + $id = explode(',', $id); |
|
| 723 | + } |
|
| 724 | + $id = join(',', array_map('intval', $id)); |
|
| 725 | + if (isset($b[$id])) { |
|
| 726 | + return $b[$id]; |
|
| 727 | + } |
|
| 728 | + |
|
| 729 | + // Notre branche commence par la rubrique de depart |
|
| 730 | + $branche = $r = $id; |
|
| 731 | + |
|
| 732 | + // On ajoute une generation (les filles de la generation precedente) |
|
| 733 | + // jusqu'a epuisement, en se protegeant des references circulaires |
|
| 734 | + $maxiter = 10000; |
|
| 735 | + while ( |
|
| 736 | + $maxiter-- and $filles = sql_allfetsel( |
|
| 737 | + 'id_rubrique', |
|
| 738 | + 'spip_rubriques', |
|
| 739 | + sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT') |
|
| 740 | + ) |
|
| 741 | + ) { |
|
| 742 | + $r = join(',', array_column($filles, 'id_rubrique')); |
|
| 743 | + $branche .= ',' . $r; |
|
| 744 | + } |
|
| 745 | + |
|
| 746 | + # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
|
| 747 | + if (strlen($branche) < 10000) { |
|
| 748 | + $b[$id] = $branche; |
|
| 749 | + } |
|
| 750 | + |
|
| 751 | + return $branche; |
|
| 752 | 752 | } |
| 753 | 753 | |
| 754 | 754 | |
@@ -770,45 +770,45 @@ discard block |
||
| 770 | 770 | * incluant les rubriques transmises et toutes leurs parentées |
| 771 | 771 | */ |
| 772 | 772 | function inc_calcul_hierarchie_in_dist($id, $tout = true) { |
| 773 | - static $b = []; |
|
| 774 | - |
|
| 775 | - // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN |
|
| 776 | - if (!is_array($id)) { |
|
| 777 | - $id = explode(',', $id); |
|
| 778 | - } |
|
| 779 | - $id = join(',', array_map('intval', $id)); |
|
| 780 | - |
|
| 781 | - if (isset($b[$id])) { |
|
| 782 | - // Notre branche commence par la rubrique de depart si $tout=true |
|
| 783 | - return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id]; |
|
| 784 | - } |
|
| 785 | - |
|
| 786 | - $hier = ''; |
|
| 787 | - |
|
| 788 | - // On ajoute une generation (les filles de la generation precedente) |
|
| 789 | - // jusqu'a epuisement, en se protegeant des references circulaires |
|
| 790 | - $ids_nouveaux_parents = $id; |
|
| 791 | - $maxiter = 10000; |
|
| 792 | - while ( |
|
| 793 | - $maxiter-- and $parents = sql_allfetsel( |
|
| 794 | - 'id_parent', |
|
| 795 | - 'spip_rubriques', |
|
| 796 | - sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT') |
|
| 797 | - ) |
|
| 798 | - ) { |
|
| 799 | - $ids_nouveaux_parents = join(',', array_column($parents, 'id_parent')); |
|
| 800 | - $hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : ''); |
|
| 801 | - } |
|
| 802 | - |
|
| 803 | - # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
|
| 804 | - if (strlen($hier) < 10000) { |
|
| 805 | - $b[$id] = $hier; |
|
| 806 | - } |
|
| 807 | - |
|
| 808 | - // Notre branche commence par la rubrique de depart si $tout=true |
|
| 809 | - $hier = $tout ? (strlen($hier) ? "$hier,$id" : $id) : $hier; |
|
| 810 | - |
|
| 811 | - return $hier; |
|
| 773 | + static $b = []; |
|
| 774 | + |
|
| 775 | + // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN |
|
| 776 | + if (!is_array($id)) { |
|
| 777 | + $id = explode(',', $id); |
|
| 778 | + } |
|
| 779 | + $id = join(',', array_map('intval', $id)); |
|
| 780 | + |
|
| 781 | + if (isset($b[$id])) { |
|
| 782 | + // Notre branche commence par la rubrique de depart si $tout=true |
|
| 783 | + return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id]; |
|
| 784 | + } |
|
| 785 | + |
|
| 786 | + $hier = ''; |
|
| 787 | + |
|
| 788 | + // On ajoute une generation (les filles de la generation precedente) |
|
| 789 | + // jusqu'a epuisement, en se protegeant des references circulaires |
|
| 790 | + $ids_nouveaux_parents = $id; |
|
| 791 | + $maxiter = 10000; |
|
| 792 | + while ( |
|
| 793 | + $maxiter-- and $parents = sql_allfetsel( |
|
| 794 | + 'id_parent', |
|
| 795 | + 'spip_rubriques', |
|
| 796 | + sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT') |
|
| 797 | + ) |
|
| 798 | + ) { |
|
| 799 | + $ids_nouveaux_parents = join(',', array_column($parents, 'id_parent')); |
|
| 800 | + $hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : ''); |
|
| 801 | + } |
|
| 802 | + |
|
| 803 | + # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
|
| 804 | + if (strlen($hier) < 10000) { |
|
| 805 | + $b[$id] = $hier; |
|
| 806 | + } |
|
| 807 | + |
|
| 808 | + // Notre branche commence par la rubrique de depart si $tout=true |
|
| 809 | + $hier = $tout ? (strlen($hier) ? "$hier,$id" : $id) : $hier; |
|
| 810 | + |
|
| 811 | + return $hier; |
|
| 812 | 812 | } |
| 813 | 813 | |
| 814 | 814 | |
@@ -826,47 +826,47 @@ discard block |
||
| 826 | 826 | * @return void |
| 827 | 827 | **/ |
| 828 | 828 | function calculer_prochain_postdate($check = false) { |
| 829 | - include_spip('base/abstract_sql'); |
|
| 830 | - if ($check) { |
|
| 831 | - $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 832 | - 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 833 | - |
|
| 834 | - $r = sql_select( |
|
| 835 | - 'DISTINCT A.id_rubrique AS id', |
|
| 836 | - 'spip_articles AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique', |
|
| 837 | - "R.statut != 'publie' AND A.statut='publie'$postdates" |
|
| 838 | - ); |
|
| 839 | - while ($row = sql_fetch($r)) { |
|
| 840 | - publier_branche_rubrique($row['id']); |
|
| 841 | - } |
|
| 842 | - |
|
| 843 | - pipeline('trig_calculer_prochain_postdate', ''); |
|
| 844 | - } |
|
| 845 | - |
|
| 846 | - $t = sql_fetsel( |
|
| 847 | - 'date', |
|
| 848 | - 'spip_articles', |
|
| 849 | - "statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')), |
|
| 850 | - '', |
|
| 851 | - 'date', |
|
| 852 | - '1' |
|
| 853 | - ); |
|
| 854 | - |
|
| 855 | - if ($t) { |
|
| 856 | - $t = $t['date']; |
|
| 857 | - if ( |
|
| 858 | - !isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 859 | - or $t <> $GLOBALS['meta']['date_prochain_postdate'] |
|
| 860 | - ) { |
|
| 861 | - ecrire_meta('date_prochain_postdate', strtotime($t)); |
|
| 862 | - ecrire_meta('derniere_modif', time()); |
|
| 863 | - } |
|
| 864 | - } else { |
|
| 865 | - effacer_meta('date_prochain_postdate'); |
|
| 866 | - ecrire_meta('derniere_modif', time()); |
|
| 867 | - } |
|
| 868 | - |
|
| 869 | - spip_log("prochain postdate: $t"); |
|
| 829 | + include_spip('base/abstract_sql'); |
|
| 830 | + if ($check) { |
|
| 831 | + $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 832 | + 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 833 | + |
|
| 834 | + $r = sql_select( |
|
| 835 | + 'DISTINCT A.id_rubrique AS id', |
|
| 836 | + 'spip_articles AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique', |
|
| 837 | + "R.statut != 'publie' AND A.statut='publie'$postdates" |
|
| 838 | + ); |
|
| 839 | + while ($row = sql_fetch($r)) { |
|
| 840 | + publier_branche_rubrique($row['id']); |
|
| 841 | + } |
|
| 842 | + |
|
| 843 | + pipeline('trig_calculer_prochain_postdate', ''); |
|
| 844 | + } |
|
| 845 | + |
|
| 846 | + $t = sql_fetsel( |
|
| 847 | + 'date', |
|
| 848 | + 'spip_articles', |
|
| 849 | + "statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')), |
|
| 850 | + '', |
|
| 851 | + 'date', |
|
| 852 | + '1' |
|
| 853 | + ); |
|
| 854 | + |
|
| 855 | + if ($t) { |
|
| 856 | + $t = $t['date']; |
|
| 857 | + if ( |
|
| 858 | + !isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 859 | + or $t <> $GLOBALS['meta']['date_prochain_postdate'] |
|
| 860 | + ) { |
|
| 861 | + ecrire_meta('date_prochain_postdate', strtotime($t)); |
|
| 862 | + ecrire_meta('derniere_modif', time()); |
|
| 863 | + } |
|
| 864 | + } else { |
|
| 865 | + effacer_meta('date_prochain_postdate'); |
|
| 866 | + ecrire_meta('derniere_modif', time()); |
|
| 867 | + } |
|
| 868 | + |
|
| 869 | + spip_log("prochain postdate: $t"); |
|
| 870 | 870 | } |
| 871 | 871 | |
| 872 | 872 | /** |
@@ -891,62 +891,62 @@ discard block |
||
| 891 | 891 | */ |
| 892 | 892 | function creer_rubrique_nommee($titre, $id_parent = 0, $serveur = '') { |
| 893 | 893 | |
| 894 | - // eclater l'arborescence demandee |
|
| 895 | - // echapper les </multi> et autres balises fermantes html |
|
| 896 | - $titre = preg_replace(',</([a-z][^>]*)>,ims', "<@\\1>", $titre); |
|
| 897 | - $arbo = explode('/', preg_replace(',^/,', '', $titre)); |
|
| 898 | - include_spip('base/abstract_sql'); |
|
| 899 | - foreach ($arbo as $titre) { |
|
| 900 | - // retablir les </multi> et autres balises fermantes html |
|
| 901 | - $titre = preg_replace(',<@([a-z][^>]*)>,ims', "</\\1>", $titre); |
|
| 902 | - $r = sql_getfetsel( |
|
| 903 | - 'id_rubrique', |
|
| 904 | - 'spip_rubriques', |
|
| 905 | - 'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent), |
|
| 906 | - $groupby = [], |
|
| 907 | - $orderby = [], |
|
| 908 | - $limit = '', |
|
| 909 | - $having = [], |
|
| 910 | - $serveur |
|
| 911 | - ); |
|
| 912 | - if ($r !== null) { |
|
| 913 | - $id_parent = $r; |
|
| 914 | - } else { |
|
| 915 | - $id_rubrique = sql_insertq('spip_rubriques', [ |
|
| 916 | - 'titre' => $titre, |
|
| 917 | - 'id_parent' => $id_parent, |
|
| 918 | - 'statut' => 'prepa' |
|
| 919 | - ], $desc = [], $serveur); |
|
| 920 | - if ($id_parent > 0) { |
|
| 921 | - $data = sql_fetsel( |
|
| 922 | - 'id_secteur,lang', |
|
| 923 | - 'spip_rubriques', |
|
| 924 | - "id_rubrique=$id_parent", |
|
| 925 | - $groupby = [], |
|
| 926 | - $orderby = [], |
|
| 927 | - $limit = '', |
|
| 928 | - $having = [], |
|
| 929 | - $serveur |
|
| 930 | - ); |
|
| 931 | - $id_secteur = $data['id_secteur']; |
|
| 932 | - $lang = $data['lang']; |
|
| 933 | - } else { |
|
| 934 | - $id_secteur = $id_rubrique; |
|
| 935 | - $lang = $GLOBALS['meta']['langue_site']; |
|
| 936 | - } |
|
| 937 | - |
|
| 938 | - sql_updateq( |
|
| 939 | - 'spip_rubriques', |
|
| 940 | - ['id_secteur' => $id_secteur, 'lang' => $lang], |
|
| 941 | - 'id_rubrique=' . intval($id_rubrique), |
|
| 942 | - [], |
|
| 943 | - $serveur |
|
| 944 | - ); |
|
| 945 | - |
|
| 946 | - // pour la recursion |
|
| 947 | - $id_parent = $id_rubrique; |
|
| 948 | - } |
|
| 949 | - } |
|
| 950 | - |
|
| 951 | - return intval($id_parent); |
|
| 894 | + // eclater l'arborescence demandee |
|
| 895 | + // echapper les </multi> et autres balises fermantes html |
|
| 896 | + $titre = preg_replace(',</([a-z][^>]*)>,ims', "<@\\1>", $titre); |
|
| 897 | + $arbo = explode('/', preg_replace(',^/,', '', $titre)); |
|
| 898 | + include_spip('base/abstract_sql'); |
|
| 899 | + foreach ($arbo as $titre) { |
|
| 900 | + // retablir les </multi> et autres balises fermantes html |
|
| 901 | + $titre = preg_replace(',<@([a-z][^>]*)>,ims', "</\\1>", $titre); |
|
| 902 | + $r = sql_getfetsel( |
|
| 903 | + 'id_rubrique', |
|
| 904 | + 'spip_rubriques', |
|
| 905 | + 'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent), |
|
| 906 | + $groupby = [], |
|
| 907 | + $orderby = [], |
|
| 908 | + $limit = '', |
|
| 909 | + $having = [], |
|
| 910 | + $serveur |
|
| 911 | + ); |
|
| 912 | + if ($r !== null) { |
|
| 913 | + $id_parent = $r; |
|
| 914 | + } else { |
|
| 915 | + $id_rubrique = sql_insertq('spip_rubriques', [ |
|
| 916 | + 'titre' => $titre, |
|
| 917 | + 'id_parent' => $id_parent, |
|
| 918 | + 'statut' => 'prepa' |
|
| 919 | + ], $desc = [], $serveur); |
|
| 920 | + if ($id_parent > 0) { |
|
| 921 | + $data = sql_fetsel( |
|
| 922 | + 'id_secteur,lang', |
|
| 923 | + 'spip_rubriques', |
|
| 924 | + "id_rubrique=$id_parent", |
|
| 925 | + $groupby = [], |
|
| 926 | + $orderby = [], |
|
| 927 | + $limit = '', |
|
| 928 | + $having = [], |
|
| 929 | + $serveur |
|
| 930 | + ); |
|
| 931 | + $id_secteur = $data['id_secteur']; |
|
| 932 | + $lang = $data['lang']; |
|
| 933 | + } else { |
|
| 934 | + $id_secteur = $id_rubrique; |
|
| 935 | + $lang = $GLOBALS['meta']['langue_site']; |
|
| 936 | + } |
|
| 937 | + |
|
| 938 | + sql_updateq( |
|
| 939 | + 'spip_rubriques', |
|
| 940 | + ['id_secteur' => $id_secteur, 'lang' => $lang], |
|
| 941 | + 'id_rubrique=' . intval($id_rubrique), |
|
| 942 | + [], |
|
| 943 | + $serveur |
|
| 944 | + ); |
|
| 945 | + |
|
| 946 | + // pour la recursion |
|
| 947 | + $id_parent = $id_rubrique; |
|
| 948 | + } |
|
| 949 | + } |
|
| 950 | + |
|
| 951 | + return intval($id_parent); |
|
| 952 | 952 | } |
@@ -135,9 +135,9 @@ discard block |
||
| 135 | 135 | sql_updateq( |
| 136 | 136 | 'spip_rubriques', |
| 137 | 137 | ['statut' => 'publie', 'date' => date('Y-m-d H:i:s')], |
| 138 | - 'id_rubrique=' . intval($id_rubrique) |
|
| 138 | + 'id_rubrique='.intval($id_rubrique) |
|
| 139 | 139 | ); |
| 140 | - $id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique)); |
|
| 140 | + $id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique='.intval($id_rubrique)); |
|
| 141 | 141 | if (!$id_parent) { |
| 142 | 142 | break; |
| 143 | 143 | } |
@@ -172,7 +172,7 @@ discard block |
||
| 172 | 172 | return $id_pred != $id_rubrique; |
| 173 | 173 | } |
| 174 | 174 | // passer au parent si on a depublie |
| 175 | - $r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred)); |
|
| 175 | + $r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique='.intval($id_pred)); |
|
| 176 | 176 | $id_pred = $r['id_parent']; |
| 177 | 177 | } |
| 178 | 178 | |
@@ -197,14 +197,14 @@ discard block |
||
| 197 | 197 | $date = date('Y-m-d H:i:s'); |
| 198 | 198 | } |
| 199 | 199 | $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
| 200 | - ' AND date <= ' . sql_quote($date) : ''; |
|
| 200 | + ' AND date <= '.sql_quote($date) : ''; |
|
| 201 | 201 | |
| 202 | 202 | if (!$id_rubrique = intval($id_rubrique)) { |
| 203 | 203 | return false; |
| 204 | 204 | } |
| 205 | 205 | |
| 206 | 206 | // verifier qu'elle existe et est bien publiee |
| 207 | - $r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 207 | + $r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique='.intval($id_rubrique)); |
|
| 208 | 208 | if (!$r or $r['statut'] !== 'publie') { |
| 209 | 209 | return false; |
| 210 | 210 | } |
@@ -214,12 +214,12 @@ discard block |
||
| 214 | 214 | $compte = [ |
| 215 | 215 | 'articles' => sql_countsel( |
| 216 | 216 | 'spip_articles', |
| 217 | - 'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates" |
|
| 217 | + 'id_rubrique='.intval($id_rubrique)." AND statut='publie'$postdates" |
|
| 218 | 218 | ), |
| 219 | - 'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"), |
|
| 219 | + 'rubriques' => sql_countsel('spip_rubriques', 'id_parent='.intval($id_rubrique)." AND statut='publie'"), |
|
| 220 | 220 | 'documents' => sql_countsel( |
| 221 | 221 | 'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', |
| 222 | - 'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') " |
|
| 222 | + 'L.id_objet='.intval($id_rubrique)." AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') " |
|
| 223 | 223 | ) |
| 224 | 224 | ]; |
| 225 | 225 | |
@@ -244,7 +244,7 @@ discard block |
||
| 244 | 244 | } |
| 245 | 245 | } |
| 246 | 246 | |
| 247 | - sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique)); |
|
| 247 | + sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique='.intval($id_rubrique)); |
|
| 248 | 248 | |
| 249 | 249 | # spip_log("depublier_rubrique $id_pred"); |
| 250 | 250 | return true; |
@@ -307,7 +307,7 @@ discard block |
||
| 307 | 307 | |
| 308 | 308 | // Afficher les articles post-dates ? |
| 309 | 309 | $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
| 310 | - 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 310 | + 'AND A.date <= '.sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 311 | 311 | |
| 312 | 312 | $r = sql_select( |
| 313 | 313 | 'R.id_rubrique AS id, max(A.date) AS date_h', |
@@ -319,7 +319,7 @@ discard block |
||
| 319 | 319 | sql_updateq( |
| 320 | 320 | 'spip_rubriques', |
| 321 | 321 | ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
| 322 | - 'id_rubrique=' . intval($row['id']) |
|
| 322 | + 'id_rubrique='.intval($row['id']) |
|
| 323 | 323 | ); |
| 324 | 324 | } |
| 325 | 325 | |
@@ -345,7 +345,7 @@ discard block |
||
| 345 | 345 | sql_updateq( |
| 346 | 346 | 'spip_rubriques', |
| 347 | 347 | ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
| 348 | - 'id_rubrique=' . intval($row['id']) |
|
| 348 | + 'id_rubrique='.intval($row['id']) |
|
| 349 | 349 | ); |
| 350 | 350 | $continuer = true; |
| 351 | 351 | } |
@@ -398,7 +398,7 @@ discard block |
||
| 398 | 398 | and $rows = sql_allfetsel( |
| 399 | 399 | 'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur', |
| 400 | 400 | 'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique', |
| 401 | - 'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)', |
|
| 401 | + 'R.profondeur='.intval($prof).' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)', |
|
| 402 | 402 | '', |
| 403 | 403 | 'R.id_secteur', |
| 404 | 404 | '0,100' |
@@ -437,11 +437,11 @@ discard block |
||
| 437 | 437 | and $rows = sql_allfetsel( |
| 438 | 438 | 'id_rubrique as id', |
| 439 | 439 | 'spip_rubriques', |
| 440 | - 'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select( |
|
| 440 | + 'profondeur='.intval($prof + 1).' AND id_parent NOT IN ('.sql_get_select( |
|
| 441 | 441 | 'zzz.id_rubrique', |
| 442 | 442 | 'spip_rubriques AS zzz', |
| 443 | - 'zzz.profondeur=' . intval($prof) |
|
| 444 | - ) . ')', |
|
| 443 | + 'zzz.profondeur='.intval($prof) |
|
| 444 | + ).')', |
|
| 445 | 445 | '', |
| 446 | 446 | '', |
| 447 | 447 | '0,100' |
@@ -455,7 +455,7 @@ discard block |
||
| 455 | 455 | // si pas de rubrique a profondeur $prof+1 pas la peine de continuer |
| 456 | 456 | // si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse) |
| 457 | 457 | // on arrete les frais |
| 458 | - if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) { |
|
| 458 | + if (sql_countsel('spip_rubriques', 'profondeur='.intval($prof + 1))) { |
|
| 459 | 459 | $prof++; |
| 460 | 460 | $continuer = true; |
| 461 | 461 | } |
@@ -463,12 +463,12 @@ discard block |
||
| 463 | 463 | |
| 464 | 464 | // loger si la table des rubriques semble foireuse |
| 465 | 465 | // et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles |
| 466 | - if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) { |
|
| 466 | + if (sql_countsel('spip_rubriques', 'profondeur>'.intval($prof + 1))) { |
|
| 467 | 467 | spip_log( |
| 468 | - 'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)', |
|
| 468 | + 'Les rubriques de profondeur>'.($prof + 1).' semblent suspectes (branches morte ou reference circulaire dans les parents)', |
|
| 469 | 469 | _LOG_CRITIQUE |
| 470 | 470 | ); |
| 471 | - sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1)); |
|
| 471 | + sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>'.intval($prof + 1)); |
|
| 472 | 472 | } |
| 473 | 473 | |
| 474 | 474 | // reparer les articles |
@@ -479,7 +479,7 @@ discard block |
||
| 479 | 479 | ); |
| 480 | 480 | |
| 481 | 481 | while ($row = sql_fetch($r)) { |
| 482 | - sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id'])); |
|
| 482 | + sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article='.intval($row['id'])); |
|
| 483 | 483 | } |
| 484 | 484 | |
| 485 | 485 | // avertir les plugins qui peuvent faire leur mises a jour egalement |
@@ -510,7 +510,7 @@ discard block |
||
| 510 | 510 | $t = sql_updateq( |
| 511 | 511 | 'spip_rubriques', |
| 512 | 512 | ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
| 513 | - 'id_rubrique=' . intval($id_rubrique) |
|
| 513 | + 'id_rubrique='.intval($id_rubrique) |
|
| 514 | 514 | ); |
| 515 | 515 | } |
| 516 | 516 | |
@@ -555,7 +555,7 @@ discard block |
||
| 555 | 555 | sql_updateq( |
| 556 | 556 | 'spip_articles', |
| 557 | 557 | ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
| 558 | - 'id_article=' . intval($id_article) |
|
| 558 | + 'id_article='.intval($id_article) |
|
| 559 | 559 | ); |
| 560 | 560 | } |
| 561 | 561 | |
@@ -630,11 +630,11 @@ discard block |
||
| 630 | 630 | ]; |
| 631 | 631 | // generer un nom de fonction "anonyme" unique |
| 632 | 632 | do { |
| 633 | - $functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax()); |
|
| 633 | + $functionname = 'f_calculer_langues_utilisees_'.$boucle->id_table.'_'.time().'_'.random_int(0, mt_getrandmax()); |
|
| 634 | 634 | } while (function_exists($functionname)); |
| 635 | 635 | $code = calculer_boucle('calculer_langues_utilisees', $boucles); |
| 636 | - $code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code; |
|
| 637 | - $code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();'; |
|
| 636 | + $code = '$SP=0; $command=array();$command["connect"] = $connect = "'.$serveur.'"; $Pile=array(0=>array());'."\n".$code; |
|
| 637 | + $code = 'function '.$functionname.'(){'.$code.'};$res = '.$functionname.'();'; |
|
| 638 | 638 | $res = ''; |
| 639 | 639 | eval($code); |
| 640 | 640 | $res = explode(',', $res); |
@@ -736,11 +736,11 @@ discard block |
||
| 736 | 736 | $maxiter-- and $filles = sql_allfetsel( |
| 737 | 737 | 'id_rubrique', |
| 738 | 738 | 'spip_rubriques', |
| 739 | - sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT') |
|
| 739 | + sql_in('id_parent', $r).' AND '.sql_in('id_rubrique', $r, 'NOT') |
|
| 740 | 740 | ) |
| 741 | 741 | ) { |
| 742 | 742 | $r = join(',', array_column($filles, 'id_rubrique')); |
| 743 | - $branche .= ',' . $r; |
|
| 743 | + $branche .= ','.$r; |
|
| 744 | 744 | } |
| 745 | 745 | |
| 746 | 746 | # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
@@ -780,7 +780,7 @@ discard block |
||
| 780 | 780 | |
| 781 | 781 | if (isset($b[$id])) { |
| 782 | 782 | // Notre branche commence par la rubrique de depart si $tout=true |
| 783 | - return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id]; |
|
| 783 | + return $tout ? (strlen($b[$id]) ? $b[$id].",$id" : $id) : $b[$id]; |
|
| 784 | 784 | } |
| 785 | 785 | |
| 786 | 786 | $hier = ''; |
@@ -793,11 +793,11 @@ discard block |
||
| 793 | 793 | $maxiter-- and $parents = sql_allfetsel( |
| 794 | 794 | 'id_parent', |
| 795 | 795 | 'spip_rubriques', |
| 796 | - sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT') |
|
| 796 | + sql_in('id_rubrique', $ids_nouveaux_parents).' AND '.sql_in('id_parent', $hier, 'NOT') |
|
| 797 | 797 | ) |
| 798 | 798 | ) { |
| 799 | 799 | $ids_nouveaux_parents = join(',', array_column($parents, 'id_parent')); |
| 800 | - $hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : ''); |
|
| 800 | + $hier = $ids_nouveaux_parents.(strlen($hier) ? ','.$hier : ''); |
|
| 801 | 801 | } |
| 802 | 802 | |
| 803 | 803 | # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
@@ -829,7 +829,7 @@ discard block |
||
| 829 | 829 | include_spip('base/abstract_sql'); |
| 830 | 830 | if ($check) { |
| 831 | 831 | $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
| 832 | - 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 832 | + 'AND A.date <= '.sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 833 | 833 | |
| 834 | 834 | $r = sql_select( |
| 835 | 835 | 'DISTINCT A.id_rubrique AS id', |
@@ -846,7 +846,7 @@ discard block |
||
| 846 | 846 | $t = sql_fetsel( |
| 847 | 847 | 'date', |
| 848 | 848 | 'spip_articles', |
| 849 | - "statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')), |
|
| 849 | + "statut='publie' AND date > ".sql_quote(date('Y-m-d H:i:s')), |
|
| 850 | 850 | '', |
| 851 | 851 | 'date', |
| 852 | 852 | '1' |
@@ -902,7 +902,7 @@ discard block |
||
| 902 | 902 | $r = sql_getfetsel( |
| 903 | 903 | 'id_rubrique', |
| 904 | 904 | 'spip_rubriques', |
| 905 | - 'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent), |
|
| 905 | + 'titre = '.sql_quote($titre).' AND id_parent='.intval($id_parent), |
|
| 906 | 906 | $groupby = [], |
| 907 | 907 | $orderby = [], |
| 908 | 908 | $limit = '', |
@@ -938,7 +938,7 @@ discard block |
||
| 938 | 938 | sql_updateq( |
| 939 | 939 | 'spip_rubriques', |
| 940 | 940 | ['id_secteur' => $id_secteur, 'lang' => $lang], |
| 941 | - 'id_rubrique=' . intval($id_rubrique), |
|
| 941 | + 'id_rubrique='.intval($id_rubrique), |
|
| 942 | 942 | [], |
| 943 | 943 | $serveur |
| 944 | 944 | ); |
@@ -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 | include_spip('inc/presentation'); |
@@ -31,7 +31,7 @@ discard block |
||
| 31 | 31 | * @uses exec_puce_statut_args() |
| 32 | 32 | **/ |
| 33 | 33 | function exec_puce_statut_dist(): void { |
| 34 | - exec_puce_statut_args(_request('id'), _request('type')); |
|
| 34 | + exec_puce_statut_args(_request('id'), _request('type')); |
|
| 35 | 35 | } |
| 36 | 36 | |
| 37 | 37 | /** |
@@ -50,26 +50,26 @@ discard block |
||
| 50 | 50 | * Type d'objet |
| 51 | 51 | **/ |
| 52 | 52 | function exec_puce_statut_args($id, $type): void { |
| 53 | - $id = intval($id); |
|
| 54 | - if ( |
|
| 55 | - $table_objet_sql = table_objet_sql($type) |
|
| 56 | - and $d = lister_tables_objets_sql($table_objet_sql) |
|
| 57 | - and isset($d['statut_textes_instituer']) |
|
| 58 | - and $d['statut_textes_instituer'] |
|
| 59 | - ) { |
|
| 60 | - $prim = id_table_objet($type); |
|
| 61 | - if (isset($d['field']['id_rubrique'])) { |
|
| 62 | - $select = 'id_rubrique,statut'; |
|
| 63 | - } else { |
|
| 64 | - $select = '0 as id_rubrique,statut'; |
|
| 65 | - } |
|
| 66 | - $r = sql_fetsel($select, $table_objet_sql, "$prim=$id"); |
|
| 67 | - $statut = $r['statut']; |
|
| 68 | - $id_rubrique = $r['id_rubrique']; |
|
| 69 | - } else { |
|
| 70 | - $id_rubrique = $id; |
|
| 71 | - $statut = 'prop'; // arbitraire |
|
| 72 | - } |
|
| 73 | - $puce_statut = charger_fonction('puce_statut', 'inc'); |
|
| 74 | - ajax_retour($puce_statut($id, $statut, $id_rubrique, $type, true)); |
|
| 53 | + $id = intval($id); |
|
| 54 | + if ( |
|
| 55 | + $table_objet_sql = table_objet_sql($type) |
|
| 56 | + and $d = lister_tables_objets_sql($table_objet_sql) |
|
| 57 | + and isset($d['statut_textes_instituer']) |
|
| 58 | + and $d['statut_textes_instituer'] |
|
| 59 | + ) { |
|
| 60 | + $prim = id_table_objet($type); |
|
| 61 | + if (isset($d['field']['id_rubrique'])) { |
|
| 62 | + $select = 'id_rubrique,statut'; |
|
| 63 | + } else { |
|
| 64 | + $select = '0 as id_rubrique,statut'; |
|
| 65 | + } |
|
| 66 | + $r = sql_fetsel($select, $table_objet_sql, "$prim=$id"); |
|
| 67 | + $statut = $r['statut']; |
|
| 68 | + $id_rubrique = $r['id_rubrique']; |
|
| 69 | + } else { |
|
| 70 | + $id_rubrique = $id; |
|
| 71 | + $statut = 'prop'; // arbitraire |
|
| 72 | + } |
|
| 73 | + $puce_statut = charger_fonction('puce_statut', 'inc'); |
|
| 74 | + ajax_retour($puce_statut($id, $statut, $id_rubrique, $type, true)); |
|
| 75 | 75 | } |
@@ -9,384 +9,384 @@ |
||
| 9 | 9 | |
| 10 | 10 | $GLOBALS['CHARSET']['translit'] = [ |
| 11 | 11 | // latin [fausse plage] |
| 12 | - 128 => 'EUR', |
|
| 13 | - 131 => 'f', |
|
| 14 | - 140 => 'OE', |
|
| 15 | - 147 => '\'\'', |
|
| 16 | - 148 => '\'\'', |
|
| 17 | - 153 => '(TM)', |
|
| 18 | - 156 => 'oe', |
|
| 19 | - 159 => 'Y', |
|
| 12 | + 128 => 'EUR', |
|
| 13 | + 131 => 'f', |
|
| 14 | + 140 => 'OE', |
|
| 15 | + 147 => '\'\'', |
|
| 16 | + 148 => '\'\'', |
|
| 17 | + 153 => '(TM)', |
|
| 18 | + 156 => 'oe', |
|
| 19 | + 159 => 'Y', |
|
| 20 | 20 | |
| 21 | 21 | // latin [legal] |
| 22 | - 160 => ' ', |
|
| 23 | - 161 => '!', |
|
| 24 | - 162 => 'c', |
|
| 25 | - 163 => 'L', |
|
| 26 | - 164 => 'O', |
|
| 27 | - 165 => 'yen', |
|
| 28 | - 166 => '|', |
|
| 29 | - 167 => 'p', |
|
| 30 | - 169 => '(c)', |
|
| 31 | - 171 => '<<', |
|
| 32 | - 172 => '-', |
|
| 33 | - 173 => '-', |
|
| 34 | - 174 => '(R)', |
|
| 35 | - 176 => 'o', |
|
| 36 | - 177 => '+-', |
|
| 37 | - 181 => 'mu', |
|
| 38 | - 182 => 'p', |
|
| 39 | - 183 => '.', |
|
| 40 | - 186 => 'o ', |
|
| 41 | - 187 => '>>', |
|
| 42 | - 191 => '?', |
|
| 43 | - 192 => 'A', |
|
| 44 | - 193 => 'A', |
|
| 45 | - 194 => 'A', |
|
| 46 | - 195 => 'A', |
|
| 47 | - 196 => 'A', |
|
| 48 | - 197 => 'A', |
|
| 49 | - 198 => 'AE', |
|
| 50 | - 199 => 'C', |
|
| 51 | - 200 => 'E', |
|
| 52 | - 201 => 'E', |
|
| 53 | - 202 => 'E', |
|
| 54 | - 203 => 'E', |
|
| 55 | - 204 => 'I', |
|
| 56 | - 205 => 'I', |
|
| 57 | - 206 => 'I', |
|
| 58 | - 207 => 'I', |
|
| 59 | - 209 => 'N', |
|
| 60 | - 210 => 'O', |
|
| 61 | - 211 => 'O', |
|
| 62 | - 212 => 'O', |
|
| 63 | - 213 => 'O', |
|
| 64 | - 214 => 'O', |
|
| 65 | - 216 => 'O', |
|
| 66 | - 217 => 'U', |
|
| 67 | - 218 => 'U', |
|
| 68 | - 219 => 'U', |
|
| 69 | - 220 => 'U', |
|
| 70 | - 223 => 'ss', |
|
| 71 | - 224 => 'a', |
|
| 72 | - 225 => 'a', |
|
| 73 | - 226 => 'a', |
|
| 74 | - 227 => 'a', |
|
| 75 | - 228 => 'a', |
|
| 76 | - 229 => 'a', |
|
| 77 | - 230 => 'ae', |
|
| 78 | - 231 => 'c', |
|
| 79 | - 232 => 'e', |
|
| 80 | - 233 => 'e', |
|
| 81 | - 234 => 'e', |
|
| 82 | - 235 => 'e', |
|
| 83 | - 236 => 'i', |
|
| 84 | - 237 => 'i', |
|
| 85 | - 238 => 'i', |
|
| 86 | - 239 => 'i', |
|
| 87 | - 241 => 'n', |
|
| 88 | - 242 => 'o', |
|
| 89 | - 243 => 'o', |
|
| 90 | - 244 => 'o', |
|
| 91 | - 245 => 'o', |
|
| 92 | - 246 => 'o', |
|
| 93 | - 248 => 'o', |
|
| 94 | - 249 => 'u', |
|
| 95 | - 250 => 'u', |
|
| 96 | - 251 => 'u', |
|
| 97 | - 252 => 'u', |
|
| 98 | - 255 => 'y', |
|
| 22 | + 160 => ' ', |
|
| 23 | + 161 => '!', |
|
| 24 | + 162 => 'c', |
|
| 25 | + 163 => 'L', |
|
| 26 | + 164 => 'O', |
|
| 27 | + 165 => 'yen', |
|
| 28 | + 166 => '|', |
|
| 29 | + 167 => 'p', |
|
| 30 | + 169 => '(c)', |
|
| 31 | + 171 => '<<', |
|
| 32 | + 172 => '-', |
|
| 33 | + 173 => '-', |
|
| 34 | + 174 => '(R)', |
|
| 35 | + 176 => 'o', |
|
| 36 | + 177 => '+-', |
|
| 37 | + 181 => 'mu', |
|
| 38 | + 182 => 'p', |
|
| 39 | + 183 => '.', |
|
| 40 | + 186 => 'o ', |
|
| 41 | + 187 => '>>', |
|
| 42 | + 191 => '?', |
|
| 43 | + 192 => 'A', |
|
| 44 | + 193 => 'A', |
|
| 45 | + 194 => 'A', |
|
| 46 | + 195 => 'A', |
|
| 47 | + 196 => 'A', |
|
| 48 | + 197 => 'A', |
|
| 49 | + 198 => 'AE', |
|
| 50 | + 199 => 'C', |
|
| 51 | + 200 => 'E', |
|
| 52 | + 201 => 'E', |
|
| 53 | + 202 => 'E', |
|
| 54 | + 203 => 'E', |
|
| 55 | + 204 => 'I', |
|
| 56 | + 205 => 'I', |
|
| 57 | + 206 => 'I', |
|
| 58 | + 207 => 'I', |
|
| 59 | + 209 => 'N', |
|
| 60 | + 210 => 'O', |
|
| 61 | + 211 => 'O', |
|
| 62 | + 212 => 'O', |
|
| 63 | + 213 => 'O', |
|
| 64 | + 214 => 'O', |
|
| 65 | + 216 => 'O', |
|
| 66 | + 217 => 'U', |
|
| 67 | + 218 => 'U', |
|
| 68 | + 219 => 'U', |
|
| 69 | + 220 => 'U', |
|
| 70 | + 223 => 'ss', |
|
| 71 | + 224 => 'a', |
|
| 72 | + 225 => 'a', |
|
| 73 | + 226 => 'a', |
|
| 74 | + 227 => 'a', |
|
| 75 | + 228 => 'a', |
|
| 76 | + 229 => 'a', |
|
| 77 | + 230 => 'ae', |
|
| 78 | + 231 => 'c', |
|
| 79 | + 232 => 'e', |
|
| 80 | + 233 => 'e', |
|
| 81 | + 234 => 'e', |
|
| 82 | + 235 => 'e', |
|
| 83 | + 236 => 'i', |
|
| 84 | + 237 => 'i', |
|
| 85 | + 238 => 'i', |
|
| 86 | + 239 => 'i', |
|
| 87 | + 241 => 'n', |
|
| 88 | + 242 => 'o', |
|
| 89 | + 243 => 'o', |
|
| 90 | + 244 => 'o', |
|
| 91 | + 245 => 'o', |
|
| 92 | + 246 => 'o', |
|
| 93 | + 248 => 'o', |
|
| 94 | + 249 => 'u', |
|
| 95 | + 250 => 'u', |
|
| 96 | + 251 => 'u', |
|
| 97 | + 252 => 'u', |
|
| 98 | + 255 => 'y', |
|
| 99 | 99 | |
| 100 | 100 | // turc |
| 101 | - 286 => 'G', |
|
| 102 | - 287 => 'g', |
|
| 103 | - 304 => 'I', |
|
| 104 | - 305 => 'i', |
|
| 101 | + 286 => 'G', |
|
| 102 | + 287 => 'g', |
|
| 103 | + 304 => 'I', |
|
| 104 | + 305 => 'i', |
|
| 105 | 105 | |
| 106 | 106 | // esperanto |
| 107 | - 264 => 'Cx', |
|
| 108 | - 265 => 'cx', |
|
| 109 | - 284 => 'Gx', |
|
| 110 | - 285 => 'gx', |
|
| 111 | - 292 => 'Hx', |
|
| 112 | - 293 => 'hx', |
|
| 113 | - 308 => 'Jx', |
|
| 114 | - 309 => 'jx', |
|
| 115 | - 348 => 'Sx', |
|
| 116 | - 349 => 'sx', |
|
| 117 | - 364 => 'Ux', |
|
| 118 | - 365 => 'ux', |
|
| 107 | + 264 => 'Cx', |
|
| 108 | + 265 => 'cx', |
|
| 109 | + 284 => 'Gx', |
|
| 110 | + 285 => 'gx', |
|
| 111 | + 292 => 'Hx', |
|
| 112 | + 293 => 'hx', |
|
| 113 | + 308 => 'Jx', |
|
| 114 | + 309 => 'jx', |
|
| 115 | + 348 => 'Sx', |
|
| 116 | + 349 => 'sx', |
|
| 117 | + 364 => 'Ux', |
|
| 118 | + 365 => 'ux', |
|
| 119 | 119 | |
| 120 | 120 | |
| 121 | 121 | // latin2 [Czech] |
| 122 | - 283 => 'e', |
|
| 123 | - 353 => 's', |
|
| 124 | - 269 => 'c', |
|
| 125 | - 345 => 'r', |
|
| 126 | - 382 => 'z', |
|
| 127 | - 367 => 'u', |
|
| 128 | - 328 => 'n', |
|
| 129 | - 357 => 't', |
|
| 130 | - 271 => 'd', |
|
| 131 | - 449 => 'o', |
|
| 132 | - 282 => 'E', |
|
| 133 | - 352 => 'S', |
|
| 134 | - 268 => 'C', |
|
| 135 | - 344 => 'R', |
|
| 136 | - 381 => 'Z', |
|
| 137 | - 366 => 'U', |
|
| 138 | - 327 => 'N', |
|
| 139 | - 356 => 'T', |
|
| 140 | - 270 => 'D', |
|
| 141 | - 467 => 'O', |
|
| 122 | + 283 => 'e', |
|
| 123 | + 353 => 's', |
|
| 124 | + 269 => 'c', |
|
| 125 | + 345 => 'r', |
|
| 126 | + 382 => 'z', |
|
| 127 | + 367 => 'u', |
|
| 128 | + 328 => 'n', |
|
| 129 | + 357 => 't', |
|
| 130 | + 271 => 'd', |
|
| 131 | + 449 => 'o', |
|
| 132 | + 282 => 'E', |
|
| 133 | + 352 => 'S', |
|
| 134 | + 268 => 'C', |
|
| 135 | + 344 => 'R', |
|
| 136 | + 381 => 'Z', |
|
| 137 | + 366 => 'U', |
|
| 138 | + 327 => 'N', |
|
| 139 | + 356 => 'T', |
|
| 140 | + 270 => 'D', |
|
| 141 | + 467 => 'O', |
|
| 142 | 142 | |
| 143 | 143 | // francais |
| 144 | - 338 => 'OE', |
|
| 145 | - 339 => 'oe', |
|
| 146 | - 376 => 'Y', |
|
| 147 | - 402 => 'f', |
|
| 144 | + 338 => 'OE', |
|
| 145 | + 339 => 'oe', |
|
| 146 | + 376 => 'Y', |
|
| 147 | + 402 => 'f', |
|
| 148 | 148 | |
| 149 | 149 | //polskie |
| 150 | - 260 => 'A', |
|
| 151 | - 261 => 'a', |
|
| 152 | - 262 => 'C', |
|
| 153 | - 263 => 'c', |
|
| 154 | - 280 => 'E', |
|
| 155 | - 281 => 'e', |
|
| 156 | - 321 => 'L', |
|
| 157 | - 322 => 'l', |
|
| 158 | - 323 => 'N', |
|
| 159 | - 324 => 'n', |
|
| 160 | - 346 => 'S', |
|
| 161 | - 347 => 's', |
|
| 162 | - 377 => 'Z', |
|
| 163 | - 378 => 'z', |
|
| 164 | - 379 => 'Z', |
|
| 165 | - 380 => 'z', |
|
| 150 | + 260 => 'A', |
|
| 151 | + 261 => 'a', |
|
| 152 | + 262 => 'C', |
|
| 153 | + 263 => 'c', |
|
| 154 | + 280 => 'E', |
|
| 155 | + 281 => 'e', |
|
| 156 | + 321 => 'L', |
|
| 157 | + 322 => 'l', |
|
| 158 | + 323 => 'N', |
|
| 159 | + 324 => 'n', |
|
| 160 | + 346 => 'S', |
|
| 161 | + 347 => 's', |
|
| 162 | + 377 => 'Z', |
|
| 163 | + 378 => 'z', |
|
| 164 | + 379 => 'Z', |
|
| 165 | + 380 => 'z', |
|
| 166 | 166 | |
| 167 | 167 | //roumain |
| 168 | - 258 => 'A', |
|
| 169 | - 259 => 'a', |
|
| 170 | - 354 => 'T', |
|
| 171 | - 355 => 't', |
|
| 168 | + 258 => 'A', |
|
| 169 | + 259 => 'a', |
|
| 170 | + 354 => 'T', |
|
| 171 | + 355 => 't', |
|
| 172 | 172 | |
| 173 | 173 | //turc & roumain |
| 174 | - 350 => 'S', |
|
| 175 | - 351 => 's', |
|
| 174 | + 350 => 'S', |
|
| 175 | + 351 => 's', |
|
| 176 | 176 | |
| 177 | 177 | // cyrillique |
| 178 | - 1026 => 'D%', |
|
| 179 | - 1027 => 'G%', |
|
| 180 | - 8218 => '\'', |
|
| 181 | - 1107 => 'g%', |
|
| 182 | - 8222 => '"', |
|
| 183 | - 8230 => '...', |
|
| 184 | - 8224 => '/-', |
|
| 185 | - 8225 => '/=', |
|
| 186 | - 8364 => 'EUR', |
|
| 187 | - 8240 => '0/00', |
|
| 188 | - 1033 => 'LJ', |
|
| 189 | - 8249 => '<', |
|
| 190 | - 1034 => 'NJ', |
|
| 191 | - 1036 => 'KJ', |
|
| 192 | - 1035 => 'Ts', |
|
| 193 | - 1039 => 'DZ', |
|
| 194 | - 1106 => 'd%', |
|
| 195 | - 8216 => '`', |
|
| 196 | - 8217 => '\'', |
|
| 197 | - 8220 => '"', |
|
| 198 | - 8221 => '"', |
|
| 199 | - 8226 => ' o ', |
|
| 200 | - 8211 => '-', |
|
| 201 | - 8212 => '~', |
|
| 202 | - 8482 => '(TM)', |
|
| 203 | - 1113 => 'lj', |
|
| 204 | - 8250 => '>', |
|
| 205 | - 1114 => 'nj', |
|
| 206 | - 1116 => 'kj', |
|
| 207 | - 1115 => 'ts', |
|
| 208 | - 1119 => 'dz', |
|
| 209 | - 1038 => 'V%', |
|
| 210 | - 1118 => 'v%', |
|
| 211 | - 1032 => 'J%', |
|
| 212 | - 1168 => 'G3', |
|
| 213 | - 1025 => 'IO', |
|
| 214 | - 1028 => 'IE', |
|
| 215 | - 1031 => 'YI', |
|
| 216 | - 1030 => 'II', |
|
| 217 | - 1110 => 'ii', |
|
| 218 | - 1169 => 'g3', |
|
| 219 | - 1105 => 'io', |
|
| 220 | - 8470 => 'No.', |
|
| 221 | - 1108 => 'ie', |
|
| 222 | - 1112 => 'j%', |
|
| 223 | - 1029 => 'DS', |
|
| 224 | - 1109 => 'ds', |
|
| 225 | - 1111 => 'yi', |
|
| 226 | - 1040 => 'A', |
|
| 227 | - 1041 => 'B', |
|
| 228 | - 1042 => 'V', |
|
| 229 | - 1043 => 'G', |
|
| 230 | - 1044 => 'D', |
|
| 231 | - 1045 => 'E', |
|
| 232 | - 1046 => 'ZH', |
|
| 233 | - 1047 => 'Z', |
|
| 234 | - 1048 => 'I', |
|
| 235 | - 1049 => 'J', |
|
| 236 | - 1050 => 'K', |
|
| 237 | - 1051 => 'L', |
|
| 238 | - 1052 => 'M', |
|
| 239 | - 1053 => 'N', |
|
| 240 | - 1054 => 'O', |
|
| 241 | - 1055 => 'P', |
|
| 242 | - 1056 => 'R', |
|
| 243 | - 1057 => 'S', |
|
| 244 | - 1058 => 'T', |
|
| 245 | - 1059 => 'U', |
|
| 246 | - 1060 => 'F', |
|
| 247 | - 1061 => 'H', |
|
| 248 | - 1062 => 'C', |
|
| 249 | - 1063 => 'CH', |
|
| 250 | - 1064 => 'SH', |
|
| 251 | - 1065 => 'SCH', |
|
| 252 | - 1066 => '"', |
|
| 253 | - 1067 => 'Y', |
|
| 254 | - 1068 => '\'', |
|
| 255 | - 1069 => '`E', |
|
| 256 | - 1070 => 'YU', |
|
| 257 | - 1071 => 'YA', |
|
| 258 | - 1072 => 'a', |
|
| 259 | - 1073 => 'b', |
|
| 260 | - 1074 => 'v', |
|
| 261 | - 1075 => 'g', |
|
| 262 | - 1076 => 'd', |
|
| 263 | - 1077 => 'e', |
|
| 264 | - 1078 => 'zh', |
|
| 265 | - 1079 => 'z', |
|
| 266 | - 1080 => 'i', |
|
| 267 | - 1081 => 'j', |
|
| 268 | - 1082 => 'k', |
|
| 269 | - 1083 => 'l', |
|
| 270 | - 1084 => 'm', |
|
| 271 | - 1085 => 'n', |
|
| 272 | - 1086 => 'o', |
|
| 273 | - 1087 => 'p', |
|
| 274 | - 1088 => 'r', |
|
| 275 | - 1089 => 's', |
|
| 276 | - 1090 => 't', |
|
| 277 | - 1091 => 'u', |
|
| 278 | - 1092 => 'f', |
|
| 279 | - 1093 => 'h', |
|
| 280 | - 1094 => 'c', |
|
| 281 | - 1095 => 'ch', |
|
| 282 | - 1096 => 'sh', |
|
| 283 | - 1097 => 'sch', |
|
| 284 | - 1098 => '"', |
|
| 285 | - 1099 => 'y', |
|
| 286 | - 1100 => '\'', |
|
| 287 | - 1101 => '`e', |
|
| 288 | - 1102 => 'yu', |
|
| 289 | - 1103 => 'ya', |
|
| 178 | + 1026 => 'D%', |
|
| 179 | + 1027 => 'G%', |
|
| 180 | + 8218 => '\'', |
|
| 181 | + 1107 => 'g%', |
|
| 182 | + 8222 => '"', |
|
| 183 | + 8230 => '...', |
|
| 184 | + 8224 => '/-', |
|
| 185 | + 8225 => '/=', |
|
| 186 | + 8364 => 'EUR', |
|
| 187 | + 8240 => '0/00', |
|
| 188 | + 1033 => 'LJ', |
|
| 189 | + 8249 => '<', |
|
| 190 | + 1034 => 'NJ', |
|
| 191 | + 1036 => 'KJ', |
|
| 192 | + 1035 => 'Ts', |
|
| 193 | + 1039 => 'DZ', |
|
| 194 | + 1106 => 'd%', |
|
| 195 | + 8216 => '`', |
|
| 196 | + 8217 => '\'', |
|
| 197 | + 8220 => '"', |
|
| 198 | + 8221 => '"', |
|
| 199 | + 8226 => ' o ', |
|
| 200 | + 8211 => '-', |
|
| 201 | + 8212 => '~', |
|
| 202 | + 8482 => '(TM)', |
|
| 203 | + 1113 => 'lj', |
|
| 204 | + 8250 => '>', |
|
| 205 | + 1114 => 'nj', |
|
| 206 | + 1116 => 'kj', |
|
| 207 | + 1115 => 'ts', |
|
| 208 | + 1119 => 'dz', |
|
| 209 | + 1038 => 'V%', |
|
| 210 | + 1118 => 'v%', |
|
| 211 | + 1032 => 'J%', |
|
| 212 | + 1168 => 'G3', |
|
| 213 | + 1025 => 'IO', |
|
| 214 | + 1028 => 'IE', |
|
| 215 | + 1031 => 'YI', |
|
| 216 | + 1030 => 'II', |
|
| 217 | + 1110 => 'ii', |
|
| 218 | + 1169 => 'g3', |
|
| 219 | + 1105 => 'io', |
|
| 220 | + 8470 => 'No.', |
|
| 221 | + 1108 => 'ie', |
|
| 222 | + 1112 => 'j%', |
|
| 223 | + 1029 => 'DS', |
|
| 224 | + 1109 => 'ds', |
|
| 225 | + 1111 => 'yi', |
|
| 226 | + 1040 => 'A', |
|
| 227 | + 1041 => 'B', |
|
| 228 | + 1042 => 'V', |
|
| 229 | + 1043 => 'G', |
|
| 230 | + 1044 => 'D', |
|
| 231 | + 1045 => 'E', |
|
| 232 | + 1046 => 'ZH', |
|
| 233 | + 1047 => 'Z', |
|
| 234 | + 1048 => 'I', |
|
| 235 | + 1049 => 'J', |
|
| 236 | + 1050 => 'K', |
|
| 237 | + 1051 => 'L', |
|
| 238 | + 1052 => 'M', |
|
| 239 | + 1053 => 'N', |
|
| 240 | + 1054 => 'O', |
|
| 241 | + 1055 => 'P', |
|
| 242 | + 1056 => 'R', |
|
| 243 | + 1057 => 'S', |
|
| 244 | + 1058 => 'T', |
|
| 245 | + 1059 => 'U', |
|
| 246 | + 1060 => 'F', |
|
| 247 | + 1061 => 'H', |
|
| 248 | + 1062 => 'C', |
|
| 249 | + 1063 => 'CH', |
|
| 250 | + 1064 => 'SH', |
|
| 251 | + 1065 => 'SCH', |
|
| 252 | + 1066 => '"', |
|
| 253 | + 1067 => 'Y', |
|
| 254 | + 1068 => '\'', |
|
| 255 | + 1069 => '`E', |
|
| 256 | + 1070 => 'YU', |
|
| 257 | + 1071 => 'YA', |
|
| 258 | + 1072 => 'a', |
|
| 259 | + 1073 => 'b', |
|
| 260 | + 1074 => 'v', |
|
| 261 | + 1075 => 'g', |
|
| 262 | + 1076 => 'd', |
|
| 263 | + 1077 => 'e', |
|
| 264 | + 1078 => 'zh', |
|
| 265 | + 1079 => 'z', |
|
| 266 | + 1080 => 'i', |
|
| 267 | + 1081 => 'j', |
|
| 268 | + 1082 => 'k', |
|
| 269 | + 1083 => 'l', |
|
| 270 | + 1084 => 'm', |
|
| 271 | + 1085 => 'n', |
|
| 272 | + 1086 => 'o', |
|
| 273 | + 1087 => 'p', |
|
| 274 | + 1088 => 'r', |
|
| 275 | + 1089 => 's', |
|
| 276 | + 1090 => 't', |
|
| 277 | + 1091 => 'u', |
|
| 278 | + 1092 => 'f', |
|
| 279 | + 1093 => 'h', |
|
| 280 | + 1094 => 'c', |
|
| 281 | + 1095 => 'ch', |
|
| 282 | + 1096 => 'sh', |
|
| 283 | + 1097 => 'sch', |
|
| 284 | + 1098 => '"', |
|
| 285 | + 1099 => 'y', |
|
| 286 | + 1100 => '\'', |
|
| 287 | + 1101 => '`e', |
|
| 288 | + 1102 => 'yu', |
|
| 289 | + 1103 => 'ya', |
|
| 290 | 290 | |
| 291 | 291 | // vietnamien en translitteration de base |
| 292 | - 7843 => 'a', |
|
| 293 | - 7841 => 'a', |
|
| 294 | - 7845 => 'a', |
|
| 295 | - 7847 => 'a', |
|
| 296 | - 7849 => 'a', |
|
| 297 | - 7851 => 'a', |
|
| 298 | - 7853 => 'a', |
|
| 299 | - 7855 => 'a', |
|
| 300 | - 7857 => 'a', |
|
| 301 | - 7859 => 'a', |
|
| 302 | - 7861 => 'a', |
|
| 303 | - 7863 => 'a', |
|
| 304 | - 7842 => 'A', |
|
| 305 | - 7840 => 'A', |
|
| 306 | - 7844 => 'A', |
|
| 307 | - 7846 => 'A', |
|
| 308 | - 7848 => 'A', |
|
| 309 | - 7850 => 'A', |
|
| 310 | - 7852 => 'A', |
|
| 311 | - 7854 => 'A', |
|
| 312 | - 7856 => 'A', |
|
| 313 | - 7858 => 'A', |
|
| 314 | - 7860 => 'A', |
|
| 315 | - 7862 => 'A', |
|
| 316 | - 7867 => 'e', |
|
| 317 | - 7869 => 'e', |
|
| 318 | - 7865 => 'e', |
|
| 319 | - 7871 => 'e', |
|
| 320 | - 7873 => 'e', |
|
| 321 | - 7875 => 'e', |
|
| 322 | - 7877 => 'e', |
|
| 323 | - 7879 => 'e', |
|
| 324 | - 7866 => 'E', |
|
| 325 | - 7868 => 'E', |
|
| 326 | - 7864 => 'E', |
|
| 327 | - 7870 => 'E', |
|
| 328 | - 7872 => 'E', |
|
| 329 | - 7874 => 'E', |
|
| 330 | - 7876 => 'E', |
|
| 331 | - 7878 => 'E', |
|
| 332 | - 7881 => 'i', |
|
| 333 | - 7883 => 'i', |
|
| 334 | - 7880 => 'I', |
|
| 335 | - 7882 => 'I', |
|
| 336 | - 7887 => 'o', |
|
| 337 | - 7885 => 'o', |
|
| 338 | - 7889 => 'o', |
|
| 339 | - 7891 => 'o', |
|
| 340 | - 7893 => 'o', |
|
| 341 | - 7895 => 'o', |
|
| 342 | - 7897 => 'o', |
|
| 343 | - 417 => 'o', |
|
| 344 | - 7899 => 'o', |
|
| 345 | - 7901 => 'o', |
|
| 346 | - 7903 => 'o', |
|
| 347 | - 7905 => 'o', |
|
| 348 | - 7907 => 'o', |
|
| 349 | - 7886 => 'O', |
|
| 350 | - 7884 => 'O', |
|
| 351 | - 7888 => 'O', |
|
| 352 | - 7890 => 'O', |
|
| 353 | - 7892 => 'O', |
|
| 354 | - 7894 => 'O', |
|
| 355 | - 7896 => 'O', |
|
| 356 | - 416 => 'O', |
|
| 357 | - 7898 => 'O', |
|
| 358 | - 7900 => 'O', |
|
| 359 | - 7902 => 'O', |
|
| 360 | - 7904 => 'O', |
|
| 361 | - 7906 => 'O', |
|
| 362 | - 7911 => 'u', |
|
| 363 | - 361 => 'u', |
|
| 364 | - 7909 => 'u', |
|
| 365 | - 432 => 'u', |
|
| 366 | - 7913 => 'u', |
|
| 367 | - 7915 => 'u', |
|
| 368 | - 7917 => 'u', |
|
| 369 | - 7919 => 'u', |
|
| 370 | - 7921 => 'u', |
|
| 371 | - 7910 => 'U', |
|
| 372 | - 360 => 'U', |
|
| 373 | - 7908 => 'U', |
|
| 374 | - 431 => 'U', |
|
| 375 | - 7912 => 'U', |
|
| 376 | - 7914 => 'U', |
|
| 377 | - 7916 => 'U', |
|
| 378 | - 7918 => 'U', |
|
| 379 | - 7920 => 'U', |
|
| 380 | - 253 => 'y', |
|
| 381 | - 7923 => 'y', |
|
| 382 | - 7927 => 'y', |
|
| 383 | - 7929 => 'y', |
|
| 384 | - 7925 => 'y', |
|
| 385 | - 221 => 'Y', |
|
| 386 | - 7922 => 'Y', |
|
| 387 | - 7926 => 'Y', |
|
| 388 | - 7928 => 'Y', |
|
| 389 | - 7924 => 'Y', |
|
| 390 | - 273 => 'd' |
|
| 292 | + 7843 => 'a', |
|
| 293 | + 7841 => 'a', |
|
| 294 | + 7845 => 'a', |
|
| 295 | + 7847 => 'a', |
|
| 296 | + 7849 => 'a', |
|
| 297 | + 7851 => 'a', |
|
| 298 | + 7853 => 'a', |
|
| 299 | + 7855 => 'a', |
|
| 300 | + 7857 => 'a', |
|
| 301 | + 7859 => 'a', |
|
| 302 | + 7861 => 'a', |
|
| 303 | + 7863 => 'a', |
|
| 304 | + 7842 => 'A', |
|
| 305 | + 7840 => 'A', |
|
| 306 | + 7844 => 'A', |
|
| 307 | + 7846 => 'A', |
|
| 308 | + 7848 => 'A', |
|
| 309 | + 7850 => 'A', |
|
| 310 | + 7852 => 'A', |
|
| 311 | + 7854 => 'A', |
|
| 312 | + 7856 => 'A', |
|
| 313 | + 7858 => 'A', |
|
| 314 | + 7860 => 'A', |
|
| 315 | + 7862 => 'A', |
|
| 316 | + 7867 => 'e', |
|
| 317 | + 7869 => 'e', |
|
| 318 | + 7865 => 'e', |
|
| 319 | + 7871 => 'e', |
|
| 320 | + 7873 => 'e', |
|
| 321 | + 7875 => 'e', |
|
| 322 | + 7877 => 'e', |
|
| 323 | + 7879 => 'e', |
|
| 324 | + 7866 => 'E', |
|
| 325 | + 7868 => 'E', |
|
| 326 | + 7864 => 'E', |
|
| 327 | + 7870 => 'E', |
|
| 328 | + 7872 => 'E', |
|
| 329 | + 7874 => 'E', |
|
| 330 | + 7876 => 'E', |
|
| 331 | + 7878 => 'E', |
|
| 332 | + 7881 => 'i', |
|
| 333 | + 7883 => 'i', |
|
| 334 | + 7880 => 'I', |
|
| 335 | + 7882 => 'I', |
|
| 336 | + 7887 => 'o', |
|
| 337 | + 7885 => 'o', |
|
| 338 | + 7889 => 'o', |
|
| 339 | + 7891 => 'o', |
|
| 340 | + 7893 => 'o', |
|
| 341 | + 7895 => 'o', |
|
| 342 | + 7897 => 'o', |
|
| 343 | + 417 => 'o', |
|
| 344 | + 7899 => 'o', |
|
| 345 | + 7901 => 'o', |
|
| 346 | + 7903 => 'o', |
|
| 347 | + 7905 => 'o', |
|
| 348 | + 7907 => 'o', |
|
| 349 | + 7886 => 'O', |
|
| 350 | + 7884 => 'O', |
|
| 351 | + 7888 => 'O', |
|
| 352 | + 7890 => 'O', |
|
| 353 | + 7892 => 'O', |
|
| 354 | + 7894 => 'O', |
|
| 355 | + 7896 => 'O', |
|
| 356 | + 416 => 'O', |
|
| 357 | + 7898 => 'O', |
|
| 358 | + 7900 => 'O', |
|
| 359 | + 7902 => 'O', |
|
| 360 | + 7904 => 'O', |
|
| 361 | + 7906 => 'O', |
|
| 362 | + 7911 => 'u', |
|
| 363 | + 361 => 'u', |
|
| 364 | + 7909 => 'u', |
|
| 365 | + 432 => 'u', |
|
| 366 | + 7913 => 'u', |
|
| 367 | + 7915 => 'u', |
|
| 368 | + 7917 => 'u', |
|
| 369 | + 7919 => 'u', |
|
| 370 | + 7921 => 'u', |
|
| 371 | + 7910 => 'U', |
|
| 372 | + 360 => 'U', |
|
| 373 | + 7908 => 'U', |
|
| 374 | + 431 => 'U', |
|
| 375 | + 7912 => 'U', |
|
| 376 | + 7914 => 'U', |
|
| 377 | + 7916 => 'U', |
|
| 378 | + 7918 => 'U', |
|
| 379 | + 7920 => 'U', |
|
| 380 | + 253 => 'y', |
|
| 381 | + 7923 => 'y', |
|
| 382 | + 7927 => 'y', |
|
| 383 | + 7929 => 'y', |
|
| 384 | + 7925 => 'y', |
|
| 385 | + 221 => 'Y', |
|
| 386 | + 7922 => 'Y', |
|
| 387 | + 7926 => 'Y', |
|
| 388 | + 7928 => 'Y', |
|
| 389 | + 7924 => 'Y', |
|
| 390 | + 273 => 'd' |
|
| 391 | 391 | |
| 392 | 392 | ]; |