@@ -2006,8 +2006,7 @@ discard block |
||
| 2006 | 2006 | // si on ne connait pas le type on le deduit de $v autant que possible |
| 2007 | 2007 | if (is_bool($v)) { |
| 2008 | 2008 | return strval(intval($v)); |
| 2009 | - } |
|
| 2010 | - elseif (is_numeric($v)) { |
|
| 2009 | + } elseif (is_numeric($v)) { |
|
| 2011 | 2010 | return strval($v); |
| 2012 | 2011 | } |
| 2013 | 2012 | } |
@@ -2633,8 +2632,7 @@ discard block |
||
| 2633 | 2632 | $tables[$table]['valeur'][$k] = _sqlite_calculer_cite($now, $tables[$table]['desc'][$k]); |
| 2634 | 2633 | } |
| 2635 | 2634 | } |
| 2636 | - } |
|
| 2637 | - else { |
|
| 2635 | + } else { |
|
| 2638 | 2636 | $now = _sqlite_func_now(true); |
| 2639 | 2637 | foreach (array_keys($tables[$table]['desc']) as $k) { |
| 2640 | 2638 | $tables[$table]['valeur'][$k] = _sqlite_calculer_cite($now, $tables[$table]['desc'][$k]); |
@@ -64,27 +64,27 @@ discard block |
||
| 64 | 64 | // determiner le dossier de la base : $addr ou _DIR_DB |
| 65 | 65 | $f = _DIR_DB; |
| 66 | 66 | if ($addr and strpos($addr, '/') !== false) { |
| 67 | - $f = rtrim($addr, '/') . '/'; |
|
| 67 | + $f = rtrim($addr, '/').'/'; |
|
| 68 | 68 | } |
| 69 | 69 | |
| 70 | 70 | // un nom de base demande et impossible d'obtenir la base, on s'en va : |
| 71 | 71 | // il faut que la base existe ou que le repertoire parent soit writable |
| 72 | - if ($db and !is_file($f .= $db . '.sqlite') and !is_writable(dirname($f))) { |
|
| 73 | - spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.' . _LOG_HS); |
|
| 72 | + if ($db and !is_file($f .= $db.'.sqlite') and !is_writable(dirname($f))) { |
|
| 73 | + spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.'._LOG_HS); |
|
| 74 | 74 | |
| 75 | 75 | return false; |
| 76 | 76 | } |
| 77 | 77 | |
| 78 | 78 | // charger les modules sqlite au besoin |
| 79 | 79 | if (!_sqlite_charger_version($sqlite_version)) { |
| 80 | - spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.' . _LOG_HS); |
|
| 80 | + spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.'._LOG_HS); |
|
| 81 | 81 | |
| 82 | 82 | return false; |
| 83 | 83 | } |
| 84 | 84 | |
| 85 | 85 | // chargement des constantes |
| 86 | 86 | // il ne faut pas definir les constantes avant d'avoir charge les modules sqlite |
| 87 | - $define = 'spip_sqlite' . $sqlite_version . '_constantes'; |
|
| 87 | + $define = 'spip_sqlite'.$sqlite_version.'_constantes'; |
|
| 88 | 88 | $define(); |
| 89 | 89 | |
| 90 | 90 | $ok = false; |
@@ -92,8 +92,8 @@ discard block |
||
| 92 | 92 | // si pas de db -> |
| 93 | 93 | // base temporaire tant qu'on ne connait pas son vrai nom |
| 94 | 94 | // pour tester la connexion |
| 95 | - $db = '_sqlite' . $sqlite_version . '_install'; |
|
| 96 | - $tmp = _DIR_DB . $db . '.sqlite'; |
|
| 95 | + $db = '_sqlite'.$sqlite_version.'_install'; |
|
| 96 | + $tmp = _DIR_DB.$db.'.sqlite'; |
|
| 97 | 97 | $ok = $link = new \PDO("sqlite:$tmp"); |
| 98 | 98 | } else { |
| 99 | 99 | // Ouvrir (eventuellement creer la base) |
@@ -102,7 +102,7 @@ discard block |
||
| 102 | 102 | |
| 103 | 103 | if (!$ok) { |
| 104 | 104 | $e = _sqlite_last_error_from_link($link); |
| 105 | - spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.' . _LOG_HS); |
|
| 105 | + spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.'._LOG_HS); |
|
| 106 | 106 | |
| 107 | 107 | return false; |
| 108 | 108 | } |
@@ -188,7 +188,7 @@ discard block |
||
| 188 | 188 | $table = $regs[3]; |
| 189 | 189 | $suite = $regs[4]; |
| 190 | 190 | } else { |
| 191 | - spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.' . _LOG_ERREUR); |
|
| 191 | + spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.'._LOG_ERREUR); |
|
| 192 | 192 | |
| 193 | 193 | return false; |
| 194 | 194 | } |
@@ -205,7 +205,7 @@ discard block |
||
| 205 | 205 | $i = 0; |
| 206 | 206 | $ouverte = false; |
| 207 | 207 | while ($do = array_shift($todo)) { |
| 208 | - $todo2[$i] = isset($todo2[$i]) ? $todo2[$i] . ',' . $do : $do; |
|
| 208 | + $todo2[$i] = isset($todo2[$i]) ? $todo2[$i].','.$do : $do; |
|
| 209 | 209 | $o = (false !== strpos($do, '(')); |
| 210 | 210 | $f = (false !== strpos($do, ')')); |
| 211 | 211 | if ($o and !$f) { |
@@ -231,7 +231,7 @@ discard block |
||
| 231 | 231 | ) { |
| 232 | 232 | spip_log( |
| 233 | 233 | "SQLite : Probleme de ALTER TABLE, utilisation non reconnue dans : $do \n(requete d'origine : $query)", |
| 234 | - 'sqlite.' . _LOG_ERREUR |
|
| 234 | + 'sqlite.'._LOG_ERREUR |
|
| 235 | 235 | ); |
| 236 | 236 | |
| 237 | 237 | return false; |
@@ -327,10 +327,10 @@ discard block |
||
| 327 | 327 | |
| 328 | 328 | // pas geres en sqlite2 |
| 329 | 329 | case 'RENAME': |
| 330 | - $do = 'RENAME TO' . substr($do, 6); |
|
| 330 | + $do = 'RENAME TO'.substr($do, 6); |
|
| 331 | 331 | case 'RENAME TO': |
| 332 | 332 | if (!spip_sqlite::executer_requete("$debut $do", $serveur)) { |
| 333 | - spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.' . _LOG_ERREUR); |
|
| 333 | + spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.'._LOG_ERREUR); |
|
| 334 | 334 | |
| 335 | 335 | return false; |
| 336 | 336 | } |
@@ -373,7 +373,7 @@ discard block |
||
| 373 | 373 | $colonnes = substr($colonne_origine, 1, -1); |
| 374 | 374 | if (false !== strpos(',', $colonnes)) { |
| 375 | 375 | spip_log('SQLite : Erreur, impossible de creer un index sur plusieurs colonnes' |
| 376 | - . " sans qu'il ait de nom ($table, ($colonnes))", 'sqlite.' . _LOG_ERREUR); |
|
| 376 | + . " sans qu'il ait de nom ($table, ($colonnes))", 'sqlite.'._LOG_ERREUR); |
|
| 377 | 377 | break; |
| 378 | 378 | } else { |
| 379 | 379 | $nom_index = $colonnes; |
@@ -388,12 +388,12 @@ discard block |
||
| 388 | 388 | |
| 389 | 389 | // pas geres en sqlite2 |
| 390 | 390 | case 'ADD COLUMN': |
| 391 | - $do = 'ADD' . substr($do, 10); |
|
| 391 | + $do = 'ADD'.substr($do, 10); |
|
| 392 | 392 | case 'ADD': |
| 393 | 393 | default: |
| 394 | 394 | if (!preg_match(',primary\s+key,i', $do)) { |
| 395 | 395 | if (!spip_sqlite::executer_requete("$debut $do", $serveur)) { |
| 396 | - spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR); |
|
| 396 | + spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR); |
|
| 397 | 397 | |
| 398 | 398 | return false; |
| 399 | 399 | } |
@@ -413,7 +413,7 @@ discard block |
||
| 413 | 413 | } |
| 414 | 414 | $opts['field'] = [$colonne_ajoutee => $def]; |
| 415 | 415 | if (!_sqlite_modifier_table($table, [$colonne_ajoutee], $opts, $serveur)) { |
| 416 | - spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR); |
|
| 416 | + spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.'._LOG_ERREUR); |
|
| 417 | 417 | |
| 418 | 418 | return false; |
| 419 | 419 | } |
@@ -421,10 +421,10 @@ discard block |
||
| 421 | 421 | break; |
| 422 | 422 | } |
| 423 | 423 | // tout est bon, ouf ! |
| 424 | - spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.' . _LOG_INFO); |
|
| 424 | + spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.'._LOG_INFO); |
|
| 425 | 425 | } |
| 426 | 426 | |
| 427 | - spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.' . _LOG_INFO); |
|
| 427 | + spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.'._LOG_INFO); |
|
| 428 | 428 | |
| 429 | 429 | return true; |
| 430 | 430 | } |
@@ -493,9 +493,9 @@ discard block |
||
| 493 | 493 | * @return bool true si la base est créee. |
| 494 | 494 | **/ |
| 495 | 495 | function spip_sqlite_create_base($nom, $serveur = '', $option = true) { |
| 496 | - $f = $nom . '.sqlite'; |
|
| 496 | + $f = $nom.'.sqlite'; |
|
| 497 | 497 | if (strpos($nom, '/') === false) { |
| 498 | - $f = _DIR_DB . $f; |
|
| 498 | + $f = _DIR_DB.$f; |
|
| 499 | 499 | } |
| 500 | 500 | |
| 501 | 501 | $ok = new \PDO("sqlite:$f"); |
@@ -535,13 +535,13 @@ discard block |
||
| 535 | 535 | if (sql_showtable($nom, false, $serveur)) { |
| 536 | 536 | spip_log( |
| 537 | 537 | "Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", |
| 538 | - 'sqlite.' . _LOG_ERREUR |
|
| 538 | + 'sqlite.'._LOG_ERREUR |
|
| 539 | 539 | ); |
| 540 | 540 | |
| 541 | 541 | return false; |
| 542 | 542 | } |
| 543 | 543 | |
| 544 | - $query = "CREATE VIEW $nom AS " . $query_select; |
|
| 544 | + $query = "CREATE VIEW $nom AS ".$query_select; |
|
| 545 | 545 | |
| 546 | 546 | return spip_sqlite_query($query, $serveur, $requeter); |
| 547 | 547 | } |
@@ -567,8 +567,8 @@ discard block |
||
| 567 | 567 | function spip_sqlite_create_index($nom, $table, $champs, $unique = '', $serveur = '', $requeter = true) { |
| 568 | 568 | if (!($nom or $table or $champs)) { |
| 569 | 569 | spip_log( |
| 570 | - "Champ manquant pour creer un index sqlite ($nom, $table, (" . join(',', $champs) . '))', |
|
| 571 | - 'sqlite.' . _LOG_ERREUR |
|
| 570 | + "Champ manquant pour creer un index sqlite ($nom, $table, (".join(',', $champs).'))', |
|
| 571 | + 'sqlite.'._LOG_ERREUR |
|
| 572 | 572 | ); |
| 573 | 573 | |
| 574 | 574 | return false; |
@@ -576,7 +576,7 @@ discard block |
||
| 576 | 576 | |
| 577 | 577 | // SQLite ne differentie pas noms des index en fonction des tables |
| 578 | 578 | // il faut donc creer des noms uniques d'index pour une base sqlite |
| 579 | - $nom = $table . '_' . $nom; |
|
| 579 | + $nom = $table.'_'.$nom; |
|
| 580 | 580 | // enlever d'eventuelles parentheses deja presentes sur champs |
| 581 | 581 | if (!is_array($champs)) { |
| 582 | 582 | if ($champs[0] == '(') { |
@@ -598,12 +598,12 @@ discard block |
||
| 598 | 598 | } else { |
| 599 | 599 | /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */ |
| 600 | 600 | $a = spip_sqlite_showtable($table, $serveur); |
| 601 | - if (isset($a['key']['KEY ' . $nom])) { |
|
| 601 | + if (isset($a['key']['KEY '.$nom])) { |
|
| 602 | 602 | return true; |
| 603 | 603 | } |
| 604 | 604 | } |
| 605 | 605 | |
| 606 | - $query = 'CREATE ' . ($unique ? 'UNIQUE ' : '') . "INDEX$ifnotexists $nom ON $table (" . join(',', $champs) . ')'; |
|
| 606 | + $query = 'CREATE '.($unique ? 'UNIQUE ' : '')."INDEX$ifnotexists $nom ON $table (".join(',', $champs).')'; |
|
| 607 | 607 | $res = spip_sqlite_query($query, $serveur, $requeter); |
| 608 | 608 | if (!$requeter) { |
| 609 | 609 | return $res; |
@@ -679,7 +679,7 @@ discard block |
||
| 679 | 679 | $serveur = '', |
| 680 | 680 | $requeter = true |
| 681 | 681 | ) { |
| 682 | - $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby))); |
|
| 682 | + $c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby))); |
|
| 683 | 683 | $r = spip_sqlite_select( |
| 684 | 684 | "COUNT($c)", |
| 685 | 685 | $from, |
@@ -788,14 +788,14 @@ discard block |
||
| 788 | 788 | */ |
| 789 | 789 | function spip_sqlite_drop_index($nom, $table, $serveur = '', $requeter = true) { |
| 790 | 790 | if (!($nom or $table)) { |
| 791 | - spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.' . _LOG_ERREUR); |
|
| 791 | + spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.'._LOG_ERREUR); |
|
| 792 | 792 | |
| 793 | 793 | return false; |
| 794 | 794 | } |
| 795 | 795 | |
| 796 | 796 | // SQLite ne differentie pas noms des index en fonction des tables |
| 797 | 797 | // il faut donc creer des noms uniques d'index pour une base sqlite |
| 798 | - $index = $table . '_' . $nom; |
|
| 798 | + $index = $table.'_'.$nom; |
|
| 799 | 799 | $exist = ' IF EXISTS'; |
| 800 | 800 | |
| 801 | 801 | $query = "DROP INDEX$exist $index"; |
@@ -827,7 +827,7 @@ discard block |
||
| 827 | 827 | if ($s) { |
| 828 | 828 | $trace = debug_backtrace(); |
| 829 | 829 | if ($trace[0]['function'] != 'spip_sqlite_error') { |
| 830 | - spip_log("$s - $query - " . sql_error_backtrace(), 'sqlite.' . _LOG_ERREUR); |
|
| 830 | + spip_log("$s - $query - ".sql_error_backtrace(), 'sqlite.'._LOG_ERREUR); |
|
| 831 | 831 | } |
| 832 | 832 | } |
| 833 | 833 | |
@@ -874,14 +874,14 @@ discard block |
||
| 874 | 874 | $t = $link->errorInfo(); |
| 875 | 875 | $s = ltrim($t[0], '0'); // 00000 si pas d'erreur |
| 876 | 876 | if ($s) { |
| 877 | - $s .= ' / ' . $t[1]; |
|
| 877 | + $s .= ' / '.$t[1]; |
|
| 878 | 878 | } // ajoute l'erreur du moteur SQLite |
| 879 | 879 | } else { |
| 880 | 880 | $s = ': aucune ressource sqlite (link)'; |
| 881 | 881 | } |
| 882 | 882 | |
| 883 | 883 | if ($s) { |
| 884 | - spip_log("Erreur sqlite $s", 'sqlite.' . _LOG_ERREUR); |
|
| 884 | + spip_log("Erreur sqlite $s", 'sqlite.'._LOG_ERREUR); |
|
| 885 | 885 | } |
| 886 | 886 | |
| 887 | 887 | return $s ? $s : 0; |
@@ -905,7 +905,7 @@ discard block |
||
| 905 | 905 | } |
| 906 | 906 | |
| 907 | 907 | $query = spip_sqlite::traduire_requete($query, $serveur); |
| 908 | - $query = 'EXPLAIN ' . $query; |
|
| 908 | + $query = 'EXPLAIN '.$query; |
|
| 909 | 909 | if (!$requeter) { |
| 910 | 910 | return $query; |
| 911 | 911 | } |
@@ -1066,7 +1066,7 @@ discard block |
||
| 1066 | 1066 | **/ |
| 1067 | 1067 | function spip_sqlite_insert($table, $champs, $valeurs, $desc = [], $serveur = '', $requeter = true) { |
| 1068 | 1068 | |
| 1069 | - $query = "INSERT INTO $table " . ($champs ? "$champs VALUES $valeurs" : 'DEFAULT VALUES'); |
|
| 1069 | + $query = "INSERT INTO $table ".($champs ? "$champs VALUES $valeurs" : 'DEFAULT VALUES'); |
|
| 1070 | 1070 | if ($r = spip_sqlite_query($query, $serveur, $requeter)) { |
| 1071 | 1071 | if (!$requeter) { |
| 1072 | 1072 | return $r; |
@@ -1121,8 +1121,8 @@ discard block |
||
| 1121 | 1121 | |
| 1122 | 1122 | $cles = $valeurs = ''; |
| 1123 | 1123 | if (count($couples)) { |
| 1124 | - $cles = '(' . join(',', array_keys($couples)) . ')'; |
|
| 1125 | - $valeurs = '(' . join(',', $couples) . ')'; |
|
| 1124 | + $cles = '('.join(',', array_keys($couples)).')'; |
|
| 1125 | + $valeurs = '('.join(',', $couples).')'; |
|
| 1126 | 1126 | } |
| 1127 | 1127 | |
| 1128 | 1128 | return spip_sqlite_insert($table, $cles, $valeurs, $desc, $serveur, $requeter); |
@@ -1182,11 +1182,11 @@ discard block |
||
| 1182 | 1182 | |
| 1183 | 1183 | $champs = $valeurs = ''; |
| 1184 | 1184 | if (count($couples)) { |
| 1185 | - $champs = '(' . join(',', array_keys($couples)) . ')'; |
|
| 1186 | - $valeurs = '(' . join(',', $couples) . ')'; |
|
| 1187 | - $query = $query_start . "$champs VALUES $valeurs"; |
|
| 1185 | + $champs = '('.join(',', array_keys($couples)).')'; |
|
| 1186 | + $valeurs = '('.join(',', $couples).')'; |
|
| 1187 | + $query = $query_start."$champs VALUES $valeurs"; |
|
| 1188 | 1188 | } else { |
| 1189 | - $query = $query_start . 'DEFAULT VALUES'; |
|
| 1189 | + $query = $query_start.'DEFAULT VALUES'; |
|
| 1190 | 1190 | } |
| 1191 | 1191 | |
| 1192 | 1192 | if ($requeter) { |
@@ -1318,7 +1318,7 @@ discard block |
||
| 1318 | 1318 | * @return string Texte de sélection pour la requête |
| 1319 | 1319 | */ |
| 1320 | 1320 | function spip_sqlite_multi($objet, $lang) { |
| 1321 | - $r = 'EXTRAIRE_MULTI(' . $objet . ", '" . $lang . "') AS multi"; |
|
| 1321 | + $r = 'EXTRAIRE_MULTI('.$objet.", '".$lang."') AS multi"; |
|
| 1322 | 1322 | |
| 1323 | 1323 | return $r; |
| 1324 | 1324 | } |
@@ -1389,7 +1389,7 @@ discard block |
||
| 1389 | 1389 | function spip_sqlite_date_proche($champ, $interval, $unite) { |
| 1390 | 1390 | $op = (($interval <= 0) ? '>' : '<'); |
| 1391 | 1391 | |
| 1392 | - return "($champ $op datetime('" . date('Y-m-d H:i:s') . "', '$interval $unite'))"; |
|
| 1392 | + return "($champ $op datetime('".date('Y-m-d H:i:s')."', '$interval $unite'))"; |
|
| 1393 | 1393 | } |
| 1394 | 1394 | |
| 1395 | 1395 | |
@@ -1421,7 +1421,7 @@ discard block |
||
| 1421 | 1421 | and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c) |
| 1422 | 1422 | ) { |
| 1423 | 1423 | spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT ''", $serveur); |
| 1424 | - spip_log("ALTER $q", 'repair' . _LOG_INFO_IMPORTANTE); |
|
| 1424 | + spip_log("ALTER $q", 'repair'._LOG_INFO_IMPORTANTE); |
|
| 1425 | 1425 | } |
| 1426 | 1426 | if ( |
| 1427 | 1427 | preg_match(',^(INTEGER),i', $d) |
@@ -1431,7 +1431,7 @@ discard block |
||
| 1431 | 1431 | and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c) |
| 1432 | 1432 | ) { |
| 1433 | 1433 | spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0'", $serveur); |
| 1434 | - spip_log("ALTER $q", 'repair' . _LOG_INFO_IMPORTANTE); |
|
| 1434 | + spip_log("ALTER $q", 'repair'._LOG_INFO_IMPORTANTE); |
|
| 1435 | 1435 | } |
| 1436 | 1436 | if ( |
| 1437 | 1437 | preg_match(',^(datetime),i', $d) |
@@ -1441,7 +1441,7 @@ discard block |
||
| 1441 | 1441 | and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c) |
| 1442 | 1442 | ) { |
| 1443 | 1443 | spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0000-00-00 00:00:00'", $serveur); |
| 1444 | - spip_log("ALTER $q", 'repair' . _LOG_INFO_IMPORTANTE); |
|
| 1444 | + spip_log("ALTER $q", 'repair'._LOG_INFO_IMPORTANTE); |
|
| 1445 | 1445 | } |
| 1446 | 1446 | } |
| 1447 | 1447 | |
@@ -1492,10 +1492,10 @@ discard block |
||
| 1492 | 1492 | // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
| 1493 | 1493 | $couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur); |
| 1494 | 1494 | |
| 1495 | - return spip_sqlite_query("REPLACE INTO $table (" . join(',', array_keys($couples)) . ') VALUES (' . join( |
|
| 1495 | + return spip_sqlite_query("REPLACE INTO $table (".join(',', array_keys($couples)).') VALUES ('.join( |
|
| 1496 | 1496 | ',', |
| 1497 | 1497 | $couples |
| 1498 | - ) . ')', $serveur); |
|
| 1498 | + ).')', $serveur); |
|
| 1499 | 1499 | } |
| 1500 | 1500 | |
| 1501 | 1501 | |
@@ -1581,7 +1581,7 @@ discard block |
||
| 1581 | 1581 | . _sqlite_calculer_expression('WHERE', $where) |
| 1582 | 1582 | . _sqlite_calculer_expression('GROUP BY', $groupby, ',') |
| 1583 | 1583 | . _sqlite_calculer_expression('HAVING', $having) |
| 1584 | - . ($orderby ? ("\nORDER BY " . _sqlite_calculer_order($orderby)) : '') |
|
| 1584 | + . ($orderby ? ("\nORDER BY "._sqlite_calculer_order($orderby)) : '') |
|
| 1585 | 1585 | . ($limit ? "\nLIMIT $limit" : ''); |
| 1586 | 1586 | |
| 1587 | 1587 | // dans un select, on doit renvoyer la requête en cas d'erreur |
@@ -1619,10 +1619,10 @@ discard block |
||
| 1619 | 1619 | // interdire la creation d'une nouvelle base, |
| 1620 | 1620 | // sauf si on est dans l'installation |
| 1621 | 1621 | if ( |
| 1622 | - !is_file($f = _DIR_DB . $db . '.sqlite') |
|
| 1622 | + !is_file($f = _DIR_DB.$db.'.sqlite') |
|
| 1623 | 1623 | && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL) |
| 1624 | 1624 | ) { |
| 1625 | - spip_log("Il est interdit de creer la base $db", 'sqlite.' . _LOG_HS); |
|
| 1625 | + spip_log("Il est interdit de creer la base $db", 'sqlite.'._LOG_HS); |
|
| 1626 | 1626 | |
| 1627 | 1627 | return false; |
| 1628 | 1628 | } |
@@ -1631,12 +1631,12 @@ discard block |
||
| 1631 | 1631 | // avec les identifiants connus |
| 1632 | 1632 | $index = $serveur ? $serveur : 0; |
| 1633 | 1633 | |
| 1634 | - if ($link = spip_connect_db('', '', '', '', '@selectdb@' . $db, $serveur, '', '')) { |
|
| 1634 | + if ($link = spip_connect_db('', '', '', '', '@selectdb@'.$db, $serveur, '', '')) { |
|
| 1635 | 1635 | if (($db == $link['db']) && $GLOBALS['connexions'][$index] = $link) { |
| 1636 | 1636 | return $db; |
| 1637 | 1637 | } |
| 1638 | 1638 | } else { |
| 1639 | - spip_log("Impossible de selectionner la base $db", 'sqlite.' . _LOG_HS); |
|
| 1639 | + spip_log("Impossible de selectionner la base $db", 'sqlite.'._LOG_HS); |
|
| 1640 | 1640 | |
| 1641 | 1641 | return false; |
| 1642 | 1642 | } |
@@ -1687,7 +1687,7 @@ discard block |
||
| 1687 | 1687 | $match = "^$match$"; |
| 1688 | 1688 | |
| 1689 | 1689 | return spip_sqlite_query( |
| 1690 | - "SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP " . _q($match), |
|
| 1690 | + "SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP "._q($match), |
|
| 1691 | 1691 | $serveur, |
| 1692 | 1692 | $requeter |
| 1693 | 1693 | ); |
@@ -1710,7 +1710,7 @@ discard block |
||
| 1710 | 1710 | $r = spip_sqlite_query( |
| 1711 | 1711 | 'SELECT name FROM sqlite_master WHERE' |
| 1712 | 1712 | . ' type=\'table\'' |
| 1713 | - . ' AND name=' . spip_sqlite_quote($table, 'string') |
|
| 1713 | + . ' AND name='.spip_sqlite_quote($table, 'string') |
|
| 1714 | 1714 | . ' AND name NOT LIKE \'sqlite_%\'', |
| 1715 | 1715 | $serveur, |
| 1716 | 1716 | $requeter |
@@ -1807,7 +1807,7 @@ discard block |
||
| 1807 | 1807 | // s'il y a une parenthèse fermante dans la clé |
| 1808 | 1808 | // ou dans la définition sans qu'il n'y ait une ouverture avant |
| 1809 | 1809 | if (false !== strpos($k, ')') or preg_match('/^[^\(]*\)/', $def)) { |
| 1810 | - $fields[$k_precedent] .= ',' . $k . ' ' . $def; |
|
| 1810 | + $fields[$k_precedent] .= ','.$k.' '.$def; |
|
| 1811 | 1811 | continue; |
| 1812 | 1812 | } |
| 1813 | 1813 | |
@@ -1842,13 +1842,13 @@ discard block |
||
| 1842 | 1842 | . 'ORDER BY substr(type,2,1), name'; |
| 1843 | 1843 | $a = spip_sqlite_query($query, $serveur, $requeter); |
| 1844 | 1844 | while ($r = spip_sqlite_fetch($a, null, $serveur)) { |
| 1845 | - $key = str_replace($nom_table . '_', '', $r['name']); // enlever le nom de la table ajoute a l'index |
|
| 1845 | + $key = str_replace($nom_table.'_', '', $r['name']); // enlever le nom de la table ajoute a l'index |
|
| 1846 | 1846 | $keytype = 'KEY'; |
| 1847 | 1847 | if (strpos($r['sql'], 'UNIQUE INDEX') !== false) { |
| 1848 | 1848 | $keytype = 'UNIQUE KEY'; |
| 1849 | 1849 | } |
| 1850 | 1850 | $colonnes = preg_replace(',.*\((.*)\).*,', '$1', $r['sql']); |
| 1851 | - $keys[$keytype . ' ' . $key] = $colonnes; |
|
| 1851 | + $keys[$keytype.' '.$key] = $colonnes; |
|
| 1852 | 1852 | } |
| 1853 | 1853 | } |
| 1854 | 1854 | } // c'est une vue, on liste les champs disponibles simplement |
@@ -1895,7 +1895,7 @@ discard block |
||
| 1895 | 1895 | |
| 1896 | 1896 | $set = []; |
| 1897 | 1897 | foreach ($champs as $champ => $val) { |
| 1898 | - $set[] = $champ . "=$val"; |
|
| 1898 | + $set[] = $champ."=$val"; |
|
| 1899 | 1899 | } |
| 1900 | 1900 | if (!empty($set)) { |
| 1901 | 1901 | return spip_sqlite_query( |
@@ -1948,7 +1948,7 @@ discard block |
||
| 1948 | 1948 | |
| 1949 | 1949 | $set = []; |
| 1950 | 1950 | foreach ($champs as $champ => $val) { |
| 1951 | - $set[$champ] = $champ . '=' . _sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : ''); |
|
| 1951 | + $set[$champ] = $champ.'='._sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : ''); |
|
| 1952 | 1952 | } |
| 1953 | 1953 | |
| 1954 | 1954 | // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
@@ -1956,7 +1956,7 @@ discard block |
||
| 1956 | 1956 | $maj = _sqlite_ajouter_champs_timestamp($table, [], $desc, $serveur); |
| 1957 | 1957 | foreach ($maj as $champ => $val) { |
| 1958 | 1958 | if (!isset($set[$champ])) { |
| 1959 | - $set[$champ] = $champ . '=' . $val; |
|
| 1959 | + $set[$champ] = $champ.'='.$val; |
|
| 1960 | 1960 | } |
| 1961 | 1961 | } |
| 1962 | 1962 | |
@@ -1985,7 +1985,7 @@ discard block |
||
| 1985 | 1985 | */ |
| 1986 | 1986 | function _sqlite_init() { |
| 1987 | 1987 | if (!defined('_DIR_DB')) { |
| 1988 | - define('_DIR_DB', _DIR_ETC . 'bases/'); |
|
| 1988 | + define('_DIR_DB', _DIR_ETC.'bases/'); |
|
| 1989 | 1989 | } |
| 1990 | 1990 | if (!defined('_SQLITE_CHMOD')) { |
| 1991 | 1991 | define('_SQLITE_CHMOD', _SPIP_CHMOD); |
@@ -2092,9 +2092,9 @@ discard block |
||
| 2092 | 2092 | } |
| 2093 | 2093 | |
| 2094 | 2094 | // echapper les ' en '' |
| 2095 | - spip_log('Pas de methode ->quote pour echapper', 'sqlite.' . _LOG_INFO_IMPORTANTE); |
|
| 2095 | + spip_log('Pas de methode ->quote pour echapper', 'sqlite.'._LOG_INFO_IMPORTANTE); |
|
| 2096 | 2096 | |
| 2097 | - return ("'" . str_replace("'", "''", $v) . "'"); |
|
| 2097 | + return ("'".str_replace("'", "''", $v)."'"); |
|
| 2098 | 2098 | } |
| 2099 | 2099 | |
| 2100 | 2100 | |
@@ -2117,12 +2117,12 @@ discard block |
||
| 2117 | 2117 | $exp = "\n$expression "; |
| 2118 | 2118 | |
| 2119 | 2119 | if (!is_array($v)) { |
| 2120 | - return $exp . $v; |
|
| 2120 | + return $exp.$v; |
|
| 2121 | 2121 | } else { |
| 2122 | 2122 | if (strtoupper($join) === 'AND') { |
| 2123 | - return $exp . join("\n\t$join ", array_map('_sqlite_calculer_where', $v)); |
|
| 2123 | + return $exp.join("\n\t$join ", array_map('_sqlite_calculer_where', $v)); |
|
| 2124 | 2124 | } else { |
| 2125 | - return $exp . join($join, $v); |
|
| 2125 | + return $exp.join($join, $v); |
|
| 2126 | 2126 | } |
| 2127 | 2127 | } |
| 2128 | 2128 | } |
@@ -2156,17 +2156,17 @@ discard block |
||
| 2156 | 2156 | if (substr($k, -1) == '@') { |
| 2157 | 2157 | // c'est une jointure qui se refere au from precedent |
| 2158 | 2158 | // pas de virgule |
| 2159 | - $res .= ' ' . $v; |
|
| 2159 | + $res .= ' '.$v; |
|
| 2160 | 2160 | } else { |
| 2161 | 2161 | if (!is_numeric($k)) { |
| 2162 | 2162 | $p = strpos($v, ' '); |
| 2163 | 2163 | if ($p) { |
| 2164 | - $v = substr($v, 0, $p) . " AS '$k'" . substr($v, $p); |
|
| 2164 | + $v = substr($v, 0, $p)." AS '$k'".substr($v, $p); |
|
| 2165 | 2165 | } else { |
| 2166 | 2166 | $v .= " AS '$k'"; |
| 2167 | 2167 | } |
| 2168 | 2168 | } |
| 2169 | - $res .= ', ' . $v; |
|
| 2169 | + $res .= ', '.$v; |
|
| 2170 | 2170 | } |
| 2171 | 2171 | } |
| 2172 | 2172 | |
@@ -2304,13 +2304,13 @@ discard block |
||
| 2304 | 2304 | |
| 2305 | 2305 | $def_origine = sql_showtable($table_origine, false, $serveur); |
| 2306 | 2306 | if (!$def_origine or !isset($def_origine['field'])) { |
| 2307 | - spip_log("Alter table impossible sur $table_origine : table non trouvee", 'sqlite' . _LOG_ERREUR); |
|
| 2307 | + spip_log("Alter table impossible sur $table_origine : table non trouvee", 'sqlite'._LOG_ERREUR); |
|
| 2308 | 2308 | |
| 2309 | 2309 | return false; |
| 2310 | 2310 | } |
| 2311 | 2311 | |
| 2312 | 2312 | |
| 2313 | - $table_tmp = $table_origine . '_tmp'; |
|
| 2313 | + $table_tmp = $table_origine.'_tmp'; |
|
| 2314 | 2314 | |
| 2315 | 2315 | // 1) creer une table temporaire avec les modifications |
| 2316 | 2316 | // - DROP : suppression de la colonne |
@@ -2397,7 +2397,7 @@ discard block |
||
| 2397 | 2397 | } else { |
| 2398 | 2398 | // enlever KEY |
| 2399 | 2399 | $k = substr($k, 4); |
| 2400 | - $queries[] = "CREATE INDEX $table_destination" . "_$k ON $table_destination ($v)"; |
|
| 2400 | + $queries[] = "CREATE INDEX $table_destination"."_$k ON $table_destination ($v)"; |
|
| 2401 | 2401 | } |
| 2402 | 2402 | } |
| 2403 | 2403 | |
@@ -2408,7 +2408,7 @@ discard block |
||
| 2408 | 2408 | foreach ($queries as $q) { |
| 2409 | 2409 | if (!spip_sqlite::executer_requete($q, $serveur)) { |
| 2410 | 2410 | spip_log('SQLite : ALTER TABLE table :' |
| 2411 | - . " Erreur a l'execution de la requete : $q", 'sqlite.' . _LOG_ERREUR); |
|
| 2411 | + . " Erreur a l'execution de la requete : $q", 'sqlite.'._LOG_ERREUR); |
|
| 2412 | 2412 | spip_sqlite::annuler_transaction($serveur); |
| 2413 | 2413 | |
| 2414 | 2414 | return false; |
@@ -2498,27 +2498,27 @@ discard block |
||
| 2498 | 2498 | $enum = '(\s*\([^\)]*\))?'; |
| 2499 | 2499 | |
| 2500 | 2500 | $remplace = [ |
| 2501 | - '/enum' . $enum . '/is' => 'VARCHAR(255)', |
|
| 2501 | + '/enum'.$enum.'/is' => 'VARCHAR(255)', |
|
| 2502 | 2502 | '/COLLATE \w+_bin/is' => 'COLLATE BINARY', |
| 2503 | 2503 | '/COLLATE \w+_ci/is' => 'COLLATE NOCASE', |
| 2504 | 2504 | '/auto_increment/is' => '', |
| 2505 | 2505 | '/current_timestamp\(\)/is' => 'CURRENT_TIMESTAMP', // Fix export depuis mariaDB #4374 |
| 2506 | 2506 | '/(timestamp .* )ON .*$/is' => '\\1', |
| 2507 | 2507 | '/character set \w+/is' => '', |
| 2508 | - '/((big|small|medium|tiny)?int(eger)?)' . $num . '\s*unsigned/is' => '\\1 UNSIGNED', |
|
| 2508 | + '/((big|small|medium|tiny)?int(eger)?)'.$num.'\s*unsigned/is' => '\\1 UNSIGNED', |
|
| 2509 | 2509 | '/(text\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''", |
| 2510 | - '/((char|varchar)' . $num . '\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''", |
|
| 2510 | + '/((char|varchar)'.$num.'\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''", |
|
| 2511 | 2511 | '/(datetime\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00 00:00:00'", |
| 2512 | 2512 | '/(date\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00'", |
| 2513 | 2513 | ]; |
| 2514 | 2514 | |
| 2515 | 2515 | // pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY |
| 2516 | 2516 | $remplace_autocinc = [ |
| 2517 | - '/(big|small|medium|tiny)?int(eger)?' . $num . '/is' => 'INTEGER' |
|
| 2517 | + '/(big|small|medium|tiny)?int(eger)?'.$num.'/is' => 'INTEGER' |
|
| 2518 | 2518 | ]; |
| 2519 | 2519 | // pour les int non autoincrement, il faut un DEFAULT |
| 2520 | 2520 | $remplace_nonautocinc = [ |
| 2521 | - '/((big|small|medium|tiny)?int(eger)?' . $num . '\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0", |
|
| 2521 | + '/((big|small|medium|tiny)?int(eger)?'.$num.'\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0", |
|
| 2522 | 2522 | ]; |
| 2523 | 2523 | |
| 2524 | 2524 | if (is_string($query)) { |
@@ -2560,7 +2560,7 @@ discard block |
||
| 2560 | 2560 | return str_ireplace('BINARY', 'COLLATE BINARY', $champ); |
| 2561 | 2561 | } |
| 2562 | 2562 | if (preg_match(',^(char|varchar|(long|small|medium|tiny)?text),i', $champ)) { |
| 2563 | - return $champ . ' COLLATE NOCASE'; |
|
| 2563 | + return $champ.' COLLATE NOCASE'; |
|
| 2564 | 2564 | } |
| 2565 | 2565 | |
| 2566 | 2566 | return $champ; |
@@ -2650,14 +2650,14 @@ discard block |
||
| 2650 | 2650 | } else { |
| 2651 | 2651 | /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */ |
| 2652 | 2652 | $a = spip_sqlite_showtable($nom, $serveur); |
| 2653 | - if (isset($a['key']['KEY ' . $nom])) { |
|
| 2653 | + if (isset($a['key']['KEY '.$nom])) { |
|
| 2654 | 2654 | return true; |
| 2655 | 2655 | } |
| 2656 | 2656 | } |
| 2657 | 2657 | } |
| 2658 | 2658 | |
| 2659 | 2659 | $temporary = $temporary ? ' TEMPORARY' : ''; |
| 2660 | - $q = "CREATE$temporary TABLE$ifnotexists $nom ($query" . ($keys ? ",$keys" : '') . ")\n"; |
|
| 2660 | + $q = "CREATE$temporary TABLE$ifnotexists $nom ($query".($keys ? ",$keys" : '').")\n"; |
|
| 2661 | 2661 | |
| 2662 | 2662 | return $q; |
| 2663 | 2663 | } |
@@ -2878,7 +2878,7 @@ discard block |
||
| 2878 | 2878 | $this->serveur = strtolower($serveur); |
| 2879 | 2879 | |
| 2880 | 2880 | if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)) { |
| 2881 | - spip_log('Aucune connexion sqlite (link)', 'sqlite.' . _LOG_ERREUR); |
|
| 2881 | + spip_log('Aucune connexion sqlite (link)', 'sqlite.'._LOG_ERREUR); |
|
| 2882 | 2882 | |
| 2883 | 2883 | return false; |
| 2884 | 2884 | } |
@@ -2924,7 +2924,7 @@ discard block |
||
| 2924 | 2924 | try { |
| 2925 | 2925 | $r = $this->link->query($query); |
| 2926 | 2926 | } catch (\PDOException $e) { |
| 2927 | - spip_log('PDOException: ' . $e->getMessage(), 'sqlite.' . _LOG_DEBUG); |
|
| 2927 | + spip_log('PDOException: '.$e->getMessage(), 'sqlite.'._LOG_DEBUG); |
|
| 2928 | 2928 | $r = false; |
| 2929 | 2929 | } |
| 2930 | 2930 | // sauvegarde de la requete (elle y est deja dans $r->queryString) |
@@ -2945,11 +2945,11 @@ discard block |
||
| 2945 | 2945 | |
| 2946 | 2946 | // loger les warnings/erreurs eventuels de sqlite remontant dans PHP |
| 2947 | 2947 | if ($e and $e instanceof \PDOException) { |
| 2948 | - $err = strip_tags($e->getMessage()) . ' in ' . $e->getFile() . ' line ' . $e->getLine(); |
|
| 2949 | - spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR); |
|
| 2948 | + $err = strip_tags($e->getMessage()).' in '.$e->getFile().' line '.$e->getLine(); |
|
| 2949 | + spip_log("$err - ".$query, 'sqlite.'._LOG_ERREUR); |
|
| 2950 | 2950 | } elseif ($err = (function_exists('error_get_last') ? error_get_last() : '') and $err != $last_error) { |
| 2951 | - $err = strip_tags($err['message']) . ' in ' . $err['file'] . ' line ' . $err['line']; |
|
| 2952 | - spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR); |
|
| 2951 | + $err = strip_tags($err['message']).' in '.$err['file'].' line '.$err['line']; |
|
| 2952 | + spip_log("$err - ".$query, 'sqlite.'._LOG_ERREUR); |
|
| 2953 | 2953 | } else { |
| 2954 | 2954 | $err = ''; |
| 2955 | 2955 | } |
@@ -3027,15 +3027,15 @@ discard block |
||
| 3027 | 3027 | // Correction Create Database |
| 3028 | 3028 | // Create Database -> requete ignoree |
| 3029 | 3029 | if (strpos($this->query, 'CREATE DATABASE') === 0) { |
| 3030 | - spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.' . _LOG_AVERTISSEMENT); |
|
| 3030 | + spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.'._LOG_AVERTISSEMENT); |
|
| 3031 | 3031 | $this->query = 'SELECT 1'; |
| 3032 | 3032 | } |
| 3033 | 3033 | |
| 3034 | 3034 | // Correction Insert Ignore |
| 3035 | 3035 | // INSERT IGNORE -> insert (tout court et pas 'insert or replace') |
| 3036 | 3036 | if (strpos($this->query, 'INSERT IGNORE') === 0) { |
| 3037 | - spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.' . _LOG_DEBUG); |
|
| 3038 | - $this->query = 'INSERT ' . substr($this->query, '13'); |
|
| 3037 | + spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.'._LOG_DEBUG); |
|
| 3038 | + $this->query = 'INSERT '.substr($this->query, '13'); |
|
| 3039 | 3039 | } |
| 3040 | 3040 | |
| 3041 | 3041 | // Correction des dates avec INTERVAL |
@@ -3063,7 +3063,7 @@ discard block |
||
| 3063 | 3063 | if (($this->sqlite_version == 2) && (strpos($this->query, 'USING') !== false)) { |
| 3064 | 3064 | spip_log( |
| 3065 | 3065 | "'USING (champ)' n'est pas reconnu en SQLite 2. Utilisez 'ON table1.champ = table2.champ'", |
| 3066 | - 'sqlite.' . _LOG_ERREUR |
|
| 3066 | + 'sqlite.'._LOG_ERREUR |
|
| 3067 | 3067 | ); |
| 3068 | 3068 | $this->query = preg_replace('/USING\s*\([^\)]*\)/', '', $this->query); |
| 3069 | 3069 | } |
@@ -3086,8 +3086,8 @@ discard block |
||
| 3086 | 3086 | } else { |
| 3087 | 3087 | $suite = ''; |
| 3088 | 3088 | } |
| 3089 | - $pref = ($this->prefixe) ? $this->prefixe . '_' : ''; |
|
| 3090 | - $this->query = preg_replace('/([,\s])spip_/S', '\1' . $pref, $this->query) . $suite; |
|
| 3089 | + $pref = ($this->prefixe) ? $this->prefixe.'_' : ''; |
|
| 3090 | + $this->query = preg_replace('/([,\s])spip_/S', '\1'.$pref, $this->query).$suite; |
|
| 3091 | 3091 | |
| 3092 | 3092 | // Correction zero AS x |
| 3093 | 3093 | // pg n'aime pas 0+x AS alias, sqlite, dans le meme style, |
@@ -18,7 +18,7 @@ discard block |
||
| 18 | 18 | */ |
| 19 | 19 | |
| 20 | 20 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 21 | - return; |
|
| 21 | + return; |
|
| 22 | 22 | } |
| 23 | 23 | |
| 24 | 24 | // TODO: get/set_caracteres ? |
@@ -42,91 +42,91 @@ discard block |
||
| 42 | 42 | * @return array|bool |
| 43 | 43 | */ |
| 44 | 44 | function req_sqlite_dist($addr, $port, $login, $pass, $db = '', $prefixe = '', $sqlite_version = '') { |
| 45 | - static $last_connect = []; |
|
| 46 | - |
|
| 47 | - // si provient de selectdb |
|
| 48 | - // un code pour etre sur que l'on vient de select_db() |
|
| 49 | - if (strpos($db, $code = '@selectdb@') !== false) { |
|
| 50 | - foreach (['addr', 'port', 'login', 'pass', 'prefixe'] as $a) { |
|
| 51 | - $$a = $last_connect[$a]; |
|
| 52 | - } |
|
| 53 | - $db = str_replace($code, '', $db); |
|
| 54 | - } |
|
| 55 | - |
|
| 56 | - /* |
|
| 45 | + static $last_connect = []; |
|
| 46 | + |
|
| 47 | + // si provient de selectdb |
|
| 48 | + // un code pour etre sur que l'on vient de select_db() |
|
| 49 | + if (strpos($db, $code = '@selectdb@') !== false) { |
|
| 50 | + foreach (['addr', 'port', 'login', 'pass', 'prefixe'] as $a) { |
|
| 51 | + $$a = $last_connect[$a]; |
|
| 52 | + } |
|
| 53 | + $db = str_replace($code, '', $db); |
|
| 54 | + } |
|
| 55 | + |
|
| 56 | + /* |
|
| 57 | 57 | * En sqlite, seule l'adresse du fichier est importante. |
| 58 | 58 | * Ce sera $db le nom, |
| 59 | 59 | * le path est $addr |
| 60 | 60 | * (_DIR_DB si $addr est vide) |
| 61 | 61 | */ |
| 62 | - _sqlite_init(); |
|
| 63 | - |
|
| 64 | - // determiner le dossier de la base : $addr ou _DIR_DB |
|
| 65 | - $f = _DIR_DB; |
|
| 66 | - if ($addr and strpos($addr, '/') !== false) { |
|
| 67 | - $f = rtrim($addr, '/') . '/'; |
|
| 68 | - } |
|
| 69 | - |
|
| 70 | - // un nom de base demande et impossible d'obtenir la base, on s'en va : |
|
| 71 | - // il faut que la base existe ou que le repertoire parent soit writable |
|
| 72 | - if ($db and !is_file($f .= $db . '.sqlite') and !is_writable(dirname($f))) { |
|
| 73 | - spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.' . _LOG_HS); |
|
| 74 | - |
|
| 75 | - return false; |
|
| 76 | - } |
|
| 77 | - |
|
| 78 | - // charger les modules sqlite au besoin |
|
| 79 | - if (!_sqlite_charger_version($sqlite_version)) { |
|
| 80 | - spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.' . _LOG_HS); |
|
| 81 | - |
|
| 82 | - return false; |
|
| 83 | - } |
|
| 84 | - |
|
| 85 | - // chargement des constantes |
|
| 86 | - // il ne faut pas definir les constantes avant d'avoir charge les modules sqlite |
|
| 87 | - $define = 'spip_sqlite' . $sqlite_version . '_constantes'; |
|
| 88 | - $define(); |
|
| 89 | - |
|
| 90 | - $ok = false; |
|
| 91 | - if (!$db) { |
|
| 92 | - // si pas de db -> |
|
| 93 | - // base temporaire tant qu'on ne connait pas son vrai nom |
|
| 94 | - // pour tester la connexion |
|
| 95 | - $db = '_sqlite' . $sqlite_version . '_install'; |
|
| 96 | - $tmp = _DIR_DB . $db . '.sqlite'; |
|
| 97 | - $ok = $link = new \PDO("sqlite:$tmp"); |
|
| 98 | - } else { |
|
| 99 | - // Ouvrir (eventuellement creer la base) |
|
| 100 | - $ok = $link = new \PDO("sqlite:$f"); |
|
| 101 | - } |
|
| 102 | - |
|
| 103 | - if (!$ok) { |
|
| 104 | - $e = _sqlite_last_error_from_link($link); |
|
| 105 | - spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.' . _LOG_HS); |
|
| 106 | - |
|
| 107 | - return false; |
|
| 108 | - } |
|
| 109 | - |
|
| 110 | - if ($link) { |
|
| 111 | - $last_connect = [ |
|
| 112 | - 'addr' => $addr, |
|
| 113 | - 'port' => $port, |
|
| 114 | - 'login' => $login, |
|
| 115 | - 'pass' => $pass, |
|
| 116 | - 'db' => $db, |
|
| 117 | - 'prefixe' => $prefixe, |
|
| 118 | - ]; |
|
| 119 | - // etre sur qu'on definit bien les fonctions a chaque nouvelle connexion |
|
| 120 | - include_spip('req/sqlite_fonctions'); |
|
| 121 | - _sqlite_init_functions($link); |
|
| 122 | - } |
|
| 123 | - |
|
| 124 | - return [ |
|
| 125 | - 'db' => $db, |
|
| 126 | - 'prefixe' => $prefixe ? $prefixe : $db, |
|
| 127 | - 'link' => $link, |
|
| 128 | - 'total_requetes' => 0, |
|
| 129 | - ]; |
|
| 62 | + _sqlite_init(); |
|
| 63 | + |
|
| 64 | + // determiner le dossier de la base : $addr ou _DIR_DB |
|
| 65 | + $f = _DIR_DB; |
|
| 66 | + if ($addr and strpos($addr, '/') !== false) { |
|
| 67 | + $f = rtrim($addr, '/') . '/'; |
|
| 68 | + } |
|
| 69 | + |
|
| 70 | + // un nom de base demande et impossible d'obtenir la base, on s'en va : |
|
| 71 | + // il faut que la base existe ou que le repertoire parent soit writable |
|
| 72 | + if ($db and !is_file($f .= $db . '.sqlite') and !is_writable(dirname($f))) { |
|
| 73 | + spip_log("base $f non trouvee ou droits en ecriture manquants", 'sqlite.' . _LOG_HS); |
|
| 74 | + |
|
| 75 | + return false; |
|
| 76 | + } |
|
| 77 | + |
|
| 78 | + // charger les modules sqlite au besoin |
|
| 79 | + if (!_sqlite_charger_version($sqlite_version)) { |
|
| 80 | + spip_log("Impossible de trouver/charger le module SQLite ($sqlite_version)!", 'sqlite.' . _LOG_HS); |
|
| 81 | + |
|
| 82 | + return false; |
|
| 83 | + } |
|
| 84 | + |
|
| 85 | + // chargement des constantes |
|
| 86 | + // il ne faut pas definir les constantes avant d'avoir charge les modules sqlite |
|
| 87 | + $define = 'spip_sqlite' . $sqlite_version . '_constantes'; |
|
| 88 | + $define(); |
|
| 89 | + |
|
| 90 | + $ok = false; |
|
| 91 | + if (!$db) { |
|
| 92 | + // si pas de db -> |
|
| 93 | + // base temporaire tant qu'on ne connait pas son vrai nom |
|
| 94 | + // pour tester la connexion |
|
| 95 | + $db = '_sqlite' . $sqlite_version . '_install'; |
|
| 96 | + $tmp = _DIR_DB . $db . '.sqlite'; |
|
| 97 | + $ok = $link = new \PDO("sqlite:$tmp"); |
|
| 98 | + } else { |
|
| 99 | + // Ouvrir (eventuellement creer la base) |
|
| 100 | + $ok = $link = new \PDO("sqlite:$f"); |
|
| 101 | + } |
|
| 102 | + |
|
| 103 | + if (!$ok) { |
|
| 104 | + $e = _sqlite_last_error_from_link($link); |
|
| 105 | + spip_log("Impossible d'ouvrir la base SQLite($sqlite_version) $f : $e", 'sqlite.' . _LOG_HS); |
|
| 106 | + |
|
| 107 | + return false; |
|
| 108 | + } |
|
| 109 | + |
|
| 110 | + if ($link) { |
|
| 111 | + $last_connect = [ |
|
| 112 | + 'addr' => $addr, |
|
| 113 | + 'port' => $port, |
|
| 114 | + 'login' => $login, |
|
| 115 | + 'pass' => $pass, |
|
| 116 | + 'db' => $db, |
|
| 117 | + 'prefixe' => $prefixe, |
|
| 118 | + ]; |
|
| 119 | + // etre sur qu'on definit bien les fonctions a chaque nouvelle connexion |
|
| 120 | + include_spip('req/sqlite_fonctions'); |
|
| 121 | + _sqlite_init_functions($link); |
|
| 122 | + } |
|
| 123 | + |
|
| 124 | + return [ |
|
| 125 | + 'db' => $db, |
|
| 126 | + 'prefixe' => $prefixe ? $prefixe : $db, |
|
| 127 | + 'link' => $link, |
|
| 128 | + 'total_requetes' => 0, |
|
| 129 | + ]; |
|
| 130 | 130 | } |
| 131 | 131 | |
| 132 | 132 | |
@@ -145,14 +145,14 @@ discard block |
||
| 145 | 145 | * Resultat de la requete |
| 146 | 146 | */ |
| 147 | 147 | function spip_sqlite_query($query, $serveur = '', $requeter = true) { |
| 148 | - #spip_log("spip_sqlite_query() > $query",'sqlite.'._LOG_DEBUG); |
|
| 149 | - #_sqlite_init(); // fait la premiere fois dans spip_sqlite |
|
| 150 | - $query = spip_sqlite::traduire_requete($query, $serveur); |
|
| 151 | - if (!$requeter) { |
|
| 152 | - return $query; |
|
| 153 | - } |
|
| 148 | + #spip_log("spip_sqlite_query() > $query",'sqlite.'._LOG_DEBUG); |
|
| 149 | + #_sqlite_init(); // fait la premiere fois dans spip_sqlite |
|
| 150 | + $query = spip_sqlite::traduire_requete($query, $serveur); |
|
| 151 | + if (!$requeter) { |
|
| 152 | + return $query; |
|
| 153 | + } |
|
| 154 | 154 | |
| 155 | - return spip_sqlite::executer_requete($query, $serveur); |
|
| 155 | + return spip_sqlite::executer_requete($query, $serveur); |
|
| 156 | 156 | } |
| 157 | 157 | |
| 158 | 158 | |
@@ -169,11 +169,11 @@ discard block |
||
| 169 | 169 | */ |
| 170 | 170 | function spip_sqlite_alter($query, $serveur = '', $requeter = true) { |
| 171 | 171 | |
| 172 | - $query = spip_sqlite_query("ALTER $query", $serveur, false); |
|
| 173 | - // traduire la requete pour recuperer les bons noms de table |
|
| 174 | - $query = spip_sqlite::traduire_requete($query, $serveur); |
|
| 172 | + $query = spip_sqlite_query("ALTER $query", $serveur, false); |
|
| 173 | + // traduire la requete pour recuperer les bons noms de table |
|
| 174 | + $query = spip_sqlite::traduire_requete($query, $serveur); |
|
| 175 | 175 | |
| 176 | - /* |
|
| 176 | + /* |
|
| 177 | 177 | * la il faut faire les transformations |
| 178 | 178 | * si ALTER TABLE x (DROP|CHANGE) y |
| 179 | 179 | * |
@@ -182,251 +182,251 @@ discard block |
||
| 182 | 182 | * 3) faire chaque requete independemment |
| 183 | 183 | */ |
| 184 | 184 | |
| 185 | - // 1 |
|
| 186 | - if (preg_match('/\s*(ALTER(\s*IGNORE)?\s*TABLE\s*([^\s]*))\s*(.*)?/is', $query, $regs)) { |
|
| 187 | - $debut = $regs[1]; |
|
| 188 | - $table = $regs[3]; |
|
| 189 | - $suite = $regs[4]; |
|
| 190 | - } else { |
|
| 191 | - spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.' . _LOG_ERREUR); |
|
| 192 | - |
|
| 193 | - return false; |
|
| 194 | - } |
|
| 195 | - |
|
| 196 | - // 2 |
|
| 197 | - // il faudrait une regexp pour eviter de spliter ADD PRIMARY KEY (colA, colB) |
|
| 198 | - // tout en cassant "ADD PRIMARY KEY (colA, colB), ADD INDEX (chose)"... en deux |
|
| 199 | - // ou revoir l'api de sql_alter en creant un |
|
| 200 | - // sql_alter_table($table,array($actions)); |
|
| 201 | - $todo = explode(',', $suite); |
|
| 202 | - |
|
| 203 | - // on remet les morceaux dechires ensembles... que c'est laid ! |
|
| 204 | - $todo2 = []; |
|
| 205 | - $i = 0; |
|
| 206 | - $ouverte = false; |
|
| 207 | - while ($do = array_shift($todo)) { |
|
| 208 | - $todo2[$i] = isset($todo2[$i]) ? $todo2[$i] . ',' . $do : $do; |
|
| 209 | - $o = (false !== strpos($do, '(')); |
|
| 210 | - $f = (false !== strpos($do, ')')); |
|
| 211 | - if ($o and !$f) { |
|
| 212 | - $ouverte = true; |
|
| 213 | - } elseif ($f) { |
|
| 214 | - $ouverte = false; |
|
| 215 | - } |
|
| 216 | - if (!$ouverte) { |
|
| 217 | - $i++; |
|
| 218 | - } |
|
| 219 | - } |
|
| 220 | - |
|
| 221 | - // 3 |
|
| 222 | - $resultats = []; |
|
| 223 | - foreach ($todo2 as $do) { |
|
| 224 | - $do = trim($do); |
|
| 225 | - if ( |
|
| 226 | - !preg_match('/(DROP PRIMARY KEY|DROP KEY|DROP INDEX|DROP COLUMN|DROP' |
|
| 227 | - . '|CHANGE COLUMN|CHANGE|MODIFY|RENAME TO|RENAME' |
|
| 228 | - . '|ADD PRIMARY KEY|ADD KEY|ADD INDEX|ADD UNIQUE KEY|ADD UNIQUE' |
|
| 229 | - . '|ADD COLUMN|ADD' |
|
| 230 | - . ')\s*([^\s]*)\s*(.*)?/i', $do, $matches) |
|
| 231 | - ) { |
|
| 232 | - spip_log( |
|
| 233 | - "SQLite : Probleme de ALTER TABLE, utilisation non reconnue dans : $do \n(requete d'origine : $query)", |
|
| 234 | - 'sqlite.' . _LOG_ERREUR |
|
| 235 | - ); |
|
| 236 | - |
|
| 237 | - return false; |
|
| 238 | - } |
|
| 239 | - |
|
| 240 | - $cle = strtoupper($matches[1]); |
|
| 241 | - $colonne_origine = $matches[2]; |
|
| 242 | - $colonne_destination = ''; |
|
| 243 | - |
|
| 244 | - $def = $matches[3]; |
|
| 245 | - |
|
| 246 | - // eluder une eventuelle clause before|after|first inutilisable |
|
| 247 | - $defr = rtrim(preg_replace('/(BEFORE|AFTER|FIRST)(.*)$/is', '', $def)); |
|
| 248 | - $defo = $defr; // garder la def d'origine pour certains cas |
|
| 249 | - // remplacer les definitions venant de mysql |
|
| 250 | - $defr = _sqlite_remplacements_definitions_table($defr); |
|
| 251 | - |
|
| 252 | - // reinjecter dans le do |
|
| 253 | - $do = str_replace($def, $defr, $do); |
|
| 254 | - $def = $defr; |
|
| 255 | - |
|
| 256 | - switch ($cle) { |
|
| 257 | - // suppression d'un index |
|
| 258 | - case 'DROP KEY': |
|
| 259 | - case 'DROP INDEX': |
|
| 260 | - $nom_index = $colonne_origine; |
|
| 261 | - spip_sqlite_drop_index($nom_index, $table, $serveur); |
|
| 262 | - break; |
|
| 263 | - |
|
| 264 | - // suppression d'une pk |
|
| 265 | - case 'DROP PRIMARY KEY': |
|
| 266 | - if ( |
|
| 267 | - !_sqlite_modifier_table( |
|
| 268 | - $table, |
|
| 269 | - $colonne_origine, |
|
| 270 | - ['key' => ['PRIMARY KEY' => '']], |
|
| 271 | - $serveur |
|
| 272 | - ) |
|
| 273 | - ) { |
|
| 274 | - return false; |
|
| 275 | - } |
|
| 276 | - break; |
|
| 277 | - // suppression d'une colonne |
|
| 278 | - case 'DROP COLUMN': |
|
| 279 | - case 'DROP': |
|
| 280 | - if ( |
|
| 281 | - !_sqlite_modifier_table( |
|
| 282 | - $table, |
|
| 283 | - [$colonne_origine => ''], |
|
| 284 | - [], |
|
| 285 | - $serveur |
|
| 286 | - ) |
|
| 287 | - ) { |
|
| 288 | - return false; |
|
| 289 | - } |
|
| 290 | - break; |
|
| 291 | - |
|
| 292 | - case 'CHANGE COLUMN': |
|
| 293 | - case 'CHANGE': |
|
| 294 | - // recuperer le nom de la future colonne |
|
| 295 | - // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation |
|
| 296 | - // en tenant compte de la cle primaire (ce qui est mieux) |
|
| 297 | - $def = trim($defo); |
|
| 298 | - $colonne_destination = substr($def, 0, strpos($def, ' ')); |
|
| 299 | - $def = substr($def, strlen($colonne_destination) + 1); |
|
| 300 | - |
|
| 301 | - if ( |
|
| 302 | - !_sqlite_modifier_table( |
|
| 303 | - $table, |
|
| 304 | - [$colonne_origine => $colonne_destination], |
|
| 305 | - ['field' => [$colonne_destination => $def]], |
|
| 306 | - $serveur |
|
| 307 | - ) |
|
| 308 | - ) { |
|
| 309 | - return false; |
|
| 310 | - } |
|
| 311 | - break; |
|
| 312 | - |
|
| 313 | - case 'MODIFY': |
|
| 314 | - // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation |
|
| 315 | - // en tenant compte de la cle primaire (ce qui est mieux) |
|
| 316 | - if ( |
|
| 317 | - !_sqlite_modifier_table( |
|
| 318 | - $table, |
|
| 319 | - $colonne_origine, |
|
| 320 | - ['field' => [$colonne_origine => $defo]], |
|
| 321 | - $serveur |
|
| 322 | - ) |
|
| 323 | - ) { |
|
| 324 | - return false; |
|
| 325 | - } |
|
| 326 | - break; |
|
| 327 | - |
|
| 328 | - // pas geres en sqlite2 |
|
| 329 | - case 'RENAME': |
|
| 330 | - $do = 'RENAME TO' . substr($do, 6); |
|
| 331 | - case 'RENAME TO': |
|
| 332 | - if (!spip_sqlite::executer_requete("$debut $do", $serveur)) { |
|
| 333 | - spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.' . _LOG_ERREUR); |
|
| 334 | - |
|
| 335 | - return false; |
|
| 336 | - } |
|
| 337 | - break; |
|
| 338 | - |
|
| 339 | - // ajout d'une pk |
|
| 340 | - case 'ADD PRIMARY KEY': |
|
| 341 | - $pk = trim(substr($do, 16)); |
|
| 342 | - $pk = ($pk[0] == '(') ? substr($pk, 1, -1) : $pk; |
|
| 343 | - if ( |
|
| 344 | - !_sqlite_modifier_table( |
|
| 345 | - $table, |
|
| 346 | - $colonne_origine, |
|
| 347 | - ['key' => ['PRIMARY KEY' => $pk]], |
|
| 348 | - $serveur |
|
| 349 | - ) |
|
| 350 | - ) { |
|
| 351 | - return false; |
|
| 352 | - } |
|
| 353 | - break; |
|
| 354 | - // ajout d'un index |
|
| 355 | - case 'ADD UNIQUE KEY': |
|
| 356 | - case 'ADD UNIQUE': |
|
| 357 | - $unique = true; |
|
| 358 | - case 'ADD INDEX': |
|
| 359 | - case 'ADD KEY': |
|
| 360 | - if (!isset($unique)) { |
|
| 361 | - $unique = false; |
|
| 362 | - } |
|
| 363 | - // peut etre "(colonne)" ou "nom_index (colonnes)" |
|
| 364 | - // bug potentiel si qqn met "(colonne, colonne)" |
|
| 365 | - // |
|
| 366 | - // nom_index (colonnes) |
|
| 367 | - if ($def) { |
|
| 368 | - $colonnes = substr($def, 1, -1); |
|
| 369 | - $nom_index = $colonne_origine; |
|
| 370 | - } else { |
|
| 371 | - // (colonne) |
|
| 372 | - if ($colonne_origine[0] == '(') { |
|
| 373 | - $colonnes = substr($colonne_origine, 1, -1); |
|
| 374 | - if (false !== strpos(',', $colonnes)) { |
|
| 375 | - spip_log('SQLite : Erreur, impossible de creer un index sur plusieurs colonnes' |
|
| 376 | - . " sans qu'il ait de nom ($table, ($colonnes))", 'sqlite.' . _LOG_ERREUR); |
|
| 377 | - break; |
|
| 378 | - } else { |
|
| 379 | - $nom_index = $colonnes; |
|
| 380 | - } |
|
| 381 | - } // nom_index |
|
| 382 | - else { |
|
| 383 | - $nom_index = $colonnes = $colonne_origine; |
|
| 384 | - } |
|
| 385 | - } |
|
| 386 | - spip_sqlite_create_index($nom_index, $table, $colonnes, $unique, $serveur); |
|
| 387 | - break; |
|
| 388 | - |
|
| 389 | - // pas geres en sqlite2 |
|
| 390 | - case 'ADD COLUMN': |
|
| 391 | - $do = 'ADD' . substr($do, 10); |
|
| 392 | - case 'ADD': |
|
| 393 | - default: |
|
| 394 | - if (!preg_match(',primary\s+key,i', $do)) { |
|
| 395 | - if (!spip_sqlite::executer_requete("$debut $do", $serveur)) { |
|
| 396 | - spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR); |
|
| 397 | - |
|
| 398 | - return false; |
|
| 399 | - } |
|
| 400 | - break; |
|
| 401 | - } |
|
| 402 | - // ou si la colonne est aussi primary key |
|
| 403 | - // cas du add id_truc int primary key |
|
| 404 | - // ajout d'une colonne qui passe en primary key directe |
|
| 405 | - else { |
|
| 406 | - $def = trim(substr($do, 3)); |
|
| 407 | - $colonne_ajoutee = substr($def, 0, strpos($def, ' ')); |
|
| 408 | - $def = substr($def, strlen($colonne_ajoutee) + 1); |
|
| 409 | - $opts = []; |
|
| 410 | - if (preg_match(',primary\s+key,i', $def)) { |
|
| 411 | - $opts['key'] = ['PRIMARY KEY' => $colonne_ajoutee]; |
|
| 412 | - $def = preg_replace(',primary\s+key,i', '', $def); |
|
| 413 | - } |
|
| 414 | - $opts['field'] = [$colonne_ajoutee => $def]; |
|
| 415 | - if (!_sqlite_modifier_table($table, [$colonne_ajoutee], $opts, $serveur)) { |
|
| 416 | - spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR); |
|
| 417 | - |
|
| 418 | - return false; |
|
| 419 | - } |
|
| 420 | - } |
|
| 421 | - break; |
|
| 422 | - } |
|
| 423 | - // tout est bon, ouf ! |
|
| 424 | - spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.' . _LOG_INFO); |
|
| 425 | - } |
|
| 426 | - |
|
| 427 | - spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.' . _LOG_INFO); |
|
| 428 | - |
|
| 429 | - return true; |
|
| 185 | + // 1 |
|
| 186 | + if (preg_match('/\s*(ALTER(\s*IGNORE)?\s*TABLE\s*([^\s]*))\s*(.*)?/is', $query, $regs)) { |
|
| 187 | + $debut = $regs[1]; |
|
| 188 | + $table = $regs[3]; |
|
| 189 | + $suite = $regs[4]; |
|
| 190 | + } else { |
|
| 191 | + spip_log("SQLite : Probleme de ALTER TABLE mal forme dans $query", 'sqlite.' . _LOG_ERREUR); |
|
| 192 | + |
|
| 193 | + return false; |
|
| 194 | + } |
|
| 195 | + |
|
| 196 | + // 2 |
|
| 197 | + // il faudrait une regexp pour eviter de spliter ADD PRIMARY KEY (colA, colB) |
|
| 198 | + // tout en cassant "ADD PRIMARY KEY (colA, colB), ADD INDEX (chose)"... en deux |
|
| 199 | + // ou revoir l'api de sql_alter en creant un |
|
| 200 | + // sql_alter_table($table,array($actions)); |
|
| 201 | + $todo = explode(',', $suite); |
|
| 202 | + |
|
| 203 | + // on remet les morceaux dechires ensembles... que c'est laid ! |
|
| 204 | + $todo2 = []; |
|
| 205 | + $i = 0; |
|
| 206 | + $ouverte = false; |
|
| 207 | + while ($do = array_shift($todo)) { |
|
| 208 | + $todo2[$i] = isset($todo2[$i]) ? $todo2[$i] . ',' . $do : $do; |
|
| 209 | + $o = (false !== strpos($do, '(')); |
|
| 210 | + $f = (false !== strpos($do, ')')); |
|
| 211 | + if ($o and !$f) { |
|
| 212 | + $ouverte = true; |
|
| 213 | + } elseif ($f) { |
|
| 214 | + $ouverte = false; |
|
| 215 | + } |
|
| 216 | + if (!$ouverte) { |
|
| 217 | + $i++; |
|
| 218 | + } |
|
| 219 | + } |
|
| 220 | + |
|
| 221 | + // 3 |
|
| 222 | + $resultats = []; |
|
| 223 | + foreach ($todo2 as $do) { |
|
| 224 | + $do = trim($do); |
|
| 225 | + if ( |
|
| 226 | + !preg_match('/(DROP PRIMARY KEY|DROP KEY|DROP INDEX|DROP COLUMN|DROP' |
|
| 227 | + . '|CHANGE COLUMN|CHANGE|MODIFY|RENAME TO|RENAME' |
|
| 228 | + . '|ADD PRIMARY KEY|ADD KEY|ADD INDEX|ADD UNIQUE KEY|ADD UNIQUE' |
|
| 229 | + . '|ADD COLUMN|ADD' |
|
| 230 | + . ')\s*([^\s]*)\s*(.*)?/i', $do, $matches) |
|
| 231 | + ) { |
|
| 232 | + spip_log( |
|
| 233 | + "SQLite : Probleme de ALTER TABLE, utilisation non reconnue dans : $do \n(requete d'origine : $query)", |
|
| 234 | + 'sqlite.' . _LOG_ERREUR |
|
| 235 | + ); |
|
| 236 | + |
|
| 237 | + return false; |
|
| 238 | + } |
|
| 239 | + |
|
| 240 | + $cle = strtoupper($matches[1]); |
|
| 241 | + $colonne_origine = $matches[2]; |
|
| 242 | + $colonne_destination = ''; |
|
| 243 | + |
|
| 244 | + $def = $matches[3]; |
|
| 245 | + |
|
| 246 | + // eluder une eventuelle clause before|after|first inutilisable |
|
| 247 | + $defr = rtrim(preg_replace('/(BEFORE|AFTER|FIRST)(.*)$/is', '', $def)); |
|
| 248 | + $defo = $defr; // garder la def d'origine pour certains cas |
|
| 249 | + // remplacer les definitions venant de mysql |
|
| 250 | + $defr = _sqlite_remplacements_definitions_table($defr); |
|
| 251 | + |
|
| 252 | + // reinjecter dans le do |
|
| 253 | + $do = str_replace($def, $defr, $do); |
|
| 254 | + $def = $defr; |
|
| 255 | + |
|
| 256 | + switch ($cle) { |
|
| 257 | + // suppression d'un index |
|
| 258 | + case 'DROP KEY': |
|
| 259 | + case 'DROP INDEX': |
|
| 260 | + $nom_index = $colonne_origine; |
|
| 261 | + spip_sqlite_drop_index($nom_index, $table, $serveur); |
|
| 262 | + break; |
|
| 263 | + |
|
| 264 | + // suppression d'une pk |
|
| 265 | + case 'DROP PRIMARY KEY': |
|
| 266 | + if ( |
|
| 267 | + !_sqlite_modifier_table( |
|
| 268 | + $table, |
|
| 269 | + $colonne_origine, |
|
| 270 | + ['key' => ['PRIMARY KEY' => '']], |
|
| 271 | + $serveur |
|
| 272 | + ) |
|
| 273 | + ) { |
|
| 274 | + return false; |
|
| 275 | + } |
|
| 276 | + break; |
|
| 277 | + // suppression d'une colonne |
|
| 278 | + case 'DROP COLUMN': |
|
| 279 | + case 'DROP': |
|
| 280 | + if ( |
|
| 281 | + !_sqlite_modifier_table( |
|
| 282 | + $table, |
|
| 283 | + [$colonne_origine => ''], |
|
| 284 | + [], |
|
| 285 | + $serveur |
|
| 286 | + ) |
|
| 287 | + ) { |
|
| 288 | + return false; |
|
| 289 | + } |
|
| 290 | + break; |
|
| 291 | + |
|
| 292 | + case 'CHANGE COLUMN': |
|
| 293 | + case 'CHANGE': |
|
| 294 | + // recuperer le nom de la future colonne |
|
| 295 | + // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation |
|
| 296 | + // en tenant compte de la cle primaire (ce qui est mieux) |
|
| 297 | + $def = trim($defo); |
|
| 298 | + $colonne_destination = substr($def, 0, strpos($def, ' ')); |
|
| 299 | + $def = substr($def, strlen($colonne_destination) + 1); |
|
| 300 | + |
|
| 301 | + if ( |
|
| 302 | + !_sqlite_modifier_table( |
|
| 303 | + $table, |
|
| 304 | + [$colonne_origine => $colonne_destination], |
|
| 305 | + ['field' => [$colonne_destination => $def]], |
|
| 306 | + $serveur |
|
| 307 | + ) |
|
| 308 | + ) { |
|
| 309 | + return false; |
|
| 310 | + } |
|
| 311 | + break; |
|
| 312 | + |
|
| 313 | + case 'MODIFY': |
|
| 314 | + // on reprend la def d'origine car _sqlite_modifier_table va refaire la translation |
|
| 315 | + // en tenant compte de la cle primaire (ce qui est mieux) |
|
| 316 | + if ( |
|
| 317 | + !_sqlite_modifier_table( |
|
| 318 | + $table, |
|
| 319 | + $colonne_origine, |
|
| 320 | + ['field' => [$colonne_origine => $defo]], |
|
| 321 | + $serveur |
|
| 322 | + ) |
|
| 323 | + ) { |
|
| 324 | + return false; |
|
| 325 | + } |
|
| 326 | + break; |
|
| 327 | + |
|
| 328 | + // pas geres en sqlite2 |
|
| 329 | + case 'RENAME': |
|
| 330 | + $do = 'RENAME TO' . substr($do, 6); |
|
| 331 | + case 'RENAME TO': |
|
| 332 | + if (!spip_sqlite::executer_requete("$debut $do", $serveur)) { |
|
| 333 | + spip_log("SQLite : Erreur ALTER TABLE / RENAME : $query", 'sqlite.' . _LOG_ERREUR); |
|
| 334 | + |
|
| 335 | + return false; |
|
| 336 | + } |
|
| 337 | + break; |
|
| 338 | + |
|
| 339 | + // ajout d'une pk |
|
| 340 | + case 'ADD PRIMARY KEY': |
|
| 341 | + $pk = trim(substr($do, 16)); |
|
| 342 | + $pk = ($pk[0] == '(') ? substr($pk, 1, -1) : $pk; |
|
| 343 | + if ( |
|
| 344 | + !_sqlite_modifier_table( |
|
| 345 | + $table, |
|
| 346 | + $colonne_origine, |
|
| 347 | + ['key' => ['PRIMARY KEY' => $pk]], |
|
| 348 | + $serveur |
|
| 349 | + ) |
|
| 350 | + ) { |
|
| 351 | + return false; |
|
| 352 | + } |
|
| 353 | + break; |
|
| 354 | + // ajout d'un index |
|
| 355 | + case 'ADD UNIQUE KEY': |
|
| 356 | + case 'ADD UNIQUE': |
|
| 357 | + $unique = true; |
|
| 358 | + case 'ADD INDEX': |
|
| 359 | + case 'ADD KEY': |
|
| 360 | + if (!isset($unique)) { |
|
| 361 | + $unique = false; |
|
| 362 | + } |
|
| 363 | + // peut etre "(colonne)" ou "nom_index (colonnes)" |
|
| 364 | + // bug potentiel si qqn met "(colonne, colonne)" |
|
| 365 | + // |
|
| 366 | + // nom_index (colonnes) |
|
| 367 | + if ($def) { |
|
| 368 | + $colonnes = substr($def, 1, -1); |
|
| 369 | + $nom_index = $colonne_origine; |
|
| 370 | + } else { |
|
| 371 | + // (colonne) |
|
| 372 | + if ($colonne_origine[0] == '(') { |
|
| 373 | + $colonnes = substr($colonne_origine, 1, -1); |
|
| 374 | + if (false !== strpos(',', $colonnes)) { |
|
| 375 | + spip_log('SQLite : Erreur, impossible de creer un index sur plusieurs colonnes' |
|
| 376 | + . " sans qu'il ait de nom ($table, ($colonnes))", 'sqlite.' . _LOG_ERREUR); |
|
| 377 | + break; |
|
| 378 | + } else { |
|
| 379 | + $nom_index = $colonnes; |
|
| 380 | + } |
|
| 381 | + } // nom_index |
|
| 382 | + else { |
|
| 383 | + $nom_index = $colonnes = $colonne_origine; |
|
| 384 | + } |
|
| 385 | + } |
|
| 386 | + spip_sqlite_create_index($nom_index, $table, $colonnes, $unique, $serveur); |
|
| 387 | + break; |
|
| 388 | + |
|
| 389 | + // pas geres en sqlite2 |
|
| 390 | + case 'ADD COLUMN': |
|
| 391 | + $do = 'ADD' . substr($do, 10); |
|
| 392 | + case 'ADD': |
|
| 393 | + default: |
|
| 394 | + if (!preg_match(',primary\s+key,i', $do)) { |
|
| 395 | + if (!spip_sqlite::executer_requete("$debut $do", $serveur)) { |
|
| 396 | + spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR); |
|
| 397 | + |
|
| 398 | + return false; |
|
| 399 | + } |
|
| 400 | + break; |
|
| 401 | + } |
|
| 402 | + // ou si la colonne est aussi primary key |
|
| 403 | + // cas du add id_truc int primary key |
|
| 404 | + // ajout d'une colonne qui passe en primary key directe |
|
| 405 | + else { |
|
| 406 | + $def = trim(substr($do, 3)); |
|
| 407 | + $colonne_ajoutee = substr($def, 0, strpos($def, ' ')); |
|
| 408 | + $def = substr($def, strlen($colonne_ajoutee) + 1); |
|
| 409 | + $opts = []; |
|
| 410 | + if (preg_match(',primary\s+key,i', $def)) { |
|
| 411 | + $opts['key'] = ['PRIMARY KEY' => $colonne_ajoutee]; |
|
| 412 | + $def = preg_replace(',primary\s+key,i', '', $def); |
|
| 413 | + } |
|
| 414 | + $opts['field'] = [$colonne_ajoutee => $def]; |
|
| 415 | + if (!_sqlite_modifier_table($table, [$colonne_ajoutee], $opts, $serveur)) { |
|
| 416 | + spip_log("SQLite : Erreur ALTER TABLE / ADD : $query", 'sqlite.' . _LOG_ERREUR); |
|
| 417 | + |
|
| 418 | + return false; |
|
| 419 | + } |
|
| 420 | + } |
|
| 421 | + break; |
|
| 422 | + } |
|
| 423 | + // tout est bon, ouf ! |
|
| 424 | + spip_log("SQLite ($serveur) : Changements OK : $debut $do", 'sqlite.' . _LOG_INFO); |
|
| 425 | + } |
|
| 426 | + |
|
| 427 | + spip_log("SQLite ($serveur) : fin ALTER TABLE OK !", 'sqlite.' . _LOG_INFO); |
|
| 428 | + |
|
| 429 | + return true; |
|
| 430 | 430 | } |
| 431 | 431 | |
| 432 | 432 | |
@@ -449,38 +449,38 @@ discard block |
||
| 449 | 449 | * - true si la requête réussie, false sinon. |
| 450 | 450 | */ |
| 451 | 451 | function spip_sqlite_create( |
| 452 | - $nom, |
|
| 453 | - $champs, |
|
| 454 | - $cles, |
|
| 455 | - $autoinc = false, |
|
| 456 | - $temporary = false, |
|
| 457 | - $serveur = '', |
|
| 458 | - $requeter = true |
|
| 452 | + $nom, |
|
| 453 | + $champs, |
|
| 454 | + $cles, |
|
| 455 | + $autoinc = false, |
|
| 456 | + $temporary = false, |
|
| 457 | + $serveur = '', |
|
| 458 | + $requeter = true |
|
| 459 | 459 | ) { |
| 460 | - $query = _sqlite_requete_create($nom, $champs, $cles, $autoinc, $temporary, $ifnotexists = true, $serveur, $requeter); |
|
| 461 | - if (!$query) { |
|
| 462 | - return false; |
|
| 463 | - } |
|
| 464 | - $res = spip_sqlite_query($query, $serveur, $requeter); |
|
| 465 | - |
|
| 466 | - // SQLite ne cree pas les KEY sur les requetes CREATE TABLE |
|
| 467 | - // il faut donc les faire creer ensuite |
|
| 468 | - if (!$requeter) { |
|
| 469 | - return $res; |
|
| 470 | - } |
|
| 471 | - |
|
| 472 | - $ok = $res ? true : false; |
|
| 473 | - if ($ok) { |
|
| 474 | - foreach ($cles as $k => $v) { |
|
| 475 | - if (preg_match(',^(UNIQUE KEY|KEY|UNIQUE)\s,i', $k, $m)) { |
|
| 476 | - $index = trim(substr($k, strlen($m[1]))); |
|
| 477 | - $unique = (strlen($m[1]) > 3); |
|
| 478 | - $ok &= spip_sqlite_create_index($index, $nom, $v, $unique, $serveur); |
|
| 479 | - } |
|
| 480 | - } |
|
| 481 | - } |
|
| 482 | - |
|
| 483 | - return $ok ? true : false; |
|
| 460 | + $query = _sqlite_requete_create($nom, $champs, $cles, $autoinc, $temporary, $ifnotexists = true, $serveur, $requeter); |
|
| 461 | + if (!$query) { |
|
| 462 | + return false; |
|
| 463 | + } |
|
| 464 | + $res = spip_sqlite_query($query, $serveur, $requeter); |
|
| 465 | + |
|
| 466 | + // SQLite ne cree pas les KEY sur les requetes CREATE TABLE |
|
| 467 | + // il faut donc les faire creer ensuite |
|
| 468 | + if (!$requeter) { |
|
| 469 | + return $res; |
|
| 470 | + } |
|
| 471 | + |
|
| 472 | + $ok = $res ? true : false; |
|
| 473 | + if ($ok) { |
|
| 474 | + foreach ($cles as $k => $v) { |
|
| 475 | + if (preg_match(',^(UNIQUE KEY|KEY|UNIQUE)\s,i', $k, $m)) { |
|
| 476 | + $index = trim(substr($k, strlen($m[1]))); |
|
| 477 | + $unique = (strlen($m[1]) > 3); |
|
| 478 | + $ok &= spip_sqlite_create_index($index, $nom, $v, $unique, $serveur); |
|
| 479 | + } |
|
| 480 | + } |
|
| 481 | + } |
|
| 482 | + |
|
| 483 | + return $ok ? true : false; |
|
| 484 | 484 | } |
| 485 | 485 | |
| 486 | 486 | /** |
@@ -493,21 +493,21 @@ discard block |
||
| 493 | 493 | * @return bool true si la base est créee. |
| 494 | 494 | **/ |
| 495 | 495 | function spip_sqlite_create_base($nom, $serveur = '', $option = true) { |
| 496 | - $f = $nom . '.sqlite'; |
|
| 497 | - if (strpos($nom, '/') === false) { |
|
| 498 | - $f = _DIR_DB . $f; |
|
| 499 | - } |
|
| 496 | + $f = $nom . '.sqlite'; |
|
| 497 | + if (strpos($nom, '/') === false) { |
|
| 498 | + $f = _DIR_DB . $f; |
|
| 499 | + } |
|
| 500 | 500 | |
| 501 | - $ok = new \PDO("sqlite:$f"); |
|
| 501 | + $ok = new \PDO("sqlite:$f"); |
|
| 502 | 502 | |
| 503 | - if ($ok) { |
|
| 504 | - unset($ok); |
|
| 503 | + if ($ok) { |
|
| 504 | + unset($ok); |
|
| 505 | 505 | |
| 506 | - return true; |
|
| 507 | - } |
|
| 508 | - unset($ok); |
|
| 506 | + return true; |
|
| 507 | + } |
|
| 508 | + unset($ok); |
|
| 509 | 509 | |
| 510 | - return false; |
|
| 510 | + return false; |
|
| 511 | 511 | } |
| 512 | 512 | |
| 513 | 513 | |
@@ -528,22 +528,22 @@ discard block |
||
| 528 | 528 | * - string texte de la requête si $requeter vaut false |
| 529 | 529 | */ |
| 530 | 530 | function spip_sqlite_create_view($nom, $query_select, $serveur = '', $requeter = true) { |
| 531 | - if (!$query_select) { |
|
| 532 | - return false; |
|
| 533 | - } |
|
| 534 | - // vue deja presente |
|
| 535 | - if (sql_showtable($nom, false, $serveur)) { |
|
| 536 | - spip_log( |
|
| 537 | - "Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", |
|
| 538 | - 'sqlite.' . _LOG_ERREUR |
|
| 539 | - ); |
|
| 531 | + if (!$query_select) { |
|
| 532 | + return false; |
|
| 533 | + } |
|
| 534 | + // vue deja presente |
|
| 535 | + if (sql_showtable($nom, false, $serveur)) { |
|
| 536 | + spip_log( |
|
| 537 | + "Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", |
|
| 538 | + 'sqlite.' . _LOG_ERREUR |
|
| 539 | + ); |
|
| 540 | 540 | |
| 541 | - return false; |
|
| 542 | - } |
|
| 541 | + return false; |
|
| 542 | + } |
|
| 543 | 543 | |
| 544 | - $query = "CREATE VIEW $nom AS " . $query_select; |
|
| 544 | + $query = "CREATE VIEW $nom AS " . $query_select; |
|
| 545 | 545 | |
| 546 | - return spip_sqlite_query($query, $serveur, $requeter); |
|
| 546 | + return spip_sqlite_query($query, $serveur, $requeter); |
|
| 547 | 547 | } |
| 548 | 548 | |
| 549 | 549 | /** |
@@ -565,54 +565,54 @@ discard block |
||
| 565 | 565 | * string : requête, false si erreur, true sinon. |
| 566 | 566 | */ |
| 567 | 567 | function spip_sqlite_create_index($nom, $table, $champs, $unique = '', $serveur = '', $requeter = true) { |
| 568 | - if (!($nom or $table or $champs)) { |
|
| 569 | - spip_log( |
|
| 570 | - "Champ manquant pour creer un index sqlite ($nom, $table, (" . join(',', $champs) . '))', |
|
| 571 | - 'sqlite.' . _LOG_ERREUR |
|
| 572 | - ); |
|
| 573 | - |
|
| 574 | - return false; |
|
| 575 | - } |
|
| 576 | - |
|
| 577 | - // SQLite ne differentie pas noms des index en fonction des tables |
|
| 578 | - // il faut donc creer des noms uniques d'index pour une base sqlite |
|
| 579 | - $nom = $table . '_' . $nom; |
|
| 580 | - // enlever d'eventuelles parentheses deja presentes sur champs |
|
| 581 | - if (!is_array($champs)) { |
|
| 582 | - if ($champs[0] == '(') { |
|
| 583 | - $champs = substr($champs, 1, -1); |
|
| 584 | - } |
|
| 585 | - $champs = [$champs]; |
|
| 586 | - // supprimer l'info de longueur d'index mysql en fin de champ |
|
| 587 | - $champs = preg_replace(',\(\d+\)$,', '', $champs); |
|
| 588 | - } |
|
| 589 | - |
|
| 590 | - $ifnotexists = ''; |
|
| 591 | - $version = spip_sqlite_fetch(spip_sqlite_query('select sqlite_version() AS sqlite_version', $serveur), '', $serveur); |
|
| 592 | - if (!function_exists('spip_version_compare')) { |
|
| 593 | - include_spip('plugins/installer'); |
|
| 594 | - } |
|
| 595 | - |
|
| 596 | - if ($version and spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) { |
|
| 597 | - $ifnotexists = ' IF NOT EXISTS'; |
|
| 598 | - } else { |
|
| 599 | - /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */ |
|
| 600 | - $a = spip_sqlite_showtable($table, $serveur); |
|
| 601 | - if (isset($a['key']['KEY ' . $nom])) { |
|
| 602 | - return true; |
|
| 603 | - } |
|
| 604 | - } |
|
| 605 | - |
|
| 606 | - $query = 'CREATE ' . ($unique ? 'UNIQUE ' : '') . "INDEX$ifnotexists $nom ON $table (" . join(',', $champs) . ')'; |
|
| 607 | - $res = spip_sqlite_query($query, $serveur, $requeter); |
|
| 608 | - if (!$requeter) { |
|
| 609 | - return $res; |
|
| 610 | - } |
|
| 611 | - if ($res) { |
|
| 612 | - return true; |
|
| 613 | - } else { |
|
| 614 | - return false; |
|
| 615 | - } |
|
| 568 | + if (!($nom or $table or $champs)) { |
|
| 569 | + spip_log( |
|
| 570 | + "Champ manquant pour creer un index sqlite ($nom, $table, (" . join(',', $champs) . '))', |
|
| 571 | + 'sqlite.' . _LOG_ERREUR |
|
| 572 | + ); |
|
| 573 | + |
|
| 574 | + return false; |
|
| 575 | + } |
|
| 576 | + |
|
| 577 | + // SQLite ne differentie pas noms des index en fonction des tables |
|
| 578 | + // il faut donc creer des noms uniques d'index pour une base sqlite |
|
| 579 | + $nom = $table . '_' . $nom; |
|
| 580 | + // enlever d'eventuelles parentheses deja presentes sur champs |
|
| 581 | + if (!is_array($champs)) { |
|
| 582 | + if ($champs[0] == '(') { |
|
| 583 | + $champs = substr($champs, 1, -1); |
|
| 584 | + } |
|
| 585 | + $champs = [$champs]; |
|
| 586 | + // supprimer l'info de longueur d'index mysql en fin de champ |
|
| 587 | + $champs = preg_replace(',\(\d+\)$,', '', $champs); |
|
| 588 | + } |
|
| 589 | + |
|
| 590 | + $ifnotexists = ''; |
|
| 591 | + $version = spip_sqlite_fetch(spip_sqlite_query('select sqlite_version() AS sqlite_version', $serveur), '', $serveur); |
|
| 592 | + if (!function_exists('spip_version_compare')) { |
|
| 593 | + include_spip('plugins/installer'); |
|
| 594 | + } |
|
| 595 | + |
|
| 596 | + if ($version and spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) { |
|
| 597 | + $ifnotexists = ' IF NOT EXISTS'; |
|
| 598 | + } else { |
|
| 599 | + /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */ |
|
| 600 | + $a = spip_sqlite_showtable($table, $serveur); |
|
| 601 | + if (isset($a['key']['KEY ' . $nom])) { |
|
| 602 | + return true; |
|
| 603 | + } |
|
| 604 | + } |
|
| 605 | + |
|
| 606 | + $query = 'CREATE ' . ($unique ? 'UNIQUE ' : '') . "INDEX$ifnotexists $nom ON $table (" . join(',', $champs) . ')'; |
|
| 607 | + $res = spip_sqlite_query($query, $serveur, $requeter); |
|
| 608 | + if (!$requeter) { |
|
| 609 | + return $res; |
|
| 610 | + } |
|
| 611 | + if ($res) { |
|
| 612 | + return true; |
|
| 613 | + } else { |
|
| 614 | + return false; |
|
| 615 | + } |
|
| 616 | 616 | } |
| 617 | 617 | |
| 618 | 618 | /** |
@@ -629,31 +629,31 @@ discard block |
||
| 629 | 629 | * @return int Nombre de lignes |
| 630 | 630 | */ |
| 631 | 631 | function spip_sqlite_count($r, $serveur = '', $requeter = true) { |
| 632 | - if (!$r) { |
|
| 633 | - return 0; |
|
| 634 | - } |
|
| 635 | - |
|
| 636 | - // select ou autre (insert, update,...) ? |
|
| 637 | - // (link,requete) a compter |
|
| 638 | - if (is_array($r->spipSqliteRowCount)) { |
|
| 639 | - list($link, $query) = $r->spipSqliteRowCount; |
|
| 640 | - // amelioration possible a tester intensivement : pas de order by pour compter ! |
|
| 641 | - // $query = preg_replace(",ORDER BY .+(LIMIT\s|HAVING\s|GROUP BY\s|$),Uims","\\1",$query); |
|
| 642 | - $query = "SELECT count(*) as zzzzsqlitecount FROM ($query)"; |
|
| 643 | - $l = $link->query($query); |
|
| 644 | - $i = 0; |
|
| 645 | - if ($l and $z = $l->fetch()) { |
|
| 646 | - $i = $z['zzzzsqlitecount']; |
|
| 647 | - } |
|
| 648 | - $r->spipSqliteRowCount = $i; |
|
| 649 | - } |
|
| 650 | - if (isset($r->spipSqliteRowCount)) { |
|
| 651 | - // Ce compte est faux s'il y a des limit dans la requete :( |
|
| 652 | - // il retourne le nombre d'enregistrements sans le limit |
|
| 653 | - return $r->spipSqliteRowCount; |
|
| 654 | - } else { |
|
| 655 | - return $r->rowCount(); |
|
| 656 | - } |
|
| 632 | + if (!$r) { |
|
| 633 | + return 0; |
|
| 634 | + } |
|
| 635 | + |
|
| 636 | + // select ou autre (insert, update,...) ? |
|
| 637 | + // (link,requete) a compter |
|
| 638 | + if (is_array($r->spipSqliteRowCount)) { |
|
| 639 | + list($link, $query) = $r->spipSqliteRowCount; |
|
| 640 | + // amelioration possible a tester intensivement : pas de order by pour compter ! |
|
| 641 | + // $query = preg_replace(",ORDER BY .+(LIMIT\s|HAVING\s|GROUP BY\s|$),Uims","\\1",$query); |
|
| 642 | + $query = "SELECT count(*) as zzzzsqlitecount FROM ($query)"; |
|
| 643 | + $l = $link->query($query); |
|
| 644 | + $i = 0; |
|
| 645 | + if ($l and $z = $l->fetch()) { |
|
| 646 | + $i = $z['zzzzsqlitecount']; |
|
| 647 | + } |
|
| 648 | + $r->spipSqliteRowCount = $i; |
|
| 649 | + } |
|
| 650 | + if (isset($r->spipSqliteRowCount)) { |
|
| 651 | + // Ce compte est faux s'il y a des limit dans la requete :( |
|
| 652 | + // il retourne le nombre d'enregistrements sans le limit |
|
| 653 | + return $r->spipSqliteRowCount; |
|
| 654 | + } else { |
|
| 655 | + return $r->rowCount(); |
|
| 656 | + } |
|
| 657 | 657 | } |
| 658 | 658 | |
| 659 | 659 | |
@@ -672,30 +672,30 @@ discard block |
||
| 672 | 672 | * - false si la requête a échouée |
| 673 | 673 | **/ |
| 674 | 674 | function spip_sqlite_countsel( |
| 675 | - $from = [], |
|
| 676 | - $where = [], |
|
| 677 | - $groupby = '', |
|
| 678 | - $having = [], |
|
| 679 | - $serveur = '', |
|
| 680 | - $requeter = true |
|
| 675 | + $from = [], |
|
| 676 | + $where = [], |
|
| 677 | + $groupby = '', |
|
| 678 | + $having = [], |
|
| 679 | + $serveur = '', |
|
| 680 | + $requeter = true |
|
| 681 | 681 | ) { |
| 682 | - $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby))); |
|
| 683 | - $r = spip_sqlite_select( |
|
| 684 | - "COUNT($c)", |
|
| 685 | - $from, |
|
| 686 | - $where, |
|
| 687 | - '', |
|
| 688 | - '', |
|
| 689 | - '', |
|
| 690 | - $having, |
|
| 691 | - $serveur, |
|
| 692 | - $requeter |
|
| 693 | - ); |
|
| 694 | - if ((is_resource($r) or is_object($r)) && $requeter) { // ressource : sqlite2, object : sqlite3 |
|
| 695 | - list($r) = spip_sqlite_fetch($r, SPIP_SQLITE3_NUM, $serveur); |
|
| 696 | - } |
|
| 697 | - |
|
| 698 | - return $r; |
|
| 682 | + $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby))); |
|
| 683 | + $r = spip_sqlite_select( |
|
| 684 | + "COUNT($c)", |
|
| 685 | + $from, |
|
| 686 | + $where, |
|
| 687 | + '', |
|
| 688 | + '', |
|
| 689 | + '', |
|
| 690 | + $having, |
|
| 691 | + $serveur, |
|
| 692 | + $requeter |
|
| 693 | + ); |
|
| 694 | + if ((is_resource($r) or is_object($r)) && $requeter) { // ressource : sqlite2, object : sqlite3 |
|
| 695 | + list($r) = spip_sqlite_fetch($r, SPIP_SQLITE3_NUM, $serveur); |
|
| 696 | + } |
|
| 697 | + |
|
| 698 | + return $r; |
|
| 699 | 699 | } |
| 700 | 700 | |
| 701 | 701 | |
@@ -712,24 +712,24 @@ discard block |
||
| 712 | 712 | * - False en cas d'erreur. |
| 713 | 713 | **/ |
| 714 | 714 | function spip_sqlite_delete($table, $where = '', $serveur = '', $requeter = true) { |
| 715 | - $res = spip_sqlite_query( |
|
| 716 | - _sqlite_calculer_expression('DELETE FROM', $table, ',') |
|
| 717 | - . _sqlite_calculer_expression('WHERE', $where), |
|
| 718 | - $serveur, |
|
| 719 | - $requeter |
|
| 720 | - ); |
|
| 715 | + $res = spip_sqlite_query( |
|
| 716 | + _sqlite_calculer_expression('DELETE FROM', $table, ',') |
|
| 717 | + . _sqlite_calculer_expression('WHERE', $where), |
|
| 718 | + $serveur, |
|
| 719 | + $requeter |
|
| 720 | + ); |
|
| 721 | 721 | |
| 722 | - // renvoyer la requete inerte si demandee |
|
| 723 | - if (!$requeter) { |
|
| 724 | - return $res; |
|
| 725 | - } |
|
| 722 | + // renvoyer la requete inerte si demandee |
|
| 723 | + if (!$requeter) { |
|
| 724 | + return $res; |
|
| 725 | + } |
|
| 726 | 726 | |
| 727 | - if ($res) { |
|
| 728 | - $link = _sqlite_link($serveur); |
|
| 729 | - return $res->rowCount(); |
|
| 730 | - } else { |
|
| 731 | - return false; |
|
| 732 | - } |
|
| 727 | + if ($res) { |
|
| 728 | + $link = _sqlite_link($serveur); |
|
| 729 | + return $res->rowCount(); |
|
| 730 | + } else { |
|
| 731 | + return false; |
|
| 732 | + } |
|
| 733 | 733 | } |
| 734 | 734 | |
| 735 | 735 | |
@@ -745,15 +745,15 @@ discard block |
||
| 745 | 745 | * - true si la requête a réussie, false sinon |
| 746 | 746 | */ |
| 747 | 747 | function spip_sqlite_drop_table($table, $exist = '', $serveur = '', $requeter = true) { |
| 748 | - if ($exist) { |
|
| 749 | - $exist = ' IF EXISTS'; |
|
| 750 | - } |
|
| 748 | + if ($exist) { |
|
| 749 | + $exist = ' IF EXISTS'; |
|
| 750 | + } |
|
| 751 | 751 | |
| 752 | - if (spip_sqlite_query("DROP TABLE$exist $table", $serveur, $requeter)) { |
|
| 753 | - return true; |
|
| 754 | - } else { |
|
| 755 | - return false; |
|
| 756 | - } |
|
| 752 | + if (spip_sqlite_query("DROP TABLE$exist $table", $serveur, $requeter)) { |
|
| 753 | + return true; |
|
| 754 | + } else { |
|
| 755 | + return false; |
|
| 756 | + } |
|
| 757 | 757 | } |
| 758 | 758 | |
| 759 | 759 | |
@@ -769,11 +769,11 @@ discard block |
||
| 769 | 769 | * - true si la requête a réussie, false sinon |
| 770 | 770 | */ |
| 771 | 771 | function spip_sqlite_drop_view($view, $exist = '', $serveur = '', $requeter = true) { |
| 772 | - if ($exist) { |
|
| 773 | - $exist = ' IF EXISTS'; |
|
| 774 | - } |
|
| 772 | + if ($exist) { |
|
| 773 | + $exist = ' IF EXISTS'; |
|
| 774 | + } |
|
| 775 | 775 | |
| 776 | - return spip_sqlite_query("DROP VIEW$exist $view", $serveur, $requeter); |
|
| 776 | + return spip_sqlite_query("DROP VIEW$exist $view", $serveur, $requeter); |
|
| 777 | 777 | } |
| 778 | 778 | |
| 779 | 779 | /** |
@@ -787,20 +787,20 @@ discard block |
||
| 787 | 787 | * @return bool ou requete |
| 788 | 788 | */ |
| 789 | 789 | function spip_sqlite_drop_index($nom, $table, $serveur = '', $requeter = true) { |
| 790 | - if (!($nom or $table)) { |
|
| 791 | - spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.' . _LOG_ERREUR); |
|
| 790 | + if (!($nom or $table)) { |
|
| 791 | + spip_log("Champ manquant pour supprimer un index sqlite ($nom, $table)", 'sqlite.' . _LOG_ERREUR); |
|
| 792 | 792 | |
| 793 | - return false; |
|
| 794 | - } |
|
| 793 | + return false; |
|
| 794 | + } |
|
| 795 | 795 | |
| 796 | - // SQLite ne differentie pas noms des index en fonction des tables |
|
| 797 | - // il faut donc creer des noms uniques d'index pour une base sqlite |
|
| 798 | - $index = $table . '_' . $nom; |
|
| 799 | - $exist = ' IF EXISTS'; |
|
| 796 | + // SQLite ne differentie pas noms des index en fonction des tables |
|
| 797 | + // il faut donc creer des noms uniques d'index pour une base sqlite |
|
| 798 | + $index = $table . '_' . $nom; |
|
| 799 | + $exist = ' IF EXISTS'; |
|
| 800 | 800 | |
| 801 | - $query = "DROP INDEX$exist $index"; |
|
| 801 | + $query = "DROP INDEX$exist $index"; |
|
| 802 | 802 | |
| 803 | - return spip_sqlite_query($query, $serveur, $requeter); |
|
| 803 | + return spip_sqlite_query($query, $serveur, $requeter); |
|
| 804 | 804 | } |
| 805 | 805 | |
| 806 | 806 | /** |
@@ -816,28 +816,28 @@ discard block |
||
| 816 | 816 | * Erreur eventuelle |
| 817 | 817 | **/ |
| 818 | 818 | function spip_sqlite_error($query = '', $serveur = '') { |
| 819 | - $link = _sqlite_link($serveur); |
|
| 819 | + $link = _sqlite_link($serveur); |
|
| 820 | 820 | |
| 821 | - if ($link) { |
|
| 822 | - $errs = $link->errorInfo(); |
|
| 823 | - $s = _sqlite_last_error_from_link($link); |
|
| 824 | - } else { |
|
| 825 | - $s = ': aucune ressource sqlite (link)'; |
|
| 826 | - } |
|
| 827 | - if ($s) { |
|
| 828 | - $trace = debug_backtrace(); |
|
| 829 | - if ($trace[0]['function'] != 'spip_sqlite_error') { |
|
| 830 | - spip_log("$s - $query - " . sql_error_backtrace(), 'sqlite.' . _LOG_ERREUR); |
|
| 831 | - } |
|
| 832 | - } |
|
| 821 | + if ($link) { |
|
| 822 | + $errs = $link->errorInfo(); |
|
| 823 | + $s = _sqlite_last_error_from_link($link); |
|
| 824 | + } else { |
|
| 825 | + $s = ': aucune ressource sqlite (link)'; |
|
| 826 | + } |
|
| 827 | + if ($s) { |
|
| 828 | + $trace = debug_backtrace(); |
|
| 829 | + if ($trace[0]['function'] != 'spip_sqlite_error') { |
|
| 830 | + spip_log("$s - $query - " . sql_error_backtrace(), 'sqlite.' . _LOG_ERREUR); |
|
| 831 | + } |
|
| 832 | + } |
|
| 833 | 833 | |
| 834 | - return $s; |
|
| 834 | + return $s; |
|
| 835 | 835 | } |
| 836 | 836 | |
| 837 | 837 | function _sqlite_last_error_from_link($link) { |
| 838 | - if ($link) { |
|
| 839 | - $errs = $link->errorInfo(); |
|
| 840 | - /* |
|
| 838 | + if ($link) { |
|
| 839 | + $errs = $link->errorInfo(); |
|
| 840 | + /* |
|
| 841 | 841 | $errs[0] |
| 842 | 842 | numero SQLState ('HY000' souvent lors d'une erreur) |
| 843 | 843 | http://www.easysoft.com/developer/interfaces/odbc/sqlstate_status_return_codes.html |
@@ -847,11 +847,11 @@ discard block |
||
| 847 | 847 | $errs[2] |
| 848 | 848 | Le texte du message d'erreur |
| 849 | 849 | */ |
| 850 | - if (ltrim($errs[0], '0')) { // 00000 si pas d'erreur |
|
| 851 | - return "$errs[2]"; |
|
| 852 | - } |
|
| 853 | - } |
|
| 854 | - return ''; |
|
| 850 | + if (ltrim($errs[0], '0')) { // 00000 si pas d'erreur |
|
| 851 | + return "$errs[2]"; |
|
| 852 | + } |
|
| 853 | + } |
|
| 854 | + return ''; |
|
| 855 | 855 | } |
| 856 | 856 | |
| 857 | 857 | /** |
@@ -868,23 +868,23 @@ discard block |
||
| 868 | 868 | * 'HY000/1' : numéro de l'erreur SQLState / numéro d'erreur interne SQLite (en sqlite 3) |
| 869 | 869 | **/ |
| 870 | 870 | function spip_sqlite_errno($serveur = '') { |
| 871 | - $link = _sqlite_link($serveur); |
|
| 871 | + $link = _sqlite_link($serveur); |
|
| 872 | 872 | |
| 873 | - if ($link) { |
|
| 874 | - $t = $link->errorInfo(); |
|
| 875 | - $s = ltrim($t[0], '0'); // 00000 si pas d'erreur |
|
| 876 | - if ($s) { |
|
| 877 | - $s .= ' / ' . $t[1]; |
|
| 878 | - } // ajoute l'erreur du moteur SQLite |
|
| 879 | - } else { |
|
| 880 | - $s = ': aucune ressource sqlite (link)'; |
|
| 881 | - } |
|
| 873 | + if ($link) { |
|
| 874 | + $t = $link->errorInfo(); |
|
| 875 | + $s = ltrim($t[0], '0'); // 00000 si pas d'erreur |
|
| 876 | + if ($s) { |
|
| 877 | + $s .= ' / ' . $t[1]; |
|
| 878 | + } // ajoute l'erreur du moteur SQLite |
|
| 879 | + } else { |
|
| 880 | + $s = ': aucune ressource sqlite (link)'; |
|
| 881 | + } |
|
| 882 | 882 | |
| 883 | - if ($s) { |
|
| 884 | - spip_log("Erreur sqlite $s", 'sqlite.' . _LOG_ERREUR); |
|
| 885 | - } |
|
| 883 | + if ($s) { |
|
| 884 | + spip_log("Erreur sqlite $s", 'sqlite.' . _LOG_ERREUR); |
|
| 885 | + } |
|
| 886 | 886 | |
| 887 | - return $s ? $s : 0; |
|
| 887 | + return $s ? $s : 0; |
|
| 888 | 888 | } |
| 889 | 889 | |
| 890 | 890 | |
@@ -900,19 +900,19 @@ discard block |
||
| 900 | 900 | * - false si on a pas pu avoir d'explication |
| 901 | 901 | */ |
| 902 | 902 | function spip_sqlite_explain($query, $serveur = '', $requeter = true) { |
| 903 | - if (strpos(ltrim($query), 'SELECT') !== 0) { |
|
| 904 | - return []; |
|
| 905 | - } |
|
| 903 | + if (strpos(ltrim($query), 'SELECT') !== 0) { |
|
| 904 | + return []; |
|
| 905 | + } |
|
| 906 | 906 | |
| 907 | - $query = spip_sqlite::traduire_requete($query, $serveur); |
|
| 908 | - $query = 'EXPLAIN ' . $query; |
|
| 909 | - if (!$requeter) { |
|
| 910 | - return $query; |
|
| 911 | - } |
|
| 912 | - // on ne trace pas ces requetes, sinon on obtient un tracage sans fin... |
|
| 913 | - $r = spip_sqlite::executer_requete($query, $serveur, false); |
|
| 907 | + $query = spip_sqlite::traduire_requete($query, $serveur); |
|
| 908 | + $query = 'EXPLAIN ' . $query; |
|
| 909 | + if (!$requeter) { |
|
| 910 | + return $query; |
|
| 911 | + } |
|
| 912 | + // on ne trace pas ces requetes, sinon on obtient un tracage sans fin... |
|
| 913 | + $r = spip_sqlite::executer_requete($query, $serveur, false); |
|
| 914 | 914 | |
| 915 | - return $r ? spip_sqlite_fetch($r, null, $serveur) : false; // hum ? etrange ca... a verifier |
|
| 915 | + return $r ? spip_sqlite_fetch($r, null, $serveur) : false; // hum ? etrange ca... a verifier |
|
| 916 | 916 | } |
| 917 | 917 | |
| 918 | 918 | |
@@ -929,30 +929,30 @@ discard block |
||
| 929 | 929 | */ |
| 930 | 930 | function spip_sqlite_fetch($r, $t = '', $serveur = '', $requeter = true) { |
| 931 | 931 | |
| 932 | - $link = _sqlite_link($serveur); |
|
| 933 | - $t = $t ? $t : SPIP_SQLITE3_ASSOC; |
|
| 932 | + $link = _sqlite_link($serveur); |
|
| 933 | + $t = $t ? $t : SPIP_SQLITE3_ASSOC; |
|
| 934 | 934 | |
| 935 | - $retour = false; |
|
| 936 | - if ($r) { |
|
| 937 | - $retour = $r->fetch($t); |
|
| 938 | - } |
|
| 935 | + $retour = false; |
|
| 936 | + if ($r) { |
|
| 937 | + $retour = $r->fetch($t); |
|
| 938 | + } |
|
| 939 | 939 | |
| 940 | - // Renvoie des 'table.titre' au lieu de 'titre' tout court ! pff ! |
|
| 941 | - // suppression de 'table.' pour toutes les cles (c'est un peu violent !) |
|
| 942 | - // c'est couteux : on ne verifie que la premiere ligne pour voir si on le fait ou non |
|
| 943 | - if ( |
|
| 944 | - $retour |
|
| 945 | - and strpos(implode('', array_keys($retour)), '.') !== false |
|
| 946 | - ) { |
|
| 947 | - foreach ($retour as $cle => $val) { |
|
| 948 | - if (($pos = strpos($cle, '.')) !== false) { |
|
| 949 | - $retour[substr($cle, $pos + 1)] = &$retour[$cle]; |
|
| 950 | - unset($retour[$cle]); |
|
| 951 | - } |
|
| 952 | - } |
|
| 953 | - } |
|
| 940 | + // Renvoie des 'table.titre' au lieu de 'titre' tout court ! pff ! |
|
| 941 | + // suppression de 'table.' pour toutes les cles (c'est un peu violent !) |
|
| 942 | + // c'est couteux : on ne verifie que la premiere ligne pour voir si on le fait ou non |
|
| 943 | + if ( |
|
| 944 | + $retour |
|
| 945 | + and strpos(implode('', array_keys($retour)), '.') !== false |
|
| 946 | + ) { |
|
| 947 | + foreach ($retour as $cle => $val) { |
|
| 948 | + if (($pos = strpos($cle, '.')) !== false) { |
|
| 949 | + $retour[substr($cle, $pos + 1)] = &$retour[$cle]; |
|
| 950 | + unset($retour[$cle]); |
|
| 951 | + } |
|
| 952 | + } |
|
| 953 | + } |
|
| 954 | 954 | |
| 955 | - return $retour; |
|
| 955 | + return $retour; |
|
| 956 | 956 | } |
| 957 | 957 | |
| 958 | 958 | /** |
@@ -965,8 +965,8 @@ discard block |
||
| 965 | 965 | * @return bool True si déplacement réussi, false sinon. |
| 966 | 966 | **/ |
| 967 | 967 | function spip_sqlite_seek($r, $row_number, $serveur = '', $requeter = true) { |
| 968 | - // encore un truc de bien fichu : PDO ne PEUT PAS faire de seek ou de rewind... |
|
| 969 | - return false; |
|
| 968 | + // encore un truc de bien fichu : PDO ne PEUT PAS faire de seek ou de rewind... |
|
| 969 | + return false; |
|
| 970 | 970 | } |
| 971 | 971 | |
| 972 | 972 | |
@@ -982,10 +982,10 @@ discard block |
||
| 982 | 982 | * @return bool True si réussi |
| 983 | 983 | */ |
| 984 | 984 | function spip_sqlite_free(&$r, $serveur = '', $requeter = true) { |
| 985 | - unset($r); |
|
| 985 | + unset($r); |
|
| 986 | 986 | |
| 987 | - return true; |
|
| 988 | - //return sqlite_free_result($r); |
|
| 987 | + return true; |
|
| 988 | + //return sqlite_free_result($r); |
|
| 989 | 989 | } |
| 990 | 990 | |
| 991 | 991 | |
@@ -1000,8 +1000,8 @@ discard block |
||
| 1000 | 1000 | * @return void |
| 1001 | 1001 | */ |
| 1002 | 1002 | function spip_sqlite_get_charset($charset = [], $serveur = '', $requeter = true) { |
| 1003 | - //$c = !$charset ? '' : (" LIKE "._q($charset['charset'])); |
|
| 1004 | - //return spip_sqlite_fetch(sqlite_query(_sqlite_link($serveur), "SHOW CHARACTER SET$c"), NULL, $serveur); |
|
| 1003 | + //$c = !$charset ? '' : (" LIKE "._q($charset['charset'])); |
|
| 1004 | + //return spip_sqlite_fetch(sqlite_query(_sqlite_link($serveur), "SHOW CHARACTER SET$c"), NULL, $serveur); |
|
| 1005 | 1005 | } |
| 1006 | 1006 | |
| 1007 | 1007 | |
@@ -1016,7 +1016,7 @@ discard block |
||
| 1016 | 1016 | * Valeur hexadécimale pour SQLite |
| 1017 | 1017 | **/ |
| 1018 | 1018 | function spip_sqlite_hex($v) { |
| 1019 | - return hexdec($v); |
|
| 1019 | + return hexdec($v); |
|
| 1020 | 1020 | } |
| 1021 | 1021 | |
| 1022 | 1022 | |
@@ -1038,7 +1038,7 @@ discard block |
||
| 1038 | 1038 | * Expression de requête SQL |
| 1039 | 1039 | **/ |
| 1040 | 1040 | function spip_sqlite_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) { |
| 1041 | - return "($val $not IN ($valeurs))"; |
|
| 1041 | + return "($val $not IN ($valeurs))"; |
|
| 1042 | 1042 | } |
| 1043 | 1043 | |
| 1044 | 1044 | |
@@ -1066,20 +1066,20 @@ discard block |
||
| 1066 | 1066 | **/ |
| 1067 | 1067 | function spip_sqlite_insert($table, $champs, $valeurs, $desc = [], $serveur = '', $requeter = true) { |
| 1068 | 1068 | |
| 1069 | - $query = "INSERT INTO $table " . ($champs ? "$champs VALUES $valeurs" : 'DEFAULT VALUES'); |
|
| 1070 | - if ($r = spip_sqlite_query($query, $serveur, $requeter)) { |
|
| 1071 | - if (!$requeter) { |
|
| 1072 | - return $r; |
|
| 1073 | - } |
|
| 1074 | - $nb = spip_sqlite::last_insert_id($serveur); |
|
| 1075 | - } else { |
|
| 1076 | - $nb = false; |
|
| 1077 | - } |
|
| 1069 | + $query = "INSERT INTO $table " . ($champs ? "$champs VALUES $valeurs" : 'DEFAULT VALUES'); |
|
| 1070 | + if ($r = spip_sqlite_query($query, $serveur, $requeter)) { |
|
| 1071 | + if (!$requeter) { |
|
| 1072 | + return $r; |
|
| 1073 | + } |
|
| 1074 | + $nb = spip_sqlite::last_insert_id($serveur); |
|
| 1075 | + } else { |
|
| 1076 | + $nb = false; |
|
| 1077 | + } |
|
| 1078 | 1078 | |
| 1079 | - $err = spip_sqlite_error($query, $serveur); |
|
| 1079 | + $err = spip_sqlite_error($query, $serveur); |
|
| 1080 | 1080 | |
| 1081 | - // cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage |
|
| 1082 | - return isset($_GET['var_profile']) ? $r : $nb; |
|
| 1081 | + // cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage |
|
| 1082 | + return isset($_GET['var_profile']) ? $r : $nb; |
|
| 1083 | 1083 | } |
| 1084 | 1084 | |
| 1085 | 1085 | |
@@ -1104,28 +1104,28 @@ discard block |
||
| 1104 | 1104 | * - Tableau de description de la requête et du temps d'exécution, si var_profile activé |
| 1105 | 1105 | **/ |
| 1106 | 1106 | function spip_sqlite_insertq($table, $couples = [], $desc = [], $serveur = '', $requeter = true) { |
| 1107 | - if (!$desc) { |
|
| 1108 | - $desc = description_table($table, $serveur); |
|
| 1109 | - } |
|
| 1110 | - if (!$desc) { |
|
| 1111 | - die("$table insertion sans description"); |
|
| 1112 | - } |
|
| 1113 | - $fields = isset($desc['field']) ? $desc['field'] : []; |
|
| 1107 | + if (!$desc) { |
|
| 1108 | + $desc = description_table($table, $serveur); |
|
| 1109 | + } |
|
| 1110 | + if (!$desc) { |
|
| 1111 | + die("$table insertion sans description"); |
|
| 1112 | + } |
|
| 1113 | + $fields = isset($desc['field']) ? $desc['field'] : []; |
|
| 1114 | 1114 | |
| 1115 | - foreach ($couples as $champ => $val) { |
|
| 1116 | - $couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]); |
|
| 1117 | - } |
|
| 1115 | + foreach ($couples as $champ => $val) { |
|
| 1116 | + $couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]); |
|
| 1117 | + } |
|
| 1118 | 1118 | |
| 1119 | - // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1120 | - $couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur); |
|
| 1119 | + // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1120 | + $couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur); |
|
| 1121 | 1121 | |
| 1122 | - $cles = $valeurs = ''; |
|
| 1123 | - if (count($couples)) { |
|
| 1124 | - $cles = '(' . join(',', array_keys($couples)) . ')'; |
|
| 1125 | - $valeurs = '(' . join(',', $couples) . ')'; |
|
| 1126 | - } |
|
| 1122 | + $cles = $valeurs = ''; |
|
| 1123 | + if (count($couples)) { |
|
| 1124 | + $cles = '(' . join(',', array_keys($couples)) . ')'; |
|
| 1125 | + $valeurs = '(' . join(',', $couples) . ')'; |
|
| 1126 | + } |
|
| 1127 | 1127 | |
| 1128 | - return spip_sqlite_insert($table, $cles, $valeurs, $desc, $serveur, $requeter); |
|
| 1128 | + return spip_sqlite_insert($table, $cles, $valeurs, $desc, $serveur, $requeter); |
|
| 1129 | 1129 | } |
| 1130 | 1130 | |
| 1131 | 1131 | |
@@ -1149,70 +1149,70 @@ discard block |
||
| 1149 | 1149 | * - False en cas d'erreur. |
| 1150 | 1150 | **/ |
| 1151 | 1151 | function spip_sqlite_insertq_multi($table, $tab_couples = [], $desc = [], $serveur = '', $requeter = true) { |
| 1152 | - if (!$desc) { |
|
| 1153 | - $desc = description_table($table, $serveur); |
|
| 1154 | - } |
|
| 1155 | - if (!$desc) { |
|
| 1156 | - die("$table insertion sans description"); |
|
| 1157 | - } |
|
| 1158 | - if (!isset($desc['field'])) { |
|
| 1159 | - $desc['field'] = []; |
|
| 1160 | - } |
|
| 1161 | - |
|
| 1162 | - // recuperer les champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1163 | - $maj = _sqlite_ajouter_champs_timestamp($table, [], $desc, $serveur); |
|
| 1164 | - |
|
| 1165 | - // seul le nom de la table est a traduire ici : |
|
| 1166 | - // le faire une seule fois au debut |
|
| 1167 | - $query_start = "INSERT INTO $table "; |
|
| 1168 | - $query_start = spip_sqlite::traduire_requete($query_start, $serveur); |
|
| 1169 | - |
|
| 1170 | - // ouvrir une transaction |
|
| 1171 | - if ($requeter) { |
|
| 1172 | - spip_sqlite::demarrer_transaction($serveur); |
|
| 1173 | - } |
|
| 1174 | - |
|
| 1175 | - while ($couples = array_shift($tab_couples)) { |
|
| 1176 | - foreach ($couples as $champ => $val) { |
|
| 1177 | - $couples[$champ] = _sqlite_calculer_cite($val, $desc['field'][$champ]); |
|
| 1178 | - } |
|
| 1179 | - |
|
| 1180 | - // inserer les champs timestamp par defaut |
|
| 1181 | - $couples = array_merge($maj, $couples); |
|
| 1182 | - |
|
| 1183 | - $champs = $valeurs = ''; |
|
| 1184 | - if (count($couples)) { |
|
| 1185 | - $champs = '(' . join(',', array_keys($couples)) . ')'; |
|
| 1186 | - $valeurs = '(' . join(',', $couples) . ')'; |
|
| 1187 | - $query = $query_start . "$champs VALUES $valeurs"; |
|
| 1188 | - } else { |
|
| 1189 | - $query = $query_start . 'DEFAULT VALUES'; |
|
| 1190 | - } |
|
| 1191 | - |
|
| 1192 | - if ($requeter) { |
|
| 1193 | - $retour = spip_sqlite::executer_requete($query, $serveur); |
|
| 1194 | - } |
|
| 1195 | - |
|
| 1196 | - // sur le dernier couple uniquement |
|
| 1197 | - if (!count($tab_couples)) { |
|
| 1198 | - $nb = 0; |
|
| 1199 | - if ($requeter) { |
|
| 1200 | - $nb = spip_sqlite::last_insert_id($serveur); |
|
| 1201 | - } else { |
|
| 1202 | - return $query; |
|
| 1203 | - } |
|
| 1204 | - } |
|
| 1205 | - |
|
| 1206 | - $err = spip_sqlite_error($query, $serveur); |
|
| 1207 | - } |
|
| 1208 | - |
|
| 1209 | - if ($requeter) { |
|
| 1210 | - spip_sqlite::finir_transaction($serveur); |
|
| 1211 | - } |
|
| 1212 | - |
|
| 1213 | - // renvoie le dernier id d'autoincrement ajoute |
|
| 1214 | - // cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage |
|
| 1215 | - return isset($_GET['var_profile']) ? $retour : $nb; |
|
| 1152 | + if (!$desc) { |
|
| 1153 | + $desc = description_table($table, $serveur); |
|
| 1154 | + } |
|
| 1155 | + if (!$desc) { |
|
| 1156 | + die("$table insertion sans description"); |
|
| 1157 | + } |
|
| 1158 | + if (!isset($desc['field'])) { |
|
| 1159 | + $desc['field'] = []; |
|
| 1160 | + } |
|
| 1161 | + |
|
| 1162 | + // recuperer les champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1163 | + $maj = _sqlite_ajouter_champs_timestamp($table, [], $desc, $serveur); |
|
| 1164 | + |
|
| 1165 | + // seul le nom de la table est a traduire ici : |
|
| 1166 | + // le faire une seule fois au debut |
|
| 1167 | + $query_start = "INSERT INTO $table "; |
|
| 1168 | + $query_start = spip_sqlite::traduire_requete($query_start, $serveur); |
|
| 1169 | + |
|
| 1170 | + // ouvrir une transaction |
|
| 1171 | + if ($requeter) { |
|
| 1172 | + spip_sqlite::demarrer_transaction($serveur); |
|
| 1173 | + } |
|
| 1174 | + |
|
| 1175 | + while ($couples = array_shift($tab_couples)) { |
|
| 1176 | + foreach ($couples as $champ => $val) { |
|
| 1177 | + $couples[$champ] = _sqlite_calculer_cite($val, $desc['field'][$champ]); |
|
| 1178 | + } |
|
| 1179 | + |
|
| 1180 | + // inserer les champs timestamp par defaut |
|
| 1181 | + $couples = array_merge($maj, $couples); |
|
| 1182 | + |
|
| 1183 | + $champs = $valeurs = ''; |
|
| 1184 | + if (count($couples)) { |
|
| 1185 | + $champs = '(' . join(',', array_keys($couples)) . ')'; |
|
| 1186 | + $valeurs = '(' . join(',', $couples) . ')'; |
|
| 1187 | + $query = $query_start . "$champs VALUES $valeurs"; |
|
| 1188 | + } else { |
|
| 1189 | + $query = $query_start . 'DEFAULT VALUES'; |
|
| 1190 | + } |
|
| 1191 | + |
|
| 1192 | + if ($requeter) { |
|
| 1193 | + $retour = spip_sqlite::executer_requete($query, $serveur); |
|
| 1194 | + } |
|
| 1195 | + |
|
| 1196 | + // sur le dernier couple uniquement |
|
| 1197 | + if (!count($tab_couples)) { |
|
| 1198 | + $nb = 0; |
|
| 1199 | + if ($requeter) { |
|
| 1200 | + $nb = spip_sqlite::last_insert_id($serveur); |
|
| 1201 | + } else { |
|
| 1202 | + return $query; |
|
| 1203 | + } |
|
| 1204 | + } |
|
| 1205 | + |
|
| 1206 | + $err = spip_sqlite_error($query, $serveur); |
|
| 1207 | + } |
|
| 1208 | + |
|
| 1209 | + if ($requeter) { |
|
| 1210 | + spip_sqlite::finir_transaction($serveur); |
|
| 1211 | + } |
|
| 1212 | + |
|
| 1213 | + // renvoie le dernier id d'autoincrement ajoute |
|
| 1214 | + // cas particulier : ne pas substituer la reponse spip_sqlite_query si on est en profilage |
|
| 1215 | + return isset($_GET['var_profile']) ? $retour : $nb; |
|
| 1216 | 1216 | } |
| 1217 | 1217 | |
| 1218 | 1218 | |
@@ -1227,7 +1227,7 @@ discard block |
||
| 1227 | 1227 | * Toujours true. |
| 1228 | 1228 | **/ |
| 1229 | 1229 | function spip_sqlite_preferer_transaction($serveur = '', $requeter = true) { |
| 1230 | - return true; |
|
| 1230 | + return true; |
|
| 1231 | 1231 | } |
| 1232 | 1232 | |
| 1233 | 1233 | /** |
@@ -1244,12 +1244,12 @@ discard block |
||
| 1244 | 1244 | * string si texte de la requête demandé, true sinon |
| 1245 | 1245 | **/ |
| 1246 | 1246 | function spip_sqlite_demarrer_transaction($serveur = '', $requeter = true) { |
| 1247 | - if (!$requeter) { |
|
| 1248 | - return 'BEGIN TRANSACTION'; |
|
| 1249 | - } |
|
| 1250 | - spip_sqlite::demarrer_transaction($serveur); |
|
| 1247 | + if (!$requeter) { |
|
| 1248 | + return 'BEGIN TRANSACTION'; |
|
| 1249 | + } |
|
| 1250 | + spip_sqlite::demarrer_transaction($serveur); |
|
| 1251 | 1251 | |
| 1252 | - return true; |
|
| 1252 | + return true; |
|
| 1253 | 1253 | } |
| 1254 | 1254 | |
| 1255 | 1255 | /** |
@@ -1263,12 +1263,12 @@ discard block |
||
| 1263 | 1263 | * string si texte de la requête demandé, true sinon |
| 1264 | 1264 | **/ |
| 1265 | 1265 | function spip_sqlite_terminer_transaction($serveur = '', $requeter = true) { |
| 1266 | - if (!$requeter) { |
|
| 1267 | - return 'COMMIT'; |
|
| 1268 | - } |
|
| 1269 | - spip_sqlite::finir_transaction($serveur); |
|
| 1266 | + if (!$requeter) { |
|
| 1267 | + return 'COMMIT'; |
|
| 1268 | + } |
|
| 1269 | + spip_sqlite::finir_transaction($serveur); |
|
| 1270 | 1270 | |
| 1271 | - return true; |
|
| 1271 | + return true; |
|
| 1272 | 1272 | } |
| 1273 | 1273 | |
| 1274 | 1274 | |
@@ -1283,27 +1283,27 @@ discard block |
||
| 1283 | 1283 | * Liste des noms de bases |
| 1284 | 1284 | **/ |
| 1285 | 1285 | function spip_sqlite_listdbs($serveur = '', $requeter = true) { |
| 1286 | - _sqlite_init(); |
|
| 1286 | + _sqlite_init(); |
|
| 1287 | 1287 | |
| 1288 | - if (!is_dir($d = substr(_DIR_DB, 0, -1))) { |
|
| 1289 | - return []; |
|
| 1290 | - } |
|
| 1288 | + if (!is_dir($d = substr(_DIR_DB, 0, -1))) { |
|
| 1289 | + return []; |
|
| 1290 | + } |
|
| 1291 | 1291 | |
| 1292 | - include_spip('inc/flock'); |
|
| 1293 | - $bases = preg_files($d, $pattern = '(.*)\.sqlite$'); |
|
| 1294 | - $bds = []; |
|
| 1292 | + include_spip('inc/flock'); |
|
| 1293 | + $bases = preg_files($d, $pattern = '(.*)\.sqlite$'); |
|
| 1294 | + $bds = []; |
|
| 1295 | 1295 | |
| 1296 | - foreach ($bases as $b) { |
|
| 1297 | - // pas de bases commencant pas sqlite |
|
| 1298 | - // (on s'en sert pour l'installation pour simuler la presence d'un serveur) |
|
| 1299 | - // les bases sont de la forme _sqliteX_tmp_spip_install.sqlite |
|
| 1300 | - if (strpos($b, '_sqlite')) { |
|
| 1301 | - continue; |
|
| 1302 | - } |
|
| 1303 | - $bds[] = preg_replace(";.*/$pattern;iS", '$1', $b); |
|
| 1304 | - } |
|
| 1296 | + foreach ($bases as $b) { |
|
| 1297 | + // pas de bases commencant pas sqlite |
|
| 1298 | + // (on s'en sert pour l'installation pour simuler la presence d'un serveur) |
|
| 1299 | + // les bases sont de la forme _sqliteX_tmp_spip_install.sqlite |
|
| 1300 | + if (strpos($b, '_sqlite')) { |
|
| 1301 | + continue; |
|
| 1302 | + } |
|
| 1303 | + $bds[] = preg_replace(";.*/$pattern;iS", '$1', $b); |
|
| 1304 | + } |
|
| 1305 | 1305 | |
| 1306 | - return $bds; |
|
| 1306 | + return $bds; |
|
| 1307 | 1307 | } |
| 1308 | 1308 | |
| 1309 | 1309 | |
@@ -1318,9 +1318,9 @@ discard block |
||
| 1318 | 1318 | * @return string Texte de sélection pour la requête |
| 1319 | 1319 | */ |
| 1320 | 1320 | function spip_sqlite_multi($objet, $lang) { |
| 1321 | - $r = 'EXTRAIRE_MULTI(' . $objet . ", '" . $lang . "') AS multi"; |
|
| 1321 | + $r = 'EXTRAIRE_MULTI(' . $objet . ", '" . $lang . "') AS multi"; |
|
| 1322 | 1322 | |
| 1323 | - return $r; |
|
| 1323 | + return $r; |
|
| 1324 | 1324 | } |
| 1325 | 1325 | |
| 1326 | 1326 | |
@@ -1337,15 +1337,15 @@ discard block |
||
| 1337 | 1337 | * @return bool|string true / false / requete |
| 1338 | 1338 | **/ |
| 1339 | 1339 | function spip_sqlite_optimize($table, $serveur = '', $requeter = true) { |
| 1340 | - static $do = false; |
|
| 1341 | - if ($requeter and $do) { |
|
| 1342 | - return true; |
|
| 1343 | - } |
|
| 1344 | - if ($requeter) { |
|
| 1345 | - $do = true; |
|
| 1346 | - } |
|
| 1340 | + static $do = false; |
|
| 1341 | + if ($requeter and $do) { |
|
| 1342 | + return true; |
|
| 1343 | + } |
|
| 1344 | + if ($requeter) { |
|
| 1345 | + $do = true; |
|
| 1346 | + } |
|
| 1347 | 1347 | |
| 1348 | - return spip_sqlite_query('VACUUM', $serveur, $requeter); |
|
| 1348 | + return spip_sqlite_query('VACUUM', $serveur, $requeter); |
|
| 1349 | 1349 | } |
| 1350 | 1350 | |
| 1351 | 1351 | |
@@ -1362,15 +1362,15 @@ discard block |
||
| 1362 | 1362 | * Donnée prête à être utilisée par le gestionnaire SQL |
| 1363 | 1363 | */ |
| 1364 | 1364 | function spip_sqlite_quote($v, $type = '') { |
| 1365 | - if (!is_array($v)) { |
|
| 1366 | - return _sqlite_calculer_cite($v, $type); |
|
| 1367 | - } |
|
| 1368 | - // si c'est un tableau, le parcourir en propageant le type |
|
| 1369 | - foreach ($v as $k => $r) { |
|
| 1370 | - $v[$k] = spip_sqlite_quote($r, $type); |
|
| 1371 | - } |
|
| 1365 | + if (!is_array($v)) { |
|
| 1366 | + return _sqlite_calculer_cite($v, $type); |
|
| 1367 | + } |
|
| 1368 | + // si c'est un tableau, le parcourir en propageant le type |
|
| 1369 | + foreach ($v as $k => $r) { |
|
| 1370 | + $v[$k] = spip_sqlite_quote($r, $type); |
|
| 1371 | + } |
|
| 1372 | 1372 | |
| 1373 | - return join(',', $v); |
|
| 1373 | + return join(',', $v); |
|
| 1374 | 1374 | } |
| 1375 | 1375 | |
| 1376 | 1376 | |
@@ -1387,9 +1387,9 @@ discard block |
||
| 1387 | 1387 | * Expression SQL |
| 1388 | 1388 | **/ |
| 1389 | 1389 | function spip_sqlite_date_proche($champ, $interval, $unite) { |
| 1390 | - $op = (($interval <= 0) ? '>' : '<'); |
|
| 1390 | + $op = (($interval <= 0) ? '>' : '<'); |
|
| 1391 | 1391 | |
| 1392 | - return "($champ $op datetime('" . date('Y-m-d H:i:s') . "', '$interval $unite'))"; |
|
| 1392 | + return "($champ $op datetime('" . date('Y-m-d H:i:s') . "', '$interval $unite'))"; |
|
| 1393 | 1393 | } |
| 1394 | 1394 | |
| 1395 | 1395 | |
@@ -1407,48 +1407,48 @@ discard block |
||
| 1407 | 1407 | * l'état de la table après la réparation |
| 1408 | 1408 | */ |
| 1409 | 1409 | function spip_sqlite_repair($table, $serveur = '', $requeter = true) { |
| 1410 | - if ( |
|
| 1411 | - $desc = spip_sqlite_showtable($table, $serveur) |
|
| 1412 | - and isset($desc['field']) |
|
| 1413 | - and is_array($desc['field']) |
|
| 1414 | - ) { |
|
| 1415 | - foreach ($desc['field'] as $c => $d) { |
|
| 1416 | - if ( |
|
| 1417 | - preg_match(',^(tinytext|mediumtext|text|longtext|varchar|char),i', $d) |
|
| 1418 | - and stripos($d, 'NOT NULL') !== false |
|
| 1419 | - and stripos($d, 'DEFAULT') === false |
|
| 1420 | - /* pas touche aux cles primaires */ |
|
| 1421 | - and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c) |
|
| 1422 | - ) { |
|
| 1423 | - spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT ''", $serveur); |
|
| 1424 | - spip_log("ALTER $q", 'repair' . _LOG_INFO_IMPORTANTE); |
|
| 1425 | - } |
|
| 1426 | - if ( |
|
| 1427 | - preg_match(',^(INTEGER),i', $d) |
|
| 1428 | - and stripos($d, 'NOT NULL') !== false |
|
| 1429 | - and stripos($d, 'DEFAULT') === false |
|
| 1430 | - /* pas touche aux cles primaires */ |
|
| 1431 | - and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c) |
|
| 1432 | - ) { |
|
| 1433 | - spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0'", $serveur); |
|
| 1434 | - spip_log("ALTER $q", 'repair' . _LOG_INFO_IMPORTANTE); |
|
| 1435 | - } |
|
| 1436 | - if ( |
|
| 1437 | - preg_match(',^(datetime),i', $d) |
|
| 1438 | - and stripos($d, 'NOT NULL') !== false |
|
| 1439 | - and stripos($d, 'DEFAULT') === false |
|
| 1440 | - /* pas touche aux cles primaires */ |
|
| 1441 | - and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c) |
|
| 1442 | - ) { |
|
| 1443 | - spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0000-00-00 00:00:00'", $serveur); |
|
| 1444 | - spip_log("ALTER $q", 'repair' . _LOG_INFO_IMPORTANTE); |
|
| 1445 | - } |
|
| 1446 | - } |
|
| 1447 | - |
|
| 1448 | - return [' OK ']; |
|
| 1449 | - } |
|
| 1450 | - |
|
| 1451 | - return [' ERROR ']; |
|
| 1410 | + if ( |
|
| 1411 | + $desc = spip_sqlite_showtable($table, $serveur) |
|
| 1412 | + and isset($desc['field']) |
|
| 1413 | + and is_array($desc['field']) |
|
| 1414 | + ) { |
|
| 1415 | + foreach ($desc['field'] as $c => $d) { |
|
| 1416 | + if ( |
|
| 1417 | + preg_match(',^(tinytext|mediumtext|text|longtext|varchar|char),i', $d) |
|
| 1418 | + and stripos($d, 'NOT NULL') !== false |
|
| 1419 | + and stripos($d, 'DEFAULT') === false |
|
| 1420 | + /* pas touche aux cles primaires */ |
|
| 1421 | + and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c) |
|
| 1422 | + ) { |
|
| 1423 | + spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT ''", $serveur); |
|
| 1424 | + spip_log("ALTER $q", 'repair' . _LOG_INFO_IMPORTANTE); |
|
| 1425 | + } |
|
| 1426 | + if ( |
|
| 1427 | + preg_match(',^(INTEGER),i', $d) |
|
| 1428 | + and stripos($d, 'NOT NULL') !== false |
|
| 1429 | + and stripos($d, 'DEFAULT') === false |
|
| 1430 | + /* pas touche aux cles primaires */ |
|
| 1431 | + and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c) |
|
| 1432 | + ) { |
|
| 1433 | + spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0'", $serveur); |
|
| 1434 | + spip_log("ALTER $q", 'repair' . _LOG_INFO_IMPORTANTE); |
|
| 1435 | + } |
|
| 1436 | + if ( |
|
| 1437 | + preg_match(',^(datetime),i', $d) |
|
| 1438 | + and stripos($d, 'NOT NULL') !== false |
|
| 1439 | + and stripos($d, 'DEFAULT') === false |
|
| 1440 | + /* pas touche aux cles primaires */ |
|
| 1441 | + and (!isset($desc['key']['PRIMARY KEY']) or $desc['key']['PRIMARY KEY'] !== $c) |
|
| 1442 | + ) { |
|
| 1443 | + spip_sqlite_alter($q = "TABLE $table CHANGE $c $c $d DEFAULT '0000-00-00 00:00:00'", $serveur); |
|
| 1444 | + spip_log("ALTER $q", 'repair' . _LOG_INFO_IMPORTANTE); |
|
| 1445 | + } |
|
| 1446 | + } |
|
| 1447 | + |
|
| 1448 | + return [' OK ']; |
|
| 1449 | + } |
|
| 1450 | + |
|
| 1451 | + return [' ERROR ']; |
|
| 1452 | 1452 | } |
| 1453 | 1453 | |
| 1454 | 1454 | |
@@ -1477,25 +1477,25 @@ discard block |
||
| 1477 | 1477 | * - False en cas d'erreur. |
| 1478 | 1478 | **/ |
| 1479 | 1479 | function spip_sqlite_replace($table, $couples, $desc = [], $serveur = '', $requeter = true) { |
| 1480 | - if (!$desc) { |
|
| 1481 | - $desc = description_table($table, $serveur); |
|
| 1482 | - } |
|
| 1483 | - if (!$desc) { |
|
| 1484 | - die("$table insertion sans description"); |
|
| 1485 | - } |
|
| 1486 | - $fields = isset($desc['field']) ? $desc['field'] : []; |
|
| 1480 | + if (!$desc) { |
|
| 1481 | + $desc = description_table($table, $serveur); |
|
| 1482 | + } |
|
| 1483 | + if (!$desc) { |
|
| 1484 | + die("$table insertion sans description"); |
|
| 1485 | + } |
|
| 1486 | + $fields = isset($desc['field']) ? $desc['field'] : []; |
|
| 1487 | 1487 | |
| 1488 | - foreach ($couples as $champ => $val) { |
|
| 1489 | - $couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]); |
|
| 1490 | - } |
|
| 1488 | + foreach ($couples as $champ => $val) { |
|
| 1489 | + $couples[$champ] = _sqlite_calculer_cite($val, $fields[$champ]); |
|
| 1490 | + } |
|
| 1491 | 1491 | |
| 1492 | - // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1493 | - $couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur); |
|
| 1492 | + // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1493 | + $couples = _sqlite_ajouter_champs_timestamp($table, $couples, $desc, $serveur); |
|
| 1494 | 1494 | |
| 1495 | - return spip_sqlite_query("REPLACE INTO $table (" . join(',', array_keys($couples)) . ') VALUES (' . join( |
|
| 1496 | - ',', |
|
| 1497 | - $couples |
|
| 1498 | - ) . ')', $serveur); |
|
| 1495 | + return spip_sqlite_query("REPLACE INTO $table (" . join(',', array_keys($couples)) . ') VALUES (' . join( |
|
| 1496 | + ',', |
|
| 1497 | + $couples |
|
| 1498 | + ) . ')', $serveur); |
|
| 1499 | 1499 | } |
| 1500 | 1500 | |
| 1501 | 1501 | |
@@ -1525,13 +1525,13 @@ discard block |
||
| 1525 | 1525 | **/ |
| 1526 | 1526 | function spip_sqlite_replace_multi($table, $tab_couples, $desc = [], $serveur = '', $requeter = true) { |
| 1527 | 1527 | |
| 1528 | - // boucler pour trainter chaque requete independemment |
|
| 1529 | - foreach ($tab_couples as $couples) { |
|
| 1530 | - $retour = spip_sqlite_replace($table, $couples, $desc, $serveur, $requeter); |
|
| 1531 | - } |
|
| 1528 | + // boucler pour trainter chaque requete independemment |
|
| 1529 | + foreach ($tab_couples as $couples) { |
|
| 1530 | + $retour = spip_sqlite_replace($table, $couples, $desc, $serveur, $requeter); |
|
| 1531 | + } |
|
| 1532 | 1532 | |
| 1533 | - // renvoie le dernier id |
|
| 1534 | - return $retour; |
|
| 1533 | + // renvoie le dernier id |
|
| 1534 | + return $retour; |
|
| 1535 | 1535 | } |
| 1536 | 1536 | |
| 1537 | 1537 | |
@@ -1558,44 +1558,44 @@ discard block |
||
| 1558 | 1558 | * - array : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer. |
| 1559 | 1559 | */ |
| 1560 | 1560 | function spip_sqlite_select( |
| 1561 | - $select, |
|
| 1562 | - $from, |
|
| 1563 | - $where = '', |
|
| 1564 | - $groupby = '', |
|
| 1565 | - $orderby = '', |
|
| 1566 | - $limit = '', |
|
| 1567 | - $having = '', |
|
| 1568 | - $serveur = '', |
|
| 1569 | - $requeter = true |
|
| 1561 | + $select, |
|
| 1562 | + $from, |
|
| 1563 | + $where = '', |
|
| 1564 | + $groupby = '', |
|
| 1565 | + $orderby = '', |
|
| 1566 | + $limit = '', |
|
| 1567 | + $having = '', |
|
| 1568 | + $serveur = '', |
|
| 1569 | + $requeter = true |
|
| 1570 | 1570 | ) { |
| 1571 | 1571 | |
| 1572 | - // version() n'est pas connu de sqlite |
|
| 1573 | - $select = str_replace('version()', 'sqlite_version()', $select); |
|
| 1572 | + // version() n'est pas connu de sqlite |
|
| 1573 | + $select = str_replace('version()', 'sqlite_version()', $select); |
|
| 1574 | 1574 | |
| 1575 | - // recomposer from |
|
| 1576 | - $from = (!is_array($from) ? $from : _sqlite_calculer_select_as($from)); |
|
| 1575 | + // recomposer from |
|
| 1576 | + $from = (!is_array($from) ? $from : _sqlite_calculer_select_as($from)); |
|
| 1577 | 1577 | |
| 1578 | - $query = |
|
| 1579 | - _sqlite_calculer_expression('SELECT', $select, ', ') |
|
| 1580 | - . _sqlite_calculer_expression('FROM', $from, ', ') |
|
| 1581 | - . _sqlite_calculer_expression('WHERE', $where) |
|
| 1582 | - . _sqlite_calculer_expression('GROUP BY', $groupby, ',') |
|
| 1583 | - . _sqlite_calculer_expression('HAVING', $having) |
|
| 1584 | - . ($orderby ? ("\nORDER BY " . _sqlite_calculer_order($orderby)) : '') |
|
| 1585 | - . ($limit ? "\nLIMIT $limit" : ''); |
|
| 1578 | + $query = |
|
| 1579 | + _sqlite_calculer_expression('SELECT', $select, ', ') |
|
| 1580 | + . _sqlite_calculer_expression('FROM', $from, ', ') |
|
| 1581 | + . _sqlite_calculer_expression('WHERE', $where) |
|
| 1582 | + . _sqlite_calculer_expression('GROUP BY', $groupby, ',') |
|
| 1583 | + . _sqlite_calculer_expression('HAVING', $having) |
|
| 1584 | + . ($orderby ? ("\nORDER BY " . _sqlite_calculer_order($orderby)) : '') |
|
| 1585 | + . ($limit ? "\nLIMIT $limit" : ''); |
|
| 1586 | 1586 | |
| 1587 | - // dans un select, on doit renvoyer la requête en cas d'erreur |
|
| 1588 | - $res = spip_sqlite_query($query, $serveur, $requeter); |
|
| 1589 | - // texte de la requete demande ? |
|
| 1590 | - if (!$requeter) { |
|
| 1591 | - return $res; |
|
| 1592 | - } |
|
| 1593 | - // erreur survenue ? |
|
| 1594 | - if ($res === false) { |
|
| 1595 | - return spip_sqlite::traduire_requete($query, $serveur); |
|
| 1596 | - } |
|
| 1587 | + // dans un select, on doit renvoyer la requête en cas d'erreur |
|
| 1588 | + $res = spip_sqlite_query($query, $serveur, $requeter); |
|
| 1589 | + // texte de la requete demande ? |
|
| 1590 | + if (!$requeter) { |
|
| 1591 | + return $res; |
|
| 1592 | + } |
|
| 1593 | + // erreur survenue ? |
|
| 1594 | + if ($res === false) { |
|
| 1595 | + return spip_sqlite::traduire_requete($query, $serveur); |
|
| 1596 | + } |
|
| 1597 | 1597 | |
| 1598 | - return $res; |
|
| 1598 | + return $res; |
|
| 1599 | 1599 | } |
| 1600 | 1600 | |
| 1601 | 1601 | |
@@ -1614,32 +1614,32 @@ discard block |
||
| 1614 | 1614 | * - False en cas d'erreur. |
| 1615 | 1615 | **/ |
| 1616 | 1616 | function spip_sqlite_selectdb($db, $serveur = '', $requeter = true) { |
| 1617 | - _sqlite_init(); |
|
| 1617 | + _sqlite_init(); |
|
| 1618 | 1618 | |
| 1619 | - // interdire la creation d'une nouvelle base, |
|
| 1620 | - // sauf si on est dans l'installation |
|
| 1621 | - if ( |
|
| 1622 | - !is_file($f = _DIR_DB . $db . '.sqlite') |
|
| 1623 | - && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL) |
|
| 1624 | - ) { |
|
| 1625 | - spip_log("Il est interdit de creer la base $db", 'sqlite.' . _LOG_HS); |
|
| 1619 | + // interdire la creation d'une nouvelle base, |
|
| 1620 | + // sauf si on est dans l'installation |
|
| 1621 | + if ( |
|
| 1622 | + !is_file($f = _DIR_DB . $db . '.sqlite') |
|
| 1623 | + && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL) |
|
| 1624 | + ) { |
|
| 1625 | + spip_log("Il est interdit de creer la base $db", 'sqlite.' . _LOG_HS); |
|
| 1626 | 1626 | |
| 1627 | - return false; |
|
| 1628 | - } |
|
| 1627 | + return false; |
|
| 1628 | + } |
|
| 1629 | 1629 | |
| 1630 | - // se connecter a la base indiquee |
|
| 1631 | - // avec les identifiants connus |
|
| 1632 | - $index = $serveur ? $serveur : 0; |
|
| 1630 | + // se connecter a la base indiquee |
|
| 1631 | + // avec les identifiants connus |
|
| 1632 | + $index = $serveur ? $serveur : 0; |
|
| 1633 | 1633 | |
| 1634 | - if ($link = spip_connect_db('', '', '', '', '@selectdb@' . $db, $serveur, '', '')) { |
|
| 1635 | - if (($db == $link['db']) && $GLOBALS['connexions'][$index] = $link) { |
|
| 1636 | - return $db; |
|
| 1637 | - } |
|
| 1638 | - } else { |
|
| 1639 | - spip_log("Impossible de selectionner la base $db", 'sqlite.' . _LOG_HS); |
|
| 1634 | + if ($link = spip_connect_db('', '', '', '', '@selectdb@' . $db, $serveur, '', '')) { |
|
| 1635 | + if (($db == $link['db']) && $GLOBALS['connexions'][$index] = $link) { |
|
| 1636 | + return $db; |
|
| 1637 | + } |
|
| 1638 | + } else { |
|
| 1639 | + spip_log("Impossible de selectionner la base $db", 'sqlite.' . _LOG_HS); |
|
| 1640 | 1640 | |
| 1641 | - return false; |
|
| 1642 | - } |
|
| 1641 | + return false; |
|
| 1642 | + } |
|
| 1643 | 1643 | } |
| 1644 | 1644 | |
| 1645 | 1645 | |
@@ -1654,8 +1654,8 @@ discard block |
||
| 1654 | 1654 | * @return void |
| 1655 | 1655 | */ |
| 1656 | 1656 | function spip_sqlite_set_charset($charset, $serveur = '', $requeter = true) { |
| 1657 | - # spip_log("Gestion charset sql a ecrire : "."SET NAMES "._q($charset), 'sqlite.'._LOG_ERREUR); |
|
| 1658 | - # return spip_sqlite_query("SET NAMES ". spip_sqlite_quote($charset), $serveur); //<-- Passe pas ! |
|
| 1657 | + # spip_log("Gestion charset sql a ecrire : "."SET NAMES "._q($charset), 'sqlite.'._LOG_ERREUR); |
|
| 1658 | + # return spip_sqlite_query("SET NAMES ". spip_sqlite_quote($charset), $serveur); //<-- Passe pas ! |
|
| 1659 | 1659 | } |
| 1660 | 1660 | |
| 1661 | 1661 | |
@@ -1673,24 +1673,24 @@ discard block |
||
| 1673 | 1673 | * Ressource à utiliser avec sql_fetch() |
| 1674 | 1674 | **/ |
| 1675 | 1675 | function spip_sqlite_showbase($match, $serveur = '', $requeter = true) { |
| 1676 | - // type est le type d'entrée : table / index / view |
|
| 1677 | - // on ne retourne que les tables (?) et non les vues... |
|
| 1678 | - # ESCAPE non supporte par les versions sqlite <3 |
|
| 1679 | - # return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name LIKE "._q($match)." ESCAPE '\'", $serveur, $requeter); |
|
| 1680 | - $match = preg_quote($match); |
|
| 1681 | - $match = str_replace('\\\_', '[[TIRETBAS]]', $match); |
|
| 1682 | - $match = str_replace('\\\%', '[[POURCENT]]', $match); |
|
| 1683 | - $match = str_replace('_', '.', $match); |
|
| 1684 | - $match = str_replace('%', '.*', $match); |
|
| 1685 | - $match = str_replace('[[TIRETBAS]]', '_', $match); |
|
| 1686 | - $match = str_replace('[[POURCENT]]', '%', $match); |
|
| 1687 | - $match = "^$match$"; |
|
| 1688 | - |
|
| 1689 | - return spip_sqlite_query( |
|
| 1690 | - "SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP " . _q($match), |
|
| 1691 | - $serveur, |
|
| 1692 | - $requeter |
|
| 1693 | - ); |
|
| 1676 | + // type est le type d'entrée : table / index / view |
|
| 1677 | + // on ne retourne que les tables (?) et non les vues... |
|
| 1678 | + # ESCAPE non supporte par les versions sqlite <3 |
|
| 1679 | + # return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name LIKE "._q($match)." ESCAPE '\'", $serveur, $requeter); |
|
| 1680 | + $match = preg_quote($match); |
|
| 1681 | + $match = str_replace('\\\_', '[[TIRETBAS]]', $match); |
|
| 1682 | + $match = str_replace('\\\%', '[[POURCENT]]', $match); |
|
| 1683 | + $match = str_replace('_', '.', $match); |
|
| 1684 | + $match = str_replace('%', '.*', $match); |
|
| 1685 | + $match = str_replace('[[TIRETBAS]]', '_', $match); |
|
| 1686 | + $match = str_replace('[[POURCENT]]', '%', $match); |
|
| 1687 | + $match = "^$match$"; |
|
| 1688 | + |
|
| 1689 | + return spip_sqlite_query( |
|
| 1690 | + "SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP " . _q($match), |
|
| 1691 | + $serveur, |
|
| 1692 | + $requeter |
|
| 1693 | + ); |
|
| 1694 | 1694 | } |
| 1695 | 1695 | |
| 1696 | 1696 | /** |
@@ -1708,19 +1708,19 @@ discard block |
||
| 1708 | 1708 | * - string : requete sql, si $requeter = true |
| 1709 | 1709 | **/ |
| 1710 | 1710 | function spip_sqlite_table_exists(string $table, $serveur = '', $requeter = true) { |
| 1711 | - $r = spip_sqlite_query( |
|
| 1712 | - 'SELECT name FROM sqlite_master WHERE' |
|
| 1713 | - . ' type=\'table\'' |
|
| 1714 | - . ' AND name=' . spip_sqlite_quote($table, 'string') |
|
| 1715 | - . ' AND name NOT LIKE \'sqlite_%\'', |
|
| 1716 | - $serveur, |
|
| 1717 | - $requeter |
|
| 1718 | - ); |
|
| 1719 | - if (!$requeter) { |
|
| 1720 | - return $r; |
|
| 1721 | - } |
|
| 1722 | - $res = spip_sqlite_fetch($r); |
|
| 1723 | - return (bool) $res; |
|
| 1711 | + $r = spip_sqlite_query( |
|
| 1712 | + 'SELECT name FROM sqlite_master WHERE' |
|
| 1713 | + . ' type=\'table\'' |
|
| 1714 | + . ' AND name=' . spip_sqlite_quote($table, 'string') |
|
| 1715 | + . ' AND name NOT LIKE \'sqlite_%\'', |
|
| 1716 | + $serveur, |
|
| 1717 | + $requeter |
|
| 1718 | + ); |
|
| 1719 | + if (!$requeter) { |
|
| 1720 | + return $r; |
|
| 1721 | + } |
|
| 1722 | + $res = spip_sqlite_fetch($r); |
|
| 1723 | + return (bool) $res; |
|
| 1724 | 1724 | } |
| 1725 | 1725 | |
| 1726 | 1726 | define('_SQLITE_RE_SHOW_TABLE', '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/'); |
@@ -1743,129 +1743,129 @@ discard block |
||
| 1743 | 1743 | * - array description de la table sinon |
| 1744 | 1744 | */ |
| 1745 | 1745 | function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true) { |
| 1746 | - $query = |
|
| 1747 | - 'SELECT sql, type FROM' |
|
| 1748 | - . ' (SELECT * FROM sqlite_master UNION ALL' |
|
| 1749 | - . ' SELECT * FROM sqlite_temp_master)' |
|
| 1750 | - . " WHERE tbl_name LIKE '$nom_table'" |
|
| 1751 | - . " AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'" |
|
| 1752 | - . ' ORDER BY substr(type,2,1), name'; |
|
| 1753 | - |
|
| 1754 | - $a = spip_sqlite_query($query, $serveur, $requeter); |
|
| 1755 | - if (!$a) { |
|
| 1756 | - return ''; |
|
| 1757 | - } |
|
| 1758 | - if (!$requeter) { |
|
| 1759 | - return $a; |
|
| 1760 | - } |
|
| 1761 | - if (!($a = spip_sqlite_fetch($a, null, $serveur))) { |
|
| 1762 | - return ''; |
|
| 1763 | - } |
|
| 1764 | - $vue = ($a['type'] == 'view'); // table | vue |
|
| 1765 | - |
|
| 1766 | - // c'est une table |
|
| 1767 | - // il faut parser le create |
|
| 1768 | - if (!$vue) { |
|
| 1769 | - if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)) { |
|
| 1770 | - return ''; |
|
| 1771 | - } else { |
|
| 1772 | - $desc = $r[1]; |
|
| 1773 | - // extraction d'une KEY éventuelle en prenant garde de ne pas |
|
| 1774 | - // relever un champ dont le nom contient KEY (ex. ID_WHISKEY) |
|
| 1775 | - if (preg_match('/^(.*?),([^,]*\sKEY[ (].*)$/s', $desc, $r)) { |
|
| 1776 | - $namedkeys = $r[2]; |
|
| 1777 | - $desc = $r[1]; |
|
| 1778 | - } else { |
|
| 1779 | - $namedkeys = ''; |
|
| 1780 | - } |
|
| 1781 | - |
|
| 1782 | - $fields = []; |
|
| 1783 | - $keys = []; |
|
| 1784 | - |
|
| 1785 | - // enlever les contenus des valeurs DEFAULT 'xxx' qui pourraient perturber |
|
| 1786 | - // par exemple s'il contiennent une virgule. |
|
| 1787 | - // /!\ cela peut aussi echapper le nom des champs si la table a eu des operations avec SQLite Manager ! |
|
| 1788 | - list($desc, $echaps) = query_echappe_textes($desc); |
|
| 1789 | - |
|
| 1790 | - // separer toutes les descriptions de champs, separes par des virgules |
|
| 1791 | - # /!\ explode peut exploser aussi DECIMAL(10,2) ! |
|
| 1792 | - $k_precedent = null; |
|
| 1793 | - foreach (explode(',', $desc) as $v) { |
|
| 1794 | - preg_match('/^\s*([^\s]+)\s+(.*)/', $v, $r); |
|
| 1795 | - // Les cles de champs peuvent etre entourees |
|
| 1796 | - // de guillements doubles " , simples ', graves ` ou de crochets [ ], ou rien. |
|
| 1797 | - // http://www.sqlite.org/lang_keywords.html |
|
| 1798 | - $k = strtolower(query_reinjecte_textes($r[1], $echaps)); // champ, "champ", [champ]... |
|
| 1799 | - if ($char = strpbrk($k[0], '\'"[`')) { |
|
| 1800 | - $k = trim($k, $char); |
|
| 1801 | - if ($char == '[') { |
|
| 1802 | - $k = rtrim($k, ']'); |
|
| 1803 | - } |
|
| 1804 | - } |
|
| 1805 | - $def = query_reinjecte_textes($r[2], $echaps); // valeur du champ |
|
| 1806 | - |
|
| 1807 | - // rustine pour DECIMAL(10,2) |
|
| 1808 | - // s'il y a une parenthèse fermante dans la clé |
|
| 1809 | - // ou dans la définition sans qu'il n'y ait une ouverture avant |
|
| 1810 | - if (false !== strpos($k, ')') or preg_match('/^[^\(]*\)/', $def)) { |
|
| 1811 | - $fields[$k_precedent] .= ',' . $k . ' ' . $def; |
|
| 1812 | - continue; |
|
| 1813 | - } |
|
| 1814 | - |
|
| 1815 | - // la primary key peut etre dans une des descriptions de champs |
|
| 1816 | - // et non en fin de table, cas encore decouvert avec Sqlite Manager |
|
| 1817 | - if (stripos($r[2], 'PRIMARY KEY') !== false) { |
|
| 1818 | - $keys['PRIMARY KEY'] = $k; |
|
| 1819 | - } |
|
| 1820 | - |
|
| 1821 | - $fields[$k] = $def; |
|
| 1822 | - $k_precedent = $k; |
|
| 1823 | - } |
|
| 1824 | - // key inclues dans la requete |
|
| 1825 | - foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) { |
|
| 1826 | - if (preg_match('/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/', $v, $r)) { |
|
| 1827 | - $k = str_replace('`', '', trim($r[1])); |
|
| 1828 | - $t = trim(strtolower(str_replace('`', '', $r[2])), '"'); |
|
| 1829 | - if ($k && !isset($keys[$k])) { |
|
| 1830 | - $keys[$k] = $t; |
|
| 1831 | - } else { |
|
| 1832 | - $keys[] = $t; |
|
| 1833 | - } |
|
| 1834 | - } |
|
| 1835 | - } |
|
| 1836 | - // sinon ajouter les key index |
|
| 1837 | - $query = |
|
| 1838 | - 'SELECT name,sql FROM' |
|
| 1839 | - . ' (SELECT * FROM sqlite_master UNION ALL' |
|
| 1840 | - . ' SELECT * FROM sqlite_temp_master)' |
|
| 1841 | - . " WHERE tbl_name LIKE '$nom_table'" |
|
| 1842 | - . " AND type='index' AND name NOT LIKE 'sqlite_%'" |
|
| 1843 | - . 'ORDER BY substr(type,2,1), name'; |
|
| 1844 | - $a = spip_sqlite_query($query, $serveur, $requeter); |
|
| 1845 | - while ($r = spip_sqlite_fetch($a, null, $serveur)) { |
|
| 1846 | - $key = str_replace($nom_table . '_', '', $r['name']); // enlever le nom de la table ajoute a l'index |
|
| 1847 | - $keytype = 'KEY'; |
|
| 1848 | - if (strpos($r['sql'], 'UNIQUE INDEX') !== false) { |
|
| 1849 | - $keytype = 'UNIQUE KEY'; |
|
| 1850 | - } |
|
| 1851 | - $colonnes = preg_replace(',.*\((.*)\).*,', '$1', $r['sql']); |
|
| 1852 | - $keys[$keytype . ' ' . $key] = $colonnes; |
|
| 1853 | - } |
|
| 1854 | - } |
|
| 1855 | - } // c'est une vue, on liste les champs disponibles simplement |
|
| 1856 | - else { |
|
| 1857 | - if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)) { // limit 1 |
|
| 1858 | - $fields = []; |
|
| 1859 | - foreach ($res as $c => $v) { |
|
| 1860 | - $fields[$c] = ''; |
|
| 1861 | - } |
|
| 1862 | - $keys = []; |
|
| 1863 | - } else { |
|
| 1864 | - return ''; |
|
| 1865 | - } |
|
| 1866 | - } |
|
| 1867 | - |
|
| 1868 | - return ['field' => $fields, 'key' => $keys]; |
|
| 1746 | + $query = |
|
| 1747 | + 'SELECT sql, type FROM' |
|
| 1748 | + . ' (SELECT * FROM sqlite_master UNION ALL' |
|
| 1749 | + . ' SELECT * FROM sqlite_temp_master)' |
|
| 1750 | + . " WHERE tbl_name LIKE '$nom_table'" |
|
| 1751 | + . " AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'" |
|
| 1752 | + . ' ORDER BY substr(type,2,1), name'; |
|
| 1753 | + |
|
| 1754 | + $a = spip_sqlite_query($query, $serveur, $requeter); |
|
| 1755 | + if (!$a) { |
|
| 1756 | + return ''; |
|
| 1757 | + } |
|
| 1758 | + if (!$requeter) { |
|
| 1759 | + return $a; |
|
| 1760 | + } |
|
| 1761 | + if (!($a = spip_sqlite_fetch($a, null, $serveur))) { |
|
| 1762 | + return ''; |
|
| 1763 | + } |
|
| 1764 | + $vue = ($a['type'] == 'view'); // table | vue |
|
| 1765 | + |
|
| 1766 | + // c'est une table |
|
| 1767 | + // il faut parser le create |
|
| 1768 | + if (!$vue) { |
|
| 1769 | + if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)) { |
|
| 1770 | + return ''; |
|
| 1771 | + } else { |
|
| 1772 | + $desc = $r[1]; |
|
| 1773 | + // extraction d'une KEY éventuelle en prenant garde de ne pas |
|
| 1774 | + // relever un champ dont le nom contient KEY (ex. ID_WHISKEY) |
|
| 1775 | + if (preg_match('/^(.*?),([^,]*\sKEY[ (].*)$/s', $desc, $r)) { |
|
| 1776 | + $namedkeys = $r[2]; |
|
| 1777 | + $desc = $r[1]; |
|
| 1778 | + } else { |
|
| 1779 | + $namedkeys = ''; |
|
| 1780 | + } |
|
| 1781 | + |
|
| 1782 | + $fields = []; |
|
| 1783 | + $keys = []; |
|
| 1784 | + |
|
| 1785 | + // enlever les contenus des valeurs DEFAULT 'xxx' qui pourraient perturber |
|
| 1786 | + // par exemple s'il contiennent une virgule. |
|
| 1787 | + // /!\ cela peut aussi echapper le nom des champs si la table a eu des operations avec SQLite Manager ! |
|
| 1788 | + list($desc, $echaps) = query_echappe_textes($desc); |
|
| 1789 | + |
|
| 1790 | + // separer toutes les descriptions de champs, separes par des virgules |
|
| 1791 | + # /!\ explode peut exploser aussi DECIMAL(10,2) ! |
|
| 1792 | + $k_precedent = null; |
|
| 1793 | + foreach (explode(',', $desc) as $v) { |
|
| 1794 | + preg_match('/^\s*([^\s]+)\s+(.*)/', $v, $r); |
|
| 1795 | + // Les cles de champs peuvent etre entourees |
|
| 1796 | + // de guillements doubles " , simples ', graves ` ou de crochets [ ], ou rien. |
|
| 1797 | + // http://www.sqlite.org/lang_keywords.html |
|
| 1798 | + $k = strtolower(query_reinjecte_textes($r[1], $echaps)); // champ, "champ", [champ]... |
|
| 1799 | + if ($char = strpbrk($k[0], '\'"[`')) { |
|
| 1800 | + $k = trim($k, $char); |
|
| 1801 | + if ($char == '[') { |
|
| 1802 | + $k = rtrim($k, ']'); |
|
| 1803 | + } |
|
| 1804 | + } |
|
| 1805 | + $def = query_reinjecte_textes($r[2], $echaps); // valeur du champ |
|
| 1806 | + |
|
| 1807 | + // rustine pour DECIMAL(10,2) |
|
| 1808 | + // s'il y a une parenthèse fermante dans la clé |
|
| 1809 | + // ou dans la définition sans qu'il n'y ait une ouverture avant |
|
| 1810 | + if (false !== strpos($k, ')') or preg_match('/^[^\(]*\)/', $def)) { |
|
| 1811 | + $fields[$k_precedent] .= ',' . $k . ' ' . $def; |
|
| 1812 | + continue; |
|
| 1813 | + } |
|
| 1814 | + |
|
| 1815 | + // la primary key peut etre dans une des descriptions de champs |
|
| 1816 | + // et non en fin de table, cas encore decouvert avec Sqlite Manager |
|
| 1817 | + if (stripos($r[2], 'PRIMARY KEY') !== false) { |
|
| 1818 | + $keys['PRIMARY KEY'] = $k; |
|
| 1819 | + } |
|
| 1820 | + |
|
| 1821 | + $fields[$k] = $def; |
|
| 1822 | + $k_precedent = $k; |
|
| 1823 | + } |
|
| 1824 | + // key inclues dans la requete |
|
| 1825 | + foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) { |
|
| 1826 | + if (preg_match('/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/', $v, $r)) { |
|
| 1827 | + $k = str_replace('`', '', trim($r[1])); |
|
| 1828 | + $t = trim(strtolower(str_replace('`', '', $r[2])), '"'); |
|
| 1829 | + if ($k && !isset($keys[$k])) { |
|
| 1830 | + $keys[$k] = $t; |
|
| 1831 | + } else { |
|
| 1832 | + $keys[] = $t; |
|
| 1833 | + } |
|
| 1834 | + } |
|
| 1835 | + } |
|
| 1836 | + // sinon ajouter les key index |
|
| 1837 | + $query = |
|
| 1838 | + 'SELECT name,sql FROM' |
|
| 1839 | + . ' (SELECT * FROM sqlite_master UNION ALL' |
|
| 1840 | + . ' SELECT * FROM sqlite_temp_master)' |
|
| 1841 | + . " WHERE tbl_name LIKE '$nom_table'" |
|
| 1842 | + . " AND type='index' AND name NOT LIKE 'sqlite_%'" |
|
| 1843 | + . 'ORDER BY substr(type,2,1), name'; |
|
| 1844 | + $a = spip_sqlite_query($query, $serveur, $requeter); |
|
| 1845 | + while ($r = spip_sqlite_fetch($a, null, $serveur)) { |
|
| 1846 | + $key = str_replace($nom_table . '_', '', $r['name']); // enlever le nom de la table ajoute a l'index |
|
| 1847 | + $keytype = 'KEY'; |
|
| 1848 | + if (strpos($r['sql'], 'UNIQUE INDEX') !== false) { |
|
| 1849 | + $keytype = 'UNIQUE KEY'; |
|
| 1850 | + } |
|
| 1851 | + $colonnes = preg_replace(',.*\((.*)\).*,', '$1', $r['sql']); |
|
| 1852 | + $keys[$keytype . ' ' . $key] = $colonnes; |
|
| 1853 | + } |
|
| 1854 | + } |
|
| 1855 | + } // c'est une vue, on liste les champs disponibles simplement |
|
| 1856 | + else { |
|
| 1857 | + if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)) { // limit 1 |
|
| 1858 | + $fields = []; |
|
| 1859 | + foreach ($res as $c => $v) { |
|
| 1860 | + $fields[$c] = ''; |
|
| 1861 | + } |
|
| 1862 | + $keys = []; |
|
| 1863 | + } else { |
|
| 1864 | + return ''; |
|
| 1865 | + } |
|
| 1866 | + } |
|
| 1867 | + |
|
| 1868 | + return ['field' => $fields, 'key' => $keys]; |
|
| 1869 | 1869 | } |
| 1870 | 1870 | |
| 1871 | 1871 | |
@@ -1891,22 +1891,22 @@ discard block |
||
| 1891 | 1891 | * - array Tableau décrivant la requête et son temps d'exécution si var_profile est actif |
| 1892 | 1892 | */ |
| 1893 | 1893 | function spip_sqlite_update($table, $champs, $where = '', $desc = '', $serveur = '', $requeter = true) { |
| 1894 | - // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1895 | - $champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur); |
|
| 1894 | + // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1895 | + $champs = _sqlite_ajouter_champs_timestamp($table, $champs, $desc, $serveur); |
|
| 1896 | 1896 | |
| 1897 | - $set = []; |
|
| 1898 | - foreach ($champs as $champ => $val) { |
|
| 1899 | - $set[] = $champ . "=$val"; |
|
| 1900 | - } |
|
| 1901 | - if (!empty($set)) { |
|
| 1902 | - return spip_sqlite_query( |
|
| 1903 | - _sqlite_calculer_expression('UPDATE', $table, ',') |
|
| 1904 | - . _sqlite_calculer_expression('SET', $set, ',') |
|
| 1905 | - . _sqlite_calculer_expression('WHERE', $where), |
|
| 1906 | - $serveur, |
|
| 1907 | - $requeter |
|
| 1908 | - ); |
|
| 1909 | - } |
|
| 1897 | + $set = []; |
|
| 1898 | + foreach ($champs as $champ => $val) { |
|
| 1899 | + $set[] = $champ . "=$val"; |
|
| 1900 | + } |
|
| 1901 | + if (!empty($set)) { |
|
| 1902 | + return spip_sqlite_query( |
|
| 1903 | + _sqlite_calculer_expression('UPDATE', $table, ',') |
|
| 1904 | + . _sqlite_calculer_expression('SET', $set, ',') |
|
| 1905 | + . _sqlite_calculer_expression('WHERE', $where), |
|
| 1906 | + $serveur, |
|
| 1907 | + $requeter |
|
| 1908 | + ); |
|
| 1909 | + } |
|
| 1910 | 1910 | } |
| 1911 | 1911 | |
| 1912 | 1912 | |
@@ -1936,38 +1936,38 @@ discard block |
||
| 1936 | 1936 | */ |
| 1937 | 1937 | function spip_sqlite_updateq($table, $champs, $where = '', $desc = [], $serveur = '', $requeter = true) { |
| 1938 | 1938 | |
| 1939 | - if (!$champs) { |
|
| 1940 | - return; |
|
| 1941 | - } |
|
| 1942 | - if (!$desc) { |
|
| 1943 | - $desc = description_table($table, $serveur); |
|
| 1944 | - } |
|
| 1945 | - if (!$desc) { |
|
| 1946 | - die("$table insertion sans description"); |
|
| 1947 | - } |
|
| 1948 | - $fields = $desc['field']; |
|
| 1949 | - |
|
| 1950 | - $set = []; |
|
| 1951 | - foreach ($champs as $champ => $val) { |
|
| 1952 | - $set[$champ] = $champ . '=' . _sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : ''); |
|
| 1953 | - } |
|
| 1954 | - |
|
| 1955 | - // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1956 | - // attention ils sont deja quotes |
|
| 1957 | - $maj = _sqlite_ajouter_champs_timestamp($table, [], $desc, $serveur); |
|
| 1958 | - foreach ($maj as $champ => $val) { |
|
| 1959 | - if (!isset($set[$champ])) { |
|
| 1960 | - $set[$champ] = $champ . '=' . $val; |
|
| 1961 | - } |
|
| 1962 | - } |
|
| 1963 | - |
|
| 1964 | - return spip_sqlite_query( |
|
| 1965 | - _sqlite_calculer_expression('UPDATE', $table, ',') |
|
| 1966 | - . _sqlite_calculer_expression('SET', $set, ',') |
|
| 1967 | - . _sqlite_calculer_expression('WHERE', $where), |
|
| 1968 | - $serveur, |
|
| 1969 | - $requeter |
|
| 1970 | - ); |
|
| 1939 | + if (!$champs) { |
|
| 1940 | + return; |
|
| 1941 | + } |
|
| 1942 | + if (!$desc) { |
|
| 1943 | + $desc = description_table($table, $serveur); |
|
| 1944 | + } |
|
| 1945 | + if (!$desc) { |
|
| 1946 | + die("$table insertion sans description"); |
|
| 1947 | + } |
|
| 1948 | + $fields = $desc['field']; |
|
| 1949 | + |
|
| 1950 | + $set = []; |
|
| 1951 | + foreach ($champs as $champ => $val) { |
|
| 1952 | + $set[$champ] = $champ . '=' . _sqlite_calculer_cite($val, isset($fields[$champ]) ? $fields[$champ] : ''); |
|
| 1953 | + } |
|
| 1954 | + |
|
| 1955 | + // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci |
|
| 1956 | + // attention ils sont deja quotes |
|
| 1957 | + $maj = _sqlite_ajouter_champs_timestamp($table, [], $desc, $serveur); |
|
| 1958 | + foreach ($maj as $champ => $val) { |
|
| 1959 | + if (!isset($set[$champ])) { |
|
| 1960 | + $set[$champ] = $champ . '=' . $val; |
|
| 1961 | + } |
|
| 1962 | + } |
|
| 1963 | + |
|
| 1964 | + return spip_sqlite_query( |
|
| 1965 | + _sqlite_calculer_expression('UPDATE', $table, ',') |
|
| 1966 | + . _sqlite_calculer_expression('SET', $set, ',') |
|
| 1967 | + . _sqlite_calculer_expression('WHERE', $where), |
|
| 1968 | + $serveur, |
|
| 1969 | + $requeter |
|
| 1970 | + ); |
|
| 1971 | 1971 | } |
| 1972 | 1972 | |
| 1973 | 1973 | |
@@ -1985,17 +1985,17 @@ discard block |
||
| 1985 | 1985 | * @return void |
| 1986 | 1986 | */ |
| 1987 | 1987 | function _sqlite_init() { |
| 1988 | - if (!defined('_DIR_DB')) { |
|
| 1989 | - define('_DIR_DB', _DIR_ETC . 'bases/'); |
|
| 1990 | - } |
|
| 1991 | - if (!defined('_SQLITE_CHMOD')) { |
|
| 1992 | - define('_SQLITE_CHMOD', _SPIP_CHMOD); |
|
| 1993 | - } |
|
| 1988 | + if (!defined('_DIR_DB')) { |
|
| 1989 | + define('_DIR_DB', _DIR_ETC . 'bases/'); |
|
| 1990 | + } |
|
| 1991 | + if (!defined('_SQLITE_CHMOD')) { |
|
| 1992 | + define('_SQLITE_CHMOD', _SPIP_CHMOD); |
|
| 1993 | + } |
|
| 1994 | 1994 | |
| 1995 | - if (!is_dir($d = _DIR_DB)) { |
|
| 1996 | - include_spip('inc/flock'); |
|
| 1997 | - sous_repertoire($d); |
|
| 1998 | - } |
|
| 1995 | + if (!is_dir($d = _DIR_DB)) { |
|
| 1996 | + include_spip('inc/flock'); |
|
| 1997 | + sous_repertoire($d); |
|
| 1998 | + } |
|
| 1999 | 1999 | } |
| 2000 | 2000 | |
| 2001 | 2001 | |
@@ -2009,20 +2009,20 @@ discard block |
||
| 2009 | 2009 | * @return bool|int |
| 2010 | 2010 | */ |
| 2011 | 2011 | function _sqlite_is_version($version = '', $link = '', $serveur = '', $requeter = true) { |
| 2012 | - if ($link === '') { |
|
| 2013 | - $link = _sqlite_link($serveur); |
|
| 2014 | - } |
|
| 2015 | - if (!$link) { |
|
| 2016 | - return false; |
|
| 2017 | - } |
|
| 2012 | + if ($link === '') { |
|
| 2013 | + $link = _sqlite_link($serveur); |
|
| 2014 | + } |
|
| 2015 | + if (!$link) { |
|
| 2016 | + return false; |
|
| 2017 | + } |
|
| 2018 | 2018 | |
| 2019 | - $v = 3; |
|
| 2019 | + $v = 3; |
|
| 2020 | 2020 | |
| 2021 | - if (!$version) { |
|
| 2022 | - return $v; |
|
| 2023 | - } |
|
| 2021 | + if (!$version) { |
|
| 2022 | + return $v; |
|
| 2023 | + } |
|
| 2024 | 2024 | |
| 2025 | - return ($version == $v); |
|
| 2025 | + return ($version == $v); |
|
| 2026 | 2026 | } |
| 2027 | 2027 | |
| 2028 | 2028 | |
@@ -2033,9 +2033,9 @@ discard block |
||
| 2033 | 2033 | * @return PDO Information de connexion pour SQLite |
| 2034 | 2034 | */ |
| 2035 | 2035 | function _sqlite_link($serveur = '') { |
| 2036 | - $link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link']; |
|
| 2036 | + $link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link']; |
|
| 2037 | 2037 | |
| 2038 | - return $link; |
|
| 2038 | + return $link; |
|
| 2039 | 2039 | } |
| 2040 | 2040 | |
| 2041 | 2041 | |
@@ -2050,52 +2050,52 @@ discard block |
||
| 2050 | 2050 | * @return string|number Texte ou nombre échappé |
| 2051 | 2051 | */ |
| 2052 | 2052 | function _sqlite_calculer_cite($v, $type) { |
| 2053 | - if ($type) { |
|
| 2054 | - if ( |
|
| 2055 | - is_null($v) |
|
| 2056 | - and stripos($type, 'NOT NULL') === false |
|
| 2057 | - ) { |
|
| 2058 | - return 'NULL'; |
|
| 2059 | - } // null php se traduit en NULL SQL |
|
| 2060 | - |
|
| 2061 | - if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) { |
|
| 2062 | - return $v; |
|
| 2063 | - } |
|
| 2064 | - if (sql_test_int($type)) { |
|
| 2065 | - if (is_numeric($v)) { |
|
| 2066 | - return $v; |
|
| 2067 | - } elseif (ctype_xdigit(substr($v, 2)) and strncmp($v, '0x', 2) == 0) { |
|
| 2068 | - return hexdec(substr($v, 2)); |
|
| 2069 | - } else { |
|
| 2070 | - return intval($v); |
|
| 2071 | - } |
|
| 2072 | - } |
|
| 2073 | - } else { |
|
| 2074 | - // si on ne connait pas le type on le deduit de $v autant que possible |
|
| 2075 | - if (is_bool($v)) { |
|
| 2076 | - return strval(intval($v)); |
|
| 2077 | - } |
|
| 2078 | - elseif (is_numeric($v)) { |
|
| 2079 | - return strval($v); |
|
| 2080 | - } |
|
| 2081 | - } |
|
| 2082 | - |
|
| 2083 | - // trouver un link sqlite pour faire l'echappement |
|
| 2084 | - foreach ($GLOBALS['connexions'] as $s) { |
|
| 2085 | - if ( |
|
| 2086 | - $l = $s['link'] |
|
| 2087 | - and is_object($l) |
|
| 2088 | - and $l instanceof \PDO |
|
| 2089 | - and $l->getAttribute(\PDO::ATTR_DRIVER_NAME) === 'sqlite' |
|
| 2090 | - ) { |
|
| 2091 | - return $l->quote($v); |
|
| 2092 | - } |
|
| 2093 | - } |
|
| 2094 | - |
|
| 2095 | - // echapper les ' en '' |
|
| 2096 | - spip_log('Pas de methode ->quote pour echapper', 'sqlite.' . _LOG_INFO_IMPORTANTE); |
|
| 2097 | - |
|
| 2098 | - return ("'" . str_replace("'", "''", $v) . "'"); |
|
| 2053 | + if ($type) { |
|
| 2054 | + if ( |
|
| 2055 | + is_null($v) |
|
| 2056 | + and stripos($type, 'NOT NULL') === false |
|
| 2057 | + ) { |
|
| 2058 | + return 'NULL'; |
|
| 2059 | + } // null php se traduit en NULL SQL |
|
| 2060 | + |
|
| 2061 | + if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) { |
|
| 2062 | + return $v; |
|
| 2063 | + } |
|
| 2064 | + if (sql_test_int($type)) { |
|
| 2065 | + if (is_numeric($v)) { |
|
| 2066 | + return $v; |
|
| 2067 | + } elseif (ctype_xdigit(substr($v, 2)) and strncmp($v, '0x', 2) == 0) { |
|
| 2068 | + return hexdec(substr($v, 2)); |
|
| 2069 | + } else { |
|
| 2070 | + return intval($v); |
|
| 2071 | + } |
|
| 2072 | + } |
|
| 2073 | + } else { |
|
| 2074 | + // si on ne connait pas le type on le deduit de $v autant que possible |
|
| 2075 | + if (is_bool($v)) { |
|
| 2076 | + return strval(intval($v)); |
|
| 2077 | + } |
|
| 2078 | + elseif (is_numeric($v)) { |
|
| 2079 | + return strval($v); |
|
| 2080 | + } |
|
| 2081 | + } |
|
| 2082 | + |
|
| 2083 | + // trouver un link sqlite pour faire l'echappement |
|
| 2084 | + foreach ($GLOBALS['connexions'] as $s) { |
|
| 2085 | + if ( |
|
| 2086 | + $l = $s['link'] |
|
| 2087 | + and is_object($l) |
|
| 2088 | + and $l instanceof \PDO |
|
| 2089 | + and $l->getAttribute(\PDO::ATTR_DRIVER_NAME) === 'sqlite' |
|
| 2090 | + ) { |
|
| 2091 | + return $l->quote($v); |
|
| 2092 | + } |
|
| 2093 | + } |
|
| 2094 | + |
|
| 2095 | + // echapper les ' en '' |
|
| 2096 | + spip_log('Pas de methode ->quote pour echapper', 'sqlite.' . _LOG_INFO_IMPORTANTE); |
|
| 2097 | + |
|
| 2098 | + return ("'" . str_replace("'", "''", $v) . "'"); |
|
| 2099 | 2099 | } |
| 2100 | 2100 | |
| 2101 | 2101 | |
@@ -2111,21 +2111,21 @@ discard block |
||
| 2111 | 2111 | * @return string Texte de l'expression, une partie donc, du texte la requête. |
| 2112 | 2112 | */ |
| 2113 | 2113 | function _sqlite_calculer_expression($expression, $v, $join = 'AND') { |
| 2114 | - if (empty($v)) { |
|
| 2115 | - return ''; |
|
| 2116 | - } |
|
| 2114 | + if (empty($v)) { |
|
| 2115 | + return ''; |
|
| 2116 | + } |
|
| 2117 | 2117 | |
| 2118 | - $exp = "\n$expression "; |
|
| 2118 | + $exp = "\n$expression "; |
|
| 2119 | 2119 | |
| 2120 | - if (!is_array($v)) { |
|
| 2121 | - return $exp . $v; |
|
| 2122 | - } else { |
|
| 2123 | - if (strtoupper($join) === 'AND') { |
|
| 2124 | - return $exp . join("\n\t$join ", array_map('_sqlite_calculer_where', $v)); |
|
| 2125 | - } else { |
|
| 2126 | - return $exp . join($join, $v); |
|
| 2127 | - } |
|
| 2128 | - } |
|
| 2120 | + if (!is_array($v)) { |
|
| 2121 | + return $exp . $v; |
|
| 2122 | + } else { |
|
| 2123 | + if (strtoupper($join) === 'AND') { |
|
| 2124 | + return $exp . join("\n\t$join ", array_map('_sqlite_calculer_where', $v)); |
|
| 2125 | + } else { |
|
| 2126 | + return $exp . join($join, $v); |
|
| 2127 | + } |
|
| 2128 | + } |
|
| 2129 | 2129 | } |
| 2130 | 2130 | |
| 2131 | 2131 | |
@@ -2141,7 +2141,7 @@ discard block |
||
| 2141 | 2141 | * @return string Texte du orderby préparé |
| 2142 | 2142 | */ |
| 2143 | 2143 | function _sqlite_calculer_order($orderby) { |
| 2144 | - return (is_array($orderby)) ? join(', ', $orderby) : $orderby; |
|
| 2144 | + return (is_array($orderby)) ? join(', ', $orderby) : $orderby; |
|
| 2145 | 2145 | } |
| 2146 | 2146 | |
| 2147 | 2147 | |
@@ -2152,26 +2152,26 @@ discard block |
||
| 2152 | 2152 | * @return string Sélection de colonnes pour une clause SELECT |
| 2153 | 2153 | */ |
| 2154 | 2154 | function _sqlite_calculer_select_as($args) { |
| 2155 | - $res = ''; |
|
| 2156 | - foreach ($args as $k => $v) { |
|
| 2157 | - if (substr($k, -1) == '@') { |
|
| 2158 | - // c'est une jointure qui se refere au from precedent |
|
| 2159 | - // pas de virgule |
|
| 2160 | - $res .= ' ' . $v; |
|
| 2161 | - } else { |
|
| 2162 | - if (!is_numeric($k)) { |
|
| 2163 | - $p = strpos($v, ' '); |
|
| 2164 | - if ($p) { |
|
| 2165 | - $v = substr($v, 0, $p) . " AS '$k'" . substr($v, $p); |
|
| 2166 | - } else { |
|
| 2167 | - $v .= " AS '$k'"; |
|
| 2168 | - } |
|
| 2169 | - } |
|
| 2170 | - $res .= ', ' . $v; |
|
| 2171 | - } |
|
| 2172 | - } |
|
| 2173 | - |
|
| 2174 | - return substr($res, 2); |
|
| 2155 | + $res = ''; |
|
| 2156 | + foreach ($args as $k => $v) { |
|
| 2157 | + if (substr($k, -1) == '@') { |
|
| 2158 | + // c'est une jointure qui se refere au from precedent |
|
| 2159 | + // pas de virgule |
|
| 2160 | + $res .= ' ' . $v; |
|
| 2161 | + } else { |
|
| 2162 | + if (!is_numeric($k)) { |
|
| 2163 | + $p = strpos($v, ' '); |
|
| 2164 | + if ($p) { |
|
| 2165 | + $v = substr($v, 0, $p) . " AS '$k'" . substr($v, $p); |
|
| 2166 | + } else { |
|
| 2167 | + $v .= " AS '$k'"; |
|
| 2168 | + } |
|
| 2169 | + } |
|
| 2170 | + $res .= ', ' . $v; |
|
| 2171 | + } |
|
| 2172 | + } |
|
| 2173 | + |
|
| 2174 | + return substr($res, 2); |
|
| 2175 | 2175 | } |
| 2176 | 2176 | |
| 2177 | 2177 | |
@@ -2194,26 +2194,26 @@ discard block |
||
| 2194 | 2194 | * Contrainte pour clause WHERE |
| 2195 | 2195 | */ |
| 2196 | 2196 | function _sqlite_calculer_where($v) { |
| 2197 | - if (!is_array($v)) { |
|
| 2198 | - return $v; |
|
| 2199 | - } |
|
| 2200 | - |
|
| 2201 | - $op = array_shift($v); |
|
| 2202 | - if (!($n = count($v))) { |
|
| 2203 | - return $op; |
|
| 2204 | - } else { |
|
| 2205 | - $arg = _sqlite_calculer_where(array_shift($v)); |
|
| 2206 | - if ($n == 1) { |
|
| 2207 | - return "$op($arg)"; |
|
| 2208 | - } else { |
|
| 2209 | - $arg2 = _sqlite_calculer_where(array_shift($v)); |
|
| 2210 | - if ($n == 2) { |
|
| 2211 | - return "($arg $op $arg2)"; |
|
| 2212 | - } else { |
|
| 2213 | - return "($arg $op ($arg2) : $v[0])"; |
|
| 2214 | - } |
|
| 2215 | - } |
|
| 2216 | - } |
|
| 2197 | + if (!is_array($v)) { |
|
| 2198 | + return $v; |
|
| 2199 | + } |
|
| 2200 | + |
|
| 2201 | + $op = array_shift($v); |
|
| 2202 | + if (!($n = count($v))) { |
|
| 2203 | + return $op; |
|
| 2204 | + } else { |
|
| 2205 | + $arg = _sqlite_calculer_where(array_shift($v)); |
|
| 2206 | + if ($n == 1) { |
|
| 2207 | + return "$op($arg)"; |
|
| 2208 | + } else { |
|
| 2209 | + $arg2 = _sqlite_calculer_where(array_shift($v)); |
|
| 2210 | + if ($n == 2) { |
|
| 2211 | + return "($arg $op $arg2)"; |
|
| 2212 | + } else { |
|
| 2213 | + return "($arg $op ($arg2) : $v[0])"; |
|
| 2214 | + } |
|
| 2215 | + } |
|
| 2216 | + } |
|
| 2217 | 2217 | } |
| 2218 | 2218 | |
| 2219 | 2219 | |
@@ -2228,19 +2228,19 @@ discard block |
||
| 2228 | 2228 | * @return array|bool |
| 2229 | 2229 | */ |
| 2230 | 2230 | function _sqlite_charger_version($version = '') { |
| 2231 | - $versions = []; |
|
| 2231 | + $versions = []; |
|
| 2232 | 2232 | |
| 2233 | - // version 3 |
|
| 2234 | - if (!$version || $version == 3) { |
|
| 2235 | - if (extension_loaded('pdo') && extension_loaded('pdo_sqlite')) { |
|
| 2236 | - $versions[] = 3; |
|
| 2237 | - } |
|
| 2238 | - } |
|
| 2239 | - if ($version) { |
|
| 2240 | - return in_array($version, $versions); |
|
| 2241 | - } |
|
| 2233 | + // version 3 |
|
| 2234 | + if (!$version || $version == 3) { |
|
| 2235 | + if (extension_loaded('pdo') && extension_loaded('pdo_sqlite')) { |
|
| 2236 | + $versions[] = 3; |
|
| 2237 | + } |
|
| 2238 | + } |
|
| 2239 | + if ($version) { |
|
| 2240 | + return in_array($version, $versions); |
|
| 2241 | + } |
|
| 2242 | 2242 | |
| 2243 | - return $versions; |
|
| 2243 | + return $versions; |
|
| 2244 | 2244 | } |
| 2245 | 2245 | |
| 2246 | 2246 | |
@@ -2278,147 +2278,147 @@ discard block |
||
| 2278 | 2278 | */ |
| 2279 | 2279 | function _sqlite_modifier_table($table, $colonne, $opt = [], $serveur = '') { |
| 2280 | 2280 | |
| 2281 | - if (is_array($table)) { |
|
| 2282 | - $table_destination = reset($table); |
|
| 2283 | - $table_origine = key($table); |
|
| 2284 | - } else { |
|
| 2285 | - $table_origine = $table_destination = $table; |
|
| 2286 | - } |
|
| 2287 | - // ne prend actuellement qu'un changement |
|
| 2288 | - // mais pourra etre adapte pour changer plus qu'une colonne a la fois |
|
| 2289 | - if (is_array($colonne)) { |
|
| 2290 | - $colonne_destination = reset($colonne); |
|
| 2291 | - $colonne_origine = key($colonne); |
|
| 2292 | - } else { |
|
| 2293 | - $colonne_origine = $colonne_destination = $colonne; |
|
| 2294 | - } |
|
| 2295 | - if (!isset($opt['field'])) { |
|
| 2296 | - $opt['field'] = []; |
|
| 2297 | - } |
|
| 2298 | - if (!isset($opt['key'])) { |
|
| 2299 | - $opt['key'] = []; |
|
| 2300 | - } |
|
| 2301 | - |
|
| 2302 | - // si les noms de tables sont differents, pas besoin de table temporaire |
|
| 2303 | - // on prendra directement le nom de la future table |
|
| 2304 | - $meme_table = ($table_origine == $table_destination); |
|
| 2305 | - |
|
| 2306 | - $def_origine = sql_showtable($table_origine, false, $serveur); |
|
| 2307 | - if (!$def_origine or !isset($def_origine['field'])) { |
|
| 2308 | - spip_log("Alter table impossible sur $table_origine : table non trouvee", 'sqlite' . _LOG_ERREUR); |
|
| 2309 | - |
|
| 2310 | - return false; |
|
| 2311 | - } |
|
| 2312 | - |
|
| 2313 | - |
|
| 2314 | - $table_tmp = $table_origine . '_tmp'; |
|
| 2315 | - |
|
| 2316 | - // 1) creer une table temporaire avec les modifications |
|
| 2317 | - // - DROP : suppression de la colonne |
|
| 2318 | - // - CHANGE : modification de la colonne |
|
| 2319 | - // (foreach pour conserver l'ordre des champs) |
|
| 2320 | - |
|
| 2321 | - // field |
|
| 2322 | - $fields = []; |
|
| 2323 | - // pour le INSERT INTO plus loin |
|
| 2324 | - // stocker la correspondance nouvelles->anciennes colonnes |
|
| 2325 | - $fields_correspondances = []; |
|
| 2326 | - foreach ($def_origine['field'] as $c => $d) { |
|
| 2327 | - if ($colonne_origine && ($c == $colonne_origine)) { |
|
| 2328 | - // si pas DROP |
|
| 2329 | - if ($colonne_destination) { |
|
| 2330 | - $fields[$colonne_destination] = $opt['field'][$colonne_destination]; |
|
| 2331 | - $fields_correspondances[$colonne_destination] = $c; |
|
| 2332 | - } |
|
| 2333 | - } else { |
|
| 2334 | - $fields[$c] = $d; |
|
| 2335 | - $fields_correspondances[$c] = $c; |
|
| 2336 | - } |
|
| 2337 | - } |
|
| 2338 | - // cas de ADD sqlite2 (ajout du champ en fin de table): |
|
| 2339 | - if (!$colonne_origine && $colonne_destination) { |
|
| 2340 | - $fields[$colonne_destination] = $opt['field'][$colonne_destination]; |
|
| 2341 | - } |
|
| 2342 | - |
|
| 2343 | - // key... |
|
| 2344 | - $keys = []; |
|
| 2345 | - foreach ($def_origine['key'] as $c => $d) { |
|
| 2346 | - $c = str_replace($colonne_origine, $colonne_destination, $c); |
|
| 2347 | - $d = str_replace($colonne_origine, $colonne_destination, $d); |
|
| 2348 | - // seulement si on ne supprime pas la colonne ! |
|
| 2349 | - if ($d) { |
|
| 2350 | - $keys[$c] = $d; |
|
| 2351 | - } |
|
| 2352 | - } |
|
| 2353 | - |
|
| 2354 | - // autres keys, on merge |
|
| 2355 | - $keys = array_merge($keys, $opt['key']); |
|
| 2356 | - $queries = []; |
|
| 2357 | - |
|
| 2358 | - // copier dans destination (si differente de origine), sinon tmp |
|
| 2359 | - $table_copie = ($meme_table) ? $table_tmp : $table_destination; |
|
| 2360 | - $autoinc = (isset($keys['PRIMARY KEY']) |
|
| 2361 | - and $keys['PRIMARY KEY'] |
|
| 2362 | - and stripos($keys['PRIMARY KEY'], ',') === false |
|
| 2363 | - and stripos($fields[$keys['PRIMARY KEY']], 'default') === false); |
|
| 2364 | - |
|
| 2365 | - if ( |
|
| 2366 | - $q = _sqlite_requete_create( |
|
| 2367 | - $table_copie, |
|
| 2368 | - $fields, |
|
| 2369 | - $keys, |
|
| 2370 | - $autoinc, |
|
| 2371 | - $temporary = false, |
|
| 2372 | - $ifnotexists = true, |
|
| 2373 | - $serveur |
|
| 2374 | - ) |
|
| 2375 | - ) { |
|
| 2376 | - $queries[] = $q; |
|
| 2377 | - } |
|
| 2378 | - |
|
| 2379 | - |
|
| 2380 | - // 2) y copier les champs qui vont bien |
|
| 2381 | - $champs_dest = join(', ', array_keys($fields_correspondances)); |
|
| 2382 | - $champs_ori = join(', ', $fields_correspondances); |
|
| 2383 | - $queries[] = "INSERT INTO $table_copie ($champs_dest) SELECT $champs_ori FROM $table_origine"; |
|
| 2384 | - |
|
| 2385 | - // 3) supprimer la table d'origine |
|
| 2386 | - $queries[] = "DROP TABLE $table_origine"; |
|
| 2387 | - |
|
| 2388 | - // 4) renommer la table temporaire |
|
| 2389 | - // avec le nom de la table destination |
|
| 2390 | - // si necessaire |
|
| 2391 | - if ($meme_table) { |
|
| 2392 | - $queries[] = "ALTER TABLE $table_copie RENAME TO $table_destination"; |
|
| 2393 | - } |
|
| 2394 | - |
|
| 2395 | - // 5) remettre les index ! |
|
| 2396 | - foreach ($keys as $k => $v) { |
|
| 2397 | - if ($k == 'PRIMARY KEY') { |
|
| 2398 | - } else { |
|
| 2399 | - // enlever KEY |
|
| 2400 | - $k = substr($k, 4); |
|
| 2401 | - $queries[] = "CREATE INDEX $table_destination" . "_$k ON $table_destination ($v)"; |
|
| 2402 | - } |
|
| 2403 | - } |
|
| 2404 | - |
|
| 2405 | - |
|
| 2406 | - if (count($queries)) { |
|
| 2407 | - spip_sqlite::demarrer_transaction($serveur); |
|
| 2408 | - // il faut les faire une par une car $query = join('; ', $queries).";"; ne fonctionne pas |
|
| 2409 | - foreach ($queries as $q) { |
|
| 2410 | - if (!spip_sqlite::executer_requete($q, $serveur)) { |
|
| 2411 | - spip_log('SQLite : ALTER TABLE table :' |
|
| 2412 | - . " Erreur a l'execution de la requete : $q", 'sqlite.' . _LOG_ERREUR); |
|
| 2413 | - spip_sqlite::annuler_transaction($serveur); |
|
| 2414 | - |
|
| 2415 | - return false; |
|
| 2416 | - } |
|
| 2417 | - } |
|
| 2418 | - spip_sqlite::finir_transaction($serveur); |
|
| 2419 | - } |
|
| 2420 | - |
|
| 2421 | - return true; |
|
| 2281 | + if (is_array($table)) { |
|
| 2282 | + $table_destination = reset($table); |
|
| 2283 | + $table_origine = key($table); |
|
| 2284 | + } else { |
|
| 2285 | + $table_origine = $table_destination = $table; |
|
| 2286 | + } |
|
| 2287 | + // ne prend actuellement qu'un changement |
|
| 2288 | + // mais pourra etre adapte pour changer plus qu'une colonne a la fois |
|
| 2289 | + if (is_array($colonne)) { |
|
| 2290 | + $colonne_destination = reset($colonne); |
|
| 2291 | + $colonne_origine = key($colonne); |
|
| 2292 | + } else { |
|
| 2293 | + $colonne_origine = $colonne_destination = $colonne; |
|
| 2294 | + } |
|
| 2295 | + if (!isset($opt['field'])) { |
|
| 2296 | + $opt['field'] = []; |
|
| 2297 | + } |
|
| 2298 | + if (!isset($opt['key'])) { |
|
| 2299 | + $opt['key'] = []; |
|
| 2300 | + } |
|
| 2301 | + |
|
| 2302 | + // si les noms de tables sont differents, pas besoin de table temporaire |
|
| 2303 | + // on prendra directement le nom de la future table |
|
| 2304 | + $meme_table = ($table_origine == $table_destination); |
|
| 2305 | + |
|
| 2306 | + $def_origine = sql_showtable($table_origine, false, $serveur); |
|
| 2307 | + if (!$def_origine or !isset($def_origine['field'])) { |
|
| 2308 | + spip_log("Alter table impossible sur $table_origine : table non trouvee", 'sqlite' . _LOG_ERREUR); |
|
| 2309 | + |
|
| 2310 | + return false; |
|
| 2311 | + } |
|
| 2312 | + |
|
| 2313 | + |
|
| 2314 | + $table_tmp = $table_origine . '_tmp'; |
|
| 2315 | + |
|
| 2316 | + // 1) creer une table temporaire avec les modifications |
|
| 2317 | + // - DROP : suppression de la colonne |
|
| 2318 | + // - CHANGE : modification de la colonne |
|
| 2319 | + // (foreach pour conserver l'ordre des champs) |
|
| 2320 | + |
|
| 2321 | + // field |
|
| 2322 | + $fields = []; |
|
| 2323 | + // pour le INSERT INTO plus loin |
|
| 2324 | + // stocker la correspondance nouvelles->anciennes colonnes |
|
| 2325 | + $fields_correspondances = []; |
|
| 2326 | + foreach ($def_origine['field'] as $c => $d) { |
|
| 2327 | + if ($colonne_origine && ($c == $colonne_origine)) { |
|
| 2328 | + // si pas DROP |
|
| 2329 | + if ($colonne_destination) { |
|
| 2330 | + $fields[$colonne_destination] = $opt['field'][$colonne_destination]; |
|
| 2331 | + $fields_correspondances[$colonne_destination] = $c; |
|
| 2332 | + } |
|
| 2333 | + } else { |
|
| 2334 | + $fields[$c] = $d; |
|
| 2335 | + $fields_correspondances[$c] = $c; |
|
| 2336 | + } |
|
| 2337 | + } |
|
| 2338 | + // cas de ADD sqlite2 (ajout du champ en fin de table): |
|
| 2339 | + if (!$colonne_origine && $colonne_destination) { |
|
| 2340 | + $fields[$colonne_destination] = $opt['field'][$colonne_destination]; |
|
| 2341 | + } |
|
| 2342 | + |
|
| 2343 | + // key... |
|
| 2344 | + $keys = []; |
|
| 2345 | + foreach ($def_origine['key'] as $c => $d) { |
|
| 2346 | + $c = str_replace($colonne_origine, $colonne_destination, $c); |
|
| 2347 | + $d = str_replace($colonne_origine, $colonne_destination, $d); |
|
| 2348 | + // seulement si on ne supprime pas la colonne ! |
|
| 2349 | + if ($d) { |
|
| 2350 | + $keys[$c] = $d; |
|
| 2351 | + } |
|
| 2352 | + } |
|
| 2353 | + |
|
| 2354 | + // autres keys, on merge |
|
| 2355 | + $keys = array_merge($keys, $opt['key']); |
|
| 2356 | + $queries = []; |
|
| 2357 | + |
|
| 2358 | + // copier dans destination (si differente de origine), sinon tmp |
|
| 2359 | + $table_copie = ($meme_table) ? $table_tmp : $table_destination; |
|
| 2360 | + $autoinc = (isset($keys['PRIMARY KEY']) |
|
| 2361 | + and $keys['PRIMARY KEY'] |
|
| 2362 | + and stripos($keys['PRIMARY KEY'], ',') === false |
|
| 2363 | + and stripos($fields[$keys['PRIMARY KEY']], 'default') === false); |
|
| 2364 | + |
|
| 2365 | + if ( |
|
| 2366 | + $q = _sqlite_requete_create( |
|
| 2367 | + $table_copie, |
|
| 2368 | + $fields, |
|
| 2369 | + $keys, |
|
| 2370 | + $autoinc, |
|
| 2371 | + $temporary = false, |
|
| 2372 | + $ifnotexists = true, |
|
| 2373 | + $serveur |
|
| 2374 | + ) |
|
| 2375 | + ) { |
|
| 2376 | + $queries[] = $q; |
|
| 2377 | + } |
|
| 2378 | + |
|
| 2379 | + |
|
| 2380 | + // 2) y copier les champs qui vont bien |
|
| 2381 | + $champs_dest = join(', ', array_keys($fields_correspondances)); |
|
| 2382 | + $champs_ori = join(', ', $fields_correspondances); |
|
| 2383 | + $queries[] = "INSERT INTO $table_copie ($champs_dest) SELECT $champs_ori FROM $table_origine"; |
|
| 2384 | + |
|
| 2385 | + // 3) supprimer la table d'origine |
|
| 2386 | + $queries[] = "DROP TABLE $table_origine"; |
|
| 2387 | + |
|
| 2388 | + // 4) renommer la table temporaire |
|
| 2389 | + // avec le nom de la table destination |
|
| 2390 | + // si necessaire |
|
| 2391 | + if ($meme_table) { |
|
| 2392 | + $queries[] = "ALTER TABLE $table_copie RENAME TO $table_destination"; |
|
| 2393 | + } |
|
| 2394 | + |
|
| 2395 | + // 5) remettre les index ! |
|
| 2396 | + foreach ($keys as $k => $v) { |
|
| 2397 | + if ($k == 'PRIMARY KEY') { |
|
| 2398 | + } else { |
|
| 2399 | + // enlever KEY |
|
| 2400 | + $k = substr($k, 4); |
|
| 2401 | + $queries[] = "CREATE INDEX $table_destination" . "_$k ON $table_destination ($v)"; |
|
| 2402 | + } |
|
| 2403 | + } |
|
| 2404 | + |
|
| 2405 | + |
|
| 2406 | + if (count($queries)) { |
|
| 2407 | + spip_sqlite::demarrer_transaction($serveur); |
|
| 2408 | + // il faut les faire une par une car $query = join('; ', $queries).";"; ne fonctionne pas |
|
| 2409 | + foreach ($queries as $q) { |
|
| 2410 | + if (!spip_sqlite::executer_requete($q, $serveur)) { |
|
| 2411 | + spip_log('SQLite : ALTER TABLE table :' |
|
| 2412 | + . " Erreur a l'execution de la requete : $q", 'sqlite.' . _LOG_ERREUR); |
|
| 2413 | + spip_sqlite::annuler_transaction($serveur); |
|
| 2414 | + |
|
| 2415 | + return false; |
|
| 2416 | + } |
|
| 2417 | + } |
|
| 2418 | + spip_sqlite::finir_transaction($serveur); |
|
| 2419 | + } |
|
| 2420 | + |
|
| 2421 | + return true; |
|
| 2422 | 2422 | } |
| 2423 | 2423 | |
| 2424 | 2424 | |
@@ -2428,61 +2428,61 @@ discard block |
||
| 2428 | 2428 | * @return array |
| 2429 | 2429 | */ |
| 2430 | 2430 | function _sqlite_ref_fonctions() { |
| 2431 | - $fonctions = [ |
|
| 2432 | - 'alter' => 'spip_sqlite_alter', |
|
| 2433 | - 'count' => 'spip_sqlite_count', |
|
| 2434 | - 'countsel' => 'spip_sqlite_countsel', |
|
| 2435 | - 'create' => 'spip_sqlite_create', |
|
| 2436 | - 'create_base' => 'spip_sqlite_create_base', |
|
| 2437 | - 'create_view' => 'spip_sqlite_create_view', |
|
| 2438 | - 'date_proche' => 'spip_sqlite_date_proche', |
|
| 2439 | - 'delete' => 'spip_sqlite_delete', |
|
| 2440 | - 'drop_table' => 'spip_sqlite_drop_table', |
|
| 2441 | - 'drop_view' => 'spip_sqlite_drop_view', |
|
| 2442 | - 'errno' => 'spip_sqlite_errno', |
|
| 2443 | - 'error' => 'spip_sqlite_error', |
|
| 2444 | - 'explain' => 'spip_sqlite_explain', |
|
| 2445 | - 'fetch' => 'spip_sqlite_fetch', |
|
| 2446 | - 'seek' => 'spip_sqlite_seek', |
|
| 2447 | - 'free' => 'spip_sqlite_free', |
|
| 2448 | - 'hex' => 'spip_sqlite_hex', |
|
| 2449 | - 'in' => 'spip_sqlite_in', |
|
| 2450 | - 'insert' => 'spip_sqlite_insert', |
|
| 2451 | - 'insertq' => 'spip_sqlite_insertq', |
|
| 2452 | - 'insertq_multi' => 'spip_sqlite_insertq_multi', |
|
| 2453 | - 'listdbs' => 'spip_sqlite_listdbs', |
|
| 2454 | - 'multi' => 'spip_sqlite_multi', |
|
| 2455 | - 'optimize' => 'spip_sqlite_optimize', |
|
| 2456 | - 'query' => 'spip_sqlite_query', |
|
| 2457 | - 'quote' => 'spip_sqlite_quote', |
|
| 2458 | - 'repair' => 'spip_sqlite_repair', |
|
| 2459 | - 'replace' => 'spip_sqlite_replace', |
|
| 2460 | - 'replace_multi' => 'spip_sqlite_replace_multi', |
|
| 2461 | - 'select' => 'spip_sqlite_select', |
|
| 2462 | - 'selectdb' => 'spip_sqlite_selectdb', |
|
| 2463 | - 'set_charset' => 'spip_sqlite_set_charset', |
|
| 2464 | - 'get_charset' => 'spip_sqlite_get_charset', |
|
| 2465 | - 'showbase' => 'spip_sqlite_showbase', |
|
| 2466 | - 'showtable' => 'spip_sqlite_showtable', |
|
| 2467 | - 'table_exists' => 'spip_sqlite_table_exists', |
|
| 2468 | - 'update' => 'spip_sqlite_update', |
|
| 2469 | - 'updateq' => 'spip_sqlite_updateq', |
|
| 2470 | - 'preferer_transaction' => 'spip_sqlite_preferer_transaction', |
|
| 2471 | - 'demarrer_transaction' => 'spip_sqlite_demarrer_transaction', |
|
| 2472 | - 'terminer_transaction' => 'spip_sqlite_terminer_transaction', |
|
| 2473 | - ]; |
|
| 2474 | - |
|
| 2475 | - // association de chaque nom http d'un charset aux couples sqlite |
|
| 2476 | - // SQLite supporte utf-8 et utf-16 uniquement. |
|
| 2477 | - $charsets = [ |
|
| 2478 | - 'utf-8' => ['charset' => 'utf8', 'collation' => 'utf8_general_ci'], |
|
| 2479 | - //'utf-16be'=>array('charset'=>'utf16be','collation'=>'UTF-16BE'),// aucune idee de quoi il faut remplir dans es champs la |
|
| 2480 | - //'utf-16le'=>array('charset'=>'utf16le','collation'=>'UTF-16LE') |
|
| 2481 | - ]; |
|
| 2482 | - |
|
| 2483 | - $fonctions['charsets'] = $charsets; |
|
| 2484 | - |
|
| 2485 | - return $fonctions; |
|
| 2431 | + $fonctions = [ |
|
| 2432 | + 'alter' => 'spip_sqlite_alter', |
|
| 2433 | + 'count' => 'spip_sqlite_count', |
|
| 2434 | + 'countsel' => 'spip_sqlite_countsel', |
|
| 2435 | + 'create' => 'spip_sqlite_create', |
|
| 2436 | + 'create_base' => 'spip_sqlite_create_base', |
|
| 2437 | + 'create_view' => 'spip_sqlite_create_view', |
|
| 2438 | + 'date_proche' => 'spip_sqlite_date_proche', |
|
| 2439 | + 'delete' => 'spip_sqlite_delete', |
|
| 2440 | + 'drop_table' => 'spip_sqlite_drop_table', |
|
| 2441 | + 'drop_view' => 'spip_sqlite_drop_view', |
|
| 2442 | + 'errno' => 'spip_sqlite_errno', |
|
| 2443 | + 'error' => 'spip_sqlite_error', |
|
| 2444 | + 'explain' => 'spip_sqlite_explain', |
|
| 2445 | + 'fetch' => 'spip_sqlite_fetch', |
|
| 2446 | + 'seek' => 'spip_sqlite_seek', |
|
| 2447 | + 'free' => 'spip_sqlite_free', |
|
| 2448 | + 'hex' => 'spip_sqlite_hex', |
|
| 2449 | + 'in' => 'spip_sqlite_in', |
|
| 2450 | + 'insert' => 'spip_sqlite_insert', |
|
| 2451 | + 'insertq' => 'spip_sqlite_insertq', |
|
| 2452 | + 'insertq_multi' => 'spip_sqlite_insertq_multi', |
|
| 2453 | + 'listdbs' => 'spip_sqlite_listdbs', |
|
| 2454 | + 'multi' => 'spip_sqlite_multi', |
|
| 2455 | + 'optimize' => 'spip_sqlite_optimize', |
|
| 2456 | + 'query' => 'spip_sqlite_query', |
|
| 2457 | + 'quote' => 'spip_sqlite_quote', |
|
| 2458 | + 'repair' => 'spip_sqlite_repair', |
|
| 2459 | + 'replace' => 'spip_sqlite_replace', |
|
| 2460 | + 'replace_multi' => 'spip_sqlite_replace_multi', |
|
| 2461 | + 'select' => 'spip_sqlite_select', |
|
| 2462 | + 'selectdb' => 'spip_sqlite_selectdb', |
|
| 2463 | + 'set_charset' => 'spip_sqlite_set_charset', |
|
| 2464 | + 'get_charset' => 'spip_sqlite_get_charset', |
|
| 2465 | + 'showbase' => 'spip_sqlite_showbase', |
|
| 2466 | + 'showtable' => 'spip_sqlite_showtable', |
|
| 2467 | + 'table_exists' => 'spip_sqlite_table_exists', |
|
| 2468 | + 'update' => 'spip_sqlite_update', |
|
| 2469 | + 'updateq' => 'spip_sqlite_updateq', |
|
| 2470 | + 'preferer_transaction' => 'spip_sqlite_preferer_transaction', |
|
| 2471 | + 'demarrer_transaction' => 'spip_sqlite_demarrer_transaction', |
|
| 2472 | + 'terminer_transaction' => 'spip_sqlite_terminer_transaction', |
|
| 2473 | + ]; |
|
| 2474 | + |
|
| 2475 | + // association de chaque nom http d'un charset aux couples sqlite |
|
| 2476 | + // SQLite supporte utf-8 et utf-16 uniquement. |
|
| 2477 | + $charsets = [ |
|
| 2478 | + 'utf-8' => ['charset' => 'utf8', 'collation' => 'utf8_general_ci'], |
|
| 2479 | + //'utf-16be'=>array('charset'=>'utf16be','collation'=>'UTF-16BE'),// aucune idee de quoi il faut remplir dans es champs la |
|
| 2480 | + //'utf-16le'=>array('charset'=>'utf16le','collation'=>'UTF-16LE') |
|
| 2481 | + ]; |
|
| 2482 | + |
|
| 2483 | + $fonctions['charsets'] = $charsets; |
|
| 2484 | + |
|
| 2485 | + return $fonctions; |
|
| 2486 | 2486 | } |
| 2487 | 2487 | |
| 2488 | 2488 | |
@@ -2494,56 +2494,56 @@ discard block |
||
| 2494 | 2494 | * @return mixed |
| 2495 | 2495 | */ |
| 2496 | 2496 | function _sqlite_remplacements_definitions_table($query, $autoinc = false) { |
| 2497 | - // quelques remplacements |
|
| 2498 | - $num = '(\s*\([0-9]*\))?'; |
|
| 2499 | - $enum = '(\s*\([^\)]*\))?'; |
|
| 2500 | - |
|
| 2501 | - $remplace = [ |
|
| 2502 | - '/enum' . $enum . '/is' => 'VARCHAR(255)', |
|
| 2503 | - '/COLLATE \w+_bin/is' => 'COLLATE BINARY', |
|
| 2504 | - '/COLLATE \w+_ci/is' => 'COLLATE NOCASE', |
|
| 2505 | - '/auto_increment/is' => '', |
|
| 2506 | - '/current_timestamp\(\)/is' => 'CURRENT_TIMESTAMP', // Fix export depuis mariaDB #4374 |
|
| 2507 | - '/(timestamp .* )ON .*$/is' => '\\1', |
|
| 2508 | - '/character set \w+/is' => '', |
|
| 2509 | - '/((big|small|medium|tiny)?int(eger)?)' . $num . '\s*unsigned/is' => '\\1 UNSIGNED', |
|
| 2510 | - '/(text\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''", |
|
| 2511 | - '/((char|varchar)' . $num . '\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''", |
|
| 2512 | - '/(datetime\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00 00:00:00'", |
|
| 2513 | - '/(date\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00'", |
|
| 2514 | - ]; |
|
| 2515 | - |
|
| 2516 | - // pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY |
|
| 2517 | - $remplace_autocinc = [ |
|
| 2518 | - '/(big|small|medium|tiny)?int(eger)?' . $num . '/is' => 'INTEGER' |
|
| 2519 | - ]; |
|
| 2520 | - // pour les int non autoincrement, il faut un DEFAULT |
|
| 2521 | - $remplace_nonautocinc = [ |
|
| 2522 | - '/((big|small|medium|tiny)?int(eger)?' . $num . '\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0", |
|
| 2523 | - ]; |
|
| 2524 | - |
|
| 2525 | - if (is_string($query)) { |
|
| 2526 | - $query = preg_replace(array_keys($remplace), $remplace, $query); |
|
| 2527 | - if ($autoinc or preg_match(',AUTO_INCREMENT,is', $query)) { |
|
| 2528 | - $query = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query); |
|
| 2529 | - } else { |
|
| 2530 | - $query = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query); |
|
| 2531 | - $query = _sqlite_collate_ci($query); |
|
| 2532 | - } |
|
| 2533 | - } elseif (is_array($query)) { |
|
| 2534 | - foreach ($query as $k => $q) { |
|
| 2535 | - $ai = ($autoinc ? $k == $autoinc : preg_match(',AUTO_INCREMENT,is', $q)); |
|
| 2536 | - $query[$k] = preg_replace(array_keys($remplace), $remplace, $query[$k]); |
|
| 2537 | - if ($ai) { |
|
| 2538 | - $query[$k] = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query[$k]); |
|
| 2539 | - } else { |
|
| 2540 | - $query[$k] = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query[$k]); |
|
| 2541 | - $query[$k] = _sqlite_collate_ci($query[$k]); |
|
| 2542 | - } |
|
| 2543 | - } |
|
| 2544 | - } |
|
| 2545 | - |
|
| 2546 | - return $query; |
|
| 2497 | + // quelques remplacements |
|
| 2498 | + $num = '(\s*\([0-9]*\))?'; |
|
| 2499 | + $enum = '(\s*\([^\)]*\))?'; |
|
| 2500 | + |
|
| 2501 | + $remplace = [ |
|
| 2502 | + '/enum' . $enum . '/is' => 'VARCHAR(255)', |
|
| 2503 | + '/COLLATE \w+_bin/is' => 'COLLATE BINARY', |
|
| 2504 | + '/COLLATE \w+_ci/is' => 'COLLATE NOCASE', |
|
| 2505 | + '/auto_increment/is' => '', |
|
| 2506 | + '/current_timestamp\(\)/is' => 'CURRENT_TIMESTAMP', // Fix export depuis mariaDB #4374 |
|
| 2507 | + '/(timestamp .* )ON .*$/is' => '\\1', |
|
| 2508 | + '/character set \w+/is' => '', |
|
| 2509 | + '/((big|small|medium|tiny)?int(eger)?)' . $num . '\s*unsigned/is' => '\\1 UNSIGNED', |
|
| 2510 | + '/(text\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''", |
|
| 2511 | + '/((char|varchar)' . $num . '\s+not\s+null(\s+collate\s+\w+)?)\s*$/is' => "\\1 DEFAULT ''", |
|
| 2512 | + '/(datetime\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00 00:00:00'", |
|
| 2513 | + '/(date\s+not\s+null)\s*$/is' => "\\1 DEFAULT '0000-00-00'", |
|
| 2514 | + ]; |
|
| 2515 | + |
|
| 2516 | + // pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY |
|
| 2517 | + $remplace_autocinc = [ |
|
| 2518 | + '/(big|small|medium|tiny)?int(eger)?' . $num . '/is' => 'INTEGER' |
|
| 2519 | + ]; |
|
| 2520 | + // pour les int non autoincrement, il faut un DEFAULT |
|
| 2521 | + $remplace_nonautocinc = [ |
|
| 2522 | + '/((big|small|medium|tiny)?int(eger)?' . $num . '\s+not\s+null)\s*$/is' => "\\1 DEFAULT 0", |
|
| 2523 | + ]; |
|
| 2524 | + |
|
| 2525 | + if (is_string($query)) { |
|
| 2526 | + $query = preg_replace(array_keys($remplace), $remplace, $query); |
|
| 2527 | + if ($autoinc or preg_match(',AUTO_INCREMENT,is', $query)) { |
|
| 2528 | + $query = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query); |
|
| 2529 | + } else { |
|
| 2530 | + $query = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query); |
|
| 2531 | + $query = _sqlite_collate_ci($query); |
|
| 2532 | + } |
|
| 2533 | + } elseif (is_array($query)) { |
|
| 2534 | + foreach ($query as $k => $q) { |
|
| 2535 | + $ai = ($autoinc ? $k == $autoinc : preg_match(',AUTO_INCREMENT,is', $q)); |
|
| 2536 | + $query[$k] = preg_replace(array_keys($remplace), $remplace, $query[$k]); |
|
| 2537 | + if ($ai) { |
|
| 2538 | + $query[$k] = preg_replace(array_keys($remplace_autocinc), $remplace_autocinc, $query[$k]); |
|
| 2539 | + } else { |
|
| 2540 | + $query[$k] = preg_replace(array_keys($remplace_nonautocinc), $remplace_nonautocinc, $query[$k]); |
|
| 2541 | + $query[$k] = _sqlite_collate_ci($query[$k]); |
|
| 2542 | + } |
|
| 2543 | + } |
|
| 2544 | + } |
|
| 2545 | + |
|
| 2546 | + return $query; |
|
| 2547 | 2547 | } |
| 2548 | 2548 | |
| 2549 | 2549 | /** |
@@ -2554,17 +2554,17 @@ discard block |
||
| 2554 | 2554 | * @return string |
| 2555 | 2555 | */ |
| 2556 | 2556 | function _sqlite_collate_ci($champ) { |
| 2557 | - if (stripos($champ, 'COLLATE') !== false) { |
|
| 2558 | - return $champ; |
|
| 2559 | - } |
|
| 2560 | - if (stripos($champ, 'BINARY') !== false) { |
|
| 2561 | - return str_ireplace('BINARY', 'COLLATE BINARY', $champ); |
|
| 2562 | - } |
|
| 2563 | - if (preg_match(',^(char|varchar|(long|small|medium|tiny)?text),i', $champ)) { |
|
| 2564 | - return $champ . ' COLLATE NOCASE'; |
|
| 2565 | - } |
|
| 2557 | + if (stripos($champ, 'COLLATE') !== false) { |
|
| 2558 | + return $champ; |
|
| 2559 | + } |
|
| 2560 | + if (stripos($champ, 'BINARY') !== false) { |
|
| 2561 | + return str_ireplace('BINARY', 'COLLATE BINARY', $champ); |
|
| 2562 | + } |
|
| 2563 | + if (preg_match(',^(char|varchar|(long|small|medium|tiny)?text),i', $champ)) { |
|
| 2564 | + return $champ . ' COLLATE NOCASE'; |
|
| 2565 | + } |
|
| 2566 | 2566 | |
| 2567 | - return $champ; |
|
| 2567 | + return $champ; |
|
| 2568 | 2568 | } |
| 2569 | 2569 | |
| 2570 | 2570 | |
@@ -2583,84 +2583,84 @@ discard block |
||
| 2583 | 2583 | * @return bool|string |
| 2584 | 2584 | */ |
| 2585 | 2585 | function _sqlite_requete_create( |
| 2586 | - $nom, |
|
| 2587 | - $champs, |
|
| 2588 | - $cles, |
|
| 2589 | - $autoinc = false, |
|
| 2590 | - $temporary = false, |
|
| 2591 | - $_ifnotexists = true, |
|
| 2592 | - $serveur = '', |
|
| 2593 | - $requeter = true |
|
| 2586 | + $nom, |
|
| 2587 | + $champs, |
|
| 2588 | + $cles, |
|
| 2589 | + $autoinc = false, |
|
| 2590 | + $temporary = false, |
|
| 2591 | + $_ifnotexists = true, |
|
| 2592 | + $serveur = '', |
|
| 2593 | + $requeter = true |
|
| 2594 | 2594 | ) { |
| 2595 | - $query = $keys = $s = $p = ''; |
|
| 2596 | - |
|
| 2597 | - // certains plugins declarent les tables (permet leur inclusion dans le dump) |
|
| 2598 | - // sans les renseigner (laisse le compilo recuperer la description) |
|
| 2599 | - if (!is_array($champs) || !is_array($cles)) { |
|
| 2600 | - return; |
|
| 2601 | - } |
|
| 2602 | - |
|
| 2603 | - // sqlite ne gere pas KEY tout court dans une requete CREATE TABLE |
|
| 2604 | - // il faut passer par des create index |
|
| 2605 | - // Il gere par contre primary key ! |
|
| 2606 | - // Soit la PK est definie dans les cles, soit dans un champs |
|
| 2607 | - // soit faussement dans les 2 (et dans ce cas, il faut l’enlever à un des 2 endroits !) |
|
| 2608 | - $pk = 'PRIMARY KEY'; |
|
| 2609 | - // le champ de cle primaire |
|
| 2610 | - $champ_pk = !empty($cles[$pk]) ? $cles[$pk] : ''; |
|
| 2611 | - |
|
| 2612 | - foreach ($champs as $k => $v) { |
|
| 2613 | - if (false !== stripos($v, $pk)) { |
|
| 2614 | - $champ_pk = $k; |
|
| 2615 | - // on n'en a plus besoin dans field, vu que defini dans key |
|
| 2616 | - $champs[$k] = preg_replace("/$pk/is", '', $champs[$k]); |
|
| 2617 | - break; |
|
| 2618 | - } |
|
| 2619 | - } |
|
| 2620 | - |
|
| 2621 | - if ($champ_pk) { |
|
| 2622 | - $keys = "\n\t\t$pk ($champ_pk)"; |
|
| 2623 | - } |
|
| 2624 | - // Pas de DEFAULT 0 sur les cles primaires en auto-increment |
|
| 2625 | - if ( |
|
| 2626 | - isset($champs[$champ_pk]) |
|
| 2627 | - and stripos($champs[$champ_pk], 'default 0') !== false |
|
| 2628 | - ) { |
|
| 2629 | - $champs[$champ_pk] = trim(str_ireplace('default 0', '', $champs[$champ_pk])); |
|
| 2630 | - } |
|
| 2631 | - |
|
| 2632 | - $champs = _sqlite_remplacements_definitions_table($champs, $autoinc ? $champ_pk : false); |
|
| 2633 | - foreach ($champs as $k => $v) { |
|
| 2634 | - $query .= "$s\n\t\t$k $v"; |
|
| 2635 | - $s = ','; |
|
| 2636 | - } |
|
| 2637 | - |
|
| 2638 | - $ifnotexists = ''; |
|
| 2639 | - if ($_ifnotexists) { |
|
| 2640 | - $version = spip_sqlite_fetch( |
|
| 2641 | - spip_sqlite_query('select sqlite_version() AS sqlite_version', $serveur), |
|
| 2642 | - '', |
|
| 2643 | - $serveur |
|
| 2644 | - ); |
|
| 2645 | - if (!function_exists('spip_version_compare')) { |
|
| 2646 | - include_spip('plugins/installer'); |
|
| 2647 | - } |
|
| 2648 | - |
|
| 2649 | - if ($version and spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) { |
|
| 2650 | - $ifnotexists = ' IF NOT EXISTS'; |
|
| 2651 | - } else { |
|
| 2652 | - /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */ |
|
| 2653 | - $a = spip_sqlite_showtable($nom, $serveur); |
|
| 2654 | - if (isset($a['key']['KEY ' . $nom])) { |
|
| 2655 | - return true; |
|
| 2656 | - } |
|
| 2657 | - } |
|
| 2658 | - } |
|
| 2659 | - |
|
| 2660 | - $temporary = $temporary ? ' TEMPORARY' : ''; |
|
| 2661 | - $q = "CREATE$temporary TABLE$ifnotexists $nom ($query" . ($keys ? ",$keys" : '') . ")\n"; |
|
| 2662 | - |
|
| 2663 | - return $q; |
|
| 2595 | + $query = $keys = $s = $p = ''; |
|
| 2596 | + |
|
| 2597 | + // certains plugins declarent les tables (permet leur inclusion dans le dump) |
|
| 2598 | + // sans les renseigner (laisse le compilo recuperer la description) |
|
| 2599 | + if (!is_array($champs) || !is_array($cles)) { |
|
| 2600 | + return; |
|
| 2601 | + } |
|
| 2602 | + |
|
| 2603 | + // sqlite ne gere pas KEY tout court dans une requete CREATE TABLE |
|
| 2604 | + // il faut passer par des create index |
|
| 2605 | + // Il gere par contre primary key ! |
|
| 2606 | + // Soit la PK est definie dans les cles, soit dans un champs |
|
| 2607 | + // soit faussement dans les 2 (et dans ce cas, il faut l’enlever à un des 2 endroits !) |
|
| 2608 | + $pk = 'PRIMARY KEY'; |
|
| 2609 | + // le champ de cle primaire |
|
| 2610 | + $champ_pk = !empty($cles[$pk]) ? $cles[$pk] : ''; |
|
| 2611 | + |
|
| 2612 | + foreach ($champs as $k => $v) { |
|
| 2613 | + if (false !== stripos($v, $pk)) { |
|
| 2614 | + $champ_pk = $k; |
|
| 2615 | + // on n'en a plus besoin dans field, vu que defini dans key |
|
| 2616 | + $champs[$k] = preg_replace("/$pk/is", '', $champs[$k]); |
|
| 2617 | + break; |
|
| 2618 | + } |
|
| 2619 | + } |
|
| 2620 | + |
|
| 2621 | + if ($champ_pk) { |
|
| 2622 | + $keys = "\n\t\t$pk ($champ_pk)"; |
|
| 2623 | + } |
|
| 2624 | + // Pas de DEFAULT 0 sur les cles primaires en auto-increment |
|
| 2625 | + if ( |
|
| 2626 | + isset($champs[$champ_pk]) |
|
| 2627 | + and stripos($champs[$champ_pk], 'default 0') !== false |
|
| 2628 | + ) { |
|
| 2629 | + $champs[$champ_pk] = trim(str_ireplace('default 0', '', $champs[$champ_pk])); |
|
| 2630 | + } |
|
| 2631 | + |
|
| 2632 | + $champs = _sqlite_remplacements_definitions_table($champs, $autoinc ? $champ_pk : false); |
|
| 2633 | + foreach ($champs as $k => $v) { |
|
| 2634 | + $query .= "$s\n\t\t$k $v"; |
|
| 2635 | + $s = ','; |
|
| 2636 | + } |
|
| 2637 | + |
|
| 2638 | + $ifnotexists = ''; |
|
| 2639 | + if ($_ifnotexists) { |
|
| 2640 | + $version = spip_sqlite_fetch( |
|
| 2641 | + spip_sqlite_query('select sqlite_version() AS sqlite_version', $serveur), |
|
| 2642 | + '', |
|
| 2643 | + $serveur |
|
| 2644 | + ); |
|
| 2645 | + if (!function_exists('spip_version_compare')) { |
|
| 2646 | + include_spip('plugins/installer'); |
|
| 2647 | + } |
|
| 2648 | + |
|
| 2649 | + if ($version and spip_version_compare($version['sqlite_version'], '3.3.0', '>=')) { |
|
| 2650 | + $ifnotexists = ' IF NOT EXISTS'; |
|
| 2651 | + } else { |
|
| 2652 | + /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */ |
|
| 2653 | + $a = spip_sqlite_showtable($nom, $serveur); |
|
| 2654 | + if (isset($a['key']['KEY ' . $nom])) { |
|
| 2655 | + return true; |
|
| 2656 | + } |
|
| 2657 | + } |
|
| 2658 | + } |
|
| 2659 | + |
|
| 2660 | + $temporary = $temporary ? ' TEMPORARY' : ''; |
|
| 2661 | + $q = "CREATE$temporary TABLE$ifnotexists $nom ($query" . ($keys ? ",$keys" : '') . ")\n"; |
|
| 2662 | + |
|
| 2663 | + return $q; |
|
| 2664 | 2664 | } |
| 2665 | 2665 | |
| 2666 | 2666 | |
@@ -2679,41 +2679,41 @@ discard block |
||
| 2679 | 2679 | * @return |
| 2680 | 2680 | */ |
| 2681 | 2681 | function _sqlite_ajouter_champs_timestamp($table, $couples, $desc = '', $serveur = '') { |
| 2682 | - static $tables = []; |
|
| 2683 | - |
|
| 2684 | - if (!isset($tables[$table])) { |
|
| 2685 | - if (!$desc) { |
|
| 2686 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 2687 | - $desc = $trouver_table($table, $serveur); |
|
| 2688 | - // si pas de description, on ne fait rien, ou on die() ? |
|
| 2689 | - if (!$desc) { |
|
| 2690 | - return $couples; |
|
| 2691 | - } |
|
| 2692 | - } |
|
| 2693 | - |
|
| 2694 | - // recherche des champs avec simplement 'TIMESTAMP' |
|
| 2695 | - // cependant, il faudra peut etre etendre |
|
| 2696 | - // avec la gestion de DEFAULT et ON UPDATE |
|
| 2697 | - // mais ceux-ci ne sont pas utilises dans le core |
|
| 2698 | - $tables[$table] = ['valeur' => [], 'cite' => [], 'desc' => []]; |
|
| 2699 | - |
|
| 2700 | - $now = _sqlite_func_now(true); |
|
| 2701 | - foreach ($desc['field'] as $k => $v) { |
|
| 2702 | - if (strpos(strtolower(ltrim($v)), 'timestamp') === 0) { |
|
| 2703 | - $tables[$table]['desc'][$k] = $v; |
|
| 2704 | - $tables[$table]['valeur'][$k] = _sqlite_calculer_cite($now, $tables[$table]['desc'][$k]); |
|
| 2705 | - } |
|
| 2706 | - } |
|
| 2707 | - } |
|
| 2708 | - else { |
|
| 2709 | - $now = _sqlite_func_now(true); |
|
| 2710 | - foreach (array_keys($tables[$table]['desc']) as $k) { |
|
| 2711 | - $tables[$table]['valeur'][$k] = _sqlite_calculer_cite($now, $tables[$table]['desc'][$k]); |
|
| 2712 | - } |
|
| 2713 | - } |
|
| 2714 | - |
|
| 2715 | - // ajout des champs type 'timestamp' absents |
|
| 2716 | - return array_merge($tables[$table]['valeur'], $couples); |
|
| 2682 | + static $tables = []; |
|
| 2683 | + |
|
| 2684 | + if (!isset($tables[$table])) { |
|
| 2685 | + if (!$desc) { |
|
| 2686 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 2687 | + $desc = $trouver_table($table, $serveur); |
|
| 2688 | + // si pas de description, on ne fait rien, ou on die() ? |
|
| 2689 | + if (!$desc) { |
|
| 2690 | + return $couples; |
|
| 2691 | + } |
|
| 2692 | + } |
|
| 2693 | + |
|
| 2694 | + // recherche des champs avec simplement 'TIMESTAMP' |
|
| 2695 | + // cependant, il faudra peut etre etendre |
|
| 2696 | + // avec la gestion de DEFAULT et ON UPDATE |
|
| 2697 | + // mais ceux-ci ne sont pas utilises dans le core |
|
| 2698 | + $tables[$table] = ['valeur' => [], 'cite' => [], 'desc' => []]; |
|
| 2699 | + |
|
| 2700 | + $now = _sqlite_func_now(true); |
|
| 2701 | + foreach ($desc['field'] as $k => $v) { |
|
| 2702 | + if (strpos(strtolower(ltrim($v)), 'timestamp') === 0) { |
|
| 2703 | + $tables[$table]['desc'][$k] = $v; |
|
| 2704 | + $tables[$table]['valeur'][$k] = _sqlite_calculer_cite($now, $tables[$table]['desc'][$k]); |
|
| 2705 | + } |
|
| 2706 | + } |
|
| 2707 | + } |
|
| 2708 | + else { |
|
| 2709 | + $now = _sqlite_func_now(true); |
|
| 2710 | + foreach (array_keys($tables[$table]['desc']) as $k) { |
|
| 2711 | + $tables[$table]['valeur'][$k] = _sqlite_calculer_cite($now, $tables[$table]['desc'][$k]); |
|
| 2712 | + } |
|
| 2713 | + } |
|
| 2714 | + |
|
| 2715 | + // ajout des champs type 'timestamp' absents |
|
| 2716 | + return array_merge($tables[$table]['valeur'], $couples); |
|
| 2717 | 2717 | } |
| 2718 | 2718 | |
| 2719 | 2719 | |
@@ -2724,7 +2724,7 @@ discard block |
||
| 2724 | 2724 | * @return array|bool |
| 2725 | 2725 | */ |
| 2726 | 2726 | function spip_versions_sqlite() { |
| 2727 | - return _sqlite_charger_version(); |
|
| 2727 | + return _sqlite_charger_version(); |
|
| 2728 | 2728 | } |
| 2729 | 2729 | |
| 2730 | 2730 | /** |
@@ -2732,114 +2732,114 @@ discard block |
||
| 2732 | 2732 | * encadrées de transactions. |
| 2733 | 2733 | **/ |
| 2734 | 2734 | class spip_sqlite { |
| 2735 | - /** @var sqlite_requeteur[] Liste des instances de requêteurs créés */ |
|
| 2736 | - public static $requeteurs = []; |
|
| 2737 | - /** @var bool[] Pour chaque connexion, flag pour savoir si une transaction est en cours */ |
|
| 2738 | - public static $transaction_en_cours = []; |
|
| 2739 | - |
|
| 2740 | - |
|
| 2741 | - /** |
|
| 2742 | - * Retourne une unique instance du requêteur |
|
| 2743 | - * |
|
| 2744 | - * Retourne une instance unique du requêteur pour une connexion SQLite |
|
| 2745 | - * donnée |
|
| 2746 | - * |
|
| 2747 | - * @param string $serveur |
|
| 2748 | - * Nom du connecteur |
|
| 2749 | - * @return sqlite_requeteur |
|
| 2750 | - * Instance unique du requêteur |
|
| 2751 | - **/ |
|
| 2752 | - public static function requeteur($serveur) { |
|
| 2753 | - if (!isset(spip_sqlite::$requeteurs[$serveur])) { |
|
| 2754 | - spip_sqlite::$requeteurs[$serveur] = new sqlite_requeteur($serveur); |
|
| 2755 | - } |
|
| 2756 | - |
|
| 2757 | - return spip_sqlite::$requeteurs[$serveur]; |
|
| 2758 | - } |
|
| 2759 | - |
|
| 2760 | - /** |
|
| 2761 | - * Prépare le texte d'une requête avant son exécution |
|
| 2762 | - * |
|
| 2763 | - * Adapte la requête au format plus ou moins MySQL par un format |
|
| 2764 | - * compris de SQLite. |
|
| 2765 | - * |
|
| 2766 | - * Change les préfixes de tables SPIP par ceux véritables |
|
| 2767 | - * |
|
| 2768 | - * @param string $query Requête à préparer |
|
| 2769 | - * @param string $serveur Nom de la connexion |
|
| 2770 | - * @return string Requête préparée |
|
| 2771 | - */ |
|
| 2772 | - public static function traduire_requete($query, $serveur) { |
|
| 2773 | - $requeteur = spip_sqlite::requeteur($serveur); |
|
| 2774 | - $traducteur = new sqlite_traducteur($query, $requeteur->prefixe, $requeteur->sqlite_version); |
|
| 2775 | - |
|
| 2776 | - return $traducteur->traduire_requete(); |
|
| 2777 | - } |
|
| 2778 | - |
|
| 2779 | - /** |
|
| 2780 | - * Démarre une transaction |
|
| 2781 | - * |
|
| 2782 | - * @param string $serveur Nom de la connexion |
|
| 2783 | - **/ |
|
| 2784 | - public static function demarrer_transaction($serveur) { |
|
| 2785 | - spip_sqlite::executer_requete('BEGIN TRANSACTION', $serveur); |
|
| 2786 | - spip_sqlite::$transaction_en_cours[$serveur] = true; |
|
| 2787 | - } |
|
| 2788 | - |
|
| 2789 | - /** |
|
| 2790 | - * Exécute la requête donnée |
|
| 2791 | - * |
|
| 2792 | - * @param string $query Requête |
|
| 2793 | - * @param string $serveur Nom de la connexion |
|
| 2794 | - * @param null|bool $tracer Demander des statistiques (temps) ? |
|
| 2795 | - **/ |
|
| 2796 | - public static function executer_requete($query, $serveur, $tracer = null) { |
|
| 2797 | - $requeteur = spip_sqlite::requeteur($serveur); |
|
| 2798 | - |
|
| 2799 | - return $requeteur->executer_requete($query, $tracer); |
|
| 2800 | - } |
|
| 2801 | - |
|
| 2802 | - /** |
|
| 2803 | - * Obtient l'identifiant de la dernière ligne insérée ou modifiée |
|
| 2804 | - * |
|
| 2805 | - * @param string $serveur Nom de la connexion |
|
| 2806 | - * return int Identifiant |
|
| 2807 | - **/ |
|
| 2808 | - public static function last_insert_id($serveur) { |
|
| 2809 | - $requeteur = spip_sqlite::requeteur($serveur); |
|
| 2810 | - |
|
| 2811 | - return $requeteur->last_insert_id($serveur); |
|
| 2812 | - } |
|
| 2813 | - |
|
| 2814 | - /** |
|
| 2815 | - * Annule une transaction |
|
| 2816 | - * |
|
| 2817 | - * @param string $serveur Nom de la connexion |
|
| 2818 | - **/ |
|
| 2819 | - public static function annuler_transaction($serveur) { |
|
| 2820 | - spip_sqlite::executer_requete('ROLLBACK', $serveur); |
|
| 2821 | - spip_sqlite::$transaction_en_cours[$serveur] = false; |
|
| 2822 | - } |
|
| 2823 | - |
|
| 2824 | - /** |
|
| 2825 | - * Termine une transaction |
|
| 2826 | - * |
|
| 2827 | - * @param string $serveur Nom de la connexion |
|
| 2828 | - **/ |
|
| 2829 | - public static function finir_transaction($serveur) { |
|
| 2830 | - // si pas de transaction en cours, ne rien faire et le dire |
|
| 2831 | - if ( |
|
| 2832 | - !isset(spip_sqlite::$transaction_en_cours[$serveur]) |
|
| 2833 | - or spip_sqlite::$transaction_en_cours[$serveur] == false |
|
| 2834 | - ) { |
|
| 2835 | - return false; |
|
| 2836 | - } |
|
| 2837 | - // sinon fermer la transaction et retourner true |
|
| 2838 | - spip_sqlite::executer_requete('COMMIT', $serveur); |
|
| 2839 | - spip_sqlite::$transaction_en_cours[$serveur] = false; |
|
| 2840 | - |
|
| 2841 | - return true; |
|
| 2842 | - } |
|
| 2735 | + /** @var sqlite_requeteur[] Liste des instances de requêteurs créés */ |
|
| 2736 | + public static $requeteurs = []; |
|
| 2737 | + /** @var bool[] Pour chaque connexion, flag pour savoir si une transaction est en cours */ |
|
| 2738 | + public static $transaction_en_cours = []; |
|
| 2739 | + |
|
| 2740 | + |
|
| 2741 | + /** |
|
| 2742 | + * Retourne une unique instance du requêteur |
|
| 2743 | + * |
|
| 2744 | + * Retourne une instance unique du requêteur pour une connexion SQLite |
|
| 2745 | + * donnée |
|
| 2746 | + * |
|
| 2747 | + * @param string $serveur |
|
| 2748 | + * Nom du connecteur |
|
| 2749 | + * @return sqlite_requeteur |
|
| 2750 | + * Instance unique du requêteur |
|
| 2751 | + **/ |
|
| 2752 | + public static function requeteur($serveur) { |
|
| 2753 | + if (!isset(spip_sqlite::$requeteurs[$serveur])) { |
|
| 2754 | + spip_sqlite::$requeteurs[$serveur] = new sqlite_requeteur($serveur); |
|
| 2755 | + } |
|
| 2756 | + |
|
| 2757 | + return spip_sqlite::$requeteurs[$serveur]; |
|
| 2758 | + } |
|
| 2759 | + |
|
| 2760 | + /** |
|
| 2761 | + * Prépare le texte d'une requête avant son exécution |
|
| 2762 | + * |
|
| 2763 | + * Adapte la requête au format plus ou moins MySQL par un format |
|
| 2764 | + * compris de SQLite. |
|
| 2765 | + * |
|
| 2766 | + * Change les préfixes de tables SPIP par ceux véritables |
|
| 2767 | + * |
|
| 2768 | + * @param string $query Requête à préparer |
|
| 2769 | + * @param string $serveur Nom de la connexion |
|
| 2770 | + * @return string Requête préparée |
|
| 2771 | + */ |
|
| 2772 | + public static function traduire_requete($query, $serveur) { |
|
| 2773 | + $requeteur = spip_sqlite::requeteur($serveur); |
|
| 2774 | + $traducteur = new sqlite_traducteur($query, $requeteur->prefixe, $requeteur->sqlite_version); |
|
| 2775 | + |
|
| 2776 | + return $traducteur->traduire_requete(); |
|
| 2777 | + } |
|
| 2778 | + |
|
| 2779 | + /** |
|
| 2780 | + * Démarre une transaction |
|
| 2781 | + * |
|
| 2782 | + * @param string $serveur Nom de la connexion |
|
| 2783 | + **/ |
|
| 2784 | + public static function demarrer_transaction($serveur) { |
|
| 2785 | + spip_sqlite::executer_requete('BEGIN TRANSACTION', $serveur); |
|
| 2786 | + spip_sqlite::$transaction_en_cours[$serveur] = true; |
|
| 2787 | + } |
|
| 2788 | + |
|
| 2789 | + /** |
|
| 2790 | + * Exécute la requête donnée |
|
| 2791 | + * |
|
| 2792 | + * @param string $query Requête |
|
| 2793 | + * @param string $serveur Nom de la connexion |
|
| 2794 | + * @param null|bool $tracer Demander des statistiques (temps) ? |
|
| 2795 | + **/ |
|
| 2796 | + public static function executer_requete($query, $serveur, $tracer = null) { |
|
| 2797 | + $requeteur = spip_sqlite::requeteur($serveur); |
|
| 2798 | + |
|
| 2799 | + return $requeteur->executer_requete($query, $tracer); |
|
| 2800 | + } |
|
| 2801 | + |
|
| 2802 | + /** |
|
| 2803 | + * Obtient l'identifiant de la dernière ligne insérée ou modifiée |
|
| 2804 | + * |
|
| 2805 | + * @param string $serveur Nom de la connexion |
|
| 2806 | + * return int Identifiant |
|
| 2807 | + **/ |
|
| 2808 | + public static function last_insert_id($serveur) { |
|
| 2809 | + $requeteur = spip_sqlite::requeteur($serveur); |
|
| 2810 | + |
|
| 2811 | + return $requeteur->last_insert_id($serveur); |
|
| 2812 | + } |
|
| 2813 | + |
|
| 2814 | + /** |
|
| 2815 | + * Annule une transaction |
|
| 2816 | + * |
|
| 2817 | + * @param string $serveur Nom de la connexion |
|
| 2818 | + **/ |
|
| 2819 | + public static function annuler_transaction($serveur) { |
|
| 2820 | + spip_sqlite::executer_requete('ROLLBACK', $serveur); |
|
| 2821 | + spip_sqlite::$transaction_en_cours[$serveur] = false; |
|
| 2822 | + } |
|
| 2823 | + |
|
| 2824 | + /** |
|
| 2825 | + * Termine une transaction |
|
| 2826 | + * |
|
| 2827 | + * @param string $serveur Nom de la connexion |
|
| 2828 | + **/ |
|
| 2829 | + public static function finir_transaction($serveur) { |
|
| 2830 | + // si pas de transaction en cours, ne rien faire et le dire |
|
| 2831 | + if ( |
|
| 2832 | + !isset(spip_sqlite::$transaction_en_cours[$serveur]) |
|
| 2833 | + or spip_sqlite::$transaction_en_cours[$serveur] == false |
|
| 2834 | + ) { |
|
| 2835 | + return false; |
|
| 2836 | + } |
|
| 2837 | + // sinon fermer la transaction et retourner true |
|
| 2838 | + spip_sqlite::executer_requete('COMMIT', $serveur); |
|
| 2839 | + spip_sqlite::$transaction_en_cours[$serveur] = false; |
|
| 2840 | + |
|
| 2841 | + return true; |
|
| 2842 | + } |
|
| 2843 | 2843 | } |
| 2844 | 2844 | |
| 2845 | 2845 | /* |
@@ -2852,127 +2852,127 @@ discard block |
||
| 2852 | 2852 | */ |
| 2853 | 2853 | |
| 2854 | 2854 | class sqlite_requeteur { |
| 2855 | - /** @var string Texte de la requête */ |
|
| 2856 | - public $query = ''; // la requete |
|
| 2857 | - /** @var string Nom de la connexion */ |
|
| 2858 | - public $serveur = ''; |
|
| 2859 | - /** @var PDO Identifiant de la connexion SQLite */ |
|
| 2860 | - public $link = ''; |
|
| 2861 | - /** @var string Prefixe des tables SPIP */ |
|
| 2862 | - public $prefixe = ''; |
|
| 2863 | - /** @var string Nom de la base de donnée */ |
|
| 2864 | - public $db = ''; |
|
| 2865 | - /** @var bool Doit-on tracer les requetes (var_profile) ? */ |
|
| 2866 | - public $tracer = false; // doit-on tracer les requetes (var_profile) |
|
| 2867 | - |
|
| 2868 | - /** @var string Version de SQLite (2 ou 3) */ |
|
| 2869 | - public $sqlite_version = ''; |
|
| 2870 | - |
|
| 2871 | - /** |
|
| 2872 | - * Constructeur |
|
| 2873 | - * |
|
| 2874 | - * @param string $serveur |
|
| 2875 | - * @return bool |
|
| 2876 | - */ |
|
| 2877 | - public function __construct($serveur = '') { |
|
| 2878 | - _sqlite_init(); |
|
| 2879 | - $this->serveur = strtolower($serveur); |
|
| 2880 | - |
|
| 2881 | - if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)) { |
|
| 2882 | - spip_log('Aucune connexion sqlite (link)', 'sqlite.' . _LOG_ERREUR); |
|
| 2883 | - |
|
| 2884 | - return false; |
|
| 2885 | - } |
|
| 2886 | - |
|
| 2887 | - $this->sqlite_version = _sqlite_is_version('', $this->link); |
|
| 2888 | - |
|
| 2889 | - $this->prefixe = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['prefixe']; |
|
| 2890 | - $this->db = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['db']; |
|
| 2891 | - |
|
| 2892 | - // tracage des requetes ? |
|
| 2893 | - $this->tracer = (isset($_GET['var_profile']) && $_GET['var_profile']); |
|
| 2894 | - } |
|
| 2895 | - |
|
| 2896 | - /** |
|
| 2897 | - * Lancer la requête transmise et faire le tracage si demandé |
|
| 2898 | - * |
|
| 2899 | - * @param string $query |
|
| 2900 | - * Requête à exécuter |
|
| 2901 | - * @param bool|null $tracer |
|
| 2902 | - * true pour tracer la requête |
|
| 2903 | - * @return bool|PDOStatement|array |
|
| 2904 | - */ |
|
| 2905 | - public function executer_requete($query, $tracer = null) { |
|
| 2906 | - if (is_null($tracer)) { |
|
| 2907 | - $tracer = $this->tracer; |
|
| 2908 | - } |
|
| 2909 | - $err = ''; |
|
| 2910 | - $t = 0; |
|
| 2911 | - if ($tracer or (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES)) { |
|
| 2912 | - include_spip('public/tracer'); |
|
| 2913 | - $t = trace_query_start(); |
|
| 2914 | - } |
|
| 2915 | - |
|
| 2916 | - # spip_log("requete: $this->serveur >> $query",'sqlite.'._LOG_DEBUG); // boum ? pourquoi ? |
|
| 2917 | - if ($this->link) { |
|
| 2918 | - // memoriser la derniere erreur PHP vue |
|
| 2919 | - $last_error = (function_exists('error_get_last') ? error_get_last() : ''); |
|
| 2920 | - $e = null; |
|
| 2921 | - // sauver la derniere requete |
|
| 2922 | - $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['last'] = $query; |
|
| 2923 | - $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['total_requetes']++; |
|
| 2924 | - |
|
| 2925 | - try { |
|
| 2926 | - $r = $this->link->query($query); |
|
| 2927 | - } catch (\PDOException $e) { |
|
| 2928 | - spip_log('PDOException: ' . $e->getMessage(), 'sqlite.' . _LOG_DEBUG); |
|
| 2929 | - $r = false; |
|
| 2930 | - } |
|
| 2931 | - // sauvegarde de la requete (elle y est deja dans $r->queryString) |
|
| 2932 | - # $r->spipQueryString = $query; |
|
| 2933 | - |
|
| 2934 | - // comptage : oblige de compter le nombre d'entrees retournees |
|
| 2935 | - // par une requete SELECT |
|
| 2936 | - // aucune autre solution ne donne le nombre attendu :( ! |
|
| 2937 | - // particulierement s'il y a des LIMIT dans la requete. |
|
| 2938 | - if (strtoupper(substr(ltrim($query), 0, 6)) == 'SELECT') { |
|
| 2939 | - if ($r) { |
|
| 2940 | - // noter le link et la query pour faire le comptage *si* on en a besoin |
|
| 2941 | - $r->spipSqliteRowCount = [$this->link, $query]; |
|
| 2942 | - } elseif ($r instanceof PDOStatement) { |
|
| 2943 | - $r->spipSqliteRowCount = 0; |
|
| 2944 | - } |
|
| 2945 | - } |
|
| 2946 | - |
|
| 2947 | - // loger les warnings/erreurs eventuels de sqlite remontant dans PHP |
|
| 2948 | - if ($e and $e instanceof \PDOException) { |
|
| 2949 | - $err = strip_tags($e->getMessage()) . ' in ' . $e->getFile() . ' line ' . $e->getLine(); |
|
| 2950 | - spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR); |
|
| 2951 | - } elseif ($err = (function_exists('error_get_last') ? error_get_last() : '') and $err != $last_error) { |
|
| 2952 | - $err = strip_tags($err['message']) . ' in ' . $err['file'] . ' line ' . $err['line']; |
|
| 2953 | - spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR); |
|
| 2954 | - } else { |
|
| 2955 | - $err = ''; |
|
| 2956 | - } |
|
| 2957 | - } else { |
|
| 2958 | - $r = false; |
|
| 2959 | - } |
|
| 2960 | - |
|
| 2961 | - if (spip_sqlite_errno($this->serveur)) { |
|
| 2962 | - $err .= spip_sqlite_error($query, $this->serveur); |
|
| 2963 | - } |
|
| 2964 | - |
|
| 2965 | - return $t ? trace_query_end($query, $t, $r, $err, $this->serveur) : $r; |
|
| 2966 | - } |
|
| 2967 | - |
|
| 2968 | - /** |
|
| 2969 | - * Obtient l'identifiant de la dernière ligne insérée ou modifiée |
|
| 2970 | - * |
|
| 2971 | - * @return string|false |
|
| 2972 | - **/ |
|
| 2973 | - public function last_insert_id() { |
|
| 2974 | - return $this->link->lastInsertId(); |
|
| 2975 | - } |
|
| 2855 | + /** @var string Texte de la requête */ |
|
| 2856 | + public $query = ''; // la requete |
|
| 2857 | + /** @var string Nom de la connexion */ |
|
| 2858 | + public $serveur = ''; |
|
| 2859 | + /** @var PDO Identifiant de la connexion SQLite */ |
|
| 2860 | + public $link = ''; |
|
| 2861 | + /** @var string Prefixe des tables SPIP */ |
|
| 2862 | + public $prefixe = ''; |
|
| 2863 | + /** @var string Nom de la base de donnée */ |
|
| 2864 | + public $db = ''; |
|
| 2865 | + /** @var bool Doit-on tracer les requetes (var_profile) ? */ |
|
| 2866 | + public $tracer = false; // doit-on tracer les requetes (var_profile) |
|
| 2867 | + |
|
| 2868 | + /** @var string Version de SQLite (2 ou 3) */ |
|
| 2869 | + public $sqlite_version = ''; |
|
| 2870 | + |
|
| 2871 | + /** |
|
| 2872 | + * Constructeur |
|
| 2873 | + * |
|
| 2874 | + * @param string $serveur |
|
| 2875 | + * @return bool |
|
| 2876 | + */ |
|
| 2877 | + public function __construct($serveur = '') { |
|
| 2878 | + _sqlite_init(); |
|
| 2879 | + $this->serveur = strtolower($serveur); |
|
| 2880 | + |
|
| 2881 | + if (!($this->link = _sqlite_link($this->serveur)) && (!defined('_ECRIRE_INSTALL') || !_ECRIRE_INSTALL)) { |
|
| 2882 | + spip_log('Aucune connexion sqlite (link)', 'sqlite.' . _LOG_ERREUR); |
|
| 2883 | + |
|
| 2884 | + return false; |
|
| 2885 | + } |
|
| 2886 | + |
|
| 2887 | + $this->sqlite_version = _sqlite_is_version('', $this->link); |
|
| 2888 | + |
|
| 2889 | + $this->prefixe = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['prefixe']; |
|
| 2890 | + $this->db = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['db']; |
|
| 2891 | + |
|
| 2892 | + // tracage des requetes ? |
|
| 2893 | + $this->tracer = (isset($_GET['var_profile']) && $_GET['var_profile']); |
|
| 2894 | + } |
|
| 2895 | + |
|
| 2896 | + /** |
|
| 2897 | + * Lancer la requête transmise et faire le tracage si demandé |
|
| 2898 | + * |
|
| 2899 | + * @param string $query |
|
| 2900 | + * Requête à exécuter |
|
| 2901 | + * @param bool|null $tracer |
|
| 2902 | + * true pour tracer la requête |
|
| 2903 | + * @return bool|PDOStatement|array |
|
| 2904 | + */ |
|
| 2905 | + public function executer_requete($query, $tracer = null) { |
|
| 2906 | + if (is_null($tracer)) { |
|
| 2907 | + $tracer = $this->tracer; |
|
| 2908 | + } |
|
| 2909 | + $err = ''; |
|
| 2910 | + $t = 0; |
|
| 2911 | + if ($tracer or (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES)) { |
|
| 2912 | + include_spip('public/tracer'); |
|
| 2913 | + $t = trace_query_start(); |
|
| 2914 | + } |
|
| 2915 | + |
|
| 2916 | + # spip_log("requete: $this->serveur >> $query",'sqlite.'._LOG_DEBUG); // boum ? pourquoi ? |
|
| 2917 | + if ($this->link) { |
|
| 2918 | + // memoriser la derniere erreur PHP vue |
|
| 2919 | + $last_error = (function_exists('error_get_last') ? error_get_last() : ''); |
|
| 2920 | + $e = null; |
|
| 2921 | + // sauver la derniere requete |
|
| 2922 | + $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['last'] = $query; |
|
| 2923 | + $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['total_requetes']++; |
|
| 2924 | + |
|
| 2925 | + try { |
|
| 2926 | + $r = $this->link->query($query); |
|
| 2927 | + } catch (\PDOException $e) { |
|
| 2928 | + spip_log('PDOException: ' . $e->getMessage(), 'sqlite.' . _LOG_DEBUG); |
|
| 2929 | + $r = false; |
|
| 2930 | + } |
|
| 2931 | + // sauvegarde de la requete (elle y est deja dans $r->queryString) |
|
| 2932 | + # $r->spipQueryString = $query; |
|
| 2933 | + |
|
| 2934 | + // comptage : oblige de compter le nombre d'entrees retournees |
|
| 2935 | + // par une requete SELECT |
|
| 2936 | + // aucune autre solution ne donne le nombre attendu :( ! |
|
| 2937 | + // particulierement s'il y a des LIMIT dans la requete. |
|
| 2938 | + if (strtoupper(substr(ltrim($query), 0, 6)) == 'SELECT') { |
|
| 2939 | + if ($r) { |
|
| 2940 | + // noter le link et la query pour faire le comptage *si* on en a besoin |
|
| 2941 | + $r->spipSqliteRowCount = [$this->link, $query]; |
|
| 2942 | + } elseif ($r instanceof PDOStatement) { |
|
| 2943 | + $r->spipSqliteRowCount = 0; |
|
| 2944 | + } |
|
| 2945 | + } |
|
| 2946 | + |
|
| 2947 | + // loger les warnings/erreurs eventuels de sqlite remontant dans PHP |
|
| 2948 | + if ($e and $e instanceof \PDOException) { |
|
| 2949 | + $err = strip_tags($e->getMessage()) . ' in ' . $e->getFile() . ' line ' . $e->getLine(); |
|
| 2950 | + spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR); |
|
| 2951 | + } elseif ($err = (function_exists('error_get_last') ? error_get_last() : '') and $err != $last_error) { |
|
| 2952 | + $err = strip_tags($err['message']) . ' in ' . $err['file'] . ' line ' . $err['line']; |
|
| 2953 | + spip_log("$err - " . $query, 'sqlite.' . _LOG_ERREUR); |
|
| 2954 | + } else { |
|
| 2955 | + $err = ''; |
|
| 2956 | + } |
|
| 2957 | + } else { |
|
| 2958 | + $r = false; |
|
| 2959 | + } |
|
| 2960 | + |
|
| 2961 | + if (spip_sqlite_errno($this->serveur)) { |
|
| 2962 | + $err .= spip_sqlite_error($query, $this->serveur); |
|
| 2963 | + } |
|
| 2964 | + |
|
| 2965 | + return $t ? trace_query_end($query, $t, $r, $err, $this->serveur) : $r; |
|
| 2966 | + } |
|
| 2967 | + |
|
| 2968 | + /** |
|
| 2969 | + * Obtient l'identifiant de la dernière ligne insérée ou modifiée |
|
| 2970 | + * |
|
| 2971 | + * @return string|false |
|
| 2972 | + **/ |
|
| 2973 | + public function last_insert_id() { |
|
| 2974 | + return $this->link->lastInsertId(); |
|
| 2975 | + } |
|
| 2976 | 2976 | } |
| 2977 | 2977 | |
| 2978 | 2978 | |
@@ -2982,206 +2982,206 @@ discard block |
||
| 2982 | 2982 | * (fonction pour proteger les textes) |
| 2983 | 2983 | */ |
| 2984 | 2984 | class sqlite_traducteur { |
| 2985 | - /** @var string $query Texte de la requête */ |
|
| 2986 | - public $query = ''; |
|
| 2987 | - /** @var string $prefixe Préfixe des tables */ |
|
| 2988 | - public $prefixe = ''; |
|
| 2989 | - /** @var string $sqlite_version Version de sqlite (2 ou 3) */ |
|
| 2990 | - public $sqlite_version = ''; |
|
| 2991 | - |
|
| 2992 | - /** Pour les corrections à effectuer sur les requêtes : array(code=>'texte') trouvé |
|
| 2993 | - * |
|
| 2994 | - * @var array |
|
| 2995 | - */ |
|
| 2996 | - public $textes = []; |
|
| 2997 | - |
|
| 2998 | - /** |
|
| 2999 | - * Constructeur |
|
| 3000 | - * |
|
| 3001 | - * @param string $query Requête à préparer |
|
| 3002 | - * @param string $prefixe Prefixe des tables à utiliser |
|
| 3003 | - * @param string $sqlite_version Version SQLite (2 ou 3) |
|
| 3004 | - */ |
|
| 3005 | - public function __construct($query, $prefixe, $sqlite_version) { |
|
| 3006 | - $this->query = $query; |
|
| 3007 | - $this->prefixe = $prefixe; |
|
| 3008 | - $this->sqlite_version = $sqlite_version; |
|
| 3009 | - } |
|
| 3010 | - |
|
| 3011 | - /** |
|
| 3012 | - * Transformer la requete pour SQLite |
|
| 3013 | - * |
|
| 3014 | - * Enlève les textes, transforme la requête pour quelle soit |
|
| 3015 | - * bien interprétée par SQLite, puis remet les textes |
|
| 3016 | - * la fonction affecte `$this->query` |
|
| 3017 | - */ |
|
| 3018 | - public function traduire_requete() { |
|
| 3019 | - // |
|
| 3020 | - // 1) Protection des textes en les remplacant par des codes |
|
| 3021 | - // |
|
| 3022 | - // enlever les 'textes' et initialiser avec |
|
| 3023 | - list($this->query, $textes) = query_echappe_textes($this->query); |
|
| 3024 | - |
|
| 3025 | - // |
|
| 3026 | - // 2) Corrections de la requete |
|
| 3027 | - // |
|
| 3028 | - // Correction Create Database |
|
| 3029 | - // Create Database -> requete ignoree |
|
| 3030 | - if (strpos($this->query, 'CREATE DATABASE') === 0) { |
|
| 3031 | - spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.' . _LOG_AVERTISSEMENT); |
|
| 3032 | - $this->query = 'SELECT 1'; |
|
| 3033 | - } |
|
| 3034 | - |
|
| 3035 | - // Correction Insert Ignore |
|
| 3036 | - // INSERT IGNORE -> insert (tout court et pas 'insert or replace') |
|
| 3037 | - if (strpos($this->query, 'INSERT IGNORE') === 0) { |
|
| 3038 | - spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.' . _LOG_DEBUG); |
|
| 3039 | - $this->query = 'INSERT ' . substr($this->query, '13'); |
|
| 3040 | - } |
|
| 3041 | - |
|
| 3042 | - // Correction des dates avec INTERVAL |
|
| 3043 | - // utiliser sql_date_proche() de preference |
|
| 3044 | - if (strpos($this->query, 'INTERVAL') !== false) { |
|
| 3045 | - $this->query = preg_replace_callback( |
|
| 3046 | - '/DATE_(ADD|SUB)(.*)INTERVAL\s+(\d+)\s+([a-zA-Z]+)\)/U', |
|
| 3047 | - [&$this, '_remplacerDateParTime'], |
|
| 3048 | - $this->query |
|
| 3049 | - ); |
|
| 3050 | - } |
|
| 3051 | - |
|
| 3052 | - if (strpos($this->query, 'LEFT(') !== false) { |
|
| 3053 | - $this->query = str_replace('LEFT(', '_LEFT(', $this->query); |
|
| 3054 | - } |
|
| 3055 | - |
|
| 3056 | - if (strpos($this->query, 'TIMESTAMPDIFF(') !== false) { |
|
| 3057 | - $this->query = preg_replace('/TIMESTAMPDIFF\(\s*([^,]*)\s*,/Uims', "TIMESTAMPDIFF('\\1',", $this->query); |
|
| 3058 | - } |
|
| 3059 | - |
|
| 3060 | - |
|
| 3061 | - // Correction Using |
|
| 3062 | - // USING (non reconnu en sqlite2) |
|
| 3063 | - // problematique car la jointure ne se fait pas du coup. |
|
| 3064 | - if (($this->sqlite_version == 2) && (strpos($this->query, 'USING') !== false)) { |
|
| 3065 | - spip_log( |
|
| 3066 | - "'USING (champ)' n'est pas reconnu en SQLite 2. Utilisez 'ON table1.champ = table2.champ'", |
|
| 3067 | - 'sqlite.' . _LOG_ERREUR |
|
| 3068 | - ); |
|
| 3069 | - $this->query = preg_replace('/USING\s*\([^\)]*\)/', '', $this->query); |
|
| 3070 | - } |
|
| 3071 | - |
|
| 3072 | - // Correction Field |
|
| 3073 | - // remplace FIELD(table,i,j,k...) par CASE WHEN table=i THEN n ... ELSE 0 END |
|
| 3074 | - if (strpos($this->query, 'FIELD') !== false) { |
|
| 3075 | - $this->query = preg_replace_callback( |
|
| 3076 | - '/FIELD\s*\(([^\)]*)\)/', |
|
| 3077 | - [&$this, '_remplacerFieldParCase'], |
|
| 3078 | - $this->query |
|
| 3079 | - ); |
|
| 3080 | - } |
|
| 3081 | - |
|
| 3082 | - // Correction des noms de tables FROM |
|
| 3083 | - // mettre les bons noms de table dans from, update, insert, replace... |
|
| 3084 | - if (preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/iS', $this->query, $regs)) { |
|
| 3085 | - $suite = strstr($this->query, $regs[0]); |
|
| 3086 | - $this->query = substr($this->query, 0, -strlen($suite)); |
|
| 3087 | - } else { |
|
| 3088 | - $suite = ''; |
|
| 3089 | - } |
|
| 3090 | - $pref = ($this->prefixe) ? $this->prefixe . '_' : ''; |
|
| 3091 | - $this->query = preg_replace('/([,\s])spip_/S', '\1' . $pref, $this->query) . $suite; |
|
| 3092 | - |
|
| 3093 | - // Correction zero AS x |
|
| 3094 | - // pg n'aime pas 0+x AS alias, sqlite, dans le meme style, |
|
| 3095 | - // n'apprecie pas du tout SELECT 0 as x ... ORDER BY x |
|
| 3096 | - // il dit que x ne doit pas être un integer dans le order by ! |
|
| 3097 | - // on remplace du coup x par vide() dans ce cas uniquement |
|
| 3098 | - // |
|
| 3099 | - // apparait dans public/vertebrer.php et dans le plugin menu aussi qui genere aussi ce genre de requete via un {par num #GET{tri_num}} |
|
| 3100 | - // mais est-ce encore un soucis pour sqlite en 2021 ? (ie commenter le preg_replace marche très bien en sqlite 3.28) |
|
| 3101 | - if ((strpos($this->query, '0 AS') !== false)) { |
|
| 3102 | - // on ne remplace que dans ORDER BY ou GROUP BY |
|
| 3103 | - if (preg_match('/\s(ORDER|GROUP) BY\s/i', $this->query, $regs)) { |
|
| 3104 | - $suite = strstr($this->query, $regs[0]); |
|
| 3105 | - $this->query = substr($this->query, 0, -strlen($suite)); |
|
| 3106 | - |
|
| 3107 | - // on cherche les noms des x dans 0 AS x |
|
| 3108 | - // on remplace dans $suite le nom par vide() |
|
| 3109 | - preg_match_all('/\b0 AS\s*([^\s,]+)/', $this->query, $matches, PREG_PATTERN_ORDER); |
|
| 3110 | - foreach ($matches[1] as $m) { |
|
| 3111 | - if (strpos($suite, $m) !== false) { |
|
| 3112 | - $suite = preg_replace(",\b$m\b,", 'VIDE()', $suite); |
|
| 3113 | - } |
|
| 3114 | - } |
|
| 3115 | - $this->query .= $suite; |
|
| 3116 | - } |
|
| 3117 | - } |
|
| 3118 | - |
|
| 3119 | - // Correction possible des divisions entieres |
|
| 3120 | - // Le standard SQL (lequel? ou?) semble indiquer que |
|
| 3121 | - // a/b=c doit donner c entier si a et b sont entiers 4/3=1. |
|
| 3122 | - // C'est ce que retournent effectivement SQL Server et SQLite |
|
| 3123 | - // Ce n'est pas ce qu'applique MySQL qui retourne un reel : 4/3=1.333... |
|
| 3124 | - // |
|
| 3125 | - // On peut forcer la conversion en multipliant par 1.0 avant la division |
|
| 3126 | - // /!\ SQLite 3.5.9 Debian/Ubuntu est victime d'un bug en plus ! |
|
| 3127 | - // cf. https://bugs.launchpad.net/ubuntu/+source/sqlite3/+bug/254228 |
|
| 3128 | - // http://www.sqlite.org/cvstrac/tktview?tn=3202 |
|
| 3129 | - // (4*1.0/3) n'est pas rendu dans ce cas ! |
|
| 3130 | - # $this->query = str_replace('/','* 1.00 / ',$this->query); |
|
| 3131 | - |
|
| 3132 | - |
|
| 3133 | - // Correction critere REGEXP, non reconnu en sqlite2 |
|
| 3134 | - if (($this->sqlite_version == 2) && (strpos($this->query, 'REGEXP') !== false)) { |
|
| 3135 | - $this->query = preg_replace('/([^\s\(]*)(\s*)REGEXP(\s*)([^\s\)]*)/', 'REGEXP($4, $1)', $this->query); |
|
| 3136 | - } |
|
| 3137 | - |
|
| 3138 | - // |
|
| 3139 | - // 3) Remise en place des textes d'origine |
|
| 3140 | - // |
|
| 3141 | - // Correction Antiquotes et echappements |
|
| 3142 | - // ` => rien |
|
| 3143 | - if (strpos($this->query, '`') !== false) { |
|
| 3144 | - $this->query = str_replace('`', '', $this->query); |
|
| 3145 | - } |
|
| 3146 | - |
|
| 3147 | - $this->query = query_reinjecte_textes($this->query, $textes); |
|
| 3148 | - |
|
| 3149 | - return $this->query; |
|
| 3150 | - } |
|
| 3151 | - |
|
| 3152 | - |
|
| 3153 | - /** |
|
| 3154 | - * Callback pour remplacer `DATE_` / `INTERVAL` |
|
| 3155 | - * par `DATE ... strtotime` |
|
| 3156 | - * |
|
| 3157 | - * @param array $matches Captures |
|
| 3158 | - * @return string Texte de date compris par SQLite |
|
| 3159 | - */ |
|
| 3160 | - public function _remplacerDateParTime($matches) { |
|
| 3161 | - $op = strtoupper($matches[1] == 'ADD') ? '+' : '-'; |
|
| 3162 | - |
|
| 3163 | - return "datetime$matches[2] '$op$matches[3] $matches[4]')"; |
|
| 3164 | - } |
|
| 3165 | - |
|
| 3166 | - /** |
|
| 3167 | - * Callback pour remplacer `FIELD(table,i,j,k...)` |
|
| 3168 | - * par `CASE WHEN table=i THEN n ... ELSE 0 END` |
|
| 3169 | - * |
|
| 3170 | - * @param array $matches Captures |
|
| 3171 | - * @return string Texte de liste ordonnée compris par SQLite |
|
| 3172 | - */ |
|
| 3173 | - public function _remplacerFieldParCase($matches) { |
|
| 3174 | - $fields = substr($matches[0], 6, -1); // ne recuperer que l'interieur X de field(X) |
|
| 3175 | - $t = explode(',', $fields); |
|
| 3176 | - $index = array_shift($t); |
|
| 3177 | - |
|
| 3178 | - $res = ''; |
|
| 3179 | - $n = 0; |
|
| 3180 | - foreach ($t as $v) { |
|
| 3181 | - $n++; |
|
| 3182 | - $res .= "\nWHEN $index=$v THEN $n"; |
|
| 3183 | - } |
|
| 3184 | - |
|
| 3185 | - return "CASE $res ELSE 0 END "; |
|
| 3186 | - } |
|
| 2985 | + /** @var string $query Texte de la requête */ |
|
| 2986 | + public $query = ''; |
|
| 2987 | + /** @var string $prefixe Préfixe des tables */ |
|
| 2988 | + public $prefixe = ''; |
|
| 2989 | + /** @var string $sqlite_version Version de sqlite (2 ou 3) */ |
|
| 2990 | + public $sqlite_version = ''; |
|
| 2991 | + |
|
| 2992 | + /** Pour les corrections à effectuer sur les requêtes : array(code=>'texte') trouvé |
|
| 2993 | + * |
|
| 2994 | + * @var array |
|
| 2995 | + */ |
|
| 2996 | + public $textes = []; |
|
| 2997 | + |
|
| 2998 | + /** |
|
| 2999 | + * Constructeur |
|
| 3000 | + * |
|
| 3001 | + * @param string $query Requête à préparer |
|
| 3002 | + * @param string $prefixe Prefixe des tables à utiliser |
|
| 3003 | + * @param string $sqlite_version Version SQLite (2 ou 3) |
|
| 3004 | + */ |
|
| 3005 | + public function __construct($query, $prefixe, $sqlite_version) { |
|
| 3006 | + $this->query = $query; |
|
| 3007 | + $this->prefixe = $prefixe; |
|
| 3008 | + $this->sqlite_version = $sqlite_version; |
|
| 3009 | + } |
|
| 3010 | + |
|
| 3011 | + /** |
|
| 3012 | + * Transformer la requete pour SQLite |
|
| 3013 | + * |
|
| 3014 | + * Enlève les textes, transforme la requête pour quelle soit |
|
| 3015 | + * bien interprétée par SQLite, puis remet les textes |
|
| 3016 | + * la fonction affecte `$this->query` |
|
| 3017 | + */ |
|
| 3018 | + public function traduire_requete() { |
|
| 3019 | + // |
|
| 3020 | + // 1) Protection des textes en les remplacant par des codes |
|
| 3021 | + // |
|
| 3022 | + // enlever les 'textes' et initialiser avec |
|
| 3023 | + list($this->query, $textes) = query_echappe_textes($this->query); |
|
| 3024 | + |
|
| 3025 | + // |
|
| 3026 | + // 2) Corrections de la requete |
|
| 3027 | + // |
|
| 3028 | + // Correction Create Database |
|
| 3029 | + // Create Database -> requete ignoree |
|
| 3030 | + if (strpos($this->query, 'CREATE DATABASE') === 0) { |
|
| 3031 | + spip_log("Sqlite : requete non executee -> $this->query", 'sqlite.' . _LOG_AVERTISSEMENT); |
|
| 3032 | + $this->query = 'SELECT 1'; |
|
| 3033 | + } |
|
| 3034 | + |
|
| 3035 | + // Correction Insert Ignore |
|
| 3036 | + // INSERT IGNORE -> insert (tout court et pas 'insert or replace') |
|
| 3037 | + if (strpos($this->query, 'INSERT IGNORE') === 0) { |
|
| 3038 | + spip_log("Sqlite : requete transformee -> $this->query", 'sqlite.' . _LOG_DEBUG); |
|
| 3039 | + $this->query = 'INSERT ' . substr($this->query, '13'); |
|
| 3040 | + } |
|
| 3041 | + |
|
| 3042 | + // Correction des dates avec INTERVAL |
|
| 3043 | + // utiliser sql_date_proche() de preference |
|
| 3044 | + if (strpos($this->query, 'INTERVAL') !== false) { |
|
| 3045 | + $this->query = preg_replace_callback( |
|
| 3046 | + '/DATE_(ADD|SUB)(.*)INTERVAL\s+(\d+)\s+([a-zA-Z]+)\)/U', |
|
| 3047 | + [&$this, '_remplacerDateParTime'], |
|
| 3048 | + $this->query |
|
| 3049 | + ); |
|
| 3050 | + } |
|
| 3051 | + |
|
| 3052 | + if (strpos($this->query, 'LEFT(') !== false) { |
|
| 3053 | + $this->query = str_replace('LEFT(', '_LEFT(', $this->query); |
|
| 3054 | + } |
|
| 3055 | + |
|
| 3056 | + if (strpos($this->query, 'TIMESTAMPDIFF(') !== false) { |
|
| 3057 | + $this->query = preg_replace('/TIMESTAMPDIFF\(\s*([^,]*)\s*,/Uims', "TIMESTAMPDIFF('\\1',", $this->query); |
|
| 3058 | + } |
|
| 3059 | + |
|
| 3060 | + |
|
| 3061 | + // Correction Using |
|
| 3062 | + // USING (non reconnu en sqlite2) |
|
| 3063 | + // problematique car la jointure ne se fait pas du coup. |
|
| 3064 | + if (($this->sqlite_version == 2) && (strpos($this->query, 'USING') !== false)) { |
|
| 3065 | + spip_log( |
|
| 3066 | + "'USING (champ)' n'est pas reconnu en SQLite 2. Utilisez 'ON table1.champ = table2.champ'", |
|
| 3067 | + 'sqlite.' . _LOG_ERREUR |
|
| 3068 | + ); |
|
| 3069 | + $this->query = preg_replace('/USING\s*\([^\)]*\)/', '', $this->query); |
|
| 3070 | + } |
|
| 3071 | + |
|
| 3072 | + // Correction Field |
|
| 3073 | + // remplace FIELD(table,i,j,k...) par CASE WHEN table=i THEN n ... ELSE 0 END |
|
| 3074 | + if (strpos($this->query, 'FIELD') !== false) { |
|
| 3075 | + $this->query = preg_replace_callback( |
|
| 3076 | + '/FIELD\s*\(([^\)]*)\)/', |
|
| 3077 | + [&$this, '_remplacerFieldParCase'], |
|
| 3078 | + $this->query |
|
| 3079 | + ); |
|
| 3080 | + } |
|
| 3081 | + |
|
| 3082 | + // Correction des noms de tables FROM |
|
| 3083 | + // mettre les bons noms de table dans from, update, insert, replace... |
|
| 3084 | + if (preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/iS', $this->query, $regs)) { |
|
| 3085 | + $suite = strstr($this->query, $regs[0]); |
|
| 3086 | + $this->query = substr($this->query, 0, -strlen($suite)); |
|
| 3087 | + } else { |
|
| 3088 | + $suite = ''; |
|
| 3089 | + } |
|
| 3090 | + $pref = ($this->prefixe) ? $this->prefixe . '_' : ''; |
|
| 3091 | + $this->query = preg_replace('/([,\s])spip_/S', '\1' . $pref, $this->query) . $suite; |
|
| 3092 | + |
|
| 3093 | + // Correction zero AS x |
|
| 3094 | + // pg n'aime pas 0+x AS alias, sqlite, dans le meme style, |
|
| 3095 | + // n'apprecie pas du tout SELECT 0 as x ... ORDER BY x |
|
| 3096 | + // il dit que x ne doit pas être un integer dans le order by ! |
|
| 3097 | + // on remplace du coup x par vide() dans ce cas uniquement |
|
| 3098 | + // |
|
| 3099 | + // apparait dans public/vertebrer.php et dans le plugin menu aussi qui genere aussi ce genre de requete via un {par num #GET{tri_num}} |
|
| 3100 | + // mais est-ce encore un soucis pour sqlite en 2021 ? (ie commenter le preg_replace marche très bien en sqlite 3.28) |
|
| 3101 | + if ((strpos($this->query, '0 AS') !== false)) { |
|
| 3102 | + // on ne remplace que dans ORDER BY ou GROUP BY |
|
| 3103 | + if (preg_match('/\s(ORDER|GROUP) BY\s/i', $this->query, $regs)) { |
|
| 3104 | + $suite = strstr($this->query, $regs[0]); |
|
| 3105 | + $this->query = substr($this->query, 0, -strlen($suite)); |
|
| 3106 | + |
|
| 3107 | + // on cherche les noms des x dans 0 AS x |
|
| 3108 | + // on remplace dans $suite le nom par vide() |
|
| 3109 | + preg_match_all('/\b0 AS\s*([^\s,]+)/', $this->query, $matches, PREG_PATTERN_ORDER); |
|
| 3110 | + foreach ($matches[1] as $m) { |
|
| 3111 | + if (strpos($suite, $m) !== false) { |
|
| 3112 | + $suite = preg_replace(",\b$m\b,", 'VIDE()', $suite); |
|
| 3113 | + } |
|
| 3114 | + } |
|
| 3115 | + $this->query .= $suite; |
|
| 3116 | + } |
|
| 3117 | + } |
|
| 3118 | + |
|
| 3119 | + // Correction possible des divisions entieres |
|
| 3120 | + // Le standard SQL (lequel? ou?) semble indiquer que |
|
| 3121 | + // a/b=c doit donner c entier si a et b sont entiers 4/3=1. |
|
| 3122 | + // C'est ce que retournent effectivement SQL Server et SQLite |
|
| 3123 | + // Ce n'est pas ce qu'applique MySQL qui retourne un reel : 4/3=1.333... |
|
| 3124 | + // |
|
| 3125 | + // On peut forcer la conversion en multipliant par 1.0 avant la division |
|
| 3126 | + // /!\ SQLite 3.5.9 Debian/Ubuntu est victime d'un bug en plus ! |
|
| 3127 | + // cf. https://bugs.launchpad.net/ubuntu/+source/sqlite3/+bug/254228 |
|
| 3128 | + // http://www.sqlite.org/cvstrac/tktview?tn=3202 |
|
| 3129 | + // (4*1.0/3) n'est pas rendu dans ce cas ! |
|
| 3130 | + # $this->query = str_replace('/','* 1.00 / ',$this->query); |
|
| 3131 | + |
|
| 3132 | + |
|
| 3133 | + // Correction critere REGEXP, non reconnu en sqlite2 |
|
| 3134 | + if (($this->sqlite_version == 2) && (strpos($this->query, 'REGEXP') !== false)) { |
|
| 3135 | + $this->query = preg_replace('/([^\s\(]*)(\s*)REGEXP(\s*)([^\s\)]*)/', 'REGEXP($4, $1)', $this->query); |
|
| 3136 | + } |
|
| 3137 | + |
|
| 3138 | + // |
|
| 3139 | + // 3) Remise en place des textes d'origine |
|
| 3140 | + // |
|
| 3141 | + // Correction Antiquotes et echappements |
|
| 3142 | + // ` => rien |
|
| 3143 | + if (strpos($this->query, '`') !== false) { |
|
| 3144 | + $this->query = str_replace('`', '', $this->query); |
|
| 3145 | + } |
|
| 3146 | + |
|
| 3147 | + $this->query = query_reinjecte_textes($this->query, $textes); |
|
| 3148 | + |
|
| 3149 | + return $this->query; |
|
| 3150 | + } |
|
| 3151 | + |
|
| 3152 | + |
|
| 3153 | + /** |
|
| 3154 | + * Callback pour remplacer `DATE_` / `INTERVAL` |
|
| 3155 | + * par `DATE ... strtotime` |
|
| 3156 | + * |
|
| 3157 | + * @param array $matches Captures |
|
| 3158 | + * @return string Texte de date compris par SQLite |
|
| 3159 | + */ |
|
| 3160 | + public function _remplacerDateParTime($matches) { |
|
| 3161 | + $op = strtoupper($matches[1] == 'ADD') ? '+' : '-'; |
|
| 3162 | + |
|
| 3163 | + return "datetime$matches[2] '$op$matches[3] $matches[4]')"; |
|
| 3164 | + } |
|
| 3165 | + |
|
| 3166 | + /** |
|
| 3167 | + * Callback pour remplacer `FIELD(table,i,j,k...)` |
|
| 3168 | + * par `CASE WHEN table=i THEN n ... ELSE 0 END` |
|
| 3169 | + * |
|
| 3170 | + * @param array $matches Captures |
|
| 3171 | + * @return string Texte de liste ordonnée compris par SQLite |
|
| 3172 | + */ |
|
| 3173 | + public function _remplacerFieldParCase($matches) { |
|
| 3174 | + $fields = substr($matches[0], 6, -1); // ne recuperer que l'interieur X de field(X) |
|
| 3175 | + $t = explode(',', $fields); |
|
| 3176 | + $index = array_shift($t); |
|
| 3177 | + |
|
| 3178 | + $res = ''; |
|
| 3179 | + $n = 0; |
|
| 3180 | + foreach ($t as $v) { |
|
| 3181 | + $n++; |
|
| 3182 | + $res .= "\nWHEN $index=$v THEN $n"; |
|
| 3183 | + } |
|
| 3184 | + |
|
| 3185 | + return "CASE $res ELSE 0 END "; |
|
| 3186 | + } |
|
| 3187 | 3187 | } |
@@ -4,410 +4,410 @@ 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 | - 'activer_plugin' => 'Plugin activeren', |
|
| 14 | - 'affichage' => 'Weergave', |
|
| 15 | - 'aide_non_disponible' => 'Dit deel van de online handleiding is nog niet beschikbaar in het Nederlands.', |
|
| 16 | - 'annuler_recherche' => 'Zoekopdracht stoppen', |
|
| 17 | - 'auteur' => 'Auteur:', |
|
| 18 | - 'avis_acces_interdit' => 'Toegang verboden', |
|
| 19 | - 'avis_acces_interdit_prive' => 'Je hebt geen toegangsrechten voor pagina <b>@exec@</b>.', |
|
| 20 | - 'avis_article_modifie' => 'LET OP: @nom_auteur_modif@ heeft @date_diff@ minuten geleden aan dit artikel gewerkt.', |
|
| 21 | - 'avis_aucun_resultat' => 'Geen resultaat.', |
|
| 22 | - 'avis_base_inaccessible' => 'Kan geen verbinding maken met database @base@.', |
|
| 23 | - 'avis_chemin_invalide_1' => 'De toegang die je hebt gekozen', |
|
| 24 | - 'avis_chemin_invalide_2' => 'lijkt niet geldig. Ga terug naar de vorige pagina en controleer de ingevulde gegevens.', |
|
| 25 | - 'avis_connexion_echec_1' => 'De verbinding met de database is mislukt.', |
|
| 26 | - 'avis_connexion_echec_2' => 'Keer terug naar de vorige pagina en kijk de gegevens na die je hebt ingevuld.', |
|
| 27 | - 'avis_connexion_echec_3' => '<b>LET OP</b> Op veel servers moet je vooraf om activatie van je toegang tot de database <b>vragen</b>. Als je geen verbinding kan maken, kijk dan na of je deze actie hebt ondernomen.', |
|
| 28 | - 'avis_connexion_erreur_creer_base' => 'De database kon niet worden gemaakt.', |
|
| 29 | - 'avis_connexion_erreur_nom_base' => 'De databasenaam kan enkel letters, cijfers en koppeltekens bevatten', |
|
| 30 | - 'avis_connexion_ldap_echec_1' => 'De verbinding met de LDAP-server is mislukt.', |
|
| 31 | - 'avis_connexion_ldap_echec_2' => 'Ga terug naar de vorige pagina en kijk na of de ingevulde gegevens correct zijn.', |
|
| 32 | - 'avis_connexion_ldap_echec_3' => 'Andere mogelijkheid is om de LDAP-ondersteuning om gebruikers in te voeren niet te gebruiken.', |
|
| 33 | - 'avis_deplacement_rubrique' => 'LET OP! Deze rubriek bevat @contient_breves@ nieuwsflits@scb@. Als je wil verplaatsten, bevestig dit dan door hier het vakje aan te vinken.', |
|
| 34 | - 'avis_erreur_connexion_mysql' => 'Verbinding met de SQL connectie mislukt', |
|
| 35 | - 'avis_espace_interdit' => '<b>Toegang verboden</b><div>SPIP is al geïnstalleerd.</div>', |
|
| 36 | - 'avis_lecture_noms_bases_1' => 'Het installatieprogramma heeft de namen van de geïnstalleerde databases niet kunnen lezen.', |
|
| 37 | - 'avis_lecture_noms_bases_2' => 'Geen enkele database is beschikbaar, ofwel is de functie die de databases zou moeten tonen om veiligheidsredenen niet geactiveerd (wat vaak het geval is bij providers).', |
|
| 38 | - 'avis_lecture_noms_bases_3' => 'In het andere geval is het heel waarschijnlijk dat een database met jouw aanmeldingsnaam (login) bruikbaar is:', |
|
| 39 | - 'avis_non_acces_page' => 'Je hebt geen toegang tot deze pagina.', |
|
| 40 | - 'avis_operation_echec' => 'De bewerking is mislukt.', |
|
| 41 | - 'avis_operation_impossible' => 'Onmogelijke handeling', |
|
| 42 | - 'avis_suppression_base' => 'LET OP: Het wissen van de gegevens is onomkeerbaar', |
|
| 12 | + // A |
|
| 13 | + 'activer_plugin' => 'Plugin activeren', |
|
| 14 | + 'affichage' => 'Weergave', |
|
| 15 | + 'aide_non_disponible' => 'Dit deel van de online handleiding is nog niet beschikbaar in het Nederlands.', |
|
| 16 | + 'annuler_recherche' => 'Zoekopdracht stoppen', |
|
| 17 | + 'auteur' => 'Auteur:', |
|
| 18 | + 'avis_acces_interdit' => 'Toegang verboden', |
|
| 19 | + 'avis_acces_interdit_prive' => 'Je hebt geen toegangsrechten voor pagina <b>@exec@</b>.', |
|
| 20 | + 'avis_article_modifie' => 'LET OP: @nom_auteur_modif@ heeft @date_diff@ minuten geleden aan dit artikel gewerkt.', |
|
| 21 | + 'avis_aucun_resultat' => 'Geen resultaat.', |
|
| 22 | + 'avis_base_inaccessible' => 'Kan geen verbinding maken met database @base@.', |
|
| 23 | + 'avis_chemin_invalide_1' => 'De toegang die je hebt gekozen', |
|
| 24 | + 'avis_chemin_invalide_2' => 'lijkt niet geldig. Ga terug naar de vorige pagina en controleer de ingevulde gegevens.', |
|
| 25 | + 'avis_connexion_echec_1' => 'De verbinding met de database is mislukt.', |
|
| 26 | + 'avis_connexion_echec_2' => 'Keer terug naar de vorige pagina en kijk de gegevens na die je hebt ingevuld.', |
|
| 27 | + 'avis_connexion_echec_3' => '<b>LET OP</b> Op veel servers moet je vooraf om activatie van je toegang tot de database <b>vragen</b>. Als je geen verbinding kan maken, kijk dan na of je deze actie hebt ondernomen.', |
|
| 28 | + 'avis_connexion_erreur_creer_base' => 'De database kon niet worden gemaakt.', |
|
| 29 | + 'avis_connexion_erreur_nom_base' => 'De databasenaam kan enkel letters, cijfers en koppeltekens bevatten', |
|
| 30 | + 'avis_connexion_ldap_echec_1' => 'De verbinding met de LDAP-server is mislukt.', |
|
| 31 | + 'avis_connexion_ldap_echec_2' => 'Ga terug naar de vorige pagina en kijk na of de ingevulde gegevens correct zijn.', |
|
| 32 | + 'avis_connexion_ldap_echec_3' => 'Andere mogelijkheid is om de LDAP-ondersteuning om gebruikers in te voeren niet te gebruiken.', |
|
| 33 | + 'avis_deplacement_rubrique' => 'LET OP! Deze rubriek bevat @contient_breves@ nieuwsflits@scb@. Als je wil verplaatsten, bevestig dit dan door hier het vakje aan te vinken.', |
|
| 34 | + 'avis_erreur_connexion_mysql' => 'Verbinding met de SQL connectie mislukt', |
|
| 35 | + 'avis_espace_interdit' => '<b>Toegang verboden</b><div>SPIP is al geïnstalleerd.</div>', |
|
| 36 | + 'avis_lecture_noms_bases_1' => 'Het installatieprogramma heeft de namen van de geïnstalleerde databases niet kunnen lezen.', |
|
| 37 | + 'avis_lecture_noms_bases_2' => 'Geen enkele database is beschikbaar, ofwel is de functie die de databases zou moeten tonen om veiligheidsredenen niet geactiveerd (wat vaak het geval is bij providers).', |
|
| 38 | + 'avis_lecture_noms_bases_3' => 'In het andere geval is het heel waarschijnlijk dat een database met jouw aanmeldingsnaam (login) bruikbaar is:', |
|
| 39 | + 'avis_non_acces_page' => 'Je hebt geen toegang tot deze pagina.', |
|
| 40 | + 'avis_operation_echec' => 'De bewerking is mislukt.', |
|
| 41 | + 'avis_operation_impossible' => 'Onmogelijke handeling', |
|
| 42 | + 'avis_suppression_base' => 'LET OP: Het wissen van de gegevens is onomkeerbaar', |
|
| 43 | 43 | |
| 44 | - // B |
|
| 45 | - 'bouton_acces_ldap' => 'LDAP toegang toevoegen', |
|
| 46 | - 'bouton_ajouter' => 'Toevoegen', |
|
| 47 | - 'bouton_annuler' => 'Annuleren', |
|
| 48 | - 'bouton_cache_activer' => 'Buffer (cache) reactiveren', |
|
| 49 | - 'bouton_cache_desactiver' => 'Buffer (cache) tijdelijk uitschakelen', |
|
| 50 | - 'bouton_demande_publication' => 'De publicatie van het artikel vragen', |
|
| 51 | - 'bouton_desactive_tout' => 'Alles deactiveren', |
|
| 52 | - 'bouton_desinstaller' => 'Terugtrekken', |
|
| 53 | - 'bouton_effacer_tout' => 'ALLES wissen', |
|
| 54 | - 'bouton_envoyer_message' => 'Definitief bericht: versturen', |
|
| 55 | - 'bouton_fermer' => 'Sluiten', |
|
| 56 | - 'bouton_mettre_a_jour_base' => 'Database update', |
|
| 57 | - 'bouton_modifier' => 'Wijzigen', |
|
| 58 | - 'bouton_radio_afficher' => 'Weergeven', |
|
| 59 | - 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Opnemen in de lijst van online redacteurs', |
|
| 60 | - 'bouton_radio_envoi_annonces_adresse' => 'Aankondigingen verzenden naar dit adres:', |
|
| 61 | - 'bouton_radio_envoi_liste_nouveautes' => 'De lijst met nieuwe bijdragen versturen', |
|
| 62 | - 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Niet opnemen in de lijst van redacteurs', |
|
| 63 | - 'bouton_radio_non_envoi_annonces_editoriales' => 'Geen editoriale aankondigingen versturen', |
|
| 64 | - 'bouton_redirection' => 'OMLEIDING', |
|
| 65 | - 'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Terugzetten naar de standaardwaardes', |
|
| 66 | - 'bouton_relancer_installation' => 'Installatie herstarten', |
|
| 67 | - 'bouton_reset_password' => 'Een nieuw wachtwoord genereren en per email opsturen', |
|
| 68 | - 'bouton_suivant' => 'Volgende', |
|
| 69 | - 'bouton_tenter_recuperation' => 'Poging tot herstel', |
|
| 70 | - 'bouton_test_proxy' => 'Proxy proberen', |
|
| 71 | - 'bouton_vider_cache' => 'De buffer (cache) leegmaken', |
|
| 44 | + // B |
|
| 45 | + 'bouton_acces_ldap' => 'LDAP toegang toevoegen', |
|
| 46 | + 'bouton_ajouter' => 'Toevoegen', |
|
| 47 | + 'bouton_annuler' => 'Annuleren', |
|
| 48 | + 'bouton_cache_activer' => 'Buffer (cache) reactiveren', |
|
| 49 | + 'bouton_cache_desactiver' => 'Buffer (cache) tijdelijk uitschakelen', |
|
| 50 | + 'bouton_demande_publication' => 'De publicatie van het artikel vragen', |
|
| 51 | + 'bouton_desactive_tout' => 'Alles deactiveren', |
|
| 52 | + 'bouton_desinstaller' => 'Terugtrekken', |
|
| 53 | + 'bouton_effacer_tout' => 'ALLES wissen', |
|
| 54 | + 'bouton_envoyer_message' => 'Definitief bericht: versturen', |
|
| 55 | + 'bouton_fermer' => 'Sluiten', |
|
| 56 | + 'bouton_mettre_a_jour_base' => 'Database update', |
|
| 57 | + 'bouton_modifier' => 'Wijzigen', |
|
| 58 | + 'bouton_radio_afficher' => 'Weergeven', |
|
| 59 | + 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Opnemen in de lijst van online redacteurs', |
|
| 60 | + 'bouton_radio_envoi_annonces_adresse' => 'Aankondigingen verzenden naar dit adres:', |
|
| 61 | + 'bouton_radio_envoi_liste_nouveautes' => 'De lijst met nieuwe bijdragen versturen', |
|
| 62 | + 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Niet opnemen in de lijst van redacteurs', |
|
| 63 | + 'bouton_radio_non_envoi_annonces_editoriales' => 'Geen editoriale aankondigingen versturen', |
|
| 64 | + 'bouton_redirection' => 'OMLEIDING', |
|
| 65 | + 'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Terugzetten naar de standaardwaardes', |
|
| 66 | + 'bouton_relancer_installation' => 'Installatie herstarten', |
|
| 67 | + 'bouton_reset_password' => 'Een nieuw wachtwoord genereren en per email opsturen', |
|
| 68 | + 'bouton_suivant' => 'Volgende', |
|
| 69 | + 'bouton_tenter_recuperation' => 'Poging tot herstel', |
|
| 70 | + 'bouton_test_proxy' => 'Proxy proberen', |
|
| 71 | + 'bouton_vider_cache' => 'De buffer (cache) leegmaken', |
|
| 72 | 72 | |
| 73 | - // C |
|
| 74 | - 'cache_modifiable_webmestre' => 'Deze parameter kan door de webmaster van de site gewijzigd worden.', |
|
| 75 | - 'calendrier_synchro' => 'Wanneer je <b>iCal</b> compatibele agendasoftware gebruikt, kan je deze synchroniseren met informatie van deze site.', |
|
| 76 | - 'config_activer_champs' => 'De volgende velden activeren', |
|
| 77 | - 'config_choix_base_sup' => 'een database op deze server kiezen', |
|
| 78 | - 'config_erreur_base_sup' => 'SPIP heeft geen toegang tot de lijst van toegankelijke databases', |
|
| 79 | - 'config_info_base_sup' => 'Als je andere databases hebt om door SPIP te ondervragen, met zijn SQL server of anders, kan je deze via onderstaand formulier opgeven. Als je bepaalde velden leeg laat, zullen de identificatiegegevens van de primaire database gebruikt worden.', |
|
| 80 | - 'config_info_base_sup_disponibles' => 'De reeds opvraagbare aanvullende databases:', |
|
| 81 | - 'config_info_enregistree' => 'De nieuwe configuratie werd bewaard', |
|
| 82 | - 'config_info_logos' => 'Elk element van de site kan een logo hebben, evenals een « zwevend logo »', |
|
| 83 | - 'config_info_logos_utiliser' => 'Logo’s gebruiken', |
|
| 84 | - 'config_info_logos_utiliser_non' => 'Logo’s niet gebruiken', |
|
| 85 | - 'config_info_logos_utiliser_survol' => 'Zwevende logo’s gebruiken', |
|
| 86 | - 'config_info_logos_utiliser_survol_non' => 'Geen zwevende logo’s gebruiken', |
|
| 87 | - 'config_info_redirection' => 'Door deze optie te activeren, kan je virtuele artikelen maken, eenvoudige verwijzen naar gepubliceerde artikelen op andere sites, ook buiten SPIP.', |
|
| 88 | - 'config_redirection' => 'Virtuele artikelen', |
|
| 89 | - 'config_titre_base_sup' => 'Declareren van een extra database', |
|
| 90 | - 'config_titre_base_sup_choix' => 'Kies een extra database', |
|
| 91 | - 'connexion_ldap' => 'Aansluiten:', |
|
| 92 | - 'creer_et_associer_un_auteur' => 'Maken en associëren een auteur', |
|
| 73 | + // C |
|
| 74 | + 'cache_modifiable_webmestre' => 'Deze parameter kan door de webmaster van de site gewijzigd worden.', |
|
| 75 | + 'calendrier_synchro' => 'Wanneer je <b>iCal</b> compatibele agendasoftware gebruikt, kan je deze synchroniseren met informatie van deze site.', |
|
| 76 | + 'config_activer_champs' => 'De volgende velden activeren', |
|
| 77 | + 'config_choix_base_sup' => 'een database op deze server kiezen', |
|
| 78 | + 'config_erreur_base_sup' => 'SPIP heeft geen toegang tot de lijst van toegankelijke databases', |
|
| 79 | + 'config_info_base_sup' => 'Als je andere databases hebt om door SPIP te ondervragen, met zijn SQL server of anders, kan je deze via onderstaand formulier opgeven. Als je bepaalde velden leeg laat, zullen de identificatiegegevens van de primaire database gebruikt worden.', |
|
| 80 | + 'config_info_base_sup_disponibles' => 'De reeds opvraagbare aanvullende databases:', |
|
| 81 | + 'config_info_enregistree' => 'De nieuwe configuratie werd bewaard', |
|
| 82 | + 'config_info_logos' => 'Elk element van de site kan een logo hebben, evenals een « zwevend logo »', |
|
| 83 | + 'config_info_logos_utiliser' => 'Logo’s gebruiken', |
|
| 84 | + 'config_info_logos_utiliser_non' => 'Logo’s niet gebruiken', |
|
| 85 | + 'config_info_logos_utiliser_survol' => 'Zwevende logo’s gebruiken', |
|
| 86 | + 'config_info_logos_utiliser_survol_non' => 'Geen zwevende logo’s gebruiken', |
|
| 87 | + 'config_info_redirection' => 'Door deze optie te activeren, kan je virtuele artikelen maken, eenvoudige verwijzen naar gepubliceerde artikelen op andere sites, ook buiten SPIP.', |
|
| 88 | + 'config_redirection' => 'Virtuele artikelen', |
|
| 89 | + 'config_titre_base_sup' => 'Declareren van een extra database', |
|
| 90 | + 'config_titre_base_sup_choix' => 'Kies een extra database', |
|
| 91 | + 'connexion_ldap' => 'Aansluiten:', |
|
| 92 | + 'creer_et_associer_un_auteur' => 'Maken en associëren een auteur', |
|
| 93 | 93 | |
| 94 | - // D |
|
| 95 | - 'date_mot_heures' => 'uur', |
|
| 94 | + // D |
|
| 95 | + 'date_mot_heures' => 'uur', |
|
| 96 | 96 | |
| 97 | - // E |
|
| 98 | - 'ecran_securite' => '+ beveiligingsscherm @version@', |
|
| 99 | - 'email' => 'e-mail', |
|
| 100 | - 'email_2' => 'e-mail:', |
|
| 101 | - 'en_savoir_plus' => 'Meer weten hierover', |
|
| 102 | - 'entree_adresse_annuaire' => 'Plaats van het adresboek', |
|
| 103 | - 'entree_adresse_email' => 'Je e-mailadres', |
|
| 104 | - 'entree_adresse_email_2' => 'E-mailadres', |
|
| 105 | - 'entree_base_donnee_1' => 'Adres van de database', |
|
| 106 | - 'entree_base_donnee_2' => '(Vaak komt dit adres overeen met dat van je website, soms is het gewoon de vermelding «localhost» of kan je het veld blanco laten.)', |
|
| 107 | - 'entree_biographie' => 'Korte biografie in enkele woorden.', |
|
| 108 | - 'entree_chemin_acces' => '<b>Invullen</b> van de toegangscode :', |
|
| 109 | - 'entree_cle_pgp' => 'Je PGP-sleutel', |
|
| 110 | - 'entree_cle_pgp_2' => 'PGP-sleutel', |
|
| 111 | - 'entree_contenu_rubrique' => '(Inhoud van de rubriek in enkele woorden)', |
|
| 112 | - 'entree_identifiants_connexion' => 'Je verbindingsgegevens...', |
|
| 113 | - 'entree_identifiants_connexion_2' => 'Login', |
|
| 114 | - 'entree_informations_connexion_ldap' => 'Vul hier de gegevens in om verbinding te maken met het LDAP adresboek. Deze gegevens kan je opvragen bij de systeem- of netwerkbeheerder.', |
|
| 115 | - 'entree_infos_perso' => 'Wie ben je ?', |
|
| 116 | - 'entree_infos_perso_2' => 'Wie is de auteur ?', |
|
| 117 | - 'entree_interieur_rubrique' => 'In de rubriek:', |
|
| 118 | - 'entree_liens_sites' => '<b>Hypertext link</b> (verwijzing, te bezoeken website ...)', |
|
| 119 | - 'entree_login' => 'Je login', |
|
| 120 | - 'entree_login_connexion_1' => 'De login voor de verbinding', |
|
| 121 | - 'entree_login_connexion_2' => '(Komt soms overeen met je FTP-loginnaam; soms wordt dit niet ingevuld)', |
|
| 122 | - 'entree_mot_passe' => 'Je wachtwoord', |
|
| 123 | - 'entree_mot_passe_1' => 'Wachtwoord voor deze verbinding ', |
|
| 124 | - 'entree_mot_passe_2' => '(Komt vaak overeen met je wachtwoord voor FTP-toegang; soms kan je dit ook blanco laten)', |
|
| 125 | - 'entree_nom_fichier' => 'Vul hier de naam in van het bestand @texte_compresse@:', |
|
| 126 | - 'entree_nom_pseudo' => 'je naam of bijnaam', |
|
| 127 | - 'entree_nom_pseudo_1' => '(Je naam of bijnaam)', |
|
| 128 | - 'entree_nom_pseudo_2' => 'Naam of bijnaam', |
|
| 129 | - 'entree_nom_site' => 'De websitenaam', |
|
| 130 | - 'entree_nom_site_2' => 'Naam van de site van de auteur', |
|
| 131 | - 'entree_nouveau_passe' => 'Nieuw wachtwoord', |
|
| 132 | - 'entree_passe_ldap' => 'Wachtwoord', |
|
| 133 | - 'entree_port_annuaire' => 'Het poortnummer van het adresboek', |
|
| 134 | - 'entree_signature' => 'Handtekening', |
|
| 135 | - 'entree_titre_obligatoire' => '<b>Titel</b> [verplicht]<br />', |
|
| 136 | - 'entree_url' => 'Je website-adres (URL)', |
|
| 137 | - 'entree_url_2' => 'Adres van de site (URL)', |
|
| 138 | - 'erreur_connect_deja_existant' => 'Een server met die naam bestaat al', |
|
| 139 | - 'erreur_contenu_suspect' => 'Slecht opgebouwde tekst', |
|
| 140 | - 'erreur_email_deja_existant' => 'Dit emailadres is al geregistreerd.', |
|
| 141 | - 'erreur_nom_connect_incorrect' => 'Deze server naam is niet toegestaan', |
|
| 142 | - 'erreur_plugin_attribut_balise_manquant' => 'Attribuut @attribut@ ontbreekt in lus @balise@.', |
|
| 143 | - 'erreur_plugin_desinstalation_echouee' => 'Het verwijderen van de plugin is mislukt. Maar je kunt hem wel uitschakelen.', |
|
| 144 | - 'erreur_plugin_fichier_absent' => 'Bestand ontbreekt', |
|
| 145 | - 'erreur_plugin_fichier_def_absent' => 'Definitiebestand ontbreekt', |
|
| 146 | - 'erreur_plugin_nom_fonction_interdit' => 'Functienaam verboden', |
|
| 147 | - 'erreur_plugin_nom_manquant' => 'Naam van de ontbrekende plugin', |
|
| 148 | - 'erreur_plugin_prefix_manquant' => 'Ruimte voor de naamgeving van de plugin is niet gedefinieerd', |
|
| 149 | - 'erreur_plugin_tag_plugin_absent' => '<plugin> ontbreekt in het definitiebestand', |
|
| 150 | - 'erreur_plugin_version_manquant' => 'Versie van de ontbrekende plugin', |
|
| 97 | + // E |
|
| 98 | + 'ecran_securite' => '+ beveiligingsscherm @version@', |
|
| 99 | + 'email' => 'e-mail', |
|
| 100 | + 'email_2' => 'e-mail:', |
|
| 101 | + 'en_savoir_plus' => 'Meer weten hierover', |
|
| 102 | + 'entree_adresse_annuaire' => 'Plaats van het adresboek', |
|
| 103 | + 'entree_adresse_email' => 'Je e-mailadres', |
|
| 104 | + 'entree_adresse_email_2' => 'E-mailadres', |
|
| 105 | + 'entree_base_donnee_1' => 'Adres van de database', |
|
| 106 | + 'entree_base_donnee_2' => '(Vaak komt dit adres overeen met dat van je website, soms is het gewoon de vermelding «localhost» of kan je het veld blanco laten.)', |
|
| 107 | + 'entree_biographie' => 'Korte biografie in enkele woorden.', |
|
| 108 | + 'entree_chemin_acces' => '<b>Invullen</b> van de toegangscode :', |
|
| 109 | + 'entree_cle_pgp' => 'Je PGP-sleutel', |
|
| 110 | + 'entree_cle_pgp_2' => 'PGP-sleutel', |
|
| 111 | + 'entree_contenu_rubrique' => '(Inhoud van de rubriek in enkele woorden)', |
|
| 112 | + 'entree_identifiants_connexion' => 'Je verbindingsgegevens...', |
|
| 113 | + 'entree_identifiants_connexion_2' => 'Login', |
|
| 114 | + 'entree_informations_connexion_ldap' => 'Vul hier de gegevens in om verbinding te maken met het LDAP adresboek. Deze gegevens kan je opvragen bij de systeem- of netwerkbeheerder.', |
|
| 115 | + 'entree_infos_perso' => 'Wie ben je ?', |
|
| 116 | + 'entree_infos_perso_2' => 'Wie is de auteur ?', |
|
| 117 | + 'entree_interieur_rubrique' => 'In de rubriek:', |
|
| 118 | + 'entree_liens_sites' => '<b>Hypertext link</b> (verwijzing, te bezoeken website ...)', |
|
| 119 | + 'entree_login' => 'Je login', |
|
| 120 | + 'entree_login_connexion_1' => 'De login voor de verbinding', |
|
| 121 | + 'entree_login_connexion_2' => '(Komt soms overeen met je FTP-loginnaam; soms wordt dit niet ingevuld)', |
|
| 122 | + 'entree_mot_passe' => 'Je wachtwoord', |
|
| 123 | + 'entree_mot_passe_1' => 'Wachtwoord voor deze verbinding ', |
|
| 124 | + 'entree_mot_passe_2' => '(Komt vaak overeen met je wachtwoord voor FTP-toegang; soms kan je dit ook blanco laten)', |
|
| 125 | + 'entree_nom_fichier' => 'Vul hier de naam in van het bestand @texte_compresse@:', |
|
| 126 | + 'entree_nom_pseudo' => 'je naam of bijnaam', |
|
| 127 | + 'entree_nom_pseudo_1' => '(Je naam of bijnaam)', |
|
| 128 | + 'entree_nom_pseudo_2' => 'Naam of bijnaam', |
|
| 129 | + 'entree_nom_site' => 'De websitenaam', |
|
| 130 | + 'entree_nom_site_2' => 'Naam van de site van de auteur', |
|
| 131 | + 'entree_nouveau_passe' => 'Nieuw wachtwoord', |
|
| 132 | + 'entree_passe_ldap' => 'Wachtwoord', |
|
| 133 | + 'entree_port_annuaire' => 'Het poortnummer van het adresboek', |
|
| 134 | + 'entree_signature' => 'Handtekening', |
|
| 135 | + 'entree_titre_obligatoire' => '<b>Titel</b> [verplicht]<br />', |
|
| 136 | + 'entree_url' => 'Je website-adres (URL)', |
|
| 137 | + 'entree_url_2' => 'Adres van de site (URL)', |
|
| 138 | + 'erreur_connect_deja_existant' => 'Een server met die naam bestaat al', |
|
| 139 | + 'erreur_contenu_suspect' => 'Slecht opgebouwde tekst', |
|
| 140 | + 'erreur_email_deja_existant' => 'Dit emailadres is al geregistreerd.', |
|
| 141 | + 'erreur_nom_connect_incorrect' => 'Deze server naam is niet toegestaan', |
|
| 142 | + 'erreur_plugin_attribut_balise_manquant' => 'Attribuut @attribut@ ontbreekt in lus @balise@.', |
|
| 143 | + 'erreur_plugin_desinstalation_echouee' => 'Het verwijderen van de plugin is mislukt. Maar je kunt hem wel uitschakelen.', |
|
| 144 | + 'erreur_plugin_fichier_absent' => 'Bestand ontbreekt', |
|
| 145 | + 'erreur_plugin_fichier_def_absent' => 'Definitiebestand ontbreekt', |
|
| 146 | + 'erreur_plugin_nom_fonction_interdit' => 'Functienaam verboden', |
|
| 147 | + 'erreur_plugin_nom_manquant' => 'Naam van de ontbrekende plugin', |
|
| 148 | + 'erreur_plugin_prefix_manquant' => 'Ruimte voor de naamgeving van de plugin is niet gedefinieerd', |
|
| 149 | + 'erreur_plugin_tag_plugin_absent' => '<plugin> ontbreekt in het definitiebestand', |
|
| 150 | + 'erreur_plugin_version_manquant' => 'Versie van de ontbrekende plugin', |
|
| 151 | 151 | |
| 152 | - // H |
|
| 153 | - 'htaccess_a_simuler' => 'Waarschuwing: De configuratie van de HTTP-server negeert @htaccess@ bestanden. Om een goede beveiliging te hebben, moet je deze configuratie wijzigen, of de constanten @constantes@ (definieerbaar in het bestand mes_options.php) laten verwijzen naar mappen buiten @document_root@. ', # Je ne vois pas la modif ! La trad reste valable. |
|
| 154 | - 'htaccess_inoperant' => 'htaccess werkt niet', |
|
| 152 | + // H |
|
| 153 | + 'htaccess_a_simuler' => 'Waarschuwing: De configuratie van de HTTP-server negeert @htaccess@ bestanden. Om een goede beveiliging te hebben, moet je deze configuratie wijzigen, of de constanten @constantes@ (definieerbaar in het bestand mes_options.php) laten verwijzen naar mappen buiten @document_root@. ', # Je ne vois pas la modif ! La trad reste valable. |
|
| 154 | + 'htaccess_inoperant' => 'htaccess werkt niet', |
|
| 155 | 155 | |
| 156 | - // I |
|
| 157 | - 'ical_info1' => 'Deze pagina toont de verschillende wijzen waarop je contact kan houden met het gebeuren van deze website.', |
|
| 158 | - 'ical_info2' => 'Voor meer inlichtingen over al deze technieken, aarzelt niet om <a href=" @spipnet@" te raadplegen >de documentatie van SPIP</a>.', |
|
| 159 | - 'ical_info_calendrier' => 'Twee kalenders zijn beschikbaar. De eerste geeft een overzicht van alle gepubliceerde artikelen. De tweede bevat editoriale berichten en je meest recente privé-berichten : deze tweede kalender is afgeschermd voor andere gebruikers door een persoonlijke sleutel die je op elk moment kan wijzigen door je wachtwoord te vernieuwen.', |
|
| 160 | - 'ical_methode_http' => 'Downloaden', |
|
| 161 | - 'ical_methode_webcal' => 'Synchronisatie (webcal://)', |
|
| 162 | - 'ical_texte_js' => 'Met een javascriptregel kan je op eenvoudige wijze de meest recente artikelen van deze site weergeven op een andere site die je beheert.', |
|
| 163 | - 'ical_texte_prive' => 'Deze kalender is voor persoonlijk gebruik en houdt je op de hoogte van je eigen editoriale activiteit (taken en persoonlijke afspraken, voorgestelde artikelen en nieuwsflitsen...).', |
|
| 164 | - 'ical_texte_public' => 'Via deze kalender kan je de publieke activiteit van de site volgen (gepubliceerde artikelen en nieuwsflitsen).', |
|
| 165 | - 'ical_texte_rss' => 'Je kan de nieuwe berichten van de site overnemen (syndiceren) op een andere site in eender welke bestandslezer via het formaat XML/RSS (Rich Site Summary). Dit is hetzelfde formaat dat SPIP toelaat nieuws over te nemen van andere sites die een uitwisselbaar formaat hanteren (gesyndiceerde sites).', |
|
| 166 | - 'ical_titre_js' => 'Javascript', |
|
| 167 | - 'ical_titre_mailing' => 'Mailinglijst', |
|
| 168 | - 'ical_titre_rss' => 'Syndicatiebestanden', |
|
| 169 | - 'icone_accueil' => 'Home', |
|
| 170 | - 'icone_activer_cookie' => 'De toegangskoekie activeren', |
|
| 171 | - 'icone_activite' => 'Activiteit', |
|
| 172 | - 'icone_admin_plugin' => 'Plugin beheer', |
|
| 173 | - 'icone_administration' => 'Beheer', |
|
| 174 | - 'icone_afficher_auteurs' => 'Auteurs tonen', |
|
| 175 | - 'icone_afficher_visiteurs' => 'Bezoekers tonen', |
|
| 176 | - 'icone_arret_discussion' => 'Niet langer deelnemen aan deze discussie', |
|
| 177 | - 'icone_calendrier' => 'Kalender', |
|
| 178 | - 'icone_configuration' => 'Configuratie', |
|
| 179 | - 'icone_creer_auteur' => 'Een nieuwe auteur aanmaken en koppelen aan dit artikel', |
|
| 180 | - 'icone_creer_mot_cle' => 'Een nieuw trefwoord aanmaken en koppelen aan dit artikel', |
|
| 181 | - 'icone_creer_rubrique_2' => 'Een nieuwe rubriek aanmaken', |
|
| 182 | - 'icone_developpement' => 'Ontwikkeling', |
|
| 183 | - 'icone_edition' => 'Items', |
|
| 184 | - 'icone_ma_langue' => 'Mijn taal', |
|
| 185 | - 'icone_mes_infos' => 'Mijn informatie', |
|
| 186 | - 'icone_mes_preferences' => 'Mijn Voorkeuren', |
|
| 187 | - 'icone_modifier_article' => 'Dit artikel wijzigen', |
|
| 188 | - 'icone_modifier_rubrique' => 'Deze rubriek wijzigen', |
|
| 189 | - 'icone_publication' => 'Publicatie', |
|
| 190 | - 'icone_relancer_signataire' => 'De ondertekenaar heractiveren', |
|
| 191 | - 'icone_retour' => 'Terug', |
|
| 192 | - 'icone_retour_article' => 'Terug naar artikel', |
|
| 193 | - 'icone_squelette' => 'Skeletten', |
|
| 194 | - 'icone_suivi_publication' => 'Publicaties volgen', |
|
| 195 | - 'icone_supprimer_cookie' => 'De toegangskoekie verwijderen', |
|
| 196 | - 'icone_supprimer_rubrique' => 'Deze rubriek wissen', |
|
| 197 | - 'icone_supprimer_signature' => 'Deze naam wissen', |
|
| 198 | - 'icone_valider_signature' => 'Deze naam goedkeuren', |
|
| 199 | - 'image_administrer_rubrique' => 'Je kan deze rubriek beheren', |
|
| 200 | - 'impossible_modifier_login_auteur' => 'De login kan niet worden veranderd.', |
|
| 201 | - 'impossible_modifier_pass_auteur' => 'Het wachtwoord kan niet worden gewijzigd.', |
|
| 202 | - 'info_1_article' => '1 artikel', |
|
| 203 | - 'info_1_auteur' => '1 auteur', |
|
| 204 | - 'info_1_message' => '1 bericht', |
|
| 205 | - 'info_1_mot_cle' => '1 trefwoord', |
|
| 206 | - 'info_1_rubrique' => '1 rubriek', |
|
| 207 | - 'info_1_visiteur' => '1 bezoeker', |
|
| 208 | - 'info_activer_cookie' => 'Je kan een <b>toegangskoekie</b> activeren, waardoor je makkelijk kan wisselen tussen de het publieke en het privé gedeelte van de website.', |
|
| 209 | - 'info_activer_menu_developpement' => 'Toon het menu Ontwikkeling', |
|
| 210 | - 'info_admin_etre_webmestre' => 'Geef me de webmaster rechten', |
|
| 211 | - 'info_admin_je_suis_webmestre' => 'Ik ben <b>webmaster</b>', |
|
| 212 | - 'info_admin_statuer_webmestre' => 'Geef deze beheerder webmaster rechten', |
|
| 213 | - 'info_admin_webmestre' => 'Deze beheerder is <b>webmaster</b>', |
|
| 214 | - 'info_administrateur' => 'Beheerder', |
|
| 215 | - 'info_administrateur_1' => 'Beheerder', |
|
| 216 | - 'info_administrateur_2' => 'van de website (<i>voorzichtig gebruiken</i>)', |
|
| 217 | - 'info_administrateur_site_01' => 'Als je beheerder bent van deze site, gelieve', |
|
| 218 | - 'info_administrateur_site_02' => 'deze koppeling aan te klikken', |
|
| 219 | - 'info_administrateurs' => 'Beheerders', |
|
| 220 | - 'info_administrer_rubrique' => 'Je kan deze rubriek beheren', |
|
| 221 | - 'info_adresse' => 'aan/naar het adres:', |
|
| 222 | - 'info_adresse_desinscription' => 'Adres voor uitschrijven:', |
|
| 223 | - 'info_adresse_url' => 'Adres (URL) van de website', |
|
| 224 | - 'info_afficher_par_nb' => 'Tonen', |
|
| 225 | - 'info_aide_en_ligne' => 'ONLINE HELP VAN SPIP', |
|
| 226 | - 'info_ajout_image' => 'Als je afbeeldingen als bijlage aan een document toevoegt, kan SPIP hiervan automatisch miniaturen aanmaken. Hierdoor kan je bvb. automatisch een fotogalerij of portfolio aanmaken. |
|
| 156 | + // I |
|
| 157 | + 'ical_info1' => 'Deze pagina toont de verschillende wijzen waarop je contact kan houden met het gebeuren van deze website.', |
|
| 158 | + 'ical_info2' => 'Voor meer inlichtingen over al deze technieken, aarzelt niet om <a href=" @spipnet@" te raadplegen >de documentatie van SPIP</a>.', |
|
| 159 | + 'ical_info_calendrier' => 'Twee kalenders zijn beschikbaar. De eerste geeft een overzicht van alle gepubliceerde artikelen. De tweede bevat editoriale berichten en je meest recente privé-berichten : deze tweede kalender is afgeschermd voor andere gebruikers door een persoonlijke sleutel die je op elk moment kan wijzigen door je wachtwoord te vernieuwen.', |
|
| 160 | + 'ical_methode_http' => 'Downloaden', |
|
| 161 | + 'ical_methode_webcal' => 'Synchronisatie (webcal://)', |
|
| 162 | + 'ical_texte_js' => 'Met een javascriptregel kan je op eenvoudige wijze de meest recente artikelen van deze site weergeven op een andere site die je beheert.', |
|
| 163 | + 'ical_texte_prive' => 'Deze kalender is voor persoonlijk gebruik en houdt je op de hoogte van je eigen editoriale activiteit (taken en persoonlijke afspraken, voorgestelde artikelen en nieuwsflitsen...).', |
|
| 164 | + 'ical_texte_public' => 'Via deze kalender kan je de publieke activiteit van de site volgen (gepubliceerde artikelen en nieuwsflitsen).', |
|
| 165 | + 'ical_texte_rss' => 'Je kan de nieuwe berichten van de site overnemen (syndiceren) op een andere site in eender welke bestandslezer via het formaat XML/RSS (Rich Site Summary). Dit is hetzelfde formaat dat SPIP toelaat nieuws over te nemen van andere sites die een uitwisselbaar formaat hanteren (gesyndiceerde sites).', |
|
| 166 | + 'ical_titre_js' => 'Javascript', |
|
| 167 | + 'ical_titre_mailing' => 'Mailinglijst', |
|
| 168 | + 'ical_titre_rss' => 'Syndicatiebestanden', |
|
| 169 | + 'icone_accueil' => 'Home', |
|
| 170 | + 'icone_activer_cookie' => 'De toegangskoekie activeren', |
|
| 171 | + 'icone_activite' => 'Activiteit', |
|
| 172 | + 'icone_admin_plugin' => 'Plugin beheer', |
|
| 173 | + 'icone_administration' => 'Beheer', |
|
| 174 | + 'icone_afficher_auteurs' => 'Auteurs tonen', |
|
| 175 | + 'icone_afficher_visiteurs' => 'Bezoekers tonen', |
|
| 176 | + 'icone_arret_discussion' => 'Niet langer deelnemen aan deze discussie', |
|
| 177 | + 'icone_calendrier' => 'Kalender', |
|
| 178 | + 'icone_configuration' => 'Configuratie', |
|
| 179 | + 'icone_creer_auteur' => 'Een nieuwe auteur aanmaken en koppelen aan dit artikel', |
|
| 180 | + 'icone_creer_mot_cle' => 'Een nieuw trefwoord aanmaken en koppelen aan dit artikel', |
|
| 181 | + 'icone_creer_rubrique_2' => 'Een nieuwe rubriek aanmaken', |
|
| 182 | + 'icone_developpement' => 'Ontwikkeling', |
|
| 183 | + 'icone_edition' => 'Items', |
|
| 184 | + 'icone_ma_langue' => 'Mijn taal', |
|
| 185 | + 'icone_mes_infos' => 'Mijn informatie', |
|
| 186 | + 'icone_mes_preferences' => 'Mijn Voorkeuren', |
|
| 187 | + 'icone_modifier_article' => 'Dit artikel wijzigen', |
|
| 188 | + 'icone_modifier_rubrique' => 'Deze rubriek wijzigen', |
|
| 189 | + 'icone_publication' => 'Publicatie', |
|
| 190 | + 'icone_relancer_signataire' => 'De ondertekenaar heractiveren', |
|
| 191 | + 'icone_retour' => 'Terug', |
|
| 192 | + 'icone_retour_article' => 'Terug naar artikel', |
|
| 193 | + 'icone_squelette' => 'Skeletten', |
|
| 194 | + 'icone_suivi_publication' => 'Publicaties volgen', |
|
| 195 | + 'icone_supprimer_cookie' => 'De toegangskoekie verwijderen', |
|
| 196 | + 'icone_supprimer_rubrique' => 'Deze rubriek wissen', |
|
| 197 | + 'icone_supprimer_signature' => 'Deze naam wissen', |
|
| 198 | + 'icone_valider_signature' => 'Deze naam goedkeuren', |
|
| 199 | + 'image_administrer_rubrique' => 'Je kan deze rubriek beheren', |
|
| 200 | + 'impossible_modifier_login_auteur' => 'De login kan niet worden veranderd.', |
|
| 201 | + 'impossible_modifier_pass_auteur' => 'Het wachtwoord kan niet worden gewijzigd.', |
|
| 202 | + 'info_1_article' => '1 artikel', |
|
| 203 | + 'info_1_auteur' => '1 auteur', |
|
| 204 | + 'info_1_message' => '1 bericht', |
|
| 205 | + 'info_1_mot_cle' => '1 trefwoord', |
|
| 206 | + 'info_1_rubrique' => '1 rubriek', |
|
| 207 | + 'info_1_visiteur' => '1 bezoeker', |
|
| 208 | + 'info_activer_cookie' => 'Je kan een <b>toegangskoekie</b> activeren, waardoor je makkelijk kan wisselen tussen de het publieke en het privé gedeelte van de website.', |
|
| 209 | + 'info_activer_menu_developpement' => 'Toon het menu Ontwikkeling', |
|
| 210 | + 'info_admin_etre_webmestre' => 'Geef me de webmaster rechten', |
|
| 211 | + 'info_admin_je_suis_webmestre' => 'Ik ben <b>webmaster</b>', |
|
| 212 | + 'info_admin_statuer_webmestre' => 'Geef deze beheerder webmaster rechten', |
|
| 213 | + 'info_admin_webmestre' => 'Deze beheerder is <b>webmaster</b>', |
|
| 214 | + 'info_administrateur' => 'Beheerder', |
|
| 215 | + 'info_administrateur_1' => 'Beheerder', |
|
| 216 | + 'info_administrateur_2' => 'van de website (<i>voorzichtig gebruiken</i>)', |
|
| 217 | + 'info_administrateur_site_01' => 'Als je beheerder bent van deze site, gelieve', |
|
| 218 | + 'info_administrateur_site_02' => 'deze koppeling aan te klikken', |
|
| 219 | + 'info_administrateurs' => 'Beheerders', |
|
| 220 | + 'info_administrer_rubrique' => 'Je kan deze rubriek beheren', |
|
| 221 | + 'info_adresse' => 'aan/naar het adres:', |
|
| 222 | + 'info_adresse_desinscription' => 'Adres voor uitschrijven:', |
|
| 223 | + 'info_adresse_url' => 'Adres (URL) van de website', |
|
| 224 | + 'info_afficher_par_nb' => 'Tonen', |
|
| 225 | + 'info_aide_en_ligne' => 'ONLINE HELP VAN SPIP', |
|
| 226 | + 'info_ajout_image' => 'Als je afbeeldingen als bijlage aan een document toevoegt, kan SPIP hiervan automatisch miniaturen aanmaken. Hierdoor kan je bvb. automatisch een fotogalerij of portfolio aanmaken. |
|
| 227 | 227 | ', |
| 228 | - 'info_ajouter_rubrique' => 'Een nieuwe rubriek toevoegen om te beheren:', |
|
| 229 | - 'info_annonce_nouveautes' => 'Aankondiging van nieuwe bijdragen', |
|
| 230 | - 'info_article' => 'artikel', |
|
| 231 | - 'info_article_2' => 'artikelen', |
|
| 232 | - 'info_article_a_paraitre' => 'Te publiceren artikelen met postdatering', |
|
| 233 | - 'info_articles_02' => 'artikelen', |
|
| 234 | - 'info_articles_2' => 'Artikelen', |
|
| 235 | - 'info_articles_auteur' => 'Artikelen van deze auteur', |
|
| 236 | - 'info_articles_miens' => 'Mijn artikelen', |
|
| 237 | - 'info_articles_tous' => 'Alle artikelen', |
|
| 238 | - 'info_articles_trouves' => 'Gevonden artikelen', |
|
| 239 | - 'info_attente_validation' => 'Je artikelen die op goedkeuring wachten', |
|
| 240 | - 'info_aucun_article' => 'Geen artikelen', |
|
| 241 | - 'info_aucun_auteur' => 'Geen auteur', |
|
| 242 | - 'info_aucun_message' => 'Geen bericht', |
|
| 243 | - 'info_aucun_rubrique' => 'Geen rubriek', |
|
| 244 | - 'info_aujourdhui' => 'vandaag:', |
|
| 245 | - 'info_auteur_gere_rubriques' => 'Deze auteur beheert de volgende rubrieken:', |
|
| 246 | - 'info_auteur_gere_toutes_rubriques' => 'Deze auteur beheert <b>alle rubrieken</b>', |
|
| 247 | - 'info_auteur_gere_toutes_rubriques_2' => 'Ik beheer <b>alle rubrieken</b>', |
|
| 248 | - 'info_auteurs' => 'De auteurs', |
|
| 249 | - 'info_auteurs_par_tri' => 'Auteur@partri@', |
|
| 250 | - 'info_auteurs_trouves' => 'Gevonden auteurs', |
|
| 251 | - 'info_authentification_externe' => 'Externe authenticatie', |
|
| 252 | - 'info_avertissement' => 'Waarschuwing', |
|
| 253 | - 'info_barre_outils' => 'met zijn gereedschapsbalk?', |
|
| 254 | - 'info_base_installee' => 'De structuur van je database is geïnstalleerd.', |
|
| 255 | - 'info_bio' => 'biografie', |
|
| 256 | - 'info_cache_desactive' => 'De buffer (cache) is tijdelijk uitgeschakeld.', |
|
| 257 | - 'info_chapeau' => 'Kop', |
|
| 258 | - 'info_chapeau_2' => 'Kop :', |
|
| 259 | - 'info_chemin_acces_1' => 'Opties: <b>Toegang tot het adresboek</b>', |
|
| 260 | - 'info_chemin_acces_2' => 'Je dient de toegang tot de gegevens uit het adresboek in te stellen. Zonder deze instellingen is het ONmogelijk de gebruikersprofielen in dit adresboek te lezen.', |
|
| 261 | - 'info_chemin_acces_annuaire' => 'Opties: <b>Toegang in het adresboek', |
|
| 262 | - 'info_choix_base' => 'Derde stap:', |
|
| 263 | - 'info_classement_1' => '<sup>ste</sup> op @liste@', |
|
| 264 | - 'info_classement_2' => '<sup>de</sup> @liste@', |
|
| 265 | - 'info_code_acces' => 'Vergeet je eigen toegangscode niet!', |
|
| 266 | - 'info_config_suivi' => 'Wanneer dit adres van een distributielijst is, kan je hieronder het adres opgeven waar deelnemers van de site zich kunnen inschrijven. Dit adres kan een URL zijn (het webadres voor het inschrijving op de lijst), of een emailadres met een onderwerp (zoals <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 267 | - 'info_config_suivi_explication' => 'Je kan je op de mailinglijst van deze site inschrijven. Je zal dan via e-mail een aankondiging ontvangen van artikelen en nieuwsflitsen die voor publicatie werden voorgesteld.', |
|
| 268 | - 'info_confirmer_passe' => 'Bevestig het nieuwe wachtwoord:', |
|
| 269 | - 'info_conflit_edition_avis_non_sauvegarde' => 'Let op: de volgende velden werden elders gewijzigd. Jouw wijzigingen op deze velden werden dus niet geregistreerd.', |
|
| 270 | - 'info_conflit_edition_differences' => 'Verschillen :', |
|
| 271 | - 'info_conflit_edition_version_enregistree' => 'De geregistreerde versie :', |
|
| 272 | - 'info_conflit_edition_votre_version' => 'Jouw versie:', |
|
| 273 | - 'info_connexion_base' => 'Proberen op de database aan te sluiten', |
|
| 274 | - 'info_connexion_base_donnee' => 'Aansluiten op je database', |
|
| 275 | - 'info_connexion_ldap_ok' => 'De LDAP-verbinding is gelukt. </b><p>Je kunt doorgaan naar de volgende stap.</p>', |
|
| 276 | - 'info_connexion_mysql' => 'Je SQL verbinding', |
|
| 277 | - 'info_connexion_ok' => 'De verbinding is geslaagd.', |
|
| 278 | - 'info_contact' => 'Contact', |
|
| 279 | - 'info_contenu_articles' => 'Inhoud van de artikelen', |
|
| 280 | - 'info_contributions' => 'Bijdragen', |
|
| 281 | - 'info_creation_paragraphe' => 'Om alinea’s te maken laat je gewoon enkele regels leeg.', |
|
| 282 | - 'info_creation_rubrique' => 'Alvorens artikelen te kunnen schrijven<br /> moet minstens een rubriek worden gemaakt.<br />', |
|
| 283 | - 'info_creation_tables' => 'Aanmaken van tabellen in de database', |
|
| 284 | - 'info_creer_base' => '<b>Creëren</b> een nieuw database:', |
|
| 285 | - 'info_dans_rubrique' => 'In de rubriek:', |
|
| 286 | - 'info_date_publication_anterieure' => 'Datum van eerdere redactie:', |
|
| 287 | - 'info_date_referencement' => 'DATUM VAN DE KOPPELING VAN DEZE SITE:', |
|
| 288 | - 'info_derniere_etape' => 'Klaar!', |
|
| 289 | - 'info_descriptif' => 'Beschrijving:', |
|
| 290 | - 'info_desinstaller_plugin' => 'verwijdert de gegevens en deactiveert de plugin', |
|
| 291 | - 'info_discussion_cours' => 'Lopende discussies', |
|
| 292 | - 'info_ecrire_article' => 'Alvorens een artikel te kunnen schrijven, dien je minimaal één rubriek aan te maken.', |
|
| 293 | - 'info_email_envoi' => 'Verzendadres (optioneel)', |
|
| 294 | - 'info_email_envoi_txt' => 'Geef hieronder het adres op dat gebruikt wordt voor het versturen van e-mails. (Standaard wordt het adres van de geadresseerde als verzendadres gebruikt.):', |
|
| 295 | - 'info_email_webmestre' => 'E-mailadres webmaster', |
|
| 296 | - 'info_envoi_email_automatique' => 'Automatisch verzenden van e-mails', |
|
| 297 | - 'info_envoyer_maintenant' => 'Nu versturen', |
|
| 298 | - 'info_etape_suivante' => 'Naar de volgende stap ', |
|
| 299 | - 'info_etape_suivante_1' => 'Je kunt de volgende stap zetten.', |
|
| 300 | - 'info_etape_suivante_2' => 'Je kunt de volgende stap zetten.', |
|
| 301 | - 'info_exceptions_proxy' => 'Uitzonderingen op de proxy', |
|
| 302 | - 'info_exportation_base' => 'Uitvoer van de database naar @archive@', |
|
| 303 | - 'info_facilite_suivi_activite' => 'Om de opvolging en redactie van artikelen te vergemakkelijken, kan SPIP mails versturen -bijvoorbeeld naar een mailinglist van redacteurs- met de aankondiging van vragen voor publicatie of goedgekeurde publicaties.', |
|
| 304 | - 'info_fichiers_authent' => 'Verificatiebestand ".htpasswd"', |
|
| 305 | - 'info_forums_abo_invites' => 'Je site bevat forums met abonnement; bezoekers worden dus op de publieke site verzocht zich in te schrijven.', |
|
| 306 | - 'info_gauche_admin_tech' => '<b>Deze pagina is enkel toegankelijk voor beheerders van de site.</b><p> Ze geeft toegang tot allerlei technische onderhoudstaken. Voor het uitvoeren van sommige taken zijn een afzonderlijke aanmelding en toegang tot je site via FTP nodig.</p>', |
|
| 307 | - 'info_gauche_admin_vider' => '<b>Deze pagina is alleen beschikbaar voor beheerders.</b><p> Het biedt toegang tot diverse |
|
| 228 | + 'info_ajouter_rubrique' => 'Een nieuwe rubriek toevoegen om te beheren:', |
|
| 229 | + 'info_annonce_nouveautes' => 'Aankondiging van nieuwe bijdragen', |
|
| 230 | + 'info_article' => 'artikel', |
|
| 231 | + 'info_article_2' => 'artikelen', |
|
| 232 | + 'info_article_a_paraitre' => 'Te publiceren artikelen met postdatering', |
|
| 233 | + 'info_articles_02' => 'artikelen', |
|
| 234 | + 'info_articles_2' => 'Artikelen', |
|
| 235 | + 'info_articles_auteur' => 'Artikelen van deze auteur', |
|
| 236 | + 'info_articles_miens' => 'Mijn artikelen', |
|
| 237 | + 'info_articles_tous' => 'Alle artikelen', |
|
| 238 | + 'info_articles_trouves' => 'Gevonden artikelen', |
|
| 239 | + 'info_attente_validation' => 'Je artikelen die op goedkeuring wachten', |
|
| 240 | + 'info_aucun_article' => 'Geen artikelen', |
|
| 241 | + 'info_aucun_auteur' => 'Geen auteur', |
|
| 242 | + 'info_aucun_message' => 'Geen bericht', |
|
| 243 | + 'info_aucun_rubrique' => 'Geen rubriek', |
|
| 244 | + 'info_aujourdhui' => 'vandaag:', |
|
| 245 | + 'info_auteur_gere_rubriques' => 'Deze auteur beheert de volgende rubrieken:', |
|
| 246 | + 'info_auteur_gere_toutes_rubriques' => 'Deze auteur beheert <b>alle rubrieken</b>', |
|
| 247 | + 'info_auteur_gere_toutes_rubriques_2' => 'Ik beheer <b>alle rubrieken</b>', |
|
| 248 | + 'info_auteurs' => 'De auteurs', |
|
| 249 | + 'info_auteurs_par_tri' => 'Auteur@partri@', |
|
| 250 | + 'info_auteurs_trouves' => 'Gevonden auteurs', |
|
| 251 | + 'info_authentification_externe' => 'Externe authenticatie', |
|
| 252 | + 'info_avertissement' => 'Waarschuwing', |
|
| 253 | + 'info_barre_outils' => 'met zijn gereedschapsbalk?', |
|
| 254 | + 'info_base_installee' => 'De structuur van je database is geïnstalleerd.', |
|
| 255 | + 'info_bio' => 'biografie', |
|
| 256 | + 'info_cache_desactive' => 'De buffer (cache) is tijdelijk uitgeschakeld.', |
|
| 257 | + 'info_chapeau' => 'Kop', |
|
| 258 | + 'info_chapeau_2' => 'Kop :', |
|
| 259 | + 'info_chemin_acces_1' => 'Opties: <b>Toegang tot het adresboek</b>', |
|
| 260 | + 'info_chemin_acces_2' => 'Je dient de toegang tot de gegevens uit het adresboek in te stellen. Zonder deze instellingen is het ONmogelijk de gebruikersprofielen in dit adresboek te lezen.', |
|
| 261 | + 'info_chemin_acces_annuaire' => 'Opties: <b>Toegang in het adresboek', |
|
| 262 | + 'info_choix_base' => 'Derde stap:', |
|
| 263 | + 'info_classement_1' => '<sup>ste</sup> op @liste@', |
|
| 264 | + 'info_classement_2' => '<sup>de</sup> @liste@', |
|
| 265 | + 'info_code_acces' => 'Vergeet je eigen toegangscode niet!', |
|
| 266 | + 'info_config_suivi' => 'Wanneer dit adres van een distributielijst is, kan je hieronder het adres opgeven waar deelnemers van de site zich kunnen inschrijven. Dit adres kan een URL zijn (het webadres voor het inschrijving op de lijst), of een emailadres met een onderwerp (zoals <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 267 | + 'info_config_suivi_explication' => 'Je kan je op de mailinglijst van deze site inschrijven. Je zal dan via e-mail een aankondiging ontvangen van artikelen en nieuwsflitsen die voor publicatie werden voorgesteld.', |
|
| 268 | + 'info_confirmer_passe' => 'Bevestig het nieuwe wachtwoord:', |
|
| 269 | + 'info_conflit_edition_avis_non_sauvegarde' => 'Let op: de volgende velden werden elders gewijzigd. Jouw wijzigingen op deze velden werden dus niet geregistreerd.', |
|
| 270 | + 'info_conflit_edition_differences' => 'Verschillen :', |
|
| 271 | + 'info_conflit_edition_version_enregistree' => 'De geregistreerde versie :', |
|
| 272 | + 'info_conflit_edition_votre_version' => 'Jouw versie:', |
|
| 273 | + 'info_connexion_base' => 'Proberen op de database aan te sluiten', |
|
| 274 | + 'info_connexion_base_donnee' => 'Aansluiten op je database', |
|
| 275 | + 'info_connexion_ldap_ok' => 'De LDAP-verbinding is gelukt. </b><p>Je kunt doorgaan naar de volgende stap.</p>', |
|
| 276 | + 'info_connexion_mysql' => 'Je SQL verbinding', |
|
| 277 | + 'info_connexion_ok' => 'De verbinding is geslaagd.', |
|
| 278 | + 'info_contact' => 'Contact', |
|
| 279 | + 'info_contenu_articles' => 'Inhoud van de artikelen', |
|
| 280 | + 'info_contributions' => 'Bijdragen', |
|
| 281 | + 'info_creation_paragraphe' => 'Om alinea’s te maken laat je gewoon enkele regels leeg.', |
|
| 282 | + 'info_creation_rubrique' => 'Alvorens artikelen te kunnen schrijven<br /> moet minstens een rubriek worden gemaakt.<br />', |
|
| 283 | + 'info_creation_tables' => 'Aanmaken van tabellen in de database', |
|
| 284 | + 'info_creer_base' => '<b>Creëren</b> een nieuw database:', |
|
| 285 | + 'info_dans_rubrique' => 'In de rubriek:', |
|
| 286 | + 'info_date_publication_anterieure' => 'Datum van eerdere redactie:', |
|
| 287 | + 'info_date_referencement' => 'DATUM VAN DE KOPPELING VAN DEZE SITE:', |
|
| 288 | + 'info_derniere_etape' => 'Klaar!', |
|
| 289 | + 'info_descriptif' => 'Beschrijving:', |
|
| 290 | + 'info_desinstaller_plugin' => 'verwijdert de gegevens en deactiveert de plugin', |
|
| 291 | + 'info_discussion_cours' => 'Lopende discussies', |
|
| 292 | + 'info_ecrire_article' => 'Alvorens een artikel te kunnen schrijven, dien je minimaal één rubriek aan te maken.', |
|
| 293 | + 'info_email_envoi' => 'Verzendadres (optioneel)', |
|
| 294 | + 'info_email_envoi_txt' => 'Geef hieronder het adres op dat gebruikt wordt voor het versturen van e-mails. (Standaard wordt het adres van de geadresseerde als verzendadres gebruikt.):', |
|
| 295 | + 'info_email_webmestre' => 'E-mailadres webmaster', |
|
| 296 | + 'info_envoi_email_automatique' => 'Automatisch verzenden van e-mails', |
|
| 297 | + 'info_envoyer_maintenant' => 'Nu versturen', |
|
| 298 | + 'info_etape_suivante' => 'Naar de volgende stap ', |
|
| 299 | + 'info_etape_suivante_1' => 'Je kunt de volgende stap zetten.', |
|
| 300 | + 'info_etape_suivante_2' => 'Je kunt de volgende stap zetten.', |
|
| 301 | + 'info_exceptions_proxy' => 'Uitzonderingen op de proxy', |
|
| 302 | + 'info_exportation_base' => 'Uitvoer van de database naar @archive@', |
|
| 303 | + 'info_facilite_suivi_activite' => 'Om de opvolging en redactie van artikelen te vergemakkelijken, kan SPIP mails versturen -bijvoorbeeld naar een mailinglist van redacteurs- met de aankondiging van vragen voor publicatie of goedgekeurde publicaties.', |
|
| 304 | + 'info_fichiers_authent' => 'Verificatiebestand ".htpasswd"', |
|
| 305 | + 'info_forums_abo_invites' => 'Je site bevat forums met abonnement; bezoekers worden dus op de publieke site verzocht zich in te schrijven.', |
|
| 306 | + 'info_gauche_admin_tech' => '<b>Deze pagina is enkel toegankelijk voor beheerders van de site.</b><p> Ze geeft toegang tot allerlei technische onderhoudstaken. Voor het uitvoeren van sommige taken zijn een afzonderlijke aanmelding en toegang tot je site via FTP nodig.</p>', |
|
| 307 | + 'info_gauche_admin_vider' => '<b>Deze pagina is alleen beschikbaar voor beheerders.</b><p> Het biedt toegang tot diverse |
|
| 308 | 308 | technische onderhoudsfuncties. Sommige vereisen een specifiek verificatieproces, dat nodig is voor FTP-toegang tot de website.</p>', |
| 309 | - 'info_gauche_auteurs' => 'Je vindt hier alle auteurs van de site. |
|
| 309 | + 'info_gauche_auteurs' => 'Je vindt hier alle auteurs van de site. |
|
| 310 | 310 | Hun status is te herkennen aan de kleur van het icoontje (beheerder = groen; redacteur = geel).', |
| 311 | - 'info_gauche_auteurs_exterieurs' => 'Externe auteurs, zonder toegang tot de site, zijn aangeduid met een blauw icoontje, |
|
| 311 | + 'info_gauche_auteurs_exterieurs' => 'Externe auteurs, zonder toegang tot de site, zijn aangeduid met een blauw icoontje, |
|
| 312 | 312 | gewiste auteurs met een grijze.', |
| 313 | - 'info_gauche_messagerie' => 'Het berichtensysteem laat toe om berichten uit te wisselen tussen redacteurs, memo’s (voor persoonlijk gebruik) te bewaren of aankondigingen te tonen op de beginpagina van de privé-ruimte (als je beheerder bent).', |
|
| 314 | - 'info_gauche_statistiques_referers' => 'Deze pagina toont een lijst met <i>referers</i> (sites die een koppeling bevatten naar je eigen site), alleen voor vandaag en gisteren: de lijst wordt elke 24 uur opnieuw aangemaakt.', |
|
| 315 | - 'info_gauche_visiteurs_enregistres' => 'Hier zal je de geregistreerde bezoekers van de |
|
| 313 | + 'info_gauche_messagerie' => 'Het berichtensysteem laat toe om berichten uit te wisselen tussen redacteurs, memo’s (voor persoonlijk gebruik) te bewaren of aankondigingen te tonen op de beginpagina van de privé-ruimte (als je beheerder bent).', |
|
| 314 | + 'info_gauche_statistiques_referers' => 'Deze pagina toont een lijst met <i>referers</i> (sites die een koppeling bevatten naar je eigen site), alleen voor vandaag en gisteren: de lijst wordt elke 24 uur opnieuw aangemaakt.', |
|
| 315 | + 'info_gauche_visiteurs_enregistres' => 'Hier zal je de geregistreerde bezoekers van de |
|
| 316 | 316 | publieke site vinden (forums met inschrijving).', |
| 317 | - 'info_generation_miniatures_images' => 'Aanmaak van miniatuurafbeeldingen', |
|
| 318 | - 'info_gerer_trad_objets' => '@objets@: het beheer van de vertalingskoppelingen', |
|
| 319 | - 'info_hebergeur_desactiver_envoi_email' => 'Sommige hostingbedrijven staan het automatisch versturen van e-mails via hun servers niet toe. In dat geval zal de volgende functionaliteit van SPIP niet werken.', |
|
| 320 | - 'info_hier' => 'gisteren:', |
|
| 321 | - 'info_identification_publique' => 'Je publieke identiteit...', |
|
| 322 | - 'info_image_process' => 'Kies de beste methode om een miniatuurafbeelding te maken door op de bijhorende afbeelding te klikken.', |
|
| 323 | - 'info_image_process2' => 'Wanneer geen enkel beeld wordt getoond, betekent dit dat de server van je website niet is ingesteld om deze tools te gebruiken. Als je van deze functies gebruik wil maken, dien je de technische verantwoordelijke van de server te contacteren en te vragen naar «GD» of «Imagick» extensies.', |
|
| 324 | - 'info_images_auto' => 'Beelden automatisch berekend', |
|
| 325 | - 'info_informations_personnelles' => 'Persoonlijke gegevens', |
|
| 326 | - 'info_inscription' => 'Ingeschreven op', |
|
| 327 | - 'info_inscription_automatique' => 'Automatische inschrijving van nieuwe redacteurs', |
|
| 328 | - 'info_jeu_caractere' => 'Tekenset van de site', |
|
| 329 | - 'info_jours' => 'dagen', |
|
| 330 | - 'info_laisser_champs_vides' => 'velden leeglaten)', |
|
| 331 | - 'info_langues' => 'Talen van de site', |
|
| 332 | - 'info_ldap_ok' => 'De LDAP-autentificatie is geïnstalleerd', |
|
| 333 | - 'info_lien_hypertexte' => 'Hypertekst koppeling:', |
|
| 334 | - 'info_liste_nouveautes_envoyee' => 'Het lijst met nieuwe bijdragen werd verstuurd', |
|
| 335 | - 'info_liste_redacteurs_connectes' => 'Lijst met online redacteuren', |
|
| 336 | - 'info_login_existant' => 'Deze login is reeds in gebruik', |
|
| 337 | - 'info_login_trop_court' => 'Login te kort.', |
|
| 338 | - 'info_login_trop_court_car_pluriel' => 'De login moet minstens @nb@ teken bevatten.', |
|
| 339 | - 'info_logos' => 'De logo’s', |
|
| 340 | - 'info_maximum' => 'maximum:', |
|
| 341 | - 'info_meme_rubrique' => 'In dezelfde rubriek', |
|
| 342 | - 'info_message_en_redaction' => 'Je berichten in redactie', |
|
| 343 | - 'info_message_technique' => 'Technisch bericht:', |
|
| 344 | - 'info_messagerie_interne' => 'Intern berichtensysteem', |
|
| 345 | - 'info_mise_a_niveau_base' => 'update van je SQL-database', |
|
| 346 | - 'info_mise_a_niveau_base_2' => '{{LET OP!}} Je hebt een SPIP-versie geïnstalleerd die {ouder} is dan diegene die zich eerder op deze site bevond.: je database loopt hierdoor het risico beschadigd te worden waardoor je site niet meer zal functioneren.<br />{{Herinstalleer de SPIP-bestanden.}}', |
|
| 347 | - 'info_modification_enregistree' => 'Je wijziging werd geregistreerd', |
|
| 348 | - 'info_modifier_auteur' => 'De auteur wijzigen:', |
|
| 349 | - 'info_modifier_rubrique' => 'De rubriek wijzigen:', |
|
| 350 | - 'info_modifier_titre' => 'Wijzigen: @titre@', |
|
| 351 | - 'info_mon_site_spip' => 'Mijn SPIP-site', |
|
| 352 | - 'info_moyenne' => 'gemiddeld:', |
|
| 353 | - 'info_multi_cet_article' => 'Gebruikte taal in dit artikel is:', |
|
| 354 | - 'info_multi_langues_choisies' => 'Kies hierna welke talen ter beschikking staan van de redacteurs van je site. |
|
| 317 | + 'info_generation_miniatures_images' => 'Aanmaak van miniatuurafbeeldingen', |
|
| 318 | + 'info_gerer_trad_objets' => '@objets@: het beheer van de vertalingskoppelingen', |
|
| 319 | + 'info_hebergeur_desactiver_envoi_email' => 'Sommige hostingbedrijven staan het automatisch versturen van e-mails via hun servers niet toe. In dat geval zal de volgende functionaliteit van SPIP niet werken.', |
|
| 320 | + 'info_hier' => 'gisteren:', |
|
| 321 | + 'info_identification_publique' => 'Je publieke identiteit...', |
|
| 322 | + 'info_image_process' => 'Kies de beste methode om een miniatuurafbeelding te maken door op de bijhorende afbeelding te klikken.', |
|
| 323 | + 'info_image_process2' => 'Wanneer geen enkel beeld wordt getoond, betekent dit dat de server van je website niet is ingesteld om deze tools te gebruiken. Als je van deze functies gebruik wil maken, dien je de technische verantwoordelijke van de server te contacteren en te vragen naar «GD» of «Imagick» extensies.', |
|
| 324 | + 'info_images_auto' => 'Beelden automatisch berekend', |
|
| 325 | + 'info_informations_personnelles' => 'Persoonlijke gegevens', |
|
| 326 | + 'info_inscription' => 'Ingeschreven op', |
|
| 327 | + 'info_inscription_automatique' => 'Automatische inschrijving van nieuwe redacteurs', |
|
| 328 | + 'info_jeu_caractere' => 'Tekenset van de site', |
|
| 329 | + 'info_jours' => 'dagen', |
|
| 330 | + 'info_laisser_champs_vides' => 'velden leeglaten)', |
|
| 331 | + 'info_langues' => 'Talen van de site', |
|
| 332 | + 'info_ldap_ok' => 'De LDAP-autentificatie is geïnstalleerd', |
|
| 333 | + 'info_lien_hypertexte' => 'Hypertekst koppeling:', |
|
| 334 | + 'info_liste_nouveautes_envoyee' => 'Het lijst met nieuwe bijdragen werd verstuurd', |
|
| 335 | + 'info_liste_redacteurs_connectes' => 'Lijst met online redacteuren', |
|
| 336 | + 'info_login_existant' => 'Deze login is reeds in gebruik', |
|
| 337 | + 'info_login_trop_court' => 'Login te kort.', |
|
| 338 | + 'info_login_trop_court_car_pluriel' => 'De login moet minstens @nb@ teken bevatten.', |
|
| 339 | + 'info_logos' => 'De logo’s', |
|
| 340 | + 'info_maximum' => 'maximum:', |
|
| 341 | + 'info_meme_rubrique' => 'In dezelfde rubriek', |
|
| 342 | + 'info_message_en_redaction' => 'Je berichten in redactie', |
|
| 343 | + 'info_message_technique' => 'Technisch bericht:', |
|
| 344 | + 'info_messagerie_interne' => 'Intern berichtensysteem', |
|
| 345 | + 'info_mise_a_niveau_base' => 'update van je SQL-database', |
|
| 346 | + 'info_mise_a_niveau_base_2' => '{{LET OP!}} Je hebt een SPIP-versie geïnstalleerd die {ouder} is dan diegene die zich eerder op deze site bevond.: je database loopt hierdoor het risico beschadigd te worden waardoor je site niet meer zal functioneren.<br />{{Herinstalleer de SPIP-bestanden.}}', |
|
| 347 | + 'info_modification_enregistree' => 'Je wijziging werd geregistreerd', |
|
| 348 | + 'info_modifier_auteur' => 'De auteur wijzigen:', |
|
| 349 | + 'info_modifier_rubrique' => 'De rubriek wijzigen:', |
|
| 350 | + 'info_modifier_titre' => 'Wijzigen: @titre@', |
|
| 351 | + 'info_mon_site_spip' => 'Mijn SPIP-site', |
|
| 352 | + 'info_moyenne' => 'gemiddeld:', |
|
| 353 | + 'info_multi_cet_article' => 'Gebruikte taal in dit artikel is:', |
|
| 354 | + 'info_multi_langues_choisies' => 'Kies hierna welke talen ter beschikking staan van de redacteurs van je site. |
|
| 355 | 355 | Talen die al worden gebruikt (vooraan in de lijst getoond) kunnen niet geschrapt worden. |
| 356 | 356 | ', |
| 357 | - 'info_multi_objets' => '@objets@ : Activeer de taalmenu', |
|
| 358 | - 'info_multi_secteurs' => '... enkel voor de hoofdrubrieken?', |
|
| 359 | - 'info_nb_articles' => '@nb@ artikelen', |
|
| 360 | - 'info_nb_auteurs' => '@nb@ auteurs', |
|
| 361 | - 'info_nb_messages' => '@nb@ berichten', |
|
| 362 | - 'info_nb_mots_cles' => '@nb@ trefwoorden', |
|
| 363 | - 'info_nb_rubriques' => '@nb@ rubrieken', |
|
| 364 | - 'info_nb_visiteurs' => '@nb@ bezoekers', |
|
| 365 | - 'info_nom' => 'Naam', |
|
| 366 | - 'info_nom_destinataire' => 'Naam van de geadresseerde', |
|
| 367 | - 'info_nom_pas_conforme' => 'HTML bakens zijn niet toegestaan', |
|
| 368 | - 'info_nom_site' => 'Naam van je site', |
|
| 369 | - 'info_nombre_articles' => '@nb_articles@ artikelen,', |
|
| 370 | - 'info_nombre_rubriques' => '@nb_rubriques@ rubrieken, ', |
|
| 371 | - 'info_nombre_sites' => '@nb_sites@ sites,', |
|
| 372 | - 'info_non_deplacer' => 'Niet verplaatsen...', |
|
| 373 | - 'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP kan regelmatig een bericht versturen om de laatste nieuwtjes van de site te melden |
|
| 357 | + 'info_multi_objets' => '@objets@ : Activeer de taalmenu', |
|
| 358 | + 'info_multi_secteurs' => '... enkel voor de hoofdrubrieken?', |
|
| 359 | + 'info_nb_articles' => '@nb@ artikelen', |
|
| 360 | + 'info_nb_auteurs' => '@nb@ auteurs', |
|
| 361 | + 'info_nb_messages' => '@nb@ berichten', |
|
| 362 | + 'info_nb_mots_cles' => '@nb@ trefwoorden', |
|
| 363 | + 'info_nb_rubriques' => '@nb@ rubrieken', |
|
| 364 | + 'info_nb_visiteurs' => '@nb@ bezoekers', |
|
| 365 | + 'info_nom' => 'Naam', |
|
| 366 | + 'info_nom_destinataire' => 'Naam van de geadresseerde', |
|
| 367 | + 'info_nom_pas_conforme' => 'HTML bakens zijn niet toegestaan', |
|
| 368 | + 'info_nom_site' => 'Naam van je site', |
|
| 369 | + 'info_nombre_articles' => '@nb_articles@ artikelen,', |
|
| 370 | + 'info_nombre_rubriques' => '@nb_rubriques@ rubrieken, ', |
|
| 371 | + 'info_nombre_sites' => '@nb_sites@ sites,', |
|
| 372 | + 'info_non_deplacer' => 'Niet verplaatsen...', |
|
| 373 | + 'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP kan regelmatig een bericht versturen om de laatste nieuwtjes van de site te melden |
|
| 374 | 374 | (recent gepubliceerde artikelen en nieuwsflitsen).', |
| 375 | - 'info_non_envoi_liste_nouveautes' => 'De lijst met nieuwe bijdragen niet versturen', |
|
| 376 | - 'info_non_modifiable' => 'kan niet gewijzigd worden', |
|
| 377 | - 'info_non_suppression_mot_cle' => 'ik wil dit trefwoord niet verwijderen.', |
|
| 378 | - 'info_notes' => 'Voetnoot', |
|
| 379 | - 'info_nouvel_article' => 'Nieuw artikel', |
|
| 380 | - 'info_nouvelle_traduction' => 'Nieuwe vertaling :', |
|
| 381 | - 'info_numero_article' => 'ARTIKEL NUMMER:', |
|
| 382 | - 'info_obligatoire_02' => '(verplicht)', # MODIF |
|
| 383 | - 'info_option_accepter_visiteurs' => 'Inschrijving van bezoekers van de publieke site aanvaarden', |
|
| 384 | - 'info_option_ne_pas_accepter_visiteurs' => 'Inschrijving van bezoekers weigeren', |
|
| 385 | - 'info_options_avancees' => 'GEAVANCEERDE OPTIES', |
|
| 386 | - 'info_ou' => 'of...', |
|
| 387 | - 'info_page_interdite' => 'Verboden pagina', |
|
| 388 | - 'info_par_nom' => 'op naam', |
|
| 389 | - 'info_par_nombre_article' => 'volgens aantal artikelen', |
|
| 390 | - 'info_par_statut' => 'op status', |
|
| 391 | - 'info_par_tri' => '’(per @tri@)’', |
|
| 392 | - 'info_passe_trop_court' => 'Te kort wachtwoord.', |
|
| 393 | - 'info_passe_trop_court_car_pluriel' => 'Het wachtwoord moet ten minste @nb@ teken bevatten.', |
|
| 394 | - 'info_passes_identiques' => 'Beide wachtwoorden zijn niet identiek.', |
|
| 395 | - 'info_plus_cinq_car' => 'Meer dan 5 karakters', |
|
| 396 | - 'info_plus_cinq_car_2' => '(Meer dan 5 karakters)', |
|
| 397 | - 'info_plus_trois_car' => '(Meer dan 3 karakters)', |
|
| 398 | - 'info_popularite' => 'populariteit: @popularite@; bezoeken: @visites@', |
|
| 399 | - 'info_post_scriptum' => 'Post-Scriptum', |
|
| 400 | - 'info_post_scriptum_2' => 'Post-scriptum:', |
|
| 401 | - 'info_pour' => 'voor', |
|
| 402 | - 'info_preview_texte' => 'Nu is het ook mogelijk om de site in preview mode te zien, alsof alle artikelen en berichten (indien ze tenminste werden « voorgesteld voor publicatie ») ook echt waren gepubliceerd. Dient deze mogelijkheid uitsluitend te worden voorzien voor de beheerders, voor alle redacteurs of voor niemand?', |
|
| 403 | - 'info_procedez_par_etape' => 'vervolg stap voor stap', |
|
| 404 | - 'info_procedure_maj_version' => 'de procedure voor de update die nodig is om de database aan te passen aan de nieuwe versie van SPIP.', |
|
| 405 | - 'info_proxy_ok' => 'Test van proxy geslaagde.', |
|
| 406 | - 'info_ps' => 'N.B.', |
|
| 407 | - 'info_publier' => 'publiceren', |
|
| 408 | - 'info_publies' => 'Je gepubliceerde artikelen', |
|
| 409 | - 'info_question_accepter_visiteurs' => 'Als de sjablonen van je site voorzien dat bezoekers zich kunnen registreren zonder toegang tot de privé-ruimte, activeer dan de volgende optie :', |
|
| 410 | - 'info_question_inscription_nouveaux_redacteurs' => 'Aanvaard je inschrijvingen van nieuwe redacteuren vanaf |
|
| 375 | + 'info_non_envoi_liste_nouveautes' => 'De lijst met nieuwe bijdragen niet versturen', |
|
| 376 | + 'info_non_modifiable' => 'kan niet gewijzigd worden', |
|
| 377 | + 'info_non_suppression_mot_cle' => 'ik wil dit trefwoord niet verwijderen.', |
|
| 378 | + 'info_notes' => 'Voetnoot', |
|
| 379 | + 'info_nouvel_article' => 'Nieuw artikel', |
|
| 380 | + 'info_nouvelle_traduction' => 'Nieuwe vertaling :', |
|
| 381 | + 'info_numero_article' => 'ARTIKEL NUMMER:', |
|
| 382 | + 'info_obligatoire_02' => '(verplicht)', # MODIF |
|
| 383 | + 'info_option_accepter_visiteurs' => 'Inschrijving van bezoekers van de publieke site aanvaarden', |
|
| 384 | + 'info_option_ne_pas_accepter_visiteurs' => 'Inschrijving van bezoekers weigeren', |
|
| 385 | + 'info_options_avancees' => 'GEAVANCEERDE OPTIES', |
|
| 386 | + 'info_ou' => 'of...', |
|
| 387 | + 'info_page_interdite' => 'Verboden pagina', |
|
| 388 | + 'info_par_nom' => 'op naam', |
|
| 389 | + 'info_par_nombre_article' => 'volgens aantal artikelen', |
|
| 390 | + 'info_par_statut' => 'op status', |
|
| 391 | + 'info_par_tri' => '’(per @tri@)’', |
|
| 392 | + 'info_passe_trop_court' => 'Te kort wachtwoord.', |
|
| 393 | + 'info_passe_trop_court_car_pluriel' => 'Het wachtwoord moet ten minste @nb@ teken bevatten.', |
|
| 394 | + 'info_passes_identiques' => 'Beide wachtwoorden zijn niet identiek.', |
|
| 395 | + 'info_plus_cinq_car' => 'Meer dan 5 karakters', |
|
| 396 | + 'info_plus_cinq_car_2' => '(Meer dan 5 karakters)', |
|
| 397 | + 'info_plus_trois_car' => '(Meer dan 3 karakters)', |
|
| 398 | + 'info_popularite' => 'populariteit: @popularite@; bezoeken: @visites@', |
|
| 399 | + 'info_post_scriptum' => 'Post-Scriptum', |
|
| 400 | + 'info_post_scriptum_2' => 'Post-scriptum:', |
|
| 401 | + 'info_pour' => 'voor', |
|
| 402 | + 'info_preview_texte' => 'Nu is het ook mogelijk om de site in preview mode te zien, alsof alle artikelen en berichten (indien ze tenminste werden « voorgesteld voor publicatie ») ook echt waren gepubliceerd. Dient deze mogelijkheid uitsluitend te worden voorzien voor de beheerders, voor alle redacteurs of voor niemand?', |
|
| 403 | + 'info_procedez_par_etape' => 'vervolg stap voor stap', |
|
| 404 | + 'info_procedure_maj_version' => 'de procedure voor de update die nodig is om de database aan te passen aan de nieuwe versie van SPIP.', |
|
| 405 | + 'info_proxy_ok' => 'Test van proxy geslaagde.', |
|
| 406 | + 'info_ps' => 'N.B.', |
|
| 407 | + 'info_publier' => 'publiceren', |
|
| 408 | + 'info_publies' => 'Je gepubliceerde artikelen', |
|
| 409 | + 'info_question_accepter_visiteurs' => 'Als de sjablonen van je site voorzien dat bezoekers zich kunnen registreren zonder toegang tot de privé-ruimte, activeer dan de volgende optie :', |
|
| 410 | + 'info_question_inscription_nouveaux_redacteurs' => 'Aanvaard je inschrijvingen van nieuwe redacteuren vanaf |
|
| 411 | 411 | de publieke site? Indien wel, dan kunnen bezoekers |
| 412 | 412 | zich via een geautomatiseerd formulier inschrijven en |
| 413 | 413 | toegang krijgen tot de privé-ruimte om zelf artikelen |
@@ -417,483 +417,483 @@ discard block |
||
| 417 | 417 | blokkeren echter het versturen van e-mail vanaf hun |
| 418 | 418 | servers: in dat geval is een automatische inschrijving |
| 419 | 419 | niet mogelijk.</div>', |
| 420 | - 'info_qui_edite' => '@nom_auteur_modif@ heeft @date_diff@ minuten geleden aan deze inhoud gewerkt ', |
|
| 421 | - 'info_racine_site' => 'Begin van de site', |
|
| 422 | - 'info_recharger_page' => 'Laad deze pagina over enkele ogenblikken opnieuw.', |
|
| 423 | - 'info_recherche_auteur_zero' => 'Geen resultaat voor « @cherche_auteur@ ».', |
|
| 424 | - 'info_recommencer' => 'Probeer nogmaals, alstublieft.', |
|
| 425 | - 'info_redacteur_1' => 'Redacteur', |
|
| 426 | - 'info_redacteur_2' => 'met toegang tot de privé-ruimte (<i>aanbevolen</i>)', |
|
| 427 | - 'info_redacteurs' => 'Redacteurs', |
|
| 428 | - 'info_redaction_en_cours' => 'IN REDACTIE', |
|
| 429 | - 'info_redirection' => 'Doorverwijzing', |
|
| 430 | - 'info_redirection_activee' => 'De doorverwijzing is ingeschakeld.', |
|
| 431 | - 'info_redirection_boucle' => 'Je probeert het artikel naar zichzelf door te verwijzen.', |
|
| 432 | - 'info_redirection_desactivee' => 'De doorverwijzing is verwijderd.', |
|
| 433 | - 'info_refuses' => 'Je geweigerde artikelen', |
|
| 434 | - 'info_reglage_ldap' => 'Opties: <b>Instellen van de LDAP invoer</b>', |
|
| 435 | - 'info_renvoi_article' => '<b>Doorverwijzing.</b> Dit artikel verwijst naar de pagina:', |
|
| 436 | - 'info_reserve_admin' => 'Alleen beheerders kunnen dit adres wijzigen.', |
|
| 437 | - 'info_restreindre_rubrique' => 'Beheer tot deze rubriek beperken:', |
|
| 438 | - 'info_resultat_recherche' => 'Resultaat van de zoekopdracht:', |
|
| 439 | - 'info_rubriques' => 'Rubrieken', |
|
| 440 | - 'info_rubriques_02' => 'rubrieken', |
|
| 441 | - 'info_rubriques_trouvees' => 'Gevonden rubrieken', |
|
| 442 | - 'info_sans_titre' => 'Zonder titel', |
|
| 443 | - 'info_selection_chemin_acces' => '<b>Selecteer</b> hierna de toegangswijze tot het adresboek:', |
|
| 444 | - 'info_signatures' => 'namen', |
|
| 445 | - 'info_site' => 'Site', |
|
| 446 | - 'info_site_2' => 'site:', |
|
| 447 | - 'info_site_min' => 'site', |
|
| 448 | - 'info_site_reference_2' => 'Gekoppelde website', |
|
| 449 | - 'info_site_web' => 'Website:', |
|
| 450 | - 'info_sites' => 'sites', |
|
| 451 | - 'info_sites_lies_mot' => 'Referentiesites gekoppeld aan het trefwoord ', |
|
| 452 | - 'info_sites_proxy' => 'Een proxy gebruiken', |
|
| 453 | - 'info_sites_trouves' => 'Gevonden websites ', |
|
| 454 | - 'info_sous_titre' => 'Ondertitel:', |
|
| 455 | - 'info_statut_administrateur' => 'Beheerder', |
|
| 456 | - 'info_statut_auteur' => 'Status van deze auteur:', |
|
| 457 | - 'info_statut_auteur_2' => 'Ik ben', |
|
| 458 | - 'info_statut_auteur_a_confirmer' => 'Te bevestigen inschrijving', |
|
| 459 | - 'info_statut_auteur_autre' => 'Andere status:', |
|
| 460 | - 'info_statut_redacteur' => 'Redacteur', |
|
| 461 | - 'info_statut_utilisateurs_1' => 'Standaardstatus voor de ingevoerde gebruikers', |
|
| 462 | - 'info_statut_utilisateurs_2' => 'Kies de status die de personen uit het LDAP-adressenboek toebediend krijgen als ze de eerste keer inloggen. Nadien kan je de status van een individuele auteur wijzigen.', |
|
| 463 | - 'info_suivi_activite' => 'Opvolgen van de editoriale activiteit', |
|
| 464 | - 'info_surtitre' => 'Opschrift:', |
|
| 465 | - 'info_syndication_integrale_1' => 'Je site stelt syndicatiebestanden voor (zie « <a href="@url@">@titre@</a> »).', |
|
| 466 | - 'info_syndication_integrale_2' => 'Wil je integrale artikelen doorgeven of enkel een samenvatting van enkele honderden karakters doorgeven ?', |
|
| 467 | - 'info_table_prefix' => 'Je kunt het voorvoegsel van de naam van de databasetabel aanpassen (dit is absoluut noodzakelijk wanneer er verschillende sites in dezelfde database zitten). Dit voorvoegsel schrijf je in kleine letters, zonder accenten of spaties.', |
|
| 468 | - 'info_taille_maximale_images' => 'SPIP zal de maximumomvang van de beelden testen die hij kan behandelen (in miljoenen pixels). <br/> zullen de grotere beelden niet verminderd zijn.', |
|
| 469 | - 'info_taille_maximale_vignette' => 'Maximale grootte van de mini-afbeeldingen gemaakt door het systeem:', |
|
| 470 | - 'info_terminer_installation' => 'Je kan de standaardinstallatieprocedure nu beëindigen.', |
|
| 471 | - 'info_texte' => 'Tekst', |
|
| 472 | - 'info_texte_explicatif' => 'Uitleg', |
|
| 473 | - 'info_texte_long' => '(de tekst is lang: hij zal bijgevolg in verschillende delen verschijnen die opnieuw bij elkaar worden gevoegd na goedkeuring van de tekst.)', |
|
| 474 | - 'info_texte_message' => 'Tekst van je bericht', |
|
| 475 | - 'info_texte_message_02' => 'Tekst van het bericht', |
|
| 476 | - 'info_titre' => 'Titel:', |
|
| 477 | - 'info_total' => 'totaal:', |
|
| 478 | - 'info_tous_articles_en_redaction' => 'Alle artikelen in redactie', |
|
| 479 | - 'info_tous_articles_presents' => 'Alle in deze rubriek gepubliceerde artikelen', |
|
| 480 | - 'info_tous_articles_refuses' => 'Alle afgewezen artikelen', |
|
| 481 | - 'info_tous_les' => 'alle:', |
|
| 482 | - 'info_tout_site' => 'Volledige site', |
|
| 483 | - 'info_tout_site2' => 'Het artikel werd niet in deze taal vertaald.', |
|
| 484 | - 'info_tout_site3' => 'Het artikel werd in deze taal vertaald maar aan het bronartikel werden wijzigingen aangebracht. De vertaling dient geactualiseerd te worden.', |
|
| 485 | - 'info_tout_site4' => 'Het artikel is vertaald naar deze taal en de vertaling is geactualiseerd.', |
|
| 486 | - 'info_tout_site5' => 'Origineel artikel.', |
|
| 487 | - 'info_tout_site6' => '<b>LET OP:</b> alleen de originele artikelen worden getoond. |
|
| 420 | + 'info_qui_edite' => '@nom_auteur_modif@ heeft @date_diff@ minuten geleden aan deze inhoud gewerkt ', |
|
| 421 | + 'info_racine_site' => 'Begin van de site', |
|
| 422 | + 'info_recharger_page' => 'Laad deze pagina over enkele ogenblikken opnieuw.', |
|
| 423 | + 'info_recherche_auteur_zero' => 'Geen resultaat voor « @cherche_auteur@ ».', |
|
| 424 | + 'info_recommencer' => 'Probeer nogmaals, alstublieft.', |
|
| 425 | + 'info_redacteur_1' => 'Redacteur', |
|
| 426 | + 'info_redacteur_2' => 'met toegang tot de privé-ruimte (<i>aanbevolen</i>)', |
|
| 427 | + 'info_redacteurs' => 'Redacteurs', |
|
| 428 | + 'info_redaction_en_cours' => 'IN REDACTIE', |
|
| 429 | + 'info_redirection' => 'Doorverwijzing', |
|
| 430 | + 'info_redirection_activee' => 'De doorverwijzing is ingeschakeld.', |
|
| 431 | + 'info_redirection_boucle' => 'Je probeert het artikel naar zichzelf door te verwijzen.', |
|
| 432 | + 'info_redirection_desactivee' => 'De doorverwijzing is verwijderd.', |
|
| 433 | + 'info_refuses' => 'Je geweigerde artikelen', |
|
| 434 | + 'info_reglage_ldap' => 'Opties: <b>Instellen van de LDAP invoer</b>', |
|
| 435 | + 'info_renvoi_article' => '<b>Doorverwijzing.</b> Dit artikel verwijst naar de pagina:', |
|
| 436 | + 'info_reserve_admin' => 'Alleen beheerders kunnen dit adres wijzigen.', |
|
| 437 | + 'info_restreindre_rubrique' => 'Beheer tot deze rubriek beperken:', |
|
| 438 | + 'info_resultat_recherche' => 'Resultaat van de zoekopdracht:', |
|
| 439 | + 'info_rubriques' => 'Rubrieken', |
|
| 440 | + 'info_rubriques_02' => 'rubrieken', |
|
| 441 | + 'info_rubriques_trouvees' => 'Gevonden rubrieken', |
|
| 442 | + 'info_sans_titre' => 'Zonder titel', |
|
| 443 | + 'info_selection_chemin_acces' => '<b>Selecteer</b> hierna de toegangswijze tot het adresboek:', |
|
| 444 | + 'info_signatures' => 'namen', |
|
| 445 | + 'info_site' => 'Site', |
|
| 446 | + 'info_site_2' => 'site:', |
|
| 447 | + 'info_site_min' => 'site', |
|
| 448 | + 'info_site_reference_2' => 'Gekoppelde website', |
|
| 449 | + 'info_site_web' => 'Website:', |
|
| 450 | + 'info_sites' => 'sites', |
|
| 451 | + 'info_sites_lies_mot' => 'Referentiesites gekoppeld aan het trefwoord ', |
|
| 452 | + 'info_sites_proxy' => 'Een proxy gebruiken', |
|
| 453 | + 'info_sites_trouves' => 'Gevonden websites ', |
|
| 454 | + 'info_sous_titre' => 'Ondertitel:', |
|
| 455 | + 'info_statut_administrateur' => 'Beheerder', |
|
| 456 | + 'info_statut_auteur' => 'Status van deze auteur:', |
|
| 457 | + 'info_statut_auteur_2' => 'Ik ben', |
|
| 458 | + 'info_statut_auteur_a_confirmer' => 'Te bevestigen inschrijving', |
|
| 459 | + 'info_statut_auteur_autre' => 'Andere status:', |
|
| 460 | + 'info_statut_redacteur' => 'Redacteur', |
|
| 461 | + 'info_statut_utilisateurs_1' => 'Standaardstatus voor de ingevoerde gebruikers', |
|
| 462 | + 'info_statut_utilisateurs_2' => 'Kies de status die de personen uit het LDAP-adressenboek toebediend krijgen als ze de eerste keer inloggen. Nadien kan je de status van een individuele auteur wijzigen.', |
|
| 463 | + 'info_suivi_activite' => 'Opvolgen van de editoriale activiteit', |
|
| 464 | + 'info_surtitre' => 'Opschrift:', |
|
| 465 | + 'info_syndication_integrale_1' => 'Je site stelt syndicatiebestanden voor (zie « <a href="@url@">@titre@</a> »).', |
|
| 466 | + 'info_syndication_integrale_2' => 'Wil je integrale artikelen doorgeven of enkel een samenvatting van enkele honderden karakters doorgeven ?', |
|
| 467 | + 'info_table_prefix' => 'Je kunt het voorvoegsel van de naam van de databasetabel aanpassen (dit is absoluut noodzakelijk wanneer er verschillende sites in dezelfde database zitten). Dit voorvoegsel schrijf je in kleine letters, zonder accenten of spaties.', |
|
| 468 | + 'info_taille_maximale_images' => 'SPIP zal de maximumomvang van de beelden testen die hij kan behandelen (in miljoenen pixels). <br/> zullen de grotere beelden niet verminderd zijn.', |
|
| 469 | + 'info_taille_maximale_vignette' => 'Maximale grootte van de mini-afbeeldingen gemaakt door het systeem:', |
|
| 470 | + 'info_terminer_installation' => 'Je kan de standaardinstallatieprocedure nu beëindigen.', |
|
| 471 | + 'info_texte' => 'Tekst', |
|
| 472 | + 'info_texte_explicatif' => 'Uitleg', |
|
| 473 | + 'info_texte_long' => '(de tekst is lang: hij zal bijgevolg in verschillende delen verschijnen die opnieuw bij elkaar worden gevoegd na goedkeuring van de tekst.)', |
|
| 474 | + 'info_texte_message' => 'Tekst van je bericht', |
|
| 475 | + 'info_texte_message_02' => 'Tekst van het bericht', |
|
| 476 | + 'info_titre' => 'Titel:', |
|
| 477 | + 'info_total' => 'totaal:', |
|
| 478 | + 'info_tous_articles_en_redaction' => 'Alle artikelen in redactie', |
|
| 479 | + 'info_tous_articles_presents' => 'Alle in deze rubriek gepubliceerde artikelen', |
|
| 480 | + 'info_tous_articles_refuses' => 'Alle afgewezen artikelen', |
|
| 481 | + 'info_tous_les' => 'alle:', |
|
| 482 | + 'info_tout_site' => 'Volledige site', |
|
| 483 | + 'info_tout_site2' => 'Het artikel werd niet in deze taal vertaald.', |
|
| 484 | + 'info_tout_site3' => 'Het artikel werd in deze taal vertaald maar aan het bronartikel werden wijzigingen aangebracht. De vertaling dient geactualiseerd te worden.', |
|
| 485 | + 'info_tout_site4' => 'Het artikel is vertaald naar deze taal en de vertaling is geactualiseerd.', |
|
| 486 | + 'info_tout_site5' => 'Origineel artikel.', |
|
| 487 | + 'info_tout_site6' => '<b>LET OP:</b> alleen de originele artikelen worden getoond. |
|
| 488 | 488 | Vertalingen worden gelinkt aan het origineel, |
| 489 | 489 | een kleur geeft hun status aan:', |
| 490 | - 'info_traductions' => 'Vertalingen', |
|
| 491 | - 'info_travail_colaboratif' => 'Samenwerking op artikelen', |
|
| 492 | - 'info_un_article' => 'een artikel, ', |
|
| 493 | - 'info_un_site' => 'een website, ', |
|
| 494 | - 'info_une_rubrique' => 'een rubriek, ', |
|
| 495 | - 'info_une_rubrique_02' => '1 rubriek', |
|
| 496 | - 'info_url' => 'URL:', |
|
| 497 | - 'info_url_proxy' => 'Proxy-URL', |
|
| 498 | - 'info_url_proxy_pas_conforme' => 'De URL van de proxy is ongeldig.', |
|
| 499 | - 'info_url_site_pas_conforme' => 'De site URL is niet geldig.', |
|
| 500 | - 'info_url_test_proxy' => 'Test-URL', |
|
| 501 | - 'info_urlref' => 'Adres van de koppeling:', |
|
| 502 | - 'info_utilisation_spip' => 'Je kan het publicatiesysteem nu gebruiken...', |
|
| 503 | - 'info_visites_par_mois' => 'Weergave per maand:', |
|
| 504 | - 'info_visiteur_1' => 'Bezoeker', |
|
| 505 | - 'info_visiteur_2' => 'van de publieke site', |
|
| 506 | - 'info_visiteurs' => 'Bezoekers', |
|
| 507 | - 'info_visiteurs_02' => 'Bezoekers van de publieke site', |
|
| 508 | - 'info_webmestre_forces' => 'Webmasters zijn op dit moment gedefinieerd in <tt>@file_options@</tt>.', |
|
| 509 | - 'install_adresse_base_hebergeur' => 'Adres van de database die door de provider wordt toegekend', |
|
| 510 | - 'install_connect_ok' => 'De nieuwe database is gedeclareerd als server @connect@.', |
|
| 511 | - 'install_echec_annonce' => 'De installatie zal wellicht mislukken of leiden tot een niet-werkende site...', |
|
| 512 | - 'install_extension_mbstring' => 'SPIP functioneert niet met:', |
|
| 513 | - 'install_extension_php_obligatoire' => 'SPIP benodigt de PHP-extensie:', |
|
| 514 | - 'install_login_base_hebergeur' => 'Login van aansluiten die door de provider wordt toegekend', |
|
| 515 | - 'install_nom_base_hebergeur' => 'De naam van de database die door de provider wordt toegekend:', |
|
| 516 | - 'install_pas_table' => 'Database momenteel zonder tabellen', |
|
| 517 | - 'install_pass_base_hebergeur' => 'Wachtwoord van aansluiten dat door de provider wordt toegekend', |
|
| 518 | - 'install_php_version' => 'PHP versie @version@ onvoldoende (minimum = @minimum@)', |
|
| 519 | - 'install_select_langue' => 'Kies een taal en klik vervolgens op de knop «volgende» om de installatie te beginnen.', |
|
| 520 | - 'install_select_type_db' => 'Het type database aangeven:', |
|
| 521 | - 'install_select_type_mysql' => 'MySQL', |
|
| 522 | - 'install_select_type_pg' => 'PostgreSQL', |
|
| 523 | - 'install_select_type_sqlite2' => 'SQLite 2', |
|
| 524 | - 'install_select_type_sqlite3' => 'SQLite 3', |
|
| 525 | - 'install_serveur_hebergeur' => 'Databaseserver die door de provider wordt toegekend', |
|
| 526 | - 'install_table_prefix_hebergeur' => 'Het voorvoegsel van de tabel dat door de provider wordt toegekend:', |
|
| 527 | - 'install_tables_base' => 'Tabellen van de database', |
|
| 528 | - 'install_types_db_connus' => 'SPIP kan <b>MySQL</b> (het meest verbreid), <b>PostgreSQL</b> en <b>SQLite</b> gebruiken.', |
|
| 529 | - 'install_types_db_connus_avertissement' => '<b>PostgreSQL</b>support wordt experimenteel voorgesteld.', |
|
| 530 | - 'instituer_erreur_statut_a_change' => 'De status werd al gewijzigd', |
|
| 531 | - 'instituer_erreur_statut_non_autorise' => 'Je kunt niet kiezen voor deze status', |
|
| 532 | - 'intem_redacteur' => 'redacteur', |
|
| 533 | - 'intitule_licence' => 'Licentie', |
|
| 534 | - 'item_accepter_inscriptions' => 'Inschrijvingen aanvaarden', |
|
| 535 | - 'item_activer_messages_avertissement' => 'Waarschuwingsberichten activeren', |
|
| 536 | - 'item_administrateur_2' => 'beheerder', |
|
| 537 | - 'item_afficher_calendrier' => 'Op de kalender tonen', |
|
| 538 | - 'item_autoriser_syndication_integrale' => 'Volledige artikelen verspreiden via syndicatiebestanden', |
|
| 539 | - 'item_choix_administrateurs' => 'de beheerders', |
|
| 540 | - 'item_choix_generation_miniature' => 'Automatisch aanmaken van verkleinde afbeeldingen.', |
|
| 541 | - 'item_choix_non_generation_miniature' => 'Geen verkleinde afbeeldingen aanmaken.', |
|
| 542 | - 'item_choix_redacteurs' => 'de redacteurs', |
|
| 543 | - 'item_choix_visiteurs' => 'bezoekers van de publieke site', |
|
| 544 | - 'item_creer_fichiers_authent' => 'de .htpasswd bestanden aanmaken', |
|
| 545 | - 'item_login' => 'Login', |
|
| 546 | - 'item_messagerie_agenda' => 'De berichtendienst en de agenda activeren', |
|
| 547 | - 'item_mots_cles_association_articles' => 'aan artikelen', |
|
| 548 | - 'item_mots_cles_association_rubriques' => 'aan rubrieken', |
|
| 549 | - 'item_mots_cles_association_sites' => 'aan gesyndiceerde of gerefereerde sites.', |
|
| 550 | - 'item_non' => 'Nee', |
|
| 551 | - 'item_non_accepter_inscriptions' => 'Geen inschrijvingen aanvaarden', |
|
| 552 | - 'item_non_activer_messages_avertissement' => 'Geen waarschuwingsberichten', |
|
| 553 | - 'item_non_afficher_calendrier' => 'Niet tonen op de kalender', |
|
| 554 | - 'item_non_autoriser_syndication_integrale' => 'Alleen een samenvatting verspreiden', |
|
| 555 | - 'item_non_creer_fichiers_authent' => 'Deze bestanden niet aanmaken', |
|
| 556 | - 'item_non_messagerie_agenda' => 'De berichtendienst en de agenda deactiveren', |
|
| 557 | - 'item_non_publier_articles' => 'Artikelen niet vrijgeven voor de vastgelegde datum van publicatie', |
|
| 558 | - 'item_nouvel_auteur' => 'Nieuwe auteur', |
|
| 559 | - 'item_nouvelle_rubrique' => 'Nieuwe rubriek', |
|
| 560 | - 'item_oui' => 'Ja', |
|
| 561 | - 'item_publier_articles' => 'Artikelen publiceren, ongeacht hun publicatiedatum.', |
|
| 562 | - 'item_reponse_article' => 'Antwoord op artikel', |
|
| 563 | - 'item_visiteur' => 'bezoeker', |
|
| 490 | + 'info_traductions' => 'Vertalingen', |
|
| 491 | + 'info_travail_colaboratif' => 'Samenwerking op artikelen', |
|
| 492 | + 'info_un_article' => 'een artikel, ', |
|
| 493 | + 'info_un_site' => 'een website, ', |
|
| 494 | + 'info_une_rubrique' => 'een rubriek, ', |
|
| 495 | + 'info_une_rubrique_02' => '1 rubriek', |
|
| 496 | + 'info_url' => 'URL:', |
|
| 497 | + 'info_url_proxy' => 'Proxy-URL', |
|
| 498 | + 'info_url_proxy_pas_conforme' => 'De URL van de proxy is ongeldig.', |
|
| 499 | + 'info_url_site_pas_conforme' => 'De site URL is niet geldig.', |
|
| 500 | + 'info_url_test_proxy' => 'Test-URL', |
|
| 501 | + 'info_urlref' => 'Adres van de koppeling:', |
|
| 502 | + 'info_utilisation_spip' => 'Je kan het publicatiesysteem nu gebruiken...', |
|
| 503 | + 'info_visites_par_mois' => 'Weergave per maand:', |
|
| 504 | + 'info_visiteur_1' => 'Bezoeker', |
|
| 505 | + 'info_visiteur_2' => 'van de publieke site', |
|
| 506 | + 'info_visiteurs' => 'Bezoekers', |
|
| 507 | + 'info_visiteurs_02' => 'Bezoekers van de publieke site', |
|
| 508 | + 'info_webmestre_forces' => 'Webmasters zijn op dit moment gedefinieerd in <tt>@file_options@</tt>.', |
|
| 509 | + 'install_adresse_base_hebergeur' => 'Adres van de database die door de provider wordt toegekend', |
|
| 510 | + 'install_connect_ok' => 'De nieuwe database is gedeclareerd als server @connect@.', |
|
| 511 | + 'install_echec_annonce' => 'De installatie zal wellicht mislukken of leiden tot een niet-werkende site...', |
|
| 512 | + 'install_extension_mbstring' => 'SPIP functioneert niet met:', |
|
| 513 | + 'install_extension_php_obligatoire' => 'SPIP benodigt de PHP-extensie:', |
|
| 514 | + 'install_login_base_hebergeur' => 'Login van aansluiten die door de provider wordt toegekend', |
|
| 515 | + 'install_nom_base_hebergeur' => 'De naam van de database die door de provider wordt toegekend:', |
|
| 516 | + 'install_pas_table' => 'Database momenteel zonder tabellen', |
|
| 517 | + 'install_pass_base_hebergeur' => 'Wachtwoord van aansluiten dat door de provider wordt toegekend', |
|
| 518 | + 'install_php_version' => 'PHP versie @version@ onvoldoende (minimum = @minimum@)', |
|
| 519 | + 'install_select_langue' => 'Kies een taal en klik vervolgens op de knop «volgende» om de installatie te beginnen.', |
|
| 520 | + 'install_select_type_db' => 'Het type database aangeven:', |
|
| 521 | + 'install_select_type_mysql' => 'MySQL', |
|
| 522 | + 'install_select_type_pg' => 'PostgreSQL', |
|
| 523 | + 'install_select_type_sqlite2' => 'SQLite 2', |
|
| 524 | + 'install_select_type_sqlite3' => 'SQLite 3', |
|
| 525 | + 'install_serveur_hebergeur' => 'Databaseserver die door de provider wordt toegekend', |
|
| 526 | + 'install_table_prefix_hebergeur' => 'Het voorvoegsel van de tabel dat door de provider wordt toegekend:', |
|
| 527 | + 'install_tables_base' => 'Tabellen van de database', |
|
| 528 | + 'install_types_db_connus' => 'SPIP kan <b>MySQL</b> (het meest verbreid), <b>PostgreSQL</b> en <b>SQLite</b> gebruiken.', |
|
| 529 | + 'install_types_db_connus_avertissement' => '<b>PostgreSQL</b>support wordt experimenteel voorgesteld.', |
|
| 530 | + 'instituer_erreur_statut_a_change' => 'De status werd al gewijzigd', |
|
| 531 | + 'instituer_erreur_statut_non_autorise' => 'Je kunt niet kiezen voor deze status', |
|
| 532 | + 'intem_redacteur' => 'redacteur', |
|
| 533 | + 'intitule_licence' => 'Licentie', |
|
| 534 | + 'item_accepter_inscriptions' => 'Inschrijvingen aanvaarden', |
|
| 535 | + 'item_activer_messages_avertissement' => 'Waarschuwingsberichten activeren', |
|
| 536 | + 'item_administrateur_2' => 'beheerder', |
|
| 537 | + 'item_afficher_calendrier' => 'Op de kalender tonen', |
|
| 538 | + 'item_autoriser_syndication_integrale' => 'Volledige artikelen verspreiden via syndicatiebestanden', |
|
| 539 | + 'item_choix_administrateurs' => 'de beheerders', |
|
| 540 | + 'item_choix_generation_miniature' => 'Automatisch aanmaken van verkleinde afbeeldingen.', |
|
| 541 | + 'item_choix_non_generation_miniature' => 'Geen verkleinde afbeeldingen aanmaken.', |
|
| 542 | + 'item_choix_redacteurs' => 'de redacteurs', |
|
| 543 | + 'item_choix_visiteurs' => 'bezoekers van de publieke site', |
|
| 544 | + 'item_creer_fichiers_authent' => 'de .htpasswd bestanden aanmaken', |
|
| 545 | + 'item_login' => 'Login', |
|
| 546 | + 'item_messagerie_agenda' => 'De berichtendienst en de agenda activeren', |
|
| 547 | + 'item_mots_cles_association_articles' => 'aan artikelen', |
|
| 548 | + 'item_mots_cles_association_rubriques' => 'aan rubrieken', |
|
| 549 | + 'item_mots_cles_association_sites' => 'aan gesyndiceerde of gerefereerde sites.', |
|
| 550 | + 'item_non' => 'Nee', |
|
| 551 | + 'item_non_accepter_inscriptions' => 'Geen inschrijvingen aanvaarden', |
|
| 552 | + 'item_non_activer_messages_avertissement' => 'Geen waarschuwingsberichten', |
|
| 553 | + 'item_non_afficher_calendrier' => 'Niet tonen op de kalender', |
|
| 554 | + 'item_non_autoriser_syndication_integrale' => 'Alleen een samenvatting verspreiden', |
|
| 555 | + 'item_non_creer_fichiers_authent' => 'Deze bestanden niet aanmaken', |
|
| 556 | + 'item_non_messagerie_agenda' => 'De berichtendienst en de agenda deactiveren', |
|
| 557 | + 'item_non_publier_articles' => 'Artikelen niet vrijgeven voor de vastgelegde datum van publicatie', |
|
| 558 | + 'item_nouvel_auteur' => 'Nieuwe auteur', |
|
| 559 | + 'item_nouvelle_rubrique' => 'Nieuwe rubriek', |
|
| 560 | + 'item_oui' => 'Ja', |
|
| 561 | + 'item_publier_articles' => 'Artikelen publiceren, ongeacht hun publicatiedatum.', |
|
| 562 | + 'item_reponse_article' => 'Antwoord op artikel', |
|
| 563 | + 'item_visiteur' => 'bezoeker', |
|
| 564 | 564 | |
| 565 | - // J |
|
| 566 | - 'jour_non_connu_nc' => 'onbekend', |
|
| 565 | + // J |
|
| 566 | + 'jour_non_connu_nc' => 'onbekend', |
|
| 567 | 567 | |
| 568 | - // L |
|
| 569 | - 'label_bando_outils' => 'Knoppenbalk', |
|
| 570 | - 'label_bando_outils_afficher' => 'Knoppenbalk tonen', |
|
| 571 | - 'label_bando_outils_masquer' => 'Knoppenbalk verbergen', |
|
| 572 | - 'label_choix_langue' => 'Selecteer je taal', |
|
| 573 | - 'label_nom_fichier_connect' => 'Geef de naam die wordt gebruikt voor deze server', |
|
| 574 | - 'label_slogan_site' => 'Slogan', |
|
| 575 | - 'label_taille_ecran' => 'Breedte van het scherm', |
|
| 576 | - 'label_texte_et_icones_navigation' => 'Navigatiemenu', |
|
| 577 | - 'label_texte_et_icones_page' => 'Weergave op de pagina', |
|
| 578 | - 'ldap_correspondance' => 'erfenis van het veld @champ@', |
|
| 579 | - 'ldap_correspondance_1' => 'Erfenis van de LDAP velden', |
|
| 580 | - 'ldap_correspondance_2' => 'Voor elk volgend SPIP veld, de naam van het overeenkomstige LDAP veld aangeven. Leeglaten om niets in te vullen, door spaties of komma’s gescheiden om verschillende LDAP velden te proberen.', |
|
| 581 | - 'lien_ajouter_auteur' => 'Voeg deze auteur toe', |
|
| 582 | - 'lien_ajouter_une_rubrique' => 'Deze rubriek toevoegen', |
|
| 583 | - 'lien_email' => 'e-mail', |
|
| 584 | - 'lien_nom_site' => 'NAAM WEBSITE:', |
|
| 585 | - 'lien_rapide_contenu' => 'Naar de inhoud gaan', |
|
| 586 | - 'lien_rapide_navigation' => 'Naar de navigatie gaan', |
|
| 587 | - 'lien_rapide_recherche' => 'Op zoek gaan', |
|
| 588 | - 'lien_retirer_auteur' => 'Auteur verwijderen', |
|
| 589 | - 'lien_retirer_rubrique' => 'Rubriek verwijderen', |
|
| 590 | - 'lien_retirer_tous_auteurs' => 'Verwijder alle auteurs', |
|
| 591 | - 'lien_retirer_toutes_rubriques' => 'Alle rubrieken verwijderen', |
|
| 592 | - 'lien_site' => 'site', |
|
| 593 | - 'lien_tout_decocher' => 'Alles deselecteren', |
|
| 594 | - 'lien_tout_deplier' => 'Alles uitvouwen', |
|
| 595 | - 'lien_tout_replier' => 'Alles opvouwen', |
|
| 596 | - 'lien_tout_supprimer' => 'Alles verwijderen', |
|
| 597 | - 'lien_trier_nom' => 'Sorteer op naam', |
|
| 598 | - 'lien_trier_nombre_articles' => 'Sorteer op aantal artikelen', |
|
| 599 | - 'lien_trier_statut' => 'Sorteer op status', |
|
| 600 | - 'lien_voir_en_ligne' => 'ONLINE BEKIJKEN:', |
|
| 601 | - 'logo_article' => 'Logo van het artikel', |
|
| 602 | - 'logo_auteur' => 'Logo van de auteur', |
|
| 603 | - 'logo_rubrique' => 'Logo van de rubriek ', |
|
| 604 | - 'logo_site' => 'Logo van deze site', |
|
| 605 | - 'logo_standard_rubrique' => 'Standaard logo rubrieken', |
|
| 606 | - 'logo_survol' => 'Logo voor rollover', |
|
| 568 | + // L |
|
| 569 | + 'label_bando_outils' => 'Knoppenbalk', |
|
| 570 | + 'label_bando_outils_afficher' => 'Knoppenbalk tonen', |
|
| 571 | + 'label_bando_outils_masquer' => 'Knoppenbalk verbergen', |
|
| 572 | + 'label_choix_langue' => 'Selecteer je taal', |
|
| 573 | + 'label_nom_fichier_connect' => 'Geef de naam die wordt gebruikt voor deze server', |
|
| 574 | + 'label_slogan_site' => 'Slogan', |
|
| 575 | + 'label_taille_ecran' => 'Breedte van het scherm', |
|
| 576 | + 'label_texte_et_icones_navigation' => 'Navigatiemenu', |
|
| 577 | + 'label_texte_et_icones_page' => 'Weergave op de pagina', |
|
| 578 | + 'ldap_correspondance' => 'erfenis van het veld @champ@', |
|
| 579 | + 'ldap_correspondance_1' => 'Erfenis van de LDAP velden', |
|
| 580 | + 'ldap_correspondance_2' => 'Voor elk volgend SPIP veld, de naam van het overeenkomstige LDAP veld aangeven. Leeglaten om niets in te vullen, door spaties of komma’s gescheiden om verschillende LDAP velden te proberen.', |
|
| 581 | + 'lien_ajouter_auteur' => 'Voeg deze auteur toe', |
|
| 582 | + 'lien_ajouter_une_rubrique' => 'Deze rubriek toevoegen', |
|
| 583 | + 'lien_email' => 'e-mail', |
|
| 584 | + 'lien_nom_site' => 'NAAM WEBSITE:', |
|
| 585 | + 'lien_rapide_contenu' => 'Naar de inhoud gaan', |
|
| 586 | + 'lien_rapide_navigation' => 'Naar de navigatie gaan', |
|
| 587 | + 'lien_rapide_recherche' => 'Op zoek gaan', |
|
| 588 | + 'lien_retirer_auteur' => 'Auteur verwijderen', |
|
| 589 | + 'lien_retirer_rubrique' => 'Rubriek verwijderen', |
|
| 590 | + 'lien_retirer_tous_auteurs' => 'Verwijder alle auteurs', |
|
| 591 | + 'lien_retirer_toutes_rubriques' => 'Alle rubrieken verwijderen', |
|
| 592 | + 'lien_site' => 'site', |
|
| 593 | + 'lien_tout_decocher' => 'Alles deselecteren', |
|
| 594 | + 'lien_tout_deplier' => 'Alles uitvouwen', |
|
| 595 | + 'lien_tout_replier' => 'Alles opvouwen', |
|
| 596 | + 'lien_tout_supprimer' => 'Alles verwijderen', |
|
| 597 | + 'lien_trier_nom' => 'Sorteer op naam', |
|
| 598 | + 'lien_trier_nombre_articles' => 'Sorteer op aantal artikelen', |
|
| 599 | + 'lien_trier_statut' => 'Sorteer op status', |
|
| 600 | + 'lien_voir_en_ligne' => 'ONLINE BEKIJKEN:', |
|
| 601 | + 'logo_article' => 'Logo van het artikel', |
|
| 602 | + 'logo_auteur' => 'Logo van de auteur', |
|
| 603 | + 'logo_rubrique' => 'Logo van de rubriek ', |
|
| 604 | + 'logo_site' => 'Logo van deze site', |
|
| 605 | + 'logo_standard_rubrique' => 'Standaard logo rubrieken', |
|
| 606 | + 'logo_survol' => 'Logo voor rollover', |
|
| 607 | 607 | |
| 608 | - // M |
|
| 609 | - 'menu_aide_installation_choix_base' => 'Database kiezen', |
|
| 610 | - 'module_fichier_langue' => 'Taalbestand', |
|
| 611 | - 'module_raccourci' => 'Snelkoppeling', |
|
| 612 | - 'module_texte_affiche' => 'Weergegeven tekst', |
|
| 613 | - 'module_texte_explicatif' => 'Je kan de volgende snelkoppelingen invoegen in de skeletten van je publieke site. Ze worden automatisch vertaald in de verschillende talen waarvoor een taalbestand is aangemaakt.', |
|
| 614 | - 'module_texte_traduction' => 'Het taalbestand « @module@ » is beschikbaar in het:', |
|
| 615 | - 'mois_non_connu' => 'Onbekend', |
|
| 608 | + // M |
|
| 609 | + 'menu_aide_installation_choix_base' => 'Database kiezen', |
|
| 610 | + 'module_fichier_langue' => 'Taalbestand', |
|
| 611 | + 'module_raccourci' => 'Snelkoppeling', |
|
| 612 | + 'module_texte_affiche' => 'Weergegeven tekst', |
|
| 613 | + 'module_texte_explicatif' => 'Je kan de volgende snelkoppelingen invoegen in de skeletten van je publieke site. Ze worden automatisch vertaald in de verschillende talen waarvoor een taalbestand is aangemaakt.', |
|
| 614 | + 'module_texte_traduction' => 'Het taalbestand « @module@ » is beschikbaar in het:', |
|
| 615 | + 'mois_non_connu' => 'Onbekend', |
|
| 616 | 616 | |
| 617 | - // N |
|
| 618 | - 'nouvelle_version_spip' => 'Versie @version@ van SPIP is beschikbaar', |
|
| 619 | - 'nouvelle_version_spip_majeure' => 'Een nieuwe versie van SPIP @version@ is beschikbaar', |
|
| 617 | + // N |
|
| 618 | + 'nouvelle_version_spip' => 'Versie @version@ van SPIP is beschikbaar', |
|
| 619 | + 'nouvelle_version_spip_majeure' => 'Een nieuwe versie van SPIP @version@ is beschikbaar', |
|
| 620 | 620 | |
| 621 | - // O |
|
| 622 | - 'onglet_contenu' => 'Inhoud', |
|
| 623 | - 'onglet_declarer_une_autre_base' => 'Een andere database declareren', |
|
| 624 | - 'onglet_discuter' => 'Discussiëren', |
|
| 625 | - 'onglet_interactivite' => 'Interactiviteit', |
|
| 626 | - 'onglet_proprietes' => 'Eigendommen', |
|
| 627 | - 'onglet_repartition_actuelle' => 'nu', |
|
| 628 | - 'onglet_sous_rubriques' => 'Subrubrieken', |
|
| 621 | + // O |
|
| 622 | + 'onglet_contenu' => 'Inhoud', |
|
| 623 | + 'onglet_declarer_une_autre_base' => 'Een andere database declareren', |
|
| 624 | + 'onglet_discuter' => 'Discussiëren', |
|
| 625 | + 'onglet_interactivite' => 'Interactiviteit', |
|
| 626 | + 'onglet_proprietes' => 'Eigendommen', |
|
| 627 | + 'onglet_repartition_actuelle' => 'nu', |
|
| 628 | + 'onglet_sous_rubriques' => 'Subrubrieken', |
|
| 629 | 629 | |
| 630 | - // P |
|
| 631 | - 'page_pas_proxy' => 'Deze bladzijde moet niet via proxy gaan', |
|
| 632 | - 'pas_de_proxy_pour' => 'Geef desnoods de machines of gebieden aan waarvoor deze proxy niet van toepassing moet zijn (bijvoorbeeld: @exemple@)', |
|
| 633 | - 'phpinfo' => 'PHP Configuratie', |
|
| 634 | - 'plugin_charge_paquet' => 'Inladen van het pakket @name@', |
|
| 635 | - 'plugin_charger' => 'Download', |
|
| 636 | - 'plugin_erreur_charger' => 'fout: onmogelijk om @zip@ te laden', |
|
| 637 | - 'plugin_erreur_droit1' => 'Er kan niet worden geschreven naar <code>@dest@</code>.', |
|
| 638 | - 'plugin_erreur_droit2' => 'Controleer de rechten op deze map (en maak hem eventueel aan), of plaats de bestanden via FTP.', |
|
| 639 | - 'plugin_erreur_zip' => 'pclzip fout: fout @status@', |
|
| 640 | - 'plugin_etat_developpement' => 'in ontwikkeling', |
|
| 641 | - 'plugin_etat_experimental' => 'experimenteel', |
|
| 642 | - 'plugin_etat_stable' => 'stabiel', |
|
| 643 | - 'plugin_etat_test' => 'in test', |
|
| 644 | - 'plugin_impossible_activer' => 'Onmogelijk om plugin @plugin@ te activeren', |
|
| 645 | - 'plugin_info_automatique1' => 'Als je de automatische installatie van plugins wilt toelaten, moet je:', |
|
| 646 | - 'plugin_info_automatique1_lib' => 'Als je de automatische installatie van deze bibliotheek toe wilt laten:', |
|
| 647 | - 'plugin_info_automatique2' => 'een lijst <code>@rep@</code> aanmaken;', |
|
| 648 | - 'plugin_info_automatique3' => 'controleren dat de server het recht heeft om in deze map te schrijven.', |
|
| 649 | - 'plugin_info_automatique_creer' => 'om in de siteroot te creëren.', |
|
| 650 | - 'plugin_info_automatique_exemples' => 'voorbeelden:', |
|
| 651 | - 'plugin_info_automatique_ftp' => 'Je kunt een plugin met FTP in de map <tt>@rep@</tt> plaatsen', |
|
| 652 | - 'plugin_info_automatique_lib' => 'Sommige plugins vragen eveneens om bestanden in map <code>lib/</code> te kunnen downloaden, die in de root van de site moet bestaan.', |
|
| 653 | - 'plugin_info_automatique_liste' => 'Je lijst van plugins:', |
|
| 654 | - 'plugin_info_automatique_liste_officielle' => 'officiële plugins', |
|
| 655 | - 'plugin_info_automatique_liste_update' => 'De lijsten bijwerken', |
|
| 656 | - 'plugin_info_automatique_ou' => 'om...', |
|
| 657 | - 'plugin_info_automatique_select' => 'Selecteert hieronder een plugin: SPIP zal hem downloaden en in map <code>@rep@</code> plaatsen; als de plugin al bestaat, zal hij worden bijgewerkt.', |
|
| 658 | - 'plugin_info_credit' => 'Credits', |
|
| 659 | - 'plugin_info_erreur_xml' => 'De declaratie van deze plugin is onjuist', |
|
| 660 | - 'plugin_info_install_ok' => 'Succesvolle installatie', |
|
| 661 | - 'plugin_info_necessite' => 'Benodigd:', |
|
| 662 | - 'plugin_info_non_compatible_spip' => 'Deze plugin is niet compatibel met deze versie van SPIP', |
|
| 663 | - 'plugin_info_plugins_dist_1' => 'De onderstaande plugins zijn geladen en geactiveerd in de directory @plugins_dist@.', # extensies zijn speciaale plugins geleeverd met spip-core om een gebruikbare SPIP pakket te bouwen |
|
| 664 | - 'plugin_info_plugins_dist_2' => 'Ze zijn niet te deactiveren.', |
|
| 665 | - 'plugin_info_telecharger' => 'om vanaf @url@ te downloaden en te plaatsen in @rep@', |
|
| 666 | - 'plugin_info_upgrade_ok' => ' Update geslaagd', |
|
| 667 | - 'plugin_librairies_installees' => 'Geïnstalleerde bibliotheken', |
|
| 668 | - 'plugin_necessite_extension_php' => 'De PHP-extensie @plugin@ is benodigd in versie @version@.', |
|
| 669 | - 'plugin_necessite_extension_php_sans_version' => 'Benodigde PHP-extensie: @plugin@', |
|
| 670 | - 'plugin_necessite_lib' => 'Deze plugin vereist de library @lib@', |
|
| 671 | - 'plugin_necessite_php' => 'Vereist @plugin@ in versie @version@.', |
|
| 672 | - 'plugin_necessite_plugin' => 'Vereist plugin @plugin@ met minimale versie @version@.', |
|
| 673 | - 'plugin_necessite_plugin_sans_version' => 'Vereist plugin @plugin@ ', |
|
| 674 | - 'plugin_necessite_spip' => 'Vereist SPIP in minimale versie @version@.', |
|
| 675 | - 'plugin_source' => 'bron: ', |
|
| 676 | - 'plugin_titre_automatique' => 'Automatische installatie', |
|
| 677 | - 'plugin_titre_automatique_ajouter' => 'Een plugin toevoegen', |
|
| 678 | - 'plugin_titre_installation' => 'Het installeren van plugin @plugin@', |
|
| 679 | - 'plugin_titre_modifier' => 'Mijn plugins', |
|
| 680 | - 'plugin_utilise_extension_php' => 'Gebruik de PHP-extensie @plugin@ in versie @version@.', # MODIF |
|
| 681 | - 'plugin_utilise_php' => 'Gebruikt @plugin@ in versie @version@.', # MODIF |
|
| 682 | - 'plugin_utilise_plugin' => 'Gebruikt plugin @plugin@ met versie @version@.', # MODIF |
|
| 683 | - 'plugin_zip_active' => 'Gaat door om het te activeren', |
|
| 684 | - 'plugin_zip_adresse' => 'geef hieronder het adres van een zipbestand om de plugin te downloaden, of het adres van een lijst van plugins.', |
|
| 685 | - 'plugin_zip_adresse_champ' => 'Adres van plugin of van de lijst ', |
|
| 686 | - 'plugin_zip_content' => 'Hij bevat de volgende bestanden (@taille@), <br/>klaar om in de map <code>@rep@</code> te worden geplaatst', |
|
| 687 | - 'plugin_zip_installe_finie' => 'Het bestand @zip@ is geunzipt en werd geplaatst.', |
|
| 688 | - 'plugin_zip_installe_rep_finie' => 'Het bestand @zip@ is geunzipt en werd in de map @rep@ geplaatst', |
|
| 689 | - 'plugin_zip_installer' => 'Je kunt hem nu installeren.', |
|
| 690 | - 'plugin_zip_telecharge' => 'Het bestand @zip@ werd geladen', |
|
| 691 | - 'plugins_actif_aucun' => 'Geen plugins ingeschakeld.', |
|
| 692 | - 'plugins_actif_un' => 'Eén plugin is ingeschakeld.', |
|
| 693 | - 'plugins_actifs' => '@count@ plugins activeren.', |
|
| 694 | - 'plugins_actifs_liste' => 'Actief', |
|
| 695 | - 'plugins_compte' => '@count@ plugins', |
|
| 696 | - 'plugins_disponible_un' => 'Eén plugin beschikbaar.', |
|
| 697 | - 'plugins_disponibles' => '@count@ plugins beschikbaar.', |
|
| 698 | - 'plugins_erreur' => 'De fout in plugins: @plugins@', |
|
| 699 | - 'plugins_liste' => 'Lijst van plugins', |
|
| 700 | - 'plugins_liste_dist' => 'Vergrendelde plugins', # "locked" in english |
|
| 701 | - 'plugins_recents' => 'Recente plugins.', |
|
| 702 | - 'plugins_tous_liste' => 'Alle', |
|
| 703 | - 'plugins_vue_hierarchie' => 'Hiërarchie', |
|
| 704 | - 'plugins_vue_liste' => 'Lijst', |
|
| 705 | - 'protocole_ldap' => 'De versie van het protocol:', |
|
| 630 | + // P |
|
| 631 | + 'page_pas_proxy' => 'Deze bladzijde moet niet via proxy gaan', |
|
| 632 | + 'pas_de_proxy_pour' => 'Geef desnoods de machines of gebieden aan waarvoor deze proxy niet van toepassing moet zijn (bijvoorbeeld: @exemple@)', |
|
| 633 | + 'phpinfo' => 'PHP Configuratie', |
|
| 634 | + 'plugin_charge_paquet' => 'Inladen van het pakket @name@', |
|
| 635 | + 'plugin_charger' => 'Download', |
|
| 636 | + 'plugin_erreur_charger' => 'fout: onmogelijk om @zip@ te laden', |
|
| 637 | + 'plugin_erreur_droit1' => 'Er kan niet worden geschreven naar <code>@dest@</code>.', |
|
| 638 | + 'plugin_erreur_droit2' => 'Controleer de rechten op deze map (en maak hem eventueel aan), of plaats de bestanden via FTP.', |
|
| 639 | + 'plugin_erreur_zip' => 'pclzip fout: fout @status@', |
|
| 640 | + 'plugin_etat_developpement' => 'in ontwikkeling', |
|
| 641 | + 'plugin_etat_experimental' => 'experimenteel', |
|
| 642 | + 'plugin_etat_stable' => 'stabiel', |
|
| 643 | + 'plugin_etat_test' => 'in test', |
|
| 644 | + 'plugin_impossible_activer' => 'Onmogelijk om plugin @plugin@ te activeren', |
|
| 645 | + 'plugin_info_automatique1' => 'Als je de automatische installatie van plugins wilt toelaten, moet je:', |
|
| 646 | + 'plugin_info_automatique1_lib' => 'Als je de automatische installatie van deze bibliotheek toe wilt laten:', |
|
| 647 | + 'plugin_info_automatique2' => 'een lijst <code>@rep@</code> aanmaken;', |
|
| 648 | + 'plugin_info_automatique3' => 'controleren dat de server het recht heeft om in deze map te schrijven.', |
|
| 649 | + 'plugin_info_automatique_creer' => 'om in de siteroot te creëren.', |
|
| 650 | + 'plugin_info_automatique_exemples' => 'voorbeelden:', |
|
| 651 | + 'plugin_info_automatique_ftp' => 'Je kunt een plugin met FTP in de map <tt>@rep@</tt> plaatsen', |
|
| 652 | + 'plugin_info_automatique_lib' => 'Sommige plugins vragen eveneens om bestanden in map <code>lib/</code> te kunnen downloaden, die in de root van de site moet bestaan.', |
|
| 653 | + 'plugin_info_automatique_liste' => 'Je lijst van plugins:', |
|
| 654 | + 'plugin_info_automatique_liste_officielle' => 'officiële plugins', |
|
| 655 | + 'plugin_info_automatique_liste_update' => 'De lijsten bijwerken', |
|
| 656 | + 'plugin_info_automatique_ou' => 'om...', |
|
| 657 | + 'plugin_info_automatique_select' => 'Selecteert hieronder een plugin: SPIP zal hem downloaden en in map <code>@rep@</code> plaatsen; als de plugin al bestaat, zal hij worden bijgewerkt.', |
|
| 658 | + 'plugin_info_credit' => 'Credits', |
|
| 659 | + 'plugin_info_erreur_xml' => 'De declaratie van deze plugin is onjuist', |
|
| 660 | + 'plugin_info_install_ok' => 'Succesvolle installatie', |
|
| 661 | + 'plugin_info_necessite' => 'Benodigd:', |
|
| 662 | + 'plugin_info_non_compatible_spip' => 'Deze plugin is niet compatibel met deze versie van SPIP', |
|
| 663 | + 'plugin_info_plugins_dist_1' => 'De onderstaande plugins zijn geladen en geactiveerd in de directory @plugins_dist@.', # extensies zijn speciaale plugins geleeverd met spip-core om een gebruikbare SPIP pakket te bouwen |
|
| 664 | + 'plugin_info_plugins_dist_2' => 'Ze zijn niet te deactiveren.', |
|
| 665 | + 'plugin_info_telecharger' => 'om vanaf @url@ te downloaden en te plaatsen in @rep@', |
|
| 666 | + 'plugin_info_upgrade_ok' => ' Update geslaagd', |
|
| 667 | + 'plugin_librairies_installees' => 'Geïnstalleerde bibliotheken', |
|
| 668 | + 'plugin_necessite_extension_php' => 'De PHP-extensie @plugin@ is benodigd in versie @version@.', |
|
| 669 | + 'plugin_necessite_extension_php_sans_version' => 'Benodigde PHP-extensie: @plugin@', |
|
| 670 | + 'plugin_necessite_lib' => 'Deze plugin vereist de library @lib@', |
|
| 671 | + 'plugin_necessite_php' => 'Vereist @plugin@ in versie @version@.', |
|
| 672 | + 'plugin_necessite_plugin' => 'Vereist plugin @plugin@ met minimale versie @version@.', |
|
| 673 | + 'plugin_necessite_plugin_sans_version' => 'Vereist plugin @plugin@ ', |
|
| 674 | + 'plugin_necessite_spip' => 'Vereist SPIP in minimale versie @version@.', |
|
| 675 | + 'plugin_source' => 'bron: ', |
|
| 676 | + 'plugin_titre_automatique' => 'Automatische installatie', |
|
| 677 | + 'plugin_titre_automatique_ajouter' => 'Een plugin toevoegen', |
|
| 678 | + 'plugin_titre_installation' => 'Het installeren van plugin @plugin@', |
|
| 679 | + 'plugin_titre_modifier' => 'Mijn plugins', |
|
| 680 | + 'plugin_utilise_extension_php' => 'Gebruik de PHP-extensie @plugin@ in versie @version@.', # MODIF |
|
| 681 | + 'plugin_utilise_php' => 'Gebruikt @plugin@ in versie @version@.', # MODIF |
|
| 682 | + 'plugin_utilise_plugin' => 'Gebruikt plugin @plugin@ met versie @version@.', # MODIF |
|
| 683 | + 'plugin_zip_active' => 'Gaat door om het te activeren', |
|
| 684 | + 'plugin_zip_adresse' => 'geef hieronder het adres van een zipbestand om de plugin te downloaden, of het adres van een lijst van plugins.', |
|
| 685 | + 'plugin_zip_adresse_champ' => 'Adres van plugin of van de lijst ', |
|
| 686 | + 'plugin_zip_content' => 'Hij bevat de volgende bestanden (@taille@), <br/>klaar om in de map <code>@rep@</code> te worden geplaatst', |
|
| 687 | + 'plugin_zip_installe_finie' => 'Het bestand @zip@ is geunzipt en werd geplaatst.', |
|
| 688 | + 'plugin_zip_installe_rep_finie' => 'Het bestand @zip@ is geunzipt en werd in de map @rep@ geplaatst', |
|
| 689 | + 'plugin_zip_installer' => 'Je kunt hem nu installeren.', |
|
| 690 | + 'plugin_zip_telecharge' => 'Het bestand @zip@ werd geladen', |
|
| 691 | + 'plugins_actif_aucun' => 'Geen plugins ingeschakeld.', |
|
| 692 | + 'plugins_actif_un' => 'Eén plugin is ingeschakeld.', |
|
| 693 | + 'plugins_actifs' => '@count@ plugins activeren.', |
|
| 694 | + 'plugins_actifs_liste' => 'Actief', |
|
| 695 | + 'plugins_compte' => '@count@ plugins', |
|
| 696 | + 'plugins_disponible_un' => 'Eén plugin beschikbaar.', |
|
| 697 | + 'plugins_disponibles' => '@count@ plugins beschikbaar.', |
|
| 698 | + 'plugins_erreur' => 'De fout in plugins: @plugins@', |
|
| 699 | + 'plugins_liste' => 'Lijst van plugins', |
|
| 700 | + 'plugins_liste_dist' => 'Vergrendelde plugins', # "locked" in english |
|
| 701 | + 'plugins_recents' => 'Recente plugins.', |
|
| 702 | + 'plugins_tous_liste' => 'Alle', |
|
| 703 | + 'plugins_vue_hierarchie' => 'Hiërarchie', |
|
| 704 | + 'plugins_vue_liste' => 'Lijst', |
|
| 705 | + 'protocole_ldap' => 'De versie van het protocol:', |
|
| 706 | 706 | |
| 707 | - // Q |
|
| 708 | - 'queue_executer_maintenant' => 'Nu uitvoeren', |
|
| 709 | - 'queue_info_purger' => 'Je kunt alle wachtende taken verwijderen en de lijst van periodieke taken herstarten', # MODIF |
|
| 710 | - 'queue_nb_jobs_in_queue' => '@nb@ wachtrij', # MODIF |
|
| 711 | - 'queue_next_job_in_nb_sec' => 'Volgende opdracht in @nb@ sec', # MODIF |
|
| 712 | - 'queue_no_job_in_queue' => 'Geen opdracht in de wachtrij', # MODIF |
|
| 713 | - 'queue_one_job_in_queue' => '1 taak in wachtrij', # MODIF |
|
| 714 | - 'queue_priorite_tache' => 'prioriteit', |
|
| 715 | - 'queue_purger_queue' => 'De takenlijst leegmaken', # MODIF |
|
| 716 | - 'queue_titre' => 'Lijst van taken', # MODIF |
|
| 707 | + // Q |
|
| 708 | + 'queue_executer_maintenant' => 'Nu uitvoeren', |
|
| 709 | + 'queue_info_purger' => 'Je kunt alle wachtende taken verwijderen en de lijst van periodieke taken herstarten', # MODIF |
|
| 710 | + 'queue_nb_jobs_in_queue' => '@nb@ wachtrij', # MODIF |
|
| 711 | + 'queue_next_job_in_nb_sec' => 'Volgende opdracht in @nb@ sec', # MODIF |
|
| 712 | + 'queue_no_job_in_queue' => 'Geen opdracht in de wachtrij', # MODIF |
|
| 713 | + 'queue_one_job_in_queue' => '1 taak in wachtrij', # MODIF |
|
| 714 | + 'queue_priorite_tache' => 'prioriteit', |
|
| 715 | + 'queue_purger_queue' => 'De takenlijst leegmaken', # MODIF |
|
| 716 | + 'queue_titre' => 'Lijst van taken', # MODIF |
|
| 717 | 717 | |
| 718 | - // R |
|
| 719 | - 'repertoire_plugins' => 'Map:', |
|
| 720 | - 'required' => '(verplicht)', # MODIF |
|
| 718 | + // R |
|
| 719 | + 'repertoire_plugins' => 'Map:', |
|
| 720 | + 'required' => '(verplicht)', # MODIF |
|
| 721 | 721 | |
| 722 | - // S |
|
| 723 | - 'sans_heure' => 'zonder tijdstip', |
|
| 724 | - 'statut_admin_restreint' => 'beperkte beheerder', |
|
| 725 | - 'statut_webmestre' => 'webmaster', |
|
| 722 | + // S |
|
| 723 | + 'sans_heure' => 'zonder tijdstip', |
|
| 724 | + 'statut_admin_restreint' => 'beperkte beheerder', |
|
| 725 | + 'statut_webmestre' => 'webmaster', |
|
| 726 | 726 | |
| 727 | - // T |
|
| 728 | - 'tache_cron_asap' => 'CRON taak @function@ (ASAP)', |
|
| 729 | - 'tache_cron_secondes' => 'CRON taak @function@ (om de @nb@ sec)', |
|
| 730 | - 'taille_cache_image' => 'De door SPIP automatisch aangemaakte afbeeldingen (icoontjes van documenten, grafisch weergegeven titels, wiskundige functies in TeX formaat...) nemen in map @dir@ in totaal @taille@ in.', |
|
| 731 | - 'taille_cache_infinie' => 'De site voorziet geen beperking in de grootte van de buffermap.', |
|
| 732 | - 'taille_cache_maxi' => 'SPIP probeert de omvang van de buffermap van de site te beperken tot ongeveer <b>@octets@</b> gegevens.', |
|
| 733 | - 'taille_cache_moins_de' => 'De cache is kleiner dan @octets@.', |
|
| 734 | - 'taille_cache_octets' => 'De grootte van de buffer bedraagt momenteel @octets@.', |
|
| 735 | - 'taille_cache_vide' => 'De buffer is leeg.', |
|
| 736 | - 'taille_repertoire_cache' => 'Grootte van het bufferbestand', |
|
| 737 | - 'text_article_propose_publication' => 'Artikel voorgesteld voor publicatie.', |
|
| 738 | - 'texte_acces_ldap_anonyme_1' => 'Sommige LDAP-servers aanvaarden geen anonieme toegang. In zo’n geval dien je één loginnaam op te geven om vervolgens informatie in het adressenboek te zoeken. In de meeste gevallen kan je de volgende velden echter leeg laten.', |
|
| 739 | - 'texte_admin_effacer_01' => 'Met dit commando vernietig je de <i>volledige</i> inhoud van de database, |
|
| 727 | + // T |
|
| 728 | + 'tache_cron_asap' => 'CRON taak @function@ (ASAP)', |
|
| 729 | + 'tache_cron_secondes' => 'CRON taak @function@ (om de @nb@ sec)', |
|
| 730 | + 'taille_cache_image' => 'De door SPIP automatisch aangemaakte afbeeldingen (icoontjes van documenten, grafisch weergegeven titels, wiskundige functies in TeX formaat...) nemen in map @dir@ in totaal @taille@ in.', |
|
| 731 | + 'taille_cache_infinie' => 'De site voorziet geen beperking in de grootte van de buffermap.', |
|
| 732 | + 'taille_cache_maxi' => 'SPIP probeert de omvang van de buffermap van de site te beperken tot ongeveer <b>@octets@</b> gegevens.', |
|
| 733 | + 'taille_cache_moins_de' => 'De cache is kleiner dan @octets@.', |
|
| 734 | + 'taille_cache_octets' => 'De grootte van de buffer bedraagt momenteel @octets@.', |
|
| 735 | + 'taille_cache_vide' => 'De buffer is leeg.', |
|
| 736 | + 'taille_repertoire_cache' => 'Grootte van het bufferbestand', |
|
| 737 | + 'text_article_propose_publication' => 'Artikel voorgesteld voor publicatie.', |
|
| 738 | + 'texte_acces_ldap_anonyme_1' => 'Sommige LDAP-servers aanvaarden geen anonieme toegang. In zo’n geval dien je één loginnaam op te geven om vervolgens informatie in het adressenboek te zoeken. In de meeste gevallen kan je de volgende velden echter leeg laten.', |
|
| 739 | + 'texte_admin_effacer_01' => 'Met dit commando vernietig je de <i>volledige</i> inhoud van de database, |
|
| 740 | 740 | inbegrepen <i>alle</i> toegangsrechten voor redacteurs en beheerders. Nadat je dit uitgevoerd hebt, dien je de herinstallatie van SPIP te starten om een volledig nieuwe database aan te maken met toegangsrechten voor een eerste beheerder.', |
| 741 | - 'texte_adresse_annuaire_1' => '(Als de map geïnstalleerd is op dezelfde computer als je website, is het waarschijnlijk «localhost».)', |
|
| 742 | - 'texte_ajout_auteur' => 'Deze auteur werd aan het artikel toegevoegd:', |
|
| 743 | - 'texte_annuaire_ldap_1' => 'Als je toegang hebt tot een LDAP-adresboek, kan je dit gebruiken om automatisch gebruikers in te voeren in SPIP.', |
|
| 744 | - 'texte_article_statut' => 'Dit artikel is:', |
|
| 745 | - 'texte_article_virtuel' => 'Virtueel artikel', |
|
| 746 | - 'texte_article_virtuel_reference' => '<b>Virtueel artikel:</b> gekoppeld artikel in je SPIP site maar doorgestuurd naar een andere URL. Verwijder de URL om de doorverwijzing te stoppen.', |
|
| 747 | - 'texte_aucun_resultat_auteur' => 'Geen resultaat voor "@cherche_auteur@"', |
|
| 748 | - 'texte_auteur_messagerie' => 'Deze website kan een lijst met auteurs die op dat moment aangelogd zijn, tonen. Het is mogelijk om direkt berichten opsturen en ontvangen tussen de auteurs. Je kan kiezen om niet in deze lijst te verschijnen (je wordt dan « onzichtbaar » voor de andere gebruikers).', |
|
| 749 | - 'texte_auteurs' => 'DE AUTEURS', |
|
| 750 | - 'texte_choix_base_1' => 'Kies je database:', |
|
| 751 | - 'texte_choix_base_2' => 'De SQL server bevat meerdere databases.', |
|
| 752 | - 'texte_choix_base_3' => '<b>Kies</b> hierna die welke door jouw provider werd toegekend:', |
|
| 753 | - 'texte_choix_table_prefix' => 'Voorvoegsel van de tabellen:', |
|
| 754 | - 'texte_compte_element' => '@count@ element', |
|
| 755 | - 'texte_compte_elements' => '@count@ elementen', |
|
| 756 | - 'texte_conflit_edition_correction' => 'Controleer hieronder de verschillen tussen beide versies van de tekst; je kunt eveneens jouw wijzigingen kopiëren en opnieuw beginnen.', |
|
| 757 | - 'texte_connexion_mysql' => 'Raadpleegt de inlichtingen die door jouw provider worden verstrekt: je moet er de databaseserver vinden die men voorstelt en jouw persoonlijke identificaties om je erop aan te melden.', |
|
| 758 | - 'texte_contenu_article' => '(Inhoud van het artikel in enkele woorden.)', |
|
| 759 | - 'texte_contenu_articles' => 'Naargelang de opmaak van je website kan je beslissen sommige elementen van een artikel |
|
| 741 | + 'texte_adresse_annuaire_1' => '(Als de map geïnstalleerd is op dezelfde computer als je website, is het waarschijnlijk «localhost».)', |
|
| 742 | + 'texte_ajout_auteur' => 'Deze auteur werd aan het artikel toegevoegd:', |
|
| 743 | + 'texte_annuaire_ldap_1' => 'Als je toegang hebt tot een LDAP-adresboek, kan je dit gebruiken om automatisch gebruikers in te voeren in SPIP.', |
|
| 744 | + 'texte_article_statut' => 'Dit artikel is:', |
|
| 745 | + 'texte_article_virtuel' => 'Virtueel artikel', |
|
| 746 | + 'texte_article_virtuel_reference' => '<b>Virtueel artikel:</b> gekoppeld artikel in je SPIP site maar doorgestuurd naar een andere URL. Verwijder de URL om de doorverwijzing te stoppen.', |
|
| 747 | + 'texte_aucun_resultat_auteur' => 'Geen resultaat voor "@cherche_auteur@"', |
|
| 748 | + 'texte_auteur_messagerie' => 'Deze website kan een lijst met auteurs die op dat moment aangelogd zijn, tonen. Het is mogelijk om direkt berichten opsturen en ontvangen tussen de auteurs. Je kan kiezen om niet in deze lijst te verschijnen (je wordt dan « onzichtbaar » voor de andere gebruikers).', |
|
| 749 | + 'texte_auteurs' => 'DE AUTEURS', |
|
| 750 | + 'texte_choix_base_1' => 'Kies je database:', |
|
| 751 | + 'texte_choix_base_2' => 'De SQL server bevat meerdere databases.', |
|
| 752 | + 'texte_choix_base_3' => '<b>Kies</b> hierna die welke door jouw provider werd toegekend:', |
|
| 753 | + 'texte_choix_table_prefix' => 'Voorvoegsel van de tabellen:', |
|
| 754 | + 'texte_compte_element' => '@count@ element', |
|
| 755 | + 'texte_compte_elements' => '@count@ elementen', |
|
| 756 | + 'texte_conflit_edition_correction' => 'Controleer hieronder de verschillen tussen beide versies van de tekst; je kunt eveneens jouw wijzigingen kopiëren en opnieuw beginnen.', |
|
| 757 | + 'texte_connexion_mysql' => 'Raadpleegt de inlichtingen die door jouw provider worden verstrekt: je moet er de databaseserver vinden die men voorstelt en jouw persoonlijke identificaties om je erop aan te melden.', |
|
| 758 | + 'texte_contenu_article' => '(Inhoud van het artikel in enkele woorden.)', |
|
| 759 | + 'texte_contenu_articles' => 'Naargelang de opmaak van je website kan je beslissen sommige elementen van een artikel |
|
| 760 | 760 | wel of niet te gebruiken. |
| 761 | 761 | Geef op de lijst hieronder aan welke elementen je wil gebruiken.', |
| 762 | - 'texte_crash_base' => 'Als je database gecrashed is, |
|
| 762 | + 'texte_crash_base' => 'Als je database gecrashed is, |
|
| 763 | 763 | kan je een automatisch herstel proberen.', |
| 764 | - 'texte_creer_rubrique' => 'Alvorens artikelen te kunnen schrijven, <br/> moet je een rubriek aanmaken.', |
|
| 765 | - 'texte_date_creation_article' => 'DATUM VAN AANMAKEN VAN HET ARTIKEL:', |
|
| 766 | - 'texte_date_creation_objet' => 'Aanmaakdatum:', # on ajoute le ":" |
|
| 767 | - 'texte_date_publication_anterieure' => 'Datum van eerdere redactie:', |
|
| 768 | - 'texte_date_publication_anterieure_nonaffichee' => 'Verberg de datum van eerdere redactie.', |
|
| 769 | - 'texte_date_publication_article' => 'DATUM VAN ONLINE PUBLICATIE:', |
|
| 770 | - 'texte_date_publication_objet' => 'Datum van online publicatie:', |
|
| 771 | - 'texte_definir_comme_traduction_rubrique' => 'Deze rubriek is een vertaling van rubrieknummer:', |
|
| 772 | - 'texte_descriptif_rapide' => 'Korte beschrijving.', |
|
| 773 | - 'texte_effacer_base' => 'Verwijder de SPIP database', |
|
| 774 | - 'texte_effacer_statistiques' => 'De statistieken wissen', |
|
| 775 | - 'texte_en_cours_validation' => 'De onderstaande inhoud wacht op goedkeuring.', |
|
| 776 | - 'texte_enrichir_mise_a_jour' => 'De opmaak van een tekst kan gebeuren met behulp van zogeheten «typografische snelkoppelingen».', |
|
| 777 | - 'texte_fichier_authent' => 'SPIP moet er dan speciale bestanden <tt>.htpasswd</tt> |
|
| 764 | + 'texte_creer_rubrique' => 'Alvorens artikelen te kunnen schrijven, <br/> moet je een rubriek aanmaken.', |
|
| 765 | + 'texte_date_creation_article' => 'DATUM VAN AANMAKEN VAN HET ARTIKEL:', |
|
| 766 | + 'texte_date_creation_objet' => 'Aanmaakdatum:', # on ajoute le ":" |
|
| 767 | + 'texte_date_publication_anterieure' => 'Datum van eerdere redactie:', |
|
| 768 | + 'texte_date_publication_anterieure_nonaffichee' => 'Verberg de datum van eerdere redactie.', |
|
| 769 | + 'texte_date_publication_article' => 'DATUM VAN ONLINE PUBLICATIE:', |
|
| 770 | + 'texte_date_publication_objet' => 'Datum van online publicatie:', |
|
| 771 | + 'texte_definir_comme_traduction_rubrique' => 'Deze rubriek is een vertaling van rubrieknummer:', |
|
| 772 | + 'texte_descriptif_rapide' => 'Korte beschrijving.', |
|
| 773 | + 'texte_effacer_base' => 'Verwijder de SPIP database', |
|
| 774 | + 'texte_effacer_statistiques' => 'De statistieken wissen', |
|
| 775 | + 'texte_en_cours_validation' => 'De onderstaande inhoud wacht op goedkeuring.', |
|
| 776 | + 'texte_enrichir_mise_a_jour' => 'De opmaak van een tekst kan gebeuren met behulp van zogeheten «typografische snelkoppelingen».', |
|
| 777 | + 'texte_fichier_authent' => 'SPIP moet er dan speciale bestanden <tt>.htpasswd</tt> |
|
| 778 | 778 | en <tt>.htpasswd-admin</tt> in de directory @dossier@ ?</b><p> |
| 779 | 779 | Deze bestanden die je kunt gebruiken om toegang te beperken tot |
| 780 | 780 | auteurs en beheerders in andere delen van je site |
| 781 | 781 | (externe programma statistieken, bijvoorbeeld).</p><p> |
| 782 | 782 | Als dit geen geen nut heeft, kunt je de standaard instellingen behouden (geen nieuw bestand maken).</p>', |
| 783 | - 'texte_informations_personnelles_1' => 'Nu zal het systeem een persoonlijke toegang tot de site voor je creëren.', |
|
| 784 | - 'texte_informations_personnelles_2' => '(Nota: als het een herinstallatie betreft en je toegangscode blijkt nog steeds te werken, kan je', |
|
| 785 | - 'texte_introductif_article' => '(Inleidende tekst op het artikel.)', |
|
| 786 | - 'texte_jeu_caractere' => 'Het is aan te raden op je site het universele alfabet (<tt>utf-8</tt>) te gebruiken: dit laat de weergave van teksten toe in alle talen en stelt geen compatibilieitsprobleem met de recente browsers.', |
|
| 787 | - 'texte_jeu_caractere_3' => 'Je site is momenteel geïnstalleerd in deze tekenset:', |
|
| 788 | - 'texte_jeu_caractere_4' => 'Indien dit niet overeenkomt met je werkelijke gegevens (bvb bij het terugzetten van je database), of als je <em>deze site opstart</em> en met een andere tekenset van start wil gaan, geef dat dan hieronder aan:', |
|
| 789 | - 'texte_login_ldap_1' => '(Leeg laten voor een anonieme login, of een volledig pad invullen, bijvoorbeeld «<tt>uid=janssen, ou=users, dc=mijn-domein, dc=com</tt>».)', |
|
| 790 | - 'texte_login_precaution' => 'LET OP! Met deze login ben je momenteel aangemeld. |
|
| 783 | + 'texte_informations_personnelles_1' => 'Nu zal het systeem een persoonlijke toegang tot de site voor je creëren.', |
|
| 784 | + 'texte_informations_personnelles_2' => '(Nota: als het een herinstallatie betreft en je toegangscode blijkt nog steeds te werken, kan je', |
|
| 785 | + 'texte_introductif_article' => '(Inleidende tekst op het artikel.)', |
|
| 786 | + 'texte_jeu_caractere' => 'Het is aan te raden op je site het universele alfabet (<tt>utf-8</tt>) te gebruiken: dit laat de weergave van teksten toe in alle talen en stelt geen compatibilieitsprobleem met de recente browsers.', |
|
| 787 | + 'texte_jeu_caractere_3' => 'Je site is momenteel geïnstalleerd in deze tekenset:', |
|
| 788 | + 'texte_jeu_caractere_4' => 'Indien dit niet overeenkomt met je werkelijke gegevens (bvb bij het terugzetten van je database), of als je <em>deze site opstart</em> en met een andere tekenset van start wil gaan, geef dat dan hieronder aan:', |
|
| 789 | + 'texte_login_ldap_1' => '(Leeg laten voor een anonieme login, of een volledig pad invullen, bijvoorbeeld «<tt>uid=janssen, ou=users, dc=mijn-domein, dc=com</tt>».)', |
|
| 790 | + 'texte_login_precaution' => 'LET OP! Met deze login ben je momenteel aangemeld. |
|
| 791 | 791 | Gebruik dit formulier met de nodige voorzichtigheid...', |
| 792 | - 'texte_messagerie_agenda' => 'Een berichtendienst maakt het de redacteuren van de site mogelijk om in de privé ruimte berichten uit te wisselen. De dienst is gekoppeld aan een agenda.', |
|
| 793 | - 'texte_mise_a_niveau_base_1' => 'Je hebt zonet de SPIP bestanden vernieuwd. Nu dien je |
|
| 792 | + 'texte_messagerie_agenda' => 'Een berichtendienst maakt het de redacteuren van de site mogelijk om in de privé ruimte berichten uit te wisselen. De dienst is gekoppeld aan een agenda.', |
|
| 793 | + 'texte_mise_a_niveau_base_1' => 'Je hebt zonet de SPIP bestanden vernieuwd. Nu dien je |
|
| 794 | 794 | eveneens de database te updaten.', |
| 795 | - 'texte_modifier_article' => 'Wijzigen artikel:', |
|
| 796 | - 'texte_multilinguisme' => 'Als je graag objecten in verschillende talen zou willen beheren, met een complexe navigatie, kan je een taalkeuzemenu toevoegen bij deze objecten, i.f.v de organisatie van je site.', |
|
| 797 | - 'texte_multilinguisme_trad' => 'Je kan eveneens een systeem in werking stellen voor het beheer van koppelingen tussen de verschillende vertalingen van de objecten.', |
|
| 798 | - 'texte_non_compresse' => '<i>niet gecomprimeerd</i> (de server ondersteunt deze functionaliteit niet)', |
|
| 799 | - 'texte_nouvelle_version_spip_1' => 'Je hebt een nieuwe versie van SPIP geïnstalleerd.', |
|
| 800 | - 'texte_nouvelle_version_spip_2' => 'Deze nieuwe SPIP-versie vereist een grondiger update dan gewoonlijk. Als je webmaster bent van deze site, verwijder dan het bestand @connect@ en hervat de installatie om de verbindingsgegevens met de database te vernieuwen.<p> (NB: als je de verbindingsgegevens niet meer kent, kan je best eerst een blik werpen op het bestand @connect@ alvorens het te verwijderen...)</p>', # Pas de modif trouvée, la trad reste valable. |
|
| 801 | - 'texte_operation_echec' => 'Ga terug naar de vorige pagina, selecteer een andere database of maak een nieuwe aan. Kijk nog eens alle gegevens na die je van je provider hebt ontvangen.', |
|
| 802 | - 'texte_plus_trois_car' => 'meer dan 3 karakters', |
|
| 803 | - 'texte_plusieurs_articles' => 'Meerdere auteurs gevonden voor "@cherche_auteur@":', |
|
| 804 | - 'texte_port_annuaire' => '(De opgegeven standaardwaarde is meestal de juiste.)', |
|
| 805 | - 'texte_presente_plugin' => 'Deze pagina toont de lijst van beschikbare plugins op deze site. Je kan de nodige plugins activeren door het overeenkomstige vakje aan te kruisen.', |
|
| 806 | - 'texte_proposer_publication' => 'Wanneer je artikel gereed is, <br />kun je de publicatie ervan voorstellen.', |
|
| 807 | - 'texte_proxy' => 'In bepaalde gevallen (intranet, beschermde netwerken), zijn de verwijderde plaatsen (SPIP documentatie , georganiseerde plaatsen, enz.) toegankelijk slechts door een <i>proxy HTTP</i>. Eventueel geeft hieronder zijn adres aan, onder de vorm @proxy_in_actie@. Over het algemeen zul je dit hokje leeg laten.', |
|
| 808 | - 'texte_publication_articles_post_dates' => 'Hoe dient SPIP zich op te stellen ten opzichte van artikelen waarvan de |
|
| 795 | + 'texte_modifier_article' => 'Wijzigen artikel:', |
|
| 796 | + 'texte_multilinguisme' => 'Als je graag objecten in verschillende talen zou willen beheren, met een complexe navigatie, kan je een taalkeuzemenu toevoegen bij deze objecten, i.f.v de organisatie van je site.', |
|
| 797 | + 'texte_multilinguisme_trad' => 'Je kan eveneens een systeem in werking stellen voor het beheer van koppelingen tussen de verschillende vertalingen van de objecten.', |
|
| 798 | + 'texte_non_compresse' => '<i>niet gecomprimeerd</i> (de server ondersteunt deze functionaliteit niet)', |
|
| 799 | + 'texte_nouvelle_version_spip_1' => 'Je hebt een nieuwe versie van SPIP geïnstalleerd.', |
|
| 800 | + 'texte_nouvelle_version_spip_2' => 'Deze nieuwe SPIP-versie vereist een grondiger update dan gewoonlijk. Als je webmaster bent van deze site, verwijder dan het bestand @connect@ en hervat de installatie om de verbindingsgegevens met de database te vernieuwen.<p> (NB: als je de verbindingsgegevens niet meer kent, kan je best eerst een blik werpen op het bestand @connect@ alvorens het te verwijderen...)</p>', # Pas de modif trouvée, la trad reste valable. |
|
| 801 | + 'texte_operation_echec' => 'Ga terug naar de vorige pagina, selecteer een andere database of maak een nieuwe aan. Kijk nog eens alle gegevens na die je van je provider hebt ontvangen.', |
|
| 802 | + 'texte_plus_trois_car' => 'meer dan 3 karakters', |
|
| 803 | + 'texte_plusieurs_articles' => 'Meerdere auteurs gevonden voor "@cherche_auteur@":', |
|
| 804 | + 'texte_port_annuaire' => '(De opgegeven standaardwaarde is meestal de juiste.)', |
|
| 805 | + 'texte_presente_plugin' => 'Deze pagina toont de lijst van beschikbare plugins op deze site. Je kan de nodige plugins activeren door het overeenkomstige vakje aan te kruisen.', |
|
| 806 | + 'texte_proposer_publication' => 'Wanneer je artikel gereed is, <br />kun je de publicatie ervan voorstellen.', |
|
| 807 | + 'texte_proxy' => 'In bepaalde gevallen (intranet, beschermde netwerken), zijn de verwijderde plaatsen (SPIP documentatie , georganiseerde plaatsen, enz.) toegankelijk slechts door een <i>proxy HTTP</i>. Eventueel geeft hieronder zijn adres aan, onder de vorm @proxy_in_actie@. Over het algemeen zul je dit hokje leeg laten.', |
|
| 808 | + 'texte_publication_articles_post_dates' => 'Hoe dient SPIP zich op te stellen ten opzichte van artikelen waarvan de |
|
| 809 | 809 | publicatiedatum is vastgelegd op een |
| 810 | 810 | toekomstige datum?', |
| 811 | - 'texte_rappel_selection_champs' => '[Vergeet niet de juiste keuze te maken voor dit veld.]', |
|
| 812 | - 'texte_recalcul_page' => 'Als je slechts één pagina wilt vernieuwen, doe je dit op de publieke site met de knop «vernieuwen».', |
|
| 813 | - 'texte_recuperer_base' => 'De database herstellen', |
|
| 814 | - 'texte_reference_mais_redirige' => 'Gekoppeld artikel in je SPIP site, maar doorgestuurd naar een andere URL.', |
|
| 815 | - 'texte_requetes_echouent' => '<b>Wanneer bepaalde SQL-query’s systematisch crashen zonder duidelijke reden, is dit mogelijk te wijten aan de database zelf.</b><p> Je SQL Server heeft een herstelmogelijkheid van tabellen die beschadigd zijn door een crash. Hier kunt je proberen dit te repareren. Wanneer dat niet lukt, bewaar dan een kopie van het scherm dat aanwijzingen over de problemen bevat...</p><p>Als het probleem zich blijft voordoen, contact opnemen met je provider.</p>', |
|
| 816 | - 'texte_selection_langue_principale' => 'Hieronder kan je de «basistaal» van de site kiezen. Deze keuze verplicht je - gelukkig! - niet om artikelen in deze taal te schrijven, maar laat wel toe om het volgende te bepalen: |
|
| 811 | + 'texte_rappel_selection_champs' => '[Vergeet niet de juiste keuze te maken voor dit veld.]', |
|
| 812 | + 'texte_recalcul_page' => 'Als je slechts één pagina wilt vernieuwen, doe je dit op de publieke site met de knop «vernieuwen».', |
|
| 813 | + 'texte_recuperer_base' => 'De database herstellen', |
|
| 814 | + 'texte_reference_mais_redirige' => 'Gekoppeld artikel in je SPIP site, maar doorgestuurd naar een andere URL.', |
|
| 815 | + 'texte_requetes_echouent' => '<b>Wanneer bepaalde SQL-query’s systematisch crashen zonder duidelijke reden, is dit mogelijk te wijten aan de database zelf.</b><p> Je SQL Server heeft een herstelmogelijkheid van tabellen die beschadigd zijn door een crash. Hier kunt je proberen dit te repareren. Wanneer dat niet lukt, bewaar dan een kopie van het scherm dat aanwijzingen over de problemen bevat...</p><p>Als het probleem zich blijft voordoen, contact opnemen met je provider.</p>', |
|
| 816 | + 'texte_selection_langue_principale' => 'Hieronder kan je de «basistaal» van de site kiezen. Deze keuze verplicht je - gelukkig! - niet om artikelen in deze taal te schrijven, maar laat wel toe om het volgende te bepalen: |
|
| 817 | 817 | <ul><li> het standaardformaat van de data op de publieke site;</li> |
| 818 | 818 | <li> de aard van de typografische motor die SPIP dient te gebruiken om teksten te tonen;</li> |
| 819 | 819 | <li> de taal die gebruikt moet worden op de formulieren van de publieke site;</li> |
| 820 | 820 | <li> de taal die standaard wordt voorgesteld in het privé-gedeelte.</li></ul>', |
| 821 | - 'texte_sous_titre' => 'Ondertitel', |
|
| 822 | - 'texte_statistiques_visites' => '(donkere balkjes: zondag / donkere lijn: evolutie van het gemiddelde)', |
|
| 823 | - 'texte_statut_attente_validation' => 'wachten op goedkeuring', |
|
| 824 | - 'texte_statut_publies' => 'online geplaatst', |
|
| 825 | - 'texte_statut_refuses' => 'geweigerd', |
|
| 826 | - 'texte_suppression_fichiers' => 'Gebruik dit commando om alle bestanden uit de buffer (cache) te verwijderen. |
|
| 821 | + 'texte_sous_titre' => 'Ondertitel', |
|
| 822 | + 'texte_statistiques_visites' => '(donkere balkjes: zondag / donkere lijn: evolutie van het gemiddelde)', |
|
| 823 | + 'texte_statut_attente_validation' => 'wachten op goedkeuring', |
|
| 824 | + 'texte_statut_publies' => 'online geplaatst', |
|
| 825 | + 'texte_statut_refuses' => 'geweigerd', |
|
| 826 | + 'texte_suppression_fichiers' => 'Gebruik dit commando om alle bestanden uit de buffer (cache) te verwijderen. |
|
| 827 | 827 | Dit kan handig zijn als je veel pagina’s hebt gewijzigd, de layout of de structuur van de site hebt veranderd. |
| 828 | 828 | De nieuwste pagina’s worden dan getoond en de buffer wordt opnieuw opgebouwd.', |
| 829 | - 'texte_sur_titre' => 'Opschrift', |
|
| 830 | - 'texte_table_ok' => ': deze tabel is OK.', |
|
| 831 | - 'texte_tentative_recuperation' => 'Poging tot herstel.', |
|
| 832 | - 'texte_tenter_reparation' => 'Poging tot herstel van de database', |
|
| 833 | - 'texte_test_proxy' => 'Om de proxy te testen kan je hier het adres geven van de website die je wil bereiken.', |
|
| 834 | - 'texte_titre_02' => 'Titel:', |
|
| 835 | - 'texte_titre_obligatoire' => '<b>Titel</b> [verplicht]', |
|
| 836 | - 'texte_travail_article' => '@nom_auteur_modif@ heeft @date_diff@ minuten geleden aan dit artikel gewerkt', |
|
| 837 | - 'texte_travail_collaboratif' => 'Als het vaak gebeurt dat meerdere redacteurs aanhetzelfde artikel werken, kan het systeem tonen welke artikelen er recent «geopend» werden |
|
| 829 | + 'texte_sur_titre' => 'Opschrift', |
|
| 830 | + 'texte_table_ok' => ': deze tabel is OK.', |
|
| 831 | + 'texte_tentative_recuperation' => 'Poging tot herstel.', |
|
| 832 | + 'texte_tenter_reparation' => 'Poging tot herstel van de database', |
|
| 833 | + 'texte_test_proxy' => 'Om de proxy te testen kan je hier het adres geven van de website die je wil bereiken.', |
|
| 834 | + 'texte_titre_02' => 'Titel:', |
|
| 835 | + 'texte_titre_obligatoire' => '<b>Titel</b> [verplicht]', |
|
| 836 | + 'texte_travail_article' => '@nom_auteur_modif@ heeft @date_diff@ minuten geleden aan dit artikel gewerkt', |
|
| 837 | + 'texte_travail_collaboratif' => 'Als het vaak gebeurt dat meerdere redacteurs aanhetzelfde artikel werken, kan het systeem tonen welke artikelen er recent «geopend» werden |
|
| 838 | 838 | om te vermijden dat simultaan |
| 839 | 839 | wijzigingen worden aangebracht. |
| 840 | 840 | Deze optie is niet standaard geactiveerd om te vermijden dat er teveel waarschuwingsberichten op het |
| 841 | 841 | scherm verschijnen.', |
| 842 | - 'texte_vide' => 'leeg', |
|
| 843 | - 'texte_vider_cache' => 'Cache leegmaken', |
|
| 844 | - 'titre_admin_tech' => 'Technisch onderhoud', |
|
| 845 | - 'titre_admin_vider' => 'Technisch onderhoud', |
|
| 846 | - 'titre_ajouter_un_auteur' => 'Voeg een auteur toe', |
|
| 847 | - 'titre_ajouter_un_mot' => 'Voeg een trefwoord toe', |
|
| 848 | - 'titre_cadre_afficher_article' => 'Artikelen tonen', |
|
| 849 | - 'titre_cadre_afficher_traductions' => 'Toon de status van de vertalingen voor de volgende talen:', |
|
| 850 | - 'titre_cadre_ajouter_auteur' => 'EEN AUTEUR TOEVOEGEN:', |
|
| 851 | - 'titre_cadre_interieur_rubrique' => 'Binnen rubriek', |
|
| 852 | - 'titre_cadre_numero_auteur' => 'AUTEUR NUMMER', |
|
| 853 | - 'titre_cadre_numero_objet' => '@objet@ NUMMER:', |
|
| 854 | - 'titre_cadre_signature_obligatoire' => '<b>Handtekening</b> [Verplicht]<br />', |
|
| 855 | - 'titre_config_contenu_notifications' => 'Kennisgevingen', |
|
| 856 | - 'titre_config_contenu_prive' => 'In het privé gedeelte', |
|
| 857 | - 'titre_config_contenu_public' => 'Op de openbare site', |
|
| 858 | - 'titre_config_fonctions' => 'Configuratie van de site', |
|
| 859 | - 'titre_config_langage' => 'Stel de taal in', |
|
| 860 | - 'titre_configuration' => 'Configuratie van de site', |
|
| 861 | - 'titre_configurer_preferences' => 'Configureer je voorkeuren', |
|
| 862 | - 'titre_configurer_preferences_menus' => 'Configureer je menuvoorkeuren', |
|
| 863 | - 'titre_conflit_edition' => 'Conflict bij de uitgave', |
|
| 864 | - 'titre_connexion_ldap' => 'Opties: <b>Je LDAP-verbinding</b>', |
|
| 865 | - 'titre_groupe_mots' => 'TREFWOORDENGROEP:', |
|
| 866 | - 'titre_identite_site' => 'Identiteit van de site', |
|
| 867 | - 'titre_langue_article' => 'Taal van het artikel', |
|
| 868 | - 'titre_langue_rubrique' => 'Taal van de rubriek', |
|
| 869 | - 'titre_langue_trad_article' => 'TAAL EN VERTALINGEN VAN HET ARTIKEL', |
|
| 870 | - 'titre_les_articles' => 'ARTIKELEN', |
|
| 871 | - 'titre_messagerie_agenda' => 'Boodschappen en agenda', |
|
| 872 | - 'titre_naviguer_dans_le_site' => 'Bezoek de site...', |
|
| 873 | - 'titre_nouvelle_rubrique' => 'Nieuwe rubriek', |
|
| 874 | - 'titre_numero_rubrique' => 'RUBRIEKNUMMER:', |
|
| 875 | - 'titre_page_articles_edit' => 'Wijzigen: @titre@', |
|
| 876 | - 'titre_page_articles_page' => 'Artikelen', |
|
| 877 | - 'titre_page_articles_tous' => 'Volledige site', |
|
| 878 | - 'titre_page_calendrier' => 'Kalender @nom_mois@ @annee@', |
|
| 879 | - 'titre_page_config_contenu' => 'Websiteconfiguratie', |
|
| 880 | - 'titre_page_delete_all' => 'Volledige en onomkeerbare verwijdering', |
|
| 881 | - 'titre_page_recherche' => 'Zoekresultaat voor @recherche@ ', |
|
| 882 | - 'titre_page_statistiques_referers' => 'Statistieken (per referer)', |
|
| 883 | - 'titre_page_upgrade' => 'Bijwerken van SPIP', |
|
| 884 | - 'titre_preference_menus_favoris' => 'Favoriete menu’s', |
|
| 885 | - 'titre_publication_articles_post_dates' => 'Publicatie van postgedateerde artikelen', |
|
| 886 | - 'titre_reparation' => 'Herstel', |
|
| 887 | - 'titre_suivi_petition' => 'Opvolging van petities', |
|
| 888 | - 'tls_ldap' => 'Transport Layer Security:', |
|
| 889 | - 'trad_article_traduction' => 'Alle versies van dit artikel:', |
|
| 890 | - 'trad_delier' => 'Niet meer aan deze vertalingen koppelen', |
|
| 891 | - 'trad_lier' => 'Dit artikel is een vertaling van artikelnummer:', |
|
| 892 | - 'trad_new' => 'Een nieuwe vertaling schrijven', |
|
| 842 | + 'texte_vide' => 'leeg', |
|
| 843 | + 'texte_vider_cache' => 'Cache leegmaken', |
|
| 844 | + 'titre_admin_tech' => 'Technisch onderhoud', |
|
| 845 | + 'titre_admin_vider' => 'Technisch onderhoud', |
|
| 846 | + 'titre_ajouter_un_auteur' => 'Voeg een auteur toe', |
|
| 847 | + 'titre_ajouter_un_mot' => 'Voeg een trefwoord toe', |
|
| 848 | + 'titre_cadre_afficher_article' => 'Artikelen tonen', |
|
| 849 | + 'titre_cadre_afficher_traductions' => 'Toon de status van de vertalingen voor de volgende talen:', |
|
| 850 | + 'titre_cadre_ajouter_auteur' => 'EEN AUTEUR TOEVOEGEN:', |
|
| 851 | + 'titre_cadre_interieur_rubrique' => 'Binnen rubriek', |
|
| 852 | + 'titre_cadre_numero_auteur' => 'AUTEUR NUMMER', |
|
| 853 | + 'titre_cadre_numero_objet' => '@objet@ NUMMER:', |
|
| 854 | + 'titre_cadre_signature_obligatoire' => '<b>Handtekening</b> [Verplicht]<br />', |
|
| 855 | + 'titre_config_contenu_notifications' => 'Kennisgevingen', |
|
| 856 | + 'titre_config_contenu_prive' => 'In het privé gedeelte', |
|
| 857 | + 'titre_config_contenu_public' => 'Op de openbare site', |
|
| 858 | + 'titre_config_fonctions' => 'Configuratie van de site', |
|
| 859 | + 'titre_config_langage' => 'Stel de taal in', |
|
| 860 | + 'titre_configuration' => 'Configuratie van de site', |
|
| 861 | + 'titre_configurer_preferences' => 'Configureer je voorkeuren', |
|
| 862 | + 'titre_configurer_preferences_menus' => 'Configureer je menuvoorkeuren', |
|
| 863 | + 'titre_conflit_edition' => 'Conflict bij de uitgave', |
|
| 864 | + 'titre_connexion_ldap' => 'Opties: <b>Je LDAP-verbinding</b>', |
|
| 865 | + 'titre_groupe_mots' => 'TREFWOORDENGROEP:', |
|
| 866 | + 'titre_identite_site' => 'Identiteit van de site', |
|
| 867 | + 'titre_langue_article' => 'Taal van het artikel', |
|
| 868 | + 'titre_langue_rubrique' => 'Taal van de rubriek', |
|
| 869 | + 'titre_langue_trad_article' => 'TAAL EN VERTALINGEN VAN HET ARTIKEL', |
|
| 870 | + 'titre_les_articles' => 'ARTIKELEN', |
|
| 871 | + 'titre_messagerie_agenda' => 'Boodschappen en agenda', |
|
| 872 | + 'titre_naviguer_dans_le_site' => 'Bezoek de site...', |
|
| 873 | + 'titre_nouvelle_rubrique' => 'Nieuwe rubriek', |
|
| 874 | + 'titre_numero_rubrique' => 'RUBRIEKNUMMER:', |
|
| 875 | + 'titre_page_articles_edit' => 'Wijzigen: @titre@', |
|
| 876 | + 'titre_page_articles_page' => 'Artikelen', |
|
| 877 | + 'titre_page_articles_tous' => 'Volledige site', |
|
| 878 | + 'titre_page_calendrier' => 'Kalender @nom_mois@ @annee@', |
|
| 879 | + 'titre_page_config_contenu' => 'Websiteconfiguratie', |
|
| 880 | + 'titre_page_delete_all' => 'Volledige en onomkeerbare verwijdering', |
|
| 881 | + 'titre_page_recherche' => 'Zoekresultaat voor @recherche@ ', |
|
| 882 | + 'titre_page_statistiques_referers' => 'Statistieken (per referer)', |
|
| 883 | + 'titre_page_upgrade' => 'Bijwerken van SPIP', |
|
| 884 | + 'titre_preference_menus_favoris' => 'Favoriete menu’s', |
|
| 885 | + 'titre_publication_articles_post_dates' => 'Publicatie van postgedateerde artikelen', |
|
| 886 | + 'titre_reparation' => 'Herstel', |
|
| 887 | + 'titre_suivi_petition' => 'Opvolging van petities', |
|
| 888 | + 'tls_ldap' => 'Transport Layer Security:', |
|
| 889 | + 'trad_article_traduction' => 'Alle versies van dit artikel:', |
|
| 890 | + 'trad_delier' => 'Niet meer aan deze vertalingen koppelen', |
|
| 891 | + 'trad_lier' => 'Dit artikel is een vertaling van artikelnummer:', |
|
| 892 | + 'trad_new' => 'Een nieuwe vertaling schrijven', |
|
| 893 | 893 | |
| 894 | - // U |
|
| 895 | - 'utf8_convert_erreur_orig' => 'Fout : de karakterset @charset@ wordt niet ondersteund.', |
|
| 894 | + // U |
|
| 895 | + 'utf8_convert_erreur_orig' => 'Fout : de karakterset @charset@ wordt niet ondersteund.', |
|
| 896 | 896 | |
| 897 | - // V |
|
| 898 | - 'version' => 'Versie:' |
|
| 897 | + // V |
|
| 898 | + 'version' => 'Versie:' |
|
| 899 | 899 | ); |
@@ -4,876 +4,876 @@ |
||
| 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 | - 'activer_plugin' => 'Ativar o plugin', |
|
| 14 | - 'affichage' => 'Exibição', |
|
| 15 | - 'aide_non_disponible' => 'Esta parte da ajuda online ainda não está disponível neste idioma.', |
|
| 16 | - 'annuler_recherche' => 'Cancelar a busca', |
|
| 17 | - 'auteur' => 'Autor:', |
|
| 18 | - 'avis_acces_interdit' => 'Acesso negado.', |
|
| 19 | - 'avis_acces_interdit_prive' => 'Você não está autorizado a acessar a página <b>@exec@</b>.', |
|
| 20 | - 'avis_article_modifie' => 'Atenção, @nom_auteur_modif@ editou esta matéria há @date_diff@ minutos', |
|
| 21 | - 'avis_aucun_resultat' => 'Nenhum resultado.', |
|
| 22 | - 'avis_base_inaccessible' => 'Não foi possível conectar com a base de dados @base@.', |
|
| 23 | - 'avis_chemin_invalide_1' => 'O caminho que você escolheu', |
|
| 24 | - 'avis_chemin_invalide_2' => 'não parece válido. Por favor, volte à página anterior e verifique as informações fornecidas.', |
|
| 25 | - 'avis_connexion_echec_1' => 'A conexão com a base de dados falhou.', |
|
| 26 | - 'avis_connexion_echec_2' => 'Volte à página anterior e verifique as informações que você forneceu.', |
|
| 27 | - 'avis_connexion_echec_3' => '<b>N.B.</b> Em diversos servidores, você precisa <b>solicitar</b> a ativação do seu acesso à base de dados antes de poder utilizá-la. Se você não consegue se conectar, verifique se você efetuou esse pedido.', |
|
| 28 | - 'avis_connexion_erreur_creer_base' => 'Não foi possível criar a base de dados.', |
|
| 29 | - 'avis_connexion_erreur_nom_base' => 'O nome da base só pode conter letras, números e traços', |
|
| 30 | - 'avis_connexion_ldap_echec_1' => 'A conexão ao servidor LDAP falhou.', |
|
| 31 | - 'avis_connexion_ldap_echec_2' => 'Volte à página anterior e verifique as informações que você forneceu.', |
|
| 32 | - 'avis_connexion_ldap_echec_3' => 'Opcionalmente, não use o suporte LDAP para importar os usuários.', |
|
| 33 | - 'avis_deplacement_rubrique' => 'Atenção! Esta seção contém @contient_breves@ nota@scb@: se você a transferir, por favor, marque este quadrado.', |
|
| 34 | - 'avis_erreur_connexion_mysql' => 'Erro de conexão SQL', |
|
| 35 | - 'avis_espace_interdit' => '<b>Área interdita</b> <div>O SPIP já está instalado.</div>', |
|
| 36 | - 'avis_lecture_noms_bases_1' => 'O programa de instalação não pôde ler os nomes das bases de dados instaladas.', |
|
| 37 | - 'avis_lecture_noms_bases_2' => 'Ou nenhuma base de dados esta disponível, ou a função que permite listar as bases foi desativada por razões de segurança (o que é o caso de diversos provedores de hospedagem).', |
|
| 38 | - 'avis_lecture_noms_bases_3' => 'No segundo caso, é provável que uma base de dados com o nome do seu login possa ser utilizada:', |
|
| 39 | - 'avis_non_acces_page' => 'Você não tem acesso a esta página.', |
|
| 40 | - 'avis_operation_echec' => 'A operação falhou.', |
|
| 41 | - 'avis_operation_impossible' => 'Operação impossível', |
|
| 42 | - 'avis_suppression_base' => 'ATENÇÃO, a supressão dos dados é irreversível', |
|
| 12 | + // A |
|
| 13 | + 'activer_plugin' => 'Ativar o plugin', |
|
| 14 | + 'affichage' => 'Exibição', |
|
| 15 | + 'aide_non_disponible' => 'Esta parte da ajuda online ainda não está disponível neste idioma.', |
|
| 16 | + 'annuler_recherche' => 'Cancelar a busca', |
|
| 17 | + 'auteur' => 'Autor:', |
|
| 18 | + 'avis_acces_interdit' => 'Acesso negado.', |
|
| 19 | + 'avis_acces_interdit_prive' => 'Você não está autorizado a acessar a página <b>@exec@</b>.', |
|
| 20 | + 'avis_article_modifie' => 'Atenção, @nom_auteur_modif@ editou esta matéria há @date_diff@ minutos', |
|
| 21 | + 'avis_aucun_resultat' => 'Nenhum resultado.', |
|
| 22 | + 'avis_base_inaccessible' => 'Não foi possível conectar com a base de dados @base@.', |
|
| 23 | + 'avis_chemin_invalide_1' => 'O caminho que você escolheu', |
|
| 24 | + 'avis_chemin_invalide_2' => 'não parece válido. Por favor, volte à página anterior e verifique as informações fornecidas.', |
|
| 25 | + 'avis_connexion_echec_1' => 'A conexão com a base de dados falhou.', |
|
| 26 | + 'avis_connexion_echec_2' => 'Volte à página anterior e verifique as informações que você forneceu.', |
|
| 27 | + 'avis_connexion_echec_3' => '<b>N.B.</b> Em diversos servidores, você precisa <b>solicitar</b> a ativação do seu acesso à base de dados antes de poder utilizá-la. Se você não consegue se conectar, verifique se você efetuou esse pedido.', |
|
| 28 | + 'avis_connexion_erreur_creer_base' => 'Não foi possível criar a base de dados.', |
|
| 29 | + 'avis_connexion_erreur_nom_base' => 'O nome da base só pode conter letras, números e traços', |
|
| 30 | + 'avis_connexion_ldap_echec_1' => 'A conexão ao servidor LDAP falhou.', |
|
| 31 | + 'avis_connexion_ldap_echec_2' => 'Volte à página anterior e verifique as informações que você forneceu.', |
|
| 32 | + 'avis_connexion_ldap_echec_3' => 'Opcionalmente, não use o suporte LDAP para importar os usuários.', |
|
| 33 | + 'avis_deplacement_rubrique' => 'Atenção! Esta seção contém @contient_breves@ nota@scb@: se você a transferir, por favor, marque este quadrado.', |
|
| 34 | + 'avis_erreur_connexion_mysql' => 'Erro de conexão SQL', |
|
| 35 | + 'avis_espace_interdit' => '<b>Área interdita</b> <div>O SPIP já está instalado.</div>', |
|
| 36 | + 'avis_lecture_noms_bases_1' => 'O programa de instalação não pôde ler os nomes das bases de dados instaladas.', |
|
| 37 | + 'avis_lecture_noms_bases_2' => 'Ou nenhuma base de dados esta disponível, ou a função que permite listar as bases foi desativada por razões de segurança (o que é o caso de diversos provedores de hospedagem).', |
|
| 38 | + 'avis_lecture_noms_bases_3' => 'No segundo caso, é provável que uma base de dados com o nome do seu login possa ser utilizada:', |
|
| 39 | + 'avis_non_acces_page' => 'Você não tem acesso a esta página.', |
|
| 40 | + 'avis_operation_echec' => 'A operação falhou.', |
|
| 41 | + 'avis_operation_impossible' => 'Operação impossível', |
|
| 42 | + 'avis_suppression_base' => 'ATENÇÃO, a supressão dos dados é irreversível', |
|
| 43 | 43 | |
| 44 | - // B |
|
| 45 | - 'bouton_acces_ldap' => 'Incluir o acesso ao LDAP', |
|
| 46 | - 'bouton_ajouter' => 'Incluir', |
|
| 47 | - 'bouton_annuler' => 'Anular', |
|
| 48 | - 'bouton_cache_activer' => 'Reativar o cache', |
|
| 49 | - 'bouton_cache_desactiver' => 'Desativar temporariamente o cache', |
|
| 50 | - 'bouton_demande_publication' => 'Solicitar a publicação desta matéria', |
|
| 51 | - 'bouton_desactive_tout' => 'Desativar tudo', |
|
| 52 | - 'bouton_desinstaller' => 'Desinstalar', |
|
| 53 | - 'bouton_effacer_tout' => 'Apagar TUDO', |
|
| 54 | - 'bouton_envoyer_message' => 'Mensagem definitiva: enviar', |
|
| 55 | - 'bouton_fermer' => 'Fechar', |
|
| 56 | - 'bouton_mettre_a_jour_base' => 'Atualizar a base de dados', |
|
| 57 | - 'bouton_modifier' => 'Alterar', |
|
| 58 | - 'bouton_radio_afficher' => 'Exibir', |
|
| 59 | - 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Exibir nas listas de redatores conectados', |
|
| 60 | - 'bouton_radio_envoi_annonces_adresse' => 'Enviar os avisos para o endereço:', |
|
| 61 | - 'bouton_radio_envoi_liste_nouveautes' => 'Enviar a lista de novidades', |
|
| 62 | - 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Não exibir na lista de redatores', |
|
| 63 | - 'bouton_radio_non_envoi_annonces_editoriales' => 'Não enviar os avisos editoriais', |
|
| 64 | - 'bouton_redirection' => 'REDIRECIONAMENTO', |
|
| 65 | - 'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Reiniciar aos valores padrão', |
|
| 66 | - 'bouton_relancer_inscription' => 'Reiniciar o registro', |
|
| 67 | - 'bouton_relancer_inscriptions' => 'Reiniciar os registros', |
|
| 68 | - 'bouton_relancer_installation' => 'Reiniciar a instalação', |
|
| 69 | - 'bouton_reset_password' => 'Criar uma nova senha e enviá-la por e-mail', |
|
| 70 | - 'bouton_suivant' => 'Avançar', |
|
| 71 | - 'bouton_tenter_recuperation' => 'Tentar uma reparação', |
|
| 72 | - 'bouton_test_proxy' => 'Testar o proxy', |
|
| 73 | - 'bouton_vider_cache' => 'Limpar o cache', |
|
| 44 | + // B |
|
| 45 | + 'bouton_acces_ldap' => 'Incluir o acesso ao LDAP', |
|
| 46 | + 'bouton_ajouter' => 'Incluir', |
|
| 47 | + 'bouton_annuler' => 'Anular', |
|
| 48 | + 'bouton_cache_activer' => 'Reativar o cache', |
|
| 49 | + 'bouton_cache_desactiver' => 'Desativar temporariamente o cache', |
|
| 50 | + 'bouton_demande_publication' => 'Solicitar a publicação desta matéria', |
|
| 51 | + 'bouton_desactive_tout' => 'Desativar tudo', |
|
| 52 | + 'bouton_desinstaller' => 'Desinstalar', |
|
| 53 | + 'bouton_effacer_tout' => 'Apagar TUDO', |
|
| 54 | + 'bouton_envoyer_message' => 'Mensagem definitiva: enviar', |
|
| 55 | + 'bouton_fermer' => 'Fechar', |
|
| 56 | + 'bouton_mettre_a_jour_base' => 'Atualizar a base de dados', |
|
| 57 | + 'bouton_modifier' => 'Alterar', |
|
| 58 | + 'bouton_radio_afficher' => 'Exibir', |
|
| 59 | + 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Exibir nas listas de redatores conectados', |
|
| 60 | + 'bouton_radio_envoi_annonces_adresse' => 'Enviar os avisos para o endereço:', |
|
| 61 | + 'bouton_radio_envoi_liste_nouveautes' => 'Enviar a lista de novidades', |
|
| 62 | + 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Não exibir na lista de redatores', |
|
| 63 | + 'bouton_radio_non_envoi_annonces_editoriales' => 'Não enviar os avisos editoriais', |
|
| 64 | + 'bouton_redirection' => 'REDIRECIONAMENTO', |
|
| 65 | + 'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Reiniciar aos valores padrão', |
|
| 66 | + 'bouton_relancer_inscription' => 'Reiniciar o registro', |
|
| 67 | + 'bouton_relancer_inscriptions' => 'Reiniciar os registros', |
|
| 68 | + 'bouton_relancer_installation' => 'Reiniciar a instalação', |
|
| 69 | + 'bouton_reset_password' => 'Criar uma nova senha e enviá-la por e-mail', |
|
| 70 | + 'bouton_suivant' => 'Avançar', |
|
| 71 | + 'bouton_tenter_recuperation' => 'Tentar uma reparação', |
|
| 72 | + 'bouton_test_proxy' => 'Testar o proxy', |
|
| 73 | + 'bouton_vider_cache' => 'Limpar o cache', |
|
| 74 | 74 | |
| 75 | - // C |
|
| 76 | - 'cache_modifiable_webmestre' => 'Este parâmetro é modificável pelo webmaster do site.', |
|
| 77 | - 'calendrier_synchro' => 'Se você usa um programa de agenda compatível com <b>iCal</b>, você pode sincronizá-lo com as informações deste site.', |
|
| 78 | - 'config_activer_champs' => 'Ativar os campos a seguir', |
|
| 79 | - 'config_choix_base_sup' => 'indicar uma base neste servidor', |
|
| 80 | - 'config_erreur_base_sup' => 'O SPIP não tem acesso à lista de bases acessíveis', |
|
| 81 | - 'config_info_base_sup' => 'Se você tiver outras bases de dados para serem consultadas via SPIP, em seu servidor SQL ou em outro, o formulário abaixo permite configurá-las. Se você deixar determinados campos em branco, os dados de conexão da base principal serão utilizados.', |
|
| 82 | - 'config_info_base_sup_disponibles' => 'Bases suplementares já consultáveis:', |
|
| 83 | - 'config_info_enregistree' => 'A nova configuração foi gravada', |
|
| 84 | - 'config_info_logos' => 'Cada elemento do site pode ter um ícone, bem como um ícone de «mouseOver»', |
|
| 85 | - 'config_info_logos_utiliser' => 'Usar os ícones', |
|
| 86 | - 'config_info_logos_utiliser_non' => 'Não usar o ícones', |
|
| 87 | - 'config_info_logos_utiliser_survol' => 'Usar os ícones de mouseOver', |
|
| 88 | - 'config_info_logos_utiliser_survol_non' => 'Não usar os ícones de mouseOver', |
|
| 89 | - 'config_info_redirection' => 'Ao ativar esta opção, você poderá criar matérias virtuais, meras referências a matérias publicadas em outros sites ou fora do SPIP.', |
|
| 90 | - 'config_redirection' => 'Matérias virtuais', |
|
| 91 | - 'config_titre_base_sup' => 'Configuração de uma base suplementar', |
|
| 92 | - 'config_titre_base_sup_choix' => 'Escolha uma base suplementar', |
|
| 93 | - 'connexion_ldap' => 'Conexão:', |
|
| 94 | - 'creer_et_associer_un_auteur' => 'Criar e vincular um autor', |
|
| 75 | + // C |
|
| 76 | + 'cache_modifiable_webmestre' => 'Este parâmetro é modificável pelo webmaster do site.', |
|
| 77 | + 'calendrier_synchro' => 'Se você usa um programa de agenda compatível com <b>iCal</b>, você pode sincronizá-lo com as informações deste site.', |
|
| 78 | + 'config_activer_champs' => 'Ativar os campos a seguir', |
|
| 79 | + 'config_choix_base_sup' => 'indicar uma base neste servidor', |
|
| 80 | + 'config_erreur_base_sup' => 'O SPIP não tem acesso à lista de bases acessíveis', |
|
| 81 | + 'config_info_base_sup' => 'Se você tiver outras bases de dados para serem consultadas via SPIP, em seu servidor SQL ou em outro, o formulário abaixo permite configurá-las. Se você deixar determinados campos em branco, os dados de conexão da base principal serão utilizados.', |
|
| 82 | + 'config_info_base_sup_disponibles' => 'Bases suplementares já consultáveis:', |
|
| 83 | + 'config_info_enregistree' => 'A nova configuração foi gravada', |
|
| 84 | + 'config_info_logos' => 'Cada elemento do site pode ter um ícone, bem como um ícone de «mouseOver»', |
|
| 85 | + 'config_info_logos_utiliser' => 'Usar os ícones', |
|
| 86 | + 'config_info_logos_utiliser_non' => 'Não usar o ícones', |
|
| 87 | + 'config_info_logos_utiliser_survol' => 'Usar os ícones de mouseOver', |
|
| 88 | + 'config_info_logos_utiliser_survol_non' => 'Não usar os ícones de mouseOver', |
|
| 89 | + 'config_info_redirection' => 'Ao ativar esta opção, você poderá criar matérias virtuais, meras referências a matérias publicadas em outros sites ou fora do SPIP.', |
|
| 90 | + 'config_redirection' => 'Matérias virtuais', |
|
| 91 | + 'config_titre_base_sup' => 'Configuração de uma base suplementar', |
|
| 92 | + 'config_titre_base_sup_choix' => 'Escolha uma base suplementar', |
|
| 93 | + 'connexion_ldap' => 'Conexão:', |
|
| 94 | + 'creer_et_associer_un_auteur' => 'Criar e vincular um autor', |
|
| 95 | 95 | |
| 96 | - // D |
|
| 97 | - 'date_mot_heures' => 'horas', |
|
| 96 | + // D |
|
| 97 | + 'date_mot_heures' => 'horas', |
|
| 98 | 98 | |
| 99 | - // E |
|
| 100 | - 'ecran_connexion_couleur_principale' => 'Cor principal', |
|
| 101 | - 'ecran_connexion_image_fond' => 'Imagem de fundo', |
|
| 102 | - 'ecran_connexion_image_fond_explication' => 'Usar uma imagem (formato JPEG, 1920x1080 pixels)', |
|
| 103 | - 'ecran_connexion_image_revenir_couleur_defaut' => 'Reverter para a cor padrão', |
|
| 104 | - 'ecran_connexion_titre' => 'Tela de conexão', |
|
| 105 | - 'ecran_securite' => ' + tela de segurança @version@', |
|
| 106 | - 'email' => 'e-mail', |
|
| 107 | - 'email_2' => 'e-mail:', |
|
| 108 | - 'en_savoir_plus' => 'Saiba mais', |
|
| 109 | - 'entree_adresse_annuaire' => 'Endereço do catálogo', |
|
| 110 | - 'entree_adresse_email' => 'Seu endereço de e-mail', |
|
| 111 | - 'entree_adresse_email_2' => 'Endereço de e-mail', |
|
| 112 | - 'entree_base_donnee_1' => 'Endereço da base de dados', |
|
| 113 | - 'entree_base_donnee_2' => '(Frequentemente este endereço corresponde ao do seu site, às vezes ele corresponde ao nome «localhost», algumas vezes ele pode ser deixado completamente em branco.)', |
|
| 114 | - 'entree_biographie' => 'Biografia curta em poucas palavras.', |
|
| 115 | - 'entree_chemin_acces' => '<b>Informe</b> o caminho de acesso:', |
|
| 116 | - 'entree_cle_pgp' => 'Sua chave PGP', |
|
| 117 | - 'entree_cle_pgp_2' => 'Chave PGP', |
|
| 118 | - 'entree_contenu_rubrique' => '(Conteúdo da seção em poucas palavras.)', |
|
| 119 | - 'entree_identifiants_connexion' => 'Seus dados de conexão...', |
|
| 120 | - 'entree_identifiants_connexion_2' => 'Dados de conexão', |
|
| 121 | - 'entree_informations_connexion_ldap' => 'Informe neste formulário os dados de conexão ao seu catálogo LDAP. |
|
| 99 | + // E |
|
| 100 | + 'ecran_connexion_couleur_principale' => 'Cor principal', |
|
| 101 | + 'ecran_connexion_image_fond' => 'Imagem de fundo', |
|
| 102 | + 'ecran_connexion_image_fond_explication' => 'Usar uma imagem (formato JPEG, 1920x1080 pixels)', |
|
| 103 | + 'ecran_connexion_image_revenir_couleur_defaut' => 'Reverter para a cor padrão', |
|
| 104 | + 'ecran_connexion_titre' => 'Tela de conexão', |
|
| 105 | + 'ecran_securite' => ' + tela de segurança @version@', |
|
| 106 | + 'email' => 'e-mail', |
|
| 107 | + 'email_2' => 'e-mail:', |
|
| 108 | + 'en_savoir_plus' => 'Saiba mais', |
|
| 109 | + 'entree_adresse_annuaire' => 'Endereço do catálogo', |
|
| 110 | + 'entree_adresse_email' => 'Seu endereço de e-mail', |
|
| 111 | + 'entree_adresse_email_2' => 'Endereço de e-mail', |
|
| 112 | + 'entree_base_donnee_1' => 'Endereço da base de dados', |
|
| 113 | + 'entree_base_donnee_2' => '(Frequentemente este endereço corresponde ao do seu site, às vezes ele corresponde ao nome «localhost», algumas vezes ele pode ser deixado completamente em branco.)', |
|
| 114 | + 'entree_biographie' => 'Biografia curta em poucas palavras.', |
|
| 115 | + 'entree_chemin_acces' => '<b>Informe</b> o caminho de acesso:', |
|
| 116 | + 'entree_cle_pgp' => 'Sua chave PGP', |
|
| 117 | + 'entree_cle_pgp_2' => 'Chave PGP', |
|
| 118 | + 'entree_contenu_rubrique' => '(Conteúdo da seção em poucas palavras.)', |
|
| 119 | + 'entree_identifiants_connexion' => 'Seus dados de conexão...', |
|
| 120 | + 'entree_identifiants_connexion_2' => 'Dados de conexão', |
|
| 121 | + 'entree_informations_connexion_ldap' => 'Informe neste formulário os dados de conexão ao seu catálogo LDAP. |
|
| 122 | 122 | Estas informações deverão ser fornecidas pelo administrador do sistema ou da rede.', |
| 123 | - 'entree_infos_perso' => 'Quem é você?', |
|
| 124 | - 'entree_infos_perso_2' => 'Quem é o autor?', |
|
| 125 | - 'entree_interieur_rubrique' => 'No interior da seção:', |
|
| 126 | - 'entree_liens_sites' => '<b>Link hipertexto</b> (referência, site a visitar...)', |
|
| 127 | - 'entree_login' => 'Seu login', |
|
| 128 | - 'entree_login_connexion_1' => 'O login de conexão', |
|
| 129 | - 'entree_login_connexion_2' => '(Frequentemente corresponde ao seu login para acesso por FTP; às vezes pode ser deixado em branco)', |
|
| 130 | - 'entree_mot_passe' => 'Sua senha', |
|
| 131 | - 'entree_mot_passe_1' => 'A senha de conexão', |
|
| 132 | - 'entree_mot_passe_2' => '(Frequentemente corresponde à sua senha para acesso por FTP; às vezes pode ser deixado em branco)', |
|
| 133 | - 'entree_nom_fichier' => 'Por favor, informe o nome do arquivo @texte_compresse@:', |
|
| 134 | - 'entree_nom_pseudo' => 'Seu nome ou apelido', |
|
| 135 | - 'entree_nom_pseudo_1' => '(Seu nome ou apelido)', |
|
| 136 | - 'entree_nom_pseudo_2' => 'Nome ou apelido', |
|
| 137 | - 'entree_nom_site' => 'O nome do seu site', |
|
| 138 | - 'entree_nom_site_2' => 'Nome do site do autor', |
|
| 139 | - 'entree_nouveau_passe' => 'Nova senha', |
|
| 140 | - 'entree_passe_ldap' => 'Senha', |
|
| 141 | - 'entree_port_annuaire' => 'O número da porta do catálogo', |
|
| 142 | - 'entree_signature' => 'Assinatura', |
|
| 143 | - 'entree_titre_obligatoire' => '<b>Título</b> [Obrigatório]<br />', |
|
| 144 | - 'entree_url' => 'O endereço (URL) do seu site', |
|
| 145 | - 'entree_url_2' => 'Endereço (URL) do site', |
|
| 146 | - 'erreur_connect_deja_existant' => 'Já existe um servidor com esse nome', |
|
| 147 | - 'erreur_contenu_suspect' => 'Texto escapado', |
|
| 148 | - 'erreur_email_deja_existant' => 'Esse endereço de email já está em uso.', |
|
| 149 | - 'erreur_nom_connect_incorrect' => 'Este nome de servidor não é autorizado', |
|
| 150 | - 'erreur_plugin_attribut_balise_manquant' => 'Atributo @attribut@ faltando no tag @balise@.', |
|
| 151 | - 'erreur_plugin_desinstalation_echouee' => 'A desinstalação do plugin falhou. No entanto, você pode desativá-lo.', |
|
| 152 | - 'erreur_plugin_fichier_absent' => 'Arquivo ausente', |
|
| 153 | - 'erreur_plugin_fichier_def_absent' => 'Arquivo de definição ausente', |
|
| 154 | - 'erreur_plugin_nom_fonction_interdit' => 'Nome de função não permitido', |
|
| 155 | - 'erreur_plugin_nom_manquant' => 'Nome do plugin ausente', |
|
| 156 | - 'erreur_plugin_prefix_manquant' => 'Área de nomeação do plugin não definida', |
|
| 157 | - 'erreur_plugin_tag_plugin_absent' => '<plugin> ausente no arquivo de definição', |
|
| 158 | - 'erreur_plugin_version_manquant' => 'Versão do plugin ausente', |
|
| 159 | - 'erreur_type_fichier' => 'Tipo de arquivo incorreto', |
|
| 123 | + 'entree_infos_perso' => 'Quem é você?', |
|
| 124 | + 'entree_infos_perso_2' => 'Quem é o autor?', |
|
| 125 | + 'entree_interieur_rubrique' => 'No interior da seção:', |
|
| 126 | + 'entree_liens_sites' => '<b>Link hipertexto</b> (referência, site a visitar...)', |
|
| 127 | + 'entree_login' => 'Seu login', |
|
| 128 | + 'entree_login_connexion_1' => 'O login de conexão', |
|
| 129 | + 'entree_login_connexion_2' => '(Frequentemente corresponde ao seu login para acesso por FTP; às vezes pode ser deixado em branco)', |
|
| 130 | + 'entree_mot_passe' => 'Sua senha', |
|
| 131 | + 'entree_mot_passe_1' => 'A senha de conexão', |
|
| 132 | + 'entree_mot_passe_2' => '(Frequentemente corresponde à sua senha para acesso por FTP; às vezes pode ser deixado em branco)', |
|
| 133 | + 'entree_nom_fichier' => 'Por favor, informe o nome do arquivo @texte_compresse@:', |
|
| 134 | + 'entree_nom_pseudo' => 'Seu nome ou apelido', |
|
| 135 | + 'entree_nom_pseudo_1' => '(Seu nome ou apelido)', |
|
| 136 | + 'entree_nom_pseudo_2' => 'Nome ou apelido', |
|
| 137 | + 'entree_nom_site' => 'O nome do seu site', |
|
| 138 | + 'entree_nom_site_2' => 'Nome do site do autor', |
|
| 139 | + 'entree_nouveau_passe' => 'Nova senha', |
|
| 140 | + 'entree_passe_ldap' => 'Senha', |
|
| 141 | + 'entree_port_annuaire' => 'O número da porta do catálogo', |
|
| 142 | + 'entree_signature' => 'Assinatura', |
|
| 143 | + 'entree_titre_obligatoire' => '<b>Título</b> [Obrigatório]<br />', |
|
| 144 | + 'entree_url' => 'O endereço (URL) do seu site', |
|
| 145 | + 'entree_url_2' => 'Endereço (URL) do site', |
|
| 146 | + 'erreur_connect_deja_existant' => 'Já existe um servidor com esse nome', |
|
| 147 | + 'erreur_contenu_suspect' => 'Texto escapado', |
|
| 148 | + 'erreur_email_deja_existant' => 'Esse endereço de email já está em uso.', |
|
| 149 | + 'erreur_nom_connect_incorrect' => 'Este nome de servidor não é autorizado', |
|
| 150 | + 'erreur_plugin_attribut_balise_manquant' => 'Atributo @attribut@ faltando no tag @balise@.', |
|
| 151 | + 'erreur_plugin_desinstalation_echouee' => 'A desinstalação do plugin falhou. No entanto, você pode desativá-lo.', |
|
| 152 | + 'erreur_plugin_fichier_absent' => 'Arquivo ausente', |
|
| 153 | + 'erreur_plugin_fichier_def_absent' => 'Arquivo de definição ausente', |
|
| 154 | + 'erreur_plugin_nom_fonction_interdit' => 'Nome de função não permitido', |
|
| 155 | + 'erreur_plugin_nom_manquant' => 'Nome do plugin ausente', |
|
| 156 | + 'erreur_plugin_prefix_manquant' => 'Área de nomeação do plugin não definida', |
|
| 157 | + 'erreur_plugin_tag_plugin_absent' => '<plugin> ausente no arquivo de definição', |
|
| 158 | + 'erreur_plugin_version_manquant' => 'Versão do plugin ausente', |
|
| 159 | + 'erreur_type_fichier' => 'Tipo de arquivo incorreto', |
|
| 160 | 160 | |
| 161 | - // H |
|
| 162 | - 'htaccess_a_simuler' => 'Aviso: a configuração do seu servidor HTTP não leva em conta os arquivos @htaccess@. Para poder garantir um bom nível de segurança, é preciso que você altere esta configuração, ou que as constantes @constantes@ (definíveis no arquivo mes_options.php) tenham como valor os diretórios abaixo de @document_root@.', |
|
| 163 | - 'htaccess_inoperant' => 'htaccess inoperante', |
|
| 161 | + // H |
|
| 162 | + 'htaccess_a_simuler' => 'Aviso: a configuração do seu servidor HTTP não leva em conta os arquivos @htaccess@. Para poder garantir um bom nível de segurança, é preciso que você altere esta configuração, ou que as constantes @constantes@ (definíveis no arquivo mes_options.php) tenham como valor os diretórios abaixo de @document_root@.', |
|
| 163 | + 'htaccess_inoperant' => 'htaccess inoperante', |
|
| 164 | 164 | |
| 165 | - // I |
|
| 166 | - 'ical_info1' => 'Esta página apresenta diversos métodos para se manter a par da atividade deste site.', |
|
| 167 | - 'ical_info2' => 'Para mais informações sobre todas estas técnicas, não deixe de consultar <a href="@spipnet@">a documentação do SPIP</a>.', |
|
| 168 | - 'ical_info_calendrier' => 'Dois calendários estão à sua disposição. O primeiro é um mapa do site anunciando todas as matérias publicadas. O segundo contém os avisos editoriais bem como suas últimas mensagens privadas: ele lhe é reservado graças a uma chave pessoal, que você pode alterar a qualquer momento ao renovar a sua senha.', |
|
| 169 | - 'ical_methode_http' => 'Transferência', |
|
| 170 | - 'ical_methode_webcal' => 'Sincronização (webcal://)', |
|
| 171 | - 'ical_texte_js' => 'Uma linha de javascript permite-lhe exibir de forma simples, em qualquer site que lhe pertença, as matérias recentemente publicadas neste site.', |
|
| 172 | - 'ical_texte_prive' => 'Este calendário, de uso estritamente pessoal, o informa sobre a atividade editorial privada deste site (tarefas e encontros pessoais, matérias e notas propostas...).', |
|
| 173 | - 'ical_texte_public' => 'Este calendário permite-lhe acompanhar a atividade pública deste site (matérias e notas publicadas).', |
|
| 174 | - 'ical_texte_rss' => 'Você pode sindicar as novidades deste site em qualquer leitor de arquivos em formato XML/RSS (Rich Site Summary). É também o formato que permite ao SPIP ler as novidades publicadas em outros sites que utilizem um formato de troca de informações compatível (sites sindicados).', |
|
| 175 | - 'ical_titre_js' => 'Javascript', |
|
| 176 | - 'ical_titre_mailing' => 'Mailing-list', |
|
| 177 | - 'ical_titre_rss' => 'Arquivos de sindicação', |
|
| 178 | - 'icone_accueil' => 'Página Inicial', |
|
| 179 | - 'icone_activer_cookie' => 'Ativar o coockie de correspondência', |
|
| 180 | - 'icone_activite' => 'Atividade', |
|
| 181 | - 'icone_admin_plugin' => 'Gerenciamento dos plugins', |
|
| 182 | - 'icone_administration' => 'Manutenção', |
|
| 183 | - 'icone_afficher_auteurs' => 'Exibir os autores', |
|
| 184 | - 'icone_afficher_visiteurs' => 'Exibir os visitantes', |
|
| 185 | - 'icone_arret_discussion' => 'Não participar mais desta discussão', |
|
| 186 | - 'icone_calendrier' => 'Calendário', |
|
| 187 | - 'icone_configuration' => 'Configuração', |
|
| 188 | - 'icone_creer_auteur' => 'Criar um novo autor e vinculá-lo a esta matéria', |
|
| 189 | - 'icone_creer_mot_cle' => 'Criar uma nova palavra-chave e vinculá-la a esta matéria', |
|
| 190 | - 'icone_creer_rubrique_2' => 'Criar uma nova seção', |
|
| 191 | - 'icone_developpement' => 'Desenvolvimento', |
|
| 192 | - 'icone_edition' => 'Edição', |
|
| 193 | - 'icone_ma_langue' => 'Meu idioma', |
|
| 194 | - 'icone_mes_infos' => 'Minhas informações', |
|
| 195 | - 'icone_mes_preferences' => 'Minhas preferências', |
|
| 196 | - 'icone_modifier_article' => 'Editar esta matéria', |
|
| 197 | - 'icone_modifier_rubrique' => 'Editar esta seção', |
|
| 198 | - 'icone_publication' => 'Publicação', |
|
| 199 | - 'icone_relancer_signataire' => 'Reconfirmar o assinante', |
|
| 200 | - 'icone_retour' => 'Voltar', |
|
| 201 | - 'icone_retour_article' => 'Voltar para a matéria', |
|
| 202 | - 'icone_squelette' => 'Templates', |
|
| 203 | - 'icone_suivi_publication' => 'Acompanhamento da publicação', |
|
| 204 | - 'icone_supprimer_cookie' => 'Excluir o cookie de correspondência', |
|
| 205 | - 'icone_supprimer_rubrique' => 'Excluir esta seção', |
|
| 206 | - 'icone_supprimer_signature' => 'Excluir esta assinatura', |
|
| 207 | - 'icone_valider_signature' => 'Validar esta assinatura', |
|
| 208 | - 'image_administrer_rubrique' => 'Você pode administrar esta seção', |
|
| 209 | - 'impossible_modifier_login_auteur' => 'Não foi possível alterar o login.', |
|
| 210 | - 'impossible_modifier_pass_auteur' => 'Não foi possível alterar a senha.', |
|
| 211 | - 'info_1_article' => '1 matéria', |
|
| 212 | - 'info_1_auteur' => '1 autor', |
|
| 213 | - 'info_1_message' => '1 mensagem', |
|
| 214 | - 'info_1_mot_cle' => '1 palavra-chave', |
|
| 215 | - 'info_1_rubrique' => '1 seção', |
|
| 216 | - 'info_1_visiteur' => '1 visitante', |
|
| 217 | - 'info_activer_cookie' => 'Você pode ativar um <b>cookie de correspondência</b>, que lhe permitirá passar facilmente do site público para o site privado.', |
|
| 218 | - 'info_activer_menu_developpement' => 'Exibir o menu Desenvolvimento', |
|
| 219 | - 'info_admin_etre_webmestre' => 'Me conceder direitos de webmaster', |
|
| 220 | - 'info_admin_je_suis_webmestre' => 'Eu sou <b>webmaster</b>', |
|
| 221 | - 'info_admin_statuer_webmestre' => 'Dar a este administrador os direitos de webmaster', |
|
| 222 | - 'info_admin_webmestre' => 'Este administrador é <b>webmaster</b>', |
|
| 223 | - 'info_administrateur' => 'Administrador', |
|
| 224 | - 'info_administrateur_1' => 'Administrador', |
|
| 225 | - 'info_administrateur_2' => 'do site (<i>use com cuidado</i>)', |
|
| 226 | - 'info_administrateur_site_01' => 'Se você é administrador do site, por favor,', |
|
| 227 | - 'info_administrateur_site_02' => 'clique neste link', |
|
| 228 | - 'info_administrateurs' => 'Administradores', |
|
| 229 | - 'info_administrer_rubrique' => 'Você pode administrar esta seção', |
|
| 230 | - 'info_adresse' => 'no endereço:', |
|
| 231 | - 'info_adresse_desinscription' => 'Endereço da desinscrição:', |
|
| 232 | - 'info_adresse_url' => 'Endereço (URL) do site público', |
|
| 233 | - 'info_afficher_par_nb' => 'Exibir por', |
|
| 234 | - 'info_aide_en_ligne' => 'Ajuda online SPIP', |
|
| 235 | - 'info_ajout_image' => 'Assim que você incluir imagens e documentos anexados a uma matéria, o SPIP pode criar para você, automaticamente, ícones (miniaturas) das imagens inseridas. Isto permite, por exemplo, criar automaticamente uma galeria ou um portfólio.', |
|
| 236 | - 'info_ajouter_rubrique' => 'Incluir outra seção para administrar:', |
|
| 237 | - 'info_annonce_nouveautes' => 'Aviso das novidades', |
|
| 238 | - 'info_article' => 'matéria', |
|
| 239 | - 'info_article_2' => 'matérias', |
|
| 240 | - 'info_article_a_paraitre' => 'As matérias pós-datadas para exibição', |
|
| 241 | - 'info_articles_02' => 'matérias', |
|
| 242 | - 'info_articles_2' => 'Matérias', |
|
| 243 | - 'info_articles_auteur' => 'As matérias deste autor', |
|
| 244 | - 'info_articles_miens' => 'Minhas matérias', |
|
| 245 | - 'info_articles_tous' => 'Todas as matérias', |
|
| 246 | - 'info_articles_trouves' => 'Matérias encontradas', |
|
| 247 | - 'info_attente_validation' => 'Suas matérias aguardando validação', |
|
| 248 | - 'info_aucun_article' => 'Nenhuma matéria', |
|
| 249 | - 'info_aucun_auteur' => 'Nenhum autor', |
|
| 250 | - 'info_aucun_message' => 'Nenhuma mensagem', |
|
| 251 | - 'info_aucun_rubrique' => 'Nenhuma seção', |
|
| 252 | - 'info_aujourdhui' => 'Hoje:', |
|
| 253 | - 'info_auteur_gere_rubriques' => 'Este autor gerencia as seções a seguir:', |
|
| 254 | - 'info_auteur_gere_toutes_rubriques' => 'Este autor gerencia <b>todas as seções</b>', |
|
| 255 | - 'info_auteur_gere_toutes_rubriques_2' => 'Eu gerencio <b>todas as seções</b>', |
|
| 256 | - 'info_auteurs' => 'Os autores', |
|
| 257 | - 'info_auteurs_par_tri' => 'Autores@partri@', |
|
| 258 | - 'info_auteurs_trouves' => 'Autores encontrados', |
|
| 259 | - 'info_authentification_externe' => 'Autenticação externa', |
|
| 260 | - 'info_avertissement' => 'Aviso', |
|
| 261 | - 'info_barre_outils' => 'com sua barra de ferramentas?', |
|
| 262 | - 'info_base_installee' => 'A estrutura da sua base de dados foi instalada.', |
|
| 263 | - 'info_bio' => 'Biografia', |
|
| 264 | - 'info_cache_desactive' => 'O cache está temporariamente desativado.', |
|
| 265 | - 'info_chapeau' => 'Introdução', |
|
| 266 | - 'info_chapeau_2' => 'Introdução:', |
|
| 267 | - 'info_chemin_acces_1' => 'Opções: <b>Caminho de acesso no diretório</b>', |
|
| 268 | - 'info_chemin_acces_2' => 'A partir daqui, você deverá configurar o caminho de acesso às informações do diretório. Esta informação é indispensávelpara ler os perfis dos usuários no diretório.', |
|
| 269 | - 'info_chemin_acces_annuaire' => 'Opções: <b>Caminho de acesso no diretório</b>', |
|
| 270 | - 'info_choix_base' => 'Terceiro passo:', |
|
| 271 | - 'info_classement_1' => '<sup><u>o</u></sup> em @liste@', |
|
| 272 | - 'info_classement_2' => '<sup><u>a</u></sup> em @liste@', |
|
| 273 | - 'info_code_acces' => 'Não se esqueça dos seus dados de conexão!', |
|
| 274 | - 'info_config_suivi' => 'Se este endereço corresponde a uma mailing-list, você pode informar abaixo o endereço onde os participantes do site podem se inscrever. Este endereço pode ser um URL (por exemplo a página de inscrição na lista pela Web), ou um endereço de e-mail dotado de um assunto específico (par exemple: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 275 | - 'info_config_suivi_explication' => 'Voce pode assinar a mailing-list deste site. Você irá receber por e-mail, os avisos de matérias e notas propostos para publicação.', |
|
| 276 | - 'info_confirmer_passe' => 'Confirmar a nova senha:', |
|
| 277 | - 'info_conflit_edition_avis_non_sauvegarde' => 'Atenção os campos a seguir foram alterados por terceiros. As suas modificações nestes campos não foram, por isso, gravadas.', |
|
| 278 | - 'info_conflit_edition_differences' => 'Diferenças:', |
|
| 279 | - 'info_conflit_edition_version_enregistree' => 'A versão gravada:', |
|
| 280 | - 'info_conflit_edition_votre_version' => 'A sua versão:', |
|
| 281 | - 'info_connexion_base' => 'Teste de conexão com a base', |
|
| 282 | - 'info_connexion_base_donnee' => 'Conexão à sua base de dados', |
|
| 283 | - 'info_connexion_ldap_ok' => '<b>A conexão LDAP foi efetuada.</b><p>Você pode passar para o próximo passo.</p>', |
|
| 284 | - 'info_connexion_mysql' => 'Sua conexão SQL', |
|
| 285 | - 'info_connexion_ok' => 'A conexão foi obtida.', |
|
| 286 | - 'info_contact' => 'Contato', |
|
| 287 | - 'info_contenu_articles' => 'Conteúdo das matérias', |
|
| 288 | - 'info_contributions' => 'Contribuições', |
|
| 289 | - 'info_creation_paragraphe' => 'Para criar parágrafos, basta deixar linhas em branco.', |
|
| 290 | - 'info_creation_rubrique' => 'Antes de poder escrever matérias, você deve criar, pelo menos, uma seção.<br />', |
|
| 291 | - 'info_creation_tables' => 'Criação das tabelas da base', |
|
| 292 | - 'info_creer_base' => '<b>Criar</b> uma nova base de dados:', |
|
| 293 | - 'info_dans_rubrique' => 'Na seção:', |
|
| 294 | - 'info_date_publication_anterieure' => 'Data de redação anterior:', |
|
| 295 | - 'info_date_referencement' => 'DATA DE REFERENCIAMENTO DESTE SITE:', |
|
| 296 | - 'info_derniere_etape' => 'Terminou!', |
|
| 297 | - 'info_descriptif' => 'Descrição:', |
|
| 298 | - 'info_desinstaller_plugin' => 'exclui os dados e desativa o plugin', |
|
| 299 | - 'info_discussion_cours' => 'Discussões em andamento', |
|
| 300 | - 'info_ecrire_article' => 'Antes de poder escrever matérias, você precisa criar pelo menos uma seção.', |
|
| 301 | - 'info_email_envoi' => 'Endereço de e-mail de envio (opcional)', |
|
| 302 | - 'info_email_envoi_txt' => 'Informe aqui o endereço a ser utilizado para enviar os e-mails (por padrão, o endereço de destino será usado como endereço de envio):', |
|
| 303 | - 'info_email_webmestre' => 'Endereço de e-mail do webmaster', |
|
| 304 | - 'info_envoi_email_automatique' => 'Envio automático de e-mails', |
|
| 305 | - 'info_envoyer_maintenant' => 'Enviar agora', |
|
| 306 | - 'info_etape_suivante' => 'Avançar para a próxima etapa', |
|
| 307 | - 'info_etape_suivante_1' => 'Você pode passar para a próxima etapa.', |
|
| 308 | - 'info_etape_suivante_2' => 'Você pode passar para a próxima etapa.', |
|
| 309 | - 'info_exceptions_proxy' => 'Exceções para o proxy', |
|
| 310 | - 'info_exportation_base' => 'exportação da base para @archive@', |
|
| 311 | - 'info_facilite_suivi_activite' => 'Para facilitar o acompanhamento da atividade editorial do site, o SPIP pode enviar por e-mail, por exemplo a uma mailing-list de redatores, avisos dos pedidos de publicação e das validações das matérias.', |
|
| 312 | - 'info_fichiers_authent' => 'Arquivos de autenticação «.htpasswd»', |
|
| 313 | - 'info_forums_abo_invites' => 'O seu site comporta fóruns por assinatura; os visitantes são convidados a se registrar no site público.', |
|
| 314 | - 'info_gauche_admin_tech' => '<b>Esta página é acessível apenas aos responsáveis pelo site.</b><p>Ela dá acesso às diferentes funções de manutenção técnica. Algumas dessas funções possuem um processo específico de autenticação que exige acesso FTP ao website.</p>', |
|
| 315 | - 'info_gauche_admin_vider' => '<b>Esta página é acessível apenas aos responsáveis pelo site.</b><p> Ela dá acesso às diferentes funções de manutenção técnica. Algumas dessas funções possuem um processo específico de autenticação que exige acesso FTP ao website.</p>', |
|
| 316 | - 'info_gauche_auteurs' => 'Aqui, você encontra todos os autores do site. |
|
| 165 | + // I |
|
| 166 | + 'ical_info1' => 'Esta página apresenta diversos métodos para se manter a par da atividade deste site.', |
|
| 167 | + 'ical_info2' => 'Para mais informações sobre todas estas técnicas, não deixe de consultar <a href="@spipnet@">a documentação do SPIP</a>.', |
|
| 168 | + 'ical_info_calendrier' => 'Dois calendários estão à sua disposição. O primeiro é um mapa do site anunciando todas as matérias publicadas. O segundo contém os avisos editoriais bem como suas últimas mensagens privadas: ele lhe é reservado graças a uma chave pessoal, que você pode alterar a qualquer momento ao renovar a sua senha.', |
|
| 169 | + 'ical_methode_http' => 'Transferência', |
|
| 170 | + 'ical_methode_webcal' => 'Sincronização (webcal://)', |
|
| 171 | + 'ical_texte_js' => 'Uma linha de javascript permite-lhe exibir de forma simples, em qualquer site que lhe pertença, as matérias recentemente publicadas neste site.', |
|
| 172 | + 'ical_texte_prive' => 'Este calendário, de uso estritamente pessoal, o informa sobre a atividade editorial privada deste site (tarefas e encontros pessoais, matérias e notas propostas...).', |
|
| 173 | + 'ical_texte_public' => 'Este calendário permite-lhe acompanhar a atividade pública deste site (matérias e notas publicadas).', |
|
| 174 | + 'ical_texte_rss' => 'Você pode sindicar as novidades deste site em qualquer leitor de arquivos em formato XML/RSS (Rich Site Summary). É também o formato que permite ao SPIP ler as novidades publicadas em outros sites que utilizem um formato de troca de informações compatível (sites sindicados).', |
|
| 175 | + 'ical_titre_js' => 'Javascript', |
|
| 176 | + 'ical_titre_mailing' => 'Mailing-list', |
|
| 177 | + 'ical_titre_rss' => 'Arquivos de sindicação', |
|
| 178 | + 'icone_accueil' => 'Página Inicial', |
|
| 179 | + 'icone_activer_cookie' => 'Ativar o coockie de correspondência', |
|
| 180 | + 'icone_activite' => 'Atividade', |
|
| 181 | + 'icone_admin_plugin' => 'Gerenciamento dos plugins', |
|
| 182 | + 'icone_administration' => 'Manutenção', |
|
| 183 | + 'icone_afficher_auteurs' => 'Exibir os autores', |
|
| 184 | + 'icone_afficher_visiteurs' => 'Exibir os visitantes', |
|
| 185 | + 'icone_arret_discussion' => 'Não participar mais desta discussão', |
|
| 186 | + 'icone_calendrier' => 'Calendário', |
|
| 187 | + 'icone_configuration' => 'Configuração', |
|
| 188 | + 'icone_creer_auteur' => 'Criar um novo autor e vinculá-lo a esta matéria', |
|
| 189 | + 'icone_creer_mot_cle' => 'Criar uma nova palavra-chave e vinculá-la a esta matéria', |
|
| 190 | + 'icone_creer_rubrique_2' => 'Criar uma nova seção', |
|
| 191 | + 'icone_developpement' => 'Desenvolvimento', |
|
| 192 | + 'icone_edition' => 'Edição', |
|
| 193 | + 'icone_ma_langue' => 'Meu idioma', |
|
| 194 | + 'icone_mes_infos' => 'Minhas informações', |
|
| 195 | + 'icone_mes_preferences' => 'Minhas preferências', |
|
| 196 | + 'icone_modifier_article' => 'Editar esta matéria', |
|
| 197 | + 'icone_modifier_rubrique' => 'Editar esta seção', |
|
| 198 | + 'icone_publication' => 'Publicação', |
|
| 199 | + 'icone_relancer_signataire' => 'Reconfirmar o assinante', |
|
| 200 | + 'icone_retour' => 'Voltar', |
|
| 201 | + 'icone_retour_article' => 'Voltar para a matéria', |
|
| 202 | + 'icone_squelette' => 'Templates', |
|
| 203 | + 'icone_suivi_publication' => 'Acompanhamento da publicação', |
|
| 204 | + 'icone_supprimer_cookie' => 'Excluir o cookie de correspondência', |
|
| 205 | + 'icone_supprimer_rubrique' => 'Excluir esta seção', |
|
| 206 | + 'icone_supprimer_signature' => 'Excluir esta assinatura', |
|
| 207 | + 'icone_valider_signature' => 'Validar esta assinatura', |
|
| 208 | + 'image_administrer_rubrique' => 'Você pode administrar esta seção', |
|
| 209 | + 'impossible_modifier_login_auteur' => 'Não foi possível alterar o login.', |
|
| 210 | + 'impossible_modifier_pass_auteur' => 'Não foi possível alterar a senha.', |
|
| 211 | + 'info_1_article' => '1 matéria', |
|
| 212 | + 'info_1_auteur' => '1 autor', |
|
| 213 | + 'info_1_message' => '1 mensagem', |
|
| 214 | + 'info_1_mot_cle' => '1 palavra-chave', |
|
| 215 | + 'info_1_rubrique' => '1 seção', |
|
| 216 | + 'info_1_visiteur' => '1 visitante', |
|
| 217 | + 'info_activer_cookie' => 'Você pode ativar um <b>cookie de correspondência</b>, que lhe permitirá passar facilmente do site público para o site privado.', |
|
| 218 | + 'info_activer_menu_developpement' => 'Exibir o menu Desenvolvimento', |
|
| 219 | + 'info_admin_etre_webmestre' => 'Me conceder direitos de webmaster', |
|
| 220 | + 'info_admin_je_suis_webmestre' => 'Eu sou <b>webmaster</b>', |
|
| 221 | + 'info_admin_statuer_webmestre' => 'Dar a este administrador os direitos de webmaster', |
|
| 222 | + 'info_admin_webmestre' => 'Este administrador é <b>webmaster</b>', |
|
| 223 | + 'info_administrateur' => 'Administrador', |
|
| 224 | + 'info_administrateur_1' => 'Administrador', |
|
| 225 | + 'info_administrateur_2' => 'do site (<i>use com cuidado</i>)', |
|
| 226 | + 'info_administrateur_site_01' => 'Se você é administrador do site, por favor,', |
|
| 227 | + 'info_administrateur_site_02' => 'clique neste link', |
|
| 228 | + 'info_administrateurs' => 'Administradores', |
|
| 229 | + 'info_administrer_rubrique' => 'Você pode administrar esta seção', |
|
| 230 | + 'info_adresse' => 'no endereço:', |
|
| 231 | + 'info_adresse_desinscription' => 'Endereço da desinscrição:', |
|
| 232 | + 'info_adresse_url' => 'Endereço (URL) do site público', |
|
| 233 | + 'info_afficher_par_nb' => 'Exibir por', |
|
| 234 | + 'info_aide_en_ligne' => 'Ajuda online SPIP', |
|
| 235 | + 'info_ajout_image' => 'Assim que você incluir imagens e documentos anexados a uma matéria, o SPIP pode criar para você, automaticamente, ícones (miniaturas) das imagens inseridas. Isto permite, por exemplo, criar automaticamente uma galeria ou um portfólio.', |
|
| 236 | + 'info_ajouter_rubrique' => 'Incluir outra seção para administrar:', |
|
| 237 | + 'info_annonce_nouveautes' => 'Aviso das novidades', |
|
| 238 | + 'info_article' => 'matéria', |
|
| 239 | + 'info_article_2' => 'matérias', |
|
| 240 | + 'info_article_a_paraitre' => 'As matérias pós-datadas para exibição', |
|
| 241 | + 'info_articles_02' => 'matérias', |
|
| 242 | + 'info_articles_2' => 'Matérias', |
|
| 243 | + 'info_articles_auteur' => 'As matérias deste autor', |
|
| 244 | + 'info_articles_miens' => 'Minhas matérias', |
|
| 245 | + 'info_articles_tous' => 'Todas as matérias', |
|
| 246 | + 'info_articles_trouves' => 'Matérias encontradas', |
|
| 247 | + 'info_attente_validation' => 'Suas matérias aguardando validação', |
|
| 248 | + 'info_aucun_article' => 'Nenhuma matéria', |
|
| 249 | + 'info_aucun_auteur' => 'Nenhum autor', |
|
| 250 | + 'info_aucun_message' => 'Nenhuma mensagem', |
|
| 251 | + 'info_aucun_rubrique' => 'Nenhuma seção', |
|
| 252 | + 'info_aujourdhui' => 'Hoje:', |
|
| 253 | + 'info_auteur_gere_rubriques' => 'Este autor gerencia as seções a seguir:', |
|
| 254 | + 'info_auteur_gere_toutes_rubriques' => 'Este autor gerencia <b>todas as seções</b>', |
|
| 255 | + 'info_auteur_gere_toutes_rubriques_2' => 'Eu gerencio <b>todas as seções</b>', |
|
| 256 | + 'info_auteurs' => 'Os autores', |
|
| 257 | + 'info_auteurs_par_tri' => 'Autores@partri@', |
|
| 258 | + 'info_auteurs_trouves' => 'Autores encontrados', |
|
| 259 | + 'info_authentification_externe' => 'Autenticação externa', |
|
| 260 | + 'info_avertissement' => 'Aviso', |
|
| 261 | + 'info_barre_outils' => 'com sua barra de ferramentas?', |
|
| 262 | + 'info_base_installee' => 'A estrutura da sua base de dados foi instalada.', |
|
| 263 | + 'info_bio' => 'Biografia', |
|
| 264 | + 'info_cache_desactive' => 'O cache está temporariamente desativado.', |
|
| 265 | + 'info_chapeau' => 'Introdução', |
|
| 266 | + 'info_chapeau_2' => 'Introdução:', |
|
| 267 | + 'info_chemin_acces_1' => 'Opções: <b>Caminho de acesso no diretório</b>', |
|
| 268 | + 'info_chemin_acces_2' => 'A partir daqui, você deverá configurar o caminho de acesso às informações do diretório. Esta informação é indispensávelpara ler os perfis dos usuários no diretório.', |
|
| 269 | + 'info_chemin_acces_annuaire' => 'Opções: <b>Caminho de acesso no diretório</b>', |
|
| 270 | + 'info_choix_base' => 'Terceiro passo:', |
|
| 271 | + 'info_classement_1' => '<sup><u>o</u></sup> em @liste@', |
|
| 272 | + 'info_classement_2' => '<sup><u>a</u></sup> em @liste@', |
|
| 273 | + 'info_code_acces' => 'Não se esqueça dos seus dados de conexão!', |
|
| 274 | + 'info_config_suivi' => 'Se este endereço corresponde a uma mailing-list, você pode informar abaixo o endereço onde os participantes do site podem se inscrever. Este endereço pode ser um URL (por exemplo a página de inscrição na lista pela Web), ou um endereço de e-mail dotado de um assunto específico (par exemple: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 275 | + 'info_config_suivi_explication' => 'Voce pode assinar a mailing-list deste site. Você irá receber por e-mail, os avisos de matérias e notas propostos para publicação.', |
|
| 276 | + 'info_confirmer_passe' => 'Confirmar a nova senha:', |
|
| 277 | + 'info_conflit_edition_avis_non_sauvegarde' => 'Atenção os campos a seguir foram alterados por terceiros. As suas modificações nestes campos não foram, por isso, gravadas.', |
|
| 278 | + 'info_conflit_edition_differences' => 'Diferenças:', |
|
| 279 | + 'info_conflit_edition_version_enregistree' => 'A versão gravada:', |
|
| 280 | + 'info_conflit_edition_votre_version' => 'A sua versão:', |
|
| 281 | + 'info_connexion_base' => 'Teste de conexão com a base', |
|
| 282 | + 'info_connexion_base_donnee' => 'Conexão à sua base de dados', |
|
| 283 | + 'info_connexion_ldap_ok' => '<b>A conexão LDAP foi efetuada.</b><p>Você pode passar para o próximo passo.</p>', |
|
| 284 | + 'info_connexion_mysql' => 'Sua conexão SQL', |
|
| 285 | + 'info_connexion_ok' => 'A conexão foi obtida.', |
|
| 286 | + 'info_contact' => 'Contato', |
|
| 287 | + 'info_contenu_articles' => 'Conteúdo das matérias', |
|
| 288 | + 'info_contributions' => 'Contribuições', |
|
| 289 | + 'info_creation_paragraphe' => 'Para criar parágrafos, basta deixar linhas em branco.', |
|
| 290 | + 'info_creation_rubrique' => 'Antes de poder escrever matérias, você deve criar, pelo menos, uma seção.<br />', |
|
| 291 | + 'info_creation_tables' => 'Criação das tabelas da base', |
|
| 292 | + 'info_creer_base' => '<b>Criar</b> uma nova base de dados:', |
|
| 293 | + 'info_dans_rubrique' => 'Na seção:', |
|
| 294 | + 'info_date_publication_anterieure' => 'Data de redação anterior:', |
|
| 295 | + 'info_date_referencement' => 'DATA DE REFERENCIAMENTO DESTE SITE:', |
|
| 296 | + 'info_derniere_etape' => 'Terminou!', |
|
| 297 | + 'info_descriptif' => 'Descrição:', |
|
| 298 | + 'info_desinstaller_plugin' => 'exclui os dados e desativa o plugin', |
|
| 299 | + 'info_discussion_cours' => 'Discussões em andamento', |
|
| 300 | + 'info_ecrire_article' => 'Antes de poder escrever matérias, você precisa criar pelo menos uma seção.', |
|
| 301 | + 'info_email_envoi' => 'Endereço de e-mail de envio (opcional)', |
|
| 302 | + 'info_email_envoi_txt' => 'Informe aqui o endereço a ser utilizado para enviar os e-mails (por padrão, o endereço de destino será usado como endereço de envio):', |
|
| 303 | + 'info_email_webmestre' => 'Endereço de e-mail do webmaster', |
|
| 304 | + 'info_envoi_email_automatique' => 'Envio automático de e-mails', |
|
| 305 | + 'info_envoyer_maintenant' => 'Enviar agora', |
|
| 306 | + 'info_etape_suivante' => 'Avançar para a próxima etapa', |
|
| 307 | + 'info_etape_suivante_1' => 'Você pode passar para a próxima etapa.', |
|
| 308 | + 'info_etape_suivante_2' => 'Você pode passar para a próxima etapa.', |
|
| 309 | + 'info_exceptions_proxy' => 'Exceções para o proxy', |
|
| 310 | + 'info_exportation_base' => 'exportação da base para @archive@', |
|
| 311 | + 'info_facilite_suivi_activite' => 'Para facilitar o acompanhamento da atividade editorial do site, o SPIP pode enviar por e-mail, por exemplo a uma mailing-list de redatores, avisos dos pedidos de publicação e das validações das matérias.', |
|
| 312 | + 'info_fichiers_authent' => 'Arquivos de autenticação «.htpasswd»', |
|
| 313 | + 'info_forums_abo_invites' => 'O seu site comporta fóruns por assinatura; os visitantes são convidados a se registrar no site público.', |
|
| 314 | + 'info_gauche_admin_tech' => '<b>Esta página é acessível apenas aos responsáveis pelo site.</b><p>Ela dá acesso às diferentes funções de manutenção técnica. Algumas dessas funções possuem um processo específico de autenticação que exige acesso FTP ao website.</p>', |
|
| 315 | + 'info_gauche_admin_vider' => '<b>Esta página é acessível apenas aos responsáveis pelo site.</b><p> Ela dá acesso às diferentes funções de manutenção técnica. Algumas dessas funções possuem um processo específico de autenticação que exige acesso FTP ao website.</p>', |
|
| 316 | + 'info_gauche_auteurs' => 'Aqui, você encontra todos os autores do site. |
|
| 317 | 317 | Os status dos autores é indicado pela côr dos ícones (administrador = verde; redator = amarelo).', |
| 318 | - 'info_gauche_auteurs_exterieurs' => 'Os autores externos, sem acesso ao site, são indicados por um ícone azul; |
|
| 318 | + 'info_gauche_auteurs_exterieurs' => 'Os autores externos, sem acesso ao site, são indicados por um ícone azul; |
|
| 319 | 319 | os autores excluídos por um ícone cinza.', |
| 320 | - 'info_gauche_messagerie' => 'O sistema interno de mensagens permite a troca de mensagens entre redatores, a criação de lembretes (para seu uso pessoal) ou exibir anúncios na página de entrada da área privada (se você for administrador).', |
|
| 321 | - 'info_gauche_statistiques_referers' => 'Esta página apresenta a lista dos <i>referers</i>, ou seja, dos sites que contêm links para o seu site, unicamente para ontem e hoje; esta lista é zerada a cada 24 horas.', |
|
| 322 | - 'info_gauche_visiteurs_enregistres' => 'Você encontrará aqui os visitantes registrados na área pública do site (fóruns por assinatura).', |
|
| 323 | - 'info_generation_miniatures_images' => 'Geração de miniaturas das imagens', |
|
| 324 | - 'info_gerer_trad_objets' => '@objets@ : gerenciar os links de tradução', |
|
| 325 | - 'info_hebergeur_desactiver_envoi_email' => 'Alguns serviços de hospedagem desativam o envio automático de e-mails a partir dos seus servidores. Neste caso, as funcionalidades a seguir não funcionarão.', |
|
| 326 | - 'info_hier' => 'ontem:', |
|
| 327 | - 'info_identification_publique' => 'Sua identificação pública...', |
|
| 328 | - 'info_image_process' => 'Por favor, selecione o melhor método de criação dos ícones, clicando na imagem correspondente.', |
|
| 329 | - 'info_image_process2' => 'Se nenhuma imagem está sendo exibida, o servidor que hospeda o seu site não foi configurado para utilizar essas ferramentas. Se você deseja usar essas funções, contate o responsável técnico e solicite as extensões «GD» ou «Imagick».', |
|
| 330 | - 'info_images_auto' => 'Imagens calculadas automaticamente', |
|
| 331 | - 'info_informations_personnelles' => 'Informações pessoais', |
|
| 332 | - 'info_inscription' => 'Inscrição online', |
|
| 333 | - 'info_inscription_automatique' => 'Inscrição automática de novos redatores', |
|
| 334 | - 'info_jeu_caractere' => 'Conjunto de caracteres do site', |
|
| 335 | - 'info_jours' => 'dias', |
|
| 336 | - 'info_laisser_champs_vides' => 'deixar estes campos vazios)', |
|
| 337 | - 'info_langues' => 'Idiomas do site', |
|
| 338 | - 'info_ldap_ok' => 'A autenticação LDAP está instalada.', |
|
| 339 | - 'info_lien_hypertexte' => 'Link hipertexto:', |
|
| 340 | - 'info_liste_nouveautes_envoyee' => 'A lista de novidades foi enviada', |
|
| 341 | - 'info_liste_redacteurs_connectes' => 'Lista de redatores conectados', |
|
| 342 | - 'info_login_existant' => 'Este login já está cadastrado.', |
|
| 343 | - 'info_login_trop_court' => 'Login muito curto.', |
|
| 344 | - 'info_login_trop_court_car_pluriel' => 'O login deve conter pelo menos @nb@ caracteres.', |
|
| 345 | - 'info_logos' => 'Os ícones', |
|
| 346 | - 'info_maximum' => 'máximo:', |
|
| 347 | - 'info_meme_rubrique' => 'Na mesma seção', |
|
| 348 | - 'info_message_en_redaction' => 'Suas mensagens em fase de redação', |
|
| 349 | - 'info_message_technique' => 'Mensagem técnica:', |
|
| 350 | - 'info_messagerie_interne' => 'Mensageria interna', |
|
| 351 | - 'info_mise_a_niveau_base' => 'atualização da sua base SQL', |
|
| 352 | - 'info_mise_a_niveau_base_2' => '{{Atenção!}} Você instalou uma versão de arquivos SPIP {anterior} à que estava instalada no site: a sua base de dados corre o risco de se corromper e o seu site não funcionar mais.<br />{{Reinstale os arquivos SPIP.}}', |
|
| 353 | - 'info_modification_enregistree' => 'Sua alteração foi gravada', |
|
| 354 | - 'info_modifier_auteur' => 'Editar o autor:', |
|
| 355 | - 'info_modifier_rubrique' => 'Editar a seção:', |
|
| 356 | - 'info_modifier_titre' => 'Editar: @titre@', |
|
| 357 | - 'info_mon_site_spip' => 'Meu site SPIP', |
|
| 358 | - 'info_moyenne' => 'média:', |
|
| 359 | - 'info_multi_cet_article' => 'Idioma desta matéria:', |
|
| 360 | - 'info_multi_langues_choisies' => 'Por favor, selecione a seguir os idiomas à disposição dos redatores do seu site. |
|
| 320 | + 'info_gauche_messagerie' => 'O sistema interno de mensagens permite a troca de mensagens entre redatores, a criação de lembretes (para seu uso pessoal) ou exibir anúncios na página de entrada da área privada (se você for administrador).', |
|
| 321 | + 'info_gauche_statistiques_referers' => 'Esta página apresenta a lista dos <i>referers</i>, ou seja, dos sites que contêm links para o seu site, unicamente para ontem e hoje; esta lista é zerada a cada 24 horas.', |
|
| 322 | + 'info_gauche_visiteurs_enregistres' => 'Você encontrará aqui os visitantes registrados na área pública do site (fóruns por assinatura).', |
|
| 323 | + 'info_generation_miniatures_images' => 'Geração de miniaturas das imagens', |
|
| 324 | + 'info_gerer_trad_objets' => '@objets@ : gerenciar os links de tradução', |
|
| 325 | + 'info_hebergeur_desactiver_envoi_email' => 'Alguns serviços de hospedagem desativam o envio automático de e-mails a partir dos seus servidores. Neste caso, as funcionalidades a seguir não funcionarão.', |
|
| 326 | + 'info_hier' => 'ontem:', |
|
| 327 | + 'info_identification_publique' => 'Sua identificação pública...', |
|
| 328 | + 'info_image_process' => 'Por favor, selecione o melhor método de criação dos ícones, clicando na imagem correspondente.', |
|
| 329 | + 'info_image_process2' => 'Se nenhuma imagem está sendo exibida, o servidor que hospeda o seu site não foi configurado para utilizar essas ferramentas. Se você deseja usar essas funções, contate o responsável técnico e solicite as extensões «GD» ou «Imagick».', |
|
| 330 | + 'info_images_auto' => 'Imagens calculadas automaticamente', |
|
| 331 | + 'info_informations_personnelles' => 'Informações pessoais', |
|
| 332 | + 'info_inscription' => 'Inscrição online', |
|
| 333 | + 'info_inscription_automatique' => 'Inscrição automática de novos redatores', |
|
| 334 | + 'info_jeu_caractere' => 'Conjunto de caracteres do site', |
|
| 335 | + 'info_jours' => 'dias', |
|
| 336 | + 'info_laisser_champs_vides' => 'deixar estes campos vazios)', |
|
| 337 | + 'info_langues' => 'Idiomas do site', |
|
| 338 | + 'info_ldap_ok' => 'A autenticação LDAP está instalada.', |
|
| 339 | + 'info_lien_hypertexte' => 'Link hipertexto:', |
|
| 340 | + 'info_liste_nouveautes_envoyee' => 'A lista de novidades foi enviada', |
|
| 341 | + 'info_liste_redacteurs_connectes' => 'Lista de redatores conectados', |
|
| 342 | + 'info_login_existant' => 'Este login já está cadastrado.', |
|
| 343 | + 'info_login_trop_court' => 'Login muito curto.', |
|
| 344 | + 'info_login_trop_court_car_pluriel' => 'O login deve conter pelo menos @nb@ caracteres.', |
|
| 345 | + 'info_logos' => 'Os ícones', |
|
| 346 | + 'info_maximum' => 'máximo:', |
|
| 347 | + 'info_meme_rubrique' => 'Na mesma seção', |
|
| 348 | + 'info_message_en_redaction' => 'Suas mensagens em fase de redação', |
|
| 349 | + 'info_message_technique' => 'Mensagem técnica:', |
|
| 350 | + 'info_messagerie_interne' => 'Mensageria interna', |
|
| 351 | + 'info_mise_a_niveau_base' => 'atualização da sua base SQL', |
|
| 352 | + 'info_mise_a_niveau_base_2' => '{{Atenção!}} Você instalou uma versão de arquivos SPIP {anterior} à que estava instalada no site: a sua base de dados corre o risco de se corromper e o seu site não funcionar mais.<br />{{Reinstale os arquivos SPIP.}}', |
|
| 353 | + 'info_modification_enregistree' => 'Sua alteração foi gravada', |
|
| 354 | + 'info_modifier_auteur' => 'Editar o autor:', |
|
| 355 | + 'info_modifier_rubrique' => 'Editar a seção:', |
|
| 356 | + 'info_modifier_titre' => 'Editar: @titre@', |
|
| 357 | + 'info_mon_site_spip' => 'Meu site SPIP', |
|
| 358 | + 'info_moyenne' => 'média:', |
|
| 359 | + 'info_multi_cet_article' => 'Idioma desta matéria:', |
|
| 360 | + 'info_multi_langues_choisies' => 'Por favor, selecione a seguir os idiomas à disposição dos redatores do seu site. |
|
| 361 | 361 | Os idiomas já utilizados no site (no topo da lista) não podem ser desativados.', |
| 362 | - 'info_multi_objets' => '@objets@ : ativar o menu de idioma', |
|
| 363 | - 'info_multi_secteurs' => '... apenas para as seções situadas na raiz?', |
|
| 364 | - 'info_nb_articles' => '@nb@ matérias', |
|
| 365 | - 'info_nb_auteurs' => '@nb@ autores', |
|
| 366 | - 'info_nb_messages' => '@nb@ mensagens', |
|
| 367 | - 'info_nb_mots_cles' => '@nb@ palavras-chave', |
|
| 368 | - 'info_nb_rubriques' => '@nb@ seções', |
|
| 369 | - 'info_nb_visiteurs' => '@nb@ visitantes', |
|
| 370 | - 'info_nom' => 'Nome', |
|
| 371 | - 'info_nom_destinataire' => 'Nome do destinatário', |
|
| 372 | - 'info_nom_pas_conforme' => 'tags HTML não são permitidas', |
|
| 373 | - 'info_nom_site' => 'Nome do seu site', |
|
| 374 | - 'info_nombre_articles' => '@nb_articles@ matérias,', |
|
| 375 | - 'info_nombre_rubriques' => '@nb_rubriques@ seções,', |
|
| 376 | - 'info_nombre_sites' => '@nb_sites@ sites,', |
|
| 377 | - 'info_non_deplacer' => 'Não mover...', |
|
| 378 | - 'info_non_envoi_annonce_dernieres_nouveautes' => 'O SPIP pode enviar regularmente o anúncio das últimas novidades do site (matérias e notas publicadas recentemente).', |
|
| 379 | - 'info_non_envoi_liste_nouveautes' => 'Não enviar a lista de novidades', |
|
| 380 | - 'info_non_modifiable' => 'não pode ser modificado', |
|
| 381 | - 'info_non_suppression_mot_cle' => 'Eu não quero excluir esta palavra-chave.', |
|
| 382 | - 'info_notes' => 'Observações', |
|
| 383 | - 'info_nouvel_article' => 'Nova matéria', |
|
| 384 | - 'info_nouvelle_traduction' => 'Nova tradução:', |
|
| 385 | - 'info_numero_article' => 'MATÉRIA NÚMERO:', |
|
| 386 | - 'info_obligatoire_02' => '(obrigatório)', |
|
| 387 | - 'info_option_accepter_visiteurs' => 'Aceitar a inscrição de visitantes do site público', |
|
| 388 | - 'info_option_ne_pas_accepter_visiteurs' => 'Recusar a inscrição dos visitantes', |
|
| 389 | - 'info_options_avancees' => 'OPÇÕES AVANÇADAS', |
|
| 390 | - 'info_ou' => 'ou...', |
|
| 391 | - 'info_page_interdite' => 'Página não autorizada', |
|
| 392 | - 'info_par_nom' => 'por nome', |
|
| 393 | - 'info_par_nombre_article' => 'por número de matérias', |
|
| 394 | - 'info_par_statut' => 'por status', |
|
| 395 | - 'info_par_tri' => '’(por @tri@)’', |
|
| 396 | - 'info_passe_trop_court' => 'Senha muito curta.', |
|
| 397 | - 'info_passe_trop_court_car_pluriel' => 'A senha deve conter pelo menos @nb@ caracteres.', |
|
| 398 | - 'info_passes_identiques' => 'As duas senhas não são idênticas.', |
|
| 399 | - 'info_plus_cinq_car' => 'mais de 5 caracteres', |
|
| 400 | - 'info_plus_cinq_car_2' => '(Mais de 5 caracteres)', |
|
| 401 | - 'info_plus_trois_car' => '(Mais de 3 caracteres)', |
|
| 402 | - 'info_popularite' => 'popularidade: @popularite@; visitas: @visites@', |
|
| 403 | - 'info_post_scriptum' => 'Rodapé', |
|
| 404 | - 'info_post_scriptum_2' => 'Rodapé:', |
|
| 405 | - 'info_pour' => 'para', |
|
| 406 | - 'info_preview_texte' => 'É possível visualizar os diferentes elementos editoriais do site que tenham pelo menos o status de «proposto», bem como os elementos em fase de redação de que se é autor. Esta funcionalidade deve estar disponível para os administradores, para os redatores, ou para ninguém?', |
|
| 407 | - 'info_procedez_par_etape' => 'proceder passo-a-passo', |
|
| 408 | - 'info_procedure_maj_version' => 'o procedimento de atualização deve ser rodado para adaptar a base de dados à nova versão do SPIP.', |
|
| 409 | - 'info_proxy_ok' => 'Teste do proxy bem sucedido', |
|
| 410 | - 'info_ps' => 'P.S.', |
|
| 411 | - 'info_publier' => 'publicar', |
|
| 412 | - 'info_publies' => 'Suas matérias publicadas online', |
|
| 413 | - 'info_question_accepter_visiteurs' => 'Se os templates do seu site prevêem o cadastramento de visitantes sem acesso à área privada, por favor, ative a opção abaixo:', |
|
| 414 | - 'info_question_inscription_nouveaux_redacteurs' => 'Você quer aceitar inscrições de novos redatores a partir do site público? Se você aceitar, os visitantes poderão se cadastrar através de um formulário automatizado, tendo acesso à área privada para propôr as suas próprias matérias. <div class="notice">Durante a fase de inscrição, os usuários recebem um e-mail automático, fornecendo-lhes os seus códigos de acesso à área privada. Alguns serviços de hospedagem desativam o envio de e-mails a partir dos seus servidores: nesse caso, a inscrição automática é impossível.</div>', |
|
| 415 | - 'info_qui_edite' => '@nom_auteur_modif@ trabalhou neste conteúdo há @date_diff@ minutos', |
|
| 416 | - 'info_racine_site' => 'Raiz do site', |
|
| 417 | - 'info_recharger_page' => 'Por favor, atualize esta página em alguns instantes.', |
|
| 418 | - 'info_recherche_auteur_zero' => 'Nenhum resultado para «@cherche_auteur@».', |
|
| 419 | - 'info_recommencer' => 'Por favor, recomece.', |
|
| 420 | - 'info_redacteur_1' => 'Redator', |
|
| 421 | - 'info_redacteur_2' => 'com acesso à área privada (<i>recomendado</i>)', |
|
| 422 | - 'info_redacteurs' => 'Redatores', |
|
| 423 | - 'info_redaction_en_cours' => 'EM FASE DE REDAÇÃO', |
|
| 424 | - 'info_redirection' => 'Redirecionamento', |
|
| 425 | - 'info_redirection_activee' => 'O redirecionamento foi ativado.', |
|
| 426 | - 'info_redirection_boucle' => 'Você tentou redirecionar a matéria para ela mesma.', |
|
| 427 | - 'info_redirection_desactivee' => 'O redirecionamento foi excluído.', |
|
| 428 | - 'info_refuses' => 'Suas matérias recusadas', |
|
| 429 | - 'info_reglage_ldap' => 'Opções: <b>Configuração da importação LDAP</b>', |
|
| 430 | - 'info_renvoi_article' => '<b>Redirecionamento.</b> Esta matéria redireciona para a página:', |
|
| 431 | - 'info_reserve_admin' => 'Apenas os administradores podem alterar este endereço.', |
|
| 432 | - 'info_restreindre_rubrique' => 'Restringir o gerenciamento à seção:', |
|
| 433 | - 'info_resultat_recherche' => 'Resultados da busca:', |
|
| 434 | - 'info_rubriques' => 'Seções', |
|
| 435 | - 'info_rubriques_02' => 'seções', |
|
| 436 | - 'info_rubriques_trouvees' => 'Seções encontradas', |
|
| 437 | - 'info_sans_titre' => 'Sem título', |
|
| 438 | - 'info_selection_chemin_acces' => '<b>Selecione</b> a seguir o caminho para acessar o diretório:', |
|
| 439 | - 'info_signatures' => 'assinaturas', |
|
| 440 | - 'info_site' => 'Site', |
|
| 441 | - 'info_site_2' => 'site:', |
|
| 442 | - 'info_site_min' => 'site', |
|
| 443 | - 'info_site_reference_2' => 'Site referenciado', |
|
| 444 | - 'info_site_web' => 'Website:', |
|
| 445 | - 'info_sites' => 'sites', |
|
| 446 | - 'info_sites_lies_mot' => 'Os sites referenciados vinculados a esta palavra-chave', |
|
| 447 | - 'info_sites_proxy' => 'Utilizar um proxy', |
|
| 448 | - 'info_sites_trouves' => 'Sites encontrados', |
|
| 449 | - 'info_sous_titre' => 'Subtítulo:', |
|
| 450 | - 'info_statut_administrateur' => 'Administrador', |
|
| 451 | - 'info_statut_auteur' => 'Status deste autor:', |
|
| 452 | - 'info_statut_auteur_2' => 'Eu sou', |
|
| 453 | - 'info_statut_auteur_a_confirmer' => 'Inscrição a confirmar', |
|
| 454 | - 'info_statut_auteur_autre' => 'Outro status:', |
|
| 455 | - 'info_statut_redacteur' => 'Redator', |
|
| 456 | - 'info_statut_utilisateurs_1' => 'Status padrão dos usuários importados', |
|
| 457 | - 'info_statut_utilisateurs_2' => 'Escolha o status atribuído às pessoas que constam do diretório LDAP, quando elas se conectarem pela primeira vêz. Você poderá, em seguida, alterar caso a caso este valor para cada autor.', |
|
| 458 | - 'info_suivi_activite' => 'Acompanhamento da atividade editorial', |
|
| 459 | - 'info_surtitre' => 'Sobretítulo:', |
|
| 460 | - 'info_syndication_integrale_1' => 'O seu site propõe arquivos de sindicação (ver «<a href="@url@">@titre@</a>»).', |
|
| 461 | - 'info_syndication_integrale_2' => 'Você deseja transmitir as matérias integralmente, ou difundir apenas um resumo de algumas centenas de caracteres?', |
|
| 462 | - 'info_table_prefix' => 'Você pode alterar o prefixo do nome das tabelas de dados (indispensável no caso de pretender instalar diversos sites na mesma base de dados). Este prefixo deve estar em minúsculas, não acentuadas, e sem espaços.', |
|
| 463 | - 'info_taille_maximale_images' => 'SPIP irá testar o tamanho máximo das imagens que o sistema pode tratar (em milhões de pixels).<br />As imagens muito grandes não serão reduzidas.', |
|
| 464 | - 'info_taille_maximale_vignette' => 'Tamanho máximo dos ícones gerados pelo sistema:', |
|
| 465 | - 'info_terminer_installation' => 'Você pode agora terminar o procedimento de instalação padrão.', |
|
| 466 | - 'info_texte' => 'Texto', |
|
| 467 | - 'info_texte_explicatif' => 'Texto explicativo', |
|
| 468 | - 'info_texte_long' => '(o texto é longo: ele aparecerá em diversas partes que serão recombinadas após validação.)', |
|
| 469 | - 'info_texte_message' => 'Texto da sua mensagem', |
|
| 470 | - 'info_texte_message_02' => 'Texto da mensagem', |
|
| 471 | - 'info_titre' => 'Título:', |
|
| 472 | - 'info_total' => 'total:', |
|
| 473 | - 'info_tous_articles_en_redaction' => 'Todas as matérias em fase de redação', |
|
| 474 | - 'info_tous_articles_presents' => 'Todas as matérias publicadas nesta seção', |
|
| 475 | - 'info_tous_articles_refuses' => 'Todas as matérias recusadas', |
|
| 476 | - 'info_tous_les' => 'todos os:', |
|
| 477 | - 'info_tout_site' => 'Todo o site', |
|
| 478 | - 'info_tout_site2' => 'A matéria não foi traduzida para este idioma.', |
|
| 479 | - 'info_tout_site3' => 'A matéria foi traduzida para este idioma, mas foram feitas alterações na matéria de referência. A tradução procisa ser atualizada.', |
|
| 480 | - 'info_tout_site4' => 'A matéria foi traduzida para este idioma e a tradução está em dia.', |
|
| 481 | - 'info_tout_site5' => 'Matéria original.', |
|
| 482 | - 'info_tout_site6' => '<b>Atenção:</b> apenas as matérias originais estão exibidas. |
|
| 362 | + 'info_multi_objets' => '@objets@ : ativar o menu de idioma', |
|
| 363 | + 'info_multi_secteurs' => '... apenas para as seções situadas na raiz?', |
|
| 364 | + 'info_nb_articles' => '@nb@ matérias', |
|
| 365 | + 'info_nb_auteurs' => '@nb@ autores', |
|
| 366 | + 'info_nb_messages' => '@nb@ mensagens', |
|
| 367 | + 'info_nb_mots_cles' => '@nb@ palavras-chave', |
|
| 368 | + 'info_nb_rubriques' => '@nb@ seções', |
|
| 369 | + 'info_nb_visiteurs' => '@nb@ visitantes', |
|
| 370 | + 'info_nom' => 'Nome', |
|
| 371 | + 'info_nom_destinataire' => 'Nome do destinatário', |
|
| 372 | + 'info_nom_pas_conforme' => 'tags HTML não são permitidas', |
|
| 373 | + 'info_nom_site' => 'Nome do seu site', |
|
| 374 | + 'info_nombre_articles' => '@nb_articles@ matérias,', |
|
| 375 | + 'info_nombre_rubriques' => '@nb_rubriques@ seções,', |
|
| 376 | + 'info_nombre_sites' => '@nb_sites@ sites,', |
|
| 377 | + 'info_non_deplacer' => 'Não mover...', |
|
| 378 | + 'info_non_envoi_annonce_dernieres_nouveautes' => 'O SPIP pode enviar regularmente o anúncio das últimas novidades do site (matérias e notas publicadas recentemente).', |
|
| 379 | + 'info_non_envoi_liste_nouveautes' => 'Não enviar a lista de novidades', |
|
| 380 | + 'info_non_modifiable' => 'não pode ser modificado', |
|
| 381 | + 'info_non_suppression_mot_cle' => 'Eu não quero excluir esta palavra-chave.', |
|
| 382 | + 'info_notes' => 'Observações', |
|
| 383 | + 'info_nouvel_article' => 'Nova matéria', |
|
| 384 | + 'info_nouvelle_traduction' => 'Nova tradução:', |
|
| 385 | + 'info_numero_article' => 'MATÉRIA NÚMERO:', |
|
| 386 | + 'info_obligatoire_02' => '(obrigatório)', |
|
| 387 | + 'info_option_accepter_visiteurs' => 'Aceitar a inscrição de visitantes do site público', |
|
| 388 | + 'info_option_ne_pas_accepter_visiteurs' => 'Recusar a inscrição dos visitantes', |
|
| 389 | + 'info_options_avancees' => 'OPÇÕES AVANÇADAS', |
|
| 390 | + 'info_ou' => 'ou...', |
|
| 391 | + 'info_page_interdite' => 'Página não autorizada', |
|
| 392 | + 'info_par_nom' => 'por nome', |
|
| 393 | + 'info_par_nombre_article' => 'por número de matérias', |
|
| 394 | + 'info_par_statut' => 'por status', |
|
| 395 | + 'info_par_tri' => '’(por @tri@)’', |
|
| 396 | + 'info_passe_trop_court' => 'Senha muito curta.', |
|
| 397 | + 'info_passe_trop_court_car_pluriel' => 'A senha deve conter pelo menos @nb@ caracteres.', |
|
| 398 | + 'info_passes_identiques' => 'As duas senhas não são idênticas.', |
|
| 399 | + 'info_plus_cinq_car' => 'mais de 5 caracteres', |
|
| 400 | + 'info_plus_cinq_car_2' => '(Mais de 5 caracteres)', |
|
| 401 | + 'info_plus_trois_car' => '(Mais de 3 caracteres)', |
|
| 402 | + 'info_popularite' => 'popularidade: @popularite@; visitas: @visites@', |
|
| 403 | + 'info_post_scriptum' => 'Rodapé', |
|
| 404 | + 'info_post_scriptum_2' => 'Rodapé:', |
|
| 405 | + 'info_pour' => 'para', |
|
| 406 | + 'info_preview_texte' => 'É possível visualizar os diferentes elementos editoriais do site que tenham pelo menos o status de «proposto», bem como os elementos em fase de redação de que se é autor. Esta funcionalidade deve estar disponível para os administradores, para os redatores, ou para ninguém?', |
|
| 407 | + 'info_procedez_par_etape' => 'proceder passo-a-passo', |
|
| 408 | + 'info_procedure_maj_version' => 'o procedimento de atualização deve ser rodado para adaptar a base de dados à nova versão do SPIP.', |
|
| 409 | + 'info_proxy_ok' => 'Teste do proxy bem sucedido', |
|
| 410 | + 'info_ps' => 'P.S.', |
|
| 411 | + 'info_publier' => 'publicar', |
|
| 412 | + 'info_publies' => 'Suas matérias publicadas online', |
|
| 413 | + 'info_question_accepter_visiteurs' => 'Se os templates do seu site prevêem o cadastramento de visitantes sem acesso à área privada, por favor, ative a opção abaixo:', |
|
| 414 | + 'info_question_inscription_nouveaux_redacteurs' => 'Você quer aceitar inscrições de novos redatores a partir do site público? Se você aceitar, os visitantes poderão se cadastrar através de um formulário automatizado, tendo acesso à área privada para propôr as suas próprias matérias. <div class="notice">Durante a fase de inscrição, os usuários recebem um e-mail automático, fornecendo-lhes os seus códigos de acesso à área privada. Alguns serviços de hospedagem desativam o envio de e-mails a partir dos seus servidores: nesse caso, a inscrição automática é impossível.</div>', |
|
| 415 | + 'info_qui_edite' => '@nom_auteur_modif@ trabalhou neste conteúdo há @date_diff@ minutos', |
|
| 416 | + 'info_racine_site' => 'Raiz do site', |
|
| 417 | + 'info_recharger_page' => 'Por favor, atualize esta página em alguns instantes.', |
|
| 418 | + 'info_recherche_auteur_zero' => 'Nenhum resultado para «@cherche_auteur@».', |
|
| 419 | + 'info_recommencer' => 'Por favor, recomece.', |
|
| 420 | + 'info_redacteur_1' => 'Redator', |
|
| 421 | + 'info_redacteur_2' => 'com acesso à área privada (<i>recomendado</i>)', |
|
| 422 | + 'info_redacteurs' => 'Redatores', |
|
| 423 | + 'info_redaction_en_cours' => 'EM FASE DE REDAÇÃO', |
|
| 424 | + 'info_redirection' => 'Redirecionamento', |
|
| 425 | + 'info_redirection_activee' => 'O redirecionamento foi ativado.', |
|
| 426 | + 'info_redirection_boucle' => 'Você tentou redirecionar a matéria para ela mesma.', |
|
| 427 | + 'info_redirection_desactivee' => 'O redirecionamento foi excluído.', |
|
| 428 | + 'info_refuses' => 'Suas matérias recusadas', |
|
| 429 | + 'info_reglage_ldap' => 'Opções: <b>Configuração da importação LDAP</b>', |
|
| 430 | + 'info_renvoi_article' => '<b>Redirecionamento.</b> Esta matéria redireciona para a página:', |
|
| 431 | + 'info_reserve_admin' => 'Apenas os administradores podem alterar este endereço.', |
|
| 432 | + 'info_restreindre_rubrique' => 'Restringir o gerenciamento à seção:', |
|
| 433 | + 'info_resultat_recherche' => 'Resultados da busca:', |
|
| 434 | + 'info_rubriques' => 'Seções', |
|
| 435 | + 'info_rubriques_02' => 'seções', |
|
| 436 | + 'info_rubriques_trouvees' => 'Seções encontradas', |
|
| 437 | + 'info_sans_titre' => 'Sem título', |
|
| 438 | + 'info_selection_chemin_acces' => '<b>Selecione</b> a seguir o caminho para acessar o diretório:', |
|
| 439 | + 'info_signatures' => 'assinaturas', |
|
| 440 | + 'info_site' => 'Site', |
|
| 441 | + 'info_site_2' => 'site:', |
|
| 442 | + 'info_site_min' => 'site', |
|
| 443 | + 'info_site_reference_2' => 'Site referenciado', |
|
| 444 | + 'info_site_web' => 'Website:', |
|
| 445 | + 'info_sites' => 'sites', |
|
| 446 | + 'info_sites_lies_mot' => 'Os sites referenciados vinculados a esta palavra-chave', |
|
| 447 | + 'info_sites_proxy' => 'Utilizar um proxy', |
|
| 448 | + 'info_sites_trouves' => 'Sites encontrados', |
|
| 449 | + 'info_sous_titre' => 'Subtítulo:', |
|
| 450 | + 'info_statut_administrateur' => 'Administrador', |
|
| 451 | + 'info_statut_auteur' => 'Status deste autor:', |
|
| 452 | + 'info_statut_auteur_2' => 'Eu sou', |
|
| 453 | + 'info_statut_auteur_a_confirmer' => 'Inscrição a confirmar', |
|
| 454 | + 'info_statut_auteur_autre' => 'Outro status:', |
|
| 455 | + 'info_statut_redacteur' => 'Redator', |
|
| 456 | + 'info_statut_utilisateurs_1' => 'Status padrão dos usuários importados', |
|
| 457 | + 'info_statut_utilisateurs_2' => 'Escolha o status atribuído às pessoas que constam do diretório LDAP, quando elas se conectarem pela primeira vêz. Você poderá, em seguida, alterar caso a caso este valor para cada autor.', |
|
| 458 | + 'info_suivi_activite' => 'Acompanhamento da atividade editorial', |
|
| 459 | + 'info_surtitre' => 'Sobretítulo:', |
|
| 460 | + 'info_syndication_integrale_1' => 'O seu site propõe arquivos de sindicação (ver «<a href="@url@">@titre@</a>»).', |
|
| 461 | + 'info_syndication_integrale_2' => 'Você deseja transmitir as matérias integralmente, ou difundir apenas um resumo de algumas centenas de caracteres?', |
|
| 462 | + 'info_table_prefix' => 'Você pode alterar o prefixo do nome das tabelas de dados (indispensável no caso de pretender instalar diversos sites na mesma base de dados). Este prefixo deve estar em minúsculas, não acentuadas, e sem espaços.', |
|
| 463 | + 'info_taille_maximale_images' => 'SPIP irá testar o tamanho máximo das imagens que o sistema pode tratar (em milhões de pixels).<br />As imagens muito grandes não serão reduzidas.', |
|
| 464 | + 'info_taille_maximale_vignette' => 'Tamanho máximo dos ícones gerados pelo sistema:', |
|
| 465 | + 'info_terminer_installation' => 'Você pode agora terminar o procedimento de instalação padrão.', |
|
| 466 | + 'info_texte' => 'Texto', |
|
| 467 | + 'info_texte_explicatif' => 'Texto explicativo', |
|
| 468 | + 'info_texte_long' => '(o texto é longo: ele aparecerá em diversas partes que serão recombinadas após validação.)', |
|
| 469 | + 'info_texte_message' => 'Texto da sua mensagem', |
|
| 470 | + 'info_texte_message_02' => 'Texto da mensagem', |
|
| 471 | + 'info_titre' => 'Título:', |
|
| 472 | + 'info_total' => 'total:', |
|
| 473 | + 'info_tous_articles_en_redaction' => 'Todas as matérias em fase de redação', |
|
| 474 | + 'info_tous_articles_presents' => 'Todas as matérias publicadas nesta seção', |
|
| 475 | + 'info_tous_articles_refuses' => 'Todas as matérias recusadas', |
|
| 476 | + 'info_tous_les' => 'todos os:', |
|
| 477 | + 'info_tout_site' => 'Todo o site', |
|
| 478 | + 'info_tout_site2' => 'A matéria não foi traduzida para este idioma.', |
|
| 479 | + 'info_tout_site3' => 'A matéria foi traduzida para este idioma, mas foram feitas alterações na matéria de referência. A tradução procisa ser atualizada.', |
|
| 480 | + 'info_tout_site4' => 'A matéria foi traduzida para este idioma e a tradução está em dia.', |
|
| 481 | + 'info_tout_site5' => 'Matéria original.', |
|
| 482 | + 'info_tout_site6' => '<b>Atenção:</b> apenas as matérias originais estão exibidas. |
|
| 483 | 483 | As traduções estão associadas ao original, numa côr que indica o seu status:', |
| 484 | - 'info_traductions' => 'Traduções', |
|
| 485 | - 'info_travail_colaboratif' => 'Trabalho colaborativo nas matérias', |
|
| 486 | - 'info_un_article' => 'uma matéria,', |
|
| 487 | - 'info_un_site' => 'um site,', |
|
| 488 | - 'info_une_rubrique' => 'uma seção,', |
|
| 489 | - 'info_une_rubrique_02' => '1 seção', |
|
| 490 | - 'info_url' => 'URL:', |
|
| 491 | - 'info_url_proxy' => 'URL do proxy', |
|
| 492 | - 'info_url_proxy_pas_conforme' => 'O URL do proxy não é válido.', |
|
| 493 | - 'info_url_site_pas_conforme' => 'O URL do site não é válido.', |
|
| 494 | - 'info_url_test_proxy' => 'URL de teste', |
|
| 495 | - 'info_urlref' => 'Link hipertexto:', |
|
| 496 | - 'info_utilisation_spip' => 'Você pode agora começar a utilizar o sistema de publicação assistida...', |
|
| 497 | - 'info_visites_par_mois' => 'Exibir por mês:', |
|
| 498 | - 'info_visiteur_1' => 'Visitante', |
|
| 499 | - 'info_visiteur_2' => 'do site público', |
|
| 500 | - 'info_visiteurs' => 'Visitantes', |
|
| 501 | - 'info_visiteurs_02' => 'Visitantes do site público', |
|
| 502 | - 'info_webmestre_forces' => 'Os webmasters são definidos em <tt>@file_options@</tt>.', |
|
| 503 | - 'install_adresse_base_hebergeur' => 'Endereço da base de dados atribuído pelo serviço de hospedagem:', |
|
| 504 | - 'install_connect_ok' => 'A nova base de dados foi corretamente declarada sob o nome de servidor @connect@.', |
|
| 505 | - 'install_echec_annonce' => 'A instalação irá, provavelmente, falhar, ou levar a um site que não funciona...', |
|
| 506 | - 'install_extension_mbstring' => 'O SPIP não funciona com:', |
|
| 507 | - 'install_extension_php_obligatoire' => 'O SPIP exige a extensão php:', |
|
| 508 | - 'install_login_base_hebergeur' => 'Login de conexão atribuído pelo serviço de hospedagem:', |
|
| 509 | - 'install_nom_base_hebergeur' => 'Nome da base atribuído pelo serviço de hospedagem:', |
|
| 510 | - 'install_pas_table' => 'Base atualmente sem tabelas', |
|
| 511 | - 'install_pass_base_hebergeur' => 'Senha de conexão atribuída pelo serviço de hospedagem', |
|
| 512 | - 'install_php_version' => 'PHP versão @version@ é insuficiente (mínimo = @minimum@)', |
|
| 513 | - 'install_select_langue' => 'Escolha um idioma e clique no botão «avançar» para iniciar o procedimento de instalação.', |
|
| 514 | - 'install_select_type_db' => 'Indicar o tipo de base de dados:', |
|
| 515 | - 'install_select_type_mysql' => 'MySQL', |
|
| 516 | - 'install_select_type_pg' => 'PostgreSQL', |
|
| 517 | - 'install_select_type_sqlite2' => 'SQLite 2', |
|
| 518 | - 'install_select_type_sqlite3' => 'SQLite 3', |
|
| 519 | - 'install_serveur_hebergeur' => 'Servidor de base de dados atribuído pelo serviço de hospedagem', |
|
| 520 | - 'install_table_prefix_hebergeur' => 'Prefixo de tabela atribuído pelo serviço de hospedagem:', |
|
| 521 | - 'install_tables_base' => 'Tabelas da base', |
|
| 522 | - 'install_types_db_connus' => 'SPIP pode usar <b>MySQL</b> (a mais comum), e <b>SQLite</b>.', |
|
| 523 | - 'install_types_db_connus_avertissement' => 'O suporte ao <b>PostgreSQL</b> é também proposto a título experimental', |
|
| 524 | - 'instituer_erreur_statut_a_change' => 'O status já foi alterado', |
|
| 525 | - 'instituer_erreur_statut_non_autorise' => 'Você não pode escolher este status', |
|
| 526 | - 'intem_redacteur' => 'redator', |
|
| 527 | - 'intitule_licence' => 'Licença', |
|
| 528 | - 'item_accepter_inscriptions' => 'Aceitar as inscrições', |
|
| 529 | - 'item_activer_messages_avertissement' => 'Ativar as mensagens de aviso', |
|
| 530 | - 'item_administrateur_2' => 'administrador', |
|
| 531 | - 'item_afficher_calendrier' => 'Exibir no calendário', |
|
| 532 | - 'item_autoriser_syndication_integrale' => 'Difundir a íntegra das matérias nos arquivos de sindicação', |
|
| 533 | - 'item_choix_administrateurs' => 'os administradores', |
|
| 534 | - 'item_choix_generation_miniature' => 'Gerar automaticamente as miniaturas das imagens.', |
|
| 535 | - 'item_choix_non_generation_miniature' => 'Não gerar as miniaturas das imagens.', |
|
| 536 | - 'item_choix_redacteurs' => 'os redatores', |
|
| 537 | - 'item_choix_visiteurs' => 'os visitantes do site público', |
|
| 538 | - 'item_creer_fichiers_authent' => 'Criar os arquivos .htpasswd', |
|
| 539 | - 'item_login' => 'Login', |
|
| 540 | - 'item_messagerie_agenda' => 'Ativar as mesagens internas e a agenda', |
|
| 541 | - 'item_mots_cles_association_articles' => 'às matérias', |
|
| 542 | - 'item_mots_cles_association_rubriques' => 'às seções', |
|
| 543 | - 'item_mots_cles_association_sites' => 'aos sites referenciados ou sindicados.', |
|
| 544 | - 'item_non' => 'Não', |
|
| 545 | - 'item_non_accepter_inscriptions' => 'Não aceitar inscrições', |
|
| 546 | - 'item_non_activer_messages_avertissement' => 'Sem mensagens de aviso', |
|
| 547 | - 'item_non_afficher_calendrier' => 'Não exibir no calendário', |
|
| 548 | - 'item_non_autoriser_syndication_integrale' => 'Difundir apenas um resumo', |
|
| 549 | - 'item_non_creer_fichiers_authent' => 'Não criar os arquivos', |
|
| 550 | - 'item_non_messagerie_agenda' => 'Desativar as mensagens internas e a agenda', |
|
| 551 | - 'item_non_publier_articles' => 'Não publicar as matérias antes da data de publicação fixada.', |
|
| 552 | - 'item_nouvel_auteur' => 'Novo autor', |
|
| 553 | - 'item_nouvelle_rubrique' => 'Nova seção', |
|
| 554 | - 'item_oui' => 'Sim', |
|
| 555 | - 'item_publier_articles' => 'Publicar as matérias seja qual for a sua data de publicação.', |
|
| 556 | - 'item_reponse_article' => 'Resposta à matéria', |
|
| 557 | - 'item_visiteur' => 'Visitante', |
|
| 484 | + 'info_traductions' => 'Traduções', |
|
| 485 | + 'info_travail_colaboratif' => 'Trabalho colaborativo nas matérias', |
|
| 486 | + 'info_un_article' => 'uma matéria,', |
|
| 487 | + 'info_un_site' => 'um site,', |
|
| 488 | + 'info_une_rubrique' => 'uma seção,', |
|
| 489 | + 'info_une_rubrique_02' => '1 seção', |
|
| 490 | + 'info_url' => 'URL:', |
|
| 491 | + 'info_url_proxy' => 'URL do proxy', |
|
| 492 | + 'info_url_proxy_pas_conforme' => 'O URL do proxy não é válido.', |
|
| 493 | + 'info_url_site_pas_conforme' => 'O URL do site não é válido.', |
|
| 494 | + 'info_url_test_proxy' => 'URL de teste', |
|
| 495 | + 'info_urlref' => 'Link hipertexto:', |
|
| 496 | + 'info_utilisation_spip' => 'Você pode agora começar a utilizar o sistema de publicação assistida...', |
|
| 497 | + 'info_visites_par_mois' => 'Exibir por mês:', |
|
| 498 | + 'info_visiteur_1' => 'Visitante', |
|
| 499 | + 'info_visiteur_2' => 'do site público', |
|
| 500 | + 'info_visiteurs' => 'Visitantes', |
|
| 501 | + 'info_visiteurs_02' => 'Visitantes do site público', |
|
| 502 | + 'info_webmestre_forces' => 'Os webmasters são definidos em <tt>@file_options@</tt>.', |
|
| 503 | + 'install_adresse_base_hebergeur' => 'Endereço da base de dados atribuído pelo serviço de hospedagem:', |
|
| 504 | + 'install_connect_ok' => 'A nova base de dados foi corretamente declarada sob o nome de servidor @connect@.', |
|
| 505 | + 'install_echec_annonce' => 'A instalação irá, provavelmente, falhar, ou levar a um site que não funciona...', |
|
| 506 | + 'install_extension_mbstring' => 'O SPIP não funciona com:', |
|
| 507 | + 'install_extension_php_obligatoire' => 'O SPIP exige a extensão php:', |
|
| 508 | + 'install_login_base_hebergeur' => 'Login de conexão atribuído pelo serviço de hospedagem:', |
|
| 509 | + 'install_nom_base_hebergeur' => 'Nome da base atribuído pelo serviço de hospedagem:', |
|
| 510 | + 'install_pas_table' => 'Base atualmente sem tabelas', |
|
| 511 | + 'install_pass_base_hebergeur' => 'Senha de conexão atribuída pelo serviço de hospedagem', |
|
| 512 | + 'install_php_version' => 'PHP versão @version@ é insuficiente (mínimo = @minimum@)', |
|
| 513 | + 'install_select_langue' => 'Escolha um idioma e clique no botão «avançar» para iniciar o procedimento de instalação.', |
|
| 514 | + 'install_select_type_db' => 'Indicar o tipo de base de dados:', |
|
| 515 | + 'install_select_type_mysql' => 'MySQL', |
|
| 516 | + 'install_select_type_pg' => 'PostgreSQL', |
|
| 517 | + 'install_select_type_sqlite2' => 'SQLite 2', |
|
| 518 | + 'install_select_type_sqlite3' => 'SQLite 3', |
|
| 519 | + 'install_serveur_hebergeur' => 'Servidor de base de dados atribuído pelo serviço de hospedagem', |
|
| 520 | + 'install_table_prefix_hebergeur' => 'Prefixo de tabela atribuído pelo serviço de hospedagem:', |
|
| 521 | + 'install_tables_base' => 'Tabelas da base', |
|
| 522 | + 'install_types_db_connus' => 'SPIP pode usar <b>MySQL</b> (a mais comum), e <b>SQLite</b>.', |
|
| 523 | + 'install_types_db_connus_avertissement' => 'O suporte ao <b>PostgreSQL</b> é também proposto a título experimental', |
|
| 524 | + 'instituer_erreur_statut_a_change' => 'O status já foi alterado', |
|
| 525 | + 'instituer_erreur_statut_non_autorise' => 'Você não pode escolher este status', |
|
| 526 | + 'intem_redacteur' => 'redator', |
|
| 527 | + 'intitule_licence' => 'Licença', |
|
| 528 | + 'item_accepter_inscriptions' => 'Aceitar as inscrições', |
|
| 529 | + 'item_activer_messages_avertissement' => 'Ativar as mensagens de aviso', |
|
| 530 | + 'item_administrateur_2' => 'administrador', |
|
| 531 | + 'item_afficher_calendrier' => 'Exibir no calendário', |
|
| 532 | + 'item_autoriser_syndication_integrale' => 'Difundir a íntegra das matérias nos arquivos de sindicação', |
|
| 533 | + 'item_choix_administrateurs' => 'os administradores', |
|
| 534 | + 'item_choix_generation_miniature' => 'Gerar automaticamente as miniaturas das imagens.', |
|
| 535 | + 'item_choix_non_generation_miniature' => 'Não gerar as miniaturas das imagens.', |
|
| 536 | + 'item_choix_redacteurs' => 'os redatores', |
|
| 537 | + 'item_choix_visiteurs' => 'os visitantes do site público', |
|
| 538 | + 'item_creer_fichiers_authent' => 'Criar os arquivos .htpasswd', |
|
| 539 | + 'item_login' => 'Login', |
|
| 540 | + 'item_messagerie_agenda' => 'Ativar as mesagens internas e a agenda', |
|
| 541 | + 'item_mots_cles_association_articles' => 'às matérias', |
|
| 542 | + 'item_mots_cles_association_rubriques' => 'às seções', |
|
| 543 | + 'item_mots_cles_association_sites' => 'aos sites referenciados ou sindicados.', |
|
| 544 | + 'item_non' => 'Não', |
|
| 545 | + 'item_non_accepter_inscriptions' => 'Não aceitar inscrições', |
|
| 546 | + 'item_non_activer_messages_avertissement' => 'Sem mensagens de aviso', |
|
| 547 | + 'item_non_afficher_calendrier' => 'Não exibir no calendário', |
|
| 548 | + 'item_non_autoriser_syndication_integrale' => 'Difundir apenas um resumo', |
|
| 549 | + 'item_non_creer_fichiers_authent' => 'Não criar os arquivos', |
|
| 550 | + 'item_non_messagerie_agenda' => 'Desativar as mensagens internas e a agenda', |
|
| 551 | + 'item_non_publier_articles' => 'Não publicar as matérias antes da data de publicação fixada.', |
|
| 552 | + 'item_nouvel_auteur' => 'Novo autor', |
|
| 553 | + 'item_nouvelle_rubrique' => 'Nova seção', |
|
| 554 | + 'item_oui' => 'Sim', |
|
| 555 | + 'item_publier_articles' => 'Publicar as matérias seja qual for a sua data de publicação.', |
|
| 556 | + 'item_reponse_article' => 'Resposta à matéria', |
|
| 557 | + 'item_visiteur' => 'Visitante', |
|
| 558 | 558 | |
| 559 | - // J |
|
| 560 | - 'jour_non_connu_nc' => 'n.c.', |
|
| 559 | + // J |
|
| 560 | + 'jour_non_connu_nc' => 'n.c.', |
|
| 561 | 561 | |
| 562 | - // L |
|
| 563 | - 'label_bando_outils' => 'Barra de ferramentas', |
|
| 564 | - 'label_bando_outils_afficher' => 'Exibir as ferramentas', |
|
| 565 | - 'label_bando_outils_masquer' => 'Esconder as ferramentas', |
|
| 566 | - 'label_choix_langue' => 'Escolha o seu idioma', |
|
| 567 | - 'label_nom_fichier_connect' => 'Informe o nome usado por este servidor', |
|
| 568 | - 'label_slogan_site' => 'Slogan do site', |
|
| 569 | - 'label_taille_ecran' => 'Largura da tela', |
|
| 570 | - 'label_texte_et_icones_navigation' => 'Menu de navegação', |
|
| 571 | - 'label_texte_et_icones_page' => 'Exibição na página', |
|
| 572 | - 'ldap_correspondance' => 'herança do campo @champ@', |
|
| 573 | - 'ldap_correspondance_1' => 'Herança dos campos LDAP', |
|
| 574 | - 'ldap_correspondance_2' => 'Para cada um dos campos SPIP a seguir, indique o nome do campo LDAP correspondente. Deixe em branco para não preencher, separe por espaços ou vírgulas para tentar vários campos LDAP.', |
|
| 575 | - 'lien_ajouter_auteur' => 'Incluir este autor', |
|
| 576 | - 'lien_ajouter_une_rubrique' => 'Incluir esta seção', |
|
| 577 | - 'lien_email' => 'e-mail', |
|
| 578 | - 'lien_nom_site' => 'NOME DO SITE:', |
|
| 579 | - 'lien_rapide_contenu' => 'Ir para o conteúdo', |
|
| 580 | - 'lien_rapide_navigation' => 'Ir para a navegação', |
|
| 581 | - 'lien_rapide_recherche' => 'Ir para a busca', |
|
| 582 | - 'lien_retirer_auteur' => 'Retirar o autor', |
|
| 583 | - 'lien_retirer_rubrique' => 'Excluir a seção', |
|
| 584 | - 'lien_retirer_tous_auteurs' => 'Retirar todos os autores', |
|
| 585 | - 'lien_retirer_toutes_rubriques' => 'Retirar todas as seções', |
|
| 586 | - 'lien_site' => 'site', |
|
| 587 | - 'lien_tout_decocher' => 'Desmarcar tudo', |
|
| 588 | - 'lien_tout_deplier' => 'Expandir tudo', |
|
| 589 | - 'lien_tout_replier' => 'Retrair tudo', |
|
| 590 | - 'lien_tout_supprimer' => 'Excluir tudo', |
|
| 591 | - 'lien_trier_nom' => 'Ordenar pelo nome', |
|
| 592 | - 'lien_trier_nombre_articles' => 'Ordenar por número de matérias', |
|
| 593 | - 'lien_trier_statut' => 'Ordenar pelo status', |
|
| 594 | - 'lien_voir_en_ligne' => 'VER ONLINE:', |
|
| 595 | - 'logo_article' => 'Ícone da matéria', |
|
| 596 | - 'logo_auteur' => 'Ícone do autor', |
|
| 597 | - 'logo_rubrique' => 'Ícone da seção', |
|
| 598 | - 'logo_site' => 'Ícone deste site', |
|
| 599 | - 'logo_standard_rubrique' => 'Ícone padrão das seções', |
|
| 600 | - 'logo_survol' => 'Ícone para mouseOver', |
|
| 562 | + // L |
|
| 563 | + 'label_bando_outils' => 'Barra de ferramentas', |
|
| 564 | + 'label_bando_outils_afficher' => 'Exibir as ferramentas', |
|
| 565 | + 'label_bando_outils_masquer' => 'Esconder as ferramentas', |
|
| 566 | + 'label_choix_langue' => 'Escolha o seu idioma', |
|
| 567 | + 'label_nom_fichier_connect' => 'Informe o nome usado por este servidor', |
|
| 568 | + 'label_slogan_site' => 'Slogan do site', |
|
| 569 | + 'label_taille_ecran' => 'Largura da tela', |
|
| 570 | + 'label_texte_et_icones_navigation' => 'Menu de navegação', |
|
| 571 | + 'label_texte_et_icones_page' => 'Exibição na página', |
|
| 572 | + 'ldap_correspondance' => 'herança do campo @champ@', |
|
| 573 | + 'ldap_correspondance_1' => 'Herança dos campos LDAP', |
|
| 574 | + 'ldap_correspondance_2' => 'Para cada um dos campos SPIP a seguir, indique o nome do campo LDAP correspondente. Deixe em branco para não preencher, separe por espaços ou vírgulas para tentar vários campos LDAP.', |
|
| 575 | + 'lien_ajouter_auteur' => 'Incluir este autor', |
|
| 576 | + 'lien_ajouter_une_rubrique' => 'Incluir esta seção', |
|
| 577 | + 'lien_email' => 'e-mail', |
|
| 578 | + 'lien_nom_site' => 'NOME DO SITE:', |
|
| 579 | + 'lien_rapide_contenu' => 'Ir para o conteúdo', |
|
| 580 | + 'lien_rapide_navigation' => 'Ir para a navegação', |
|
| 581 | + 'lien_rapide_recherche' => 'Ir para a busca', |
|
| 582 | + 'lien_retirer_auteur' => 'Retirar o autor', |
|
| 583 | + 'lien_retirer_rubrique' => 'Excluir a seção', |
|
| 584 | + 'lien_retirer_tous_auteurs' => 'Retirar todos os autores', |
|
| 585 | + 'lien_retirer_toutes_rubriques' => 'Retirar todas as seções', |
|
| 586 | + 'lien_site' => 'site', |
|
| 587 | + 'lien_tout_decocher' => 'Desmarcar tudo', |
|
| 588 | + 'lien_tout_deplier' => 'Expandir tudo', |
|
| 589 | + 'lien_tout_replier' => 'Retrair tudo', |
|
| 590 | + 'lien_tout_supprimer' => 'Excluir tudo', |
|
| 591 | + 'lien_trier_nom' => 'Ordenar pelo nome', |
|
| 592 | + 'lien_trier_nombre_articles' => 'Ordenar por número de matérias', |
|
| 593 | + 'lien_trier_statut' => 'Ordenar pelo status', |
|
| 594 | + 'lien_voir_en_ligne' => 'VER ONLINE:', |
|
| 595 | + 'logo_article' => 'Ícone da matéria', |
|
| 596 | + 'logo_auteur' => 'Ícone do autor', |
|
| 597 | + 'logo_rubrique' => 'Ícone da seção', |
|
| 598 | + 'logo_site' => 'Ícone deste site', |
|
| 599 | + 'logo_standard_rubrique' => 'Ícone padrão das seções', |
|
| 600 | + 'logo_survol' => 'Ícone para mouseOver', |
|
| 601 | 601 | |
| 602 | - // M |
|
| 603 | - 'menu_aide_installation_choix_base' => 'Seleção da sua base', |
|
| 604 | - 'module_fichier_langue' => 'Arquivo de idioma', |
|
| 605 | - 'module_raccourci' => 'Atalho', |
|
| 606 | - 'module_texte_affiche' => 'Texto exibido', |
|
| 607 | - 'module_texte_explicatif' => 'Você pode inserir os atalhos a seguir nos templates do seu site público. Eles serão traduzidos automaticamente para os idiomas para os quais exista um arquivo de idioma.', |
|
| 608 | - 'module_texte_traduction' => 'O arquivo de idioma «@module@» está disponível em:', |
|
| 609 | - 'mois_non_connu' => 'desconhecido', |
|
| 602 | + // M |
|
| 603 | + 'menu_aide_installation_choix_base' => 'Seleção da sua base', |
|
| 604 | + 'module_fichier_langue' => 'Arquivo de idioma', |
|
| 605 | + 'module_raccourci' => 'Atalho', |
|
| 606 | + 'module_texte_affiche' => 'Texto exibido', |
|
| 607 | + 'module_texte_explicatif' => 'Você pode inserir os atalhos a seguir nos templates do seu site público. Eles serão traduzidos automaticamente para os idiomas para os quais exista um arquivo de idioma.', |
|
| 608 | + 'module_texte_traduction' => 'O arquivo de idioma «@module@» está disponível em:', |
|
| 609 | + 'mois_non_connu' => 'desconhecido', |
|
| 610 | 610 | |
| 611 | - // N |
|
| 612 | - 'nouvelle_version_spip' => 'A versão @version@ do SPIP está disponível', |
|
| 613 | - 'nouvelle_version_spip_majeure' => 'Uma nova versão SPIP @version@ está disponível', |
|
| 611 | + // N |
|
| 612 | + 'nouvelle_version_spip' => 'A versão @version@ do SPIP está disponível', |
|
| 613 | + 'nouvelle_version_spip_majeure' => 'Uma nova versão SPIP @version@ está disponível', |
|
| 614 | 614 | |
| 615 | - // O |
|
| 616 | - 'onglet_contenu' => 'Conteúdo', |
|
| 617 | - 'onglet_declarer_une_autre_base' => 'Configurar outra base', |
|
| 618 | - 'onglet_discuter' => 'Discutir', |
|
| 619 | - 'onglet_interactivite' => 'Interatividade', |
|
| 620 | - 'onglet_proprietes' => 'Propriedades', |
|
| 621 | - 'onglet_repartition_actuelle' => 'atualmente', |
|
| 622 | - 'onglet_sous_rubriques' => 'Subseções', |
|
| 615 | + // O |
|
| 616 | + 'onglet_contenu' => 'Conteúdo', |
|
| 617 | + 'onglet_declarer_une_autre_base' => 'Configurar outra base', |
|
| 618 | + 'onglet_discuter' => 'Discutir', |
|
| 619 | + 'onglet_interactivite' => 'Interatividade', |
|
| 620 | + 'onglet_proprietes' => 'Propriedades', |
|
| 621 | + 'onglet_repartition_actuelle' => 'atualmente', |
|
| 622 | + 'onglet_sous_rubriques' => 'Subseções', |
|
| 623 | 623 | |
| 624 | - // P |
|
| 625 | - 'page_pas_proxy' => 'Esta página não deve passar pelo proxy', |
|
| 626 | - 'pas_de_proxy_pour' => 'Se necessário, indique as máquinas ou domínios para os quais este proxy não se aplica (por exemplo: @exemple@)', |
|
| 627 | - 'phpinfo' => 'Configuração PHP', |
|
| 628 | - 'plugin_charge_paquet' => 'Carregamento do pacote @name@', |
|
| 629 | - 'plugin_charger' => 'Transferir', |
|
| 630 | - 'plugin_erreur_charger' => 'erro: não foi possível carregar @zip@', |
|
| 631 | - 'plugin_erreur_droit1' => 'O diretório <code>@dest@</code> não está acessível para escrita.', |
|
| 632 | - 'plugin_erreur_droit2' => 'Por favor, verifique os direitos deste diretório (e criá-lo, caso não exista), ou instalar os arquivos por FTP.', |
|
| 633 | - 'plugin_erreur_zip' => 'falha pclzip: erro @status@', |
|
| 634 | - 'plugin_etat_developpement' => 'em desenvolvimento', |
|
| 635 | - 'plugin_etat_experimental' => 'experimental', |
|
| 636 | - 'plugin_etat_stable' => 'estável', |
|
| 637 | - 'plugin_etat_test' => 'em teste', |
|
| 638 | - 'plugin_impossible_activer' => 'Não foi possível ativar o plugin @plugin@', |
|
| 639 | - 'plugin_info_automatique1' => 'Se você deseja autorizar a instalaçào automática dos plugins, por favor:', |
|
| 640 | - 'plugin_info_automatique1_lib' => 'Se você deseja autorizar a instalação automática desta biblioteca, por favor:', |
|
| 641 | - 'plugin_info_automatique2' => 'crie um diretório <code>@rep@</code> ;', |
|
| 642 | - 'plugin_info_automatique3' => 'verifique se o servidor está autorizado a escrever neste diretório', |
|
| 643 | - 'plugin_info_automatique_creer' => 'a ser criado na raiz do site.', |
|
| 644 | - 'plugin_info_automatique_exemples' => 'exemplos:', |
|
| 645 | - 'plugin_info_automatique_ftp' => 'Você pode instalar os plugins, por FTP, no diretório <tt>@rep@</tt>', |
|
| 646 | - 'plugin_info_automatique_lib' => 'Alguns plugins precisam também poder transferir arquivos para o diretório <code>lib/</code>, a ser criado, caso não exista, na raiz do site.', |
|
| 647 | - 'plugin_info_automatique_liste' => 'Suas listas de plugins:', |
|
| 648 | - 'plugin_info_automatique_liste_officielle' => 'os plugins oficiais', |
|
| 649 | - 'plugin_info_automatique_liste_update' => 'Atualizar as listas', |
|
| 650 | - 'plugin_info_automatique_ou' => 'ou...', |
|
| 651 | - 'plugin_info_automatique_select' => 'Selecione abaixo um plugin: O SPIP o transferirá e o instalará no diretório <code>@rep@</code>; se o plugin já existir, será atualizado.', |
|
| 652 | - 'plugin_info_credit' => 'Créditos', |
|
| 653 | - 'plugin_info_erreur_xml' => 'A declaração deste plugin está incorreta', |
|
| 654 | - 'plugin_info_install_ok' => 'Instalação bem sucedida', |
|
| 655 | - 'plugin_info_necessite' => 'Requer:', |
|
| 656 | - 'plugin_info_non_compatible_spip' => 'Este plugin não é compatível com esta versão do SPIP', |
|
| 657 | - 'plugin_info_plugins_dist_1' => 'Os plugins abaixo são carregados e ativados no diretório @plugins_dist@.', |
|
| 658 | - 'plugin_info_plugins_dist_2' => 'Eles não são desativáveis.', |
|
| 659 | - 'plugin_info_telecharger' => 'transferir de @url@ e instalar em @rep@', |
|
| 660 | - 'plugin_info_upgrade_ok' => 'Atualização bem sucedida', |
|
| 661 | - 'plugin_librairies_installees' => 'Bibliotecas instaladas', |
|
| 662 | - 'plugin_necessite_extension_php' => 'Requer a extensão PHP @plugin@ na versão @version@.', |
|
| 663 | - 'plugin_necessite_extension_php_sans_version' => 'Requer a extensão PHP @plugin@', |
|
| 664 | - 'plugin_necessite_lib' => 'Este plugin precisa da biblioteca @lib@', |
|
| 665 | - 'plugin_necessite_php' => 'Requer @plugin@ na versão @version@.', |
|
| 666 | - 'plugin_necessite_plugin' => 'Precisa do plugin @plugin@, na versão @version@.', |
|
| 667 | - 'plugin_necessite_plugin_sans_version' => 'Precisa do plugin @plugin@', |
|
| 668 | - 'plugin_necessite_spip' => 'É necessário o SPIP na versão @version@, pelo menos.', |
|
| 669 | - 'plugin_source' => 'fonte: ', |
|
| 670 | - 'plugin_titre_automatique' => 'Instalação automática', |
|
| 671 | - 'plugin_titre_automatique_ajouter' => 'Incluir plugins', |
|
| 672 | - 'plugin_titre_installation' => 'Instalação do plugin @plugin@', |
|
| 673 | - 'plugin_titre_modifier' => 'Meus plugins', |
|
| 674 | - 'plugin_utilise_extension_php' => 'A extensão PHP @plugin@ deve estar na versão @version@.', |
|
| 675 | - 'plugin_utilise_php' => '@plugin@ deve estar na versão @version@.', |
|
| 676 | - 'plugin_utilise_plugin' => 'O plugin @plugin@ deve estar na versão @version@.', |
|
| 677 | - 'plugin_zip_active' => 'Continue para o ativar', |
|
| 678 | - 'plugin_zip_adresse' => 'Indique abaixo o endereço de um arquivo zip de plugin a ser transferido, ou ainda o endereço de uma lista de plugins.', |
|
| 679 | - 'plugin_zip_adresse_champ' => 'Endereço do plugin ou da lista', |
|
| 680 | - 'plugin_zip_content' => 'Ele contém os arquivos a seguir (@taille@),<br />prontos para serem instalados no diretório <code>@rep@</code>', |
|
| 681 | - 'plugin_zip_installe_finie' => 'O arquivo @zip@ foi descompactado e instalado.', |
|
| 682 | - 'plugin_zip_installe_rep_finie' => 'O arquivo @zip@ foi descompactado e instalado no diretório @rep@', |
|
| 683 | - 'plugin_zip_installer' => 'Você pode, agora, instalá-lo.', |
|
| 684 | - 'plugin_zip_telecharge' => 'O arquivo @zip@ foi transferido', |
|
| 685 | - 'plugins_actif_aucun' => 'Nenhum plugin ativado.', |
|
| 686 | - 'plugins_actif_un' => 'Um plugin ativado.', |
|
| 687 | - 'plugins_actifs' => '@count@ plugins ativados.', |
|
| 688 | - 'plugins_actifs_liste' => 'Ativos', |
|
| 689 | - 'plugins_compte' => '@count@ plugins', |
|
| 690 | - 'plugins_disponible_un' => 'Um plugin disponível.', |
|
| 691 | - 'plugins_disponibles' => '@count@ plugins disponiveis.', |
|
| 692 | - 'plugins_erreur' => 'Erro nos plugins: @plugins@', |
|
| 693 | - 'plugins_liste' => 'Lista dos plugins', |
|
| 694 | - 'plugins_liste_dist' => 'Plugins bloqueados', |
|
| 695 | - 'plugins_recents' => 'Plugins recentes.', |
|
| 696 | - 'plugins_tous_liste' => 'Todos', |
|
| 697 | - 'plugins_vue_hierarchie' => 'Hierarquia', |
|
| 698 | - 'plugins_vue_liste' => 'Lista', |
|
| 699 | - 'protocole_ldap' => 'Versão do protocolo:', |
|
| 624 | + // P |
|
| 625 | + 'page_pas_proxy' => 'Esta página não deve passar pelo proxy', |
|
| 626 | + 'pas_de_proxy_pour' => 'Se necessário, indique as máquinas ou domínios para os quais este proxy não se aplica (por exemplo: @exemple@)', |
|
| 627 | + 'phpinfo' => 'Configuração PHP', |
|
| 628 | + 'plugin_charge_paquet' => 'Carregamento do pacote @name@', |
|
| 629 | + 'plugin_charger' => 'Transferir', |
|
| 630 | + 'plugin_erreur_charger' => 'erro: não foi possível carregar @zip@', |
|
| 631 | + 'plugin_erreur_droit1' => 'O diretório <code>@dest@</code> não está acessível para escrita.', |
|
| 632 | + 'plugin_erreur_droit2' => 'Por favor, verifique os direitos deste diretório (e criá-lo, caso não exista), ou instalar os arquivos por FTP.', |
|
| 633 | + 'plugin_erreur_zip' => 'falha pclzip: erro @status@', |
|
| 634 | + 'plugin_etat_developpement' => 'em desenvolvimento', |
|
| 635 | + 'plugin_etat_experimental' => 'experimental', |
|
| 636 | + 'plugin_etat_stable' => 'estável', |
|
| 637 | + 'plugin_etat_test' => 'em teste', |
|
| 638 | + 'plugin_impossible_activer' => 'Não foi possível ativar o plugin @plugin@', |
|
| 639 | + 'plugin_info_automatique1' => 'Se você deseja autorizar a instalaçào automática dos plugins, por favor:', |
|
| 640 | + 'plugin_info_automatique1_lib' => 'Se você deseja autorizar a instalação automática desta biblioteca, por favor:', |
|
| 641 | + 'plugin_info_automatique2' => 'crie um diretório <code>@rep@</code> ;', |
|
| 642 | + 'plugin_info_automatique3' => 'verifique se o servidor está autorizado a escrever neste diretório', |
|
| 643 | + 'plugin_info_automatique_creer' => 'a ser criado na raiz do site.', |
|
| 644 | + 'plugin_info_automatique_exemples' => 'exemplos:', |
|
| 645 | + 'plugin_info_automatique_ftp' => 'Você pode instalar os plugins, por FTP, no diretório <tt>@rep@</tt>', |
|
| 646 | + 'plugin_info_automatique_lib' => 'Alguns plugins precisam também poder transferir arquivos para o diretório <code>lib/</code>, a ser criado, caso não exista, na raiz do site.', |
|
| 647 | + 'plugin_info_automatique_liste' => 'Suas listas de plugins:', |
|
| 648 | + 'plugin_info_automatique_liste_officielle' => 'os plugins oficiais', |
|
| 649 | + 'plugin_info_automatique_liste_update' => 'Atualizar as listas', |
|
| 650 | + 'plugin_info_automatique_ou' => 'ou...', |
|
| 651 | + 'plugin_info_automatique_select' => 'Selecione abaixo um plugin: O SPIP o transferirá e o instalará no diretório <code>@rep@</code>; se o plugin já existir, será atualizado.', |
|
| 652 | + 'plugin_info_credit' => 'Créditos', |
|
| 653 | + 'plugin_info_erreur_xml' => 'A declaração deste plugin está incorreta', |
|
| 654 | + 'plugin_info_install_ok' => 'Instalação bem sucedida', |
|
| 655 | + 'plugin_info_necessite' => 'Requer:', |
|
| 656 | + 'plugin_info_non_compatible_spip' => 'Este plugin não é compatível com esta versão do SPIP', |
|
| 657 | + 'plugin_info_plugins_dist_1' => 'Os plugins abaixo são carregados e ativados no diretório @plugins_dist@.', |
|
| 658 | + 'plugin_info_plugins_dist_2' => 'Eles não são desativáveis.', |
|
| 659 | + 'plugin_info_telecharger' => 'transferir de @url@ e instalar em @rep@', |
|
| 660 | + 'plugin_info_upgrade_ok' => 'Atualização bem sucedida', |
|
| 661 | + 'plugin_librairies_installees' => 'Bibliotecas instaladas', |
|
| 662 | + 'plugin_necessite_extension_php' => 'Requer a extensão PHP @plugin@ na versão @version@.', |
|
| 663 | + 'plugin_necessite_extension_php_sans_version' => 'Requer a extensão PHP @plugin@', |
|
| 664 | + 'plugin_necessite_lib' => 'Este plugin precisa da biblioteca @lib@', |
|
| 665 | + 'plugin_necessite_php' => 'Requer @plugin@ na versão @version@.', |
|
| 666 | + 'plugin_necessite_plugin' => 'Precisa do plugin @plugin@, na versão @version@.', |
|
| 667 | + 'plugin_necessite_plugin_sans_version' => 'Precisa do plugin @plugin@', |
|
| 668 | + 'plugin_necessite_spip' => 'É necessário o SPIP na versão @version@, pelo menos.', |
|
| 669 | + 'plugin_source' => 'fonte: ', |
|
| 670 | + 'plugin_titre_automatique' => 'Instalação automática', |
|
| 671 | + 'plugin_titre_automatique_ajouter' => 'Incluir plugins', |
|
| 672 | + 'plugin_titre_installation' => 'Instalação do plugin @plugin@', |
|
| 673 | + 'plugin_titre_modifier' => 'Meus plugins', |
|
| 674 | + 'plugin_utilise_extension_php' => 'A extensão PHP @plugin@ deve estar na versão @version@.', |
|
| 675 | + 'plugin_utilise_php' => '@plugin@ deve estar na versão @version@.', |
|
| 676 | + 'plugin_utilise_plugin' => 'O plugin @plugin@ deve estar na versão @version@.', |
|
| 677 | + 'plugin_zip_active' => 'Continue para o ativar', |
|
| 678 | + 'plugin_zip_adresse' => 'Indique abaixo o endereço de um arquivo zip de plugin a ser transferido, ou ainda o endereço de uma lista de plugins.', |
|
| 679 | + 'plugin_zip_adresse_champ' => 'Endereço do plugin ou da lista', |
|
| 680 | + 'plugin_zip_content' => 'Ele contém os arquivos a seguir (@taille@),<br />prontos para serem instalados no diretório <code>@rep@</code>', |
|
| 681 | + 'plugin_zip_installe_finie' => 'O arquivo @zip@ foi descompactado e instalado.', |
|
| 682 | + 'plugin_zip_installe_rep_finie' => 'O arquivo @zip@ foi descompactado e instalado no diretório @rep@', |
|
| 683 | + 'plugin_zip_installer' => 'Você pode, agora, instalá-lo.', |
|
| 684 | + 'plugin_zip_telecharge' => 'O arquivo @zip@ foi transferido', |
|
| 685 | + 'plugins_actif_aucun' => 'Nenhum plugin ativado.', |
|
| 686 | + 'plugins_actif_un' => 'Um plugin ativado.', |
|
| 687 | + 'plugins_actifs' => '@count@ plugins ativados.', |
|
| 688 | + 'plugins_actifs_liste' => 'Ativos', |
|
| 689 | + 'plugins_compte' => '@count@ plugins', |
|
| 690 | + 'plugins_disponible_un' => 'Um plugin disponível.', |
|
| 691 | + 'plugins_disponibles' => '@count@ plugins disponiveis.', |
|
| 692 | + 'plugins_erreur' => 'Erro nos plugins: @plugins@', |
|
| 693 | + 'plugins_liste' => 'Lista dos plugins', |
|
| 694 | + 'plugins_liste_dist' => 'Plugins bloqueados', |
|
| 695 | + 'plugins_recents' => 'Plugins recentes.', |
|
| 696 | + 'plugins_tous_liste' => 'Todos', |
|
| 697 | + 'plugins_vue_hierarchie' => 'Hierarquia', |
|
| 698 | + 'plugins_vue_liste' => 'Lista', |
|
| 699 | + 'protocole_ldap' => 'Versão do protocolo:', |
|
| 700 | 700 | |
| 701 | - // Q |
|
| 702 | - 'queue_executer_maintenant' => 'Executar agora', |
|
| 703 | - 'queue_info_purger' => 'Você pode excluir todas as tarefas de fundo em espera e reinicializar a lista com as tarefas periódicas', |
|
| 704 | - 'queue_nb_jobs_in_queue' => '@nb@ tarefas em espera', |
|
| 705 | - 'queue_next_job_in_nb_sec' => 'Próxima tarefa em @nb@ s', |
|
| 706 | - 'queue_no_job_in_queue' => 'Nenhum tarefa em espera', |
|
| 707 | - 'queue_one_job_in_queue' => '1 tarefa em espera', |
|
| 708 | - 'queue_priorite_tache' => 'prioridade', |
|
| 709 | - 'queue_purger_queue' => 'Reiniciar a lista de tarefas', |
|
| 710 | - 'queue_titre' => 'Tarefas de fundo', |
|
| 701 | + // Q |
|
| 702 | + 'queue_executer_maintenant' => 'Executar agora', |
|
| 703 | + 'queue_info_purger' => 'Você pode excluir todas as tarefas de fundo em espera e reinicializar a lista com as tarefas periódicas', |
|
| 704 | + 'queue_nb_jobs_in_queue' => '@nb@ tarefas em espera', |
|
| 705 | + 'queue_next_job_in_nb_sec' => 'Próxima tarefa em @nb@ s', |
|
| 706 | + 'queue_no_job_in_queue' => 'Nenhum tarefa em espera', |
|
| 707 | + 'queue_one_job_in_queue' => '1 tarefa em espera', |
|
| 708 | + 'queue_priorite_tache' => 'prioridade', |
|
| 709 | + 'queue_purger_queue' => 'Reiniciar a lista de tarefas', |
|
| 710 | + 'queue_titre' => 'Tarefas de fundo', |
|
| 711 | 711 | |
| 712 | - // R |
|
| 713 | - 'repertoire_plugins' => 'Diretório:', |
|
| 714 | - 'required' => '(obrigatório)', |
|
| 712 | + // R |
|
| 713 | + 'repertoire_plugins' => 'Diretório:', |
|
| 714 | + 'required' => '(obrigatório)', |
|
| 715 | 715 | |
| 716 | - // S |
|
| 717 | - 'sans_heure' => 'sem hora', |
|
| 718 | - 'statut_admin_restreint' => '(admin limitado)', |
|
| 719 | - 'statut_webmestre' => 'webmaster', |
|
| 716 | + // S |
|
| 717 | + 'sans_heure' => 'sem hora', |
|
| 718 | + 'statut_admin_restreint' => '(admin limitado)', |
|
| 719 | + 'statut_webmestre' => 'webmaster', |
|
| 720 | 720 | |
| 721 | - // T |
|
| 722 | - 'tache_cron_asap' => 'Tarefa CRON @function@ (ASAP)', |
|
| 723 | - 'tache_cron_secondes' => 'Tarefa CRON @function@ (a cada @nb@ s)', |
|
| 724 | - 'taille_cache_image' => 'As imagens calculadas automaticamente pelo SPIP (ícones de documentos, títulos apresentados sob a forma gráfica, funções matemáticas em formato TeX...) ocupam, no diretório @dir@, um total de @taille@.', |
|
| 725 | - 'taille_cache_infinie' => 'Este site não prevê limitação de tamanho do diretório do cache.', |
|
| 726 | - 'taille_cache_maxi' => 'O SPIP tenta limitar o tamanho do diretório do cache deste site em cerca de <b>@octets@</b>.', |
|
| 727 | - 'taille_cache_moins_de' => 'O tamanho do cache é menor do que @octets@.', |
|
| 728 | - 'taille_cache_octets' => 'O tamanho atual do cache é de cerca de @octets@.', |
|
| 729 | - 'taille_cache_vide' => 'O cache está vazio.', |
|
| 730 | - 'taille_repertoire_cache' => 'Tamanho do diretório cache', |
|
| 731 | - 'text_article_propose_publication' => 'Matéria proposta para publicação.', |
|
| 732 | - 'texte_acces_ldap_anonyme_1' => 'Alguns servidores LDAP não aceitam nenhum acesso anônimo. Neste caso, é necessário especificar um identificador de acesso inicial de modo a poder, em seguida, pesquisar as informações no diretório. Na maior parte dos casos, entretanto, os campos a seguir poderão ser deixados em branco.', |
|
| 733 | - 'texte_admin_effacer_01' => 'Este comando apaga <i>todo</i> o conteúdo da base de dados,incluindo <i>todos</i> os acessos dos redatores e administradores. Após executá-lo, você deverá reinstalar o SPIP para recriar uma nova base de dados bem como um acesso inicial de administrador.', |
|
| 734 | - 'texte_adresse_annuaire_1' => '(Se o seu diretório está instalado na mesma máquina que este website, trata-se provavelmente de «localhost».)', |
|
| 735 | - 'texte_ajout_auteur' => 'O autor a seguir foi incluído na matéria:', |
|
| 736 | - 'texte_annuaire_ldap_1' => 'Se você tem acesso a um diretório LDAP, você poderá utilizá-lo para importar automaticamente os usuários para o SPIP.', |
|
| 737 | - 'texte_article_statut' => 'Esta matéria está:', |
|
| 738 | - 'texte_article_virtuel' => 'Matéria virtual', |
|
| 739 | - 'texte_article_virtuel_reference' => '<b>Matéria virtual:</b> matéria referenciada no seu site SPIP, mas redirecionada para um outro URL. Para cancelar o redirecionamento, apague o URL abaixo.', |
|
| 740 | - 'texte_aucun_resultat_auteur' => 'Nenhum resultado para "@cherche_auteur@"', |
|
| 741 | - 'texte_auteur_messagerie' => 'Este site pode monitorar permanentemente a lista de editores conectados, permitindo-lhe trocar mensagens em tempo real. Você pode decidir não aparecer nessa lista (ficando "invisível" para os outros usuários).', |
|
| 742 | - 'texte_auteurs' => 'OS AUTORES', |
|
| 743 | - 'texte_choix_base_1' => 'Escolha a sua base:', |
|
| 744 | - 'texte_choix_base_2' => 'O servidor SQL contém várias bases de dados.', |
|
| 745 | - 'texte_choix_base_3' => '<b>Escolha</b> abaixo a que lhe foi atribuída pelo seu serviço de hospedagem:', |
|
| 746 | - 'texte_choix_table_prefix' => 'Prefixo das tabelas:', |
|
| 747 | - 'texte_compte_element' => '@count@ elemento', |
|
| 748 | - 'texte_compte_elements' => '@count@ elementos', |
|
| 749 | - 'texte_conflit_edition_correction' => 'Por favor, controle abaixo as diferenças entre as duas versões do texto; você pode também copiar as suas modificações e depois recomeçar.', |
|
| 750 | - 'texte_connexion_mysql' => 'Consulte as informações fornecidas pelo seu serviço de hospedagem: nelas, você deverá encontrar o servidor de base de dados fornecido e os seus dados de conexão ao servidor SQL.', |
|
| 751 | - 'texte_contenu_article' => '(Conteúdo da matéria em poucas palavras.)', |
|
| 752 | - 'texte_contenu_articles' => 'De acordo com o layout adotado pelo seu site, você poderá decidir se certos elementos das matérias serão utilizados. Use a listagem abaixo para indicar quais elementos estão disponíveis.', |
|
| 753 | - 'texte_crash_base' => 'Se a sua base de dados se corrompeu, você poderá tentar uma reparação automática.', |
|
| 754 | - 'texte_creer_rubrique' => 'Antes de poder escrever matérias, você precisa criar uma seção.', |
|
| 755 | - 'texte_date_creation_article' => 'DATA DE CRIAÇÃO DA MATÉRIA:', |
|
| 756 | - 'texte_date_creation_objet' => 'Data de criação:', # on ajoute le ":" |
|
| 757 | - 'texte_date_publication_anterieure' => 'Data de redação anterior:', |
|
| 758 | - 'texte_date_publication_anterieure_nonaffichee' => 'Não exibir a data de redação anterior.', |
|
| 759 | - 'texte_date_publication_article' => 'DATA DE PUBLICAÇÃO ONLINE:', |
|
| 760 | - 'texte_date_publication_objet' => 'Data de publicação online:', |
|
| 761 | - 'texte_definir_comme_traduction_rubrique' => 'Esta seção é uma tradução da seção número:', |
|
| 762 | - 'texte_descriptif_rapide' => 'Descrição rápida', |
|
| 763 | - 'texte_effacer_base' => 'Apagar a base de dados do SPIP', |
|
| 764 | - 'texte_effacer_statistiques' => 'Apagar as estatísticas', |
|
| 765 | - 'texte_en_cours_validation' => 'Os conteúdos abaixo estão propostos para publicação.', |
|
| 766 | - 'texte_enrichir_mise_a_jour' => 'Você pode enriquecer a diagramação do seu texto usando «atalhos tipográficos».', |
|
| 767 | - 'texte_fichier_authent' => '<b>O SPIP pode criar os arquivos especiais <tt>.htpasswd</tt> e <tt>.htpasswd-admin</tt> no diretório @dossier@?</b><p> |
|
| 721 | + // T |
|
| 722 | + 'tache_cron_asap' => 'Tarefa CRON @function@ (ASAP)', |
|
| 723 | + 'tache_cron_secondes' => 'Tarefa CRON @function@ (a cada @nb@ s)', |
|
| 724 | + 'taille_cache_image' => 'As imagens calculadas automaticamente pelo SPIP (ícones de documentos, títulos apresentados sob a forma gráfica, funções matemáticas em formato TeX...) ocupam, no diretório @dir@, um total de @taille@.', |
|
| 725 | + 'taille_cache_infinie' => 'Este site não prevê limitação de tamanho do diretório do cache.', |
|
| 726 | + 'taille_cache_maxi' => 'O SPIP tenta limitar o tamanho do diretório do cache deste site em cerca de <b>@octets@</b>.', |
|
| 727 | + 'taille_cache_moins_de' => 'O tamanho do cache é menor do que @octets@.', |
|
| 728 | + 'taille_cache_octets' => 'O tamanho atual do cache é de cerca de @octets@.', |
|
| 729 | + 'taille_cache_vide' => 'O cache está vazio.', |
|
| 730 | + 'taille_repertoire_cache' => 'Tamanho do diretório cache', |
|
| 731 | + 'text_article_propose_publication' => 'Matéria proposta para publicação.', |
|
| 732 | + 'texte_acces_ldap_anonyme_1' => 'Alguns servidores LDAP não aceitam nenhum acesso anônimo. Neste caso, é necessário especificar um identificador de acesso inicial de modo a poder, em seguida, pesquisar as informações no diretório. Na maior parte dos casos, entretanto, os campos a seguir poderão ser deixados em branco.', |
|
| 733 | + 'texte_admin_effacer_01' => 'Este comando apaga <i>todo</i> o conteúdo da base de dados,incluindo <i>todos</i> os acessos dos redatores e administradores. Após executá-lo, você deverá reinstalar o SPIP para recriar uma nova base de dados bem como um acesso inicial de administrador.', |
|
| 734 | + 'texte_adresse_annuaire_1' => '(Se o seu diretório está instalado na mesma máquina que este website, trata-se provavelmente de «localhost».)', |
|
| 735 | + 'texte_ajout_auteur' => 'O autor a seguir foi incluído na matéria:', |
|
| 736 | + 'texte_annuaire_ldap_1' => 'Se você tem acesso a um diretório LDAP, você poderá utilizá-lo para importar automaticamente os usuários para o SPIP.', |
|
| 737 | + 'texte_article_statut' => 'Esta matéria está:', |
|
| 738 | + 'texte_article_virtuel' => 'Matéria virtual', |
|
| 739 | + 'texte_article_virtuel_reference' => '<b>Matéria virtual:</b> matéria referenciada no seu site SPIP, mas redirecionada para um outro URL. Para cancelar o redirecionamento, apague o URL abaixo.', |
|
| 740 | + 'texte_aucun_resultat_auteur' => 'Nenhum resultado para "@cherche_auteur@"', |
|
| 741 | + 'texte_auteur_messagerie' => 'Este site pode monitorar permanentemente a lista de editores conectados, permitindo-lhe trocar mensagens em tempo real. Você pode decidir não aparecer nessa lista (ficando "invisível" para os outros usuários).', |
|
| 742 | + 'texte_auteurs' => 'OS AUTORES', |
|
| 743 | + 'texte_choix_base_1' => 'Escolha a sua base:', |
|
| 744 | + 'texte_choix_base_2' => 'O servidor SQL contém várias bases de dados.', |
|
| 745 | + 'texte_choix_base_3' => '<b>Escolha</b> abaixo a que lhe foi atribuída pelo seu serviço de hospedagem:', |
|
| 746 | + 'texte_choix_table_prefix' => 'Prefixo das tabelas:', |
|
| 747 | + 'texte_compte_element' => '@count@ elemento', |
|
| 748 | + 'texte_compte_elements' => '@count@ elementos', |
|
| 749 | + 'texte_conflit_edition_correction' => 'Por favor, controle abaixo as diferenças entre as duas versões do texto; você pode também copiar as suas modificações e depois recomeçar.', |
|
| 750 | + 'texte_connexion_mysql' => 'Consulte as informações fornecidas pelo seu serviço de hospedagem: nelas, você deverá encontrar o servidor de base de dados fornecido e os seus dados de conexão ao servidor SQL.', |
|
| 751 | + 'texte_contenu_article' => '(Conteúdo da matéria em poucas palavras.)', |
|
| 752 | + 'texte_contenu_articles' => 'De acordo com o layout adotado pelo seu site, você poderá decidir se certos elementos das matérias serão utilizados. Use a listagem abaixo para indicar quais elementos estão disponíveis.', |
|
| 753 | + 'texte_crash_base' => 'Se a sua base de dados se corrompeu, você poderá tentar uma reparação automática.', |
|
| 754 | + 'texte_creer_rubrique' => 'Antes de poder escrever matérias, você precisa criar uma seção.', |
|
| 755 | + 'texte_date_creation_article' => 'DATA DE CRIAÇÃO DA MATÉRIA:', |
|
| 756 | + 'texte_date_creation_objet' => 'Data de criação:', # on ajoute le ":" |
|
| 757 | + 'texte_date_publication_anterieure' => 'Data de redação anterior:', |
|
| 758 | + 'texte_date_publication_anterieure_nonaffichee' => 'Não exibir a data de redação anterior.', |
|
| 759 | + 'texte_date_publication_article' => 'DATA DE PUBLICAÇÃO ONLINE:', |
|
| 760 | + 'texte_date_publication_objet' => 'Data de publicação online:', |
|
| 761 | + 'texte_definir_comme_traduction_rubrique' => 'Esta seção é uma tradução da seção número:', |
|
| 762 | + 'texte_descriptif_rapide' => 'Descrição rápida', |
|
| 763 | + 'texte_effacer_base' => 'Apagar a base de dados do SPIP', |
|
| 764 | + 'texte_effacer_statistiques' => 'Apagar as estatísticas', |
|
| 765 | + 'texte_en_cours_validation' => 'Os conteúdos abaixo estão propostos para publicação.', |
|
| 766 | + 'texte_enrichir_mise_a_jour' => 'Você pode enriquecer a diagramação do seu texto usando «atalhos tipográficos».', |
|
| 767 | + 'texte_fichier_authent' => '<b>O SPIP pode criar os arquivos especiais <tt>.htpasswd</tt> e <tt>.htpasswd-admin</tt> no diretório @dossier@?</b><p> |
|
| 768 | 768 | Estes arquivos podem servir para restringir o acesso aos autores e administradores em outras áreas do seu site (programas externos de estatísticas, por exemplo).</p><p> |
| 769 | 769 | Se eles não forem úteis, você poderá deixar esta opção com o seu valor padrão (sem criar os arquivos).</p>', |
| 770 | - 'texte_informations_personnelles_1' => 'O sistema vai criar agora um acesso personalizado ao site.', |
|
| 771 | - 'texte_informations_personnelles_2' => '(Nota: trata-se de uma reinstalação, se o seu acesso funciona corretamente, você pode', |
|
| 772 | - 'texte_introductif_article' => '(Texto introdutório da matéria.)', |
|
| 773 | - 'texte_jeu_caractere' => 'É aconselhável usar no seu site o alfabeto universal (<tt>utf-8</tt>): ele permite a exibição de textos em todos os idiomas, e não tem problemas de compatibilidade com os navegadores modernos.', |
|
| 774 | - 'texte_jeu_caractere_3' => 'O seu site está configurado atualmente com o conjunto de caracteres:', |
|
| 775 | - 'texte_jeu_caractere_4' => 'Se isso não corresponde à realidade dos seus dados (por ex., em seguimento a um restauro da base de dados), ou se <em>você lançou este site</em> e deseja utilizar um outro conjunto de caracteres, por favor, indique-o aqui:', |
|
| 776 | - 'texte_login_ldap_1' => '(Deixe em branco para acesso anônimo, ou informe o caminho completo, por exemplo «<tt>uid=dupont, ou=users, dc=mon-domaine, dc=com</tt>».)', |
|
| 777 | - 'texte_login_precaution' => 'Atenção! Este é o login com o qual você está conectado agora. Use este formulário com cautela...', |
|
| 778 | - 'texte_messagerie_agenda' => 'As mensagens internas permitem que os redatores se comuniquem entre si, diretamente da área privada do site. Elas estão associadas a uma agenda.', |
|
| 779 | - 'texte_mise_a_niveau_base_1' => 'Você acabou de atualizar os arquivos do SPIP. |
|
| 770 | + 'texte_informations_personnelles_1' => 'O sistema vai criar agora um acesso personalizado ao site.', |
|
| 771 | + 'texte_informations_personnelles_2' => '(Nota: trata-se de uma reinstalação, se o seu acesso funciona corretamente, você pode', |
|
| 772 | + 'texte_introductif_article' => '(Texto introdutório da matéria.)', |
|
| 773 | + 'texte_jeu_caractere' => 'É aconselhável usar no seu site o alfabeto universal (<tt>utf-8</tt>): ele permite a exibição de textos em todos os idiomas, e não tem problemas de compatibilidade com os navegadores modernos.', |
|
| 774 | + 'texte_jeu_caractere_3' => 'O seu site está configurado atualmente com o conjunto de caracteres:', |
|
| 775 | + 'texte_jeu_caractere_4' => 'Se isso não corresponde à realidade dos seus dados (por ex., em seguimento a um restauro da base de dados), ou se <em>você lançou este site</em> e deseja utilizar um outro conjunto de caracteres, por favor, indique-o aqui:', |
|
| 776 | + 'texte_login_ldap_1' => '(Deixe em branco para acesso anônimo, ou informe o caminho completo, por exemplo «<tt>uid=dupont, ou=users, dc=mon-domaine, dc=com</tt>».)', |
|
| 777 | + 'texte_login_precaution' => 'Atenção! Este é o login com o qual você está conectado agora. Use este formulário com cautela...', |
|
| 778 | + 'texte_messagerie_agenda' => 'As mensagens internas permitem que os redatores se comuniquem entre si, diretamente da área privada do site. Elas estão associadas a uma agenda.', |
|
| 779 | + 'texte_mise_a_niveau_base_1' => 'Você acabou de atualizar os arquivos do SPIP. |
|
| 780 | 780 | Agora é necessário atualizar a base de dados do site.', |
| 781 | - 'texte_modifier_article' => 'Editar a matéria:', |
|
| 782 | - 'texte_multilinguisme' => 'Se você deseja gerar objetos em diversos idiomas, com uma navegação complexa, você pode incluir um menu de seleção de idioma nesses objetos, de acordo com a estrutura do seu site.', |
|
| 783 | - 'texte_multilinguisme_trad' => 'Você pode, igualmente, ativar um sistema de gerenciamento de links entre as diferentes traduções em certos objetos.', |
|
| 784 | - 'texte_non_compresse' => '<i>não compactado</i> (seu servidor não suporta esta funcionalidade)', |
|
| 785 | - 'texte_nouvelle_version_spip_1' => 'Você instalou uma nova versão do SPIP.', |
|
| 786 | - 'texte_nouvelle_version_spip_2' => 'Esta nova versão precisa de uma atualização mais completa do que o normal. Se você é o webmaster do site, por favor, apague o arquivo @connect@ e retome a instalação de forma a incluir os seus parâmetros de conexão à base de dados.<p> (NB.: se você não se lembra dos seus parâmetros de conexão, consulte o arquivo @connect@ antes de apagá-lo...)</p>', |
|
| 787 | - 'texte_operation_echec' => 'Volte à página anterior, escolha uma outra base de dados ou crie uma nova. Verifique as informações fornecidas pelo seu serviço de hospedagem.', |
|
| 788 | - 'texte_plus_trois_car' => 'mais de 3 caracteres', |
|
| 789 | - 'texte_plusieurs_articles' => 'Demasiados autores encontrados para "@cherche_auteur@":', |
|
| 790 | - 'texte_port_annuaire' => '(O valor padrão indicado é geralmente conveniente.)', |
|
| 791 | - 'texte_presente_plugin' => 'Esta página lista os plugins disponíveis para o site. Você pode ativar os plugins necessários marcando a opção correspondente.', |
|
| 792 | - 'texte_proposer_publication' => 'Assim que a sua matéria estiver pronta, você pode propor a sua publicação.', |
|
| 793 | - 'texte_proxy' => 'Em alguns casos (intranet, redes protegidas...), os sites remotos (documentação do SPIP, sites sindicados etc.) só estarão acessíveis através de um <i>proxy HTTP</i>. Nesse caso, informe abaixo o endereço, no formato @[email protected], você pode deixar este campo vazio.', |
|
| 794 | - 'texte_publication_articles_post_dates' => 'Que comportamento o SPIP deve adotar face às matérias em que a data de publicação está pré-datada?', |
|
| 795 | - 'texte_rappel_selection_champs' => '[Não se esqueça de selecionar corretamente este campo.]', |
|
| 796 | - 'texte_recalcul_page' => 'Se você quiser recalcular uma única página, passe para a área pública e clique no botão «atualizar».', |
|
| 797 | - 'texte_recuperer_base' => 'Reparar a base de dados', |
|
| 798 | - 'texte_reference_mais_redirige' => 'matéria referenciada no seu site em SPIP, mas redirecionada para outro URL.', |
|
| 799 | - 'texte_requetes_echouent' => '<b>Já que certas solicitações SQL falharam sistematicamente e sem razão aparente, é possível que a causa esteja na base de dados em si.</b><p> |
|
| 781 | + 'texte_modifier_article' => 'Editar a matéria:', |
|
| 782 | + 'texte_multilinguisme' => 'Se você deseja gerar objetos em diversos idiomas, com uma navegação complexa, você pode incluir um menu de seleção de idioma nesses objetos, de acordo com a estrutura do seu site.', |
|
| 783 | + 'texte_multilinguisme_trad' => 'Você pode, igualmente, ativar um sistema de gerenciamento de links entre as diferentes traduções em certos objetos.', |
|
| 784 | + 'texte_non_compresse' => '<i>não compactado</i> (seu servidor não suporta esta funcionalidade)', |
|
| 785 | + 'texte_nouvelle_version_spip_1' => 'Você instalou uma nova versão do SPIP.', |
|
| 786 | + 'texte_nouvelle_version_spip_2' => 'Esta nova versão precisa de uma atualização mais completa do que o normal. Se você é o webmaster do site, por favor, apague o arquivo @connect@ e retome a instalação de forma a incluir os seus parâmetros de conexão à base de dados.<p> (NB.: se você não se lembra dos seus parâmetros de conexão, consulte o arquivo @connect@ antes de apagá-lo...)</p>', |
|
| 787 | + 'texte_operation_echec' => 'Volte à página anterior, escolha uma outra base de dados ou crie uma nova. Verifique as informações fornecidas pelo seu serviço de hospedagem.', |
|
| 788 | + 'texte_plus_trois_car' => 'mais de 3 caracteres', |
|
| 789 | + 'texte_plusieurs_articles' => 'Demasiados autores encontrados para "@cherche_auteur@":', |
|
| 790 | + 'texte_port_annuaire' => '(O valor padrão indicado é geralmente conveniente.)', |
|
| 791 | + 'texte_presente_plugin' => 'Esta página lista os plugins disponíveis para o site. Você pode ativar os plugins necessários marcando a opção correspondente.', |
|
| 792 | + 'texte_proposer_publication' => 'Assim que a sua matéria estiver pronta, você pode propor a sua publicação.', |
|
| 793 | + 'texte_proxy' => 'Em alguns casos (intranet, redes protegidas...), os sites remotos (documentação do SPIP, sites sindicados etc.) só estarão acessíveis através de um <i>proxy HTTP</i>. Nesse caso, informe abaixo o endereço, no formato @[email protected], você pode deixar este campo vazio.', |
|
| 794 | + 'texte_publication_articles_post_dates' => 'Que comportamento o SPIP deve adotar face às matérias em que a data de publicação está pré-datada?', |
|
| 795 | + 'texte_rappel_selection_champs' => '[Não se esqueça de selecionar corretamente este campo.]', |
|
| 796 | + 'texte_recalcul_page' => 'Se você quiser recalcular uma única página, passe para a área pública e clique no botão «atualizar».', |
|
| 797 | + 'texte_recuperer_base' => 'Reparar a base de dados', |
|
| 798 | + 'texte_reference_mais_redirige' => 'matéria referenciada no seu site em SPIP, mas redirecionada para outro URL.', |
|
| 799 | + 'texte_requetes_echouent' => '<b>Já que certas solicitações SQL falharam sistematicamente e sem razão aparente, é possível que a causa esteja na base de dados em si.</b><p> |
|
| 800 | 800 | O seu servidor SQL dispõe de uma funcionalidade de reparação das suas tabelas quando elas são danificadas por acidente. Você poderá tentar esta reparação; em caso de falha, conserve uma cópia da mensagem de erro, que poderá conter indícios do que não está funcionando...</p><p> |
| 801 | 801 | Se o problema persistir, contate o seu serviço de hospedagem.</p>', |
| 802 | - 'texte_selection_langue_principale' => 'Você pode escolher abaixo o «idioma principal» do site. esta escolha não o obriga - felizmente! - a escrever as suas matérias no idioma selecionado, mas permite determinar: |
|
| 802 | + 'texte_selection_langue_principale' => 'Você pode escolher abaixo o «idioma principal» do site. esta escolha não o obriga - felizmente! - a escrever as suas matérias no idioma selecionado, mas permite determinar: |
|
| 803 | 803 | <ul><li>o formato padrão das datas no site público;</li> |
| 804 | 804 | <li>a natureza do motor tipográfico que o SPIP deverá usar para a composição dos textos;</li> |
| 805 | 805 | <li>o idioma usado nos formulários do site público;</li> |
| 806 | 806 | <li>o idioma padrão exibido na área privada.</li></ul>', |
| 807 | - 'texte_sous_titre' => 'Subtítulo', |
|
| 808 | - 'texte_statistiques_visites' => '(barras escuras: domingo / curva escura: evolução da média)', |
|
| 809 | - 'texte_statut_attente_validation' => 'aguardando validação', |
|
| 810 | - 'texte_statut_publies' => 'publicadas online', |
|
| 811 | - 'texte_statut_refuses' => 'recusadas', |
|
| 812 | - 'texte_suppression_fichiers' => 'Use este comando para excluir todos os arquivos que constam do cache do SPIP. Isto permite, por exemplo, forçar a reconstrução de todas as páginas, caso você tenha feito alterações importantes no layout ou na estrutura do site.', |
|
| 813 | - 'texte_sur_titre' => 'Sobretítulo', |
|
| 814 | - 'texte_table_ok' => ': esta tabela está OK.', |
|
| 815 | - 'texte_tentative_recuperation' => 'Tentativa de reparação', |
|
| 816 | - 'texte_tenter_reparation' => 'Tentar uma reparação da base de dados', |
|
| 817 | - 'texte_test_proxy' => 'Para testar este proxy, informe aqui o endereço de um website que você deseje testar.', |
|
| 818 | - 'texte_titre_02' => 'Título:', |
|
| 819 | - 'texte_titre_obligatoire' => '<b>Título</b> [obrigatório]', |
|
| 820 | - 'texte_travail_article' => '@nom_auteur_modif@ trabalhou nesta matéria há @date_diff@ minutos', |
|
| 821 | - 'texte_travail_collaboratif' => 'Se é frequente acontecer de mais de um redator trabalhar em uma mesma matéria, o sistema pode exibir as matérias recentemente "abertas", de modo a evitar modificações concorrentes. Esta opção está desativada por padrão, para evitar a exibição de mensagens de aviso desnecessárias.', |
|
| 822 | - 'texte_vide' => 'vazia', |
|
| 823 | - 'texte_vider_cache' => 'Esvaziar o cache', |
|
| 824 | - 'titre_admin_tech' => 'Manutenção técnica', |
|
| 825 | - 'titre_admin_vider' => 'Manutenção técnica', |
|
| 826 | - 'titre_ajouter_un_auteur' => 'Incluir um autor', |
|
| 827 | - 'titre_ajouter_un_mot' => 'Incluir uma palavra-chave', |
|
| 828 | - 'titre_cadre_afficher_article' => 'Exibir as matérias', |
|
| 829 | - 'titre_cadre_afficher_traductions' => 'Exibir o status das traduções para os idiomas a seguir:', |
|
| 830 | - 'titre_cadre_ajouter_auteur' => 'INCLUIR UM AUTOR:', |
|
| 831 | - 'titre_cadre_interieur_rubrique' => 'Na seção', |
|
| 832 | - 'titre_cadre_numero_auteur' => 'AUTOR NÚMERO', |
|
| 833 | - 'titre_cadre_numero_objet' => '@objet@ NÚMERO:', |
|
| 834 | - 'titre_cadre_signature_obligatoire' => '<b>Assinatura</b> [obrigatório]<br />', |
|
| 835 | - 'titre_config_contenu_notifications' => 'Notificações', |
|
| 836 | - 'titre_config_contenu_prive' => 'Na área privada', |
|
| 837 | - 'titre_config_contenu_public' => 'No site público', |
|
| 838 | - 'titre_config_fonctions' => 'Configuração do site', |
|
| 839 | - 'titre_config_langage' => 'Configurar o idioma', |
|
| 840 | - 'titre_configuration' => 'Configuração do site', |
|
| 841 | - 'titre_configurer_preferences' => 'Configurar as suas preferências', |
|
| 842 | - 'titre_configurer_preferences_menus' => 'Configurar as suas preferências de menus', |
|
| 843 | - 'titre_conflit_edition' => 'Conflito durante a edição', |
|
| 844 | - 'titre_connexion_ldap' => 'Opções: <b>Sua conexão LDAP</b>', |
|
| 845 | - 'titre_groupe_mots' => 'GRUPO DE PALAVRAS-CHAVE:', |
|
| 846 | - 'titre_identite_site' => 'Identidade do site', |
|
| 847 | - 'titre_langue_article' => 'Idioma da matéria', |
|
| 848 | - 'titre_langue_rubrique' => 'Idioma da seção', |
|
| 849 | - 'titre_langue_trad_article' => 'IDIOMA E TRADUÇÕES DA MATÉRIA', |
|
| 850 | - 'titre_les_articles' => 'AS MATÉRIAS', |
|
| 851 | - 'titre_messagerie_agenda' => 'Mensagens internas e agenda', |
|
| 852 | - 'titre_naviguer_dans_le_site' => 'Navegar no site...', |
|
| 853 | - 'titre_nouvelle_rubrique' => 'Nova seção', |
|
| 854 | - 'titre_numero_rubrique' => 'SEÇÃO NÚMERO:', |
|
| 855 | - 'titre_page_articles_edit' => 'Editar: @titre@', |
|
| 856 | - 'titre_page_articles_page' => 'As matérias', |
|
| 857 | - 'titre_page_articles_tous' => 'Todo o site', |
|
| 858 | - 'titre_page_calendrier' => 'Calendário @nom_mois@ @annee@', |
|
| 859 | - 'titre_page_config_contenu' => 'Configuração do site', |
|
| 860 | - 'titre_page_delete_all' => 'supressão total e irreversível', |
|
| 861 | - 'titre_page_recherche' => 'Resultados da busca por @recherche@', |
|
| 862 | - 'titre_page_statistiques_referers' => 'Estatísticas (links de entrada)', |
|
| 863 | - 'titre_page_upgrade' => 'Atualização do SPIP', |
|
| 864 | - 'titre_preference_menus_favoris' => 'Menus favoritos', |
|
| 865 | - 'titre_publication_articles_post_dates' => 'Publicação de matérias pós-datadas', |
|
| 866 | - 'titre_reparation' => 'Reparação', |
|
| 867 | - 'titre_suivi_petition' => 'Acompanhamento das petições', |
|
| 868 | - 'tls_ldap' => 'Transport Layer Security:', |
|
| 869 | - 'trad_article_traduction' => 'Todas as versões desta matéria:', |
|
| 870 | - 'trad_delier' => 'Desvincular destas traduções', |
|
| 871 | - 'trad_lier' => 'Esta matéria é uma tradução da matéria número:', |
|
| 872 | - 'trad_new' => 'Escrever uma nova tradução', |
|
| 807 | + 'texte_sous_titre' => 'Subtítulo', |
|
| 808 | + 'texte_statistiques_visites' => '(barras escuras: domingo / curva escura: evolução da média)', |
|
| 809 | + 'texte_statut_attente_validation' => 'aguardando validação', |
|
| 810 | + 'texte_statut_publies' => 'publicadas online', |
|
| 811 | + 'texte_statut_refuses' => 'recusadas', |
|
| 812 | + 'texte_suppression_fichiers' => 'Use este comando para excluir todos os arquivos que constam do cache do SPIP. Isto permite, por exemplo, forçar a reconstrução de todas as páginas, caso você tenha feito alterações importantes no layout ou na estrutura do site.', |
|
| 813 | + 'texte_sur_titre' => 'Sobretítulo', |
|
| 814 | + 'texte_table_ok' => ': esta tabela está OK.', |
|
| 815 | + 'texte_tentative_recuperation' => 'Tentativa de reparação', |
|
| 816 | + 'texte_tenter_reparation' => 'Tentar uma reparação da base de dados', |
|
| 817 | + 'texte_test_proxy' => 'Para testar este proxy, informe aqui o endereço de um website que você deseje testar.', |
|
| 818 | + 'texte_titre_02' => 'Título:', |
|
| 819 | + 'texte_titre_obligatoire' => '<b>Título</b> [obrigatório]', |
|
| 820 | + 'texte_travail_article' => '@nom_auteur_modif@ trabalhou nesta matéria há @date_diff@ minutos', |
|
| 821 | + 'texte_travail_collaboratif' => 'Se é frequente acontecer de mais de um redator trabalhar em uma mesma matéria, o sistema pode exibir as matérias recentemente "abertas", de modo a evitar modificações concorrentes. Esta opção está desativada por padrão, para evitar a exibição de mensagens de aviso desnecessárias.', |
|
| 822 | + 'texte_vide' => 'vazia', |
|
| 823 | + 'texte_vider_cache' => 'Esvaziar o cache', |
|
| 824 | + 'titre_admin_tech' => 'Manutenção técnica', |
|
| 825 | + 'titre_admin_vider' => 'Manutenção técnica', |
|
| 826 | + 'titre_ajouter_un_auteur' => 'Incluir um autor', |
|
| 827 | + 'titre_ajouter_un_mot' => 'Incluir uma palavra-chave', |
|
| 828 | + 'titre_cadre_afficher_article' => 'Exibir as matérias', |
|
| 829 | + 'titre_cadre_afficher_traductions' => 'Exibir o status das traduções para os idiomas a seguir:', |
|
| 830 | + 'titre_cadre_ajouter_auteur' => 'INCLUIR UM AUTOR:', |
|
| 831 | + 'titre_cadre_interieur_rubrique' => 'Na seção', |
|
| 832 | + 'titre_cadre_numero_auteur' => 'AUTOR NÚMERO', |
|
| 833 | + 'titre_cadre_numero_objet' => '@objet@ NÚMERO:', |
|
| 834 | + 'titre_cadre_signature_obligatoire' => '<b>Assinatura</b> [obrigatório]<br />', |
|
| 835 | + 'titre_config_contenu_notifications' => 'Notificações', |
|
| 836 | + 'titre_config_contenu_prive' => 'Na área privada', |
|
| 837 | + 'titre_config_contenu_public' => 'No site público', |
|
| 838 | + 'titre_config_fonctions' => 'Configuração do site', |
|
| 839 | + 'titre_config_langage' => 'Configurar o idioma', |
|
| 840 | + 'titre_configuration' => 'Configuração do site', |
|
| 841 | + 'titre_configurer_preferences' => 'Configurar as suas preferências', |
|
| 842 | + 'titre_configurer_preferences_menus' => 'Configurar as suas preferências de menus', |
|
| 843 | + 'titre_conflit_edition' => 'Conflito durante a edição', |
|
| 844 | + 'titre_connexion_ldap' => 'Opções: <b>Sua conexão LDAP</b>', |
|
| 845 | + 'titre_groupe_mots' => 'GRUPO DE PALAVRAS-CHAVE:', |
|
| 846 | + 'titre_identite_site' => 'Identidade do site', |
|
| 847 | + 'titre_langue_article' => 'Idioma da matéria', |
|
| 848 | + 'titre_langue_rubrique' => 'Idioma da seção', |
|
| 849 | + 'titre_langue_trad_article' => 'IDIOMA E TRADUÇÕES DA MATÉRIA', |
|
| 850 | + 'titre_les_articles' => 'AS MATÉRIAS', |
|
| 851 | + 'titre_messagerie_agenda' => 'Mensagens internas e agenda', |
|
| 852 | + 'titre_naviguer_dans_le_site' => 'Navegar no site...', |
|
| 853 | + 'titre_nouvelle_rubrique' => 'Nova seção', |
|
| 854 | + 'titre_numero_rubrique' => 'SEÇÃO NÚMERO:', |
|
| 855 | + 'titre_page_articles_edit' => 'Editar: @titre@', |
|
| 856 | + 'titre_page_articles_page' => 'As matérias', |
|
| 857 | + 'titre_page_articles_tous' => 'Todo o site', |
|
| 858 | + 'titre_page_calendrier' => 'Calendário @nom_mois@ @annee@', |
|
| 859 | + 'titre_page_config_contenu' => 'Configuração do site', |
|
| 860 | + 'titre_page_delete_all' => 'supressão total e irreversível', |
|
| 861 | + 'titre_page_recherche' => 'Resultados da busca por @recherche@', |
|
| 862 | + 'titre_page_statistiques_referers' => 'Estatísticas (links de entrada)', |
|
| 863 | + 'titre_page_upgrade' => 'Atualização do SPIP', |
|
| 864 | + 'titre_preference_menus_favoris' => 'Menus favoritos', |
|
| 865 | + 'titre_publication_articles_post_dates' => 'Publicação de matérias pós-datadas', |
|
| 866 | + 'titre_reparation' => 'Reparação', |
|
| 867 | + 'titre_suivi_petition' => 'Acompanhamento das petições', |
|
| 868 | + 'tls_ldap' => 'Transport Layer Security:', |
|
| 869 | + 'trad_article_traduction' => 'Todas as versões desta matéria:', |
|
| 870 | + 'trad_delier' => 'Desvincular destas traduções', |
|
| 871 | + 'trad_lier' => 'Esta matéria é uma tradução da matéria número:', |
|
| 872 | + 'trad_new' => 'Escrever uma nova tradução', |
|
| 873 | 873 | |
| 874 | - // U |
|
| 875 | - 'utf8_convert_erreur_orig' => 'Erro: o conjunto de caracteres @charset@ não é suportado.', |
|
| 874 | + // U |
|
| 875 | + 'utf8_convert_erreur_orig' => 'Erro: o conjunto de caracteres @charset@ não é suportado.', |
|
| 876 | 876 | |
| 877 | - // V |
|
| 878 | - 'version' => 'Versão:' |
|
| 877 | + // V |
|
| 878 | + 'version' => 'Versão:' |
|
| 879 | 879 | ); |
@@ -4,123 +4,123 @@ |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'accueil_site' => 'Página inicial', |
|
| 14 | - 'article' => 'Matéria', |
|
| 15 | - 'articles' => 'Matérias', |
|
| 16 | - 'articles_auteur' => 'Matérias deste autor', |
|
| 17 | - 'articles_populaires' => 'Matérias mais populares', |
|
| 18 | - 'articles_rubrique' => 'Matérias desta seção', |
|
| 19 | - 'aucun_article' => 'Não há nenhuma matéria neste endereço', |
|
| 20 | - 'aucun_auteur' => 'Não há nenhum autor neste endereço', |
|
| 21 | - 'aucun_site' => 'Não há nenhum site neste endereço', |
|
| 22 | - 'aucune_breve' => 'Não há nenhuma nota neste endereço', |
|
| 23 | - 'aucune_rubrique' => 'Não há nenhuma seção neste endereço', |
|
| 24 | - 'auteur' => 'Autor', |
|
| 25 | - 'autres' => 'Outros', |
|
| 26 | - 'autres_breves' => 'Outras notas', |
|
| 27 | - 'autres_groupes_mots_clefs' => 'Outros grupos de palavras-chave', |
|
| 28 | - 'autres_sites' => 'Outros sites', |
|
| 29 | - |
|
| 30 | - // B |
|
| 31 | - 'bonjour' => 'Bom dia', |
|
| 32 | - |
|
| 33 | - // C |
|
| 34 | - 'commenter_site' => 'Comentar este site', |
|
| 35 | - 'contact' => 'Contato', |
|
| 36 | - 'copie_document_impossible' => 'Não foi possível copiar o documento', |
|
| 37 | - |
|
| 38 | - // D |
|
| 39 | - 'date' => 'Data', |
|
| 40 | - 'dernier_ajout' => 'Última inclusão', |
|
| 41 | - 'dernieres_breves' => 'Últimas notas', |
|
| 42 | - 'derniers_articles' => 'Últimas matérias', |
|
| 43 | - 'derniers_commentaires' => 'Últimos comentários', |
|
| 44 | - 'derniers_messages_forum' => 'Últimas mensagens publicadas nos fóruns', |
|
| 45 | - |
|
| 46 | - // E |
|
| 47 | - 'edition_mode_texte' => 'Edição em modo texto de', |
|
| 48 | - 'en_reponse' => 'Em resposta a:', |
|
| 49 | - 'en_resume' => 'Em resumo', |
|
| 50 | - 'envoyer_message' => 'Enviar uma mensagem', |
|
| 51 | - 'espace_prive' => 'Espaço privado', |
|
| 52 | - |
|
| 53 | - // F |
|
| 54 | - 'formats_acceptes' => 'Formatos aceitos: @formats@.', |
|
| 55 | - |
|
| 56 | - // H |
|
| 57 | - 'hierarchie_site' => 'Hierarquia do site', |
|
| 58 | - |
|
| 59 | - // J |
|
| 60 | - 'jours' => 'dias', |
|
| 61 | - |
|
| 62 | - // L |
|
| 63 | - 'lien_connecter' => 'Conectar-se', |
|
| 64 | - |
|
| 65 | - // M |
|
| 66 | - 'meme_auteur' => 'Do mesmo autor', |
|
| 67 | - 'meme_rubrique' => 'Na mesma seção', |
|
| 68 | - 'memes_auteurs' => 'Dos mesmos autores', |
|
| 69 | - 'message' => 'Mensagem', |
|
| 70 | - 'messages_forum' => 'Mensagens', |
|
| 71 | - 'messages_recents' => 'Mensagens de fórum mais recentes', |
|
| 72 | - 'mots_clef' => 'Palavra-chave', |
|
| 73 | - 'mots_clefs' => 'Palavras-chave', |
|
| 74 | - 'mots_clefs_meme_groupe' => 'Palavras-chave no mesmo grupo', |
|
| 75 | - |
|
| 76 | - // N |
|
| 77 | - 'navigation' => 'Navegação', |
|
| 78 | - 'nom' => 'Nome', |
|
| 79 | - 'nouveautes' => 'As novidades', |
|
| 80 | - 'nouveautes_web' => 'Novidades na web', |
|
| 81 | - 'nouveaux_articles' => 'Novas matérias', |
|
| 82 | - 'nouvelles_breves' => 'Novas notas', |
|
| 83 | - |
|
| 84 | - // P |
|
| 85 | - 'page_precedente' => 'página anterior', |
|
| 86 | - 'page_suivante' => 'página seguinte', |
|
| 87 | - 'par_auteur' => 'por ', |
|
| 88 | - 'participer_site' => 'Você pode participar da vida deste site e propor as suas próprias matérias ao se inscrever abaixo. Você receberá imediatamente um e-mail informando os seus códigos de acesso ao espaço privado do site.', |
|
| 89 | - 'plan_site' => 'Mapa do site', |
|
| 90 | - 'popularite' => 'Popularidade', |
|
| 91 | - 'poster_message' => 'Postar uma mensagem', |
|
| 92 | - 'proposer_site' => 'Você pode propor a inclusão de um site nesta seção:', |
|
| 93 | - |
|
| 94 | - // R |
|
| 95 | - 'repondre_article' => 'Responder a esta matéria', |
|
| 96 | - 'repondre_breve' => 'Responder a esta nota', |
|
| 97 | - 'resultats_recherche' => 'Resultados da busca', |
|
| 98 | - 'retour_debut_forums' => 'Voltar ao início dos fóruns', |
|
| 99 | - 'rss_abonnement' => 'Copie o URL a seguir para o seu agregador:', |
|
| 100 | - 'rss_abonnement_titre' => 'Subscrever', |
|
| 101 | - 'rss_abonnement_titre_page' => 'Subscrever', |
|
| 102 | - 'rss_explication' => 'Um feed RSS coleta as informações de atualização de um site. Ele fornece o conteúdo das postagens ou dos somentários, ou um trecho dos mesmos, bem como um link para as versões integrais e informações adicionais. Esse feed é pensado para ser lido por um agregador RSS.', |
|
| 103 | - 'rss_explication_titre' => 'O que é um fluxo RSS?', |
|
| 104 | - 'rubrique' => 'Seção', |
|
| 105 | - 'rubriques' => 'Seções', |
|
| 106 | - |
|
| 107 | - // S |
|
| 108 | - 'signatures_petition' => 'Assinaturas', |
|
| 109 | - 'site_realise_avec_spip' => 'Site realizado com SPIP', |
|
| 110 | - 'sites_web' => 'Websites', |
|
| 111 | - 'sous_rubriques' => 'Subseções', |
|
| 112 | - 'spam' => 'Spam', |
|
| 113 | - 'suite' => 'a seguir', |
|
| 114 | - 'sur_web' => 'Na web', |
|
| 115 | - 'syndiquer_rubrique' => 'Sindicar esta seção', |
|
| 116 | - 'syndiquer_site' => 'Sindicar todo o site', |
|
| 117 | - |
|
| 118 | - // T |
|
| 119 | - 'texte_lettre_information' => 'Esta é a mensagem de informação do site', |
|
| 120 | - 'texte_lettre_information_2' => 'Esta mensagem compila as novidades publicadas desde', |
|
| 121 | - |
|
| 122 | - // V |
|
| 123 | - 'ver_imprimer' => 'Versão para impressão', |
|
| 124 | - 'voir_en_ligne' => 'Ver online', |
|
| 125 | - 'voir_squelette' => 'visualizar o template desta página' |
|
| 12 | + // A |
|
| 13 | + 'accueil_site' => 'Página inicial', |
|
| 14 | + 'article' => 'Matéria', |
|
| 15 | + 'articles' => 'Matérias', |
|
| 16 | + 'articles_auteur' => 'Matérias deste autor', |
|
| 17 | + 'articles_populaires' => 'Matérias mais populares', |
|
| 18 | + 'articles_rubrique' => 'Matérias desta seção', |
|
| 19 | + 'aucun_article' => 'Não há nenhuma matéria neste endereço', |
|
| 20 | + 'aucun_auteur' => 'Não há nenhum autor neste endereço', |
|
| 21 | + 'aucun_site' => 'Não há nenhum site neste endereço', |
|
| 22 | + 'aucune_breve' => 'Não há nenhuma nota neste endereço', |
|
| 23 | + 'aucune_rubrique' => 'Não há nenhuma seção neste endereço', |
|
| 24 | + 'auteur' => 'Autor', |
|
| 25 | + 'autres' => 'Outros', |
|
| 26 | + 'autres_breves' => 'Outras notas', |
|
| 27 | + 'autres_groupes_mots_clefs' => 'Outros grupos de palavras-chave', |
|
| 28 | + 'autres_sites' => 'Outros sites', |
|
| 29 | + |
|
| 30 | + // B |
|
| 31 | + 'bonjour' => 'Bom dia', |
|
| 32 | + |
|
| 33 | + // C |
|
| 34 | + 'commenter_site' => 'Comentar este site', |
|
| 35 | + 'contact' => 'Contato', |
|
| 36 | + 'copie_document_impossible' => 'Não foi possível copiar o documento', |
|
| 37 | + |
|
| 38 | + // D |
|
| 39 | + 'date' => 'Data', |
|
| 40 | + 'dernier_ajout' => 'Última inclusão', |
|
| 41 | + 'dernieres_breves' => 'Últimas notas', |
|
| 42 | + 'derniers_articles' => 'Últimas matérias', |
|
| 43 | + 'derniers_commentaires' => 'Últimos comentários', |
|
| 44 | + 'derniers_messages_forum' => 'Últimas mensagens publicadas nos fóruns', |
|
| 45 | + |
|
| 46 | + // E |
|
| 47 | + 'edition_mode_texte' => 'Edição em modo texto de', |
|
| 48 | + 'en_reponse' => 'Em resposta a:', |
|
| 49 | + 'en_resume' => 'Em resumo', |
|
| 50 | + 'envoyer_message' => 'Enviar uma mensagem', |
|
| 51 | + 'espace_prive' => 'Espaço privado', |
|
| 52 | + |
|
| 53 | + // F |
|
| 54 | + 'formats_acceptes' => 'Formatos aceitos: @formats@.', |
|
| 55 | + |
|
| 56 | + // H |
|
| 57 | + 'hierarchie_site' => 'Hierarquia do site', |
|
| 58 | + |
|
| 59 | + // J |
|
| 60 | + 'jours' => 'dias', |
|
| 61 | + |
|
| 62 | + // L |
|
| 63 | + 'lien_connecter' => 'Conectar-se', |
|
| 64 | + |
|
| 65 | + // M |
|
| 66 | + 'meme_auteur' => 'Do mesmo autor', |
|
| 67 | + 'meme_rubrique' => 'Na mesma seção', |
|
| 68 | + 'memes_auteurs' => 'Dos mesmos autores', |
|
| 69 | + 'message' => 'Mensagem', |
|
| 70 | + 'messages_forum' => 'Mensagens', |
|
| 71 | + 'messages_recents' => 'Mensagens de fórum mais recentes', |
|
| 72 | + 'mots_clef' => 'Palavra-chave', |
|
| 73 | + 'mots_clefs' => 'Palavras-chave', |
|
| 74 | + 'mots_clefs_meme_groupe' => 'Palavras-chave no mesmo grupo', |
|
| 75 | + |
|
| 76 | + // N |
|
| 77 | + 'navigation' => 'Navegação', |
|
| 78 | + 'nom' => 'Nome', |
|
| 79 | + 'nouveautes' => 'As novidades', |
|
| 80 | + 'nouveautes_web' => 'Novidades na web', |
|
| 81 | + 'nouveaux_articles' => 'Novas matérias', |
|
| 82 | + 'nouvelles_breves' => 'Novas notas', |
|
| 83 | + |
|
| 84 | + // P |
|
| 85 | + 'page_precedente' => 'página anterior', |
|
| 86 | + 'page_suivante' => 'página seguinte', |
|
| 87 | + 'par_auteur' => 'por ', |
|
| 88 | + 'participer_site' => 'Você pode participar da vida deste site e propor as suas próprias matérias ao se inscrever abaixo. Você receberá imediatamente um e-mail informando os seus códigos de acesso ao espaço privado do site.', |
|
| 89 | + 'plan_site' => 'Mapa do site', |
|
| 90 | + 'popularite' => 'Popularidade', |
|
| 91 | + 'poster_message' => 'Postar uma mensagem', |
|
| 92 | + 'proposer_site' => 'Você pode propor a inclusão de um site nesta seção:', |
|
| 93 | + |
|
| 94 | + // R |
|
| 95 | + 'repondre_article' => 'Responder a esta matéria', |
|
| 96 | + 'repondre_breve' => 'Responder a esta nota', |
|
| 97 | + 'resultats_recherche' => 'Resultados da busca', |
|
| 98 | + 'retour_debut_forums' => 'Voltar ao início dos fóruns', |
|
| 99 | + 'rss_abonnement' => 'Copie o URL a seguir para o seu agregador:', |
|
| 100 | + 'rss_abonnement_titre' => 'Subscrever', |
|
| 101 | + 'rss_abonnement_titre_page' => 'Subscrever', |
|
| 102 | + 'rss_explication' => 'Um feed RSS coleta as informações de atualização de um site. Ele fornece o conteúdo das postagens ou dos somentários, ou um trecho dos mesmos, bem como um link para as versões integrais e informações adicionais. Esse feed é pensado para ser lido por um agregador RSS.', |
|
| 103 | + 'rss_explication_titre' => 'O que é um fluxo RSS?', |
|
| 104 | + 'rubrique' => 'Seção', |
|
| 105 | + 'rubriques' => 'Seções', |
|
| 106 | + |
|
| 107 | + // S |
|
| 108 | + 'signatures_petition' => 'Assinaturas', |
|
| 109 | + 'site_realise_avec_spip' => 'Site realizado com SPIP', |
|
| 110 | + 'sites_web' => 'Websites', |
|
| 111 | + 'sous_rubriques' => 'Subseções', |
|
| 112 | + 'spam' => 'Spam', |
|
| 113 | + 'suite' => 'a seguir', |
|
| 114 | + 'sur_web' => 'Na web', |
|
| 115 | + 'syndiquer_rubrique' => 'Sindicar esta seção', |
|
| 116 | + 'syndiquer_site' => 'Sindicar todo o site', |
|
| 117 | + |
|
| 118 | + // T |
|
| 119 | + 'texte_lettre_information' => 'Esta é a mensagem de informação do site', |
|
| 120 | + 'texte_lettre_information_2' => 'Esta mensagem compila as novidades publicadas desde', |
|
| 121 | + |
|
| 122 | + // V |
|
| 123 | + 'ver_imprimer' => 'Versão para impressão', |
|
| 124 | + 'voir_en_ligne' => 'Ver online', |
|
| 125 | + 'voir_squelette' => 'visualizar o template desta página' |
|
| 126 | 126 | ); |
@@ -49,8 +49,8 @@ discard block |
||
| 49 | 49 | |
| 50 | 50 | // Espacements pour le rythme vertical et les gouttières |
| 51 | 51 | // Basés sur la hauteur d'une ligne de texte à la racine du document |
| 52 | - $vars->add('--spip-spacing-y', round(strmult($Pile[0]['font-size'], $Pile[0]['line-height']), 4) . 'rem'); |
|
| 53 | - $vars->add('--spip-spacing-x', round(strmult($Pile[0]['font-size'], $Pile[0]['line-height']), 4) . 'rem'); |
|
| 52 | + $vars->add('--spip-spacing-y', round(strmult($Pile[0]['font-size'], $Pile[0]['line-height']), 4).'rem'); |
|
| 53 | + $vars->add('--spip-spacing-x', round(strmult($Pile[0]['font-size'], $Pile[0]['line-height']), 4).'rem'); |
|
| 54 | 54 | $vars->add('--spip-margin-bottom', $Pile[0]['margin-bottom']); // À déprécier |
| 55 | 55 | |
| 56 | 56 | // Bordures |
@@ -60,20 +60,20 @@ discard block |
||
| 60 | 60 | |
| 61 | 61 | // Ombres portées |
| 62 | 62 | $shadow_mini = |
| 63 | - '0 0.05em 0.1em hsla(0, 0%, 0%, 0.33),' . |
|
| 64 | - '0 0.1em 0.15em hsla(0, 0%, 0%, 0.05),' . |
|
| 63 | + '0 0.05em 0.1em hsla(0, 0%, 0%, 0.33),'. |
|
| 64 | + '0 0.1em 0.15em hsla(0, 0%, 0%, 0.05),'. |
|
| 65 | 65 | '0 0.1em 0.25em hsla(0, 0%, 0%, 0.05)'; |
| 66 | 66 | $shadow = |
| 67 | - '0 0.05em 0.15em hsla(0, 0%, 0%, 0.33),' . |
|
| 68 | - '0 0.1em 0.25em hsla(0, 0%, 0%, 0.05),' . |
|
| 67 | + '0 0.05em 0.15em hsla(0, 0%, 0%, 0.33),'. |
|
| 68 | + '0 0.1em 0.25em hsla(0, 0%, 0%, 0.05),'. |
|
| 69 | 69 | '0 0.1em 0.5em hsla(0, 0%, 0%, 0.05)'; |
| 70 | 70 | $shadow_large = |
| 71 | - '0 0.05em 0.15em hsla(0, 0%, 0%, 0.1),' . |
|
| 72 | - '0 0.2em 0.5em hsla(0, 0%, 0%, 0.1),' . |
|
| 71 | + '0 0.05em 0.15em hsla(0, 0%, 0%, 0.1),'. |
|
| 72 | + '0 0.2em 0.5em hsla(0, 0%, 0%, 0.1),'. |
|
| 73 | 73 | '0 0.2em 1em hsla(0, 0%, 0%, 0.075)'; |
| 74 | 74 | $shadow_huge = |
| 75 | - '0 0.1em 0.25em hsla(0, 0%, 0%, 0.1),' . |
|
| 76 | - '0 0.25em 1em hsla(0, 0%, 0%, 0.1),' . |
|
| 75 | + '0 0.1em 0.25em hsla(0, 0%, 0%, 0.1),'. |
|
| 76 | + '0 0.25em 1em hsla(0, 0%, 0%, 0.1),'. |
|
| 77 | 77 | '0 0.5em 2em hsla(0, 0%, 0%, 0.075)'; |
| 78 | 78 | $vars->add('--spip-box-shadow-mini', $shadow_mini); |
| 79 | 79 | $vars->add('--spip-box-shadow-mini-hover', $shadow); |
@@ -5,23 +5,23 @@ discard block |
||
| 5 | 5 | * @internal |
| 6 | 6 | */ |
| 7 | 7 | class Spip_Css_Vars_Collection { |
| 8 | - private array $vars = []; |
|
| 9 | - |
|
| 10 | - public function add(string $var, string $value) { |
|
| 11 | - $this->vars[$var] = $value; |
|
| 12 | - } |
|
| 13 | - |
|
| 14 | - public function getString(): string { |
|
| 15 | - $string = ''; |
|
| 16 | - foreach ($this->vars as $key => $value) { |
|
| 17 | - $string .= "$key: $value;\n"; |
|
| 18 | - } |
|
| 19 | - return $string; |
|
| 20 | - } |
|
| 21 | - |
|
| 22 | - public function __toString(): string { |
|
| 23 | - return $this->getString(); |
|
| 24 | - } |
|
| 8 | + private array $vars = []; |
|
| 9 | + |
|
| 10 | + public function add(string $var, string $value) { |
|
| 11 | + $this->vars[$var] = $value; |
|
| 12 | + } |
|
| 13 | + |
|
| 14 | + public function getString(): string { |
|
| 15 | + $string = ''; |
|
| 16 | + foreach ($this->vars as $key => $value) { |
|
| 17 | + $string .= "$key: $value;\n"; |
|
| 18 | + } |
|
| 19 | + return $string; |
|
| 20 | + } |
|
| 21 | + |
|
| 22 | + public function __toString(): string { |
|
| 23 | + return $this->getString(); |
|
| 24 | + } |
|
| 25 | 25 | } |
| 26 | 26 | |
| 27 | 27 | /** |
@@ -30,59 +30,59 @@ discard block |
||
| 30 | 30 | * @param Pile $pile Pile |
| 31 | 31 | */ |
| 32 | 32 | function spip_generer_variables_css_typo(array $Pile): \Spip_Css_Vars_Collection { |
| 33 | - $vars = new \Spip_Css_Vars_Collection(); |
|
| 34 | - |
|
| 35 | - // Direction |
|
| 36 | - $vars->add('--spip-dir', $Pile[0]['dir']); |
|
| 37 | - $vars->add('--spip-left', $Pile[0]['left']); |
|
| 38 | - $vars->add('--spip-right', $Pile[0]['right']); |
|
| 39 | - |
|
| 40 | - // Typographie |
|
| 41 | - $vars->add('--spip-font-size', $Pile[0]['font-size']); |
|
| 42 | - $vars->add('--spip-line-height', $Pile[0]['line-height']); |
|
| 43 | - $vars->add('--spip-text-indent', $Pile[0]['text-indent']); |
|
| 44 | - $vars->add('--spip-font-family', $Pile[0]['font-family']); |
|
| 45 | - |
|
| 46 | - // Couleurs hors thème |
|
| 47 | - $vars->add('--spip-background-color', $Pile[0]['background-color']); |
|
| 48 | - $vars->add('--spip-color', $Pile[0]['color']); |
|
| 49 | - |
|
| 50 | - // Espacements pour le rythme vertical et les gouttières |
|
| 51 | - // Basés sur la hauteur d'une ligne de texte à la racine du document |
|
| 52 | - $vars->add('--spip-spacing-y', round(strmult($Pile[0]['font-size'], $Pile[0]['line-height']), 4) . 'rem'); |
|
| 53 | - $vars->add('--spip-spacing-x', round(strmult($Pile[0]['font-size'], $Pile[0]['line-height']), 4) . 'rem'); |
|
| 54 | - $vars->add('--spip-margin-bottom', $Pile[0]['margin-bottom']); // À déprécier |
|
| 55 | - |
|
| 56 | - // Bordures |
|
| 57 | - $vars->add('--spip-border-radius-mini', '0.2rem'); |
|
| 58 | - $vars->add('--spip-border-radius', '0.33rem'); |
|
| 59 | - $vars->add('--spip-border-radius-large', '0.66rem'); |
|
| 60 | - |
|
| 61 | - // Ombres portées |
|
| 62 | - $shadow_mini = |
|
| 63 | - '0 0.05em 0.1em hsla(0, 0%, 0%, 0.33),' . |
|
| 64 | - '0 0.1em 0.15em hsla(0, 0%, 0%, 0.05),' . |
|
| 65 | - '0 0.1em 0.25em hsla(0, 0%, 0%, 0.05)'; |
|
| 66 | - $shadow = |
|
| 67 | - '0 0.05em 0.15em hsla(0, 0%, 0%, 0.33),' . |
|
| 68 | - '0 0.1em 0.25em hsla(0, 0%, 0%, 0.05),' . |
|
| 69 | - '0 0.1em 0.5em hsla(0, 0%, 0%, 0.05)'; |
|
| 70 | - $shadow_large = |
|
| 71 | - '0 0.05em 0.15em hsla(0, 0%, 0%, 0.1),' . |
|
| 72 | - '0 0.2em 0.5em hsla(0, 0%, 0%, 0.1),' . |
|
| 73 | - '0 0.2em 1em hsla(0, 0%, 0%, 0.075)'; |
|
| 74 | - $shadow_huge = |
|
| 75 | - '0 0.1em 0.25em hsla(0, 0%, 0%, 0.1),' . |
|
| 76 | - '0 0.25em 1em hsla(0, 0%, 0%, 0.1),' . |
|
| 77 | - '0 0.5em 2em hsla(0, 0%, 0%, 0.075)'; |
|
| 78 | - $vars->add('--spip-box-shadow-mini', $shadow_mini); |
|
| 79 | - $vars->add('--spip-box-shadow-mini-hover', $shadow); |
|
| 80 | - $vars->add('--spip-box-shadow', $shadow); |
|
| 81 | - $vars->add('--spip-box-shadow-hover', $shadow_large); |
|
| 82 | - $vars->add('--spip-box-shadow-large', $shadow_large); |
|
| 83 | - $vars->add('--spip-box-shadow-large-hover', $shadow_huge); |
|
| 84 | - |
|
| 85 | - return $vars; |
|
| 33 | + $vars = new \Spip_Css_Vars_Collection(); |
|
| 34 | + |
|
| 35 | + // Direction |
|
| 36 | + $vars->add('--spip-dir', $Pile[0]['dir']); |
|
| 37 | + $vars->add('--spip-left', $Pile[0]['left']); |
|
| 38 | + $vars->add('--spip-right', $Pile[0]['right']); |
|
| 39 | + |
|
| 40 | + // Typographie |
|
| 41 | + $vars->add('--spip-font-size', $Pile[0]['font-size']); |
|
| 42 | + $vars->add('--spip-line-height', $Pile[0]['line-height']); |
|
| 43 | + $vars->add('--spip-text-indent', $Pile[0]['text-indent']); |
|
| 44 | + $vars->add('--spip-font-family', $Pile[0]['font-family']); |
|
| 45 | + |
|
| 46 | + // Couleurs hors thème |
|
| 47 | + $vars->add('--spip-background-color', $Pile[0]['background-color']); |
|
| 48 | + $vars->add('--spip-color', $Pile[0]['color']); |
|
| 49 | + |
|
| 50 | + // Espacements pour le rythme vertical et les gouttières |
|
| 51 | + // Basés sur la hauteur d'une ligne de texte à la racine du document |
|
| 52 | + $vars->add('--spip-spacing-y', round(strmult($Pile[0]['font-size'], $Pile[0]['line-height']), 4) . 'rem'); |
|
| 53 | + $vars->add('--spip-spacing-x', round(strmult($Pile[0]['font-size'], $Pile[0]['line-height']), 4) . 'rem'); |
|
| 54 | + $vars->add('--spip-margin-bottom', $Pile[0]['margin-bottom']); // À déprécier |
|
| 55 | + |
|
| 56 | + // Bordures |
|
| 57 | + $vars->add('--spip-border-radius-mini', '0.2rem'); |
|
| 58 | + $vars->add('--spip-border-radius', '0.33rem'); |
|
| 59 | + $vars->add('--spip-border-radius-large', '0.66rem'); |
|
| 60 | + |
|
| 61 | + // Ombres portées |
|
| 62 | + $shadow_mini = |
|
| 63 | + '0 0.05em 0.1em hsla(0, 0%, 0%, 0.33),' . |
|
| 64 | + '0 0.1em 0.15em hsla(0, 0%, 0%, 0.05),' . |
|
| 65 | + '0 0.1em 0.25em hsla(0, 0%, 0%, 0.05)'; |
|
| 66 | + $shadow = |
|
| 67 | + '0 0.05em 0.15em hsla(0, 0%, 0%, 0.33),' . |
|
| 68 | + '0 0.1em 0.25em hsla(0, 0%, 0%, 0.05),' . |
|
| 69 | + '0 0.1em 0.5em hsla(0, 0%, 0%, 0.05)'; |
|
| 70 | + $shadow_large = |
|
| 71 | + '0 0.05em 0.15em hsla(0, 0%, 0%, 0.1),' . |
|
| 72 | + '0 0.2em 0.5em hsla(0, 0%, 0%, 0.1),' . |
|
| 73 | + '0 0.2em 1em hsla(0, 0%, 0%, 0.075)'; |
|
| 74 | + $shadow_huge = |
|
| 75 | + '0 0.1em 0.25em hsla(0, 0%, 0%, 0.1),' . |
|
| 76 | + '0 0.25em 1em hsla(0, 0%, 0%, 0.1),' . |
|
| 77 | + '0 0.5em 2em hsla(0, 0%, 0%, 0.075)'; |
|
| 78 | + $vars->add('--spip-box-shadow-mini', $shadow_mini); |
|
| 79 | + $vars->add('--spip-box-shadow-mini-hover', $shadow); |
|
| 80 | + $vars->add('--spip-box-shadow', $shadow); |
|
| 81 | + $vars->add('--spip-box-shadow-hover', $shadow_large); |
|
| 82 | + $vars->add('--spip-box-shadow-large', $shadow_large); |
|
| 83 | + $vars->add('--spip-box-shadow-large-hover', $shadow_huge); |
|
| 84 | + |
|
| 85 | + return $vars; |
|
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | /** |
@@ -91,101 +91,101 @@ discard block |
||
| 91 | 91 | * @param string $couleur Couleur hex |
| 92 | 92 | */ |
| 93 | 93 | function spip_generer_variables_css_couleurs_theme(string $couleur): \Spip_Css_Vars_Collection { |
| 94 | - $vars = new \Spip_Css_Vars_Collection(); |
|
| 95 | - |
|
| 96 | - #$vars->add('--spip-color-theme--hsl', couleur_hex_to_hsl($couleur, 'h, s, l')); // redéfini ensuite |
|
| 97 | - $vars->add('--spip-color-theme--h', couleur_hex_to_hsl($couleur, 'h')); |
|
| 98 | - $vars->add('--spip-color-theme--s', couleur_hex_to_hsl($couleur, 's')); |
|
| 99 | - $vars->add('--spip-color-theme--l', couleur_hex_to_hsl($couleur, 'l')); |
|
| 100 | - |
|
| 101 | - // un joli dégradé coloré de presque blanc à presque noir… |
|
| 102 | - $vars->add('--spip-color-theme--100', couleur_hex_to_hsl(couleur_eclaircir($couleur, .99), 'h, s, l')); |
|
| 103 | - $vars->add('--spip-color-theme--98', couleur_hex_to_hsl(couleur_eclaircir($couleur, .95), 'h, s, l')); |
|
| 104 | - $vars->add('--spip-color-theme--95', couleur_hex_to_hsl(couleur_eclaircir($couleur, .90), 'h, s, l')); |
|
| 105 | - $vars->add('--spip-color-theme--90', couleur_hex_to_hsl(couleur_eclaircir($couleur, .75), 'h, s, l')); |
|
| 106 | - $vars->add('--spip-color-theme--80', couleur_hex_to_hsl(couleur_eclaircir($couleur, .50), 'h, s, l')); |
|
| 107 | - $vars->add('--spip-color-theme--70', couleur_hex_to_hsl(couleur_eclaircir($couleur, .25), 'h, s, l')); |
|
| 108 | - $vars->add('--spip-color-theme--60', couleur_hex_to_hsl($couleur, 'h, s, l')); |
|
| 109 | - $vars->add('--spip-color-theme--50', couleur_hex_to_hsl(couleur_foncer($couleur, .125), 'h, s, l')); |
|
| 110 | - $vars->add('--spip-color-theme--40', couleur_hex_to_hsl(couleur_foncer($couleur, .25), 'h, s, l')); |
|
| 111 | - $vars->add('--spip-color-theme--30', couleur_hex_to_hsl(couleur_foncer($couleur, .375), 'h, s, l')); |
|
| 112 | - $vars->add('--spip-color-theme--20', couleur_hex_to_hsl(couleur_foncer($couleur, .50), 'h, s, l')); |
|
| 113 | - $vars->add('--spip-color-theme--10', couleur_hex_to_hsl(couleur_foncer($couleur, .75), 'h, s, l')); |
|
| 114 | - $vars->add('--spip-color-theme--00', couleur_hex_to_hsl(couleur_foncer($couleur, .98), 'h, s, l')); |
|
| 115 | - |
|
| 116 | - return $vars; |
|
| 94 | + $vars = new \Spip_Css_Vars_Collection(); |
|
| 95 | + |
|
| 96 | + #$vars->add('--spip-color-theme--hsl', couleur_hex_to_hsl($couleur, 'h, s, l')); // redéfini ensuite |
|
| 97 | + $vars->add('--spip-color-theme--h', couleur_hex_to_hsl($couleur, 'h')); |
|
| 98 | + $vars->add('--spip-color-theme--s', couleur_hex_to_hsl($couleur, 's')); |
|
| 99 | + $vars->add('--spip-color-theme--l', couleur_hex_to_hsl($couleur, 'l')); |
|
| 100 | + |
|
| 101 | + // un joli dégradé coloré de presque blanc à presque noir… |
|
| 102 | + $vars->add('--spip-color-theme--100', couleur_hex_to_hsl(couleur_eclaircir($couleur, .99), 'h, s, l')); |
|
| 103 | + $vars->add('--spip-color-theme--98', couleur_hex_to_hsl(couleur_eclaircir($couleur, .95), 'h, s, l')); |
|
| 104 | + $vars->add('--spip-color-theme--95', couleur_hex_to_hsl(couleur_eclaircir($couleur, .90), 'h, s, l')); |
|
| 105 | + $vars->add('--spip-color-theme--90', couleur_hex_to_hsl(couleur_eclaircir($couleur, .75), 'h, s, l')); |
|
| 106 | + $vars->add('--spip-color-theme--80', couleur_hex_to_hsl(couleur_eclaircir($couleur, .50), 'h, s, l')); |
|
| 107 | + $vars->add('--spip-color-theme--70', couleur_hex_to_hsl(couleur_eclaircir($couleur, .25), 'h, s, l')); |
|
| 108 | + $vars->add('--spip-color-theme--60', couleur_hex_to_hsl($couleur, 'h, s, l')); |
|
| 109 | + $vars->add('--spip-color-theme--50', couleur_hex_to_hsl(couleur_foncer($couleur, .125), 'h, s, l')); |
|
| 110 | + $vars->add('--spip-color-theme--40', couleur_hex_to_hsl(couleur_foncer($couleur, .25), 'h, s, l')); |
|
| 111 | + $vars->add('--spip-color-theme--30', couleur_hex_to_hsl(couleur_foncer($couleur, .375), 'h, s, l')); |
|
| 112 | + $vars->add('--spip-color-theme--20', couleur_hex_to_hsl(couleur_foncer($couleur, .50), 'h, s, l')); |
|
| 113 | + $vars->add('--spip-color-theme--10', couleur_hex_to_hsl(couleur_foncer($couleur, .75), 'h, s, l')); |
|
| 114 | + $vars->add('--spip-color-theme--00', couleur_hex_to_hsl(couleur_foncer($couleur, .98), 'h, s, l')); |
|
| 115 | + |
|
| 116 | + return $vars; |
|
| 117 | 117 | } |
| 118 | 118 | |
| 119 | 119 | /** |
| 120 | 120 | * Génère les variables CSS de couleurs, dont celles dépendantes des couleurs du thème actif. |
| 121 | 121 | */ |
| 122 | 122 | function spip_generer_variables_css_couleurs(): \Spip_Css_Vars_Collection { |
| 123 | - $vars = new \Spip_Css_Vars_Collection(); |
|
| 124 | - |
|
| 125 | - // nos déclinaisons de couleur (basées sur le dégradé précedent, où 60 est là couleur du thème) |
|
| 126 | - $vars->add('--spip-color-theme-white--hsl', 'var(--spip-color-theme--100)'); |
|
| 127 | - $vars->add('--spip-color-theme-lightest--hsl', 'var(--spip-color-theme--95)'); |
|
| 128 | - $vars->add('--spip-color-theme-lighter--hsl', 'var(--spip-color-theme--90)'); |
|
| 129 | - $vars->add('--spip-color-theme-light--hsl', 'var(--spip-color-theme--80)'); |
|
| 130 | - $vars->add('--spip-color-theme--hsl', 'var(--spip-color-theme--60)'); |
|
| 131 | - $vars->add('--spip-color-theme-dark--hsl', 'var(--spip-color-theme--40)'); |
|
| 132 | - $vars->add('--spip-color-theme-darker--hsl', 'var(--spip-color-theme--20)'); |
|
| 133 | - $vars->add('--spip-color-theme-darkest--hsl', 'var(--spip-color-theme--10)'); |
|
| 134 | - $vars->add('--spip-color-theme-black--hsl', 'var(--spip-color-theme--00)'); |
|
| 135 | - |
|
| 136 | - $vars->add('--spip-color-theme-white', 'hsl(var(--spip-color-theme-white--hsl))'); |
|
| 137 | - $vars->add('--spip-color-theme-lightest', 'hsl(var(--spip-color-theme-lightest--hsl))'); |
|
| 138 | - $vars->add('--spip-color-theme-lighter', 'hsl(var(--spip-color-theme-lighter--hsl))'); |
|
| 139 | - $vars->add('--spip-color-theme-light', 'hsl(var(--spip-color-theme-light--hsl))'); |
|
| 140 | - $vars->add('--spip-color-theme', 'hsl(var(--spip-color-theme--hsl))'); |
|
| 141 | - $vars->add('--spip-color-theme-dark', 'hsl(var(--spip-color-theme-dark--hsl))'); |
|
| 142 | - $vars->add('--spip-color-theme-darker', 'hsl(var(--spip-color-theme-darker--hsl))'); |
|
| 143 | - $vars->add('--spip-color-theme-darkest', 'hsl(var(--spip-color-theme-darkest--hsl))'); |
|
| 144 | - $vars->add('--spip-color-theme-black', 'hsl(var(--spip-color-theme-black--hsl))'); |
|
| 145 | - |
|
| 146 | - // déclinaisons de gris (luminosité calquée sur le dégradé de couleur) |
|
| 147 | - $vars->add('--spip-color-white--hsl', '0, 0%, 100%'); |
|
| 148 | - $vars->add('--spip-color-gray-lightest--hsl', '0, 0%, 96%'); |
|
| 149 | - $vars->add('--spip-color-gray-lighter--hsl', '0, 0%, 90%'); |
|
| 150 | - $vars->add('--spip-color-gray-light--hsl', '0, 0%, 80%'); |
|
| 151 | - $vars->add('--spip-color-gray--hsl', '0, 0%, 60%'); |
|
| 152 | - $vars->add('--spip-color-gray-dark--hsl', '0, 0%, 40%'); |
|
| 153 | - $vars->add('--spip-color-gray-darker--hsl', '0, 0%, 20%'); |
|
| 154 | - $vars->add('--spip-color-gray-darkest--hsl', '0, 0%, 10%'); |
|
| 155 | - $vars->add('--spip-color-black--hsl', '0, 0%, 0%'); |
|
| 156 | - |
|
| 157 | - $vars->add('--spip-color-white', 'hsl(var(--spip-color-white--hsl))'); |
|
| 158 | - $vars->add('--spip-color-gray-lightest', 'hsl(var(--spip-color-gray-lightest--hsl))'); |
|
| 159 | - $vars->add('--spip-color-gray-lighter', 'hsl(var(--spip-color-gray-lighter--hsl))'); |
|
| 160 | - $vars->add('--spip-color-gray-light', 'hsl(var(--spip-color-gray-light--hsl))'); |
|
| 161 | - $vars->add('--spip-color-gray', 'hsl(var(--spip-color-gray--hsl))'); |
|
| 162 | - $vars->add('--spip-color-gray-dark', 'hsl(var(--spip-color-gray-dark--hsl))'); |
|
| 163 | - $vars->add('--spip-color-gray-darker', 'hsl(var(--spip-color-gray-darker--hsl))'); |
|
| 164 | - $vars->add('--spip-color-gray-darkest', 'hsl(var(--spip-color-gray-darkest--hsl))'); |
|
| 165 | - $vars->add('--spip-color-black', 'hsl(var(--spip-color-black--hsl))'); |
|
| 166 | - |
|
| 167 | - // Différents états : erreur, etc. |
|
| 168 | - $vars->add('--spip-color-success--hsl', '72, 66%, 62%'); |
|
| 169 | - $vars->add('--spip-color-success--h', '72'); |
|
| 170 | - $vars->add('--spip-color-success--s', '66%'); |
|
| 171 | - $vars->add('--spip-color-success--l', '62%'); |
|
| 172 | - $vars->add('--spip-color-error--hsl', '356, 70%, 57%'); |
|
| 173 | - $vars->add('--spip-color-error--h', '356'); |
|
| 174 | - $vars->add('--spip-color-error--s', '70%'); |
|
| 175 | - $vars->add('--spip-color-error--l', '57%'); |
|
| 176 | - $vars->add('--spip-color-notice--hsl', '47, 100%, 62%'); |
|
| 177 | - $vars->add('--spip-color-notice--h', '47'); |
|
| 178 | - $vars->add('--spip-color-notice--s', '100%'); |
|
| 179 | - $vars->add('--spip-color-notice--l', '62%'); |
|
| 180 | - $vars->add('--spip-color-info--hsl', '197, 56%, 27%'); |
|
| 181 | - $vars->add('--spip-color-info--h', '197'); |
|
| 182 | - $vars->add('--spip-color-info--s', '56%'); |
|
| 183 | - $vars->add('--spip-color-info--l', '27%'); |
|
| 184 | - |
|
| 185 | - $vars->add('--spip-color-success', 'hsl(var(--spip-color-success--hsl))'); |
|
| 186 | - $vars->add('--spip-color-error', 'hsl(var(--spip-color-error--hsl))'); |
|
| 187 | - $vars->add('--spip-color-notice', 'hsl(var(--spip-color-notice--hsl))'); |
|
| 188 | - $vars->add('--spip-color-info', 'hsl(var(--spip-color-info--hsl))'); |
|
| 189 | - |
|
| 190 | - return $vars; |
|
| 123 | + $vars = new \Spip_Css_Vars_Collection(); |
|
| 124 | + |
|
| 125 | + // nos déclinaisons de couleur (basées sur le dégradé précedent, où 60 est là couleur du thème) |
|
| 126 | + $vars->add('--spip-color-theme-white--hsl', 'var(--spip-color-theme--100)'); |
|
| 127 | + $vars->add('--spip-color-theme-lightest--hsl', 'var(--spip-color-theme--95)'); |
|
| 128 | + $vars->add('--spip-color-theme-lighter--hsl', 'var(--spip-color-theme--90)'); |
|
| 129 | + $vars->add('--spip-color-theme-light--hsl', 'var(--spip-color-theme--80)'); |
|
| 130 | + $vars->add('--spip-color-theme--hsl', 'var(--spip-color-theme--60)'); |
|
| 131 | + $vars->add('--spip-color-theme-dark--hsl', 'var(--spip-color-theme--40)'); |
|
| 132 | + $vars->add('--spip-color-theme-darker--hsl', 'var(--spip-color-theme--20)'); |
|
| 133 | + $vars->add('--spip-color-theme-darkest--hsl', 'var(--spip-color-theme--10)'); |
|
| 134 | + $vars->add('--spip-color-theme-black--hsl', 'var(--spip-color-theme--00)'); |
|
| 135 | + |
|
| 136 | + $vars->add('--spip-color-theme-white', 'hsl(var(--spip-color-theme-white--hsl))'); |
|
| 137 | + $vars->add('--spip-color-theme-lightest', 'hsl(var(--spip-color-theme-lightest--hsl))'); |
|
| 138 | + $vars->add('--spip-color-theme-lighter', 'hsl(var(--spip-color-theme-lighter--hsl))'); |
|
| 139 | + $vars->add('--spip-color-theme-light', 'hsl(var(--spip-color-theme-light--hsl))'); |
|
| 140 | + $vars->add('--spip-color-theme', 'hsl(var(--spip-color-theme--hsl))'); |
|
| 141 | + $vars->add('--spip-color-theme-dark', 'hsl(var(--spip-color-theme-dark--hsl))'); |
|
| 142 | + $vars->add('--spip-color-theme-darker', 'hsl(var(--spip-color-theme-darker--hsl))'); |
|
| 143 | + $vars->add('--spip-color-theme-darkest', 'hsl(var(--spip-color-theme-darkest--hsl))'); |
|
| 144 | + $vars->add('--spip-color-theme-black', 'hsl(var(--spip-color-theme-black--hsl))'); |
|
| 145 | + |
|
| 146 | + // déclinaisons de gris (luminosité calquée sur le dégradé de couleur) |
|
| 147 | + $vars->add('--spip-color-white--hsl', '0, 0%, 100%'); |
|
| 148 | + $vars->add('--spip-color-gray-lightest--hsl', '0, 0%, 96%'); |
|
| 149 | + $vars->add('--spip-color-gray-lighter--hsl', '0, 0%, 90%'); |
|
| 150 | + $vars->add('--spip-color-gray-light--hsl', '0, 0%, 80%'); |
|
| 151 | + $vars->add('--spip-color-gray--hsl', '0, 0%, 60%'); |
|
| 152 | + $vars->add('--spip-color-gray-dark--hsl', '0, 0%, 40%'); |
|
| 153 | + $vars->add('--spip-color-gray-darker--hsl', '0, 0%, 20%'); |
|
| 154 | + $vars->add('--spip-color-gray-darkest--hsl', '0, 0%, 10%'); |
|
| 155 | + $vars->add('--spip-color-black--hsl', '0, 0%, 0%'); |
|
| 156 | + |
|
| 157 | + $vars->add('--spip-color-white', 'hsl(var(--spip-color-white--hsl))'); |
|
| 158 | + $vars->add('--spip-color-gray-lightest', 'hsl(var(--spip-color-gray-lightest--hsl))'); |
|
| 159 | + $vars->add('--spip-color-gray-lighter', 'hsl(var(--spip-color-gray-lighter--hsl))'); |
|
| 160 | + $vars->add('--spip-color-gray-light', 'hsl(var(--spip-color-gray-light--hsl))'); |
|
| 161 | + $vars->add('--spip-color-gray', 'hsl(var(--spip-color-gray--hsl))'); |
|
| 162 | + $vars->add('--spip-color-gray-dark', 'hsl(var(--spip-color-gray-dark--hsl))'); |
|
| 163 | + $vars->add('--spip-color-gray-darker', 'hsl(var(--spip-color-gray-darker--hsl))'); |
|
| 164 | + $vars->add('--spip-color-gray-darkest', 'hsl(var(--spip-color-gray-darkest--hsl))'); |
|
| 165 | + $vars->add('--spip-color-black', 'hsl(var(--spip-color-black--hsl))'); |
|
| 166 | + |
|
| 167 | + // Différents états : erreur, etc. |
|
| 168 | + $vars->add('--spip-color-success--hsl', '72, 66%, 62%'); |
|
| 169 | + $vars->add('--spip-color-success--h', '72'); |
|
| 170 | + $vars->add('--spip-color-success--s', '66%'); |
|
| 171 | + $vars->add('--spip-color-success--l', '62%'); |
|
| 172 | + $vars->add('--spip-color-error--hsl', '356, 70%, 57%'); |
|
| 173 | + $vars->add('--spip-color-error--h', '356'); |
|
| 174 | + $vars->add('--spip-color-error--s', '70%'); |
|
| 175 | + $vars->add('--spip-color-error--l', '57%'); |
|
| 176 | + $vars->add('--spip-color-notice--hsl', '47, 100%, 62%'); |
|
| 177 | + $vars->add('--spip-color-notice--h', '47'); |
|
| 178 | + $vars->add('--spip-color-notice--s', '100%'); |
|
| 179 | + $vars->add('--spip-color-notice--l', '62%'); |
|
| 180 | + $vars->add('--spip-color-info--hsl', '197, 56%, 27%'); |
|
| 181 | + $vars->add('--spip-color-info--h', '197'); |
|
| 182 | + $vars->add('--spip-color-info--s', '56%'); |
|
| 183 | + $vars->add('--spip-color-info--l', '27%'); |
|
| 184 | + |
|
| 185 | + $vars->add('--spip-color-success', 'hsl(var(--spip-color-success--hsl))'); |
|
| 186 | + $vars->add('--spip-color-error', 'hsl(var(--spip-color-error--hsl))'); |
|
| 187 | + $vars->add('--spip-color-notice', 'hsl(var(--spip-color-notice--hsl))'); |
|
| 188 | + $vars->add('--spip-color-info', 'hsl(var(--spip-color-info--hsl))'); |
|
| 189 | + |
|
| 190 | + return $vars; |
|
| 191 | 191 | } |
@@ -11,40 +11,40 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | function defaut_tri_defined($defaut) { |
| 18 | - if (!defined('_TRI_ARTICLES_RUBRIQUE')) { |
|
| 19 | - return $defaut; |
|
| 20 | - } |
|
| 18 | + if (!defined('_TRI_ARTICLES_RUBRIQUE')) { |
|
| 19 | + return $defaut; |
|
| 20 | + } |
|
| 21 | 21 | |
| 22 | - $sens = 1; |
|
| 23 | - $tri = trim(_TRI_ARTICLES_RUBRIQUE); |
|
| 24 | - $tri = explode(' ', $tri); |
|
| 25 | - if (strncasecmp(end($tri), 'DESC', 4) == 0) { |
|
| 26 | - $sens = -1; |
|
| 27 | - array_pop($tri); |
|
| 28 | - } elseif (strncasecmp(end($tri), 'ASC', 3) == 0) { |
|
| 29 | - $sens = 1; |
|
| 30 | - array_pop($tri); |
|
| 31 | - } |
|
| 32 | - $tri = implode(' ', $tri); |
|
| 33 | - $tri = [$tri => $sens]; |
|
| 34 | - foreach ($defaut as $n => $s) { |
|
| 35 | - if (!isset($tri[$n])) { |
|
| 36 | - $tri[$n] = $s; |
|
| 37 | - } |
|
| 38 | - } |
|
| 22 | + $sens = 1; |
|
| 23 | + $tri = trim(_TRI_ARTICLES_RUBRIQUE); |
|
| 24 | + $tri = explode(' ', $tri); |
|
| 25 | + if (strncasecmp(end($tri), 'DESC', 4) == 0) { |
|
| 26 | + $sens = -1; |
|
| 27 | + array_pop($tri); |
|
| 28 | + } elseif (strncasecmp(end($tri), 'ASC', 3) == 0) { |
|
| 29 | + $sens = 1; |
|
| 30 | + array_pop($tri); |
|
| 31 | + } |
|
| 32 | + $tri = implode(' ', $tri); |
|
| 33 | + $tri = [$tri => $sens]; |
|
| 34 | + foreach ($defaut as $n => $s) { |
|
| 35 | + if (!isset($tri[$n])) { |
|
| 36 | + $tri[$n] = $s; |
|
| 37 | + } |
|
| 38 | + } |
|
| 39 | 39 | |
| 40 | - return $tri; |
|
| 40 | + return $tri; |
|
| 41 | 41 | } |
| 42 | 42 | |
| 43 | 43 | function defaut_tri_par($par, $defaut) { |
| 44 | - if (!defined('_TRI_ARTICLES_RUBRIQUE')) { |
|
| 45 | - return $par; |
|
| 46 | - } |
|
| 47 | - $par = array_keys($defaut); |
|
| 44 | + if (!defined('_TRI_ARTICLES_RUBRIQUE')) { |
|
| 45 | + return $par; |
|
| 46 | + } |
|
| 47 | + $par = array_keys($defaut); |
|
| 48 | 48 | |
| 49 | - return reset($par); |
|
| 49 | + return reset($par); |
|
| 50 | 50 | } |
@@ -11,24 +11,24 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | function lister_traductions($id_trad, $objet) { |
| 18 | - $table_objet_sql = table_objet_sql($objet); |
|
| 19 | - $primary = id_table_objet($objet); |
|
| 18 | + $table_objet_sql = table_objet_sql($objet); |
|
| 19 | + $primary = id_table_objet($objet); |
|
| 20 | 20 | |
| 21 | - $select = "$primary as id,lang"; |
|
| 22 | - $where = 'id_trad=' . intval($id_trad); |
|
| 23 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 24 | - $desc = $trouver_table($table_objet_sql); |
|
| 25 | - if (isset($desc['field']['statut'])) { |
|
| 26 | - $select .= ',statut'; |
|
| 27 | - $where .= ' AND statut!=' . sql_quote('poubelle'); |
|
| 28 | - } |
|
| 21 | + $select = "$primary as id,lang"; |
|
| 22 | + $where = 'id_trad=' . intval($id_trad); |
|
| 23 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 24 | + $desc = $trouver_table($table_objet_sql); |
|
| 25 | + if (isset($desc['field']['statut'])) { |
|
| 26 | + $select .= ',statut'; |
|
| 27 | + $where .= ' AND statut!=' . sql_quote('poubelle'); |
|
| 28 | + } |
|
| 29 | 29 | |
| 30 | - $rows = sql_allfetsel($select, $table_objet_sql, $where); |
|
| 31 | - lang_select(); |
|
| 30 | + $rows = sql_allfetsel($select, $table_objet_sql, $where); |
|
| 31 | + lang_select(); |
|
| 32 | 32 | |
| 33 | - return $rows; |
|
| 33 | + return $rows; |
|
| 34 | 34 | } |
@@ -19,12 +19,12 @@ |
||
| 19 | 19 | $primary = id_table_objet($objet); |
| 20 | 20 | |
| 21 | 21 | $select = "$primary as id,lang"; |
| 22 | - $where = 'id_trad=' . intval($id_trad); |
|
| 22 | + $where = 'id_trad='.intval($id_trad); |
|
| 23 | 23 | $trouver_table = charger_fonction('trouver_table', 'base'); |
| 24 | 24 | $desc = $trouver_table($table_objet_sql); |
| 25 | 25 | if (isset($desc['field']['statut'])) { |
| 26 | 26 | $select .= ',statut'; |
| 27 | - $where .= ' AND statut!=' . sql_quote('poubelle'); |
|
| 27 | + $where .= ' AND statut!='.sql_quote('poubelle'); |
|
| 28 | 28 | } |
| 29 | 29 | |
| 30 | 30 | $rows = sql_allfetsel($select, $table_objet_sql, $where); |
@@ -11,35 +11,35 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | function formulaires_configurer_transcodeur_charger_dist() { |
| 18 | - $valeurs = [ |
|
| 19 | - 'charset' => $GLOBALS['meta']['charset'], |
|
| 20 | - ]; |
|
| 18 | + $valeurs = [ |
|
| 19 | + 'charset' => $GLOBALS['meta']['charset'], |
|
| 20 | + ]; |
|
| 21 | 21 | |
| 22 | - return $valeurs; |
|
| 22 | + return $valeurs; |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | function formulaires_configurer_transcodeur_verifier_dist() { |
| 26 | - include_spip('inc/charsets'); |
|
| 26 | + include_spip('inc/charsets'); |
|
| 27 | 27 | |
| 28 | - $erreurs = []; |
|
| 29 | - if (!$charset = _request('charset')) { |
|
| 30 | - $erreurs['charset'] = _T('info_obligatoire'); |
|
| 31 | - } elseif ($charset != 'utf-8' and !load_charset($charset)) { |
|
| 32 | - $erreurs['charset'] = _T('utf8_convert_erreur_orig', ['charset' => entites_html($charset)]); |
|
| 33 | - } |
|
| 28 | + $erreurs = []; |
|
| 29 | + if (!$charset = _request('charset')) { |
|
| 30 | + $erreurs['charset'] = _T('info_obligatoire'); |
|
| 31 | + } elseif ($charset != 'utf-8' and !load_charset($charset)) { |
|
| 32 | + $erreurs['charset'] = _T('utf8_convert_erreur_orig', ['charset' => entites_html($charset)]); |
|
| 33 | + } |
|
| 34 | 34 | |
| 35 | - return $erreurs; |
|
| 35 | + return $erreurs; |
|
| 36 | 36 | } |
| 37 | 37 | |
| 38 | 38 | |
| 39 | 39 | function formulaires_configurer_transcodeur_traiter_dist() { |
| 40 | - $res = ['editable' => true]; |
|
| 41 | - ecrire_meta('charset', _request('charset')); |
|
| 42 | - $res['message_ok'] = _T('config_info_enregistree'); |
|
| 40 | + $res = ['editable' => true]; |
|
| 41 | + ecrire_meta('charset', _request('charset')); |
|
| 42 | + $res['message_ok'] = _T('config_info_enregistree'); |
|
| 43 | 43 | |
| 44 | - return $res; |
|
| 44 | + return $res; |
|
| 45 | 45 | } |
@@ -3,7 +3,7 @@ |
||
| 3 | 3 | function formulaires_configurer_ecran_connexion_data(): array { |
| 4 | 4 | return [ |
| 5 | 5 | 'couleur_defaut' => '#db1762', |
| 6 | - 'img_fond' => _DIR_IMG . 'spip_fond_login.jpg', |
|
| 6 | + 'img_fond' => _DIR_IMG.'spip_fond_login.jpg', |
|
| 7 | 7 | ]; |
| 8 | 8 | } |
| 9 | 9 | |
@@ -1,94 +1,94 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | function formulaires_configurer_ecran_connexion_data(): array { |
| 4 | - return [ |
|
| 5 | - 'couleur_defaut' => '#db1762', |
|
| 6 | - 'img_fond' => _DIR_IMG . 'spip_fond_login.jpg', |
|
| 7 | - ]; |
|
| 4 | + return [ |
|
| 5 | + 'couleur_defaut' => '#db1762', |
|
| 6 | + 'img_fond' => _DIR_IMG . 'spip_fond_login.jpg', |
|
| 7 | + ]; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | function formulaires_configurer_ecran_connexion_charger_dist() { |
| 11 | - include_spip('inc/config'); |
|
| 12 | - include_spip('inc/autoriser'); |
|
| 11 | + include_spip('inc/config'); |
|
| 12 | + include_spip('inc/autoriser'); |
|
| 13 | 13 | |
| 14 | - $data = formulaires_configurer_ecran_connexion_data(); |
|
| 14 | + $data = formulaires_configurer_ecran_connexion_data(); |
|
| 15 | 15 | |
| 16 | - $valeurs = [ |
|
| 17 | - 'couleur_login' => lire_config('couleur_login', $data['couleur_defaut']), |
|
| 18 | - 'couleur_defaut_login' => $data['couleur_defaut'], |
|
| 19 | - 'upload_image_fond_login' => '', |
|
| 20 | - ]; |
|
| 16 | + $valeurs = [ |
|
| 17 | + 'couleur_login' => lire_config('couleur_login', $data['couleur_defaut']), |
|
| 18 | + 'couleur_defaut_login' => $data['couleur_defaut'], |
|
| 19 | + 'upload_image_fond_login' => '', |
|
| 20 | + ]; |
|
| 21 | 21 | |
| 22 | - if (file_exists($data['img_fond'])) { |
|
| 23 | - $valeurs['src_img'] = $data['img_fond']; |
|
| 24 | - } |
|
| 22 | + if (file_exists($data['img_fond'])) { |
|
| 23 | + $valeurs['src_img'] = $data['img_fond']; |
|
| 24 | + } |
|
| 25 | 25 | |
| 26 | - return $valeurs; |
|
| 26 | + return $valeurs; |
|
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | |
| 30 | 30 | function formulaires_configurer_ecran_connexion_verifier_dist() { |
| 31 | - $erreurs = []; |
|
| 32 | - |
|
| 33 | - if (_request('supprimer_image_fond_login')) { |
|
| 34 | - // rien à tester |
|
| 35 | - } |
|
| 36 | - |
|
| 37 | - elseif (_request('supprimer_couleur_login')) { |
|
| 38 | - // rien à tester |
|
| 39 | - } |
|
| 40 | - |
|
| 41 | - elseif (!empty($_FILES['upload_image_fond_login'])) { |
|
| 42 | - $file = $_FILES['upload_image_fond_login']; |
|
| 43 | - include_spip('inc/documents'); |
|
| 44 | - $extension = pathinfo($file['name'], PATHINFO_EXTENSION); |
|
| 45 | - $extension = corriger_extension(strtolower($extension)); |
|
| 46 | - if (!in_array($extension, ['jpg'])) { |
|
| 47 | - $erreurs['upload_image_fond_login'] = _T('erreur_type_fichier'); |
|
| 48 | - } |
|
| 49 | - } |
|
| 50 | - |
|
| 51 | - return $erreurs; |
|
| 31 | + $erreurs = []; |
|
| 32 | + |
|
| 33 | + if (_request('supprimer_image_fond_login')) { |
|
| 34 | + // rien à tester |
|
| 35 | + } |
|
| 36 | + |
|
| 37 | + elseif (_request('supprimer_couleur_login')) { |
|
| 38 | + // rien à tester |
|
| 39 | + } |
|
| 40 | + |
|
| 41 | + elseif (!empty($_FILES['upload_image_fond_login'])) { |
|
| 42 | + $file = $_FILES['upload_image_fond_login']; |
|
| 43 | + include_spip('inc/documents'); |
|
| 44 | + $extension = pathinfo($file['name'], PATHINFO_EXTENSION); |
|
| 45 | + $extension = corriger_extension(strtolower($extension)); |
|
| 46 | + if (!in_array($extension, ['jpg'])) { |
|
| 47 | + $erreurs['upload_image_fond_login'] = _T('erreur_type_fichier'); |
|
| 48 | + } |
|
| 49 | + } |
|
| 50 | + |
|
| 51 | + return $erreurs; |
|
| 52 | 52 | } |
| 53 | 53 | |
| 54 | 54 | |
| 55 | 55 | function formulaires_configurer_ecran_connexion_traiter_dist() { |
| 56 | 56 | |
| 57 | - $retours = [ |
|
| 58 | - 'message_ok' => _T('config_info_enregistree'), |
|
| 59 | - 'editable' => true, |
|
| 60 | - ]; |
|
| 61 | - |
|
| 62 | - include_spip('inc/config'); |
|
| 63 | - $data = formulaires_configurer_ecran_connexion_data(); |
|
| 64 | - $dest = $data['img_fond']; |
|
| 65 | - |
|
| 66 | - if (_request('couleur_login')) { |
|
| 67 | - $color = _request('couleur_login'); |
|
| 68 | - if ($color === $data['couleur_defaut']) { |
|
| 69 | - effacer_config('couleur_login'); |
|
| 70 | - } else { |
|
| 71 | - ecrire_config('couleur_login', $color); |
|
| 72 | - } |
|
| 73 | - } |
|
| 74 | - |
|
| 75 | - if (_request('supprimer_image_fond_login')) { |
|
| 76 | - @unlink($dest); |
|
| 77 | - } |
|
| 78 | - |
|
| 79 | - elseif (_request('supprimer_couleur_login')) { |
|
| 80 | - effacer_config('couleur_login'); |
|
| 81 | - set_request('couleur_login', null); |
|
| 82 | - } |
|
| 83 | - |
|
| 84 | - elseif (!empty($_FILES['upload_image_fond_login'])) { |
|
| 85 | - $file = $_FILES['upload_image_fond_login']; |
|
| 86 | - include_spip('inc/documents'); |
|
| 87 | - deplacer_fichier_upload($file['tmp_name'], $dest); |
|
| 88 | - } |
|
| 89 | - |
|
| 90 | - include_spip('inc/invalideur'); |
|
| 91 | - suivre_invalideur('1'); # tout effacer |
|
| 92 | - |
|
| 93 | - return $retours; |
|
| 57 | + $retours = [ |
|
| 58 | + 'message_ok' => _T('config_info_enregistree'), |
|
| 59 | + 'editable' => true, |
|
| 60 | + ]; |
|
| 61 | + |
|
| 62 | + include_spip('inc/config'); |
|
| 63 | + $data = formulaires_configurer_ecran_connexion_data(); |
|
| 64 | + $dest = $data['img_fond']; |
|
| 65 | + |
|
| 66 | + if (_request('couleur_login')) { |
|
| 67 | + $color = _request('couleur_login'); |
|
| 68 | + if ($color === $data['couleur_defaut']) { |
|
| 69 | + effacer_config('couleur_login'); |
|
| 70 | + } else { |
|
| 71 | + ecrire_config('couleur_login', $color); |
|
| 72 | + } |
|
| 73 | + } |
|
| 74 | + |
|
| 75 | + if (_request('supprimer_image_fond_login')) { |
|
| 76 | + @unlink($dest); |
|
| 77 | + } |
|
| 78 | + |
|
| 79 | + elseif (_request('supprimer_couleur_login')) { |
|
| 80 | + effacer_config('couleur_login'); |
|
| 81 | + set_request('couleur_login', null); |
|
| 82 | + } |
|
| 83 | + |
|
| 84 | + elseif (!empty($_FILES['upload_image_fond_login'])) { |
|
| 85 | + $file = $_FILES['upload_image_fond_login']; |
|
| 86 | + include_spip('inc/documents'); |
|
| 87 | + deplacer_fichier_upload($file['tmp_name'], $dest); |
|
| 88 | + } |
|
| 89 | + |
|
| 90 | + include_spip('inc/invalideur'); |
|
| 91 | + suivre_invalideur('1'); # tout effacer |
|
| 92 | + |
|
| 93 | + return $retours; |
|
| 94 | 94 | } |
@@ -32,13 +32,9 @@ discard block |
||
| 32 | 32 | |
| 33 | 33 | if (_request('supprimer_image_fond_login')) { |
| 34 | 34 | // rien à tester |
| 35 | - } |
|
| 36 | - |
|
| 37 | - elseif (_request('supprimer_couleur_login')) { |
|
| 35 | + } elseif (_request('supprimer_couleur_login')) { |
|
| 38 | 36 | // rien à tester |
| 39 | - } |
|
| 40 | - |
|
| 41 | - elseif (!empty($_FILES['upload_image_fond_login'])) { |
|
| 37 | + } elseif (!empty($_FILES['upload_image_fond_login'])) { |
|
| 42 | 38 | $file = $_FILES['upload_image_fond_login']; |
| 43 | 39 | include_spip('inc/documents'); |
| 44 | 40 | $extension = pathinfo($file['name'], PATHINFO_EXTENSION); |
@@ -74,14 +70,10 @@ discard block |
||
| 74 | 70 | |
| 75 | 71 | if (_request('supprimer_image_fond_login')) { |
| 76 | 72 | @unlink($dest); |
| 77 | - } |
|
| 78 | - |
|
| 79 | - elseif (_request('supprimer_couleur_login')) { |
|
| 73 | + } elseif (_request('supprimer_couleur_login')) { |
|
| 80 | 74 | effacer_config('couleur_login'); |
| 81 | 75 | set_request('couleur_login', null); |
| 82 | - } |
|
| 83 | - |
|
| 84 | - elseif (!empty($_FILES['upload_image_fond_login'])) { |
|
| 76 | + } elseif (!empty($_FILES['upload_image_fond_login'])) { |
|
| 85 | 77 | $file = $_FILES['upload_image_fond_login']; |
| 86 | 78 | include_spip('inc/documents'); |
| 87 | 79 | deplacer_fichier_upload($file['tmp_name'], $dest); |