@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | */ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | /** |
@@ -35,18 +35,18 @@ discard block |
||
| 35 | 35 | */ |
| 36 | 36 | function genie_maintenance_dist($t) { |
| 37 | 37 | |
| 38 | - // (re)mettre .htaccess avec deny from all |
|
| 39 | - // dans les deux repertoires dits inaccessibles par http |
|
| 40 | - include_spip('inc/acces'); |
|
| 41 | - verifier_htaccess(_DIR_ETC); |
|
| 42 | - verifier_htaccess(_DIR_TMP); |
|
| 38 | + // (re)mettre .htaccess avec deny from all |
|
| 39 | + // dans les deux repertoires dits inaccessibles par http |
|
| 40 | + include_spip('inc/acces'); |
|
| 41 | + verifier_htaccess(_DIR_ETC); |
|
| 42 | + verifier_htaccess(_DIR_TMP); |
|
| 43 | 43 | |
| 44 | - // Verifier qu'aucune table n'est crashee |
|
| 45 | - if (!_request('reinstall')) { |
|
| 46 | - verifier_crash_tables(); |
|
| 47 | - } |
|
| 44 | + // Verifier qu'aucune table n'est crashee |
|
| 45 | + if (!_request('reinstall')) { |
|
| 46 | + verifier_crash_tables(); |
|
| 47 | + } |
|
| 48 | 48 | |
| 49 | - return 1; |
|
| 49 | + return 1; |
|
| 50 | 50 | } |
| 51 | 51 | |
| 52 | 52 | |
@@ -63,33 +63,33 @@ discard block |
||
| 63 | 63 | * des tables qui ont crashé. |
| 64 | 64 | */ |
| 65 | 65 | function verifier_crash_tables() { |
| 66 | - if (spip_connect()) { |
|
| 67 | - include_spip('base/serial'); |
|
| 68 | - include_spip('base/auxiliaires'); |
|
| 69 | - $crash = []; |
|
| 70 | - foreach (['tables_principales', 'tables_auxiliaires'] as $com) { |
|
| 71 | - foreach ($GLOBALS[$com] as $table => $desc) { |
|
| 72 | - if ( |
|
| 73 | - !sql_select('*', $table, '', '', '', 1) |
|
| 74 | - and !defined('spip_interdire_cache') |
|
| 75 | - ) { # cas "LOST CONNECTION" |
|
| 76 | - $crash[] = $table; |
|
| 77 | - } |
|
| 78 | - } |
|
| 79 | - } |
|
| 80 | - #$crash[] = 'test'; |
|
| 81 | - if ($crash) { |
|
| 82 | - ecrire_meta('message_crash_tables', serialize($crash)); |
|
| 83 | - spip_log('crash des tables', 'err'); |
|
| 84 | - spip_log($crash, 'err'); |
|
| 85 | - } else { |
|
| 86 | - effacer_meta('message_crash_tables'); |
|
| 87 | - } |
|
| 66 | + if (spip_connect()) { |
|
| 67 | + include_spip('base/serial'); |
|
| 68 | + include_spip('base/auxiliaires'); |
|
| 69 | + $crash = []; |
|
| 70 | + foreach (['tables_principales', 'tables_auxiliaires'] as $com) { |
|
| 71 | + foreach ($GLOBALS[$com] as $table => $desc) { |
|
| 72 | + if ( |
|
| 73 | + !sql_select('*', $table, '', '', '', 1) |
|
| 74 | + and !defined('spip_interdire_cache') |
|
| 75 | + ) { # cas "LOST CONNECTION" |
|
| 76 | + $crash[] = $table; |
|
| 77 | + } |
|
| 78 | + } |
|
| 79 | + } |
|
| 80 | + #$crash[] = 'test'; |
|
| 81 | + if ($crash) { |
|
| 82 | + ecrire_meta('message_crash_tables', serialize($crash)); |
|
| 83 | + spip_log('crash des tables', 'err'); |
|
| 84 | + spip_log($crash, 'err'); |
|
| 85 | + } else { |
|
| 86 | + effacer_meta('message_crash_tables'); |
|
| 87 | + } |
|
| 88 | 88 | |
| 89 | - return $crash; |
|
| 90 | - } |
|
| 89 | + return $crash; |
|
| 90 | + } |
|
| 91 | 91 | |
| 92 | - return false; |
|
| 92 | + return false; |
|
| 93 | 93 | } |
| 94 | 94 | |
| 95 | 95 | /** |
@@ -105,16 +105,16 @@ discard block |
||
| 105 | 105 | * @return string |
| 106 | 106 | */ |
| 107 | 107 | function message_crash_tables() { |
| 108 | - if ($crash = verifier_crash_tables()) { |
|
| 109 | - return |
|
| 110 | - '<strong>' . _T('texte_recuperer_base') . '</strong><br />' |
|
| 111 | - . ' <tt>' . join(', ', $crash) . '</tt><br />' |
|
| 112 | - . generer_form_ecrire( |
|
| 113 | - 'base_repair', |
|
| 114 | - _T('texte_crash_base'), |
|
| 115 | - '', |
|
| 116 | - _T('bouton_tenter_recuperation') |
|
| 117 | - ); |
|
| 118 | - } |
|
| 119 | - return ''; |
|
| 108 | + if ($crash = verifier_crash_tables()) { |
|
| 109 | + return |
|
| 110 | + '<strong>' . _T('texte_recuperer_base') . '</strong><br />' |
|
| 111 | + . ' <tt>' . join(', ', $crash) . '</tt><br />' |
|
| 112 | + . generer_form_ecrire( |
|
| 113 | + 'base_repair', |
|
| 114 | + _T('texte_crash_base'), |
|
| 115 | + '', |
|
| 116 | + _T('bouton_tenter_recuperation') |
|
| 117 | + ); |
|
| 118 | + } |
|
| 119 | + return ''; |
|
| 120 | 120 | } |
@@ -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 | /** |
@@ -43,22 +43,22 @@ discard block |
||
| 43 | 43 | * Pile complétée par le code à générer |
| 44 | 44 | */ |
| 45 | 45 | function balise_ALERTE_MESSAGE_dist($p) { |
| 46 | - $_texte = interprete_argument_balise(1, $p); |
|
| 47 | - $_titre = interprete_argument_balise(2, $p); |
|
| 48 | - $_class = interprete_argument_balise(3, $p); |
|
| 49 | - $_role = interprete_argument_balise(4, $p); |
|
| 50 | - $_id = interprete_argument_balise(5, $p); |
|
| 51 | - $_texte = ($_texte ?: "''"); |
|
| 52 | - $_titre = ($_titre ? ", $_titre" : ', null'); |
|
| 53 | - $_class = ($_class ? ", $_class" : ', null'); |
|
| 54 | - $_role = ($_role ? ", $_role" : ', null'); |
|
| 55 | - $_id = ($_id ? ", $_id" : ', null'); |
|
| 46 | + $_texte = interprete_argument_balise(1, $p); |
|
| 47 | + $_titre = interprete_argument_balise(2, $p); |
|
| 48 | + $_class = interprete_argument_balise(3, $p); |
|
| 49 | + $_role = interprete_argument_balise(4, $p); |
|
| 50 | + $_id = interprete_argument_balise(5, $p); |
|
| 51 | + $_texte = ($_texte ?: "''"); |
|
| 52 | + $_titre = ($_titre ? ", $_titre" : ', null'); |
|
| 53 | + $_class = ($_class ? ", $_class" : ', null'); |
|
| 54 | + $_role = ($_role ? ", $_role" : ', null'); |
|
| 55 | + $_id = ($_id ? ", $_id" : ', null'); |
|
| 56 | 56 | |
| 57 | - $f = chercher_filtre('message_alerte'); |
|
| 58 | - $p->code = "$f($_texte$_titre$_class$_role$_id)"; |
|
| 59 | - $p->interdire_scripts = false; |
|
| 57 | + $f = chercher_filtre('message_alerte'); |
|
| 58 | + $p->code = "$f($_texte$_titre$_class$_role$_id)"; |
|
| 59 | + $p->interdire_scripts = false; |
|
| 60 | 60 | |
| 61 | - return $p; |
|
| 61 | + return $p; |
|
| 62 | 62 | } |
| 63 | 63 | |
| 64 | 64 | /** |
@@ -86,20 +86,20 @@ discard block |
||
| 86 | 86 | * Pile complétée par le code à générer |
| 87 | 87 | */ |
| 88 | 88 | function balise_ALERTE_OUVRIR_dist($p) { |
| 89 | - $_titre = interprete_argument_balise(1, $p); |
|
| 90 | - $_class = interprete_argument_balise(2, $p); |
|
| 91 | - $_role = interprete_argument_balise(3, $p); |
|
| 92 | - $_id = interprete_argument_balise(4, $p); |
|
| 93 | - $_titre = ($_titre ? "$_titre" : 'null'); |
|
| 94 | - $_class = ($_class ? ", $_class" : ', null'); |
|
| 95 | - $_role = ($_role ? ", $_role" : ', null'); |
|
| 96 | - $_id = ($_id ? ", $_id" : ', null'); |
|
| 89 | + $_titre = interprete_argument_balise(1, $p); |
|
| 90 | + $_class = interprete_argument_balise(2, $p); |
|
| 91 | + $_role = interprete_argument_balise(3, $p); |
|
| 92 | + $_id = interprete_argument_balise(4, $p); |
|
| 93 | + $_titre = ($_titre ? "$_titre" : 'null'); |
|
| 94 | + $_class = ($_class ? ", $_class" : ', null'); |
|
| 95 | + $_role = ($_role ? ", $_role" : ', null'); |
|
| 96 | + $_id = ($_id ? ", $_id" : ', null'); |
|
| 97 | 97 | |
| 98 | - $f = chercher_filtre('message_alerte_ouvrir'); |
|
| 99 | - $p->code = "$f($_titre$_class$_role$_id)"; |
|
| 100 | - $p->interdire_scripts = false; |
|
| 98 | + $f = chercher_filtre('message_alerte_ouvrir'); |
|
| 99 | + $p->code = "$f($_titre$_class$_role$_id)"; |
|
| 100 | + $p->interdire_scripts = false; |
|
| 101 | 101 | |
| 102 | - return $p; |
|
| 102 | + return $p; |
|
| 103 | 103 | } |
| 104 | 104 | |
| 105 | 105 | /** |
@@ -121,11 +121,11 @@ discard block |
||
| 121 | 121 | * Pile complétée par le code à générer |
| 122 | 122 | */ |
| 123 | 123 | function balise_ALERTE_FERMER_dist($p) { |
| 124 | - $f = chercher_filtre('message_alerte_fermer'); |
|
| 125 | - $p->code = "$f()"; |
|
| 126 | - $p->interdire_scripts = false; |
|
| 124 | + $f = chercher_filtre('message_alerte_fermer'); |
|
| 125 | + $p->code = "$f()"; |
|
| 126 | + $p->interdire_scripts = false; |
|
| 127 | 127 | |
| 128 | - return $p; |
|
| 128 | + return $p; |
|
| 129 | 129 | } |
| 130 | 130 | |
| 131 | 131 | /** |
@@ -160,14 +160,14 @@ discard block |
||
| 160 | 160 | */ |
| 161 | 161 | function message_alerte(string $texte, ?string $titre = null, ?string $class = null, ?string $role = null, ?string $id = null): string { |
| 162 | 162 | |
| 163 | - $message_alerte_ouvrir = chercher_filtre('message_alerte_ouvrir'); |
|
| 164 | - $message_alerte_fermer = chercher_filtre('message_alerte_fermer'); |
|
| 165 | - $message = |
|
| 166 | - $message_alerte_ouvrir($titre, $class, $role, $id) . |
|
| 167 | - $texte . |
|
| 168 | - $message_alerte_fermer(); |
|
| 163 | + $message_alerte_ouvrir = chercher_filtre('message_alerte_ouvrir'); |
|
| 164 | + $message_alerte_fermer = chercher_filtre('message_alerte_fermer'); |
|
| 165 | + $message = |
|
| 166 | + $message_alerte_ouvrir($titre, $class, $role, $id) . |
|
| 167 | + $texte . |
|
| 168 | + $message_alerte_fermer(); |
|
| 169 | 169 | |
| 170 | - return $message; |
|
| 170 | + return $message; |
|
| 171 | 171 | } |
| 172 | 172 | |
| 173 | 173 | /** |
@@ -198,56 +198,56 @@ discard block |
||
| 198 | 198 | */ |
| 199 | 199 | function message_alerte_ouvrir(?string $titre = null, ?string $class = null, ?string $role = null, ?string $id = null): string { |
| 200 | 200 | |
| 201 | - $prive = test_espace_prive(); |
|
| 201 | + $prive = test_espace_prive(); |
|
| 202 | 202 | |
| 203 | - // Valeurs par défaut |
|
| 204 | - $titre = trim($titre ?? ''); |
|
| 205 | - $role ??= 'alert'; // fallback uniquement si null |
|
| 206 | - $class ??= 'notice'; // fallback uniquement si null |
|
| 203 | + // Valeurs par défaut |
|
| 204 | + $titre = trim($titre ?? ''); |
|
| 205 | + $role ??= 'alert'; // fallback uniquement si null |
|
| 206 | + $class ??= 'notice'; // fallback uniquement si null |
|
| 207 | 207 | |
| 208 | - // Type d'alerte : le chercher dans les classes, nettoyer celles-ci, puis le réinjecter |
|
| 209 | - $types = [ |
|
| 210 | - 'notice', |
|
| 211 | - 'error', |
|
| 212 | - 'success', |
|
| 213 | - 'info', |
|
| 214 | - ]; |
|
| 215 | - $type = array_intersect(explode(' ', $class), $types); |
|
| 216 | - $type = reset($type); |
|
| 217 | - $class = trim(str_replace($types, '', $class) . " $type"); |
|
| 208 | + // Type d'alerte : le chercher dans les classes, nettoyer celles-ci, puis le réinjecter |
|
| 209 | + $types = [ |
|
| 210 | + 'notice', |
|
| 211 | + 'error', |
|
| 212 | + 'success', |
|
| 213 | + 'info', |
|
| 214 | + ]; |
|
| 215 | + $type = array_intersect(explode(' ', $class), $types); |
|
| 216 | + $type = reset($type); |
|
| 217 | + $class = trim(str_replace($types, '', $class) . " $type"); |
|
| 218 | 218 | |
| 219 | - // Classes |
|
| 220 | - $class_racine = 'msg-alert'; |
|
| 221 | - $clearfix = ($prive ? 'clearfix' : ''); |
|
| 222 | - $class_alerte = "$class_racine $class"; |
|
| 223 | - $class_texte = "${class_racine}__text $clearfix"; |
|
| 224 | - $class_titre = "${class_racine}__heading"; |
|
| 219 | + // Classes |
|
| 220 | + $class_racine = 'msg-alert'; |
|
| 221 | + $clearfix = ($prive ? 'clearfix' : ''); |
|
| 222 | + $class_alerte = "$class_racine $class"; |
|
| 223 | + $class_texte = "${class_racine}__text $clearfix"; |
|
| 224 | + $class_titre = "${class_racine}__heading"; |
|
| 225 | 225 | |
| 226 | - // Titre : markup |
|
| 227 | - $titre = trim($titre); |
|
| 228 | - if (strlen($titre)) { |
|
| 229 | - include_spip('inc/filtres'); |
|
| 230 | - // Si besoin on encapsule le titre : un h3 dans le privé, un simple div sinon. |
|
| 231 | - $cherche_tag = ($prive ? '<h' : '<'); |
|
| 232 | - $wrap_tag = ($prive ? '<h3>' : '<div>'); |
|
| 233 | - if (strpos($titre, $cherche_tag) !== 0) { |
|
| 234 | - $titre = wrap($titre, $wrap_tag); |
|
| 235 | - } |
|
| 236 | - // puis on ajoute la classe |
|
| 237 | - $titre = ajouter_class($titre, $class_titre); |
|
| 238 | - } |
|
| 226 | + // Titre : markup |
|
| 227 | + $titre = trim($titre); |
|
| 228 | + if (strlen($titre)) { |
|
| 229 | + include_spip('inc/filtres'); |
|
| 230 | + // Si besoin on encapsule le titre : un h3 dans le privé, un simple div sinon. |
|
| 231 | + $cherche_tag = ($prive ? '<h' : '<'); |
|
| 232 | + $wrap_tag = ($prive ? '<h3>' : '<div>'); |
|
| 233 | + if (strpos($titre, $cherche_tag) !== 0) { |
|
| 234 | + $titre = wrap($titre, $wrap_tag); |
|
| 235 | + } |
|
| 236 | + // puis on ajoute la classe |
|
| 237 | + $titre = ajouter_class($titre, $class_titre); |
|
| 238 | + } |
|
| 239 | 239 | |
| 240 | - // Attributs |
|
| 241 | - $attr_role = ($role ? "role=\"$role\"" : ''); |
|
| 242 | - $attr_id = ($id ? "id=\"$id\"" : ''); |
|
| 243 | - $attr_data = ($type ? "data-alert=\"$type\"" : ''); |
|
| 240 | + // Attributs |
|
| 241 | + $attr_role = ($role ? "role=\"$role\"" : ''); |
|
| 242 | + $attr_id = ($id ? "id=\"$id\"" : ''); |
|
| 243 | + $attr_data = ($type ? "data-alert=\"$type\"" : ''); |
|
| 244 | 244 | |
| 245 | - $message = |
|
| 246 | - "<div class=\"$class_alerte\" $attr_role $attr_id $attr_data>" |
|
| 247 | - . $titre |
|
| 248 | - . "<div class=\"$class_texte\">"; |
|
| 245 | + $message = |
|
| 246 | + "<div class=\"$class_alerte\" $attr_role $attr_id $attr_data>" |
|
| 247 | + . $titre |
|
| 248 | + . "<div class=\"$class_texte\">"; |
|
| 249 | 249 | |
| 250 | - return $message; |
|
| 250 | + return $message; |
|
| 251 | 251 | } |
| 252 | 252 | |
| 253 | 253 | /** |
@@ -261,5 +261,5 @@ discard block |
||
| 261 | 261 | * HTML de fin de l'alerte |
| 262 | 262 | */ |
| 263 | 263 | function message_alerte_fermer(): string { |
| 264 | - return '</div></div>'; |
|
| 264 | + return '</div></div>'; |
|
| 265 | 265 | } |
@@ -9,384 +9,384 @@ |
||
| 9 | 9 | |
| 10 | 10 | $GLOBALS['CHARSET']['translit'] = [ |
| 11 | 11 | // latin [fausse plage] |
| 12 | - 128 => 'EUR', |
|
| 13 | - 131 => 'f', |
|
| 14 | - 140 => 'OE', |
|
| 15 | - 147 => '\'\'', |
|
| 16 | - 148 => '\'\'', |
|
| 17 | - 153 => '(TM)', |
|
| 18 | - 156 => 'oe', |
|
| 19 | - 159 => 'Y', |
|
| 12 | + 128 => 'EUR', |
|
| 13 | + 131 => 'f', |
|
| 14 | + 140 => 'OE', |
|
| 15 | + 147 => '\'\'', |
|
| 16 | + 148 => '\'\'', |
|
| 17 | + 153 => '(TM)', |
|
| 18 | + 156 => 'oe', |
|
| 19 | + 159 => 'Y', |
|
| 20 | 20 | |
| 21 | 21 | // latin [legal] |
| 22 | - 160 => ' ', |
|
| 23 | - 161 => '!', |
|
| 24 | - 162 => 'c', |
|
| 25 | - 163 => 'L', |
|
| 26 | - 164 => 'O', |
|
| 27 | - 165 => 'yen', |
|
| 28 | - 166 => '|', |
|
| 29 | - 167 => 'p', |
|
| 30 | - 169 => '(c)', |
|
| 31 | - 171 => '<<', |
|
| 32 | - 172 => '-', |
|
| 33 | - 173 => '-', |
|
| 34 | - 174 => '(R)', |
|
| 35 | - 176 => 'o', |
|
| 36 | - 177 => '+-', |
|
| 37 | - 181 => 'mu', |
|
| 38 | - 182 => 'p', |
|
| 39 | - 183 => '.', |
|
| 40 | - 186 => 'o ', |
|
| 41 | - 187 => '>>', |
|
| 42 | - 191 => '?', |
|
| 43 | - 192 => 'A', |
|
| 44 | - 193 => 'A', |
|
| 45 | - 194 => 'A', |
|
| 46 | - 195 => 'A', |
|
| 47 | - 196 => 'A', |
|
| 48 | - 197 => 'A', |
|
| 49 | - 198 => 'AE', |
|
| 50 | - 199 => 'C', |
|
| 51 | - 200 => 'E', |
|
| 52 | - 201 => 'E', |
|
| 53 | - 202 => 'E', |
|
| 54 | - 203 => 'E', |
|
| 55 | - 204 => 'I', |
|
| 56 | - 205 => 'I', |
|
| 57 | - 206 => 'I', |
|
| 58 | - 207 => 'I', |
|
| 59 | - 209 => 'N', |
|
| 60 | - 210 => 'O', |
|
| 61 | - 211 => 'O', |
|
| 62 | - 212 => 'O', |
|
| 63 | - 213 => 'O', |
|
| 64 | - 214 => 'O', |
|
| 65 | - 216 => 'O', |
|
| 66 | - 217 => 'U', |
|
| 67 | - 218 => 'U', |
|
| 68 | - 219 => 'U', |
|
| 69 | - 220 => 'U', |
|
| 70 | - 223 => 'ss', |
|
| 71 | - 224 => 'a', |
|
| 72 | - 225 => 'a', |
|
| 73 | - 226 => 'a', |
|
| 74 | - 227 => 'a', |
|
| 75 | - 228 => 'a', |
|
| 76 | - 229 => 'a', |
|
| 77 | - 230 => 'ae', |
|
| 78 | - 231 => 'c', |
|
| 79 | - 232 => 'e', |
|
| 80 | - 233 => 'e', |
|
| 81 | - 234 => 'e', |
|
| 82 | - 235 => 'e', |
|
| 83 | - 236 => 'i', |
|
| 84 | - 237 => 'i', |
|
| 85 | - 238 => 'i', |
|
| 86 | - 239 => 'i', |
|
| 87 | - 241 => 'n', |
|
| 88 | - 242 => 'o', |
|
| 89 | - 243 => 'o', |
|
| 90 | - 244 => 'o', |
|
| 91 | - 245 => 'o', |
|
| 92 | - 246 => 'o', |
|
| 93 | - 248 => 'o', |
|
| 94 | - 249 => 'u', |
|
| 95 | - 250 => 'u', |
|
| 96 | - 251 => 'u', |
|
| 97 | - 252 => 'u', |
|
| 98 | - 255 => 'y', |
|
| 22 | + 160 => ' ', |
|
| 23 | + 161 => '!', |
|
| 24 | + 162 => 'c', |
|
| 25 | + 163 => 'L', |
|
| 26 | + 164 => 'O', |
|
| 27 | + 165 => 'yen', |
|
| 28 | + 166 => '|', |
|
| 29 | + 167 => 'p', |
|
| 30 | + 169 => '(c)', |
|
| 31 | + 171 => '<<', |
|
| 32 | + 172 => '-', |
|
| 33 | + 173 => '-', |
|
| 34 | + 174 => '(R)', |
|
| 35 | + 176 => 'o', |
|
| 36 | + 177 => '+-', |
|
| 37 | + 181 => 'mu', |
|
| 38 | + 182 => 'p', |
|
| 39 | + 183 => '.', |
|
| 40 | + 186 => 'o ', |
|
| 41 | + 187 => '>>', |
|
| 42 | + 191 => '?', |
|
| 43 | + 192 => 'A', |
|
| 44 | + 193 => 'A', |
|
| 45 | + 194 => 'A', |
|
| 46 | + 195 => 'A', |
|
| 47 | + 196 => 'A', |
|
| 48 | + 197 => 'A', |
|
| 49 | + 198 => 'AE', |
|
| 50 | + 199 => 'C', |
|
| 51 | + 200 => 'E', |
|
| 52 | + 201 => 'E', |
|
| 53 | + 202 => 'E', |
|
| 54 | + 203 => 'E', |
|
| 55 | + 204 => 'I', |
|
| 56 | + 205 => 'I', |
|
| 57 | + 206 => 'I', |
|
| 58 | + 207 => 'I', |
|
| 59 | + 209 => 'N', |
|
| 60 | + 210 => 'O', |
|
| 61 | + 211 => 'O', |
|
| 62 | + 212 => 'O', |
|
| 63 | + 213 => 'O', |
|
| 64 | + 214 => 'O', |
|
| 65 | + 216 => 'O', |
|
| 66 | + 217 => 'U', |
|
| 67 | + 218 => 'U', |
|
| 68 | + 219 => 'U', |
|
| 69 | + 220 => 'U', |
|
| 70 | + 223 => 'ss', |
|
| 71 | + 224 => 'a', |
|
| 72 | + 225 => 'a', |
|
| 73 | + 226 => 'a', |
|
| 74 | + 227 => 'a', |
|
| 75 | + 228 => 'a', |
|
| 76 | + 229 => 'a', |
|
| 77 | + 230 => 'ae', |
|
| 78 | + 231 => 'c', |
|
| 79 | + 232 => 'e', |
|
| 80 | + 233 => 'e', |
|
| 81 | + 234 => 'e', |
|
| 82 | + 235 => 'e', |
|
| 83 | + 236 => 'i', |
|
| 84 | + 237 => 'i', |
|
| 85 | + 238 => 'i', |
|
| 86 | + 239 => 'i', |
|
| 87 | + 241 => 'n', |
|
| 88 | + 242 => 'o', |
|
| 89 | + 243 => 'o', |
|
| 90 | + 244 => 'o', |
|
| 91 | + 245 => 'o', |
|
| 92 | + 246 => 'o', |
|
| 93 | + 248 => 'o', |
|
| 94 | + 249 => 'u', |
|
| 95 | + 250 => 'u', |
|
| 96 | + 251 => 'u', |
|
| 97 | + 252 => 'u', |
|
| 98 | + 255 => 'y', |
|
| 99 | 99 | |
| 100 | 100 | // turc |
| 101 | - 286 => 'G', |
|
| 102 | - 287 => 'g', |
|
| 103 | - 304 => 'I', |
|
| 104 | - 305 => 'i', |
|
| 101 | + 286 => 'G', |
|
| 102 | + 287 => 'g', |
|
| 103 | + 304 => 'I', |
|
| 104 | + 305 => 'i', |
|
| 105 | 105 | |
| 106 | 106 | // esperanto |
| 107 | - 264 => 'Cx', |
|
| 108 | - 265 => 'cx', |
|
| 109 | - 284 => 'Gx', |
|
| 110 | - 285 => 'gx', |
|
| 111 | - 292 => 'Hx', |
|
| 112 | - 293 => 'hx', |
|
| 113 | - 308 => 'Jx', |
|
| 114 | - 309 => 'jx', |
|
| 115 | - 348 => 'Sx', |
|
| 116 | - 349 => 'sx', |
|
| 117 | - 364 => 'Ux', |
|
| 118 | - 365 => 'ux', |
|
| 107 | + 264 => 'Cx', |
|
| 108 | + 265 => 'cx', |
|
| 109 | + 284 => 'Gx', |
|
| 110 | + 285 => 'gx', |
|
| 111 | + 292 => 'Hx', |
|
| 112 | + 293 => 'hx', |
|
| 113 | + 308 => 'Jx', |
|
| 114 | + 309 => 'jx', |
|
| 115 | + 348 => 'Sx', |
|
| 116 | + 349 => 'sx', |
|
| 117 | + 364 => 'Ux', |
|
| 118 | + 365 => 'ux', |
|
| 119 | 119 | |
| 120 | 120 | |
| 121 | 121 | // latin2 [Czech] |
| 122 | - 283 => 'e', |
|
| 123 | - 353 => 's', |
|
| 124 | - 269 => 'c', |
|
| 125 | - 345 => 'r', |
|
| 126 | - 382 => 'z', |
|
| 127 | - 367 => 'u', |
|
| 128 | - 328 => 'n', |
|
| 129 | - 357 => 't', |
|
| 130 | - 271 => 'd', |
|
| 131 | - 449 => 'o', |
|
| 132 | - 282 => 'E', |
|
| 133 | - 352 => 'S', |
|
| 134 | - 268 => 'C', |
|
| 135 | - 344 => 'R', |
|
| 136 | - 381 => 'Z', |
|
| 137 | - 366 => 'U', |
|
| 138 | - 327 => 'N', |
|
| 139 | - 356 => 'T', |
|
| 140 | - 270 => 'D', |
|
| 141 | - 467 => 'O', |
|
| 122 | + 283 => 'e', |
|
| 123 | + 353 => 's', |
|
| 124 | + 269 => 'c', |
|
| 125 | + 345 => 'r', |
|
| 126 | + 382 => 'z', |
|
| 127 | + 367 => 'u', |
|
| 128 | + 328 => 'n', |
|
| 129 | + 357 => 't', |
|
| 130 | + 271 => 'd', |
|
| 131 | + 449 => 'o', |
|
| 132 | + 282 => 'E', |
|
| 133 | + 352 => 'S', |
|
| 134 | + 268 => 'C', |
|
| 135 | + 344 => 'R', |
|
| 136 | + 381 => 'Z', |
|
| 137 | + 366 => 'U', |
|
| 138 | + 327 => 'N', |
|
| 139 | + 356 => 'T', |
|
| 140 | + 270 => 'D', |
|
| 141 | + 467 => 'O', |
|
| 142 | 142 | |
| 143 | 143 | // francais |
| 144 | - 338 => 'OE', |
|
| 145 | - 339 => 'oe', |
|
| 146 | - 376 => 'Y', |
|
| 147 | - 402 => 'f', |
|
| 144 | + 338 => 'OE', |
|
| 145 | + 339 => 'oe', |
|
| 146 | + 376 => 'Y', |
|
| 147 | + 402 => 'f', |
|
| 148 | 148 | |
| 149 | 149 | //polskie |
| 150 | - 260 => 'A', |
|
| 151 | - 261 => 'a', |
|
| 152 | - 262 => 'C', |
|
| 153 | - 263 => 'c', |
|
| 154 | - 280 => 'E', |
|
| 155 | - 281 => 'e', |
|
| 156 | - 321 => 'L', |
|
| 157 | - 322 => 'l', |
|
| 158 | - 323 => 'N', |
|
| 159 | - 324 => 'n', |
|
| 160 | - 346 => 'S', |
|
| 161 | - 347 => 's', |
|
| 162 | - 377 => 'Z', |
|
| 163 | - 378 => 'z', |
|
| 164 | - 379 => 'Z', |
|
| 165 | - 380 => 'z', |
|
| 150 | + 260 => 'A', |
|
| 151 | + 261 => 'a', |
|
| 152 | + 262 => 'C', |
|
| 153 | + 263 => 'c', |
|
| 154 | + 280 => 'E', |
|
| 155 | + 281 => 'e', |
|
| 156 | + 321 => 'L', |
|
| 157 | + 322 => 'l', |
|
| 158 | + 323 => 'N', |
|
| 159 | + 324 => 'n', |
|
| 160 | + 346 => 'S', |
|
| 161 | + 347 => 's', |
|
| 162 | + 377 => 'Z', |
|
| 163 | + 378 => 'z', |
|
| 164 | + 379 => 'Z', |
|
| 165 | + 380 => 'z', |
|
| 166 | 166 | |
| 167 | 167 | //roumain |
| 168 | - 258 => 'A', |
|
| 169 | - 259 => 'a', |
|
| 170 | - 354 => 'T', |
|
| 171 | - 355 => 't', |
|
| 168 | + 258 => 'A', |
|
| 169 | + 259 => 'a', |
|
| 170 | + 354 => 'T', |
|
| 171 | + 355 => 't', |
|
| 172 | 172 | |
| 173 | 173 | //turc & roumain |
| 174 | - 350 => 'S', |
|
| 175 | - 351 => 's', |
|
| 174 | + 350 => 'S', |
|
| 175 | + 351 => 's', |
|
| 176 | 176 | |
| 177 | 177 | // cyrillique |
| 178 | - 1026 => 'D%', |
|
| 179 | - 1027 => 'G%', |
|
| 180 | - 8218 => '\'', |
|
| 181 | - 1107 => 'g%', |
|
| 182 | - 8222 => '"', |
|
| 183 | - 8230 => '...', |
|
| 184 | - 8224 => '/-', |
|
| 185 | - 8225 => '/=', |
|
| 186 | - 8364 => 'EUR', |
|
| 187 | - 8240 => '0/00', |
|
| 188 | - 1033 => 'LJ', |
|
| 189 | - 8249 => '<', |
|
| 190 | - 1034 => 'NJ', |
|
| 191 | - 1036 => 'KJ', |
|
| 192 | - 1035 => 'Ts', |
|
| 193 | - 1039 => 'DZ', |
|
| 194 | - 1106 => 'd%', |
|
| 195 | - 8216 => '`', |
|
| 196 | - 8217 => '\'', |
|
| 197 | - 8220 => '"', |
|
| 198 | - 8221 => '"', |
|
| 199 | - 8226 => ' o ', |
|
| 200 | - 8211 => '-', |
|
| 201 | - 8212 => '~', |
|
| 202 | - 8482 => '(TM)', |
|
| 203 | - 1113 => 'lj', |
|
| 204 | - 8250 => '>', |
|
| 205 | - 1114 => 'nj', |
|
| 206 | - 1116 => 'kj', |
|
| 207 | - 1115 => 'ts', |
|
| 208 | - 1119 => 'dz', |
|
| 209 | - 1038 => 'V%', |
|
| 210 | - 1118 => 'v%', |
|
| 211 | - 1032 => 'J%', |
|
| 212 | - 1168 => 'G3', |
|
| 213 | - 1025 => 'IO', |
|
| 214 | - 1028 => 'IE', |
|
| 215 | - 1031 => 'YI', |
|
| 216 | - 1030 => 'II', |
|
| 217 | - 1110 => 'ii', |
|
| 218 | - 1169 => 'g3', |
|
| 219 | - 1105 => 'io', |
|
| 220 | - 8470 => 'No.', |
|
| 221 | - 1108 => 'ie', |
|
| 222 | - 1112 => 'j%', |
|
| 223 | - 1029 => 'DS', |
|
| 224 | - 1109 => 'ds', |
|
| 225 | - 1111 => 'yi', |
|
| 226 | - 1040 => 'A', |
|
| 227 | - 1041 => 'B', |
|
| 228 | - 1042 => 'V', |
|
| 229 | - 1043 => 'G', |
|
| 230 | - 1044 => 'D', |
|
| 231 | - 1045 => 'E', |
|
| 232 | - 1046 => 'ZH', |
|
| 233 | - 1047 => 'Z', |
|
| 234 | - 1048 => 'I', |
|
| 235 | - 1049 => 'J', |
|
| 236 | - 1050 => 'K', |
|
| 237 | - 1051 => 'L', |
|
| 238 | - 1052 => 'M', |
|
| 239 | - 1053 => 'N', |
|
| 240 | - 1054 => 'O', |
|
| 241 | - 1055 => 'P', |
|
| 242 | - 1056 => 'R', |
|
| 243 | - 1057 => 'S', |
|
| 244 | - 1058 => 'T', |
|
| 245 | - 1059 => 'U', |
|
| 246 | - 1060 => 'F', |
|
| 247 | - 1061 => 'H', |
|
| 248 | - 1062 => 'C', |
|
| 249 | - 1063 => 'CH', |
|
| 250 | - 1064 => 'SH', |
|
| 251 | - 1065 => 'SCH', |
|
| 252 | - 1066 => '"', |
|
| 253 | - 1067 => 'Y', |
|
| 254 | - 1068 => '\'', |
|
| 255 | - 1069 => '`E', |
|
| 256 | - 1070 => 'YU', |
|
| 257 | - 1071 => 'YA', |
|
| 258 | - 1072 => 'a', |
|
| 259 | - 1073 => 'b', |
|
| 260 | - 1074 => 'v', |
|
| 261 | - 1075 => 'g', |
|
| 262 | - 1076 => 'd', |
|
| 263 | - 1077 => 'e', |
|
| 264 | - 1078 => 'zh', |
|
| 265 | - 1079 => 'z', |
|
| 266 | - 1080 => 'i', |
|
| 267 | - 1081 => 'j', |
|
| 268 | - 1082 => 'k', |
|
| 269 | - 1083 => 'l', |
|
| 270 | - 1084 => 'm', |
|
| 271 | - 1085 => 'n', |
|
| 272 | - 1086 => 'o', |
|
| 273 | - 1087 => 'p', |
|
| 274 | - 1088 => 'r', |
|
| 275 | - 1089 => 's', |
|
| 276 | - 1090 => 't', |
|
| 277 | - 1091 => 'u', |
|
| 278 | - 1092 => 'f', |
|
| 279 | - 1093 => 'h', |
|
| 280 | - 1094 => 'c', |
|
| 281 | - 1095 => 'ch', |
|
| 282 | - 1096 => 'sh', |
|
| 283 | - 1097 => 'sch', |
|
| 284 | - 1098 => '"', |
|
| 285 | - 1099 => 'y', |
|
| 286 | - 1100 => '\'', |
|
| 287 | - 1101 => '`e', |
|
| 288 | - 1102 => 'yu', |
|
| 289 | - 1103 => 'ya', |
|
| 178 | + 1026 => 'D%', |
|
| 179 | + 1027 => 'G%', |
|
| 180 | + 8218 => '\'', |
|
| 181 | + 1107 => 'g%', |
|
| 182 | + 8222 => '"', |
|
| 183 | + 8230 => '...', |
|
| 184 | + 8224 => '/-', |
|
| 185 | + 8225 => '/=', |
|
| 186 | + 8364 => 'EUR', |
|
| 187 | + 8240 => '0/00', |
|
| 188 | + 1033 => 'LJ', |
|
| 189 | + 8249 => '<', |
|
| 190 | + 1034 => 'NJ', |
|
| 191 | + 1036 => 'KJ', |
|
| 192 | + 1035 => 'Ts', |
|
| 193 | + 1039 => 'DZ', |
|
| 194 | + 1106 => 'd%', |
|
| 195 | + 8216 => '`', |
|
| 196 | + 8217 => '\'', |
|
| 197 | + 8220 => '"', |
|
| 198 | + 8221 => '"', |
|
| 199 | + 8226 => ' o ', |
|
| 200 | + 8211 => '-', |
|
| 201 | + 8212 => '~', |
|
| 202 | + 8482 => '(TM)', |
|
| 203 | + 1113 => 'lj', |
|
| 204 | + 8250 => '>', |
|
| 205 | + 1114 => 'nj', |
|
| 206 | + 1116 => 'kj', |
|
| 207 | + 1115 => 'ts', |
|
| 208 | + 1119 => 'dz', |
|
| 209 | + 1038 => 'V%', |
|
| 210 | + 1118 => 'v%', |
|
| 211 | + 1032 => 'J%', |
|
| 212 | + 1168 => 'G3', |
|
| 213 | + 1025 => 'IO', |
|
| 214 | + 1028 => 'IE', |
|
| 215 | + 1031 => 'YI', |
|
| 216 | + 1030 => 'II', |
|
| 217 | + 1110 => 'ii', |
|
| 218 | + 1169 => 'g3', |
|
| 219 | + 1105 => 'io', |
|
| 220 | + 8470 => 'No.', |
|
| 221 | + 1108 => 'ie', |
|
| 222 | + 1112 => 'j%', |
|
| 223 | + 1029 => 'DS', |
|
| 224 | + 1109 => 'ds', |
|
| 225 | + 1111 => 'yi', |
|
| 226 | + 1040 => 'A', |
|
| 227 | + 1041 => 'B', |
|
| 228 | + 1042 => 'V', |
|
| 229 | + 1043 => 'G', |
|
| 230 | + 1044 => 'D', |
|
| 231 | + 1045 => 'E', |
|
| 232 | + 1046 => 'ZH', |
|
| 233 | + 1047 => 'Z', |
|
| 234 | + 1048 => 'I', |
|
| 235 | + 1049 => 'J', |
|
| 236 | + 1050 => 'K', |
|
| 237 | + 1051 => 'L', |
|
| 238 | + 1052 => 'M', |
|
| 239 | + 1053 => 'N', |
|
| 240 | + 1054 => 'O', |
|
| 241 | + 1055 => 'P', |
|
| 242 | + 1056 => 'R', |
|
| 243 | + 1057 => 'S', |
|
| 244 | + 1058 => 'T', |
|
| 245 | + 1059 => 'U', |
|
| 246 | + 1060 => 'F', |
|
| 247 | + 1061 => 'H', |
|
| 248 | + 1062 => 'C', |
|
| 249 | + 1063 => 'CH', |
|
| 250 | + 1064 => 'SH', |
|
| 251 | + 1065 => 'SCH', |
|
| 252 | + 1066 => '"', |
|
| 253 | + 1067 => 'Y', |
|
| 254 | + 1068 => '\'', |
|
| 255 | + 1069 => '`E', |
|
| 256 | + 1070 => 'YU', |
|
| 257 | + 1071 => 'YA', |
|
| 258 | + 1072 => 'a', |
|
| 259 | + 1073 => 'b', |
|
| 260 | + 1074 => 'v', |
|
| 261 | + 1075 => 'g', |
|
| 262 | + 1076 => 'd', |
|
| 263 | + 1077 => 'e', |
|
| 264 | + 1078 => 'zh', |
|
| 265 | + 1079 => 'z', |
|
| 266 | + 1080 => 'i', |
|
| 267 | + 1081 => 'j', |
|
| 268 | + 1082 => 'k', |
|
| 269 | + 1083 => 'l', |
|
| 270 | + 1084 => 'm', |
|
| 271 | + 1085 => 'n', |
|
| 272 | + 1086 => 'o', |
|
| 273 | + 1087 => 'p', |
|
| 274 | + 1088 => 'r', |
|
| 275 | + 1089 => 's', |
|
| 276 | + 1090 => 't', |
|
| 277 | + 1091 => 'u', |
|
| 278 | + 1092 => 'f', |
|
| 279 | + 1093 => 'h', |
|
| 280 | + 1094 => 'c', |
|
| 281 | + 1095 => 'ch', |
|
| 282 | + 1096 => 'sh', |
|
| 283 | + 1097 => 'sch', |
|
| 284 | + 1098 => '"', |
|
| 285 | + 1099 => 'y', |
|
| 286 | + 1100 => '\'', |
|
| 287 | + 1101 => '`e', |
|
| 288 | + 1102 => 'yu', |
|
| 289 | + 1103 => 'ya', |
|
| 290 | 290 | |
| 291 | 291 | // vietnamien en translitteration de base |
| 292 | - 7843 => 'a', |
|
| 293 | - 7841 => 'a', |
|
| 294 | - 7845 => 'a', |
|
| 295 | - 7847 => 'a', |
|
| 296 | - 7849 => 'a', |
|
| 297 | - 7851 => 'a', |
|
| 298 | - 7853 => 'a', |
|
| 299 | - 7855 => 'a', |
|
| 300 | - 7857 => 'a', |
|
| 301 | - 7859 => 'a', |
|
| 302 | - 7861 => 'a', |
|
| 303 | - 7863 => 'a', |
|
| 304 | - 7842 => 'A', |
|
| 305 | - 7840 => 'A', |
|
| 306 | - 7844 => 'A', |
|
| 307 | - 7846 => 'A', |
|
| 308 | - 7848 => 'A', |
|
| 309 | - 7850 => 'A', |
|
| 310 | - 7852 => 'A', |
|
| 311 | - 7854 => 'A', |
|
| 312 | - 7856 => 'A', |
|
| 313 | - 7858 => 'A', |
|
| 314 | - 7860 => 'A', |
|
| 315 | - 7862 => 'A', |
|
| 316 | - 7867 => 'e', |
|
| 317 | - 7869 => 'e', |
|
| 318 | - 7865 => 'e', |
|
| 319 | - 7871 => 'e', |
|
| 320 | - 7873 => 'e', |
|
| 321 | - 7875 => 'e', |
|
| 322 | - 7877 => 'e', |
|
| 323 | - 7879 => 'e', |
|
| 324 | - 7866 => 'E', |
|
| 325 | - 7868 => 'E', |
|
| 326 | - 7864 => 'E', |
|
| 327 | - 7870 => 'E', |
|
| 328 | - 7872 => 'E', |
|
| 329 | - 7874 => 'E', |
|
| 330 | - 7876 => 'E', |
|
| 331 | - 7878 => 'E', |
|
| 332 | - 7881 => 'i', |
|
| 333 | - 7883 => 'i', |
|
| 334 | - 7880 => 'I', |
|
| 335 | - 7882 => 'I', |
|
| 336 | - 7887 => 'o', |
|
| 337 | - 7885 => 'o', |
|
| 338 | - 7889 => 'o', |
|
| 339 | - 7891 => 'o', |
|
| 340 | - 7893 => 'o', |
|
| 341 | - 7895 => 'o', |
|
| 342 | - 7897 => 'o', |
|
| 343 | - 417 => 'o', |
|
| 344 | - 7899 => 'o', |
|
| 345 | - 7901 => 'o', |
|
| 346 | - 7903 => 'o', |
|
| 347 | - 7905 => 'o', |
|
| 348 | - 7907 => 'o', |
|
| 349 | - 7886 => 'O', |
|
| 350 | - 7884 => 'O', |
|
| 351 | - 7888 => 'O', |
|
| 352 | - 7890 => 'O', |
|
| 353 | - 7892 => 'O', |
|
| 354 | - 7894 => 'O', |
|
| 355 | - 7896 => 'O', |
|
| 356 | - 416 => 'O', |
|
| 357 | - 7898 => 'O', |
|
| 358 | - 7900 => 'O', |
|
| 359 | - 7902 => 'O', |
|
| 360 | - 7904 => 'O', |
|
| 361 | - 7906 => 'O', |
|
| 362 | - 7911 => 'u', |
|
| 363 | - 361 => 'u', |
|
| 364 | - 7909 => 'u', |
|
| 365 | - 432 => 'u', |
|
| 366 | - 7913 => 'u', |
|
| 367 | - 7915 => 'u', |
|
| 368 | - 7917 => 'u', |
|
| 369 | - 7919 => 'u', |
|
| 370 | - 7921 => 'u', |
|
| 371 | - 7910 => 'U', |
|
| 372 | - 360 => 'U', |
|
| 373 | - 7908 => 'U', |
|
| 374 | - 431 => 'U', |
|
| 375 | - 7912 => 'U', |
|
| 376 | - 7914 => 'U', |
|
| 377 | - 7916 => 'U', |
|
| 378 | - 7918 => 'U', |
|
| 379 | - 7920 => 'U', |
|
| 380 | - 253 => 'y', |
|
| 381 | - 7923 => 'y', |
|
| 382 | - 7927 => 'y', |
|
| 383 | - 7929 => 'y', |
|
| 384 | - 7925 => 'y', |
|
| 385 | - 221 => 'Y', |
|
| 386 | - 7922 => 'Y', |
|
| 387 | - 7926 => 'Y', |
|
| 388 | - 7928 => 'Y', |
|
| 389 | - 7924 => 'Y', |
|
| 390 | - 273 => 'd' |
|
| 292 | + 7843 => 'a', |
|
| 293 | + 7841 => 'a', |
|
| 294 | + 7845 => 'a', |
|
| 295 | + 7847 => 'a', |
|
| 296 | + 7849 => 'a', |
|
| 297 | + 7851 => 'a', |
|
| 298 | + 7853 => 'a', |
|
| 299 | + 7855 => 'a', |
|
| 300 | + 7857 => 'a', |
|
| 301 | + 7859 => 'a', |
|
| 302 | + 7861 => 'a', |
|
| 303 | + 7863 => 'a', |
|
| 304 | + 7842 => 'A', |
|
| 305 | + 7840 => 'A', |
|
| 306 | + 7844 => 'A', |
|
| 307 | + 7846 => 'A', |
|
| 308 | + 7848 => 'A', |
|
| 309 | + 7850 => 'A', |
|
| 310 | + 7852 => 'A', |
|
| 311 | + 7854 => 'A', |
|
| 312 | + 7856 => 'A', |
|
| 313 | + 7858 => 'A', |
|
| 314 | + 7860 => 'A', |
|
| 315 | + 7862 => 'A', |
|
| 316 | + 7867 => 'e', |
|
| 317 | + 7869 => 'e', |
|
| 318 | + 7865 => 'e', |
|
| 319 | + 7871 => 'e', |
|
| 320 | + 7873 => 'e', |
|
| 321 | + 7875 => 'e', |
|
| 322 | + 7877 => 'e', |
|
| 323 | + 7879 => 'e', |
|
| 324 | + 7866 => 'E', |
|
| 325 | + 7868 => 'E', |
|
| 326 | + 7864 => 'E', |
|
| 327 | + 7870 => 'E', |
|
| 328 | + 7872 => 'E', |
|
| 329 | + 7874 => 'E', |
|
| 330 | + 7876 => 'E', |
|
| 331 | + 7878 => 'E', |
|
| 332 | + 7881 => 'i', |
|
| 333 | + 7883 => 'i', |
|
| 334 | + 7880 => 'I', |
|
| 335 | + 7882 => 'I', |
|
| 336 | + 7887 => 'o', |
|
| 337 | + 7885 => 'o', |
|
| 338 | + 7889 => 'o', |
|
| 339 | + 7891 => 'o', |
|
| 340 | + 7893 => 'o', |
|
| 341 | + 7895 => 'o', |
|
| 342 | + 7897 => 'o', |
|
| 343 | + 417 => 'o', |
|
| 344 | + 7899 => 'o', |
|
| 345 | + 7901 => 'o', |
|
| 346 | + 7903 => 'o', |
|
| 347 | + 7905 => 'o', |
|
| 348 | + 7907 => 'o', |
|
| 349 | + 7886 => 'O', |
|
| 350 | + 7884 => 'O', |
|
| 351 | + 7888 => 'O', |
|
| 352 | + 7890 => 'O', |
|
| 353 | + 7892 => 'O', |
|
| 354 | + 7894 => 'O', |
|
| 355 | + 7896 => 'O', |
|
| 356 | + 416 => 'O', |
|
| 357 | + 7898 => 'O', |
|
| 358 | + 7900 => 'O', |
|
| 359 | + 7902 => 'O', |
|
| 360 | + 7904 => 'O', |
|
| 361 | + 7906 => 'O', |
|
| 362 | + 7911 => 'u', |
|
| 363 | + 361 => 'u', |
|
| 364 | + 7909 => 'u', |
|
| 365 | + 432 => 'u', |
|
| 366 | + 7913 => 'u', |
|
| 367 | + 7915 => 'u', |
|
| 368 | + 7917 => 'u', |
|
| 369 | + 7919 => 'u', |
|
| 370 | + 7921 => 'u', |
|
| 371 | + 7910 => 'U', |
|
| 372 | + 360 => 'U', |
|
| 373 | + 7908 => 'U', |
|
| 374 | + 431 => 'U', |
|
| 375 | + 7912 => 'U', |
|
| 376 | + 7914 => 'U', |
|
| 377 | + 7916 => 'U', |
|
| 378 | + 7918 => 'U', |
|
| 379 | + 7920 => 'U', |
|
| 380 | + 253 => 'y', |
|
| 381 | + 7923 => 'y', |
|
| 382 | + 7927 => 'y', |
|
| 383 | + 7929 => 'y', |
|
| 384 | + 7925 => 'y', |
|
| 385 | + 221 => 'Y', |
|
| 386 | + 7922 => 'Y', |
|
| 387 | + 7926 => 'Y', |
|
| 388 | + 7928 => 'Y', |
|
| 389 | + 7924 => 'Y', |
|
| 390 | + 273 => 'd' |
|
| 391 | 391 | |
| 392 | 392 | ]; |
@@ -19,7 +19,7 @@ discard block |
||
| 19 | 19 | /** Drapeau indiquant que l'on est dans l'espace privé */ |
| 20 | 20 | define('_ESPACE_PRIVE', true); |
| 21 | 21 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 22 | - include 'inc_version.php'; |
|
| 22 | + include 'inc_version.php'; |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | include_spip('inc/cookie'); |
@@ -35,18 +35,18 @@ discard block |
||
| 35 | 35 | // alors il faut blinder les variables d'URL |
| 36 | 36 | // |
| 37 | 37 | if (autoriser_sans_cookie($exec, false)) { |
| 38 | - if (!isset($reinstall)) { |
|
| 39 | - $reinstall = 'non'; |
|
| 40 | - } |
|
| 41 | - $var_auth = true; |
|
| 38 | + if (!isset($reinstall)) { |
|
| 39 | + $reinstall = 'non'; |
|
| 40 | + } |
|
| 41 | + $var_auth = true; |
|
| 42 | 42 | } else { |
| 43 | - // Authentification, redefinissable |
|
| 44 | - $auth = charger_fonction('auth', 'inc'); |
|
| 45 | - $var_auth = $auth(); |
|
| 46 | - if ($var_auth) { |
|
| 47 | - echo auth_echec($var_auth); |
|
| 48 | - exit; |
|
| 49 | - } |
|
| 43 | + // Authentification, redefinissable |
|
| 44 | + $auth = charger_fonction('auth', 'inc'); |
|
| 45 | + $var_auth = $auth(); |
|
| 46 | + if ($var_auth) { |
|
| 47 | + echo auth_echec($var_auth); |
|
| 48 | + exit; |
|
| 49 | + } |
|
| 50 | 50 | } |
| 51 | 51 | |
| 52 | 52 | // initialiser a la langue par defaut |
@@ -57,29 +57,29 @@ discard block |
||
| 57 | 57 | |
| 58 | 58 | |
| 59 | 59 | if (_request('action') or _request('var_ajax') or _request('formulaire_action')) { |
| 60 | - if (!autoriser_sans_cookie($exec)) { |
|
| 61 | - // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires |
|
| 62 | - include_spip('public/aiguiller'); |
|
| 63 | - if ( |
|
| 64 | - // cas des appels actions ?action=xxx |
|
| 65 | - traiter_appels_actions() |
|
| 66 | - or |
|
| 67 | - // cas des hits ajax sur les inclusions ajax |
|
| 68 | - traiter_appels_inclusions_ajax() |
|
| 69 | - or |
|
| 70 | - // cas des formulaires charger/verifier/traiter |
|
| 71 | - traiter_formulaires_dynamiques() |
|
| 72 | - ) { |
|
| 73 | - exit; |
|
| 74 | - } // le hit est fini ! |
|
| 75 | - } |
|
| 60 | + if (!autoriser_sans_cookie($exec)) { |
|
| 61 | + // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires |
|
| 62 | + include_spip('public/aiguiller'); |
|
| 63 | + if ( |
|
| 64 | + // cas des appels actions ?action=xxx |
|
| 65 | + traiter_appels_actions() |
|
| 66 | + or |
|
| 67 | + // cas des hits ajax sur les inclusions ajax |
|
| 68 | + traiter_appels_inclusions_ajax() |
|
| 69 | + or |
|
| 70 | + // cas des formulaires charger/verifier/traiter |
|
| 71 | + traiter_formulaires_dynamiques() |
|
| 72 | + ) { |
|
| 73 | + exit; |
|
| 74 | + } // le hit est fini ! |
|
| 75 | + } |
|
| 76 | 76 | } |
| 77 | 77 | // securiser les redirect du back-office |
| 78 | 78 | if (_request('redirect')) { |
| 79 | - if (!function_exists('securiser_redirect_action')) { |
|
| 80 | - include_spip('public/aiguiller'); |
|
| 81 | - } |
|
| 82 | - set_request('redirect', securiser_redirect_action(_request('redirect'))); |
|
| 79 | + if (!function_exists('securiser_redirect_action')) { |
|
| 80 | + include_spip('public/aiguiller'); |
|
| 81 | + } |
|
| 82 | + set_request('redirect', securiser_redirect_action(_request('redirect'))); |
|
| 83 | 83 | } |
| 84 | 84 | |
| 85 | 85 | |
@@ -89,12 +89,12 @@ discard block |
||
| 89 | 89 | |
| 90 | 90 | // Controle de la version, sauf si on est deja en train de s'en occuper |
| 91 | 91 | if ( |
| 92 | - !$reinstall == 'oui' |
|
| 93 | - and !_AJAX |
|
| 94 | - and isset($GLOBALS['meta']['version_installee']) |
|
| 95 | - and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee']))) |
|
| 92 | + !$reinstall == 'oui' |
|
| 93 | + and !_AJAX |
|
| 94 | + and isset($GLOBALS['meta']['version_installee']) |
|
| 95 | + and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee']))) |
|
| 96 | 96 | ) { |
| 97 | - $exec = 'demande_mise_a_jour'; |
|
| 97 | + $exec = 'demande_mise_a_jour'; |
|
| 98 | 98 | } |
| 99 | 99 | |
| 100 | 100 | // Quand une action d'administration est en cours (meta "admin"), |
@@ -104,39 +104,39 @@ discard block |
||
| 104 | 104 | // sinon c'est qu'elle a ete interrompue et il faut la reprendre |
| 105 | 105 | |
| 106 | 106 | elseif (isset($GLOBALS['meta']['admin'])) { |
| 107 | - if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']['admin'], $l)) { |
|
| 108 | - [, $var_f, $n] = $l; |
|
| 109 | - } |
|
| 110 | - if ( |
|
| 111 | - _AJAX |
|
| 112 | - or !( |
|
| 113 | - isset($_COOKIE['spip_admin']) |
|
| 114 | - or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo') |
|
| 115 | - ) |
|
| 116 | - ) { |
|
| 117 | - spip_log('Quand la meta admin vaut ' . |
|
| 118 | - $GLOBALS['meta']['admin'] . |
|
| 119 | - ' seul un admin peut se connecter et sans AJAX.' . |
|
| 120 | - ' En cas de probleme, detruire cette meta.'); |
|
| 121 | - die(_T('info_travaux_texte')); |
|
| 122 | - } |
|
| 123 | - if ($n) { |
|
| 124 | - [, $var_f, $n] = $l; |
|
| 125 | - if (tester_url_ecrire("base_$var_f")) { |
|
| 126 | - $var_f = "base_$var_f"; |
|
| 127 | - } |
|
| 128 | - if ($var_f != $exec) { |
|
| 129 | - spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec"); |
|
| 130 | - $exec = $var_f; |
|
| 131 | - set_request('exec', $exec); |
|
| 132 | - } |
|
| 133 | - } |
|
| 107 | + if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']['admin'], $l)) { |
|
| 108 | + [, $var_f, $n] = $l; |
|
| 109 | + } |
|
| 110 | + if ( |
|
| 111 | + _AJAX |
|
| 112 | + or !( |
|
| 113 | + isset($_COOKIE['spip_admin']) |
|
| 114 | + or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo') |
|
| 115 | + ) |
|
| 116 | + ) { |
|
| 117 | + spip_log('Quand la meta admin vaut ' . |
|
| 118 | + $GLOBALS['meta']['admin'] . |
|
| 119 | + ' seul un admin peut se connecter et sans AJAX.' . |
|
| 120 | + ' En cas de probleme, detruire cette meta.'); |
|
| 121 | + die(_T('info_travaux_texte')); |
|
| 122 | + } |
|
| 123 | + if ($n) { |
|
| 124 | + [, $var_f, $n] = $l; |
|
| 125 | + if (tester_url_ecrire("base_$var_f")) { |
|
| 126 | + $var_f = "base_$var_f"; |
|
| 127 | + } |
|
| 128 | + if ($var_f != $exec) { |
|
| 129 | + spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec"); |
|
| 130 | + $exec = $var_f; |
|
| 131 | + set_request('exec', $exec); |
|
| 132 | + } |
|
| 133 | + } |
|
| 134 | 134 | } |
| 135 | 135 | // si nom pas plausible, prendre le script par defaut |
| 136 | 136 | // attention aux deux cas 404/403 qui commencent par un 4 ! |
| 137 | 137 | elseif (!preg_match(',^[a-z4_][0-9a-z_-]*$,i', $exec)) { |
| 138 | - $exec = 'accueil'; |
|
| 139 | - set_request('exec', $exec); |
|
| 138 | + $exec = 'accueil'; |
|
| 139 | + set_request('exec', $exec); |
|
| 140 | 140 | } |
| 141 | 141 | |
| 142 | 142 | // compatibilite ascendante : obsolete, ne plus utiliser |
@@ -148,19 +148,19 @@ discard block |
||
| 148 | 148 | // on appelle directement la fonction, car un appel d'action peut conduire a une boucle infinie |
| 149 | 149 | // si le cookie n'est pas pose correctement dans l'action |
| 150 | 150 | if ( |
| 151 | - !$var_auth and isset($_COOKIE['spip_lang_ecrire']) |
|
| 152 | - and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang'] |
|
| 151 | + !$var_auth and isset($_COOKIE['spip_lang_ecrire']) |
|
| 152 | + and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang'] |
|
| 153 | 153 | ) { |
| 154 | - include_spip('action/converser'); |
|
| 155 | - action_converser_post($GLOBALS['visiteur_session']['lang'], true); |
|
| 154 | + include_spip('action/converser'); |
|
| 155 | + action_converser_post($GLOBALS['visiteur_session']['lang'], true); |
|
| 156 | 156 | } |
| 157 | 157 | |
| 158 | 158 | if ($var_f = tester_url_ecrire($exec)) { |
| 159 | - $var_f = charger_fonction($var_f); |
|
| 160 | - $var_f(); // at last |
|
| 159 | + $var_f = charger_fonction($var_f); |
|
| 160 | + $var_f(); // at last |
|
| 161 | 161 | } else { |
| 162 | - // Rien de connu: rerouter vers exec=404 au lieu d'echouer |
|
| 163 | - // ce qui permet de laisser la main a un plugin |
|
| 164 | - $var_f = charger_fonction('404'); |
|
| 165 | - $var_f($exec); |
|
| 162 | + // Rien de connu: rerouter vers exec=404 au lieu d'echouer |
|
| 163 | + // ce qui permet de laisser la main a un plugin |
|
| 164 | + $var_f = charger_fonction('404'); |
|
| 165 | + $var_f($exec); |
|
| 166 | 166 | } |
@@ -4,582 +4,582 @@ discard block |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'access_interface_graphique' => 'Voltar para a interface gráfica completa', |
|
| 14 | - 'access_mode_texte' => 'Exibir a interface textual simplificada', |
|
| 15 | - 'admin_debug' => 'depurar', |
|
| 16 | - 'admin_modifier_article' => 'Editar esta matéria', |
|
| 17 | - 'admin_modifier_auteur' => 'Editar este autor', |
|
| 18 | - 'admin_modifier_breve' => 'Editar esta nota', |
|
| 19 | - 'admin_modifier_mot' => 'Editar esta palavra-chave', |
|
| 20 | - 'admin_modifier_rubrique' => 'Editar esta seção', |
|
| 21 | - 'admin_recalculer' => 'Atualizar esta página', |
|
| 22 | - 'afficher_calendrier' => 'Exibir o calendário', |
|
| 23 | - 'afficher_trad' => 'exibir as traduções', |
|
| 24 | - 'alerte_maj_impossible' => '<b>Atenção!</b> A atualização da base de dados SQL para a versão @version@ não é possível, provavelmente por problema de direitos de edição na base de dados. Por favor, contate o seu provedor de hospedagem.', |
|
| 25 | - 'alerte_modif_info_concourante' => 'ATENÇÃO: Esta informação foi alterada por outra pessoa. O valor atual é:', |
|
| 26 | - 'analyse_xml' => 'Analisar XML', |
|
| 27 | - 'annuler' => 'Cancelar', |
|
| 28 | - 'antispam_champ_vide' => 'Por favor, deixe este campo vazio:', |
|
| 29 | - 'articles_recents' => 'Matérias mais recentes', |
|
| 30 | - 'attention_champ_mini_nb_caractères' => 'Atenção! Mínimo de @nb@ caracteres', |
|
| 31 | - 'avis_1_erreur_saisie' => 'Há um erro nos dados informados. Por favor, verifique.', |
|
| 32 | - 'avis_archive_incorrect' => 'a cópia de segurança não é um arquivo do SPIP', |
|
| 33 | - 'avis_archive_invalide' => 'a cópia de segurança não é válida', |
|
| 34 | - 'avis_attention' => 'ATENÇÃO!', |
|
| 35 | - 'avis_champ_incorrect_type_objet' => 'Nome de campo @name@ incorreto para objeto do tipo @type@', |
|
| 36 | - 'avis_colonne_inexistante' => 'A coluna @col@ não existe', |
|
| 37 | - 'avis_erreur' => 'Erro: ver abaixo', |
|
| 38 | - 'avis_erreur_connexion' => 'Erro de conexão', |
|
| 39 | - 'avis_erreur_cookie' => 'problema de cookie', |
|
| 40 | - 'avis_erreur_fonction_contexte' => 'Erro de programação. Esta função não deve ser chamada neste contexto.', |
|
| 41 | - 'avis_erreur_mysql' => 'Erro SQL', |
|
| 42 | - 'avis_erreur_sauvegarde' => 'Erro na cópia de segurança (@type@ @id_objet@) !', |
|
| 43 | - 'avis_erreur_visiteur' => 'Problema de acesso ao espaço privado', |
|
| 44 | - 'avis_nb_erreurs_saisie' => 'Há @nb@ erros nos dados informados. Por favor, verifique.', |
|
| 12 | + // A |
|
| 13 | + 'access_interface_graphique' => 'Voltar para a interface gráfica completa', |
|
| 14 | + 'access_mode_texte' => 'Exibir a interface textual simplificada', |
|
| 15 | + 'admin_debug' => 'depurar', |
|
| 16 | + 'admin_modifier_article' => 'Editar esta matéria', |
|
| 17 | + 'admin_modifier_auteur' => 'Editar este autor', |
|
| 18 | + 'admin_modifier_breve' => 'Editar esta nota', |
|
| 19 | + 'admin_modifier_mot' => 'Editar esta palavra-chave', |
|
| 20 | + 'admin_modifier_rubrique' => 'Editar esta seção', |
|
| 21 | + 'admin_recalculer' => 'Atualizar esta página', |
|
| 22 | + 'afficher_calendrier' => 'Exibir o calendário', |
|
| 23 | + 'afficher_trad' => 'exibir as traduções', |
|
| 24 | + 'alerte_maj_impossible' => '<b>Atenção!</b> A atualização da base de dados SQL para a versão @version@ não é possível, provavelmente por problema de direitos de edição na base de dados. Por favor, contate o seu provedor de hospedagem.', |
|
| 25 | + 'alerte_modif_info_concourante' => 'ATENÇÃO: Esta informação foi alterada por outra pessoa. O valor atual é:', |
|
| 26 | + 'analyse_xml' => 'Analisar XML', |
|
| 27 | + 'annuler' => 'Cancelar', |
|
| 28 | + 'antispam_champ_vide' => 'Por favor, deixe este campo vazio:', |
|
| 29 | + 'articles_recents' => 'Matérias mais recentes', |
|
| 30 | + 'attention_champ_mini_nb_caractères' => 'Atenção! Mínimo de @nb@ caracteres', |
|
| 31 | + 'avis_1_erreur_saisie' => 'Há um erro nos dados informados. Por favor, verifique.', |
|
| 32 | + 'avis_archive_incorrect' => 'a cópia de segurança não é um arquivo do SPIP', |
|
| 33 | + 'avis_archive_invalide' => 'a cópia de segurança não é válida', |
|
| 34 | + 'avis_attention' => 'ATENÇÃO!', |
|
| 35 | + 'avis_champ_incorrect_type_objet' => 'Nome de campo @name@ incorreto para objeto do tipo @type@', |
|
| 36 | + 'avis_colonne_inexistante' => 'A coluna @col@ não existe', |
|
| 37 | + 'avis_erreur' => 'Erro: ver abaixo', |
|
| 38 | + 'avis_erreur_connexion' => 'Erro de conexão', |
|
| 39 | + 'avis_erreur_cookie' => 'problema de cookie', |
|
| 40 | + 'avis_erreur_fonction_contexte' => 'Erro de programação. Esta função não deve ser chamada neste contexto.', |
|
| 41 | + 'avis_erreur_mysql' => 'Erro SQL', |
|
| 42 | + 'avis_erreur_sauvegarde' => 'Erro na cópia de segurança (@type@ @id_objet@) !', |
|
| 43 | + 'avis_erreur_visiteur' => 'Problema de acesso ao espaço privado', |
|
| 44 | + 'avis_nb_erreurs_saisie' => 'Há @nb@ erros nos dados informados. Por favor, verifique.', |
|
| 45 | 45 | |
| 46 | - // B |
|
| 47 | - 'barre_a_accent_grave' => 'Inserir um A maiúsculo com acento grave', |
|
| 48 | - 'barre_aide' => 'utilize os atalhos tipográficos para enriquecer o seu layout', |
|
| 49 | - 'barre_e_accent_aigu' => 'Inserir um E maiúsculo com acento agudo', |
|
| 50 | - 'barre_eo' => 'Inserir um OE contraído', |
|
| 51 | - 'barre_eo_maj' => 'Inserir um OE contraído maiúsculo', |
|
| 52 | - 'barre_euro' => 'Inserir o símbolo € (euro)', |
|
| 53 | - 'barre_gras' => 'Escrever em {{negrito}}', |
|
| 54 | - 'barre_guillemets' => 'envolver em "aspas"', |
|
| 55 | - 'barre_guillemets_simples' => 'Envolver em ’plicas’', |
|
| 56 | - 'barre_intertitre' => 'Transformar em {{{entretítulo}}}', |
|
| 57 | - 'barre_italic' => 'Escrever em {itálico}', |
|
| 58 | - 'barre_lien' => 'Transformar em [link hipertexto->http://...]', |
|
| 59 | - 'barre_lien_input' => 'Informe o endereço do seu link (você pode informar um endereço web do tipo http://www.monsite/com ou simplesmente informar o número de uma matéria deste site.', |
|
| 60 | - 'barre_note' => 'Transformar em [[Nota de pé de página]]', |
|
| 61 | - 'barre_paragraphe' => 'Criar um parágrafo', |
|
| 62 | - 'barre_quote' => '<quote>Citar uma mensagem</quote>', |
|
| 63 | - 'bouton_changer' => 'Alterar', |
|
| 64 | - 'bouton_chercher' => 'Procurar', |
|
| 65 | - 'bouton_choisir' => 'Escolher', |
|
| 66 | - 'bouton_deplacer' => 'Deslocar', |
|
| 67 | - 'bouton_download' => 'Baixar', |
|
| 68 | - 'bouton_enregistrer' => 'Gravar', |
|
| 69 | - 'bouton_radio_desactiver_messagerie_interne' => 'Desativar o sistema interno de mensagens', |
|
| 70 | - 'bouton_radio_envoi_annonces' => 'Enviar os avisos editoriais', |
|
| 71 | - 'bouton_radio_non_envoi_annonces' => 'Não enviar os avisos', |
|
| 72 | - 'bouton_radio_non_envoi_liste_nouveautes' => 'Não enviar a lista de novidades', |
|
| 73 | - 'bouton_recharger_page' => 'atualizar esta página', |
|
| 74 | - 'bouton_telecharger' => 'Transferir', |
|
| 75 | - 'bouton_upload' => 'Upload', |
|
| 76 | - 'bouton_valider' => 'Validar', |
|
| 46 | + // B |
|
| 47 | + 'barre_a_accent_grave' => 'Inserir um A maiúsculo com acento grave', |
|
| 48 | + 'barre_aide' => 'utilize os atalhos tipográficos para enriquecer o seu layout', |
|
| 49 | + 'barre_e_accent_aigu' => 'Inserir um E maiúsculo com acento agudo', |
|
| 50 | + 'barre_eo' => 'Inserir um OE contraído', |
|
| 51 | + 'barre_eo_maj' => 'Inserir um OE contraído maiúsculo', |
|
| 52 | + 'barre_euro' => 'Inserir o símbolo € (euro)', |
|
| 53 | + 'barre_gras' => 'Escrever em {{negrito}}', |
|
| 54 | + 'barre_guillemets' => 'envolver em "aspas"', |
|
| 55 | + 'barre_guillemets_simples' => 'Envolver em ’plicas’', |
|
| 56 | + 'barre_intertitre' => 'Transformar em {{{entretítulo}}}', |
|
| 57 | + 'barre_italic' => 'Escrever em {itálico}', |
|
| 58 | + 'barre_lien' => 'Transformar em [link hipertexto->http://...]', |
|
| 59 | + 'barre_lien_input' => 'Informe o endereço do seu link (você pode informar um endereço web do tipo http://www.monsite/com ou simplesmente informar o número de uma matéria deste site.', |
|
| 60 | + 'barre_note' => 'Transformar em [[Nota de pé de página]]', |
|
| 61 | + 'barre_paragraphe' => 'Criar um parágrafo', |
|
| 62 | + 'barre_quote' => '<quote>Citar uma mensagem</quote>', |
|
| 63 | + 'bouton_changer' => 'Alterar', |
|
| 64 | + 'bouton_chercher' => 'Procurar', |
|
| 65 | + 'bouton_choisir' => 'Escolher', |
|
| 66 | + 'bouton_deplacer' => 'Deslocar', |
|
| 67 | + 'bouton_download' => 'Baixar', |
|
| 68 | + 'bouton_enregistrer' => 'Gravar', |
|
| 69 | + 'bouton_radio_desactiver_messagerie_interne' => 'Desativar o sistema interno de mensagens', |
|
| 70 | + 'bouton_radio_envoi_annonces' => 'Enviar os avisos editoriais', |
|
| 71 | + 'bouton_radio_non_envoi_annonces' => 'Não enviar os avisos', |
|
| 72 | + 'bouton_radio_non_envoi_liste_nouveautes' => 'Não enviar a lista de novidades', |
|
| 73 | + 'bouton_recharger_page' => 'atualizar esta página', |
|
| 74 | + 'bouton_telecharger' => 'Transferir', |
|
| 75 | + 'bouton_upload' => 'Upload', |
|
| 76 | + 'bouton_valider' => 'Validar', |
|
| 77 | 77 | |
| 78 | - // C |
|
| 79 | - 'cal_apresmidi' => 'tarde', |
|
| 80 | - 'cal_jour_entier' => 'dia todo', |
|
| 81 | - 'cal_matin' => 'manhã', |
|
| 82 | - 'cal_par_jour' => 'calendário por dia', |
|
| 83 | - 'cal_par_mois' => 'calendário por mês', |
|
| 84 | - 'cal_par_semaine' => 'calendário por semana', |
|
| 85 | - 'choix_couleur_interface' => 'côr', |
|
| 86 | - 'choix_interface' => 'escolha da interface', |
|
| 87 | - 'colonne' => 'Coluna', |
|
| 88 | - 'confirm_changer_statut' => 'Atenção, você solicitou a alteração de status deste elemento. Deseja continuar?', |
|
| 89 | - 'correcte' => 'correta', |
|
| 78 | + // C |
|
| 79 | + 'cal_apresmidi' => 'tarde', |
|
| 80 | + 'cal_jour_entier' => 'dia todo', |
|
| 81 | + 'cal_matin' => 'manhã', |
|
| 82 | + 'cal_par_jour' => 'calendário por dia', |
|
| 83 | + 'cal_par_mois' => 'calendário por mês', |
|
| 84 | + 'cal_par_semaine' => 'calendário por semana', |
|
| 85 | + 'choix_couleur_interface' => 'côr', |
|
| 86 | + 'choix_interface' => 'escolha da interface', |
|
| 87 | + 'colonne' => 'Coluna', |
|
| 88 | + 'confirm_changer_statut' => 'Atenção, você solicitou a alteração de status deste elemento. Deseja continuar?', |
|
| 89 | + 'correcte' => 'correta', |
|
| 90 | 90 | |
| 91 | - // D |
|
| 92 | - 'date_aujourdhui' => 'hoje', |
|
| 93 | - 'date_avant_jc' => 'a.C.', |
|
| 94 | - 'date_dans' => 'entre @delai@', |
|
| 95 | - 'date_de_mois_1' => '@j@ de @nommois@', |
|
| 96 | - 'date_de_mois_10' => '@j@ de @nommois@', |
|
| 97 | - 'date_de_mois_11' => '@j@ de @nommois@', |
|
| 98 | - 'date_de_mois_12' => '@j@ de @nommois@', |
|
| 99 | - 'date_de_mois_2' => '@j@ de @nommois@', |
|
| 100 | - 'date_de_mois_3' => '@j@ de @nommois@', |
|
| 101 | - 'date_de_mois_4' => '@j@ de @nommois@', |
|
| 102 | - 'date_de_mois_5' => '@j@ de @nommois@', |
|
| 103 | - 'date_de_mois_6' => '@j@ de @nommois@', |
|
| 104 | - 'date_de_mois_7' => '@j@ de @nommois@', |
|
| 105 | - 'date_de_mois_8' => '@j@ de @nommois@', |
|
| 106 | - 'date_de_mois_9' => '@j@ de @nommois@', |
|
| 107 | - 'date_demain' => 'amanhã', |
|
| 108 | - 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 109 | - 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 110 | - 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | - 'date_fmt_jour_heure' => '@jour@ - @heure@', |
|
| 112 | - 'date_fmt_jour_heure_debut_fin' => 'dia @jour@ de @heure_debut@ a @heure_fin@', |
|
| 113 | - 'date_fmt_jour_heure_debut_fin_abbr' => 'dia @dtstart@@jour@ de @heure_debut@@dtabbr@ a @dtstart@@heure_fin@@dtend@', |
|
| 114 | - 'date_fmt_jour_mois' => '@jour@ de @nommois@', |
|
| 115 | - 'date_fmt_jour_mois_annee' => '@jour@ de @nommois@ de @annee@', |
|
| 116 | - 'date_fmt_mois_annee' => '@nommois@ de @annee@', |
|
| 117 | - 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | - 'date_fmt_nomjour_date' => '@nomjour@ de @date@', |
|
| 119 | - 'date_fmt_periode' => 'De @date_debut@ a @date_fin@', |
|
| 120 | - 'date_fmt_periode_abbr' => 'De @dtart@@date_debut@@dtabbr@ a @dtend@@date_fin@@dtabbr@', |
|
| 121 | - 'date_fmt_periode_from' => 'De', |
|
| 122 | - 'date_fmt_periode_to' => 'para', |
|
| 123 | - 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | - 'date_heures' => 'horas', |
|
| 125 | - 'date_hier' => 'ontem', |
|
| 126 | - 'date_il_y_a' => 'há @delai@', |
|
| 127 | - 'date_jnum1' => '1º', |
|
| 128 | - 'date_jnum10' => '10', |
|
| 129 | - 'date_jnum11' => '11', |
|
| 130 | - 'date_jnum12' => '12', |
|
| 131 | - 'date_jnum13' => '13', |
|
| 132 | - 'date_jnum14' => '14', |
|
| 133 | - 'date_jnum15' => '15', |
|
| 134 | - 'date_jnum16' => '16', |
|
| 135 | - 'date_jnum17' => '17', |
|
| 136 | - 'date_jnum18' => '18', |
|
| 137 | - 'date_jnum19' => '19', |
|
| 138 | - 'date_jnum2' => '2', |
|
| 139 | - 'date_jnum20' => '20', |
|
| 140 | - 'date_jnum21' => '21', |
|
| 141 | - 'date_jnum22' => '22', |
|
| 142 | - 'date_jnum23' => '23', |
|
| 143 | - 'date_jnum24' => '24', |
|
| 144 | - 'date_jnum25' => '25', |
|
| 145 | - 'date_jnum26' => '26', |
|
| 146 | - 'date_jnum27' => '27', |
|
| 147 | - 'date_jnum28' => '28', |
|
| 148 | - 'date_jnum29' => '29', |
|
| 149 | - 'date_jnum3' => '3', |
|
| 150 | - 'date_jnum30' => '30', |
|
| 151 | - 'date_jnum31' => '31', |
|
| 152 | - 'date_jnum4' => '4', |
|
| 153 | - 'date_jnum5' => '5', |
|
| 154 | - 'date_jnum6' => '6', |
|
| 155 | - 'date_jnum7' => '7', |
|
| 156 | - 'date_jnum8' => '8', |
|
| 157 | - 'date_jnum9' => '9', |
|
| 158 | - 'date_jour_1' => 'domingo', |
|
| 159 | - 'date_jour_1_abbr' => 'dom.', |
|
| 160 | - 'date_jour_1_initiale' => 'd.', |
|
| 161 | - 'date_jour_2' => 'segunda-feira', |
|
| 162 | - 'date_jour_2_abbr' => 'seg.', |
|
| 163 | - 'date_jour_2_initiale' => 's.', |
|
| 164 | - 'date_jour_3' => 'terça-feira', |
|
| 165 | - 'date_jour_3_abbr' => 'ter.', |
|
| 166 | - 'date_jour_3_initiale' => 't.', |
|
| 167 | - 'date_jour_4' => 'quarta-feira', |
|
| 168 | - 'date_jour_4_abbr' => 'quar.', |
|
| 169 | - 'date_jour_4_initiale' => 'q.', |
|
| 170 | - 'date_jour_5' => 'quinta-feira', |
|
| 171 | - 'date_jour_5_abbr' => 'quin.', |
|
| 172 | - 'date_jour_5_initiale' => 'q.', |
|
| 173 | - 'date_jour_6' => 'sexta-feira', |
|
| 174 | - 'date_jour_6_abbr' => 'sex.', |
|
| 175 | - 'date_jour_6_initiale' => 's.', |
|
| 176 | - 'date_jour_7' => 'sábado', |
|
| 177 | - 'date_jour_7_abbr' => 'sáb.', |
|
| 178 | - 'date_jour_7_initiale' => 's.', |
|
| 179 | - 'date_jours' => 'dias', |
|
| 180 | - 'date_minutes' => 'minutos', |
|
| 181 | - 'date_mois' => 'meses', |
|
| 182 | - 'date_mois_1' => 'janeiro', |
|
| 183 | - 'date_mois_10' => 'outubro', |
|
| 184 | - 'date_mois_10_abbr' => 'out.', |
|
| 185 | - 'date_mois_11' => 'novembro', |
|
| 186 | - 'date_mois_11_abbr' => 'nov.', |
|
| 187 | - 'date_mois_12' => 'dezembro', |
|
| 188 | - 'date_mois_12_abbr' => 'dez.', |
|
| 189 | - 'date_mois_1_abbr' => 'jan.', |
|
| 190 | - 'date_mois_2' => 'fevereiro', |
|
| 191 | - 'date_mois_2_abbr' => 'fev.', |
|
| 192 | - 'date_mois_3' => 'março', |
|
| 193 | - 'date_mois_3_abbr' => 'mar.', |
|
| 194 | - 'date_mois_4' => 'abril', |
|
| 195 | - 'date_mois_4_abbr' => 'abr.', |
|
| 196 | - 'date_mois_5' => 'maio', |
|
| 197 | - 'date_mois_5_abbr' => 'mai.', |
|
| 198 | - 'date_mois_6' => 'junho', |
|
| 199 | - 'date_mois_6_abbr' => 'jun.', |
|
| 200 | - 'date_mois_7' => 'julho', |
|
| 201 | - 'date_mois_7_abbr' => 'jul.', |
|
| 202 | - 'date_mois_8' => 'agosto', |
|
| 203 | - 'date_mois_8_abbr' => 'ago.', |
|
| 204 | - 'date_mois_9' => 'setembro', |
|
| 205 | - 'date_mois_9_abbr' => 'set.', |
|
| 206 | - 'date_saison_1' => 'inverno', |
|
| 207 | - 'date_saison_2' => 'primavera', |
|
| 208 | - 'date_saison_3' => 'verão', |
|
| 209 | - 'date_saison_4' => 'outono', |
|
| 210 | - 'date_secondes' => 'segundos', |
|
| 211 | - 'date_semaines' => 'semanas', |
|
| 212 | - 'date_un_mois' => 'mês', |
|
| 213 | - 'date_une_heure' => 'hora', |
|
| 214 | - 'date_une_minute' => 'minuto', |
|
| 215 | - 'date_une_seconde' => 'segundo', |
|
| 216 | - 'date_une_semaine' => 'semana', |
|
| 217 | - 'dirs_commencer' => 'Para começar realmente a instalação', |
|
| 218 | - 'dirs_preliminaire' => 'Preliminar: <b>Configurar os direitos de acesso</b>', |
|
| 219 | - 'dirs_probleme_droits' => 'Problema com as permissões de acesso', |
|
| 220 | - 'dirs_repertoires_absents' => '<p><b>Os diretórios a seguir não foram encontrados:</b></p><ul>@bad_dirs@.</ul> |
|
| 91 | + // D |
|
| 92 | + 'date_aujourdhui' => 'hoje', |
|
| 93 | + 'date_avant_jc' => 'a.C.', |
|
| 94 | + 'date_dans' => 'entre @delai@', |
|
| 95 | + 'date_de_mois_1' => '@j@ de @nommois@', |
|
| 96 | + 'date_de_mois_10' => '@j@ de @nommois@', |
|
| 97 | + 'date_de_mois_11' => '@j@ de @nommois@', |
|
| 98 | + 'date_de_mois_12' => '@j@ de @nommois@', |
|
| 99 | + 'date_de_mois_2' => '@j@ de @nommois@', |
|
| 100 | + 'date_de_mois_3' => '@j@ de @nommois@', |
|
| 101 | + 'date_de_mois_4' => '@j@ de @nommois@', |
|
| 102 | + 'date_de_mois_5' => '@j@ de @nommois@', |
|
| 103 | + 'date_de_mois_6' => '@j@ de @nommois@', |
|
| 104 | + 'date_de_mois_7' => '@j@ de @nommois@', |
|
| 105 | + 'date_de_mois_8' => '@j@ de @nommois@', |
|
| 106 | + 'date_de_mois_9' => '@j@ de @nommois@', |
|
| 107 | + 'date_demain' => 'amanhã', |
|
| 108 | + 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 109 | + 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 110 | + 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | + 'date_fmt_jour_heure' => '@jour@ - @heure@', |
|
| 112 | + 'date_fmt_jour_heure_debut_fin' => 'dia @jour@ de @heure_debut@ a @heure_fin@', |
|
| 113 | + 'date_fmt_jour_heure_debut_fin_abbr' => 'dia @dtstart@@jour@ de @heure_debut@@dtabbr@ a @dtstart@@heure_fin@@dtend@', |
|
| 114 | + 'date_fmt_jour_mois' => '@jour@ de @nommois@', |
|
| 115 | + 'date_fmt_jour_mois_annee' => '@jour@ de @nommois@ de @annee@', |
|
| 116 | + 'date_fmt_mois_annee' => '@nommois@ de @annee@', |
|
| 117 | + 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | + 'date_fmt_nomjour_date' => '@nomjour@ de @date@', |
|
| 119 | + 'date_fmt_periode' => 'De @date_debut@ a @date_fin@', |
|
| 120 | + 'date_fmt_periode_abbr' => 'De @dtart@@date_debut@@dtabbr@ a @dtend@@date_fin@@dtabbr@', |
|
| 121 | + 'date_fmt_periode_from' => 'De', |
|
| 122 | + 'date_fmt_periode_to' => 'para', |
|
| 123 | + 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | + 'date_heures' => 'horas', |
|
| 125 | + 'date_hier' => 'ontem', |
|
| 126 | + 'date_il_y_a' => 'há @delai@', |
|
| 127 | + 'date_jnum1' => '1º', |
|
| 128 | + 'date_jnum10' => '10', |
|
| 129 | + 'date_jnum11' => '11', |
|
| 130 | + 'date_jnum12' => '12', |
|
| 131 | + 'date_jnum13' => '13', |
|
| 132 | + 'date_jnum14' => '14', |
|
| 133 | + 'date_jnum15' => '15', |
|
| 134 | + 'date_jnum16' => '16', |
|
| 135 | + 'date_jnum17' => '17', |
|
| 136 | + 'date_jnum18' => '18', |
|
| 137 | + 'date_jnum19' => '19', |
|
| 138 | + 'date_jnum2' => '2', |
|
| 139 | + 'date_jnum20' => '20', |
|
| 140 | + 'date_jnum21' => '21', |
|
| 141 | + 'date_jnum22' => '22', |
|
| 142 | + 'date_jnum23' => '23', |
|
| 143 | + 'date_jnum24' => '24', |
|
| 144 | + 'date_jnum25' => '25', |
|
| 145 | + 'date_jnum26' => '26', |
|
| 146 | + 'date_jnum27' => '27', |
|
| 147 | + 'date_jnum28' => '28', |
|
| 148 | + 'date_jnum29' => '29', |
|
| 149 | + 'date_jnum3' => '3', |
|
| 150 | + 'date_jnum30' => '30', |
|
| 151 | + 'date_jnum31' => '31', |
|
| 152 | + 'date_jnum4' => '4', |
|
| 153 | + 'date_jnum5' => '5', |
|
| 154 | + 'date_jnum6' => '6', |
|
| 155 | + 'date_jnum7' => '7', |
|
| 156 | + 'date_jnum8' => '8', |
|
| 157 | + 'date_jnum9' => '9', |
|
| 158 | + 'date_jour_1' => 'domingo', |
|
| 159 | + 'date_jour_1_abbr' => 'dom.', |
|
| 160 | + 'date_jour_1_initiale' => 'd.', |
|
| 161 | + 'date_jour_2' => 'segunda-feira', |
|
| 162 | + 'date_jour_2_abbr' => 'seg.', |
|
| 163 | + 'date_jour_2_initiale' => 's.', |
|
| 164 | + 'date_jour_3' => 'terça-feira', |
|
| 165 | + 'date_jour_3_abbr' => 'ter.', |
|
| 166 | + 'date_jour_3_initiale' => 't.', |
|
| 167 | + 'date_jour_4' => 'quarta-feira', |
|
| 168 | + 'date_jour_4_abbr' => 'quar.', |
|
| 169 | + 'date_jour_4_initiale' => 'q.', |
|
| 170 | + 'date_jour_5' => 'quinta-feira', |
|
| 171 | + 'date_jour_5_abbr' => 'quin.', |
|
| 172 | + 'date_jour_5_initiale' => 'q.', |
|
| 173 | + 'date_jour_6' => 'sexta-feira', |
|
| 174 | + 'date_jour_6_abbr' => 'sex.', |
|
| 175 | + 'date_jour_6_initiale' => 's.', |
|
| 176 | + 'date_jour_7' => 'sábado', |
|
| 177 | + 'date_jour_7_abbr' => 'sáb.', |
|
| 178 | + 'date_jour_7_initiale' => 's.', |
|
| 179 | + 'date_jours' => 'dias', |
|
| 180 | + 'date_minutes' => 'minutos', |
|
| 181 | + 'date_mois' => 'meses', |
|
| 182 | + 'date_mois_1' => 'janeiro', |
|
| 183 | + 'date_mois_10' => 'outubro', |
|
| 184 | + 'date_mois_10_abbr' => 'out.', |
|
| 185 | + 'date_mois_11' => 'novembro', |
|
| 186 | + 'date_mois_11_abbr' => 'nov.', |
|
| 187 | + 'date_mois_12' => 'dezembro', |
|
| 188 | + 'date_mois_12_abbr' => 'dez.', |
|
| 189 | + 'date_mois_1_abbr' => 'jan.', |
|
| 190 | + 'date_mois_2' => 'fevereiro', |
|
| 191 | + 'date_mois_2_abbr' => 'fev.', |
|
| 192 | + 'date_mois_3' => 'março', |
|
| 193 | + 'date_mois_3_abbr' => 'mar.', |
|
| 194 | + 'date_mois_4' => 'abril', |
|
| 195 | + 'date_mois_4_abbr' => 'abr.', |
|
| 196 | + 'date_mois_5' => 'maio', |
|
| 197 | + 'date_mois_5_abbr' => 'mai.', |
|
| 198 | + 'date_mois_6' => 'junho', |
|
| 199 | + 'date_mois_6_abbr' => 'jun.', |
|
| 200 | + 'date_mois_7' => 'julho', |
|
| 201 | + 'date_mois_7_abbr' => 'jul.', |
|
| 202 | + 'date_mois_8' => 'agosto', |
|
| 203 | + 'date_mois_8_abbr' => 'ago.', |
|
| 204 | + 'date_mois_9' => 'setembro', |
|
| 205 | + 'date_mois_9_abbr' => 'set.', |
|
| 206 | + 'date_saison_1' => 'inverno', |
|
| 207 | + 'date_saison_2' => 'primavera', |
|
| 208 | + 'date_saison_3' => 'verão', |
|
| 209 | + 'date_saison_4' => 'outono', |
|
| 210 | + 'date_secondes' => 'segundos', |
|
| 211 | + 'date_semaines' => 'semanas', |
|
| 212 | + 'date_un_mois' => 'mês', |
|
| 213 | + 'date_une_heure' => 'hora', |
|
| 214 | + 'date_une_minute' => 'minuto', |
|
| 215 | + 'date_une_seconde' => 'segundo', |
|
| 216 | + 'date_une_semaine' => 'semana', |
|
| 217 | + 'dirs_commencer' => 'Para começar realmente a instalação', |
|
| 218 | + 'dirs_preliminaire' => 'Preliminar: <b>Configurar os direitos de acesso</b>', |
|
| 219 | + 'dirs_probleme_droits' => 'Problema com as permissões de acesso', |
|
| 220 | + 'dirs_repertoires_absents' => '<p><b>Os diretórios a seguir não foram encontrados:</b></p><ul>@bad_dirs@.</ul> |
|
| 221 | 221 | <p>É provável que isto se deva a um problema de letras em maiúsculas e minúsculas. |
| 222 | 222 | Verifique se as maiúsculas e minúsuculas destes diretórios coincidem exatamente com o que está sendo exibido abaixo; se este não for o caso, renomeie os diretórios com o seu programa de FTP de modo a corrigir o erro. |
| 223 | 223 | <p>Uma vêz feita esta manipulação, você poderá ', |
| 224 | - 'dirs_repertoires_suivants' => '<p><b>Os diretórios a seguir não estão acessiveis para leitura:</b></p><ul>@bad_dirs@.</ul> |
|
| 224 | + 'dirs_repertoires_suivants' => '<p><b>Os diretórios a seguir não estão acessiveis para leitura:</b></p><ul>@bad_dirs@.</ul> |
|
| 225 | 225 | <p>Para corrigir, utilize o seu programa de FTP para configurar os direitos de acesso de cada um destes diretórios. O procedimento está explicado em detalhes no guia de instalação.</p> |
| 226 | 226 | <p>Uma vêz feita esta alteração, você poderá ', |
| 227 | - 'double_occurrence' => 'Ocorrência dupla de @balise@', |
|
| 227 | + 'double_occurrence' => 'Ocorrência dupla de @balise@', |
|
| 228 | 228 | |
| 229 | - // E |
|
| 230 | - 'en_cours' => 'em curso', |
|
| 231 | - 'envoi_via_le_site' => 'Envio pelo site', |
|
| 232 | - 'erreur' => 'Erro', |
|
| 233 | - 'erreur_balise_non_fermee' => 'Última tag em aberto:', |
|
| 234 | - 'erreur_technique_ajaxform' => 'Ooops. Um erro inesperado impediu o envio do formulário. Você pode tentar novamente.', |
|
| 235 | - 'erreur_technique_enregistrement_champs' => 'Um erro técnico impediu a gravação correta do campo @champs@.', |
|
| 236 | - 'erreur_technique_enregistrement_impossible' => 'Um erro técnico impediu a gravação.', |
|
| 237 | - 'erreur_texte' => 'erro(s)', |
|
| 238 | - 'etape' => 'Etapa', |
|
| 229 | + // E |
|
| 230 | + 'en_cours' => 'em curso', |
|
| 231 | + 'envoi_via_le_site' => 'Envio pelo site', |
|
| 232 | + 'erreur' => 'Erro', |
|
| 233 | + 'erreur_balise_non_fermee' => 'Última tag em aberto:', |
|
| 234 | + 'erreur_technique_ajaxform' => 'Ooops. Um erro inesperado impediu o envio do formulário. Você pode tentar novamente.', |
|
| 235 | + 'erreur_technique_enregistrement_champs' => 'Um erro técnico impediu a gravação correta do campo @champs@.', |
|
| 236 | + 'erreur_technique_enregistrement_impossible' => 'Um erro técnico impediu a gravação.', |
|
| 237 | + 'erreur_texte' => 'erro(s)', |
|
| 238 | + 'etape' => 'Etapa', |
|
| 239 | 239 | |
| 240 | - // F |
|
| 241 | - 'fichier_introuvable' => 'Arquivo @fichier@ não encontrado.', |
|
| 242 | - 'fonction_introuvable' => 'Função @fonction@() não encontrada.', |
|
| 243 | - 'form_auteur_confirmation' => 'Confirme o seu endereço de e-mail', |
|
| 244 | - 'form_auteur_email_modifie' => 'O seu endereço de e-mail foi alterado.', |
|
| 245 | - 'form_auteur_envoi_mail_confirmation' => 'Uma mensagem de confirmação acabou de ser enviada para @email@. Você precisa entrar no endereço web mencionado na mensagem para validar o seu endereço de e-mail.', |
|
| 246 | - 'form_auteur_mail_confirmation' => 'Olá, |
|
| 240 | + // F |
|
| 241 | + 'fichier_introuvable' => 'Arquivo @fichier@ não encontrado.', |
|
| 242 | + 'fonction_introuvable' => 'Função @fonction@() não encontrada.', |
|
| 243 | + 'form_auteur_confirmation' => 'Confirme o seu endereço de e-mail', |
|
| 244 | + 'form_auteur_email_modifie' => 'O seu endereço de e-mail foi alterado.', |
|
| 245 | + 'form_auteur_envoi_mail_confirmation' => 'Uma mensagem de confirmação acabou de ser enviada para @email@. Você precisa entrar no endereço web mencionado na mensagem para validar o seu endereço de e-mail.', |
|
| 246 | + 'form_auteur_mail_confirmation' => 'Olá, |
|
| 247 | 247 | |
| 248 | 248 | Você pediu para alterar o seu endereço de e-mail |
| 249 | 249 | Para confirmar o seu novo endereço, basta acessar o endereço abaixo (cas contrário, a sua solicitação será ignorada): |
| 250 | 250 | |
| 251 | 251 | @url@ |
| 252 | 252 | ', |
| 253 | - 'form_deja_inscrit' => 'Você já está inscrito.', |
|
| 254 | - 'form_email_non_valide' => 'Seu endereço de e-mail não é válido.', |
|
| 255 | - 'form_forum_access_refuse' => 'Você não tem mais acesso a este site.', |
|
| 256 | - 'form_forum_bonjour' => 'Bom dia @nom@,', |
|
| 257 | - 'form_forum_confirmer_email' => 'Para confirmar o seu endereço de e-mail, clique neste link: @url_confirm@', |
|
| 258 | - 'form_forum_email_deja_enregistre' => 'Este endereço de e-mail já está cadastrado, você pode usar a sua senha habitual.', |
|
| 259 | - 'form_forum_identifiant_mail' => 'Seu novo login foi enviado por e-mail.', |
|
| 260 | - 'form_forum_identifiants' => 'Identificadores pessoais', |
|
| 261 | - 'form_forum_indiquer_nom_email' => 'Informe aqui o seu nome endereço de e-mail. O seu identificador pessoal será enviado de imediato por correio eletrônico.', |
|
| 262 | - 'form_forum_login' => 'login:', |
|
| 263 | - 'form_forum_message_auto' => '(esta é uma mensagem automática)', |
|
| 264 | - 'form_forum_pass' => 'senha:', |
|
| 265 | - 'form_forum_probleme_mail' => 'Problema de e-mail: o identificador não pôde ser enviado.', |
|
| 266 | - 'form_forum_voici1' => 'Estes são os seus identificadores para que você possa participar da vida do site "@nom_site_spip@" (@adresse_site@):', |
|
| 267 | - 'form_forum_voici2' => 'Estes são os seus identificadores para que você possa propor matérias ao site "@nom_site_spip@" (@adresse_login@):', |
|
| 268 | - 'form_indiquer_email' => 'Por favor, informe o seu endereço de e-mail.', |
|
| 269 | - 'form_indiquer_nom' => 'Por favor, informe o seu nome.', |
|
| 270 | - 'form_indiquer_nom_site' => 'Por favor, informe o nome do seu site.', |
|
| 271 | - 'form_pet_deja_enregistre' => 'Este site já está cadastrado', |
|
| 272 | - 'form_pet_signature_pasprise' => 'Sua assinatura não foi computada.', |
|
| 273 | - 'form_prop_confirmer_envoi' => 'Confirmar o envio', |
|
| 274 | - 'form_prop_description' => 'Descrição / comentário', |
|
| 275 | - 'form_prop_enregistre' => 'Sua proposta foi cadastrada, ela aparecerá online após ser validada pelos responsáveis deste site.', |
|
| 276 | - 'form_prop_envoyer' => 'Enviar uma mensagem', |
|
| 277 | - 'form_prop_indiquer_email' => 'Por favor, indique um endereço de e-mail válido', |
|
| 278 | - 'form_prop_indiquer_nom_site' => 'Por favor, informe o nome do site.', |
|
| 279 | - 'form_prop_indiquer_sujet' => 'Por favor, informe um assunto', |
|
| 280 | - 'form_prop_message_envoye' => 'Mensagem enviada', |
|
| 281 | - 'form_prop_non_enregistre' => 'Sua proposta não foi cadastrada.', |
|
| 282 | - 'form_prop_sujet' => 'Assunto', |
|
| 283 | - 'form_prop_url_site' => 'Endereço URL do site', |
|
| 284 | - 'format_date_attendu' => 'Inserir uma data no formato dd/mm/aaaa.', |
|
| 285 | - 'format_date_incorrecte' => 'A data e o seu formato está incorreta', |
|
| 286 | - 'format_heure_attendu' => 'Inserir uma hora no formato hh:mm.', |
|
| 287 | - 'format_heure_incorrecte' => 'A hora e o seu formato está incorreta', |
|
| 288 | - 'forum_non_inscrit' => 'Você não está inscrito, ou o endereço ou a senha estão errados.', |
|
| 289 | - 'forum_par_auteur' => 'por @auteur@', |
|
| 290 | - 'forum_titre_erreur' => 'Erro...', |
|
| 253 | + 'form_deja_inscrit' => 'Você já está inscrito.', |
|
| 254 | + 'form_email_non_valide' => 'Seu endereço de e-mail não é válido.', |
|
| 255 | + 'form_forum_access_refuse' => 'Você não tem mais acesso a este site.', |
|
| 256 | + 'form_forum_bonjour' => 'Bom dia @nom@,', |
|
| 257 | + 'form_forum_confirmer_email' => 'Para confirmar o seu endereço de e-mail, clique neste link: @url_confirm@', |
|
| 258 | + 'form_forum_email_deja_enregistre' => 'Este endereço de e-mail já está cadastrado, você pode usar a sua senha habitual.', |
|
| 259 | + 'form_forum_identifiant_mail' => 'Seu novo login foi enviado por e-mail.', |
|
| 260 | + 'form_forum_identifiants' => 'Identificadores pessoais', |
|
| 261 | + 'form_forum_indiquer_nom_email' => 'Informe aqui o seu nome endereço de e-mail. O seu identificador pessoal será enviado de imediato por correio eletrônico.', |
|
| 262 | + 'form_forum_login' => 'login:', |
|
| 263 | + 'form_forum_message_auto' => '(esta é uma mensagem automática)', |
|
| 264 | + 'form_forum_pass' => 'senha:', |
|
| 265 | + 'form_forum_probleme_mail' => 'Problema de e-mail: o identificador não pôde ser enviado.', |
|
| 266 | + 'form_forum_voici1' => 'Estes são os seus identificadores para que você possa participar da vida do site "@nom_site_spip@" (@adresse_site@):', |
|
| 267 | + 'form_forum_voici2' => 'Estes são os seus identificadores para que você possa propor matérias ao site "@nom_site_spip@" (@adresse_login@):', |
|
| 268 | + 'form_indiquer_email' => 'Por favor, informe o seu endereço de e-mail.', |
|
| 269 | + 'form_indiquer_nom' => 'Por favor, informe o seu nome.', |
|
| 270 | + 'form_indiquer_nom_site' => 'Por favor, informe o nome do seu site.', |
|
| 271 | + 'form_pet_deja_enregistre' => 'Este site já está cadastrado', |
|
| 272 | + 'form_pet_signature_pasprise' => 'Sua assinatura não foi computada.', |
|
| 273 | + 'form_prop_confirmer_envoi' => 'Confirmar o envio', |
|
| 274 | + 'form_prop_description' => 'Descrição / comentário', |
|
| 275 | + 'form_prop_enregistre' => 'Sua proposta foi cadastrada, ela aparecerá online após ser validada pelos responsáveis deste site.', |
|
| 276 | + 'form_prop_envoyer' => 'Enviar uma mensagem', |
|
| 277 | + 'form_prop_indiquer_email' => 'Por favor, indique um endereço de e-mail válido', |
|
| 278 | + 'form_prop_indiquer_nom_site' => 'Por favor, informe o nome do site.', |
|
| 279 | + 'form_prop_indiquer_sujet' => 'Por favor, informe um assunto', |
|
| 280 | + 'form_prop_message_envoye' => 'Mensagem enviada', |
|
| 281 | + 'form_prop_non_enregistre' => 'Sua proposta não foi cadastrada.', |
|
| 282 | + 'form_prop_sujet' => 'Assunto', |
|
| 283 | + 'form_prop_url_site' => 'Endereço URL do site', |
|
| 284 | + 'format_date_attendu' => 'Inserir uma data no formato dd/mm/aaaa.', |
|
| 285 | + 'format_date_incorrecte' => 'A data e o seu formato está incorreta', |
|
| 286 | + 'format_heure_attendu' => 'Inserir uma hora no formato hh:mm.', |
|
| 287 | + 'format_heure_incorrecte' => 'A hora e o seu formato está incorreta', |
|
| 288 | + 'forum_non_inscrit' => 'Você não está inscrito, ou o endereço ou a senha estão errados.', |
|
| 289 | + 'forum_par_auteur' => 'por @auteur@', |
|
| 290 | + 'forum_titre_erreur' => 'Erro...', |
|
| 291 | 291 | |
| 292 | - // I |
|
| 293 | - 'ical_texte_rss_articles' => 'O arquivo «backend» das matérias deste site encontra-se no endereço:', |
|
| 294 | - 'ical_texte_rss_articles2' => 'Você pode também obter os arquivos «backend» para as matérias de cada seção do site:', |
|
| 295 | - 'ical_texte_rss_breves' => 'Existe também um arquivo contendo as notas do site. Ao especificar um número de seção, você obterá unicamente as natos dessa seção.', |
|
| 296 | - 'icone_a_suivre' => 'Acompanhar', |
|
| 297 | - 'icone_admin_site' => 'Administração do site', |
|
| 298 | - 'icone_agenda' => 'Agenda', |
|
| 299 | - 'icone_aide_ligne' => 'Ajuda', |
|
| 300 | - 'icone_articles' => 'Matérias', |
|
| 301 | - 'icone_auteurs' => 'Autores', |
|
| 302 | - 'icone_brouteur' => 'Navegação rápida', |
|
| 303 | - 'icone_configuration_site' => 'Configuração', |
|
| 304 | - 'icone_configurer_site' => 'Configurar o seu site', |
|
| 305 | - 'icone_creer_nouvel_auteur' => 'Criar um novo autor', |
|
| 306 | - 'icone_creer_rubrique' => 'Criar uma seção', |
|
| 307 | - 'icone_creer_sous_rubrique' => 'Criar uma subseção', |
|
| 308 | - 'icone_deconnecter' => 'Desconectar-se', |
|
| 309 | - 'icone_discussions' => 'Discussões', |
|
| 310 | - 'icone_doc_rubrique' => 'Documentos das seções', |
|
| 311 | - 'icone_ecrire_article' => 'Escrever uma nova matéria', |
|
| 312 | - 'icone_edition_site' => 'Edição', |
|
| 313 | - 'icone_gestion_langues' => 'Gerenciamento de idiomas', |
|
| 314 | - 'icone_informations_personnelles' => 'Informações pessoais', |
|
| 315 | - 'icone_interface_complet' => 'interface completa', |
|
| 316 | - 'icone_interface_simple' => 'Interface simplificada', |
|
| 317 | - 'icone_maintenance_site' => 'Manutenção do site', |
|
| 318 | - 'icone_messagerie_personnelle' => 'Mensagens pessoais', |
|
| 319 | - 'icone_repartition_debut' => 'Exibir a repartição após o início', |
|
| 320 | - 'icone_rubriques' => 'Seções', |
|
| 321 | - 'icone_sauver_site' => 'Backup do site', |
|
| 322 | - 'icone_site_entier' => 'Todo o site', |
|
| 323 | - 'icone_sites_references' => 'Sites referenciados', |
|
| 324 | - 'icone_statistiques' => 'Estatísticas do site', |
|
| 325 | - 'icone_suivi_activite' => 'Acompanhar a vida do site', |
|
| 326 | - 'icone_suivi_actualite' => 'Evolução do site', |
|
| 327 | - 'icone_suivi_pettions' => 'Acompanhar / gerenciar as petições', |
|
| 328 | - 'icone_suivi_revisions' => 'Modificações das matérias', |
|
| 329 | - 'icone_supprimer_document' => 'Suprimir este documento', |
|
| 330 | - 'icone_supprimer_image' => 'Suprimir esta imagem', |
|
| 331 | - 'icone_tous_articles' => 'Todas as suas matérias', |
|
| 332 | - 'icone_tous_auteur' => 'Todos os autores', |
|
| 333 | - 'icone_tous_visiteur' => 'Todos os visitantes', |
|
| 334 | - 'icone_visiter_site' => 'Ver o site público', |
|
| 335 | - 'icone_voir_en_ligne' => 'Ver online', |
|
| 336 | - 'img_indisponible' => 'imagem indisponível', |
|
| 337 | - 'impossible' => 'impossível', |
|
| 338 | - 'info_a_suivre' => 'ACOMPANHAR»', |
|
| 339 | - 'info_acces_interdit' => 'Acesso interdito', |
|
| 340 | - 'info_acces_refuse' => 'Acesso recusado', |
|
| 341 | - 'info_action' => 'Ação: @action@', |
|
| 342 | - 'info_administrer_rubriques' => 'Você pode administrar esta seção e suas subseções', |
|
| 343 | - 'info_adresse_non_indiquee' => 'Você não informou o endereço a testar!', |
|
| 344 | - 'info_aide' => 'AJUDA:', |
|
| 345 | - 'info_ajouter_mot' => 'Incluir esta palavra', |
|
| 346 | - 'info_annonce' => 'AVISO', |
|
| 347 | - 'info_annonces_generales' => 'Avisos gerais:', |
|
| 348 | - 'info_article_propose' => 'Matéria proposta', |
|
| 349 | - 'info_article_publie' => 'Matéria publicada', |
|
| 350 | - 'info_article_redaction' => 'Matéria em fase de redação', |
|
| 351 | - 'info_article_refuse' => 'Matéria recusada', |
|
| 352 | - 'info_article_supprime' => 'Matéria suprimida', |
|
| 353 | - 'info_articles' => 'Matérias', |
|
| 354 | - 'info_articles_a_valider' => 'As matérias para validar', |
|
| 355 | - 'info_articles_nb' => '@nb@ matérias', |
|
| 356 | - 'info_articles_proposes' => 'Matérias propostas', |
|
| 357 | - 'info_articles_un' => '1 matéria', |
|
| 358 | - 'info_auteurs_nombre' => 'autor(es):', |
|
| 359 | - 'info_authentification_ftp' => 'Autenticação (por FTP).', |
|
| 360 | - 'info_breves_2' => 'notas', |
|
| 361 | - 'info_breves_nb' => '@nb@ notas', |
|
| 362 | - 'info_breves_un' => '1 nota', |
|
| 363 | - 'info_connexion_refusee' => 'Conexão recusada', |
|
| 364 | - 'info_contact_developpeur' => 'Por favor, contate um desenvolvedor.', |
|
| 365 | - 'info_contenance' => 'Este site contém:', |
|
| 366 | - 'info_contribution' => 'contribuições', |
|
| 367 | - 'info_copyright' => '@spip@ é um software livre distribuído @lien_gpl@.', |
|
| 368 | - 'info_copyright_doc' => 'Para mais informações, veja o site <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 369 | - 'info_copyright_gpl' => 'sob licença GPL', |
|
| 370 | - 'info_cours_edition' => 'Em edição', |
|
| 371 | - 'info_creer_repertoire' => 'Por favor, crie um arquivo ou diretório com o nome:', |
|
| 372 | - 'info_creer_repertoire_2' => 'dentro do subdiretório <b>@repertoire@</b>, e depois:', |
|
| 373 | - 'info_creer_vignette' => 'criação automática do ícone', |
|
| 374 | - 'info_creerdansrubrique_non_autorise' => 'Você não tem permissão para criar um conteúdo nesta seção', |
|
| 375 | - 'info_deplier' => 'Expandir', |
|
| 376 | - 'info_descriptif_nombre' => 'descrição(ões):', |
|
| 377 | - 'info_description' => 'Resumo:', |
|
| 378 | - 'info_description_2' => 'Resumo:', |
|
| 379 | - 'info_dimension' => 'Dimensões:', |
|
| 380 | - 'info_documents_nb' => '@nb@ documentos', |
|
| 381 | - 'info_documents_un' => '1 documento', |
|
| 382 | - 'info_ecire_message_prive' => 'Escrever uma mensagem privada', |
|
| 383 | - 'info_email_invalide' => 'Endereço de e-mail inválido.', |
|
| 384 | - 'info_en_cours_validation' => 'Suas matérias em fase de redação', |
|
| 385 | - 'info_en_ligne' => 'Atualmente online:', |
|
| 386 | - 'info_envoyer_message_prive' => 'Enviar uma mensagem privada a este autor', |
|
| 387 | - 'info_erreur_requete' => 'Erro na requisição:', |
|
| 388 | - 'info_erreur_squelette2' => 'Nenhum template <b>@fichier@</b> está disponível...', |
|
| 389 | - 'info_erreur_systeme' => 'Erro do sistema (errno @errsys@)', |
|
| 390 | - 'info_erreur_systeme2' => 'É possível que não haja espaço livre em disco, ou que a base de dados esteja corrompida.<br /> |
|
| 292 | + // I |
|
| 293 | + 'ical_texte_rss_articles' => 'O arquivo «backend» das matérias deste site encontra-se no endereço:', |
|
| 294 | + 'ical_texte_rss_articles2' => 'Você pode também obter os arquivos «backend» para as matérias de cada seção do site:', |
|
| 295 | + 'ical_texte_rss_breves' => 'Existe também um arquivo contendo as notas do site. Ao especificar um número de seção, você obterá unicamente as natos dessa seção.', |
|
| 296 | + 'icone_a_suivre' => 'Acompanhar', |
|
| 297 | + 'icone_admin_site' => 'Administração do site', |
|
| 298 | + 'icone_agenda' => 'Agenda', |
|
| 299 | + 'icone_aide_ligne' => 'Ajuda', |
|
| 300 | + 'icone_articles' => 'Matérias', |
|
| 301 | + 'icone_auteurs' => 'Autores', |
|
| 302 | + 'icone_brouteur' => 'Navegação rápida', |
|
| 303 | + 'icone_configuration_site' => 'Configuração', |
|
| 304 | + 'icone_configurer_site' => 'Configurar o seu site', |
|
| 305 | + 'icone_creer_nouvel_auteur' => 'Criar um novo autor', |
|
| 306 | + 'icone_creer_rubrique' => 'Criar uma seção', |
|
| 307 | + 'icone_creer_sous_rubrique' => 'Criar uma subseção', |
|
| 308 | + 'icone_deconnecter' => 'Desconectar-se', |
|
| 309 | + 'icone_discussions' => 'Discussões', |
|
| 310 | + 'icone_doc_rubrique' => 'Documentos das seções', |
|
| 311 | + 'icone_ecrire_article' => 'Escrever uma nova matéria', |
|
| 312 | + 'icone_edition_site' => 'Edição', |
|
| 313 | + 'icone_gestion_langues' => 'Gerenciamento de idiomas', |
|
| 314 | + 'icone_informations_personnelles' => 'Informações pessoais', |
|
| 315 | + 'icone_interface_complet' => 'interface completa', |
|
| 316 | + 'icone_interface_simple' => 'Interface simplificada', |
|
| 317 | + 'icone_maintenance_site' => 'Manutenção do site', |
|
| 318 | + 'icone_messagerie_personnelle' => 'Mensagens pessoais', |
|
| 319 | + 'icone_repartition_debut' => 'Exibir a repartição após o início', |
|
| 320 | + 'icone_rubriques' => 'Seções', |
|
| 321 | + 'icone_sauver_site' => 'Backup do site', |
|
| 322 | + 'icone_site_entier' => 'Todo o site', |
|
| 323 | + 'icone_sites_references' => 'Sites referenciados', |
|
| 324 | + 'icone_statistiques' => 'Estatísticas do site', |
|
| 325 | + 'icone_suivi_activite' => 'Acompanhar a vida do site', |
|
| 326 | + 'icone_suivi_actualite' => 'Evolução do site', |
|
| 327 | + 'icone_suivi_pettions' => 'Acompanhar / gerenciar as petições', |
|
| 328 | + 'icone_suivi_revisions' => 'Modificações das matérias', |
|
| 329 | + 'icone_supprimer_document' => 'Suprimir este documento', |
|
| 330 | + 'icone_supprimer_image' => 'Suprimir esta imagem', |
|
| 331 | + 'icone_tous_articles' => 'Todas as suas matérias', |
|
| 332 | + 'icone_tous_auteur' => 'Todos os autores', |
|
| 333 | + 'icone_tous_visiteur' => 'Todos os visitantes', |
|
| 334 | + 'icone_visiter_site' => 'Ver o site público', |
|
| 335 | + 'icone_voir_en_ligne' => 'Ver online', |
|
| 336 | + 'img_indisponible' => 'imagem indisponível', |
|
| 337 | + 'impossible' => 'impossível', |
|
| 338 | + 'info_a_suivre' => 'ACOMPANHAR»', |
|
| 339 | + 'info_acces_interdit' => 'Acesso interdito', |
|
| 340 | + 'info_acces_refuse' => 'Acesso recusado', |
|
| 341 | + 'info_action' => 'Ação: @action@', |
|
| 342 | + 'info_administrer_rubriques' => 'Você pode administrar esta seção e suas subseções', |
|
| 343 | + 'info_adresse_non_indiquee' => 'Você não informou o endereço a testar!', |
|
| 344 | + 'info_aide' => 'AJUDA:', |
|
| 345 | + 'info_ajouter_mot' => 'Incluir esta palavra', |
|
| 346 | + 'info_annonce' => 'AVISO', |
|
| 347 | + 'info_annonces_generales' => 'Avisos gerais:', |
|
| 348 | + 'info_article_propose' => 'Matéria proposta', |
|
| 349 | + 'info_article_publie' => 'Matéria publicada', |
|
| 350 | + 'info_article_redaction' => 'Matéria em fase de redação', |
|
| 351 | + 'info_article_refuse' => 'Matéria recusada', |
|
| 352 | + 'info_article_supprime' => 'Matéria suprimida', |
|
| 353 | + 'info_articles' => 'Matérias', |
|
| 354 | + 'info_articles_a_valider' => 'As matérias para validar', |
|
| 355 | + 'info_articles_nb' => '@nb@ matérias', |
|
| 356 | + 'info_articles_proposes' => 'Matérias propostas', |
|
| 357 | + 'info_articles_un' => '1 matéria', |
|
| 358 | + 'info_auteurs_nombre' => 'autor(es):', |
|
| 359 | + 'info_authentification_ftp' => 'Autenticação (por FTP).', |
|
| 360 | + 'info_breves_2' => 'notas', |
|
| 361 | + 'info_breves_nb' => '@nb@ notas', |
|
| 362 | + 'info_breves_un' => '1 nota', |
|
| 363 | + 'info_connexion_refusee' => 'Conexão recusada', |
|
| 364 | + 'info_contact_developpeur' => 'Por favor, contate um desenvolvedor.', |
|
| 365 | + 'info_contenance' => 'Este site contém:', |
|
| 366 | + 'info_contribution' => 'contribuições', |
|
| 367 | + 'info_copyright' => '@spip@ é um software livre distribuído @lien_gpl@.', |
|
| 368 | + 'info_copyright_doc' => 'Para mais informações, veja o site <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 369 | + 'info_copyright_gpl' => 'sob licença GPL', |
|
| 370 | + 'info_cours_edition' => 'Em edição', |
|
| 371 | + 'info_creer_repertoire' => 'Por favor, crie um arquivo ou diretório com o nome:', |
|
| 372 | + 'info_creer_repertoire_2' => 'dentro do subdiretório <b>@repertoire@</b>, e depois:', |
|
| 373 | + 'info_creer_vignette' => 'criação automática do ícone', |
|
| 374 | + 'info_creerdansrubrique_non_autorise' => 'Você não tem permissão para criar um conteúdo nesta seção', |
|
| 375 | + 'info_deplier' => 'Expandir', |
|
| 376 | + 'info_descriptif_nombre' => 'descrição(ões):', |
|
| 377 | + 'info_description' => 'Resumo:', |
|
| 378 | + 'info_description_2' => 'Resumo:', |
|
| 379 | + 'info_dimension' => 'Dimensões:', |
|
| 380 | + 'info_documents_nb' => '@nb@ documentos', |
|
| 381 | + 'info_documents_un' => '1 documento', |
|
| 382 | + 'info_ecire_message_prive' => 'Escrever uma mensagem privada', |
|
| 383 | + 'info_email_invalide' => 'Endereço de e-mail inválido.', |
|
| 384 | + 'info_en_cours_validation' => 'Suas matérias em fase de redação', |
|
| 385 | + 'info_en_ligne' => 'Atualmente online:', |
|
| 386 | + 'info_envoyer_message_prive' => 'Enviar uma mensagem privada a este autor', |
|
| 387 | + 'info_erreur_requete' => 'Erro na requisição:', |
|
| 388 | + 'info_erreur_squelette2' => 'Nenhum template <b>@fichier@</b> está disponível...', |
|
| 389 | + 'info_erreur_systeme' => 'Erro do sistema (errno @errsys@)', |
|
| 390 | + 'info_erreur_systeme2' => 'É possível que não haja espaço livre em disco, ou que a base de dados esteja corrompida.<br /> |
|
| 391 | 391 | <span style="color:red;">Tente <a href=\'@script@\'>reparar a base</a>, ou contate o seu serviço de hospedagem.</span>', |
| 392 | - 'info_fini' => 'Terminou!', |
|
| 393 | - 'info_format_image' => 'Formatos das imagens que podem ser utilizados para criar os ícones @gd_formats@.', |
|
| 394 | - 'info_format_non_defini' => 'formato não definido', |
|
| 395 | - 'info_grand_ecran' => 'Alta resolução', |
|
| 396 | - 'info_image_aide' => 'AJUDA', |
|
| 397 | - 'info_image_process_titre' => 'Método de criação dos ícones', |
|
| 398 | - 'info_impossible_lire_page' => '<b>Erro!</b> Impossível ler a página <tt><html>@test_proxy@</html></tt> via proxy', |
|
| 399 | - 'info_installation_systeme_publication' => 'Instalação do sistema de publicação...', |
|
| 400 | - 'info_installer_documents' => 'Você pode instalar automaticamente todos os documentos contídos no diretório @upload@.', |
|
| 401 | - 'info_installer_ftp' => 'Como administrador, você pode transferir (por FTP) arquivos para o diretório @upload@ para, em seguida, selecioná-los aqui diretamente.', |
|
| 402 | - 'info_installer_images' => 'Você pode transferir imagens nos formatos JPEG, GIF e PNG.', |
|
| 403 | - 'info_installer_images_dossier' => 'Transferir as imagens para o diretório @upload@ para poder selecioná-las aqui.', |
|
| 404 | - 'info_interface_complete' => 'interface completa', |
|
| 405 | - 'info_interface_simple' => 'Interface simplificada', |
|
| 406 | - 'info_joindre_document_article' => 'Você pode anexar a esta matéria documentos dos tipos a seguir', |
|
| 407 | - 'info_joindre_document_rubrique' => 'Você pode anexar a esta seção documentos dos tipos a seguir', |
|
| 408 | - 'info_joindre_documents_article' => 'Você pode anexar à sua matéria documentos dos tipos a seguir:', |
|
| 409 | - 'info_l_article' => 'a matéria', |
|
| 410 | - 'info_la_breve' => 'a nota', |
|
| 411 | - 'info_la_rubrique' => 'a seção', |
|
| 412 | - 'info_langue_principale' => 'Idioma principal do site', |
|
| 413 | - 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels', |
|
| 414 | - 'info_les_auteurs_1' => 'por @les_auteurs@', |
|
| 415 | - 'info_logo_format_interdit' => 'Apenas os ícones nos formatos @formats@ estão autorizados.', |
|
| 416 | - 'info_logo_max_poids' => 'Os ícones devem obrigatoriamente ter menos de @maxi@ (este arquivo tem @actuel@).', |
|
| 417 | - 'info_mail_fournisseur' => '[email protected]', |
|
| 418 | - 'info_message_2' => 'MENSAGEM', |
|
| 419 | - 'info_message_supprime' => 'MENSAGEM EXCLUÍDA', |
|
| 420 | - 'info_messages_nb' => '@nb@ mensagens', |
|
| 421 | - 'info_messages_un' => '1 mensagem', |
|
| 422 | - 'info_mise_en_ligne' => 'Data de publicação online:', |
|
| 423 | - 'info_modification_parametres_securite' => 'modificações dos parâmetros de segurança', |
|
| 424 | - 'info_mois_courant' => 'No mês corrente:', |
|
| 425 | - 'info_mot_cle_ajoute' => 'A palavra-chave a seguir foi associada a', |
|
| 426 | - 'info_multi_herit' => 'Idioma padrão', |
|
| 427 | - 'info_multi_langues_soulignees' => 'Os <u>idiomas sublinhados</u> dispõem de tradução total ou parcial dos textos da interface. Se você escolher esses idiomas, diversos elementos do site público (datas, formulários) são traduzidos automaticamente. Para os idiomas não sublinhados, estes elementos aparecerão no idioma principal do site.', |
|
| 428 | - 'info_multilinguisme' => 'Multilinguismo', |
|
| 429 | - 'info_nom_non_utilisateurs_connectes' => 'Seu nome não aparece na relação de usuários conectados.', |
|
| 430 | - 'info_nom_utilisateurs_connectes' => 'Seu nome aparecerá na relação de usuários conectados.', |
|
| 431 | - 'info_nombre_en_ligne' => 'Online neste momento:', |
|
| 432 | - 'info_non_resultat' => 'Nenhum resultados para "@cherche_mot@"', |
|
| 433 | - 'info_non_utilisation_messagerie' => 'Você não utiliza o sistema de mensagens deste site.', |
|
| 434 | - 'info_nouveau_message' => 'VOCÊ TEM UMA NOVA MENSAGEM', |
|
| 435 | - 'info_nouveaux_messages' => 'VOCÊ TEM @total_messages@ MENSAGENS NOVAS', |
|
| 436 | - 'info_numero_abbreviation' => 'N° ', |
|
| 437 | - 'info_obligatoire' => 'Esta informação é obrigatória', |
|
| 438 | - 'info_page_actuelle' => 'Página atual', |
|
| 439 | - 'info_pense_bete' => 'LEMBRETE', |
|
| 440 | - 'info_petit_ecran' => 'Baixa resolução', |
|
| 441 | - 'info_petition_close' => 'Petição fechada', |
|
| 442 | - 'info_pixels' => 'pixels', |
|
| 443 | - 'info_plusieurs_mots_trouves' => 'Várias palavras-chave encontradas para "@cherche_mot@":', |
|
| 444 | - 'info_portfolio_automatique' => 'Portfólio automático:', |
|
| 445 | - 'info_premier_resultat' => '[@debut_limit@ primeiros resultados de @total@]', |
|
| 446 | - 'info_premier_resultat_sur' => '[@debut_limit@ primeiros resultados de @total@]', |
|
| 447 | - 'info_propose_1' => '[@nom_site_spip@] Propõe: @titre@', |
|
| 448 | - 'info_propose_2' => 'Matéria proposta |
|
| 392 | + 'info_fini' => 'Terminou!', |
|
| 393 | + 'info_format_image' => 'Formatos das imagens que podem ser utilizados para criar os ícones @gd_formats@.', |
|
| 394 | + 'info_format_non_defini' => 'formato não definido', |
|
| 395 | + 'info_grand_ecran' => 'Alta resolução', |
|
| 396 | + 'info_image_aide' => 'AJUDA', |
|
| 397 | + 'info_image_process_titre' => 'Método de criação dos ícones', |
|
| 398 | + 'info_impossible_lire_page' => '<b>Erro!</b> Impossível ler a página <tt><html>@test_proxy@</html></tt> via proxy', |
|
| 399 | + 'info_installation_systeme_publication' => 'Instalação do sistema de publicação...', |
|
| 400 | + 'info_installer_documents' => 'Você pode instalar automaticamente todos os documentos contídos no diretório @upload@.', |
|
| 401 | + 'info_installer_ftp' => 'Como administrador, você pode transferir (por FTP) arquivos para o diretório @upload@ para, em seguida, selecioná-los aqui diretamente.', |
|
| 402 | + 'info_installer_images' => 'Você pode transferir imagens nos formatos JPEG, GIF e PNG.', |
|
| 403 | + 'info_installer_images_dossier' => 'Transferir as imagens para o diretório @upload@ para poder selecioná-las aqui.', |
|
| 404 | + 'info_interface_complete' => 'interface completa', |
|
| 405 | + 'info_interface_simple' => 'Interface simplificada', |
|
| 406 | + 'info_joindre_document_article' => 'Você pode anexar a esta matéria documentos dos tipos a seguir', |
|
| 407 | + 'info_joindre_document_rubrique' => 'Você pode anexar a esta seção documentos dos tipos a seguir', |
|
| 408 | + 'info_joindre_documents_article' => 'Você pode anexar à sua matéria documentos dos tipos a seguir:', |
|
| 409 | + 'info_l_article' => 'a matéria', |
|
| 410 | + 'info_la_breve' => 'a nota', |
|
| 411 | + 'info_la_rubrique' => 'a seção', |
|
| 412 | + 'info_langue_principale' => 'Idioma principal do site', |
|
| 413 | + 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels', |
|
| 414 | + 'info_les_auteurs_1' => 'por @les_auteurs@', |
|
| 415 | + 'info_logo_format_interdit' => 'Apenas os ícones nos formatos @formats@ estão autorizados.', |
|
| 416 | + 'info_logo_max_poids' => 'Os ícones devem obrigatoriamente ter menos de @maxi@ (este arquivo tem @actuel@).', |
|
| 417 | + 'info_mail_fournisseur' => '[email protected]', |
|
| 418 | + 'info_message_2' => 'MENSAGEM', |
|
| 419 | + 'info_message_supprime' => 'MENSAGEM EXCLUÍDA', |
|
| 420 | + 'info_messages_nb' => '@nb@ mensagens', |
|
| 421 | + 'info_messages_un' => '1 mensagem', |
|
| 422 | + 'info_mise_en_ligne' => 'Data de publicação online:', |
|
| 423 | + 'info_modification_parametres_securite' => 'modificações dos parâmetros de segurança', |
|
| 424 | + 'info_mois_courant' => 'No mês corrente:', |
|
| 425 | + 'info_mot_cle_ajoute' => 'A palavra-chave a seguir foi associada a', |
|
| 426 | + 'info_multi_herit' => 'Idioma padrão', |
|
| 427 | + 'info_multi_langues_soulignees' => 'Os <u>idiomas sublinhados</u> dispõem de tradução total ou parcial dos textos da interface. Se você escolher esses idiomas, diversos elementos do site público (datas, formulários) são traduzidos automaticamente. Para os idiomas não sublinhados, estes elementos aparecerão no idioma principal do site.', |
|
| 428 | + 'info_multilinguisme' => 'Multilinguismo', |
|
| 429 | + 'info_nom_non_utilisateurs_connectes' => 'Seu nome não aparece na relação de usuários conectados.', |
|
| 430 | + 'info_nom_utilisateurs_connectes' => 'Seu nome aparecerá na relação de usuários conectados.', |
|
| 431 | + 'info_nombre_en_ligne' => 'Online neste momento:', |
|
| 432 | + 'info_non_resultat' => 'Nenhum resultados para "@cherche_mot@"', |
|
| 433 | + 'info_non_utilisation_messagerie' => 'Você não utiliza o sistema de mensagens deste site.', |
|
| 434 | + 'info_nouveau_message' => 'VOCÊ TEM UMA NOVA MENSAGEM', |
|
| 435 | + 'info_nouveaux_messages' => 'VOCÊ TEM @total_messages@ MENSAGENS NOVAS', |
|
| 436 | + 'info_numero_abbreviation' => 'N° ', |
|
| 437 | + 'info_obligatoire' => 'Esta informação é obrigatória', |
|
| 438 | + 'info_page_actuelle' => 'Página atual', |
|
| 439 | + 'info_pense_bete' => 'LEMBRETE', |
|
| 440 | + 'info_petit_ecran' => 'Baixa resolução', |
|
| 441 | + 'info_petition_close' => 'Petição fechada', |
|
| 442 | + 'info_pixels' => 'pixels', |
|
| 443 | + 'info_plusieurs_mots_trouves' => 'Várias palavras-chave encontradas para "@cherche_mot@":', |
|
| 444 | + 'info_portfolio_automatique' => 'Portfólio automático:', |
|
| 445 | + 'info_premier_resultat' => '[@debut_limit@ primeiros resultados de @total@]', |
|
| 446 | + 'info_premier_resultat_sur' => '[@debut_limit@ primeiros resultados de @total@]', |
|
| 447 | + 'info_propose_1' => '[@nom_site_spip@] Propõe: @titre@', |
|
| 448 | + 'info_propose_2' => 'Matéria proposta |
|
| 449 | 449 | ----------------', |
| 450 | - 'info_propose_3' => 'A matéria "@titre@" foi proposta para publicação.', |
|
| 451 | - 'info_propose_4' => 'Você está convidado a consultá-la e dar sua opinião', |
|
| 452 | - 'info_propose_5' => 'no fórum a ela anexado. Ela está disponível no endereço:', |
|
| 453 | - 'info_publie_01' => 'A matéria "@titre@" foi validada por @connect_nom@.', |
|
| 454 | - 'info_publie_1' => '[@nom_site_spip@] PUBLICADO: @titre@', |
|
| 455 | - 'info_publie_2' => 'Matéria publicada |
|
| 450 | + 'info_propose_3' => 'A matéria "@titre@" foi proposta para publicação.', |
|
| 451 | + 'info_propose_4' => 'Você está convidado a consultá-la e dar sua opinião', |
|
| 452 | + 'info_propose_5' => 'no fórum a ela anexado. Ela está disponível no endereço:', |
|
| 453 | + 'info_publie_01' => 'A matéria "@titre@" foi validada por @connect_nom@.', |
|
| 454 | + 'info_publie_1' => '[@nom_site_spip@] PUBLICADO: @titre@', |
|
| 455 | + 'info_publie_2' => 'Matéria publicada |
|
| 456 | 456 | -----------------', |
| 457 | - 'info_rechercher' => 'Procurar', |
|
| 458 | - 'info_rechercher_02' => 'Procurar:', |
|
| 459 | - 'info_remplacer_vignette' => 'Substituir o ícone padrão por um logo personalizado:', |
|
| 460 | - 'info_rubriques_nb' => '@nb@ seções', |
|
| 461 | - 'info_rubriques_un' => '1 seção', |
|
| 462 | - 'info_sans_titre_2' => 'sem título', |
|
| 463 | - 'info_selectionner_fichier' => 'Você pode escolher um arquivo do diretório @upload@', |
|
| 464 | - 'info_selectionner_fichier_2' => 'Selecionar um arquivo:', |
|
| 465 | - 'info_sites_nb' => '@nb@ sites', |
|
| 466 | - 'info_sites_un' => '1 site', |
|
| 467 | - 'info_supprimer_vignette' => 'excluir o ícone', |
|
| 468 | - 'info_symbole_bleu' => 'O ícone <b>azul</b> indica um <b>lembrete</b>: ou seja, uma mensagem para seu uso pessoal.', |
|
| 469 | - 'info_symbole_jaune' => 'O ícone <b>amarelo</b> indica um <b>anúncio para todos os redatores</b>: modificável por todos os administradores, e visível por todos os redatores.', |
|
| 470 | - 'info_symbole_vert' => 'O ícone <b>verde</b> indica as <b>mensagens trocadas com outros usuários</b> do site.', |
|
| 471 | - 'info_telecharger_nouveau_logo' => 'Transferir um novo logo:', |
|
| 472 | - 'info_telecharger_ordinateur' => 'Tranferir do seu computador:', |
|
| 473 | - 'info_tous_resultats_enregistres' => '[todos os resultados são gravados]', |
|
| 474 | - 'info_tout_afficher' => 'Mostrar todas', |
|
| 475 | - 'info_travaux_texte' => 'Este site ainda não está configurado. Volte mais tarde...', |
|
| 476 | - 'info_travaux_titre' => 'Site em manutenção', |
|
| 477 | - 'info_trop_resultat' => 'Resultados de mais para "@cherche_mot@"; por favor, refine a busca.', |
|
| 478 | - 'info_utilisation_messagerie_interne' => 'Você usa o sistema interno de mensagens deste site.', |
|
| 479 | - 'info_valider_lien' => 'validar este link', |
|
| 480 | - 'info_verifier_image' => ', verifique se as suas imagens foram transferidas corretamente.', |
|
| 481 | - 'info_vignette_defaut' => 'Ícone padrão', |
|
| 482 | - 'info_vignette_personnalisee' => 'Ícone personalizado', |
|
| 483 | - 'info_visite' => 'visita:', |
|
| 484 | - 'info_vos_rendez_vous' => 'Seus encontros futuros', |
|
| 485 | - 'infos_vos_pense_bete' => 'Seus lembretes', |
|
| 457 | + 'info_rechercher' => 'Procurar', |
|
| 458 | + 'info_rechercher_02' => 'Procurar:', |
|
| 459 | + 'info_remplacer_vignette' => 'Substituir o ícone padrão por um logo personalizado:', |
|
| 460 | + 'info_rubriques_nb' => '@nb@ seções', |
|
| 461 | + 'info_rubriques_un' => '1 seção', |
|
| 462 | + 'info_sans_titre_2' => 'sem título', |
|
| 463 | + 'info_selectionner_fichier' => 'Você pode escolher um arquivo do diretório @upload@', |
|
| 464 | + 'info_selectionner_fichier_2' => 'Selecionar um arquivo:', |
|
| 465 | + 'info_sites_nb' => '@nb@ sites', |
|
| 466 | + 'info_sites_un' => '1 site', |
|
| 467 | + 'info_supprimer_vignette' => 'excluir o ícone', |
|
| 468 | + 'info_symbole_bleu' => 'O ícone <b>azul</b> indica um <b>lembrete</b>: ou seja, uma mensagem para seu uso pessoal.', |
|
| 469 | + 'info_symbole_jaune' => 'O ícone <b>amarelo</b> indica um <b>anúncio para todos os redatores</b>: modificável por todos os administradores, e visível por todos os redatores.', |
|
| 470 | + 'info_symbole_vert' => 'O ícone <b>verde</b> indica as <b>mensagens trocadas com outros usuários</b> do site.', |
|
| 471 | + 'info_telecharger_nouveau_logo' => 'Transferir um novo logo:', |
|
| 472 | + 'info_telecharger_ordinateur' => 'Tranferir do seu computador:', |
|
| 473 | + 'info_tous_resultats_enregistres' => '[todos os resultados são gravados]', |
|
| 474 | + 'info_tout_afficher' => 'Mostrar todas', |
|
| 475 | + 'info_travaux_texte' => 'Este site ainda não está configurado. Volte mais tarde...', |
|
| 476 | + 'info_travaux_titre' => 'Site em manutenção', |
|
| 477 | + 'info_trop_resultat' => 'Resultados de mais para "@cherche_mot@"; por favor, refine a busca.', |
|
| 478 | + 'info_utilisation_messagerie_interne' => 'Você usa o sistema interno de mensagens deste site.', |
|
| 479 | + 'info_valider_lien' => 'validar este link', |
|
| 480 | + 'info_verifier_image' => ', verifique se as suas imagens foram transferidas corretamente.', |
|
| 481 | + 'info_vignette_defaut' => 'Ícone padrão', |
|
| 482 | + 'info_vignette_personnalisee' => 'Ícone personalizado', |
|
| 483 | + 'info_visite' => 'visita:', |
|
| 484 | + 'info_vos_rendez_vous' => 'Seus encontros futuros', |
|
| 485 | + 'infos_vos_pense_bete' => 'Seus lembretes', |
|
| 486 | 486 | |
| 487 | - // L |
|
| 488 | - 'label_ajout_id_rapide' => 'Ajuda rápida', |
|
| 489 | - 'label_poids_fichier' => 'Tamanho', |
|
| 490 | - 'label_ponctuer' => '@label@:', |
|
| 491 | - 'lien_afficher_icones_seuls' => 'Exibir apenas os ícones', |
|
| 492 | - 'lien_afficher_texte_icones' => 'Exibir ícones e texto', |
|
| 493 | - 'lien_afficher_texte_seul' => 'Exibir apenas o texto', |
|
| 494 | - 'lien_aller_a_la_derniere_page' => 'Ir para a última página', |
|
| 495 | - 'lien_aller_a_la_page_nb' => 'Ir para a página @nb@', |
|
| 496 | - 'lien_aller_a_la_page_precedente' => 'Ir para a página anterior', |
|
| 497 | - 'lien_aller_a_la_page_suivante' => 'Ir para a página seguinte', |
|
| 498 | - 'lien_aller_a_la_premiere_page' => 'Ir para a primeira página', |
|
| 499 | - 'lien_liberer' => 'liberar', |
|
| 500 | - 'lien_liberer_tous' => 'liberar todas', |
|
| 501 | - 'lien_nouvea_pense_bete' => 'NOVO LEMBRETE', |
|
| 502 | - 'lien_nouveau_message' => 'NOVA MENSAGEM', |
|
| 503 | - 'lien_nouvelle_annonce' => 'NOVO ANÚNCIO', |
|
| 504 | - 'lien_petitions' => 'PETIÇÃO', |
|
| 505 | - 'lien_popularite' => 'popularidade: @popularite@%', |
|
| 506 | - 'lien_racine_site' => 'RAIZ DO SITE', |
|
| 507 | - 'lien_reessayer' => 'tente novamente', |
|
| 508 | - 'lien_repondre_message' => 'Responder a esta mensagem', |
|
| 509 | - 'lien_supprimer' => 'excluir', |
|
| 510 | - 'lien_tout_afficher' => 'Mostrar tudo', |
|
| 511 | - 'lien_visite_site' => 'visitar este site', |
|
| 512 | - 'lien_visites' => '@visites@ visitas', |
|
| 513 | - 'lien_voir_auteur' => 'Ver este autor', |
|
| 514 | - 'ligne' => 'Linha', |
|
| 515 | - 'login' => 'Conexão', |
|
| 516 | - 'login_acces_prive' => 'acesso ao espaço privado', |
|
| 517 | - 'login_autre_identifiant' => 'conectar-se com outra identificação', |
|
| 518 | - 'login_cookie_accepte' => 'Por favor, configure o seu navegador para aceitá-los (pelo menos para este site).', |
|
| 519 | - 'login_cookie_oblige' => 'Para você se identificar de modo seguro neste site, você precisa aceitar cookies.', |
|
| 520 | - 'login_deconnexion_ok' => 'Desconexão efetuada.', |
|
| 521 | - 'login_erreur_pass' => 'Erro de senha.', |
|
| 522 | - 'login_espace_prive' => 'espaço privado', |
|
| 523 | - 'login_identifiant_inconnu' => 'O identificador «@login@» não está cadastrado.', |
|
| 524 | - 'login_login' => 'Login:', |
|
| 525 | - 'login_login2' => 'Login', |
|
| 526 | - 'login_login_pass_incorrect' => '(Login ou senha incorreta.)', |
|
| 527 | - 'login_motpasseoublie' => 'esqueceu sua senha?', |
|
| 528 | - 'login_non_securise' => 'Atenção, este formulário não é seguro. |
|
| 487 | + // L |
|
| 488 | + 'label_ajout_id_rapide' => 'Ajuda rápida', |
|
| 489 | + 'label_poids_fichier' => 'Tamanho', |
|
| 490 | + 'label_ponctuer' => '@label@:', |
|
| 491 | + 'lien_afficher_icones_seuls' => 'Exibir apenas os ícones', |
|
| 492 | + 'lien_afficher_texte_icones' => 'Exibir ícones e texto', |
|
| 493 | + 'lien_afficher_texte_seul' => 'Exibir apenas o texto', |
|
| 494 | + 'lien_aller_a_la_derniere_page' => 'Ir para a última página', |
|
| 495 | + 'lien_aller_a_la_page_nb' => 'Ir para a página @nb@', |
|
| 496 | + 'lien_aller_a_la_page_precedente' => 'Ir para a página anterior', |
|
| 497 | + 'lien_aller_a_la_page_suivante' => 'Ir para a página seguinte', |
|
| 498 | + 'lien_aller_a_la_premiere_page' => 'Ir para a primeira página', |
|
| 499 | + 'lien_liberer' => 'liberar', |
|
| 500 | + 'lien_liberer_tous' => 'liberar todas', |
|
| 501 | + 'lien_nouvea_pense_bete' => 'NOVO LEMBRETE', |
|
| 502 | + 'lien_nouveau_message' => 'NOVA MENSAGEM', |
|
| 503 | + 'lien_nouvelle_annonce' => 'NOVO ANÚNCIO', |
|
| 504 | + 'lien_petitions' => 'PETIÇÃO', |
|
| 505 | + 'lien_popularite' => 'popularidade: @popularite@%', |
|
| 506 | + 'lien_racine_site' => 'RAIZ DO SITE', |
|
| 507 | + 'lien_reessayer' => 'tente novamente', |
|
| 508 | + 'lien_repondre_message' => 'Responder a esta mensagem', |
|
| 509 | + 'lien_supprimer' => 'excluir', |
|
| 510 | + 'lien_tout_afficher' => 'Mostrar tudo', |
|
| 511 | + 'lien_visite_site' => 'visitar este site', |
|
| 512 | + 'lien_visites' => '@visites@ visitas', |
|
| 513 | + 'lien_voir_auteur' => 'Ver este autor', |
|
| 514 | + 'ligne' => 'Linha', |
|
| 515 | + 'login' => 'Conexão', |
|
| 516 | + 'login_acces_prive' => 'acesso ao espaço privado', |
|
| 517 | + 'login_autre_identifiant' => 'conectar-se com outra identificação', |
|
| 518 | + 'login_cookie_accepte' => 'Por favor, configure o seu navegador para aceitá-los (pelo menos para este site).', |
|
| 519 | + 'login_cookie_oblige' => 'Para você se identificar de modo seguro neste site, você precisa aceitar cookies.', |
|
| 520 | + 'login_deconnexion_ok' => 'Desconexão efetuada.', |
|
| 521 | + 'login_erreur_pass' => 'Erro de senha.', |
|
| 522 | + 'login_espace_prive' => 'espaço privado', |
|
| 523 | + 'login_identifiant_inconnu' => 'O identificador «@login@» não está cadastrado.', |
|
| 524 | + 'login_login' => 'Login:', |
|
| 525 | + 'login_login2' => 'Login', |
|
| 526 | + 'login_login_pass_incorrect' => '(Login ou senha incorreta.)', |
|
| 527 | + 'login_motpasseoublie' => 'esqueceu sua senha?', |
|
| 528 | + 'login_non_securise' => 'Atenção, este formulário não é seguro. |
|
| 529 | 529 | Se você não quiser que a sua senha possa ser interceptada na rede, por favor ative o Javascript no seu navegador e', |
| 530 | - 'login_nouvelle_tentative' => 'Tentar novamente', |
|
| 531 | - 'login_par_ici' => 'VocÊ está registrado... por aqui...', |
|
| 532 | - 'login_pass2' => 'Senha:', |
|
| 533 | - 'login_preferez_refuser' => '<b>Se você prefere recusar os cookies</b>, um outro método de conexão (menos seguro) está disponível:', |
|
| 534 | - 'login_recharger' => 'atualizar esta página', |
|
| 535 | - 'login_rester_identifie' => 'Manter-se identificado', |
|
| 536 | - 'login_retour_public' => 'Voltar ao site público', |
|
| 537 | - 'login_retour_site' => 'Voltar ao site público', |
|
| 538 | - 'login_retoursitepublic' => 'voltar ao site público', |
|
| 539 | - 'login_sans_cookie' => 'Identificação sem cookie', |
|
| 540 | - 'login_securise' => 'Login seguro', |
|
| 541 | - 'login_sinscrire' => 'cadastrar-se', |
|
| 542 | - 'login_test_navigateur' => 'testar navegador/reconexão', |
|
| 543 | - 'login_verifiez_navigateur' => '(Verifique sempre se o seu navegador não está memorizando a sua senha...)', |
|
| 530 | + 'login_nouvelle_tentative' => 'Tentar novamente', |
|
| 531 | + 'login_par_ici' => 'VocÊ está registrado... por aqui...', |
|
| 532 | + 'login_pass2' => 'Senha:', |
|
| 533 | + 'login_preferez_refuser' => '<b>Se você prefere recusar os cookies</b>, um outro método de conexão (menos seguro) está disponível:', |
|
| 534 | + 'login_recharger' => 'atualizar esta página', |
|
| 535 | + 'login_rester_identifie' => 'Manter-se identificado', |
|
| 536 | + 'login_retour_public' => 'Voltar ao site público', |
|
| 537 | + 'login_retour_site' => 'Voltar ao site público', |
|
| 538 | + 'login_retoursitepublic' => 'voltar ao site público', |
|
| 539 | + 'login_sans_cookie' => 'Identificação sem cookie', |
|
| 540 | + 'login_securise' => 'Login seguro', |
|
| 541 | + 'login_sinscrire' => 'cadastrar-se', |
|
| 542 | + 'login_test_navigateur' => 'testar navegador/reconexão', |
|
| 543 | + 'login_verifiez_navigateur' => '(Verifique sempre se o seu navegador não está memorizando a sua senha...)', |
|
| 544 | 544 | |
| 545 | - // M |
|
| 546 | - 'masquer_colonne' => 'Ocultar esta coluna', |
|
| 547 | - 'masquer_trad' => 'esconder as traduções', |
|
| 548 | - 'message_nouveaux_identifiants_echec' => 'Impossível criar novos logins.', |
|
| 549 | - 'message_nouveaux_identifiants_echec_envoi' => 'Os novos logins de conexão não puderam ser enviados.', |
|
| 550 | - 'message_nouveaux_identifiants_ok' => 'Os novos logins de conexão foram enviados para @email@.', |
|
| 551 | - 'module_fichiers_langues' => 'Arquivos de idioma', |
|
| 545 | + // M |
|
| 546 | + 'masquer_colonne' => 'Ocultar esta coluna', |
|
| 547 | + 'masquer_trad' => 'esconder as traduções', |
|
| 548 | + 'message_nouveaux_identifiants_echec' => 'Impossível criar novos logins.', |
|
| 549 | + 'message_nouveaux_identifiants_echec_envoi' => 'Os novos logins de conexão não puderam ser enviados.', |
|
| 550 | + 'message_nouveaux_identifiants_ok' => 'Os novos logins de conexão foram enviados para @email@.', |
|
| 551 | + 'module_fichiers_langues' => 'Arquivos de idioma', |
|
| 552 | 552 | |
| 553 | - // N |
|
| 554 | - 'navigateur_pas_redirige' => 'Se o seu navegador não o redirecionar, clique aqui para continuar.', |
|
| 555 | - 'numero' => 'Número', |
|
| 553 | + // N |
|
| 554 | + 'navigateur_pas_redirige' => 'Se o seu navegador não o redirecionar, clique aqui para continuar.', |
|
| 555 | + 'numero' => 'Número', |
|
| 556 | 556 | |
| 557 | - // O |
|
| 558 | - 'occurence' => 'Ocorrência', |
|
| 559 | - 'onglet_affacer_base' => 'Apagar a base', |
|
| 560 | - 'onglet_auteur' => 'O autor', |
|
| 561 | - 'onglet_contenu_site' => 'Conteúdo do site', |
|
| 562 | - 'onglet_evolution_visite_mod' => 'Evolução', |
|
| 563 | - 'onglet_fonctions_avances' => 'Funções avançadas', |
|
| 564 | - 'onglet_informations_personnelles' => 'Informações pessoais', |
|
| 565 | - 'onglet_interactivite' => 'Interatividade', |
|
| 566 | - 'onglet_messagerie' => 'Sistema de mensagens', |
|
| 567 | - 'onglet_repartition_rubrique' => 'Repartição por seções', |
|
| 568 | - 'onglet_save_restaur_base' => 'Fazer cópia de segurança/restaurar a base', |
|
| 569 | - 'onglet_vider_cache' => 'Esvaziar o cache', |
|
| 557 | + // O |
|
| 558 | + 'occurence' => 'Ocorrência', |
|
| 559 | + 'onglet_affacer_base' => 'Apagar a base', |
|
| 560 | + 'onglet_auteur' => 'O autor', |
|
| 561 | + 'onglet_contenu_site' => 'Conteúdo do site', |
|
| 562 | + 'onglet_evolution_visite_mod' => 'Evolução', |
|
| 563 | + 'onglet_fonctions_avances' => 'Funções avançadas', |
|
| 564 | + 'onglet_informations_personnelles' => 'Informações pessoais', |
|
| 565 | + 'onglet_interactivite' => 'Interatividade', |
|
| 566 | + 'onglet_messagerie' => 'Sistema de mensagens', |
|
| 567 | + 'onglet_repartition_rubrique' => 'Repartição por seções', |
|
| 568 | + 'onglet_save_restaur_base' => 'Fazer cópia de segurança/restaurar a base', |
|
| 569 | + 'onglet_vider_cache' => 'Esvaziar o cache', |
|
| 570 | 570 | |
| 571 | - // P |
|
| 572 | - 'pass_choix_pass' => 'Por favor, escolha a sua nova senha:', |
|
| 573 | - 'pass_erreur' => 'Erro', |
|
| 574 | - 'pass_erreur_acces_refuse' => '<b>Erro:</b> você não tem mais acesso a este site.', |
|
| 575 | - 'pass_erreur_code_inconnu' => '<b>Erro:</b> este login não corresponde a nenhum visitante com permissão de acesso a este site.', |
|
| 576 | - 'pass_erreur_non_enregistre' => '<b>Erro:</b> o e-mail <tt>@email_oubli@</tt> não está cadastrado neste site.', |
|
| 577 | - 'pass_erreur_non_valide' => '<b>Erro:</b> o e-mail <tt>@email_oubli@</tt> não é válido!', |
|
| 578 | - 'pass_erreur_probleme_technique' => '<b>Erro:</b> este e-mail não pôde ser enviado devido a um problema técnico.', |
|
| 579 | - 'pass_espace_prive_bla' => 'O espaço privado deste site é aberto aos visitantes, após inscrição. Uma vez cadastrado, você poderá consultar as matérias em fase de redação, propor a publicação de novas matérias e participar de todos os fóruns.', |
|
| 580 | - 'pass_forum_bla' => 'Você soliciou a participação num fórum reservado a visitantes registrados.', |
|
| 581 | - 'pass_indiquez_cidessous' => 'Informe abaixo o endereço de e-mail com o qual você se cadastrou anteriormente. Você receberá um e-mail lhe indicando os procedimentos a seguir para recuperar o seu acesso.', |
|
| 582 | - 'pass_mail_passcookie' => '(esta é uma mensagem automática) |
|
| 571 | + // P |
|
| 572 | + 'pass_choix_pass' => 'Por favor, escolha a sua nova senha:', |
|
| 573 | + 'pass_erreur' => 'Erro', |
|
| 574 | + 'pass_erreur_acces_refuse' => '<b>Erro:</b> você não tem mais acesso a este site.', |
|
| 575 | + 'pass_erreur_code_inconnu' => '<b>Erro:</b> este login não corresponde a nenhum visitante com permissão de acesso a este site.', |
|
| 576 | + 'pass_erreur_non_enregistre' => '<b>Erro:</b> o e-mail <tt>@email_oubli@</tt> não está cadastrado neste site.', |
|
| 577 | + 'pass_erreur_non_valide' => '<b>Erro:</b> o e-mail <tt>@email_oubli@</tt> não é válido!', |
|
| 578 | + 'pass_erreur_probleme_technique' => '<b>Erro:</b> este e-mail não pôde ser enviado devido a um problema técnico.', |
|
| 579 | + 'pass_espace_prive_bla' => 'O espaço privado deste site é aberto aos visitantes, após inscrição. Uma vez cadastrado, você poderá consultar as matérias em fase de redação, propor a publicação de novas matérias e participar de todos os fóruns.', |
|
| 580 | + 'pass_forum_bla' => 'Você soliciou a participação num fórum reservado a visitantes registrados.', |
|
| 581 | + 'pass_indiquez_cidessous' => 'Informe abaixo o endereço de e-mail com o qual você se cadastrou anteriormente. Você receberá um e-mail lhe indicando os procedimentos a seguir para recuperar o seu acesso.', |
|
| 582 | + 'pass_mail_passcookie' => '(esta é uma mensagem automática) |
|
| 583 | 583 | Para recuperar o seu acesso ao site |
| 584 | 584 | @nom_site_spip@ (@adresse_site@) |
| 585 | 585 | |
@@ -591,136 +591,136 @@ discard block |
||
| 591 | 591 | e reconectar-se com o site. |
| 592 | 592 | |
| 593 | 593 | ', |
| 594 | - 'pass_mot_oublie' => 'Senha esquecida', |
|
| 595 | - 'pass_nouveau_enregistre' => 'Sua nova senha foi cadastrada.', |
|
| 596 | - 'pass_nouveau_pass' => 'Nova senha', |
|
| 597 | - 'pass_ok' => 'OK', |
|
| 598 | - 'pass_oubli_mot' => 'Esquecimento de senha', |
|
| 599 | - 'pass_procedure_changer' => 'Para alterar a sua senha, por favor informe o endereço de e-mail associado à sua conta.', |
|
| 600 | - 'pass_quitter_fenetre' => 'Fechar esta janela', |
|
| 601 | - 'pass_rappel_login' => 'Lembrete: seu login é «@login@».', |
|
| 602 | - 'pass_recevoir_mail' => 'Um link para redefinição da sua senha foi enviado para o seu endereço de e-mail (se ele for válido).', |
|
| 603 | - 'pass_retour_public' => 'Voltar para o site público', |
|
| 604 | - 'pass_rien_a_faire_ici' => 'Nada a fazer aqui.', |
|
| 605 | - 'pass_vousinscrire' => 'Cadastrar-se neste site', |
|
| 606 | - 'precedent' => 'precedente', |
|
| 607 | - 'previsualisation' => 'Visualização', |
|
| 608 | - 'previsualiser' => 'Visualizar', |
|
| 594 | + 'pass_mot_oublie' => 'Senha esquecida', |
|
| 595 | + 'pass_nouveau_enregistre' => 'Sua nova senha foi cadastrada.', |
|
| 596 | + 'pass_nouveau_pass' => 'Nova senha', |
|
| 597 | + 'pass_ok' => 'OK', |
|
| 598 | + 'pass_oubli_mot' => 'Esquecimento de senha', |
|
| 599 | + 'pass_procedure_changer' => 'Para alterar a sua senha, por favor informe o endereço de e-mail associado à sua conta.', |
|
| 600 | + 'pass_quitter_fenetre' => 'Fechar esta janela', |
|
| 601 | + 'pass_rappel_login' => 'Lembrete: seu login é «@login@».', |
|
| 602 | + 'pass_recevoir_mail' => 'Um link para redefinição da sua senha foi enviado para o seu endereço de e-mail (se ele for válido).', |
|
| 603 | + 'pass_retour_public' => 'Voltar para o site público', |
|
| 604 | + 'pass_rien_a_faire_ici' => 'Nada a fazer aqui.', |
|
| 605 | + 'pass_vousinscrire' => 'Cadastrar-se neste site', |
|
| 606 | + 'precedent' => 'precedente', |
|
| 607 | + 'previsualisation' => 'Visualização', |
|
| 608 | + 'previsualiser' => 'Visualizar', |
|
| 609 | 609 | |
| 610 | - // R |
|
| 611 | - 'retour' => 'Voltar', |
|
| 610 | + // R |
|
| 611 | + 'retour' => 'Voltar', |
|
| 612 | 612 | |
| 613 | - // S |
|
| 614 | - 'spip_conforme_dtd' => 'O SPIP considera este documento de acordo com o seu DOCTYPE:', |
|
| 615 | - 'squelette' => 'template', |
|
| 616 | - 'squelette_inclus_ligne' => 'template incluído, linha', |
|
| 617 | - 'squelette_ligne' => 'template, linha', |
|
| 618 | - 'stats_visites_et_popularite' => '@visites@ visitas; popularidade: @popularite@', |
|
| 619 | - 'suivant' => 'seguinte', |
|
| 613 | + // S |
|
| 614 | + 'spip_conforme_dtd' => 'O SPIP considera este documento de acordo com o seu DOCTYPE:', |
|
| 615 | + 'squelette' => 'template', |
|
| 616 | + 'squelette_inclus_ligne' => 'template incluído, linha', |
|
| 617 | + 'squelette_ligne' => 'template, linha', |
|
| 618 | + 'stats_visites_et_popularite' => '@visites@ visitas; popularidade: @popularite@', |
|
| 619 | + 'suivant' => 'seguinte', |
|
| 620 | 620 | |
| 621 | - // T |
|
| 622 | - 'taille_go' => '@taille@ GB', |
|
| 623 | - 'taille_ko' => '@taille@ KB', |
|
| 624 | - 'taille_mo' => '@taille@ MB', |
|
| 625 | - 'taille_octets' => ' @taille@ bytes', |
|
| 626 | - 'texte_actualite_site_1' => 'Quando você estiver mais familiarizado com a interface, clique em «', |
|
| 627 | - 'texte_actualite_site_2' => 'interface completa', |
|
| 628 | - 'texte_actualite_site_3' => '» para abrir mais possibilidades.', |
|
| 629 | - 'texte_creation_automatique_vignette' => 'A criação automática de ícones de visualização está ativada neste site. Se você transferir por este formulário imagens no(s) formato(s) @gd_formats@, elas serão acompanhadas de um ícone com o tamanho máximo de @taille_preview@ pixels.', |
|
| 630 | - 'texte_documents_associes' => 'Os documentos a seguir estão associados à matéria, |
|
| 621 | + // T |
|
| 622 | + 'taille_go' => '@taille@ GB', |
|
| 623 | + 'taille_ko' => '@taille@ KB', |
|
| 624 | + 'taille_mo' => '@taille@ MB', |
|
| 625 | + 'taille_octets' => ' @taille@ bytes', |
|
| 626 | + 'texte_actualite_site_1' => 'Quando você estiver mais familiarizado com a interface, clique em «', |
|
| 627 | + 'texte_actualite_site_2' => 'interface completa', |
|
| 628 | + 'texte_actualite_site_3' => '» para abrir mais possibilidades.', |
|
| 629 | + 'texte_creation_automatique_vignette' => 'A criação automática de ícones de visualização está ativada neste site. Se você transferir por este formulário imagens no(s) formato(s) @gd_formats@, elas serão acompanhadas de um ícone com o tamanho máximo de @taille_preview@ pixels.', |
|
| 630 | + 'texte_documents_associes' => 'Os documentos a seguir estão associados à matéria, |
|
| 631 | 631 | mas eles não foram inseridos diretamente. Dependendo da elaboração dos templates do site público, eles podem aparecer como documentos anexados.', |
| 632 | - 'texte_erreur_mise_niveau_base' => 'Erro da base de dados durante a atualização. |
|
| 632 | + 'texte_erreur_mise_niveau_base' => 'Erro da base de dados durante a atualização. |
|
| 633 | 633 | A imagem <b>@fichier@</b> não passou (matéria @id_article@). |
| 634 | 634 | Anote esta referência, tente novamente a atualização e, finalmente, verifique se as imagens aparecem nas matérias.', |
| 635 | - 'texte_erreur_visiteur' => 'Você tentou acessar o espaço restrito com um login que não tem a permissão necessária.', |
|
| 636 | - 'texte_inc_auth_1' => 'Você se identificou com o login <b>@auth_login@</b>, mas ele não consta (mais) na base. |
|
| 635 | + 'texte_erreur_visiteur' => 'Você tentou acessar o espaço restrito com um login que não tem a permissão necessária.', |
|
| 636 | + 'texte_inc_auth_1' => 'Você se identificou com o login <b>@auth_login@</b>, mas ele não consta (mais) na base. |
|
| 637 | 637 | Tente se', |
| 638 | - 'texte_inc_auth_2' => 'reconectar', |
|
| 639 | - 'texte_inc_auth_3' => ', após ter eventualmente saído e reiniciado o seu navegador.', |
|
| 640 | - 'texte_inc_config' => 'As modificações efetuadas nestas páginas influem consideravelmente no funcionamento do seu site. É recomendável não intervir enquanto você não estiver familiarizado com o funcionamento do sistema SPIP.<br /><br /><b>Geralmente, é fortemente aconselhável deixar a carga destas páginas para o webmaster principal do seu site.</b>', |
|
| 641 | - 'texte_inc_meta_1' => 'O sistema encontrou um erro durante a escrita do arquivo <code>@fichier@</code>. Como administrador do site, queira por favor,', |
|
| 642 | - 'texte_inc_meta_2' => 'Verificar os direitos de escrita', |
|
| 643 | - 'texte_inc_meta_3' => 'no diretório <code>@repertoire@</code>.', |
|
| 644 | - 'texte_statut_en_cours_redaction' => 'em fase de redação', |
|
| 645 | - 'texte_statut_poubelle' => 'na lixeira', |
|
| 646 | - 'texte_statut_propose_evaluation' => 'proposto para avaliação', |
|
| 647 | - 'texte_statut_publie' => 'publicado online', |
|
| 648 | - 'texte_statut_refuse' => 'recusado', |
|
| 649 | - 'titre_ajouter_mot_cle' => 'INCLUIR UMA PALAVRA-CHAVE:', |
|
| 650 | - 'titre_cadre_raccourcis' => 'ATALHOS:', |
|
| 651 | - 'titre_changer_couleur_interface' => 'Alterar a côr da interface', |
|
| 652 | - 'titre_image_admin_article' => 'Você pode administrar esta matéria', |
|
| 653 | - 'titre_image_administrateur' => 'Administrador', |
|
| 654 | - 'titre_image_aide' => 'Ajuda sobre este elemento', |
|
| 655 | - 'titre_image_auteur_supprime' => 'Autor excluído', |
|
| 656 | - 'titre_image_redacteur' => 'Redator sem acesso', |
|
| 657 | - 'titre_image_redacteur_02' => 'Redator', |
|
| 658 | - 'titre_image_selecteur' => 'Ver a lista', |
|
| 659 | - 'titre_image_visiteur' => 'Visitante', |
|
| 660 | - 'titre_joindre_document' => 'INCLUIR UM DOCUMENTO', |
|
| 661 | - 'titre_mots_cles' => 'PALAVRAS-CHAVE', |
|
| 662 | - 'titre_probleme_technique' => 'Atenção: um problema técnico (servidor SQL) impede o acesso a esta parte do site. Agradecemos sua compreensão.', |
|
| 663 | - 'titre_publier_document' => 'PUBLICAR UM DOCUMENTO NESTA SEÇÃO', |
|
| 664 | - 'titre_signatures_attente' => 'Assinaturas aguardando validação', |
|
| 665 | - 'titre_signatures_confirmees' => 'Assinaturas confirmadas', |
|
| 666 | - 'titre_statistiques' => 'Estatísticas do site', |
|
| 667 | - 'titre_titre_document' => 'Título do documento:', |
|
| 668 | - 'todo' => 'breve', |
|
| 669 | - 'trad_definir_reference' => 'Escolher "@titre@" como referência das traduções', |
|
| 670 | - 'trad_reference' => '(matéria das traduções)', |
|
| 638 | + 'texte_inc_auth_2' => 'reconectar', |
|
| 639 | + 'texte_inc_auth_3' => ', após ter eventualmente saído e reiniciado o seu navegador.', |
|
| 640 | + 'texte_inc_config' => 'As modificações efetuadas nestas páginas influem consideravelmente no funcionamento do seu site. É recomendável não intervir enquanto você não estiver familiarizado com o funcionamento do sistema SPIP.<br /><br /><b>Geralmente, é fortemente aconselhável deixar a carga destas páginas para o webmaster principal do seu site.</b>', |
|
| 641 | + 'texte_inc_meta_1' => 'O sistema encontrou um erro durante a escrita do arquivo <code>@fichier@</code>. Como administrador do site, queira por favor,', |
|
| 642 | + 'texte_inc_meta_2' => 'Verificar os direitos de escrita', |
|
| 643 | + 'texte_inc_meta_3' => 'no diretório <code>@repertoire@</code>.', |
|
| 644 | + 'texte_statut_en_cours_redaction' => 'em fase de redação', |
|
| 645 | + 'texte_statut_poubelle' => 'na lixeira', |
|
| 646 | + 'texte_statut_propose_evaluation' => 'proposto para avaliação', |
|
| 647 | + 'texte_statut_publie' => 'publicado online', |
|
| 648 | + 'texte_statut_refuse' => 'recusado', |
|
| 649 | + 'titre_ajouter_mot_cle' => 'INCLUIR UMA PALAVRA-CHAVE:', |
|
| 650 | + 'titre_cadre_raccourcis' => 'ATALHOS:', |
|
| 651 | + 'titre_changer_couleur_interface' => 'Alterar a côr da interface', |
|
| 652 | + 'titre_image_admin_article' => 'Você pode administrar esta matéria', |
|
| 653 | + 'titre_image_administrateur' => 'Administrador', |
|
| 654 | + 'titre_image_aide' => 'Ajuda sobre este elemento', |
|
| 655 | + 'titre_image_auteur_supprime' => 'Autor excluído', |
|
| 656 | + 'titre_image_redacteur' => 'Redator sem acesso', |
|
| 657 | + 'titre_image_redacteur_02' => 'Redator', |
|
| 658 | + 'titre_image_selecteur' => 'Ver a lista', |
|
| 659 | + 'titre_image_visiteur' => 'Visitante', |
|
| 660 | + 'titre_joindre_document' => 'INCLUIR UM DOCUMENTO', |
|
| 661 | + 'titre_mots_cles' => 'PALAVRAS-CHAVE', |
|
| 662 | + 'titre_probleme_technique' => 'Atenção: um problema técnico (servidor SQL) impede o acesso a esta parte do site. Agradecemos sua compreensão.', |
|
| 663 | + 'titre_publier_document' => 'PUBLICAR UM DOCUMENTO NESTA SEÇÃO', |
|
| 664 | + 'titre_signatures_attente' => 'Assinaturas aguardando validação', |
|
| 665 | + 'titre_signatures_confirmees' => 'Assinaturas confirmadas', |
|
| 666 | + 'titre_statistiques' => 'Estatísticas do site', |
|
| 667 | + 'titre_titre_document' => 'Título do documento:', |
|
| 668 | + 'todo' => 'breve', |
|
| 669 | + 'trad_definir_reference' => 'Escolher "@titre@" como referência das traduções', |
|
| 670 | + 'trad_reference' => '(matéria das traduções)', |
|
| 671 | 671 | |
| 672 | - // U |
|
| 673 | - 'upload_limit' => 'Este arquivo é grande demais para o servidor; o tamanho máximo autorizado para <i>upload</i> é de @max@.', |
|
| 672 | + // U |
|
| 673 | + 'upload_limit' => 'Este arquivo é grande demais para o servidor; o tamanho máximo autorizado para <i>upload</i> é de @max@.', |
|
| 674 | 674 | |
| 675 | - // Z |
|
| 676 | - 'zbug_balise_b_aval' => ': tag B colocada após BOUCLE', |
|
| 677 | - 'zbug_balise_inexistante' => 'Tag @balise@ mal declarada para @from@', |
|
| 678 | - 'zbug_balise_sans_argument' => 'Falta um arqumento na tag @balise@', |
|
| 679 | - 'zbug_boucle' => 'laço', |
|
| 680 | - 'zbug_boucle_recursive_undef' => 'Laço recursivo não definido: @nom@', |
|
| 681 | - 'zbug_calcul' => 'cálculo', |
|
| 682 | - 'zbug_champ_hors_boucle' => 'Campo @champ@ fora do laço', |
|
| 683 | - 'zbug_champ_hors_critere' => 'Campo @champ@ fora do critério @critere@', |
|
| 684 | - 'zbug_champ_hors_motif' => 'Campo @champ@ fora de um contexto @motif@', |
|
| 685 | - 'zbug_code' => 'código', |
|
| 686 | - 'zbug_critere_inconnu' => 'Critério @critere@ desconhecido', |
|
| 687 | - 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} em uma tabela sem chave primária atômica', |
|
| 688 | - 'zbug_distant_interdit' => 'Externa interdita', |
|
| 689 | - 'zbug_doublon_table_sans_cle_primaire' => 'Duplicação em tabela sem chave primária atômica', |
|
| 690 | - 'zbug_doublon_table_sans_index' => 'Doublons em uma tabela sem index', |
|
| 691 | - 'zbug_erreur_boucle_double' => 'Dupla definição do laço @id@', |
|
| 692 | - 'zbug_erreur_boucle_fermant' => 'Laço @id@ não fechado', |
|
| 693 | - 'zbug_erreur_boucle_syntaxe' => 'Sintaxe do laço @id@ está incorreta', |
|
| 694 | - 'zbug_erreur_compilation' => 'Erro de compilação', |
|
| 695 | - 'zbug_erreur_execution_page' => 'Erro de execução', |
|
| 696 | - 'zbug_erreur_filtre' => 'Filtro @filtre@ não definido', |
|
| 697 | - 'zbug_erreur_filtre_nbarg_min' => 'Filtro @filtre@: falta(m) @nb@ argumento(s)', |
|
| 698 | - 'zbug_erreur_meme_parent' => 'O critério {meme_parent} aplica-se exclusivamente aos laços (FORUMS) ou (RUBRIQUES)', |
|
| 699 | - 'zbug_erreur_squelette' => 'Erro(s) no template', |
|
| 700 | - 'zbug_hors_compilation' => 'Fora de Compilação', |
|
| 701 | - 'zbug_info_erreur_squelette' => 'Erro no site', |
|
| 702 | - 'zbug_inversion_ordre_inexistant' => 'Inversão de uma ordem inexistente', |
|
| 703 | - 'zbug_pagination_sans_critere' => 'Tag #PAGINATION sem critério {pagination} ou usada dentro de uma boucle recursiva', |
|
| 704 | - 'zbug_parametres_inclus_incorrects' => 'Parâmetro de inclusão incorreto: @param@', |
|
| 705 | - 'zbug_profile' => 'Tempo de processamento: @time@', |
|
| 706 | - 'zbug_resultat' => 'resultado', |
|
| 707 | - 'zbug_serveur_indefini' => 'Sevidor SQL não definido', |
|
| 708 | - 'zbug_statistiques' => 'Estatísticas das requisições SQL classificadas por duração', |
|
| 709 | - 'zbug_table_inconnue' => 'Tabela SQL «@table@» desconhecida', |
|
| 710 | - 'zxml_connus_attributs' => 'atributos conhecidos', |
|
| 711 | - 'zxml_de' => 'de', |
|
| 712 | - 'zxml_inconnu_attribut' => 'atributo desconhecido', |
|
| 713 | - 'zxml_inconnu_balise' => 'tag desconhecida', |
|
| 714 | - 'zxml_inconnu_entite' => 'entidade desconhecida', |
|
| 715 | - 'zxml_inconnu_id' => 'ID desconhecida', |
|
| 716 | - 'zxml_mais_de' => 'mas de', |
|
| 717 | - 'zxml_non_conforme' => 'não está de acordo com o motivo', |
|
| 718 | - 'zxml_non_fils' => 'não é filho de', |
|
| 719 | - 'zxml_nonvide_balise' => 'tag não vazia', |
|
| 720 | - 'zxml_obligatoire_attribut' => 'atributo obrigatório mas ausente em', |
|
| 721 | - 'zxml_succession_fils_incorrecte' => 'sucessão de filhos incorreta', |
|
| 722 | - 'zxml_survoler' => 'sobrepor para ver os corretos', |
|
| 723 | - 'zxml_valeur_attribut' => 'valor do atributo', |
|
| 724 | - 'zxml_vide_balise' => 'tag vazia', |
|
| 725 | - 'zxml_vu' => 'previsualização' |
|
| 675 | + // Z |
|
| 676 | + 'zbug_balise_b_aval' => ': tag B colocada após BOUCLE', |
|
| 677 | + 'zbug_balise_inexistante' => 'Tag @balise@ mal declarada para @from@', |
|
| 678 | + 'zbug_balise_sans_argument' => 'Falta um arqumento na tag @balise@', |
|
| 679 | + 'zbug_boucle' => 'laço', |
|
| 680 | + 'zbug_boucle_recursive_undef' => 'Laço recursivo não definido: @nom@', |
|
| 681 | + 'zbug_calcul' => 'cálculo', |
|
| 682 | + 'zbug_champ_hors_boucle' => 'Campo @champ@ fora do laço', |
|
| 683 | + 'zbug_champ_hors_critere' => 'Campo @champ@ fora do critério @critere@', |
|
| 684 | + 'zbug_champ_hors_motif' => 'Campo @champ@ fora de um contexto @motif@', |
|
| 685 | + 'zbug_code' => 'código', |
|
| 686 | + 'zbug_critere_inconnu' => 'Critério @critere@ desconhecido', |
|
| 687 | + 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} em uma tabela sem chave primária atômica', |
|
| 688 | + 'zbug_distant_interdit' => 'Externa interdita', |
|
| 689 | + 'zbug_doublon_table_sans_cle_primaire' => 'Duplicação em tabela sem chave primária atômica', |
|
| 690 | + 'zbug_doublon_table_sans_index' => 'Doublons em uma tabela sem index', |
|
| 691 | + 'zbug_erreur_boucle_double' => 'Dupla definição do laço @id@', |
|
| 692 | + 'zbug_erreur_boucle_fermant' => 'Laço @id@ não fechado', |
|
| 693 | + 'zbug_erreur_boucle_syntaxe' => 'Sintaxe do laço @id@ está incorreta', |
|
| 694 | + 'zbug_erreur_compilation' => 'Erro de compilação', |
|
| 695 | + 'zbug_erreur_execution_page' => 'Erro de execução', |
|
| 696 | + 'zbug_erreur_filtre' => 'Filtro @filtre@ não definido', |
|
| 697 | + 'zbug_erreur_filtre_nbarg_min' => 'Filtro @filtre@: falta(m) @nb@ argumento(s)', |
|
| 698 | + 'zbug_erreur_meme_parent' => 'O critério {meme_parent} aplica-se exclusivamente aos laços (FORUMS) ou (RUBRIQUES)', |
|
| 699 | + 'zbug_erreur_squelette' => 'Erro(s) no template', |
|
| 700 | + 'zbug_hors_compilation' => 'Fora de Compilação', |
|
| 701 | + 'zbug_info_erreur_squelette' => 'Erro no site', |
|
| 702 | + 'zbug_inversion_ordre_inexistant' => 'Inversão de uma ordem inexistente', |
|
| 703 | + 'zbug_pagination_sans_critere' => 'Tag #PAGINATION sem critério {pagination} ou usada dentro de uma boucle recursiva', |
|
| 704 | + 'zbug_parametres_inclus_incorrects' => 'Parâmetro de inclusão incorreto: @param@', |
|
| 705 | + 'zbug_profile' => 'Tempo de processamento: @time@', |
|
| 706 | + 'zbug_resultat' => 'resultado', |
|
| 707 | + 'zbug_serveur_indefini' => 'Sevidor SQL não definido', |
|
| 708 | + 'zbug_statistiques' => 'Estatísticas das requisições SQL classificadas por duração', |
|
| 709 | + 'zbug_table_inconnue' => 'Tabela SQL «@table@» desconhecida', |
|
| 710 | + 'zxml_connus_attributs' => 'atributos conhecidos', |
|
| 711 | + 'zxml_de' => 'de', |
|
| 712 | + 'zxml_inconnu_attribut' => 'atributo desconhecido', |
|
| 713 | + 'zxml_inconnu_balise' => 'tag desconhecida', |
|
| 714 | + 'zxml_inconnu_entite' => 'entidade desconhecida', |
|
| 715 | + 'zxml_inconnu_id' => 'ID desconhecida', |
|
| 716 | + 'zxml_mais_de' => 'mas de', |
|
| 717 | + 'zxml_non_conforme' => 'não está de acordo com o motivo', |
|
| 718 | + 'zxml_non_fils' => 'não é filho de', |
|
| 719 | + 'zxml_nonvide_balise' => 'tag não vazia', |
|
| 720 | + 'zxml_obligatoire_attribut' => 'atributo obrigatório mas ausente em', |
|
| 721 | + 'zxml_succession_fils_incorrecte' => 'sucessão de filhos incorreta', |
|
| 722 | + 'zxml_survoler' => 'sobrepor para ver os corretos', |
|
| 723 | + 'zxml_valeur_attribut' => 'valor do atributo', |
|
| 724 | + 'zxml_vide_balise' => 'tag vazia', |
|
| 725 | + 'zxml_vu' => 'previsualização' |
|
| 726 | 726 | ); |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | */ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | /** |
@@ -39,36 +39,36 @@ discard block |
||
| 39 | 39 | * Liste (identifiant de l'article, Texte d'erreur éventuel) |
| 40 | 40 | */ |
| 41 | 41 | function action_editer_article_dist($arg = null) { |
| 42 | - include_spip('inc/autoriser'); |
|
| 43 | - $err = ''; |
|
| 44 | - if (is_null($arg)) { |
|
| 45 | - $securiser_action = charger_fonction('securiser_action', 'inc'); |
|
| 46 | - $arg = $securiser_action(); |
|
| 47 | - } |
|
| 48 | - |
|
| 49 | - // si id_article n'est pas un nombre, c'est une creation |
|
| 50 | - // mais on verifie qu'on a toutes les donnees qu'il faut. |
|
| 51 | - if (!$id_article = intval($arg)) { |
|
| 52 | - $id_parent = _request('id_parent'); |
|
| 53 | - if (!$id_parent) { |
|
| 54 | - $err = _L("creation interdite d'un article sans rubrique"); |
|
| 55 | - } elseif (!autoriser('creerarticledans', 'rubrique', $id_parent)) { |
|
| 56 | - $err = _T('info_creerdansrubrique_non_autorise'); |
|
| 57 | - } else { |
|
| 58 | - $id_article = article_inserer($id_parent); |
|
| 59 | - } |
|
| 60 | - } |
|
| 61 | - |
|
| 62 | - // Enregistre l'envoi dans la BD |
|
| 63 | - if ($id_article > 0) { |
|
| 64 | - $err = article_modifier($id_article); |
|
| 65 | - } |
|
| 66 | - |
|
| 67 | - if ($err) { |
|
| 68 | - spip_log("echec editeur article: $err", _LOG_ERREUR); |
|
| 69 | - } |
|
| 70 | - |
|
| 71 | - return [$id_article, $err]; |
|
| 42 | + include_spip('inc/autoriser'); |
|
| 43 | + $err = ''; |
|
| 44 | + if (is_null($arg)) { |
|
| 45 | + $securiser_action = charger_fonction('securiser_action', 'inc'); |
|
| 46 | + $arg = $securiser_action(); |
|
| 47 | + } |
|
| 48 | + |
|
| 49 | + // si id_article n'est pas un nombre, c'est une creation |
|
| 50 | + // mais on verifie qu'on a toutes les donnees qu'il faut. |
|
| 51 | + if (!$id_article = intval($arg)) { |
|
| 52 | + $id_parent = _request('id_parent'); |
|
| 53 | + if (!$id_parent) { |
|
| 54 | + $err = _L("creation interdite d'un article sans rubrique"); |
|
| 55 | + } elseif (!autoriser('creerarticledans', 'rubrique', $id_parent)) { |
|
| 56 | + $err = _T('info_creerdansrubrique_non_autorise'); |
|
| 57 | + } else { |
|
| 58 | + $id_article = article_inserer($id_parent); |
|
| 59 | + } |
|
| 60 | + } |
|
| 61 | + |
|
| 62 | + // Enregistre l'envoi dans la BD |
|
| 63 | + if ($id_article > 0) { |
|
| 64 | + $err = article_modifier($id_article); |
|
| 65 | + } |
|
| 66 | + |
|
| 67 | + if ($err) { |
|
| 68 | + spip_log("echec editeur article: $err", _LOG_ERREUR); |
|
| 69 | + } |
|
| 70 | + |
|
| 71 | + return [$id_article, $err]; |
|
| 72 | 72 | } |
| 73 | 73 | |
| 74 | 74 | /** |
@@ -90,50 +90,50 @@ discard block |
||
| 90 | 90 | */ |
| 91 | 91 | function article_modifier($id_article, $set = null) { |
| 92 | 92 | |
| 93 | - // unifier $texte en cas de texte trop long |
|
| 94 | - trop_longs_articles(); |
|
| 95 | - |
|
| 96 | - include_spip('inc/modifier'); |
|
| 97 | - include_spip('inc/filtres'); |
|
| 98 | - $c = collecter_requests( |
|
| 99 | - // include list |
|
| 100 | - objet_info('article', 'champs_editables'), |
|
| 101 | - // exclude list |
|
| 102 | - ['date', 'statut', 'id_parent'], |
|
| 103 | - // donnees eventuellement fournies |
|
| 104 | - $set |
|
| 105 | - ); |
|
| 106 | - |
|
| 107 | - // Si l'article est publie, invalider les caches et demander sa reindexation |
|
| 108 | - $t = sql_getfetsel('statut', 'spip_articles', 'id_article=' . intval($id_article)); |
|
| 109 | - $invalideur = $indexation = false; |
|
| 110 | - if ($t == 'publie') { |
|
| 111 | - $invalideur = "id='article/$id_article'"; |
|
| 112 | - $indexation = true; |
|
| 113 | - } |
|
| 114 | - |
|
| 115 | - if ( |
|
| 116 | - $err = objet_modifier_champs( |
|
| 117 | - 'article', |
|
| 118 | - $id_article, |
|
| 119 | - [ |
|
| 120 | - 'data' => $set, |
|
| 121 | - 'nonvide' => ['titre' => _T('info_nouvel_article') . ' ' . _T('info_numero_abbreviation') . $id_article], |
|
| 122 | - 'invalideur' => $invalideur, |
|
| 123 | - 'indexation' => $indexation, |
|
| 124 | - 'date_modif' => 'date_modif' // champ a mettre a date('Y-m-d H:i:s') s'il y a modif |
|
| 125 | - ], |
|
| 126 | - $c |
|
| 127 | - ) |
|
| 128 | - ) { |
|
| 129 | - return $err; |
|
| 130 | - } |
|
| 131 | - |
|
| 132 | - // Modification de statut, changement de rubrique ? |
|
| 133 | - $c = collecter_requests(['date', 'statut', 'id_parent'], [], $set); |
|
| 134 | - $err = article_instituer($id_article, $c); |
|
| 135 | - |
|
| 136 | - return $err; |
|
| 93 | + // unifier $texte en cas de texte trop long |
|
| 94 | + trop_longs_articles(); |
|
| 95 | + |
|
| 96 | + include_spip('inc/modifier'); |
|
| 97 | + include_spip('inc/filtres'); |
|
| 98 | + $c = collecter_requests( |
|
| 99 | + // include list |
|
| 100 | + objet_info('article', 'champs_editables'), |
|
| 101 | + // exclude list |
|
| 102 | + ['date', 'statut', 'id_parent'], |
|
| 103 | + // donnees eventuellement fournies |
|
| 104 | + $set |
|
| 105 | + ); |
|
| 106 | + |
|
| 107 | + // Si l'article est publie, invalider les caches et demander sa reindexation |
|
| 108 | + $t = sql_getfetsel('statut', 'spip_articles', 'id_article=' . intval($id_article)); |
|
| 109 | + $invalideur = $indexation = false; |
|
| 110 | + if ($t == 'publie') { |
|
| 111 | + $invalideur = "id='article/$id_article'"; |
|
| 112 | + $indexation = true; |
|
| 113 | + } |
|
| 114 | + |
|
| 115 | + if ( |
|
| 116 | + $err = objet_modifier_champs( |
|
| 117 | + 'article', |
|
| 118 | + $id_article, |
|
| 119 | + [ |
|
| 120 | + 'data' => $set, |
|
| 121 | + 'nonvide' => ['titre' => _T('info_nouvel_article') . ' ' . _T('info_numero_abbreviation') . $id_article], |
|
| 122 | + 'invalideur' => $invalideur, |
|
| 123 | + 'indexation' => $indexation, |
|
| 124 | + 'date_modif' => 'date_modif' // champ a mettre a date('Y-m-d H:i:s') s'il y a modif |
|
| 125 | + ], |
|
| 126 | + $c |
|
| 127 | + ) |
|
| 128 | + ) { |
|
| 129 | + return $err; |
|
| 130 | + } |
|
| 131 | + |
|
| 132 | + // Modification de statut, changement de rubrique ? |
|
| 133 | + $c = collecter_requests(['date', 'statut', 'id_parent'], [], $set); |
|
| 134 | + $err = article_instituer($id_article, $c); |
|
| 135 | + |
|
| 136 | + return $err; |
|
| 137 | 137 | } |
| 138 | 138 | |
| 139 | 139 | /** |
@@ -169,98 +169,98 @@ discard block |
||
| 169 | 169 | */ |
| 170 | 170 | function article_inserer($id_rubrique, $set = null) { |
| 171 | 171 | |
| 172 | - // Si id_rubrique vaut 0 ou n'est pas definie, creer l'article |
|
| 173 | - // dans la premiere rubrique racine |
|
| 174 | - if (!$id_rubrique = intval($id_rubrique)) { |
|
| 175 | - $row = sql_fetsel('id_rubrique, id_secteur, lang', 'spip_rubriques', 'id_parent=0', '', '0+titre,titre', '1'); |
|
| 176 | - $id_rubrique = $row['id_rubrique']; |
|
| 177 | - } else { |
|
| 178 | - $row = sql_fetsel('lang, id_secteur', 'spip_rubriques', "id_rubrique=$id_rubrique"); |
|
| 179 | - } |
|
| 180 | - |
|
| 181 | - // eviter $id_secteur = NULL (erreur sqlite) si la requete precedente echoue |
|
| 182 | - // cas de id_rubrique = -1 par exemple avec plugin "pages" |
|
| 183 | - $id_secteur = $row['id_secteur'] ?? 0; |
|
| 184 | - $lang_rub = $row['lang'] ?? ''; |
|
| 185 | - |
|
| 186 | - $lang = ''; |
|
| 187 | - $choisie = 'non'; |
|
| 188 | - // La langue a la creation : si les liens de traduction sont autorises |
|
| 189 | - // dans les rubriques, on essaie avec la langue de l'auteur, |
|
| 190 | - // ou a defaut celle de la rubrique |
|
| 191 | - // Sinon c'est la langue de la rubrique qui est choisie + heritee |
|
| 192 | - if ( |
|
| 193 | - !empty($GLOBALS['meta']['multi_objets']) and in_array( |
|
| 194 | - 'spip_articles', |
|
| 195 | - explode(',', $GLOBALS['meta']['multi_objets']) |
|
| 196 | - ) |
|
| 197 | - ) { |
|
| 198 | - lang_select($GLOBALS['visiteur_session']['lang']); |
|
| 199 | - if ( |
|
| 200 | - in_array( |
|
| 201 | - $GLOBALS['spip_lang'], |
|
| 202 | - explode(',', $GLOBALS['meta']['langues_multilingue']) |
|
| 203 | - ) |
|
| 204 | - ) { |
|
| 205 | - $lang = $GLOBALS['spip_lang']; |
|
| 206 | - $choisie = 'oui'; |
|
| 207 | - } |
|
| 208 | - } |
|
| 209 | - |
|
| 210 | - if (!$lang) { |
|
| 211 | - $choisie = 'non'; |
|
| 212 | - $lang = $lang_rub ?: $GLOBALS['meta']['langue_site']; |
|
| 213 | - } |
|
| 214 | - |
|
| 215 | - $champs = [ |
|
| 216 | - 'id_rubrique' => $id_rubrique, |
|
| 217 | - 'id_secteur' => $id_secteur, |
|
| 218 | - 'statut' => 'prepa', |
|
| 219 | - 'date' => date('Y-m-d H:i:s'), |
|
| 220 | - 'lang' => $lang, |
|
| 221 | - 'langue_choisie' => $choisie |
|
| 222 | - ]; |
|
| 223 | - |
|
| 224 | - if ($set) { |
|
| 225 | - $champs = array_merge($champs, $set); |
|
| 226 | - } |
|
| 227 | - |
|
| 228 | - // Envoyer aux plugins |
|
| 229 | - $champs = pipeline( |
|
| 230 | - 'pre_insertion', |
|
| 231 | - [ |
|
| 232 | - 'args' => [ |
|
| 233 | - 'table' => 'spip_articles', |
|
| 234 | - ], |
|
| 235 | - 'data' => $champs |
|
| 236 | - ] |
|
| 237 | - ); |
|
| 238 | - |
|
| 239 | - $id_article = sql_insertq('spip_articles', $champs); |
|
| 240 | - |
|
| 241 | - // controler si le serveur n'a pas renvoye une erreur |
|
| 242 | - if ($id_article > 0) { |
|
| 243 | - $id_auteur = ((is_null(_request('id_auteur')) and isset($GLOBALS['visiteur_session']['id_auteur'])) ? |
|
| 244 | - $GLOBALS['visiteur_session']['id_auteur'] |
|
| 245 | - : _request('id_auteur')); |
|
| 246 | - if ($id_auteur) { |
|
| 247 | - include_spip('action/editer_auteur'); |
|
| 248 | - auteur_associer($id_auteur, ['article' => $id_article]); |
|
| 249 | - } |
|
| 250 | - } |
|
| 251 | - |
|
| 252 | - pipeline( |
|
| 253 | - 'post_insertion', |
|
| 254 | - [ |
|
| 255 | - 'args' => [ |
|
| 256 | - 'table' => 'spip_articles', |
|
| 257 | - 'id_objet' => $id_article |
|
| 258 | - ], |
|
| 259 | - 'data' => $champs |
|
| 260 | - ] |
|
| 261 | - ); |
|
| 262 | - |
|
| 263 | - return $id_article; |
|
| 172 | + // Si id_rubrique vaut 0 ou n'est pas definie, creer l'article |
|
| 173 | + // dans la premiere rubrique racine |
|
| 174 | + if (!$id_rubrique = intval($id_rubrique)) { |
|
| 175 | + $row = sql_fetsel('id_rubrique, id_secteur, lang', 'spip_rubriques', 'id_parent=0', '', '0+titre,titre', '1'); |
|
| 176 | + $id_rubrique = $row['id_rubrique']; |
|
| 177 | + } else { |
|
| 178 | + $row = sql_fetsel('lang, id_secteur', 'spip_rubriques', "id_rubrique=$id_rubrique"); |
|
| 179 | + } |
|
| 180 | + |
|
| 181 | + // eviter $id_secteur = NULL (erreur sqlite) si la requete precedente echoue |
|
| 182 | + // cas de id_rubrique = -1 par exemple avec plugin "pages" |
|
| 183 | + $id_secteur = $row['id_secteur'] ?? 0; |
|
| 184 | + $lang_rub = $row['lang'] ?? ''; |
|
| 185 | + |
|
| 186 | + $lang = ''; |
|
| 187 | + $choisie = 'non'; |
|
| 188 | + // La langue a la creation : si les liens de traduction sont autorises |
|
| 189 | + // dans les rubriques, on essaie avec la langue de l'auteur, |
|
| 190 | + // ou a defaut celle de la rubrique |
|
| 191 | + // Sinon c'est la langue de la rubrique qui est choisie + heritee |
|
| 192 | + if ( |
|
| 193 | + !empty($GLOBALS['meta']['multi_objets']) and in_array( |
|
| 194 | + 'spip_articles', |
|
| 195 | + explode(',', $GLOBALS['meta']['multi_objets']) |
|
| 196 | + ) |
|
| 197 | + ) { |
|
| 198 | + lang_select($GLOBALS['visiteur_session']['lang']); |
|
| 199 | + if ( |
|
| 200 | + in_array( |
|
| 201 | + $GLOBALS['spip_lang'], |
|
| 202 | + explode(',', $GLOBALS['meta']['langues_multilingue']) |
|
| 203 | + ) |
|
| 204 | + ) { |
|
| 205 | + $lang = $GLOBALS['spip_lang']; |
|
| 206 | + $choisie = 'oui'; |
|
| 207 | + } |
|
| 208 | + } |
|
| 209 | + |
|
| 210 | + if (!$lang) { |
|
| 211 | + $choisie = 'non'; |
|
| 212 | + $lang = $lang_rub ?: $GLOBALS['meta']['langue_site']; |
|
| 213 | + } |
|
| 214 | + |
|
| 215 | + $champs = [ |
|
| 216 | + 'id_rubrique' => $id_rubrique, |
|
| 217 | + 'id_secteur' => $id_secteur, |
|
| 218 | + 'statut' => 'prepa', |
|
| 219 | + 'date' => date('Y-m-d H:i:s'), |
|
| 220 | + 'lang' => $lang, |
|
| 221 | + 'langue_choisie' => $choisie |
|
| 222 | + ]; |
|
| 223 | + |
|
| 224 | + if ($set) { |
|
| 225 | + $champs = array_merge($champs, $set); |
|
| 226 | + } |
|
| 227 | + |
|
| 228 | + // Envoyer aux plugins |
|
| 229 | + $champs = pipeline( |
|
| 230 | + 'pre_insertion', |
|
| 231 | + [ |
|
| 232 | + 'args' => [ |
|
| 233 | + 'table' => 'spip_articles', |
|
| 234 | + ], |
|
| 235 | + 'data' => $champs |
|
| 236 | + ] |
|
| 237 | + ); |
|
| 238 | + |
|
| 239 | + $id_article = sql_insertq('spip_articles', $champs); |
|
| 240 | + |
|
| 241 | + // controler si le serveur n'a pas renvoye une erreur |
|
| 242 | + if ($id_article > 0) { |
|
| 243 | + $id_auteur = ((is_null(_request('id_auteur')) and isset($GLOBALS['visiteur_session']['id_auteur'])) ? |
|
| 244 | + $GLOBALS['visiteur_session']['id_auteur'] |
|
| 245 | + : _request('id_auteur')); |
|
| 246 | + if ($id_auteur) { |
|
| 247 | + include_spip('action/editer_auteur'); |
|
| 248 | + auteur_associer($id_auteur, ['article' => $id_article]); |
|
| 249 | + } |
|
| 250 | + } |
|
| 251 | + |
|
| 252 | + pipeline( |
|
| 253 | + 'post_insertion', |
|
| 254 | + [ |
|
| 255 | + 'args' => [ |
|
| 256 | + 'table' => 'spip_articles', |
|
| 257 | + 'id_objet' => $id_article |
|
| 258 | + ], |
|
| 259 | + 'data' => $champs |
|
| 260 | + ] |
|
| 261 | + ); |
|
| 262 | + |
|
| 263 | + return $id_article; |
|
| 264 | 264 | } |
| 265 | 265 | |
| 266 | 266 | |
@@ -288,125 +288,125 @@ discard block |
||
| 288 | 288 | */ |
| 289 | 289 | function article_instituer($id_article, $c, $calcul_rub = true) { |
| 290 | 290 | |
| 291 | - include_spip('inc/autoriser'); |
|
| 292 | - include_spip('inc/rubriques'); |
|
| 293 | - include_spip('inc/modifier'); |
|
| 294 | - |
|
| 295 | - $row = sql_fetsel('statut, date, id_rubrique', 'spip_articles', "id_article=$id_article"); |
|
| 296 | - $id_rubrique = $row['id_rubrique']; |
|
| 297 | - $statut_ancien = $statut = $row['statut']; |
|
| 298 | - $date_ancienne = $date = $row['date']; |
|
| 299 | - $champs = []; |
|
| 300 | - |
|
| 301 | - $d = $c['date'] ?? null; |
|
| 302 | - $s = $c['statut'] ?? $statut; |
|
| 303 | - |
|
| 304 | - // cf autorisations dans inc/instituer_article |
|
| 305 | - if ($s != $statut or ($d and $d != $date)) { |
|
| 306 | - if (autoriser('publierdans', 'rubrique', $id_rubrique)) { |
|
| 307 | - $statut = $champs['statut'] = $s; |
|
| 308 | - } elseif (autoriser('modifier', 'article', $id_article) and $s != 'publie') { |
|
| 309 | - $statut = $champs['statut'] = $s; |
|
| 310 | - } else { |
|
| 311 | - spip_log("editer_article $id_article refus " . join(' ', $c)); |
|
| 312 | - } |
|
| 313 | - |
|
| 314 | - // En cas de publication, fixer la date a "maintenant" |
|
| 315 | - // sauf si $c commande autre chose |
|
| 316 | - // ou si l'article est deja date dans le futur |
|
| 317 | - // En cas de proposition d'un article (mais pas depublication), idem |
|
| 318 | - if ( |
|
| 319 | - $champs['statut'] == 'publie' |
|
| 320 | - or ($champs['statut'] == 'prop' and ($d or !in_array($statut_ancien, ['publie', 'prop']))) |
|
| 321 | - ) { |
|
| 322 | - if ($d or strtotime($d = $date) > time()) { |
|
| 323 | - $champs['date'] = $date = $d; |
|
| 324 | - } else { |
|
| 325 | - $champs['date'] = $date = date('Y-m-d H:i:s'); |
|
| 326 | - } |
|
| 327 | - } |
|
| 328 | - } |
|
| 329 | - |
|
| 330 | - // Verifier que la rubrique demandee existe et est differente |
|
| 331 | - // de la rubrique actuelle |
|
| 332 | - if ( |
|
| 333 | - isset($c['id_parent']) |
|
| 334 | - and $id_parent = $c['id_parent'] |
|
| 335 | - and $id_parent != $id_rubrique |
|
| 336 | - and (sql_fetsel('1', 'spip_rubriques', 'id_rubrique=' . intval($id_parent))) |
|
| 337 | - ) { |
|
| 338 | - $champs['id_rubrique'] = $id_parent; |
|
| 339 | - |
|
| 340 | - // si l'article etait publie |
|
| 341 | - // et que le demandeur n'est pas admin de la rubrique de destination |
|
| 342 | - // repasser l'article en statut 'propose'. |
|
| 343 | - if ( |
|
| 344 | - $statut == 'publie' |
|
| 345 | - and !autoriser('publierdans', 'rubrique', $id_parent) |
|
| 346 | - ) { |
|
| 347 | - $champs['statut'] = 'prop'; |
|
| 348 | - } |
|
| 349 | - } |
|
| 350 | - |
|
| 351 | - // Envoyer aux plugins |
|
| 352 | - $champs = pipeline( |
|
| 353 | - 'pre_edition', |
|
| 354 | - [ |
|
| 355 | - 'args' => [ |
|
| 356 | - 'table' => 'spip_articles', |
|
| 357 | - 'id_objet' => $id_article, |
|
| 358 | - 'action' => 'instituer', |
|
| 359 | - 'statut_ancien' => $statut_ancien, |
|
| 360 | - 'date_ancienne' => $date_ancienne, |
|
| 361 | - ], |
|
| 362 | - 'data' => $champs |
|
| 363 | - ] |
|
| 364 | - ); |
|
| 365 | - |
|
| 366 | - if (!(is_countable($champs) ? count($champs) : 0)) { |
|
| 367 | - return ''; |
|
| 368 | - } |
|
| 369 | - |
|
| 370 | - // Envoyer les modifs. |
|
| 371 | - editer_article_heritage($id_article, $id_rubrique, $statut_ancien, $champs, $calcul_rub); |
|
| 372 | - |
|
| 373 | - // Invalider les caches |
|
| 374 | - include_spip('inc/invalideur'); |
|
| 375 | - suivre_invalideur("id='article/$id_article'"); |
|
| 376 | - |
|
| 377 | - if ($date) { |
|
| 378 | - $t = strtotime($date); |
|
| 379 | - $p = @$GLOBALS['meta']['date_prochain_postdate']; |
|
| 380 | - if ($t > time() and (!$p or ($t < $p))) { |
|
| 381 | - ecrire_meta('date_prochain_postdate', $t); |
|
| 382 | - } |
|
| 383 | - } |
|
| 384 | - |
|
| 385 | - // Pipeline |
|
| 386 | - pipeline( |
|
| 387 | - 'post_edition', |
|
| 388 | - [ |
|
| 389 | - 'args' => [ |
|
| 390 | - 'table' => 'spip_articles', |
|
| 391 | - 'id_objet' => $id_article, |
|
| 392 | - 'action' => 'instituer', |
|
| 393 | - 'statut_ancien' => $statut_ancien, |
|
| 394 | - 'date_ancienne' => $date_ancienne, |
|
| 395 | - ], |
|
| 396 | - 'data' => $champs |
|
| 397 | - ] |
|
| 398 | - ); |
|
| 399 | - |
|
| 400 | - // Notifications |
|
| 401 | - if ($notifications = charger_fonction('notifications', 'inc')) { |
|
| 402 | - $notifications( |
|
| 403 | - 'instituerarticle', |
|
| 404 | - $id_article, |
|
| 405 | - ['statut' => $statut, 'statut_ancien' => $statut_ancien, 'date' => $date, 'date_ancienne' => $date_ancienne] |
|
| 406 | - ); |
|
| 407 | - } |
|
| 408 | - |
|
| 409 | - return ''; // pas d'erreur |
|
| 291 | + include_spip('inc/autoriser'); |
|
| 292 | + include_spip('inc/rubriques'); |
|
| 293 | + include_spip('inc/modifier'); |
|
| 294 | + |
|
| 295 | + $row = sql_fetsel('statut, date, id_rubrique', 'spip_articles', "id_article=$id_article"); |
|
| 296 | + $id_rubrique = $row['id_rubrique']; |
|
| 297 | + $statut_ancien = $statut = $row['statut']; |
|
| 298 | + $date_ancienne = $date = $row['date']; |
|
| 299 | + $champs = []; |
|
| 300 | + |
|
| 301 | + $d = $c['date'] ?? null; |
|
| 302 | + $s = $c['statut'] ?? $statut; |
|
| 303 | + |
|
| 304 | + // cf autorisations dans inc/instituer_article |
|
| 305 | + if ($s != $statut or ($d and $d != $date)) { |
|
| 306 | + if (autoriser('publierdans', 'rubrique', $id_rubrique)) { |
|
| 307 | + $statut = $champs['statut'] = $s; |
|
| 308 | + } elseif (autoriser('modifier', 'article', $id_article) and $s != 'publie') { |
|
| 309 | + $statut = $champs['statut'] = $s; |
|
| 310 | + } else { |
|
| 311 | + spip_log("editer_article $id_article refus " . join(' ', $c)); |
|
| 312 | + } |
|
| 313 | + |
|
| 314 | + // En cas de publication, fixer la date a "maintenant" |
|
| 315 | + // sauf si $c commande autre chose |
|
| 316 | + // ou si l'article est deja date dans le futur |
|
| 317 | + // En cas de proposition d'un article (mais pas depublication), idem |
|
| 318 | + if ( |
|
| 319 | + $champs['statut'] == 'publie' |
|
| 320 | + or ($champs['statut'] == 'prop' and ($d or !in_array($statut_ancien, ['publie', 'prop']))) |
|
| 321 | + ) { |
|
| 322 | + if ($d or strtotime($d = $date) > time()) { |
|
| 323 | + $champs['date'] = $date = $d; |
|
| 324 | + } else { |
|
| 325 | + $champs['date'] = $date = date('Y-m-d H:i:s'); |
|
| 326 | + } |
|
| 327 | + } |
|
| 328 | + } |
|
| 329 | + |
|
| 330 | + // Verifier que la rubrique demandee existe et est differente |
|
| 331 | + // de la rubrique actuelle |
|
| 332 | + if ( |
|
| 333 | + isset($c['id_parent']) |
|
| 334 | + and $id_parent = $c['id_parent'] |
|
| 335 | + and $id_parent != $id_rubrique |
|
| 336 | + and (sql_fetsel('1', 'spip_rubriques', 'id_rubrique=' . intval($id_parent))) |
|
| 337 | + ) { |
|
| 338 | + $champs['id_rubrique'] = $id_parent; |
|
| 339 | + |
|
| 340 | + // si l'article etait publie |
|
| 341 | + // et que le demandeur n'est pas admin de la rubrique de destination |
|
| 342 | + // repasser l'article en statut 'propose'. |
|
| 343 | + if ( |
|
| 344 | + $statut == 'publie' |
|
| 345 | + and !autoriser('publierdans', 'rubrique', $id_parent) |
|
| 346 | + ) { |
|
| 347 | + $champs['statut'] = 'prop'; |
|
| 348 | + } |
|
| 349 | + } |
|
| 350 | + |
|
| 351 | + // Envoyer aux plugins |
|
| 352 | + $champs = pipeline( |
|
| 353 | + 'pre_edition', |
|
| 354 | + [ |
|
| 355 | + 'args' => [ |
|
| 356 | + 'table' => 'spip_articles', |
|
| 357 | + 'id_objet' => $id_article, |
|
| 358 | + 'action' => 'instituer', |
|
| 359 | + 'statut_ancien' => $statut_ancien, |
|
| 360 | + 'date_ancienne' => $date_ancienne, |
|
| 361 | + ], |
|
| 362 | + 'data' => $champs |
|
| 363 | + ] |
|
| 364 | + ); |
|
| 365 | + |
|
| 366 | + if (!(is_countable($champs) ? count($champs) : 0)) { |
|
| 367 | + return ''; |
|
| 368 | + } |
|
| 369 | + |
|
| 370 | + // Envoyer les modifs. |
|
| 371 | + editer_article_heritage($id_article, $id_rubrique, $statut_ancien, $champs, $calcul_rub); |
|
| 372 | + |
|
| 373 | + // Invalider les caches |
|
| 374 | + include_spip('inc/invalideur'); |
|
| 375 | + suivre_invalideur("id='article/$id_article'"); |
|
| 376 | + |
|
| 377 | + if ($date) { |
|
| 378 | + $t = strtotime($date); |
|
| 379 | + $p = @$GLOBALS['meta']['date_prochain_postdate']; |
|
| 380 | + if ($t > time() and (!$p or ($t < $p))) { |
|
| 381 | + ecrire_meta('date_prochain_postdate', $t); |
|
| 382 | + } |
|
| 383 | + } |
|
| 384 | + |
|
| 385 | + // Pipeline |
|
| 386 | + pipeline( |
|
| 387 | + 'post_edition', |
|
| 388 | + [ |
|
| 389 | + 'args' => [ |
|
| 390 | + 'table' => 'spip_articles', |
|
| 391 | + 'id_objet' => $id_article, |
|
| 392 | + 'action' => 'instituer', |
|
| 393 | + 'statut_ancien' => $statut_ancien, |
|
| 394 | + 'date_ancienne' => $date_ancienne, |
|
| 395 | + ], |
|
| 396 | + 'data' => $champs |
|
| 397 | + ] |
|
| 398 | + ); |
|
| 399 | + |
|
| 400 | + // Notifications |
|
| 401 | + if ($notifications = charger_fonction('notifications', 'inc')) { |
|
| 402 | + $notifications( |
|
| 403 | + 'instituerarticle', |
|
| 404 | + $id_article, |
|
| 405 | + ['statut' => $statut, 'statut_ancien' => $statut_ancien, 'date' => $date, 'date_ancienne' => $date_ancienne] |
|
| 406 | + ); |
|
| 407 | + } |
|
| 408 | + |
|
| 409 | + return ''; // pas d'erreur |
|
| 410 | 410 | } |
| 411 | 411 | |
| 412 | 412 | /** |
@@ -431,37 +431,37 @@ discard block |
||
| 431 | 431 | */ |
| 432 | 432 | function editer_article_heritage($id_article, $id_rubrique, $statut, $champs, $cond = true) { |
| 433 | 433 | |
| 434 | - // Si on deplace l'article |
|
| 435 | - // changer aussi son secteur et sa langue (si heritee) |
|
| 436 | - if (isset($champs['id_rubrique'])) { |
|
| 437 | - $row_rub = sql_fetsel('id_secteur, lang', 'spip_rubriques', 'id_rubrique=' . sql_quote($champs['id_rubrique'])); |
|
| 438 | - |
|
| 439 | - $langue = $row_rub['lang']; |
|
| 440 | - $champs['id_secteur'] = $row_rub['id_secteur']; |
|
| 441 | - if ( |
|
| 442 | - sql_fetsel( |
|
| 443 | - '1', |
|
| 444 | - 'spip_articles', |
|
| 445 | - 'id_article=' . intval($id_article) . " AND langue_choisie<>'oui' AND lang<>" . sql_quote($langue) |
|
| 446 | - ) |
|
| 447 | - ) { |
|
| 448 | - $champs['lang'] = $langue; |
|
| 449 | - } |
|
| 450 | - } |
|
| 451 | - |
|
| 452 | - if (!$champs) { |
|
| 453 | - return; |
|
| 454 | - } |
|
| 455 | - |
|
| 456 | - sql_updateq('spip_articles', $champs, 'id_article=' . intval($id_article)); |
|
| 457 | - |
|
| 458 | - // Changer le statut des rubriques concernees |
|
| 459 | - |
|
| 460 | - if ($cond) { |
|
| 461 | - include_spip('inc/rubriques'); |
|
| 462 | - $postdate = ($GLOBALS['meta']['post_dates'] == 'non' and isset($champs['date']) and (strtotime($champs['date']) < time())) ? $champs['date'] : false; |
|
| 463 | - calculer_rubriques_if($id_rubrique, $champs, ['statut_ancien' => $statut], $postdate); |
|
| 464 | - } |
|
| 434 | + // Si on deplace l'article |
|
| 435 | + // changer aussi son secteur et sa langue (si heritee) |
|
| 436 | + if (isset($champs['id_rubrique'])) { |
|
| 437 | + $row_rub = sql_fetsel('id_secteur, lang', 'spip_rubriques', 'id_rubrique=' . sql_quote($champs['id_rubrique'])); |
|
| 438 | + |
|
| 439 | + $langue = $row_rub['lang']; |
|
| 440 | + $champs['id_secteur'] = $row_rub['id_secteur']; |
|
| 441 | + if ( |
|
| 442 | + sql_fetsel( |
|
| 443 | + '1', |
|
| 444 | + 'spip_articles', |
|
| 445 | + 'id_article=' . intval($id_article) . " AND langue_choisie<>'oui' AND lang<>" . sql_quote($langue) |
|
| 446 | + ) |
|
| 447 | + ) { |
|
| 448 | + $champs['lang'] = $langue; |
|
| 449 | + } |
|
| 450 | + } |
|
| 451 | + |
|
| 452 | + if (!$champs) { |
|
| 453 | + return; |
|
| 454 | + } |
|
| 455 | + |
|
| 456 | + sql_updateq('spip_articles', $champs, 'id_article=' . intval($id_article)); |
|
| 457 | + |
|
| 458 | + // Changer le statut des rubriques concernees |
|
| 459 | + |
|
| 460 | + if ($cond) { |
|
| 461 | + include_spip('inc/rubriques'); |
|
| 462 | + $postdate = ($GLOBALS['meta']['post_dates'] == 'non' and isset($champs['date']) and (strtotime($champs['date']) < time())) ? $champs['date'] : false; |
|
| 463 | + calculer_rubriques_if($id_rubrique, $champs, ['statut_ancien' => $statut], $postdate); |
|
| 464 | + } |
|
| 465 | 465 | } |
| 466 | 466 | |
| 467 | 467 | /** |
@@ -470,10 +470,10 @@ discard block |
||
| 470 | 470 | * @return void |
| 471 | 471 | */ |
| 472 | 472 | function trop_longs_articles() { |
| 473 | - if (is_array($plus = _request('texte_plus'))) { |
|
| 474 | - foreach ($plus as $n => $t) { |
|
| 475 | - $plus[$n] = preg_replace(",<!--SPIP-->[\n\r]*,", '', $t); |
|
| 476 | - } |
|
| 477 | - set_request('texte', join('', $plus) . _request('texte')); |
|
| 478 | - } |
|
| 473 | + if (is_array($plus = _request('texte_plus'))) { |
|
| 474 | + foreach ($plus as $n => $t) { |
|
| 475 | + $plus[$n] = preg_replace(",<!--SPIP-->[\n\r]*,", '', $t); |
|
| 476 | + } |
|
| 477 | + set_request('texte', join('', $plus) . _request('texte')); |
|
| 478 | + } |
|
| 479 | 479 | } |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | */ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | /** |
@@ -33,36 +33,36 @@ discard block |
||
| 33 | 33 | */ |
| 34 | 34 | function action_editer_objet_dist($id = null, $objet = null, $set = null) { |
| 35 | 35 | |
| 36 | - // appel direct depuis une url avec arg = "objet/id" |
|
| 37 | - if (is_null($id) or is_null($objet)) { |
|
| 38 | - $securiser_action = charger_fonction('securiser_action', 'inc'); |
|
| 39 | - $arg = $securiser_action(); |
|
| 40 | - [$objet, $id] = array_pad(explode('/', $arg, 2), 2, null); |
|
| 41 | - } |
|
| 42 | - |
|
| 43 | - // appel incorrect ou depuis une url erronnée interdit |
|
| 44 | - if (is_null($id) or is_null($objet)) { |
|
| 45 | - include_spip('inc/minipres'); |
|
| 46 | - echo minipres(_T('info_acces_interdit')); |
|
| 47 | - die(); |
|
| 48 | - } |
|
| 49 | - |
|
| 50 | - // si id n'est pas un nombre, c'est une creation |
|
| 51 | - // mais on verifie qu'on a toutes les donnees qu'il faut. |
|
| 52 | - if (!$id = intval($id)) { |
|
| 53 | - // on ne sait pas si un parent existe mais on essaye |
|
| 54 | - $id_parent = _request('id_parent'); |
|
| 55 | - $id = objet_inserer($objet, $id_parent); |
|
| 56 | - } |
|
| 57 | - |
|
| 58 | - if (!($id = intval($id)) > 0) { |
|
| 59 | - return [$id, _L('echec enregistrement en base')]; |
|
| 60 | - } |
|
| 61 | - |
|
| 62 | - // Enregistre l'envoi dans la BD |
|
| 63 | - $err = objet_modifier($objet, $id, $set); |
|
| 64 | - |
|
| 65 | - return [$id, $err]; |
|
| 36 | + // appel direct depuis une url avec arg = "objet/id" |
|
| 37 | + if (is_null($id) or is_null($objet)) { |
|
| 38 | + $securiser_action = charger_fonction('securiser_action', 'inc'); |
|
| 39 | + $arg = $securiser_action(); |
|
| 40 | + [$objet, $id] = array_pad(explode('/', $arg, 2), 2, null); |
|
| 41 | + } |
|
| 42 | + |
|
| 43 | + // appel incorrect ou depuis une url erronnée interdit |
|
| 44 | + if (is_null($id) or is_null($objet)) { |
|
| 45 | + include_spip('inc/minipres'); |
|
| 46 | + echo minipres(_T('info_acces_interdit')); |
|
| 47 | + die(); |
|
| 48 | + } |
|
| 49 | + |
|
| 50 | + // si id n'est pas un nombre, c'est une creation |
|
| 51 | + // mais on verifie qu'on a toutes les donnees qu'il faut. |
|
| 52 | + if (!$id = intval($id)) { |
|
| 53 | + // on ne sait pas si un parent existe mais on essaye |
|
| 54 | + $id_parent = _request('id_parent'); |
|
| 55 | + $id = objet_inserer($objet, $id_parent); |
|
| 56 | + } |
|
| 57 | + |
|
| 58 | + if (!($id = intval($id)) > 0) { |
|
| 59 | + return [$id, _L('echec enregistrement en base')]; |
|
| 60 | + } |
|
| 61 | + |
|
| 62 | + // Enregistre l'envoi dans la BD |
|
| 63 | + $err = objet_modifier($objet, $id, $set); |
|
| 64 | + |
|
| 65 | + return [$id, $err]; |
|
| 66 | 66 | } |
| 67 | 67 | |
| 68 | 68 | /** |
@@ -75,85 +75,85 @@ discard block |
||
| 75 | 75 | * @return mixed|string |
| 76 | 76 | */ |
| 77 | 77 | function objet_modifier($objet, $id, $set = null) { |
| 78 | - if (($t = objet_type($objet)) !== $objet) { |
|
| 79 | - spip_log("objet_modifier: appel avec type $objet invalide au lieu de $t", 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 80 | - $objet = $t; |
|
| 81 | - } |
|
| 82 | - if ( |
|
| 83 | - include_spip('action/editer_' . $objet) |
|
| 84 | - and function_exists($modifier = $objet . '_modifier') |
|
| 85 | - ) { |
|
| 86 | - return $modifier($id, $set); |
|
| 87 | - } |
|
| 88 | - |
|
| 89 | - $table_sql = table_objet_sql($objet); |
|
| 90 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 91 | - $desc = $trouver_table($table_sql); |
|
| 92 | - if (!$desc or !isset($desc['field'])) { |
|
| 93 | - spip_log("Objet $objet inconnu dans objet_modifier", 'editer' . _LOG_ERREUR); |
|
| 94 | - |
|
| 95 | - return _L("Erreur objet $objet inconnu"); |
|
| 96 | - } |
|
| 97 | - include_spip('inc/modifier'); |
|
| 98 | - |
|
| 99 | - $champ_date = ''; |
|
| 100 | - if (isset($desc['date']) and $desc['date']) { |
|
| 101 | - $champ_date = $desc['date']; |
|
| 102 | - } elseif (isset($desc['field']['date'])) { |
|
| 103 | - $champ_date = 'date'; |
|
| 104 | - } |
|
| 105 | - |
|
| 106 | - $include_list = array_keys($desc['field']); |
|
| 107 | - // on ne traite pas la cle primaire par defaut, notamment car |
|
| 108 | - // sur une creation, id_x vaut 'oui', et serait enregistre en id_x=0 dans la base |
|
| 109 | - $include_list = array_diff($include_list, [$desc['key']['PRIMARY KEY']]); |
|
| 110 | - |
|
| 111 | - if (isset($desc['champs_editables']) and is_array($desc['champs_editables'])) { |
|
| 112 | - $include_list = $desc['champs_editables']; |
|
| 113 | - } |
|
| 114 | - $c = collecter_requests( |
|
| 115 | - // include list |
|
| 116 | - $include_list, |
|
| 117 | - // exclude list |
|
| 118 | - [$champ_date, 'statut', 'id_parent', 'id_secteur'], |
|
| 119 | - // donnees eventuellement fournies |
|
| 120 | - $set |
|
| 121 | - ); |
|
| 122 | - |
|
| 123 | - // Si l'objet est publie, invalider les caches et demander sa reindexation |
|
| 124 | - if (objet_test_si_publie($objet, $id)) { |
|
| 125 | - $invalideur = "id='$objet/$id'"; |
|
| 126 | - $indexation = true; |
|
| 127 | - } else { |
|
| 128 | - $invalideur = ''; |
|
| 129 | - $indexation = false; |
|
| 130 | - } |
|
| 131 | - |
|
| 132 | - if ( |
|
| 133 | - $err = objet_modifier_champs( |
|
| 134 | - $objet, |
|
| 135 | - $id, |
|
| 136 | - [ |
|
| 137 | - 'data' => $set, |
|
| 138 | - 'nonvide' => '', |
|
| 139 | - 'invalideur' => $invalideur, |
|
| 140 | - 'indexation' => $indexation, |
|
| 141 | - // champ a mettre a date('Y-m-d H:i:s') s'il y a modif |
|
| 142 | - 'date_modif' => (isset($desc['field']['date_modif']) ? 'date_modif' : '') |
|
| 143 | - ], |
|
| 144 | - $c |
|
| 145 | - ) |
|
| 146 | - ) { |
|
| 147 | - return $err; |
|
| 148 | - } |
|
| 149 | - |
|
| 150 | - // Modification de statut, changement de rubrique ? |
|
| 151 | - // FIXME: Ici lorsqu'un $set est passé, la fonction collecter_requests() retourne tout |
|
| 152 | - // le tableau $set hors liste d’exclusion, mais du coup on a possiblement des champs en trop. |
|
| 153 | - $c = collecter_requests([$champ_date, 'statut', 'id_parent'], [], $set); |
|
| 154 | - $err = objet_instituer($objet, $id, $c); |
|
| 155 | - |
|
| 156 | - return $err; |
|
| 78 | + if (($t = objet_type($objet)) !== $objet) { |
|
| 79 | + spip_log("objet_modifier: appel avec type $objet invalide au lieu de $t", 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 80 | + $objet = $t; |
|
| 81 | + } |
|
| 82 | + if ( |
|
| 83 | + include_spip('action/editer_' . $objet) |
|
| 84 | + and function_exists($modifier = $objet . '_modifier') |
|
| 85 | + ) { |
|
| 86 | + return $modifier($id, $set); |
|
| 87 | + } |
|
| 88 | + |
|
| 89 | + $table_sql = table_objet_sql($objet); |
|
| 90 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 91 | + $desc = $trouver_table($table_sql); |
|
| 92 | + if (!$desc or !isset($desc['field'])) { |
|
| 93 | + spip_log("Objet $objet inconnu dans objet_modifier", 'editer' . _LOG_ERREUR); |
|
| 94 | + |
|
| 95 | + return _L("Erreur objet $objet inconnu"); |
|
| 96 | + } |
|
| 97 | + include_spip('inc/modifier'); |
|
| 98 | + |
|
| 99 | + $champ_date = ''; |
|
| 100 | + if (isset($desc['date']) and $desc['date']) { |
|
| 101 | + $champ_date = $desc['date']; |
|
| 102 | + } elseif (isset($desc['field']['date'])) { |
|
| 103 | + $champ_date = 'date'; |
|
| 104 | + } |
|
| 105 | + |
|
| 106 | + $include_list = array_keys($desc['field']); |
|
| 107 | + // on ne traite pas la cle primaire par defaut, notamment car |
|
| 108 | + // sur une creation, id_x vaut 'oui', et serait enregistre en id_x=0 dans la base |
|
| 109 | + $include_list = array_diff($include_list, [$desc['key']['PRIMARY KEY']]); |
|
| 110 | + |
|
| 111 | + if (isset($desc['champs_editables']) and is_array($desc['champs_editables'])) { |
|
| 112 | + $include_list = $desc['champs_editables']; |
|
| 113 | + } |
|
| 114 | + $c = collecter_requests( |
|
| 115 | + // include list |
|
| 116 | + $include_list, |
|
| 117 | + // exclude list |
|
| 118 | + [$champ_date, 'statut', 'id_parent', 'id_secteur'], |
|
| 119 | + // donnees eventuellement fournies |
|
| 120 | + $set |
|
| 121 | + ); |
|
| 122 | + |
|
| 123 | + // Si l'objet est publie, invalider les caches et demander sa reindexation |
|
| 124 | + if (objet_test_si_publie($objet, $id)) { |
|
| 125 | + $invalideur = "id='$objet/$id'"; |
|
| 126 | + $indexation = true; |
|
| 127 | + } else { |
|
| 128 | + $invalideur = ''; |
|
| 129 | + $indexation = false; |
|
| 130 | + } |
|
| 131 | + |
|
| 132 | + if ( |
|
| 133 | + $err = objet_modifier_champs( |
|
| 134 | + $objet, |
|
| 135 | + $id, |
|
| 136 | + [ |
|
| 137 | + 'data' => $set, |
|
| 138 | + 'nonvide' => '', |
|
| 139 | + 'invalideur' => $invalideur, |
|
| 140 | + 'indexation' => $indexation, |
|
| 141 | + // champ a mettre a date('Y-m-d H:i:s') s'il y a modif |
|
| 142 | + 'date_modif' => (isset($desc['field']['date_modif']) ? 'date_modif' : '') |
|
| 143 | + ], |
|
| 144 | + $c |
|
| 145 | + ) |
|
| 146 | + ) { |
|
| 147 | + return $err; |
|
| 148 | + } |
|
| 149 | + |
|
| 150 | + // Modification de statut, changement de rubrique ? |
|
| 151 | + // FIXME: Ici lorsqu'un $set est passé, la fonction collecter_requests() retourne tout |
|
| 152 | + // le tableau $set hors liste d’exclusion, mais du coup on a possiblement des champs en trop. |
|
| 153 | + $c = collecter_requests([$champ_date, 'statut', 'id_parent'], [], $set); |
|
| 154 | + $err = objet_instituer($objet, $id, $c); |
|
| 155 | + |
|
| 156 | + return $err; |
|
| 157 | 157 | } |
| 158 | 158 | |
| 159 | 159 | /** |
@@ -168,135 +168,135 @@ discard block |
||
| 168 | 168 | * @return bool|int |
| 169 | 169 | */ |
| 170 | 170 | function objet_inserer($objet, $id_parent = null, $set = null) { |
| 171 | - $d = null; |
|
| 172 | - if (($t = objet_type($objet)) !== $objet) { |
|
| 173 | - spip_log("objet_inserer: appel avec type $objet invalide au lieu de $t", 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 174 | - $objet = $t; |
|
| 175 | - } |
|
| 176 | - if ( |
|
| 177 | - include_spip('action/editer_' . $objet) |
|
| 178 | - and function_exists($inserer = $objet . '_inserer') |
|
| 179 | - ) { |
|
| 180 | - return $inserer($id_parent, $set); |
|
| 181 | - } |
|
| 182 | - |
|
| 183 | - $table_sql = table_objet_sql($objet); |
|
| 184 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 185 | - $desc = $trouver_table($table_sql); |
|
| 186 | - if (!$desc or !isset($desc['field'])) { |
|
| 187 | - return 0; |
|
| 188 | - } |
|
| 189 | - |
|
| 190 | - $lang_rub = ''; |
|
| 191 | - $champs = []; |
|
| 192 | - if (isset($desc['field']['id_rubrique'])) { |
|
| 193 | - // Si id_rubrique vaut 0 ou n'est pas definie, creer l'objet |
|
| 194 | - // dans la premiere rubrique racine |
|
| 195 | - if (!$id_rubrique = intval($id_parent)) { |
|
| 196 | - $row = sql_fetsel('id_rubrique, id_secteur, lang', 'spip_rubriques', 'id_parent=0', '', '0+titre,titre', '1'); |
|
| 197 | - $id_rubrique = $row['id_rubrique']; |
|
| 198 | - } else { |
|
| 199 | - $row = sql_fetsel('lang, id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 200 | - } |
|
| 201 | - |
|
| 202 | - $champs['id_rubrique'] = $id_rubrique; |
|
| 203 | - if (isset($desc['field']['id_secteur'])) { |
|
| 204 | - $champs['id_secteur'] = $row['id_secteur']; |
|
| 205 | - } |
|
| 206 | - $lang_rub = $row['lang']; |
|
| 207 | - } |
|
| 208 | - |
|
| 209 | - // La langue a la creation : si les liens de traduction sont autorises |
|
| 210 | - // dans les rubriques, on essaie avec la langue de l'auteur, |
|
| 211 | - // ou a defaut celle de la rubrique |
|
| 212 | - // Sinon c'est la langue de la rubrique qui est choisie + heritee |
|
| 213 | - if ( |
|
| 214 | - isset($desc['field']['lang']) and !empty($GLOBALS['meta']['multi_objets']) and in_array( |
|
| 215 | - $table_sql, |
|
| 216 | - explode(',', $GLOBALS['meta']['multi_objets']) |
|
| 217 | - ) |
|
| 218 | - ) { |
|
| 219 | - lang_select($GLOBALS['visiteur_session']['lang']); |
|
| 220 | - if ( |
|
| 221 | - in_array( |
|
| 222 | - $GLOBALS['spip_lang'], |
|
| 223 | - explode(',', $GLOBALS['meta']['langues_multilingue']) |
|
| 224 | - ) |
|
| 225 | - ) { |
|
| 226 | - $champs['lang'] = $GLOBALS['spip_lang']; |
|
| 227 | - if (isset($desc['field']['langue_choisie'])) { |
|
| 228 | - $champs['langue_choisie'] = 'oui'; |
|
| 229 | - } |
|
| 230 | - } |
|
| 231 | - } elseif (isset($desc['field']['lang']) and isset($desc['field']['langue_choisie'])) { |
|
| 232 | - $champs['lang'] = ($lang_rub ?: $GLOBALS['meta']['langue_site']); |
|
| 233 | - $champs['langue_choisie'] = 'non'; |
|
| 234 | - } |
|
| 235 | - |
|
| 236 | - if (isset($desc['field']['statut'])) { |
|
| 237 | - if (isset($desc['statut_textes_instituer'])) { |
|
| 238 | - $cles_statut = array_keys($desc['statut_textes_instituer']); |
|
| 239 | - $champs['statut'] = reset($cles_statut); |
|
| 240 | - } else { |
|
| 241 | - $champs['statut'] = 'prepa'; |
|
| 242 | - } |
|
| 243 | - } |
|
| 244 | - |
|
| 245 | - |
|
| 246 | - if ((isset($desc['date']) and $d = $desc['date']) or isset($desc['field'][$d = 'date'])) { |
|
| 247 | - $champs[$d] = date('Y-m-d H:i:s'); |
|
| 248 | - } |
|
| 249 | - |
|
| 250 | - if ($set) { |
|
| 251 | - $champs = array_merge($champs, $set); |
|
| 252 | - } |
|
| 253 | - |
|
| 254 | - // Envoyer aux plugins |
|
| 255 | - $champs = pipeline( |
|
| 256 | - 'pre_insertion', |
|
| 257 | - [ |
|
| 258 | - 'args' => [ |
|
| 259 | - 'table' => $table_sql, |
|
| 260 | - 'id_parent' => $id_parent, |
|
| 261 | - ], |
|
| 262 | - 'data' => $champs |
|
| 263 | - ] |
|
| 264 | - ); |
|
| 265 | - |
|
| 266 | - $id = sql_insertq($table_sql, $champs); |
|
| 267 | - |
|
| 268 | - if ($id) { |
|
| 269 | - // controler si le serveur n'a pas renvoye une erreur |
|
| 270 | - // et associer l'auteur sinon |
|
| 271 | - // si la table n'a pas deja un champ id_auteur |
|
| 272 | - // et si le form n'a pas poste un id_auteur (meme vide, ce qui sert a annuler cette auto association) |
|
| 273 | - if ( |
|
| 274 | - $id > 0 |
|
| 275 | - and !isset($desc['field']['id_auteur']) |
|
| 276 | - ) { |
|
| 277 | - $id_auteur = ((is_null(_request('id_auteur')) and isset($GLOBALS['visiteur_session']['id_auteur'])) ? |
|
| 278 | - $GLOBALS['visiteur_session']['id_auteur'] |
|
| 279 | - : _request('id_auteur')); |
|
| 280 | - if ($id_auteur) { |
|
| 281 | - include_spip('action/editer_auteur'); |
|
| 282 | - auteur_associer($id_auteur, [$objet => $id]); |
|
| 283 | - } |
|
| 284 | - } |
|
| 285 | - |
|
| 286 | - pipeline( |
|
| 287 | - 'post_insertion', |
|
| 288 | - [ |
|
| 289 | - 'args' => [ |
|
| 290 | - 'table' => $table_sql, |
|
| 291 | - 'id_parent' => $id_parent, |
|
| 292 | - 'id_objet' => $id, |
|
| 293 | - ], |
|
| 294 | - 'data' => $champs |
|
| 295 | - ] |
|
| 296 | - ); |
|
| 297 | - } |
|
| 298 | - |
|
| 299 | - return $id; |
|
| 171 | + $d = null; |
|
| 172 | + if (($t = objet_type($objet)) !== $objet) { |
|
| 173 | + spip_log("objet_inserer: appel avec type $objet invalide au lieu de $t", 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 174 | + $objet = $t; |
|
| 175 | + } |
|
| 176 | + if ( |
|
| 177 | + include_spip('action/editer_' . $objet) |
|
| 178 | + and function_exists($inserer = $objet . '_inserer') |
|
| 179 | + ) { |
|
| 180 | + return $inserer($id_parent, $set); |
|
| 181 | + } |
|
| 182 | + |
|
| 183 | + $table_sql = table_objet_sql($objet); |
|
| 184 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 185 | + $desc = $trouver_table($table_sql); |
|
| 186 | + if (!$desc or !isset($desc['field'])) { |
|
| 187 | + return 0; |
|
| 188 | + } |
|
| 189 | + |
|
| 190 | + $lang_rub = ''; |
|
| 191 | + $champs = []; |
|
| 192 | + if (isset($desc['field']['id_rubrique'])) { |
|
| 193 | + // Si id_rubrique vaut 0 ou n'est pas definie, creer l'objet |
|
| 194 | + // dans la premiere rubrique racine |
|
| 195 | + if (!$id_rubrique = intval($id_parent)) { |
|
| 196 | + $row = sql_fetsel('id_rubrique, id_secteur, lang', 'spip_rubriques', 'id_parent=0', '', '0+titre,titre', '1'); |
|
| 197 | + $id_rubrique = $row['id_rubrique']; |
|
| 198 | + } else { |
|
| 199 | + $row = sql_fetsel('lang, id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 200 | + } |
|
| 201 | + |
|
| 202 | + $champs['id_rubrique'] = $id_rubrique; |
|
| 203 | + if (isset($desc['field']['id_secteur'])) { |
|
| 204 | + $champs['id_secteur'] = $row['id_secteur']; |
|
| 205 | + } |
|
| 206 | + $lang_rub = $row['lang']; |
|
| 207 | + } |
|
| 208 | + |
|
| 209 | + // La langue a la creation : si les liens de traduction sont autorises |
|
| 210 | + // dans les rubriques, on essaie avec la langue de l'auteur, |
|
| 211 | + // ou a defaut celle de la rubrique |
|
| 212 | + // Sinon c'est la langue de la rubrique qui est choisie + heritee |
|
| 213 | + if ( |
|
| 214 | + isset($desc['field']['lang']) and !empty($GLOBALS['meta']['multi_objets']) and in_array( |
|
| 215 | + $table_sql, |
|
| 216 | + explode(',', $GLOBALS['meta']['multi_objets']) |
|
| 217 | + ) |
|
| 218 | + ) { |
|
| 219 | + lang_select($GLOBALS['visiteur_session']['lang']); |
|
| 220 | + if ( |
|
| 221 | + in_array( |
|
| 222 | + $GLOBALS['spip_lang'], |
|
| 223 | + explode(',', $GLOBALS['meta']['langues_multilingue']) |
|
| 224 | + ) |
|
| 225 | + ) { |
|
| 226 | + $champs['lang'] = $GLOBALS['spip_lang']; |
|
| 227 | + if (isset($desc['field']['langue_choisie'])) { |
|
| 228 | + $champs['langue_choisie'] = 'oui'; |
|
| 229 | + } |
|
| 230 | + } |
|
| 231 | + } elseif (isset($desc['field']['lang']) and isset($desc['field']['langue_choisie'])) { |
|
| 232 | + $champs['lang'] = ($lang_rub ?: $GLOBALS['meta']['langue_site']); |
|
| 233 | + $champs['langue_choisie'] = 'non'; |
|
| 234 | + } |
|
| 235 | + |
|
| 236 | + if (isset($desc['field']['statut'])) { |
|
| 237 | + if (isset($desc['statut_textes_instituer'])) { |
|
| 238 | + $cles_statut = array_keys($desc['statut_textes_instituer']); |
|
| 239 | + $champs['statut'] = reset($cles_statut); |
|
| 240 | + } else { |
|
| 241 | + $champs['statut'] = 'prepa'; |
|
| 242 | + } |
|
| 243 | + } |
|
| 244 | + |
|
| 245 | + |
|
| 246 | + if ((isset($desc['date']) and $d = $desc['date']) or isset($desc['field'][$d = 'date'])) { |
|
| 247 | + $champs[$d] = date('Y-m-d H:i:s'); |
|
| 248 | + } |
|
| 249 | + |
|
| 250 | + if ($set) { |
|
| 251 | + $champs = array_merge($champs, $set); |
|
| 252 | + } |
|
| 253 | + |
|
| 254 | + // Envoyer aux plugins |
|
| 255 | + $champs = pipeline( |
|
| 256 | + 'pre_insertion', |
|
| 257 | + [ |
|
| 258 | + 'args' => [ |
|
| 259 | + 'table' => $table_sql, |
|
| 260 | + 'id_parent' => $id_parent, |
|
| 261 | + ], |
|
| 262 | + 'data' => $champs |
|
| 263 | + ] |
|
| 264 | + ); |
|
| 265 | + |
|
| 266 | + $id = sql_insertq($table_sql, $champs); |
|
| 267 | + |
|
| 268 | + if ($id) { |
|
| 269 | + // controler si le serveur n'a pas renvoye une erreur |
|
| 270 | + // et associer l'auteur sinon |
|
| 271 | + // si la table n'a pas deja un champ id_auteur |
|
| 272 | + // et si le form n'a pas poste un id_auteur (meme vide, ce qui sert a annuler cette auto association) |
|
| 273 | + if ( |
|
| 274 | + $id > 0 |
|
| 275 | + and !isset($desc['field']['id_auteur']) |
|
| 276 | + ) { |
|
| 277 | + $id_auteur = ((is_null(_request('id_auteur')) and isset($GLOBALS['visiteur_session']['id_auteur'])) ? |
|
| 278 | + $GLOBALS['visiteur_session']['id_auteur'] |
|
| 279 | + : _request('id_auteur')); |
|
| 280 | + if ($id_auteur) { |
|
| 281 | + include_spip('action/editer_auteur'); |
|
| 282 | + auteur_associer($id_auteur, [$objet => $id]); |
|
| 283 | + } |
|
| 284 | + } |
|
| 285 | + |
|
| 286 | + pipeline( |
|
| 287 | + 'post_insertion', |
|
| 288 | + [ |
|
| 289 | + 'args' => [ |
|
| 290 | + 'table' => $table_sql, |
|
| 291 | + 'id_parent' => $id_parent, |
|
| 292 | + 'id_objet' => $id, |
|
| 293 | + ], |
|
| 294 | + 'data' => $champs |
|
| 295 | + ] |
|
| 296 | + ); |
|
| 297 | + } |
|
| 298 | + |
|
| 299 | + return $id; |
|
| 300 | 300 | } |
| 301 | 301 | |
| 302 | 302 | |
@@ -313,138 +313,138 @@ discard block |
||
| 313 | 313 | * @return string |
| 314 | 314 | */ |
| 315 | 315 | function objet_instituer($objet, $id, $c, $calcul_rub = true) { |
| 316 | - if (($t = objet_type($objet)) !== $objet) { |
|
| 317 | - spip_log("objet_instituer: appel avec type $objet invalide au lieu de $t", 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 318 | - $objet = $t; |
|
| 319 | - } |
|
| 320 | - if ( |
|
| 321 | - include_spip('action/editer_' . $objet) |
|
| 322 | - and function_exists($instituer = $objet . '_instituer') |
|
| 323 | - ) { |
|
| 324 | - return $instituer($id, $c, $calcul_rub); |
|
| 325 | - } |
|
| 326 | - |
|
| 327 | - $table_sql = table_objet_sql($objet); |
|
| 328 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 329 | - $desc = $trouver_table($table_sql); |
|
| 330 | - if (!$desc or !isset($desc['field'])) { |
|
| 331 | - return _L("Impossible d'instituer $objet : non connu en base"); |
|
| 332 | - } |
|
| 333 | - |
|
| 334 | - include_spip('inc/autoriser'); |
|
| 335 | - include_spip('inc/rubriques'); |
|
| 336 | - include_spip('inc/modifier'); |
|
| 337 | - |
|
| 338 | - $sel = []; |
|
| 339 | - $sel[] = (isset($desc['field']['statut']) ? 'statut' : "'' as statut"); |
|
| 340 | - |
|
| 341 | - $champ_date = ''; |
|
| 342 | - if (isset($desc['date']) and $desc['date']) { |
|
| 343 | - $champ_date = $desc['date']; |
|
| 344 | - } elseif (isset($desc['field']['date'])) { |
|
| 345 | - $champ_date = 'date'; |
|
| 346 | - } |
|
| 347 | - |
|
| 348 | - $sel[] = ($champ_date ? "$champ_date as date" : "'' as date"); |
|
| 349 | - $sel[] = (isset($desc['field']['id_rubrique']) ? 'id_rubrique' : '0 as id_rubrique'); |
|
| 350 | - |
|
| 351 | - $row = sql_fetsel($sel, $table_sql, id_table_objet($objet) . '=' . intval($id)); |
|
| 352 | - |
|
| 353 | - $id_rubrique = $row['id_rubrique']; |
|
| 354 | - $statut_ancien = $statut = $row['statut']; |
|
| 355 | - $date_ancienne = $date = $row['date']; |
|
| 356 | - $champs = []; |
|
| 357 | - |
|
| 358 | - $d = ($date and isset($c[$champ_date])) ? $c[$champ_date] : null; |
|
| 359 | - $s = (isset($desc['field']['statut']) and isset($c['statut'])) ? $c['statut'] : $statut; |
|
| 360 | - |
|
| 361 | - // cf autorisations dans inc/instituer_objet |
|
| 362 | - if ($s != $statut or ($d and $d != $date)) { |
|
| 363 | - if ( |
|
| 364 | - $id_rubrique ? |
|
| 365 | - autoriser('publierdans', 'rubrique', $id_rubrique) |
|
| 366 | - : |
|
| 367 | - autoriser('instituer', $objet, $id, null, ['statut' => $s]) |
|
| 368 | - ) { |
|
| 369 | - $statut = $champs['statut'] = $s; |
|
| 370 | - } else { |
|
| 371 | - if ($s != 'publie' and autoriser('modifier', $objet, $id)) { |
|
| 372 | - $statut = $champs['statut'] = $s; |
|
| 373 | - } else { |
|
| 374 | - spip_log("editer_objet $objet #$id refus " . json_encode($c, JSON_THROW_ON_ERROR), 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 375 | - } |
|
| 376 | - } |
|
| 377 | - |
|
| 378 | - // En cas de publication, fixer la date a "maintenant" |
|
| 379 | - // sauf si $c commande autre chose |
|
| 380 | - // ou si l'objet est deja date dans le futur |
|
| 381 | - // En cas de proposition d'un objet (mais pas depublication), idem |
|
| 382 | - if ($champ_date) { |
|
| 383 | - if ( |
|
| 384 | - $champs['statut'] == 'publie' |
|
| 385 | - or ($champs['statut'] == 'prop' and !in_array($statut_ancien, ['publie', 'prop'])) |
|
| 386 | - or $d |
|
| 387 | - ) { |
|
| 388 | - if ($d or strtotime($d = $date) > time()) { |
|
| 389 | - $champs[$champ_date] = $date = $d; |
|
| 390 | - } else { |
|
| 391 | - $champs[$champ_date] = $date = date('Y-m-d H:i:s'); |
|
| 392 | - } |
|
| 393 | - } |
|
| 394 | - } |
|
| 395 | - } |
|
| 396 | - |
|
| 397 | - // Verifier que la rubrique demandee existe et est differente |
|
| 398 | - // de la rubrique actuelle |
|
| 399 | - if ( |
|
| 400 | - $id_rubrique |
|
| 401 | - and isset($c['id_parent']) |
|
| 402 | - and $id_parent = $c['id_parent'] |
|
| 403 | - and $id_parent != $id_rubrique |
|
| 404 | - and (sql_fetsel('1', 'spip_rubriques', 'id_rubrique=' . intval($id_parent))) |
|
| 405 | - ) { |
|
| 406 | - $champs['id_rubrique'] = $id_parent; |
|
| 407 | - |
|
| 408 | - // si l'objet etait publie |
|
| 409 | - // et que le demandeur n'est pas admin de la rubrique |
|
| 410 | - // repasser l'objet en statut 'propose'. |
|
| 411 | - if ( |
|
| 412 | - $statut == 'publie' |
|
| 413 | - and !autoriser('publierdans', 'rubrique', $id_rubrique) |
|
| 414 | - ) { |
|
| 415 | - $champs['statut'] = 'prop'; |
|
| 416 | - } |
|
| 417 | - } |
|
| 418 | - |
|
| 419 | - |
|
| 420 | - // Envoyer aux plugins |
|
| 421 | - $champs = pipeline( |
|
| 422 | - 'pre_edition', |
|
| 423 | - [ |
|
| 424 | - 'args' => [ |
|
| 425 | - 'table' => $table_sql, |
|
| 426 | - 'id_objet' => $id, |
|
| 427 | - 'action' => 'instituer', |
|
| 428 | - 'statut_ancien' => $statut_ancien, |
|
| 429 | - 'date_ancienne' => $date_ancienne, |
|
| 430 | - 'id_parent_ancien' => $id_rubrique, |
|
| 431 | - ], |
|
| 432 | - 'data' => $champs |
|
| 433 | - ] |
|
| 434 | - ); |
|
| 435 | - |
|
| 436 | - if (!(is_countable($champs) ? count($champs) : 0)) { |
|
| 437 | - return ''; |
|
| 438 | - } |
|
| 439 | - |
|
| 440 | - // Envoyer les modifs. |
|
| 441 | - objet_editer_heritage($objet, $id, $id_rubrique, $statut_ancien, $champs, $calcul_rub); |
|
| 442 | - |
|
| 443 | - // Invalider les caches |
|
| 444 | - include_spip('inc/invalideur'); |
|
| 445 | - suivre_invalideur("id='$objet/$id'"); |
|
| 446 | - |
|
| 447 | - /* |
|
| 316 | + if (($t = objet_type($objet)) !== $objet) { |
|
| 317 | + spip_log("objet_instituer: appel avec type $objet invalide au lieu de $t", 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 318 | + $objet = $t; |
|
| 319 | + } |
|
| 320 | + if ( |
|
| 321 | + include_spip('action/editer_' . $objet) |
|
| 322 | + and function_exists($instituer = $objet . '_instituer') |
|
| 323 | + ) { |
|
| 324 | + return $instituer($id, $c, $calcul_rub); |
|
| 325 | + } |
|
| 326 | + |
|
| 327 | + $table_sql = table_objet_sql($objet); |
|
| 328 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 329 | + $desc = $trouver_table($table_sql); |
|
| 330 | + if (!$desc or !isset($desc['field'])) { |
|
| 331 | + return _L("Impossible d'instituer $objet : non connu en base"); |
|
| 332 | + } |
|
| 333 | + |
|
| 334 | + include_spip('inc/autoriser'); |
|
| 335 | + include_spip('inc/rubriques'); |
|
| 336 | + include_spip('inc/modifier'); |
|
| 337 | + |
|
| 338 | + $sel = []; |
|
| 339 | + $sel[] = (isset($desc['field']['statut']) ? 'statut' : "'' as statut"); |
|
| 340 | + |
|
| 341 | + $champ_date = ''; |
|
| 342 | + if (isset($desc['date']) and $desc['date']) { |
|
| 343 | + $champ_date = $desc['date']; |
|
| 344 | + } elseif (isset($desc['field']['date'])) { |
|
| 345 | + $champ_date = 'date'; |
|
| 346 | + } |
|
| 347 | + |
|
| 348 | + $sel[] = ($champ_date ? "$champ_date as date" : "'' as date"); |
|
| 349 | + $sel[] = (isset($desc['field']['id_rubrique']) ? 'id_rubrique' : '0 as id_rubrique'); |
|
| 350 | + |
|
| 351 | + $row = sql_fetsel($sel, $table_sql, id_table_objet($objet) . '=' . intval($id)); |
|
| 352 | + |
|
| 353 | + $id_rubrique = $row['id_rubrique']; |
|
| 354 | + $statut_ancien = $statut = $row['statut']; |
|
| 355 | + $date_ancienne = $date = $row['date']; |
|
| 356 | + $champs = []; |
|
| 357 | + |
|
| 358 | + $d = ($date and isset($c[$champ_date])) ? $c[$champ_date] : null; |
|
| 359 | + $s = (isset($desc['field']['statut']) and isset($c['statut'])) ? $c['statut'] : $statut; |
|
| 360 | + |
|
| 361 | + // cf autorisations dans inc/instituer_objet |
|
| 362 | + if ($s != $statut or ($d and $d != $date)) { |
|
| 363 | + if ( |
|
| 364 | + $id_rubrique ? |
|
| 365 | + autoriser('publierdans', 'rubrique', $id_rubrique) |
|
| 366 | + : |
|
| 367 | + autoriser('instituer', $objet, $id, null, ['statut' => $s]) |
|
| 368 | + ) { |
|
| 369 | + $statut = $champs['statut'] = $s; |
|
| 370 | + } else { |
|
| 371 | + if ($s != 'publie' and autoriser('modifier', $objet, $id)) { |
|
| 372 | + $statut = $champs['statut'] = $s; |
|
| 373 | + } else { |
|
| 374 | + spip_log("editer_objet $objet #$id refus " . json_encode($c, JSON_THROW_ON_ERROR), 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 375 | + } |
|
| 376 | + } |
|
| 377 | + |
|
| 378 | + // En cas de publication, fixer la date a "maintenant" |
|
| 379 | + // sauf si $c commande autre chose |
|
| 380 | + // ou si l'objet est deja date dans le futur |
|
| 381 | + // En cas de proposition d'un objet (mais pas depublication), idem |
|
| 382 | + if ($champ_date) { |
|
| 383 | + if ( |
|
| 384 | + $champs['statut'] == 'publie' |
|
| 385 | + or ($champs['statut'] == 'prop' and !in_array($statut_ancien, ['publie', 'prop'])) |
|
| 386 | + or $d |
|
| 387 | + ) { |
|
| 388 | + if ($d or strtotime($d = $date) > time()) { |
|
| 389 | + $champs[$champ_date] = $date = $d; |
|
| 390 | + } else { |
|
| 391 | + $champs[$champ_date] = $date = date('Y-m-d H:i:s'); |
|
| 392 | + } |
|
| 393 | + } |
|
| 394 | + } |
|
| 395 | + } |
|
| 396 | + |
|
| 397 | + // Verifier que la rubrique demandee existe et est differente |
|
| 398 | + // de la rubrique actuelle |
|
| 399 | + if ( |
|
| 400 | + $id_rubrique |
|
| 401 | + and isset($c['id_parent']) |
|
| 402 | + and $id_parent = $c['id_parent'] |
|
| 403 | + and $id_parent != $id_rubrique |
|
| 404 | + and (sql_fetsel('1', 'spip_rubriques', 'id_rubrique=' . intval($id_parent))) |
|
| 405 | + ) { |
|
| 406 | + $champs['id_rubrique'] = $id_parent; |
|
| 407 | + |
|
| 408 | + // si l'objet etait publie |
|
| 409 | + // et que le demandeur n'est pas admin de la rubrique |
|
| 410 | + // repasser l'objet en statut 'propose'. |
|
| 411 | + if ( |
|
| 412 | + $statut == 'publie' |
|
| 413 | + and !autoriser('publierdans', 'rubrique', $id_rubrique) |
|
| 414 | + ) { |
|
| 415 | + $champs['statut'] = 'prop'; |
|
| 416 | + } |
|
| 417 | + } |
|
| 418 | + |
|
| 419 | + |
|
| 420 | + // Envoyer aux plugins |
|
| 421 | + $champs = pipeline( |
|
| 422 | + 'pre_edition', |
|
| 423 | + [ |
|
| 424 | + 'args' => [ |
|
| 425 | + 'table' => $table_sql, |
|
| 426 | + 'id_objet' => $id, |
|
| 427 | + 'action' => 'instituer', |
|
| 428 | + 'statut_ancien' => $statut_ancien, |
|
| 429 | + 'date_ancienne' => $date_ancienne, |
|
| 430 | + 'id_parent_ancien' => $id_rubrique, |
|
| 431 | + ], |
|
| 432 | + 'data' => $champs |
|
| 433 | + ] |
|
| 434 | + ); |
|
| 435 | + |
|
| 436 | + if (!(is_countable($champs) ? count($champs) : 0)) { |
|
| 437 | + return ''; |
|
| 438 | + } |
|
| 439 | + |
|
| 440 | + // Envoyer les modifs. |
|
| 441 | + objet_editer_heritage($objet, $id, $id_rubrique, $statut_ancien, $champs, $calcul_rub); |
|
| 442 | + |
|
| 443 | + // Invalider les caches |
|
| 444 | + include_spip('inc/invalideur'); |
|
| 445 | + suivre_invalideur("id='$objet/$id'"); |
|
| 446 | + |
|
| 447 | + /* |
|
| 448 | 448 | if ($date) { |
| 449 | 449 | $t = strtotime($date); |
| 450 | 450 | $p = @$GLOBALS['meta']['date_prochain_postdate']; |
@@ -453,32 +453,32 @@ discard block |
||
| 453 | 453 | } |
| 454 | 454 | }*/ |
| 455 | 455 | |
| 456 | - // Pipeline |
|
| 457 | - pipeline( |
|
| 458 | - 'post_edition', |
|
| 459 | - [ |
|
| 460 | - 'args' => [ |
|
| 461 | - 'table' => $table_sql, |
|
| 462 | - 'id_objet' => $id, |
|
| 463 | - 'action' => 'instituer', |
|
| 464 | - 'statut_ancien' => $statut_ancien, |
|
| 465 | - 'date_ancienne' => $date_ancienne, |
|
| 466 | - 'id_parent_ancien' => $id_rubrique, |
|
| 467 | - ], |
|
| 468 | - 'data' => $champs |
|
| 469 | - ] |
|
| 470 | - ); |
|
| 471 | - |
|
| 472 | - // Notifications |
|
| 473 | - if ($notifications = charger_fonction('notifications', 'inc')) { |
|
| 474 | - $notifications( |
|
| 475 | - "instituer$objet", |
|
| 476 | - $id, |
|
| 477 | - ['statut' => $statut, 'statut_ancien' => $statut_ancien, 'date' => $date, 'date_ancienne' => $date_ancienne] |
|
| 478 | - ); |
|
| 479 | - } |
|
| 480 | - |
|
| 481 | - return ''; // pas d'erreur |
|
| 456 | + // Pipeline |
|
| 457 | + pipeline( |
|
| 458 | + 'post_edition', |
|
| 459 | + [ |
|
| 460 | + 'args' => [ |
|
| 461 | + 'table' => $table_sql, |
|
| 462 | + 'id_objet' => $id, |
|
| 463 | + 'action' => 'instituer', |
|
| 464 | + 'statut_ancien' => $statut_ancien, |
|
| 465 | + 'date_ancienne' => $date_ancienne, |
|
| 466 | + 'id_parent_ancien' => $id_rubrique, |
|
| 467 | + ], |
|
| 468 | + 'data' => $champs |
|
| 469 | + ] |
|
| 470 | + ); |
|
| 471 | + |
|
| 472 | + // Notifications |
|
| 473 | + if ($notifications = charger_fonction('notifications', 'inc')) { |
|
| 474 | + $notifications( |
|
| 475 | + "instituer$objet", |
|
| 476 | + $id, |
|
| 477 | + ['statut' => $statut, 'statut_ancien' => $statut_ancien, 'date' => $date, 'date_ancienne' => $date_ancienne] |
|
| 478 | + ); |
|
| 479 | + } |
|
| 480 | + |
|
| 481 | + return ''; // pas d'erreur |
|
| 482 | 482 | } |
| 483 | 483 | |
| 484 | 484 | /** |
@@ -493,51 +493,51 @@ discard block |
||
| 493 | 493 | * @return void |
| 494 | 494 | */ |
| 495 | 495 | function objet_editer_heritage($objet, $id, $id_rubrique, $statut, $champs, $cond = true) { |
| 496 | - $table_sql = table_objet_sql($objet); |
|
| 497 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 498 | - $desc = $trouver_table($table_sql); |
|
| 499 | - |
|
| 500 | - // Si on deplace l'objet |
|
| 501 | - // changer aussi son secteur et sa langue (si heritee) |
|
| 502 | - if (isset($champs['id_rubrique'])) { |
|
| 503 | - $row_rub = sql_fetsel('id_secteur, lang', 'spip_rubriques', 'id_rubrique=' . sql_quote($champs['id_rubrique'])); |
|
| 504 | - $langue = $row_rub['lang']; |
|
| 505 | - |
|
| 506 | - if (isset($desc['field']['id_secteur'])) { |
|
| 507 | - $champs['id_secteur'] = $row_rub['id_secteur']; |
|
| 508 | - } |
|
| 509 | - |
|
| 510 | - if (isset($desc['field']['lang']) and isset($desc['field']['langue_choisie'])) { |
|
| 511 | - if ( |
|
| 512 | - sql_fetsel( |
|
| 513 | - '1', |
|
| 514 | - $table_sql, |
|
| 515 | - id_table_objet($objet) . '=' . intval($id) . " AND langue_choisie<>'oui' AND lang<>" . sql_quote($langue) |
|
| 516 | - ) |
|
| 517 | - ) { |
|
| 518 | - $champs['lang'] = $langue; |
|
| 519 | - } |
|
| 520 | - } |
|
| 521 | - } |
|
| 522 | - |
|
| 523 | - if (!$champs) { |
|
| 524 | - return; |
|
| 525 | - } |
|
| 526 | - sql_updateq($table_sql, $champs, id_table_objet($objet) . '=' . intval($id)); |
|
| 527 | - |
|
| 528 | - // Changer le statut des rubriques concernees |
|
| 529 | - if ($cond) { |
|
| 530 | - include_spip('inc/rubriques'); |
|
| 531 | - //$postdate = ($GLOBALS['meta']["post_dates"] == "non" AND isset($champs['date']) AND (strtotime($champs['date']) < time()))?$champs['date']:false; |
|
| 532 | - $postdate = false; |
|
| 533 | - // On rajoute les infos de l'objet |
|
| 534 | - $infos = [ |
|
| 535 | - 'objet' => $objet, |
|
| 536 | - 'id_objet' => $id, |
|
| 537 | - 'statut_ancien' => $statut, |
|
| 538 | - ]; |
|
| 539 | - calculer_rubriques_if($id_rubrique, $champs, $infos, $postdate); |
|
| 540 | - } |
|
| 496 | + $table_sql = table_objet_sql($objet); |
|
| 497 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 498 | + $desc = $trouver_table($table_sql); |
|
| 499 | + |
|
| 500 | + // Si on deplace l'objet |
|
| 501 | + // changer aussi son secteur et sa langue (si heritee) |
|
| 502 | + if (isset($champs['id_rubrique'])) { |
|
| 503 | + $row_rub = sql_fetsel('id_secteur, lang', 'spip_rubriques', 'id_rubrique=' . sql_quote($champs['id_rubrique'])); |
|
| 504 | + $langue = $row_rub['lang']; |
|
| 505 | + |
|
| 506 | + if (isset($desc['field']['id_secteur'])) { |
|
| 507 | + $champs['id_secteur'] = $row_rub['id_secteur']; |
|
| 508 | + } |
|
| 509 | + |
|
| 510 | + if (isset($desc['field']['lang']) and isset($desc['field']['langue_choisie'])) { |
|
| 511 | + if ( |
|
| 512 | + sql_fetsel( |
|
| 513 | + '1', |
|
| 514 | + $table_sql, |
|
| 515 | + id_table_objet($objet) . '=' . intval($id) . " AND langue_choisie<>'oui' AND lang<>" . sql_quote($langue) |
|
| 516 | + ) |
|
| 517 | + ) { |
|
| 518 | + $champs['lang'] = $langue; |
|
| 519 | + } |
|
| 520 | + } |
|
| 521 | + } |
|
| 522 | + |
|
| 523 | + if (!$champs) { |
|
| 524 | + return; |
|
| 525 | + } |
|
| 526 | + sql_updateq($table_sql, $champs, id_table_objet($objet) . '=' . intval($id)); |
|
| 527 | + |
|
| 528 | + // Changer le statut des rubriques concernees |
|
| 529 | + if ($cond) { |
|
| 530 | + include_spip('inc/rubriques'); |
|
| 531 | + //$postdate = ($GLOBALS['meta']["post_dates"] == "non" AND isset($champs['date']) AND (strtotime($champs['date']) < time()))?$champs['date']:false; |
|
| 532 | + $postdate = false; |
|
| 533 | + // On rajoute les infos de l'objet |
|
| 534 | + $infos = [ |
|
| 535 | + 'objet' => $objet, |
|
| 536 | + 'id_objet' => $id, |
|
| 537 | + 'statut_ancien' => $statut, |
|
| 538 | + ]; |
|
| 539 | + calculer_rubriques_if($id_rubrique, $champs, $infos, $postdate); |
|
| 540 | + } |
|
| 541 | 541 | } |
| 542 | 542 | |
| 543 | 543 | |
@@ -566,75 +566,75 @@ discard block |
||
| 566 | 566 | * string|int : valeur du champ demande pour l'objet demande |
| 567 | 567 | */ |
| 568 | 568 | function objet_lire($objet, $valeur_id, $options = []) { |
| 569 | - if (($t = objet_type($objet)) !== $objet) { |
|
| 570 | - spip_log("objet_lire: appel avec type $objet invalide au lieu de $t", 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 571 | - $objet = $t; |
|
| 572 | - } |
|
| 573 | - |
|
| 574 | - // tableau du cache des descriptions et des id d'objet (au sens id_xxx). |
|
| 575 | - // Les tableaux sont toujours indexés par le trio [objet][cle][valeur_cle] |
|
| 576 | - static $descriptions = []; |
|
| 577 | - |
|
| 578 | - // On détermine le nom du champ id de la table. |
|
| 579 | - include_spip('base/objets'); |
|
| 580 | - $primary = id_table_objet($objet); |
|
| 581 | - |
|
| 582 | - // On détermine l'id à utiliser. |
|
| 583 | - $champ_id = (!empty($options['champ_id']) ? $options['champ_id'] : $primary); |
|
| 584 | - |
|
| 585 | - // Si l'objet n'a pas encore été stocké, il faut récupérer sa description complète. |
|
| 586 | - if ( |
|
| 587 | - !isset($descriptions[$objet][$champ_id][$valeur_id]) |
|
| 588 | - or (isset($options['force']) and $options['force']) |
|
| 589 | - ) { |
|
| 590 | - // Il est possible pour un type d'objet de fournir une fonction de lecture de tous les champs d'un objet. |
|
| 591 | - if ( |
|
| 592 | - include_spip('action/editer_' . $objet) |
|
| 593 | - and function_exists($lire = "${objet}_lire_champs") |
|
| 594 | - ) { |
|
| 595 | - $valeurs = $lire($objet, $valeur_id, $champ_id); |
|
| 596 | - } else { |
|
| 597 | - // On récupère la table SQL à partir du type d'objet. |
|
| 598 | - $table = table_objet_sql($objet); |
|
| 599 | - |
|
| 600 | - // La condition est appliquée sur le champ désigné par l'utilisateur. |
|
| 601 | - $where = [ |
|
| 602 | - "${champ_id}=" . sql_quote($valeur_id) |
|
| 603 | - ]; |
|
| 604 | - |
|
| 605 | - // Acquisition de tous les champs de l'objet : si l'accès SQL retourne une erreur on renvoie un tableau vide. |
|
| 606 | - $valeurs = sql_fetsel('*', $table, $where); |
|
| 607 | - } |
|
| 608 | - |
|
| 609 | - if (!$valeurs) { |
|
| 610 | - $valeurs = false; |
|
| 611 | - } |
|
| 612 | - |
|
| 613 | - $descriptions[$objet][$champ_id][$valeur_id] = $valeurs; |
|
| 614 | - |
|
| 615 | - if ($champ_id !== $primary and isset($valeurs[$primary])) { |
|
| 616 | - $descriptions[$objet][$primary][$valeurs[$primary]] = $valeurs; |
|
| 617 | - $descriptions[$objet][$champ_id][$valeur_id] = &$descriptions[$objet][$primary][$valeurs[$primary]]; |
|
| 618 | - } |
|
| 619 | - } |
|
| 620 | - |
|
| 621 | - $retour = $descriptions[$objet][$champ_id][$valeur_id]; |
|
| 622 | - |
|
| 623 | - // On ne retourne maintenant que les champs demandés. |
|
| 624 | - // - on détermine les informations à renvoyer. |
|
| 625 | - if ($retour and !empty($options['champs'])) { |
|
| 626 | - $champs = $options['champs']; |
|
| 627 | - // Extraction des seules informations demandées. |
|
| 628 | - // -- si on demande une information unique on renvoie la valeur simple, sinon on renvoie un tableau. |
|
| 629 | - // -- si une information n'est pas un champ valide elle n'est pas renvoyée sans renvoyer d'erreur. |
|
| 630 | - if (is_array($champs)) { |
|
| 631 | - // Tableau des informations valides |
|
| 632 | - $retour = array_intersect_key($retour, array_flip($champs)); |
|
| 633 | - } else { |
|
| 634 | - // Valeur unique demandée. |
|
| 635 | - $retour = ($retour[$champs] ?? false); |
|
| 636 | - } |
|
| 637 | - } |
|
| 638 | - |
|
| 639 | - return $retour; |
|
| 569 | + if (($t = objet_type($objet)) !== $objet) { |
|
| 570 | + spip_log("objet_lire: appel avec type $objet invalide au lieu de $t", 'editer' . _LOG_INFO_IMPORTANTE); |
|
| 571 | + $objet = $t; |
|
| 572 | + } |
|
| 573 | + |
|
| 574 | + // tableau du cache des descriptions et des id d'objet (au sens id_xxx). |
|
| 575 | + // Les tableaux sont toujours indexés par le trio [objet][cle][valeur_cle] |
|
| 576 | + static $descriptions = []; |
|
| 577 | + |
|
| 578 | + // On détermine le nom du champ id de la table. |
|
| 579 | + include_spip('base/objets'); |
|
| 580 | + $primary = id_table_objet($objet); |
|
| 581 | + |
|
| 582 | + // On détermine l'id à utiliser. |
|
| 583 | + $champ_id = (!empty($options['champ_id']) ? $options['champ_id'] : $primary); |
|
| 584 | + |
|
| 585 | + // Si l'objet n'a pas encore été stocké, il faut récupérer sa description complète. |
|
| 586 | + if ( |
|
| 587 | + !isset($descriptions[$objet][$champ_id][$valeur_id]) |
|
| 588 | + or (isset($options['force']) and $options['force']) |
|
| 589 | + ) { |
|
| 590 | + // Il est possible pour un type d'objet de fournir une fonction de lecture de tous les champs d'un objet. |
|
| 591 | + if ( |
|
| 592 | + include_spip('action/editer_' . $objet) |
|
| 593 | + and function_exists($lire = "${objet}_lire_champs") |
|
| 594 | + ) { |
|
| 595 | + $valeurs = $lire($objet, $valeur_id, $champ_id); |
|
| 596 | + } else { |
|
| 597 | + // On récupère la table SQL à partir du type d'objet. |
|
| 598 | + $table = table_objet_sql($objet); |
|
| 599 | + |
|
| 600 | + // La condition est appliquée sur le champ désigné par l'utilisateur. |
|
| 601 | + $where = [ |
|
| 602 | + "${champ_id}=" . sql_quote($valeur_id) |
|
| 603 | + ]; |
|
| 604 | + |
|
| 605 | + // Acquisition de tous les champs de l'objet : si l'accès SQL retourne une erreur on renvoie un tableau vide. |
|
| 606 | + $valeurs = sql_fetsel('*', $table, $where); |
|
| 607 | + } |
|
| 608 | + |
|
| 609 | + if (!$valeurs) { |
|
| 610 | + $valeurs = false; |
|
| 611 | + } |
|
| 612 | + |
|
| 613 | + $descriptions[$objet][$champ_id][$valeur_id] = $valeurs; |
|
| 614 | + |
|
| 615 | + if ($champ_id !== $primary and isset($valeurs[$primary])) { |
|
| 616 | + $descriptions[$objet][$primary][$valeurs[$primary]] = $valeurs; |
|
| 617 | + $descriptions[$objet][$champ_id][$valeur_id] = &$descriptions[$objet][$primary][$valeurs[$primary]]; |
|
| 618 | + } |
|
| 619 | + } |
|
| 620 | + |
|
| 621 | + $retour = $descriptions[$objet][$champ_id][$valeur_id]; |
|
| 622 | + |
|
| 623 | + // On ne retourne maintenant que les champs demandés. |
|
| 624 | + // - on détermine les informations à renvoyer. |
|
| 625 | + if ($retour and !empty($options['champs'])) { |
|
| 626 | + $champs = $options['champs']; |
|
| 627 | + // Extraction des seules informations demandées. |
|
| 628 | + // -- si on demande une information unique on renvoie la valeur simple, sinon on renvoie un tableau. |
|
| 629 | + // -- si une information n'est pas un champ valide elle n'est pas renvoyée sans renvoyer d'erreur. |
|
| 630 | + if (is_array($champs)) { |
|
| 631 | + // Tableau des informations valides |
|
| 632 | + $retour = array_intersect_key($retour, array_flip($champs)); |
|
| 633 | + } else { |
|
| 634 | + // Valeur unique demandée. |
|
| 635 | + $retour = ($retour[$champs] ?? false); |
|
| 636 | + } |
|
| 637 | + } |
|
| 638 | + |
|
| 639 | + return $retour; |
|
| 640 | 640 | } |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | */ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | /** |
@@ -37,41 +37,41 @@ discard block |
||
| 37 | 37 | */ |
| 38 | 38 | function action_editer_auteur_dist($arg = null) { |
| 39 | 39 | |
| 40 | - if (is_null($arg)) { |
|
| 41 | - $securiser_action = charger_fonction('securiser_action', 'inc'); |
|
| 42 | - $arg = $securiser_action(); |
|
| 43 | - } |
|
| 44 | - |
|
| 45 | - |
|
| 46 | - // si id_auteur n'est pas un nombre, c'est une creation |
|
| 47 | - if (!$id_auteur = intval($arg)) { |
|
| 48 | - if (($id_auteur = auteur_inserer()) > 0) { |
|
| 49 | - # cf. GROS HACK |
|
| 50 | - # recuperer l'eventuel logo charge avant la creation |
|
| 51 | - # ils ont un id = 0-id_auteur de la session |
|
| 52 | - $id_hack = 0 - $GLOBALS['visiteur_session']['id_auteur']; |
|
| 53 | - $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 54 | - foreach (['on', 'off'] as $type) { |
|
| 55 | - if ($logo = $chercher_logo($id_hack, 'id_auteur', $type)) { |
|
| 56 | - if ($logo = reset($logo)) { |
|
| 57 | - rename($logo, str_replace($id_hack, $id_auteur, $logo)); |
|
| 58 | - } |
|
| 59 | - } |
|
| 60 | - } |
|
| 61 | - } |
|
| 62 | - } |
|
| 63 | - |
|
| 64 | - // Enregistre l'envoi dans la BD |
|
| 65 | - $err = ''; |
|
| 66 | - if ($id_auteur > 0) { |
|
| 67 | - $err = auteur_modifier($id_auteur); |
|
| 68 | - } |
|
| 69 | - |
|
| 70 | - if ($err) { |
|
| 71 | - spip_log("echec editeur auteur: $err", _LOG_ERREUR); |
|
| 72 | - } |
|
| 73 | - |
|
| 74 | - return [$id_auteur, $err]; |
|
| 40 | + if (is_null($arg)) { |
|
| 41 | + $securiser_action = charger_fonction('securiser_action', 'inc'); |
|
| 42 | + $arg = $securiser_action(); |
|
| 43 | + } |
|
| 44 | + |
|
| 45 | + |
|
| 46 | + // si id_auteur n'est pas un nombre, c'est une creation |
|
| 47 | + if (!$id_auteur = intval($arg)) { |
|
| 48 | + if (($id_auteur = auteur_inserer()) > 0) { |
|
| 49 | + # cf. GROS HACK |
|
| 50 | + # recuperer l'eventuel logo charge avant la creation |
|
| 51 | + # ils ont un id = 0-id_auteur de la session |
|
| 52 | + $id_hack = 0 - $GLOBALS['visiteur_session']['id_auteur']; |
|
| 53 | + $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 54 | + foreach (['on', 'off'] as $type) { |
|
| 55 | + if ($logo = $chercher_logo($id_hack, 'id_auteur', $type)) { |
|
| 56 | + if ($logo = reset($logo)) { |
|
| 57 | + rename($logo, str_replace($id_hack, $id_auteur, $logo)); |
|
| 58 | + } |
|
| 59 | + } |
|
| 60 | + } |
|
| 61 | + } |
|
| 62 | + } |
|
| 63 | + |
|
| 64 | + // Enregistre l'envoi dans la BD |
|
| 65 | + $err = ''; |
|
| 66 | + if ($id_auteur > 0) { |
|
| 67 | + $err = auteur_modifier($id_auteur); |
|
| 68 | + } |
|
| 69 | + |
|
| 70 | + if ($err) { |
|
| 71 | + spip_log("echec editeur auteur: $err", _LOG_ERREUR); |
|
| 72 | + } |
|
| 73 | + |
|
| 74 | + return [$id_auteur, $err]; |
|
| 75 | 75 | } |
| 76 | 76 | |
| 77 | 77 | /** |
@@ -88,44 +88,44 @@ discard block |
||
| 88 | 88 | */ |
| 89 | 89 | function auteur_inserer($source = null, $set = null) { |
| 90 | 90 | |
| 91 | - // Ce qu'on va demander comme modifications |
|
| 92 | - $champs = []; |
|
| 93 | - $champs['source'] = $source ?: 'spip'; |
|
| 94 | - |
|
| 95 | - $champs['login'] = ''; |
|
| 96 | - $champs['statut'] = '5poubelle'; // inutilisable tant qu'il n'a pas ete renseigne et institue |
|
| 97 | - $champs['webmestre'] = 'non'; |
|
| 98 | - if (empty($champs['imessage'])) { |
|
| 99 | - $champs['imessage'] = 'oui'; |
|
| 100 | - } |
|
| 101 | - |
|
| 102 | - if ($set) { |
|
| 103 | - $champs = array_merge($champs, $set); |
|
| 104 | - } |
|
| 105 | - |
|
| 106 | - // Envoyer aux plugins |
|
| 107 | - $champs = pipeline( |
|
| 108 | - 'pre_insertion', |
|
| 109 | - [ |
|
| 110 | - 'args' => [ |
|
| 111 | - 'table' => 'spip_auteurs', |
|
| 112 | - ], |
|
| 113 | - 'data' => $champs |
|
| 114 | - ] |
|
| 115 | - ); |
|
| 116 | - $id_auteur = sql_insertq('spip_auteurs', $champs); |
|
| 117 | - pipeline( |
|
| 118 | - 'post_insertion', |
|
| 119 | - [ |
|
| 120 | - 'args' => [ |
|
| 121 | - 'table' => 'spip_auteurs', |
|
| 122 | - 'id_objet' => $id_auteur |
|
| 123 | - ], |
|
| 124 | - 'data' => $champs |
|
| 125 | - ] |
|
| 126 | - ); |
|
| 127 | - |
|
| 128 | - return $id_auteur; |
|
| 91 | + // Ce qu'on va demander comme modifications |
|
| 92 | + $champs = []; |
|
| 93 | + $champs['source'] = $source ?: 'spip'; |
|
| 94 | + |
|
| 95 | + $champs['login'] = ''; |
|
| 96 | + $champs['statut'] = '5poubelle'; // inutilisable tant qu'il n'a pas ete renseigne et institue |
|
| 97 | + $champs['webmestre'] = 'non'; |
|
| 98 | + if (empty($champs['imessage'])) { |
|
| 99 | + $champs['imessage'] = 'oui'; |
|
| 100 | + } |
|
| 101 | + |
|
| 102 | + if ($set) { |
|
| 103 | + $champs = array_merge($champs, $set); |
|
| 104 | + } |
|
| 105 | + |
|
| 106 | + // Envoyer aux plugins |
|
| 107 | + $champs = pipeline( |
|
| 108 | + 'pre_insertion', |
|
| 109 | + [ |
|
| 110 | + 'args' => [ |
|
| 111 | + 'table' => 'spip_auteurs', |
|
| 112 | + ], |
|
| 113 | + 'data' => $champs |
|
| 114 | + ] |
|
| 115 | + ); |
|
| 116 | + $id_auteur = sql_insertq('spip_auteurs', $champs); |
|
| 117 | + pipeline( |
|
| 118 | + 'post_insertion', |
|
| 119 | + [ |
|
| 120 | + 'args' => [ |
|
| 121 | + 'table' => 'spip_auteurs', |
|
| 122 | + 'id_objet' => $id_auteur |
|
| 123 | + ], |
|
| 124 | + 'data' => $champs |
|
| 125 | + ] |
|
| 126 | + ); |
|
| 127 | + |
|
| 128 | + return $id_auteur; |
|
| 129 | 129 | } |
| 130 | 130 | |
| 131 | 131 | |
@@ -150,70 +150,70 @@ discard block |
||
| 150 | 150 | */ |
| 151 | 151 | function auteur_modifier($id_auteur, $set = null, $force_update = false) { |
| 152 | 152 | |
| 153 | - include_spip('inc/modifier'); |
|
| 154 | - include_spip('inc/filtres'); |
|
| 155 | - $c = collecter_requests( |
|
| 156 | - // include list |
|
| 157 | - objet_info('auteur', 'champs_editables'), |
|
| 158 | - // exclude list |
|
| 159 | - $force_update ? [] : ['webmestre', 'pass', 'login'], |
|
| 160 | - // donnees eventuellement fournies |
|
| 161 | - $set |
|
| 162 | - ); |
|
| 163 | - |
|
| 164 | - if ( |
|
| 165 | - $err = objet_modifier_champs( |
|
| 166 | - 'auteur', |
|
| 167 | - $id_auteur, |
|
| 168 | - [ |
|
| 169 | - 'data' => $set, |
|
| 170 | - 'nonvide' => ['nom' => _T('ecrire:item_nouvel_auteur')] |
|
| 171 | - ], |
|
| 172 | - $c |
|
| 173 | - ) |
|
| 174 | - ) { |
|
| 175 | - return $err; |
|
| 176 | - } |
|
| 177 | - $session = $c; |
|
| 178 | - |
|
| 179 | - $err = ''; |
|
| 180 | - if (!$force_update) { |
|
| 181 | - // Modification de statut, changement de rubrique ? |
|
| 182 | - $c = collecter_requests( |
|
| 183 | - // include list |
|
| 184 | - [ |
|
| 185 | - 'statut', |
|
| 186 | - 'new_login', |
|
| 187 | - 'new_pass', |
|
| 188 | - 'login', |
|
| 189 | - 'pass', |
|
| 190 | - 'webmestre', |
|
| 191 | - 'restreintes', |
|
| 192 | - 'id_parent' |
|
| 193 | - ], |
|
| 194 | - // exclude list |
|
| 195 | - [], |
|
| 196 | - // donnees eventuellement fournies |
|
| 197 | - $set |
|
| 198 | - ); |
|
| 199 | - if (isset($c['new_login']) and !isset($c['login'])) { |
|
| 200 | - $c['login'] = $c['new_login']; |
|
| 201 | - } |
|
| 202 | - if (isset($c['new_pass']) and !isset($c['pass'])) { |
|
| 203 | - $c['pass'] = $c['new_pass']; |
|
| 204 | - } |
|
| 205 | - $err = auteur_instituer($id_auteur, $c); |
|
| 206 | - $session = array_merge($session, $c); |
|
| 207 | - } |
|
| 208 | - |
|
| 209 | - // .. mettre a jour les sessions de cet auteur |
|
| 210 | - include_spip('inc/session'); |
|
| 211 | - $session['id_auteur'] = $id_auteur; |
|
| 212 | - unset($session['new_login']); |
|
| 213 | - unset($session['new_pass']); |
|
| 214 | - actualiser_sessions($session); |
|
| 215 | - |
|
| 216 | - return $err; |
|
| 153 | + include_spip('inc/modifier'); |
|
| 154 | + include_spip('inc/filtres'); |
|
| 155 | + $c = collecter_requests( |
|
| 156 | + // include list |
|
| 157 | + objet_info('auteur', 'champs_editables'), |
|
| 158 | + // exclude list |
|
| 159 | + $force_update ? [] : ['webmestre', 'pass', 'login'], |
|
| 160 | + // donnees eventuellement fournies |
|
| 161 | + $set |
|
| 162 | + ); |
|
| 163 | + |
|
| 164 | + if ( |
|
| 165 | + $err = objet_modifier_champs( |
|
| 166 | + 'auteur', |
|
| 167 | + $id_auteur, |
|
| 168 | + [ |
|
| 169 | + 'data' => $set, |
|
| 170 | + 'nonvide' => ['nom' => _T('ecrire:item_nouvel_auteur')] |
|
| 171 | + ], |
|
| 172 | + $c |
|
| 173 | + ) |
|
| 174 | + ) { |
|
| 175 | + return $err; |
|
| 176 | + } |
|
| 177 | + $session = $c; |
|
| 178 | + |
|
| 179 | + $err = ''; |
|
| 180 | + if (!$force_update) { |
|
| 181 | + // Modification de statut, changement de rubrique ? |
|
| 182 | + $c = collecter_requests( |
|
| 183 | + // include list |
|
| 184 | + [ |
|
| 185 | + 'statut', |
|
| 186 | + 'new_login', |
|
| 187 | + 'new_pass', |
|
| 188 | + 'login', |
|
| 189 | + 'pass', |
|
| 190 | + 'webmestre', |
|
| 191 | + 'restreintes', |
|
| 192 | + 'id_parent' |
|
| 193 | + ], |
|
| 194 | + // exclude list |
|
| 195 | + [], |
|
| 196 | + // donnees eventuellement fournies |
|
| 197 | + $set |
|
| 198 | + ); |
|
| 199 | + if (isset($c['new_login']) and !isset($c['login'])) { |
|
| 200 | + $c['login'] = $c['new_login']; |
|
| 201 | + } |
|
| 202 | + if (isset($c['new_pass']) and !isset($c['pass'])) { |
|
| 203 | + $c['pass'] = $c['new_pass']; |
|
| 204 | + } |
|
| 205 | + $err = auteur_instituer($id_auteur, $c); |
|
| 206 | + $session = array_merge($session, $c); |
|
| 207 | + } |
|
| 208 | + |
|
| 209 | + // .. mettre a jour les sessions de cet auteur |
|
| 210 | + include_spip('inc/session'); |
|
| 211 | + $session['id_auteur'] = $id_auteur; |
|
| 212 | + unset($session['new_login']); |
|
| 213 | + unset($session['new_pass']); |
|
| 214 | + actualiser_sessions($session); |
|
| 215 | + |
|
| 216 | + return $err; |
|
| 217 | 217 | } |
| 218 | 218 | |
| 219 | 219 | /** |
@@ -234,9 +234,9 @@ discard block |
||
| 234 | 234 | * @return string |
| 235 | 235 | */ |
| 236 | 236 | function auteur_associer($id_auteur, $objets, $qualif = null) { |
| 237 | - include_spip('action/editer_liens'); |
|
| 237 | + include_spip('action/editer_liens'); |
|
| 238 | 238 | |
| 239 | - return objet_associer(['auteur' => $id_auteur], $objets, $qualif); |
|
| 239 | + return objet_associer(['auteur' => $id_auteur], $objets, $qualif); |
|
| 240 | 240 | } |
| 241 | 241 | |
| 242 | 242 | /** |
@@ -255,9 +255,9 @@ discard block |
||
| 255 | 255 | * @return string |
| 256 | 256 | */ |
| 257 | 257 | function auteur_dissocier($id_auteur, $objets) { |
| 258 | - include_spip('action/editer_liens'); |
|
| 258 | + include_spip('action/editer_liens'); |
|
| 259 | 259 | |
| 260 | - return objet_dissocier(['auteur' => $id_auteur], $objets); |
|
| 260 | + return objet_dissocier(['auteur' => $id_auteur], $objets); |
|
| 261 | 261 | } |
| 262 | 262 | |
| 263 | 263 | /** |
@@ -278,9 +278,9 @@ discard block |
||
| 278 | 278 | * @return bool|int |
| 279 | 279 | */ |
| 280 | 280 | function auteur_qualifier($id_auteur, $objets, $qualif) { |
| 281 | - include_spip('action/editer_liens'); |
|
| 281 | + include_spip('action/editer_liens'); |
|
| 282 | 282 | |
| 283 | - return objet_qualifier_liens(['auteur' => $id_auteur], $objets, $qualif); |
|
| 283 | + return objet_qualifier_liens(['auteur' => $id_auteur], $objets, $qualif); |
|
| 284 | 284 | } |
| 285 | 285 | |
| 286 | 286 | |
@@ -299,139 +299,139 @@ discard block |
||
| 299 | 299 | * @return bool|string |
| 300 | 300 | */ |
| 301 | 301 | function auteur_instituer($id_auteur, $c, $force_webmestre = false) { |
| 302 | - if (!$id_auteur = intval($id_auteur)) { |
|
| 303 | - return false; |
|
| 304 | - } |
|
| 305 | - $erreurs = []; // contiendra les differentes erreurs a traduire par _T() |
|
| 306 | - $champs = []; |
|
| 307 | - |
|
| 308 | - // les memoriser pour les faire passer dans le pipeline pre_edition |
|
| 309 | - if (isset($c['login']) and strlen($c['login'])) { |
|
| 310 | - $champs['login'] = $c['login']; |
|
| 311 | - } |
|
| 312 | - if (isset($c['pass']) and strlen($c['pass'])) { |
|
| 313 | - $champs['pass'] = $c['pass']; |
|
| 314 | - } |
|
| 315 | - |
|
| 316 | - $statut = $statut_ancien = sql_getfetsel('statut', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 317 | - |
|
| 318 | - if ( |
|
| 319 | - isset($c['statut']) |
|
| 320 | - and (autoriser('modifier', 'auteur', $id_auteur, null, ['statut' => $c['statut']])) |
|
| 321 | - ) { |
|
| 322 | - $statut = $champs['statut'] = $c['statut']; |
|
| 323 | - } |
|
| 324 | - |
|
| 325 | - // Restreindre avant de declarer l'auteur |
|
| 326 | - // (section critique sur les droits) |
|
| 327 | - if (isset($c['id_parent']) and $c['id_parent']) { |
|
| 328 | - if (is_array($c['restreintes'])) { |
|
| 329 | - $c['restreintes'][] = $c['id_parent']; |
|
| 330 | - } else { |
|
| 331 | - $c['restreintes'] = [$c['id_parent']]; |
|
| 332 | - } |
|
| 333 | - } |
|
| 334 | - |
|
| 335 | - if ( |
|
| 336 | - isset($c['webmestre']) |
|
| 337 | - and ($force_webmestre or autoriser('modifier', 'auteur', $id_auteur, null, ['webmestre' => '?'])) |
|
| 338 | - ) { |
|
| 339 | - $champs['webmestre'] = $c['webmestre'] == 'oui' ? 'oui' : 'non'; |
|
| 340 | - } |
|
| 341 | - |
|
| 342 | - // si statut change et n'est pas 0minirezo, on force webmestre a non |
|
| 343 | - if (isset($c['statut']) and $c['statut'] !== '0minirezo') { |
|
| 344 | - $champs['webmestre'] = $c['webmestre'] = 'non'; |
|
| 345 | - } |
|
| 346 | - |
|
| 347 | - // Envoyer aux plugins |
|
| 348 | - $champs = pipeline( |
|
| 349 | - 'pre_edition', |
|
| 350 | - [ |
|
| 351 | - 'args' => [ |
|
| 352 | - 'table' => 'spip_auteurs', |
|
| 353 | - 'id_objet' => $id_auteur, |
|
| 354 | - 'action' => 'instituer', |
|
| 355 | - 'statut_ancien' => $statut_ancien, |
|
| 356 | - ], |
|
| 357 | - 'data' => $champs |
|
| 358 | - ] |
|
| 359 | - ); |
|
| 360 | - |
|
| 361 | - if ( |
|
| 362 | - isset($c['restreintes']) and is_array($c['restreintes']) |
|
| 363 | - and autoriser('modifier', 'auteur', $id_auteur, null, ['restreint' => $c['restreintes']]) |
|
| 364 | - ) { |
|
| 365 | - $rubriques = array_map('intval', $c['restreintes']); |
|
| 366 | - $rubriques = array_unique($rubriques); |
|
| 367 | - $rubriques = array_diff($rubriques, [0]); |
|
| 368 | - auteur_dissocier($id_auteur, ['rubrique' => '*']); |
|
| 369 | - auteur_associer($id_auteur, ['rubrique' => $rubriques]); |
|
| 370 | - } |
|
| 371 | - |
|
| 372 | - $flag_ecrire_acces = false; |
|
| 373 | - // commencer par traiter les cas particuliers des logins et pass |
|
| 374 | - // avant les autres ecritures en base |
|
| 375 | - if (isset($champs['login']) or isset($champs['pass'])) { |
|
| 376 | - $auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 377 | - include_spip('inc/auth'); |
|
| 378 | - if (isset($champs['login']) and strlen($champs['login'])) { |
|
| 379 | - if (!auth_modifier_login($auth_methode, $champs['login'], $id_auteur)) { |
|
| 380 | - $erreurs[] = 'ecrire:impossible_modifier_login_auteur'; |
|
| 381 | - } |
|
| 382 | - } |
|
| 383 | - if (isset($champs['pass']) and strlen($champs['pass'])) { |
|
| 384 | - $champs['login'] = sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 385 | - if (!auth_modifier_pass($auth_methode, $champs['login'], $champs['pass'], $id_auteur)) { |
|
| 386 | - $erreurs[] = 'ecrire:impossible_modifier_pass_auteur'; |
|
| 387 | - } |
|
| 388 | - } |
|
| 389 | - unset($champs['login']); |
|
| 390 | - unset($champs['pass']); |
|
| 391 | - $flag_ecrire_acces = true; |
|
| 392 | - } |
|
| 393 | - |
|
| 394 | - if (!(is_countable($champs) ? count($champs) : 0)) { |
|
| 395 | - return implode(' ', array_map('_T', $erreurs)); |
|
| 396 | - } |
|
| 397 | - sql_updateq('spip_auteurs', $champs, 'id_auteur=' . $id_auteur); |
|
| 398 | - |
|
| 399 | - // .. mettre a jour les fichiers .htpasswd et .htpasswd-admin |
|
| 400 | - if ( |
|
| 401 | - $flag_ecrire_acces |
|
| 402 | - or isset($champs['statut']) |
|
| 403 | - ) { |
|
| 404 | - include_spip('inc/acces'); |
|
| 405 | - ecrire_acces(); |
|
| 406 | - } |
|
| 407 | - |
|
| 408 | - // Invalider les caches |
|
| 409 | - include_spip('inc/invalideur'); |
|
| 410 | - suivre_invalideur("id='auteur/$id_auteur'"); |
|
| 411 | - |
|
| 412 | - // Pipeline |
|
| 413 | - pipeline( |
|
| 414 | - 'post_edition', |
|
| 415 | - [ |
|
| 416 | - 'args' => [ |
|
| 417 | - 'table' => 'spip_auteurs', |
|
| 418 | - 'id_objet' => $id_auteur, |
|
| 419 | - 'action' => 'instituer', |
|
| 420 | - 'statut_ancien' => $statut_ancien, |
|
| 421 | - ], |
|
| 422 | - 'data' => $champs |
|
| 423 | - ] |
|
| 424 | - ); |
|
| 425 | - |
|
| 426 | - |
|
| 427 | - // Notifications |
|
| 428 | - if ($notifications = charger_fonction('notifications', 'inc')) { |
|
| 429 | - $notifications( |
|
| 430 | - 'instituerauteur', |
|
| 431 | - $id_auteur, |
|
| 432 | - ['statut' => $statut, 'statut_ancien' => $statut_ancien] |
|
| 433 | - ); |
|
| 434 | - } |
|
| 435 | - |
|
| 436 | - return implode(' ', array_map('_T', $erreurs)); |
|
| 302 | + if (!$id_auteur = intval($id_auteur)) { |
|
| 303 | + return false; |
|
| 304 | + } |
|
| 305 | + $erreurs = []; // contiendra les differentes erreurs a traduire par _T() |
|
| 306 | + $champs = []; |
|
| 307 | + |
|
| 308 | + // les memoriser pour les faire passer dans le pipeline pre_edition |
|
| 309 | + if (isset($c['login']) and strlen($c['login'])) { |
|
| 310 | + $champs['login'] = $c['login']; |
|
| 311 | + } |
|
| 312 | + if (isset($c['pass']) and strlen($c['pass'])) { |
|
| 313 | + $champs['pass'] = $c['pass']; |
|
| 314 | + } |
|
| 315 | + |
|
| 316 | + $statut = $statut_ancien = sql_getfetsel('statut', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 317 | + |
|
| 318 | + if ( |
|
| 319 | + isset($c['statut']) |
|
| 320 | + and (autoriser('modifier', 'auteur', $id_auteur, null, ['statut' => $c['statut']])) |
|
| 321 | + ) { |
|
| 322 | + $statut = $champs['statut'] = $c['statut']; |
|
| 323 | + } |
|
| 324 | + |
|
| 325 | + // Restreindre avant de declarer l'auteur |
|
| 326 | + // (section critique sur les droits) |
|
| 327 | + if (isset($c['id_parent']) and $c['id_parent']) { |
|
| 328 | + if (is_array($c['restreintes'])) { |
|
| 329 | + $c['restreintes'][] = $c['id_parent']; |
|
| 330 | + } else { |
|
| 331 | + $c['restreintes'] = [$c['id_parent']]; |
|
| 332 | + } |
|
| 333 | + } |
|
| 334 | + |
|
| 335 | + if ( |
|
| 336 | + isset($c['webmestre']) |
|
| 337 | + and ($force_webmestre or autoriser('modifier', 'auteur', $id_auteur, null, ['webmestre' => '?'])) |
|
| 338 | + ) { |
|
| 339 | + $champs['webmestre'] = $c['webmestre'] == 'oui' ? 'oui' : 'non'; |
|
| 340 | + } |
|
| 341 | + |
|
| 342 | + // si statut change et n'est pas 0minirezo, on force webmestre a non |
|
| 343 | + if (isset($c['statut']) and $c['statut'] !== '0minirezo') { |
|
| 344 | + $champs['webmestre'] = $c['webmestre'] = 'non'; |
|
| 345 | + } |
|
| 346 | + |
|
| 347 | + // Envoyer aux plugins |
|
| 348 | + $champs = pipeline( |
|
| 349 | + 'pre_edition', |
|
| 350 | + [ |
|
| 351 | + 'args' => [ |
|
| 352 | + 'table' => 'spip_auteurs', |
|
| 353 | + 'id_objet' => $id_auteur, |
|
| 354 | + 'action' => 'instituer', |
|
| 355 | + 'statut_ancien' => $statut_ancien, |
|
| 356 | + ], |
|
| 357 | + 'data' => $champs |
|
| 358 | + ] |
|
| 359 | + ); |
|
| 360 | + |
|
| 361 | + if ( |
|
| 362 | + isset($c['restreintes']) and is_array($c['restreintes']) |
|
| 363 | + and autoriser('modifier', 'auteur', $id_auteur, null, ['restreint' => $c['restreintes']]) |
|
| 364 | + ) { |
|
| 365 | + $rubriques = array_map('intval', $c['restreintes']); |
|
| 366 | + $rubriques = array_unique($rubriques); |
|
| 367 | + $rubriques = array_diff($rubriques, [0]); |
|
| 368 | + auteur_dissocier($id_auteur, ['rubrique' => '*']); |
|
| 369 | + auteur_associer($id_auteur, ['rubrique' => $rubriques]); |
|
| 370 | + } |
|
| 371 | + |
|
| 372 | + $flag_ecrire_acces = false; |
|
| 373 | + // commencer par traiter les cas particuliers des logins et pass |
|
| 374 | + // avant les autres ecritures en base |
|
| 375 | + if (isset($champs['login']) or isset($champs['pass'])) { |
|
| 376 | + $auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 377 | + include_spip('inc/auth'); |
|
| 378 | + if (isset($champs['login']) and strlen($champs['login'])) { |
|
| 379 | + if (!auth_modifier_login($auth_methode, $champs['login'], $id_auteur)) { |
|
| 380 | + $erreurs[] = 'ecrire:impossible_modifier_login_auteur'; |
|
| 381 | + } |
|
| 382 | + } |
|
| 383 | + if (isset($champs['pass']) and strlen($champs['pass'])) { |
|
| 384 | + $champs['login'] = sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 385 | + if (!auth_modifier_pass($auth_methode, $champs['login'], $champs['pass'], $id_auteur)) { |
|
| 386 | + $erreurs[] = 'ecrire:impossible_modifier_pass_auteur'; |
|
| 387 | + } |
|
| 388 | + } |
|
| 389 | + unset($champs['login']); |
|
| 390 | + unset($champs['pass']); |
|
| 391 | + $flag_ecrire_acces = true; |
|
| 392 | + } |
|
| 393 | + |
|
| 394 | + if (!(is_countable($champs) ? count($champs) : 0)) { |
|
| 395 | + return implode(' ', array_map('_T', $erreurs)); |
|
| 396 | + } |
|
| 397 | + sql_updateq('spip_auteurs', $champs, 'id_auteur=' . $id_auteur); |
|
| 398 | + |
|
| 399 | + // .. mettre a jour les fichiers .htpasswd et .htpasswd-admin |
|
| 400 | + if ( |
|
| 401 | + $flag_ecrire_acces |
|
| 402 | + or isset($champs['statut']) |
|
| 403 | + ) { |
|
| 404 | + include_spip('inc/acces'); |
|
| 405 | + ecrire_acces(); |
|
| 406 | + } |
|
| 407 | + |
|
| 408 | + // Invalider les caches |
|
| 409 | + include_spip('inc/invalideur'); |
|
| 410 | + suivre_invalideur("id='auteur/$id_auteur'"); |
|
| 411 | + |
|
| 412 | + // Pipeline |
|
| 413 | + pipeline( |
|
| 414 | + 'post_edition', |
|
| 415 | + [ |
|
| 416 | + 'args' => [ |
|
| 417 | + 'table' => 'spip_auteurs', |
|
| 418 | + 'id_objet' => $id_auteur, |
|
| 419 | + 'action' => 'instituer', |
|
| 420 | + 'statut_ancien' => $statut_ancien, |
|
| 421 | + ], |
|
| 422 | + 'data' => $champs |
|
| 423 | + ] |
|
| 424 | + ); |
|
| 425 | + |
|
| 426 | + |
|
| 427 | + // Notifications |
|
| 428 | + if ($notifications = charger_fonction('notifications', 'inc')) { |
|
| 429 | + $notifications( |
|
| 430 | + 'instituerauteur', |
|
| 431 | + $id_auteur, |
|
| 432 | + ['statut' => $statut, 'statut_ancien' => $statut_ancien] |
|
| 433 | + ); |
|
| 434 | + } |
|
| 435 | + |
|
| 436 | + return implode(' ', array_map('_T', $erreurs)); |
|
| 437 | 437 | } |
@@ -7,7 +7,7 @@ discard block |
||
| 7 | 7 | **/ |
| 8 | 8 | |
| 9 | 9 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 10 | - return; |
|
| 10 | + return; |
|
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | /** |
@@ -28,51 +28,51 @@ discard block |
||
| 28 | 28 | * - afficher : tableau des objets à afficher (mais pas forcément sélectionnables) |
| 29 | 29 | */ |
| 30 | 30 | function selecteur_lister_objets($includelist = [], $excludelist = []) { |
| 31 | - static $liste_selecteurs, $liste_parents; |
|
| 32 | - |
|
| 33 | - if (!$liste_selecteurs) { |
|
| 34 | - $liste_selecteurs = find_all_in_path('formulaires/selecteur/', 'hierarchie-[\w]+[.]html$'); |
|
| 35 | - } |
|
| 36 | - $objets_selectionner = []; |
|
| 37 | - foreach ($liste_selecteurs as $fichier => $chemin) { |
|
| 38 | - $objets_selectionner[] = preg_replace('/^hierarchie-([\w]+)[.]html$/', '$1', $fichier); |
|
| 39 | - } |
|
| 40 | - |
|
| 41 | - // S'il y a une whitelist on ne garde que ce qui est dedans |
|
| 42 | - if (!empty($includelist)) { |
|
| 43 | - $includelist = array_map('table_objet', $includelist); |
|
| 44 | - $objets_selectionner = array_intersect($objets_selectionner, $includelist); |
|
| 45 | - } |
|
| 46 | - // On supprime ce qui est dans la liste d’exclusion |
|
| 47 | - $excludelist = array_map('table_objet', $excludelist); |
|
| 48 | - // On enlève toujours la racine |
|
| 49 | - $excludelist[] = 'racine'; |
|
| 50 | - $objets_selectionner = array_diff($objets_selectionner, $excludelist); |
|
| 51 | - |
|
| 52 | - // Ensuite on cherche ce qu'on doit afficher : au moins ceux qu'on peut sélectionner |
|
| 53 | - $objets_afficher = $objets_selectionner; |
|
| 54 | - |
|
| 55 | - // Il faut alors chercher d'éventuels parents obligatoires en plus : |
|
| 56 | - // lister-trucs-bidules.html => on doit afficher des "trucs" pour trouver des "bidules" |
|
| 57 | - if (!$liste_parents) { |
|
| 58 | - $liste_parents = find_all_in_path('formulaires/selecteur/', 'lister-[\w]+-[\w]+[.]html$'); |
|
| 59 | - } |
|
| 60 | - foreach ($liste_parents as $fichier => $chemin) { |
|
| 61 | - preg_match('/^lister-([\w]+)-([\w]+)[.]html$/', $fichier, $captures); |
|
| 62 | - $parent = $captures[1]; |
|
| 63 | - $type = $captures[2]; |
|
| 64 | - // Si le type fait partie de ce qu'on doit afficher alors on ajoute aussi le parent à l'affichage |
|
| 65 | - if (in_array($type, $objets_afficher)) { |
|
| 66 | - $objets_afficher[] = $parent; |
|
| 67 | - } |
|
| 68 | - } |
|
| 69 | - |
|
| 70 | - $objets = [ |
|
| 71 | - 'selectionner' => array_unique($objets_selectionner), |
|
| 72 | - 'afficher' => array_unique($objets_afficher), |
|
| 73 | - ]; |
|
| 74 | - |
|
| 75 | - return $objets; |
|
| 31 | + static $liste_selecteurs, $liste_parents; |
|
| 32 | + |
|
| 33 | + if (!$liste_selecteurs) { |
|
| 34 | + $liste_selecteurs = find_all_in_path('formulaires/selecteur/', 'hierarchie-[\w]+[.]html$'); |
|
| 35 | + } |
|
| 36 | + $objets_selectionner = []; |
|
| 37 | + foreach ($liste_selecteurs as $fichier => $chemin) { |
|
| 38 | + $objets_selectionner[] = preg_replace('/^hierarchie-([\w]+)[.]html$/', '$1', $fichier); |
|
| 39 | + } |
|
| 40 | + |
|
| 41 | + // S'il y a une whitelist on ne garde que ce qui est dedans |
|
| 42 | + if (!empty($includelist)) { |
|
| 43 | + $includelist = array_map('table_objet', $includelist); |
|
| 44 | + $objets_selectionner = array_intersect($objets_selectionner, $includelist); |
|
| 45 | + } |
|
| 46 | + // On supprime ce qui est dans la liste d’exclusion |
|
| 47 | + $excludelist = array_map('table_objet', $excludelist); |
|
| 48 | + // On enlève toujours la racine |
|
| 49 | + $excludelist[] = 'racine'; |
|
| 50 | + $objets_selectionner = array_diff($objets_selectionner, $excludelist); |
|
| 51 | + |
|
| 52 | + // Ensuite on cherche ce qu'on doit afficher : au moins ceux qu'on peut sélectionner |
|
| 53 | + $objets_afficher = $objets_selectionner; |
|
| 54 | + |
|
| 55 | + // Il faut alors chercher d'éventuels parents obligatoires en plus : |
|
| 56 | + // lister-trucs-bidules.html => on doit afficher des "trucs" pour trouver des "bidules" |
|
| 57 | + if (!$liste_parents) { |
|
| 58 | + $liste_parents = find_all_in_path('formulaires/selecteur/', 'lister-[\w]+-[\w]+[.]html$'); |
|
| 59 | + } |
|
| 60 | + foreach ($liste_parents as $fichier => $chemin) { |
|
| 61 | + preg_match('/^lister-([\w]+)-([\w]+)[.]html$/', $fichier, $captures); |
|
| 62 | + $parent = $captures[1]; |
|
| 63 | + $type = $captures[2]; |
|
| 64 | + // Si le type fait partie de ce qu'on doit afficher alors on ajoute aussi le parent à l'affichage |
|
| 65 | + if (in_array($type, $objets_afficher)) { |
|
| 66 | + $objets_afficher[] = $parent; |
|
| 67 | + } |
|
| 68 | + } |
|
| 69 | + |
|
| 70 | + $objets = [ |
|
| 71 | + 'selectionner' => array_unique($objets_selectionner), |
|
| 72 | + 'afficher' => array_unique($objets_afficher), |
|
| 73 | + ]; |
|
| 74 | + |
|
| 75 | + return $objets; |
|
| 76 | 76 | } |
| 77 | 77 | |
| 78 | 78 | /** |
@@ -99,31 +99,31 @@ discard block |
||
| 99 | 99 | * liste des couples (objets => id_objet) ou liste des identifiants d'un type d'objet. |
| 100 | 100 | **/ |
| 101 | 101 | function picker_selected($selected, $type = '') { |
| 102 | - $select = []; |
|
| 103 | - $type = preg_replace(',\W,', '', $type); |
|
| 104 | - |
|
| 105 | - if ($selected and !is_array($selected)) { |
|
| 106 | - $selected = explode(',', $selected); |
|
| 107 | - } |
|
| 108 | - |
|
| 109 | - if (is_array($selected)) { |
|
| 110 | - foreach ($selected as $value) { |
|
| 111 | - // Si c'est le bon format déjà |
|
| 112 | - if (preg_match('/^([\w]+)[|]([0-9]+)$/', $value, $captures)) { |
|
| 113 | - $objet = $captures[1]; |
|
| 114 | - $id_objet = intval($captures[2]); |
|
| 115 | - |
|
| 116 | - // Si on cherche un type et que c'est le bon, on renvoit un tableau que d'identifiants |
|
| 117 | - if (is_string($type) and $type == $objet and ($id_objet or in_array($objet, ['racine', 'rubrique']))) { |
|
| 118 | - $select[] = $id_objet; |
|
| 119 | - } elseif (!$type and ($id_objet or in_array($objet, ['racine', 'rubrique']))) { |
|
| 120 | - $select[] = ['objet' => $objet, 'id_objet' => $id_objet]; |
|
| 121 | - } |
|
| 122 | - } |
|
| 123 | - } |
|
| 124 | - } |
|
| 125 | - |
|
| 126 | - return $select; |
|
| 102 | + $select = []; |
|
| 103 | + $type = preg_replace(',\W,', '', $type); |
|
| 104 | + |
|
| 105 | + if ($selected and !is_array($selected)) { |
|
| 106 | + $selected = explode(',', $selected); |
|
| 107 | + } |
|
| 108 | + |
|
| 109 | + if (is_array($selected)) { |
|
| 110 | + foreach ($selected as $value) { |
|
| 111 | + // Si c'est le bon format déjà |
|
| 112 | + if (preg_match('/^([\w]+)[|]([0-9]+)$/', $value, $captures)) { |
|
| 113 | + $objet = $captures[1]; |
|
| 114 | + $id_objet = intval($captures[2]); |
|
| 115 | + |
|
| 116 | + // Si on cherche un type et que c'est le bon, on renvoit un tableau que d'identifiants |
|
| 117 | + if (is_string($type) and $type == $objet and ($id_objet or in_array($objet, ['racine', 'rubrique']))) { |
|
| 118 | + $select[] = $id_objet; |
|
| 119 | + } elseif (!$type and ($id_objet or in_array($objet, ['racine', 'rubrique']))) { |
|
| 120 | + $select[] = ['objet' => $objet, 'id_objet' => $id_objet]; |
|
| 121 | + } |
|
| 122 | + } |
|
| 123 | + } |
|
| 124 | + } |
|
| 125 | + |
|
| 126 | + return $select; |
|
| 127 | 127 | } |
| 128 | 128 | |
| 129 | 129 | /** |
@@ -140,49 +140,49 @@ discard block |
||
| 140 | 140 | * Booléen indiquant si les articles sont sélectionnables |
| 141 | 141 | */ |
| 142 | 142 | function picker_identifie_id_rapide($ref, $rubriques_ou_objets = false, $articles = false) { |
| 143 | - include_spip('inc/json'); |
|
| 144 | - include_spip('inc/lien'); |
|
| 145 | - |
|
| 146 | - // On construit un tableau des objets sélectionnables suivant les paramètres |
|
| 147 | - $objets = []; |
|
| 148 | - if ($rubriques_ou_objets and is_array($rubriques_ou_objets)) { |
|
| 149 | - $objets = $rubriques_ou_objets; |
|
| 150 | - } else { |
|
| 151 | - if ($rubriques_ou_objets) { |
|
| 152 | - $objets[] = 'rubriques'; |
|
| 153 | - } |
|
| 154 | - if ($articles) { |
|
| 155 | - $objets[] = 'articles'; |
|
| 156 | - } |
|
| 157 | - } |
|
| 158 | - |
|
| 159 | - // si id numerique et un seul objet possible, pas d'ambiguite |
|
| 160 | - if (is_numeric($ref) and count($objets) === 1) { |
|
| 161 | - $ref = reset($objets) . $ref; |
|
| 162 | - } |
|
| 163 | - |
|
| 164 | - // Si la référence ne correspond à rien, c'est fini |
|
| 165 | - if (!($match = typer_raccourci($ref))) { |
|
| 166 | - return json_export(false); |
|
| 167 | - } |
|
| 168 | - // Sinon on récupère les infos utiles |
|
| 169 | - [$type, , $id, , , , ] = array_pad($match, 7, null); |
|
| 170 | - |
|
| 171 | - // On regarde si le type trouvé fait partie des objets sélectionnables |
|
| 172 | - if (!in_array(table_objet($type), $objets)) { |
|
| 173 | - return json_export(false); |
|
| 174 | - } |
|
| 175 | - |
|
| 176 | - // Maintenant que tout est bon, on cherche les informations sur cet objet |
|
| 177 | - include_spip('inc/filtres'); |
|
| 178 | - if (!$titre = generer_objet_info($id, $type, 'titre')) { |
|
| 179 | - return json_export(false); |
|
| 180 | - } |
|
| 181 | - |
|
| 182 | - // On simplifie le texte |
|
| 183 | - $titre = attribut_html($titre); |
|
| 184 | - |
|
| 185 | - return json_export(['type' => $type, 'id' => "$type|$id", 'titre' => $titre]); |
|
| 143 | + include_spip('inc/json'); |
|
| 144 | + include_spip('inc/lien'); |
|
| 145 | + |
|
| 146 | + // On construit un tableau des objets sélectionnables suivant les paramètres |
|
| 147 | + $objets = []; |
|
| 148 | + if ($rubriques_ou_objets and is_array($rubriques_ou_objets)) { |
|
| 149 | + $objets = $rubriques_ou_objets; |
|
| 150 | + } else { |
|
| 151 | + if ($rubriques_ou_objets) { |
|
| 152 | + $objets[] = 'rubriques'; |
|
| 153 | + } |
|
| 154 | + if ($articles) { |
|
| 155 | + $objets[] = 'articles'; |
|
| 156 | + } |
|
| 157 | + } |
|
| 158 | + |
|
| 159 | + // si id numerique et un seul objet possible, pas d'ambiguite |
|
| 160 | + if (is_numeric($ref) and count($objets) === 1) { |
|
| 161 | + $ref = reset($objets) . $ref; |
|
| 162 | + } |
|
| 163 | + |
|
| 164 | + // Si la référence ne correspond à rien, c'est fini |
|
| 165 | + if (!($match = typer_raccourci($ref))) { |
|
| 166 | + return json_export(false); |
|
| 167 | + } |
|
| 168 | + // Sinon on récupère les infos utiles |
|
| 169 | + [$type, , $id, , , , ] = array_pad($match, 7, null); |
|
| 170 | + |
|
| 171 | + // On regarde si le type trouvé fait partie des objets sélectionnables |
|
| 172 | + if (!in_array(table_objet($type), $objets)) { |
|
| 173 | + return json_export(false); |
|
| 174 | + } |
|
| 175 | + |
|
| 176 | + // Maintenant que tout est bon, on cherche les informations sur cet objet |
|
| 177 | + include_spip('inc/filtres'); |
|
| 178 | + if (!$titre = generer_objet_info($id, $type, 'titre')) { |
|
| 179 | + return json_export(false); |
|
| 180 | + } |
|
| 181 | + |
|
| 182 | + // On simplifie le texte |
|
| 183 | + $titre = attribut_html($titre); |
|
| 184 | + |
|
| 185 | + return json_export(['type' => $type, 'id' => "$type|$id", 'titre' => $titre]); |
|
| 186 | 186 | } |
| 187 | 187 | |
| 188 | 188 | /** |
@@ -205,34 +205,34 @@ discard block |
||
| 205 | 205 | * Comme le filtre `oui` : espace (` `) si rubrique à afficher, chaîne vide sinon. |
| 206 | 206 | */ |
| 207 | 207 | function test_enfants_rubrique($id_rubrique, $types = []) { |
| 208 | - static $has_child = []; |
|
| 209 | - |
|
| 210 | - if (!isset($has_child[$id_rubrique])) { |
|
| 211 | - $types = (is_array($types) ? array_filter($types) : []); |
|
| 212 | - |
|
| 213 | - // recuperer tous les freres et soeurs de la rubrique visee |
|
| 214 | - $id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 215 | - $fratrie = sql_allfetsel('id_rubrique', 'spip_rubriques', 'id_parent=' . intval($id_parent)); |
|
| 216 | - $fratrie = array_column($fratrie, 'id_rubrique'); |
|
| 217 | - $has = sql_allfetsel('DISTINCT id_parent', 'spip_rubriques', sql_in('id_parent', $fratrie)); |
|
| 218 | - $has = array_column($has, 'id_parent'); |
|
| 219 | - $fratrie = array_diff($fratrie, $has); |
|
| 220 | - |
|
| 221 | - while (count($fratrie) and is_array($types) and count($types)) { |
|
| 222 | - $type = array_shift($types); |
|
| 223 | - $h = sql_allfetsel('DISTINCT id_rubrique', table_objet_sql($type), sql_in('id_rubrique', $fratrie)); |
|
| 224 | - $h = array_column($h, 'id_rubrique'); |
|
| 225 | - $has = array_merge($has, $h); |
|
| 226 | - $fratrie = array_diff($fratrie, $h); |
|
| 227 | - } |
|
| 228 | - |
|
| 229 | - if (count($has)) { |
|
| 230 | - $has_child = $has_child + array_combine($has, array_pad([], count($has), true)); |
|
| 231 | - } |
|
| 232 | - if (count($fratrie)) { |
|
| 233 | - $has_child = $has_child + array_combine($fratrie, array_pad([], count($fratrie), false)); |
|
| 234 | - } |
|
| 235 | - } |
|
| 236 | - |
|
| 237 | - return $has_child[$id_rubrique] ? ' ' : ''; |
|
| 208 | + static $has_child = []; |
|
| 209 | + |
|
| 210 | + if (!isset($has_child[$id_rubrique])) { |
|
| 211 | + $types = (is_array($types) ? array_filter($types) : []); |
|
| 212 | + |
|
| 213 | + // recuperer tous les freres et soeurs de la rubrique visee |
|
| 214 | + $id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 215 | + $fratrie = sql_allfetsel('id_rubrique', 'spip_rubriques', 'id_parent=' . intval($id_parent)); |
|
| 216 | + $fratrie = array_column($fratrie, 'id_rubrique'); |
|
| 217 | + $has = sql_allfetsel('DISTINCT id_parent', 'spip_rubriques', sql_in('id_parent', $fratrie)); |
|
| 218 | + $has = array_column($has, 'id_parent'); |
|
| 219 | + $fratrie = array_diff($fratrie, $has); |
|
| 220 | + |
|
| 221 | + while (count($fratrie) and is_array($types) and count($types)) { |
|
| 222 | + $type = array_shift($types); |
|
| 223 | + $h = sql_allfetsel('DISTINCT id_rubrique', table_objet_sql($type), sql_in('id_rubrique', $fratrie)); |
|
| 224 | + $h = array_column($h, 'id_rubrique'); |
|
| 225 | + $has = array_merge($has, $h); |
|
| 226 | + $fratrie = array_diff($fratrie, $h); |
|
| 227 | + } |
|
| 228 | + |
|
| 229 | + if (count($has)) { |
|
| 230 | + $has_child = $has_child + array_combine($has, array_pad([], count($has), true)); |
|
| 231 | + } |
|
| 232 | + if (count($fratrie)) { |
|
| 233 | + $has_child = $has_child + array_combine($fratrie, array_pad([], count($fratrie), false)); |
|
| 234 | + } |
|
| 235 | + } |
|
| 236 | + |
|
| 237 | + return $has_child[$id_rubrique] ? ' ' : ''; |
|
| 238 | 238 | } |