@@ -28,7 +28,7 @@ discard block |
||
| 28 | 28 | **/ |
| 29 | 29 | |
| 30 | 30 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 31 | - return; |
|
| 31 | + return; |
|
| 32 | 32 | } |
| 33 | 33 | |
| 34 | 34 | /** |
@@ -50,16 +50,16 @@ discard block |
||
| 50 | 50 | * Code PHP si cet argument est présent, sinon null |
| 51 | 51 | **/ |
| 52 | 52 | function interprete_argument_balise(int $n, Champ $p): ?string { |
| 53 | - if (($p->param) && (!$p->param[0][0]) && ((is_countable($p->param[0]) ? count($p->param[0]) : 0) > $n)) { |
|
| 54 | - return calculer_liste( |
|
| 55 | - $p->param[0][$n], |
|
| 56 | - $p->descr, |
|
| 57 | - $p->boucles, |
|
| 58 | - $p->id_boucle |
|
| 59 | - ); |
|
| 60 | - } else { |
|
| 61 | - return null; |
|
| 62 | - } |
|
| 53 | + if (($p->param) && (!$p->param[0][0]) && ((is_countable($p->param[0]) ? count($p->param[0]) : 0) > $n)) { |
|
| 54 | + return calculer_liste( |
|
| 55 | + $p->param[0][$n], |
|
| 56 | + $p->descr, |
|
| 57 | + $p->boucles, |
|
| 58 | + $p->id_boucle |
|
| 59 | + ); |
|
| 60 | + } else { |
|
| 61 | + return null; |
|
| 62 | + } |
|
| 63 | 63 | } |
| 64 | 64 | |
| 65 | 65 | |
@@ -79,10 +79,10 @@ discard block |
||
| 79 | 79 | * Pile complétée par le code à générer |
| 80 | 80 | **/ |
| 81 | 81 | function balise_NOM_SITE_SPIP_dist($p) { |
| 82 | - $p->code = "\$GLOBALS['meta']['nom_site']"; |
|
| 82 | + $p->code = "\$GLOBALS['meta']['nom_site']"; |
|
| 83 | 83 | |
| 84 | - #$p->interdire_scripts = true; |
|
| 85 | - return $p; |
|
| 84 | + #$p->interdire_scripts = true; |
|
| 85 | + return $p; |
|
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | /** |
@@ -98,10 +98,10 @@ discard block |
||
| 98 | 98 | * Pile complétée par le code à générer |
| 99 | 99 | **/ |
| 100 | 100 | function balise_EMAIL_WEBMASTER_dist($p) { |
| 101 | - $p->code = "\$GLOBALS['meta']['email_webmaster']"; |
|
| 101 | + $p->code = "\$GLOBALS['meta']['email_webmaster']"; |
|
| 102 | 102 | |
| 103 | - #$p->interdire_scripts = true; |
|
| 104 | - return $p; |
|
| 103 | + #$p->interdire_scripts = true; |
|
| 104 | + return $p; |
|
| 105 | 105 | } |
| 106 | 106 | |
| 107 | 107 | /** |
@@ -117,10 +117,10 @@ discard block |
||
| 117 | 117 | * Pile complétée par le code à générer |
| 118 | 118 | **/ |
| 119 | 119 | function balise_DESCRIPTIF_SITE_SPIP_dist($p) { |
| 120 | - $p->code = "\$GLOBALS['meta']['descriptif_site']"; |
|
| 120 | + $p->code = "\$GLOBALS['meta']['descriptif_site']"; |
|
| 121 | 121 | |
| 122 | - #$p->interdire_scripts = true; |
|
| 123 | - return $p; |
|
| 122 | + #$p->interdire_scripts = true; |
|
| 123 | + return $p; |
|
| 124 | 124 | } |
| 125 | 125 | |
| 126 | 126 | |
@@ -141,10 +141,10 @@ discard block |
||
| 141 | 141 | * Pile complétée par le code à générer |
| 142 | 142 | **/ |
| 143 | 143 | function balise_CHARSET_dist($p) { |
| 144 | - $p->code = "\$GLOBALS['meta']['charset']"; |
|
| 144 | + $p->code = "\$GLOBALS['meta']['charset']"; |
|
| 145 | 145 | |
| 146 | - #$p->interdire_scripts = true; |
|
| 147 | - return $p; |
|
| 146 | + #$p->interdire_scripts = true; |
|
| 147 | + return $p; |
|
| 148 | 148 | } |
| 149 | 149 | |
| 150 | 150 | /** |
@@ -169,11 +169,11 @@ discard block |
||
| 169 | 169 | * Pile complétée par le code à générer |
| 170 | 170 | **/ |
| 171 | 171 | function balise_LANG_LEFT_dist($p) { |
| 172 | - $_lang = champ_sql('lang', $p); |
|
| 173 | - $p->code = "lang_dir($_lang, 'left','right')"; |
|
| 174 | - $p->interdire_scripts = false; |
|
| 172 | + $_lang = champ_sql('lang', $p); |
|
| 173 | + $p->code = "lang_dir($_lang, 'left','right')"; |
|
| 174 | + $p->interdire_scripts = false; |
|
| 175 | 175 | |
| 176 | - return $p; |
|
| 176 | + return $p; |
|
| 177 | 177 | } |
| 178 | 178 | |
| 179 | 179 | /** |
@@ -193,11 +193,11 @@ discard block |
||
| 193 | 193 | * Pile complétée par le code à générer |
| 194 | 194 | **/ |
| 195 | 195 | function balise_LANG_RIGHT_dist($p) { |
| 196 | - $_lang = champ_sql('lang', $p); |
|
| 197 | - $p->code = "lang_dir($_lang, 'right','left')"; |
|
| 198 | - $p->interdire_scripts = false; |
|
| 196 | + $_lang = champ_sql('lang', $p); |
|
| 197 | + $p->code = "lang_dir($_lang, 'right','left')"; |
|
| 198 | + $p->interdire_scripts = false; |
|
| 199 | 199 | |
| 200 | - return $p; |
|
| 200 | + return $p; |
|
| 201 | 201 | } |
| 202 | 202 | |
| 203 | 203 | /** |
@@ -222,11 +222,11 @@ discard block |
||
| 222 | 222 | * Pile complétée par le code à générer |
| 223 | 223 | **/ |
| 224 | 224 | function balise_LANG_DIR_dist($p) { |
| 225 | - $_lang = champ_sql('lang', $p); |
|
| 226 | - $p->code = "lang_dir($_lang, 'ltr','rtl')"; |
|
| 227 | - $p->interdire_scripts = false; |
|
| 225 | + $_lang = champ_sql('lang', $p); |
|
| 226 | + $p->code = "lang_dir($_lang, 'ltr','rtl')"; |
|
| 227 | + $p->interdire_scripts = false; |
|
| 228 | 228 | |
| 229 | - return $p; |
|
| 229 | + return $p; |
|
| 230 | 230 | } |
| 231 | 231 | |
| 232 | 232 | |
@@ -243,10 +243,10 @@ discard block |
||
| 243 | 243 | * Pile complétée par le code à générer |
| 244 | 244 | **/ |
| 245 | 245 | function balise_PUCE_dist($p) { |
| 246 | - $p->code = 'definir_puce()'; |
|
| 247 | - $p->interdire_scripts = false; |
|
| 246 | + $p->code = 'definir_puce()'; |
|
| 247 | + $p->interdire_scripts = false; |
|
| 248 | 248 | |
| 249 | - return $p; |
|
| 249 | + return $p; |
|
| 250 | 250 | } |
| 251 | 251 | |
| 252 | 252 | |
@@ -270,9 +270,9 @@ discard block |
||
| 270 | 270 | * Pile completée du code PHP d'exécution de la balise |
| 271 | 271 | */ |
| 272 | 272 | function balise_DATE_dist($p) { |
| 273 | - $p->code = champ_sql('date', $p); |
|
| 273 | + $p->code = champ_sql('date', $p); |
|
| 274 | 274 | |
| 275 | - return $p; |
|
| 275 | + return $p; |
|
| 276 | 276 | } |
| 277 | 277 | |
| 278 | 278 | |
@@ -292,10 +292,10 @@ discard block |
||
| 292 | 292 | * Pile completée du code PHP d'exécution de la balise |
| 293 | 293 | */ |
| 294 | 294 | function balise_DATE_REDAC_dist($p) { |
| 295 | - $p->code = champ_sql('date_redac', $p); |
|
| 296 | - $p->interdire_scripts = false; |
|
| 295 | + $p->code = champ_sql('date_redac', $p); |
|
| 296 | + $p->interdire_scripts = false; |
|
| 297 | 297 | |
| 298 | - return $p; |
|
| 298 | + return $p; |
|
| 299 | 299 | } |
| 300 | 300 | |
| 301 | 301 | /** |
@@ -314,10 +314,10 @@ discard block |
||
| 314 | 314 | * Pile completée du code PHP d'exécution de la balise |
| 315 | 315 | */ |
| 316 | 316 | function balise_DATE_MODIF_dist($p) { |
| 317 | - $p->code = champ_sql('date_modif', $p); |
|
| 318 | - $p->interdire_scripts = false; |
|
| 317 | + $p->code = champ_sql('date_modif', $p); |
|
| 318 | + $p->interdire_scripts = false; |
|
| 319 | 319 | |
| 320 | - return $p; |
|
| 320 | + return $p; |
|
| 321 | 321 | } |
| 322 | 322 | |
| 323 | 323 | /** |
@@ -335,13 +335,13 @@ discard block |
||
| 335 | 335 | * Pile completée du code PHP d'exécution de la balise |
| 336 | 336 | */ |
| 337 | 337 | function balise_DATE_NOUVEAUTES_dist($p) { |
| 338 | - $p->code = "((\$GLOBALS['meta']['quoi_de_neuf'] == 'oui' |
|
| 338 | + $p->code = "((\$GLOBALS['meta']['quoi_de_neuf'] == 'oui' |
|
| 339 | 339 | AND isset(\$GLOBALS['meta']['dernier_envoi_neuf'])) ? |
| 340 | 340 | \$GLOBALS['meta']['dernier_envoi_neuf'] : |
| 341 | 341 | \"'0000-00-00'\")"; |
| 342 | - $p->interdire_scripts = false; |
|
| 342 | + $p->interdire_scripts = false; |
|
| 343 | 343 | |
| 344 | - return $p; |
|
| 344 | + return $p; |
|
| 345 | 345 | } |
| 346 | 346 | |
| 347 | 347 | |
@@ -359,11 +359,11 @@ discard block |
||
| 359 | 359 | * Pile completée du code PHP d'exécution de la balise |
| 360 | 360 | */ |
| 361 | 361 | function balise_DOSSIER_SQUELETTE_dist($p) { |
| 362 | - $code = substr(addslashes(dirname($p->descr['sourcefile'])), strlen(_DIR_RACINE)); |
|
| 363 | - $p->code = "_DIR_RACINE . '$code'" . |
|
| 364 | - $p->interdire_scripts = false; |
|
| 362 | + $code = substr(addslashes(dirname($p->descr['sourcefile'])), strlen(_DIR_RACINE)); |
|
| 363 | + $p->code = "_DIR_RACINE . '$code'" . |
|
| 364 | + $p->interdire_scripts = false; |
|
| 365 | 365 | |
| 366 | - return $p; |
|
| 366 | + return $p; |
|
| 367 | 367 | } |
| 368 | 368 | |
| 369 | 369 | /** |
@@ -378,11 +378,11 @@ discard block |
||
| 378 | 378 | * Pile completée du code PHP d'exécution de la balise |
| 379 | 379 | */ |
| 380 | 380 | function balise_SQUELETTE_dist($p) { |
| 381 | - $code = addslashes($p->descr['sourcefile']); |
|
| 382 | - $p->code = "'$code'" . |
|
| 383 | - $p->interdire_scripts = false; |
|
| 381 | + $code = addslashes($p->descr['sourcefile']); |
|
| 382 | + $p->code = "'$code'" . |
|
| 383 | + $p->interdire_scripts = false; |
|
| 384 | 384 | |
| 385 | - return $p; |
|
| 385 | + return $p; |
|
| 386 | 386 | } |
| 387 | 387 | |
| 388 | 388 | /** |
@@ -401,10 +401,10 @@ discard block |
||
| 401 | 401 | * Pile completée du code PHP d'exécution de la balise |
| 402 | 402 | */ |
| 403 | 403 | function balise_SPIP_VERSION_dist($p) { |
| 404 | - $p->code = 'spip_version()'; |
|
| 405 | - $p->interdire_scripts = false; |
|
| 404 | + $p->code = 'spip_version()'; |
|
| 405 | + $p->interdire_scripts = false; |
|
| 406 | 406 | |
| 407 | - return $p; |
|
| 407 | + return $p; |
|
| 408 | 408 | } |
| 409 | 409 | |
| 410 | 410 | |
@@ -430,18 +430,18 @@ discard block |
||
| 430 | 430 | * Pile complétée par le code à générer |
| 431 | 431 | **/ |
| 432 | 432 | function balise_NOM_SITE_dist($p) { |
| 433 | - if (!$p->etoile) { |
|
| 434 | - $p->code = 'supprimer_numero(calculer_url(' . |
|
| 435 | - champ_sql('url_site', $p) . ',' . |
|
| 436 | - champ_sql('nom_site', $p) . |
|
| 437 | - ", 'titre', \$connect, false))"; |
|
| 438 | - } else { |
|
| 439 | - $p->code = champ_sql('nom_site', $p); |
|
| 440 | - } |
|
| 433 | + if (!$p->etoile) { |
|
| 434 | + $p->code = 'supprimer_numero(calculer_url(' . |
|
| 435 | + champ_sql('url_site', $p) . ',' . |
|
| 436 | + champ_sql('nom_site', $p) . |
|
| 437 | + ", 'titre', \$connect, false))"; |
|
| 438 | + } else { |
|
| 439 | + $p->code = champ_sql('nom_site', $p); |
|
| 440 | + } |
|
| 441 | 441 | |
| 442 | - $p->interdire_scripts = true; |
|
| 442 | + $p->interdire_scripts = true; |
|
| 443 | 443 | |
| 444 | - return $p; |
|
| 444 | + return $p; |
|
| 445 | 445 | } |
| 446 | 446 | |
| 447 | 447 | |
@@ -458,11 +458,11 @@ discard block |
||
| 458 | 458 | * Pile complétée par le code à générer |
| 459 | 459 | **/ |
| 460 | 460 | function balise_NOTES_dist($p) { |
| 461 | - // Recuperer les notes |
|
| 462 | - $p->code = 'calculer_notes()'; |
|
| 461 | + // Recuperer les notes |
|
| 462 | + $p->code = 'calculer_notes()'; |
|
| 463 | 463 | |
| 464 | - #$p->interdire_scripts = true; |
|
| 465 | - return $p; |
|
| 464 | + #$p->interdire_scripts = true; |
|
| 465 | + return $p; |
|
| 466 | 466 | } |
| 467 | 467 | |
| 468 | 468 | |
@@ -484,10 +484,10 @@ discard block |
||
| 484 | 484 | * Pile complétée par le code à générer |
| 485 | 485 | **/ |
| 486 | 486 | function balise_RECHERCHE_dist($p) { |
| 487 | - $p->code = 'entites_html(_request("recherche"))'; |
|
| 488 | - $p->interdire_scripts = false; |
|
| 487 | + $p->code = 'entites_html(_request("recherche"))'; |
|
| 488 | + $p->interdire_scripts = false; |
|
| 489 | 489 | |
| 490 | - return $p; |
|
| 490 | + return $p; |
|
| 491 | 491 | } |
| 492 | 492 | |
| 493 | 493 | |
@@ -505,18 +505,18 @@ discard block |
||
| 505 | 505 | * Pile complétée par le code à générer |
| 506 | 506 | **/ |
| 507 | 507 | function balise_COMPTEUR_BOUCLE_dist($p) { |
| 508 | - $b = index_boucle_mere($p); |
|
| 509 | - if ($b === '') { |
|
| 510 | - $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 511 | - erreur_squelette($msg, $p); |
|
| 512 | - return null; |
|
| 513 | - } else { |
|
| 514 | - $p->code = "(\$Numrows['$b']['compteur_boucle'] ?? 0)"; |
|
| 515 | - $p->boucles[$b]->cptrows = true; |
|
| 516 | - $p->interdire_scripts = false; |
|
| 508 | + $b = index_boucle_mere($p); |
|
| 509 | + if ($b === '') { |
|
| 510 | + $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 511 | + erreur_squelette($msg, $p); |
|
| 512 | + return null; |
|
| 513 | + } else { |
|
| 514 | + $p->code = "(\$Numrows['$b']['compteur_boucle'] ?? 0)"; |
|
| 515 | + $p->boucles[$b]->cptrows = true; |
|
| 516 | + $p->interdire_scripts = false; |
|
| 517 | 517 | |
| 518 | - return $p; |
|
| 519 | - } |
|
| 518 | + return $p; |
|
| 519 | + } |
|
| 520 | 520 | } |
| 521 | 521 | |
| 522 | 522 | /** |
@@ -534,17 +534,17 @@ discard block |
||
| 534 | 534 | * Pile complétée par le code à générer |
| 535 | 535 | **/ |
| 536 | 536 | function balise_TOTAL_BOUCLE_dist($p) { |
| 537 | - $b = index_boucle_mere($p); |
|
| 538 | - if ($b === '') { |
|
| 539 | - $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 540 | - erreur_squelette($msg, $p); |
|
| 541 | - } else { |
|
| 542 | - $p->code = "(\$Numrows['$b']['total'] ?? 0)"; |
|
| 543 | - $p->boucles[$b]->numrows = true; |
|
| 544 | - $p->interdire_scripts = false; |
|
| 545 | - } |
|
| 537 | + $b = index_boucle_mere($p); |
|
| 538 | + if ($b === '') { |
|
| 539 | + $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 540 | + erreur_squelette($msg, $p); |
|
| 541 | + } else { |
|
| 542 | + $p->code = "(\$Numrows['$b']['total'] ?? 0)"; |
|
| 543 | + $p->boucles[$b]->numrows = true; |
|
| 544 | + $p->interdire_scripts = false; |
|
| 545 | + } |
|
| 546 | 546 | |
| 547 | - return $p; |
|
| 547 | + return $p; |
|
| 548 | 548 | } |
| 549 | 549 | |
| 550 | 550 | |
@@ -564,7 +564,7 @@ discard block |
||
| 564 | 564 | * Pile complétée par le code à générer |
| 565 | 565 | **/ |
| 566 | 566 | function balise_POINTS_dist($p) { |
| 567 | - return rindex_pile($p, 'points', 'recherche'); |
|
| 567 | + return rindex_pile($p, 'points', 'recherche'); |
|
| 568 | 568 | } |
| 569 | 569 | |
| 570 | 570 | |
@@ -585,12 +585,12 @@ discard block |
||
| 585 | 585 | * Pile complétée par le code à générer |
| 586 | 586 | **/ |
| 587 | 587 | function balise_POPULARITE_ABSOLUE_dist($p) { |
| 588 | - $p->code = 'ceil(' . |
|
| 589 | - champ_sql('popularite', $p) . |
|
| 590 | - ')'; |
|
| 591 | - $p->interdire_scripts = false; |
|
| 588 | + $p->code = 'ceil(' . |
|
| 589 | + champ_sql('popularite', $p) . |
|
| 590 | + ')'; |
|
| 591 | + $p->interdire_scripts = false; |
|
| 592 | 592 | |
| 593 | - return $p; |
|
| 593 | + return $p; |
|
| 594 | 594 | } |
| 595 | 595 | |
| 596 | 596 | /** |
@@ -610,10 +610,10 @@ discard block |
||
| 610 | 610 | * Pile complétée par le code à générer |
| 611 | 611 | **/ |
| 612 | 612 | function balise_POPULARITE_SITE_dist($p) { |
| 613 | - $p->code = 'ceil($GLOBALS["meta"][\'popularite_total\'])'; |
|
| 614 | - $p->interdire_scripts = false; |
|
| 613 | + $p->code = 'ceil($GLOBALS["meta"][\'popularite_total\'])'; |
|
| 614 | + $p->interdire_scripts = false; |
|
| 615 | 615 | |
| 616 | - return $p; |
|
| 616 | + return $p; |
|
| 617 | 617 | } |
| 618 | 618 | |
| 619 | 619 | /** |
@@ -634,10 +634,10 @@ discard block |
||
| 634 | 634 | * Pile complétée par le code à générer |
| 635 | 635 | **/ |
| 636 | 636 | function balise_POPULARITE_MAX_dist($p) { |
| 637 | - $p->code = 'ceil($GLOBALS["meta"][\'popularite_max\'])'; |
|
| 638 | - $p->interdire_scripts = false; |
|
| 637 | + $p->code = 'ceil($GLOBALS["meta"][\'popularite_max\'])'; |
|
| 638 | + $p->interdire_scripts = false; |
|
| 639 | 639 | |
| 640 | - return $p; |
|
| 640 | + return $p; |
|
| 641 | 641 | } |
| 642 | 642 | |
| 643 | 643 | |
@@ -663,15 +663,15 @@ discard block |
||
| 663 | 663 | * Pile complétée par le code à générer |
| 664 | 664 | **/ |
| 665 | 665 | function balise_VALEUR_dist($p) { |
| 666 | - $b = $p->nom_boucle ?: $p->id_boucle; |
|
| 667 | - $p->code = index_pile($p->id_boucle, 'valeur', $p->boucles, $b); |
|
| 666 | + $b = $p->nom_boucle ?: $p->id_boucle; |
|
| 667 | + $p->code = index_pile($p->id_boucle, 'valeur', $p->boucles, $b); |
|
| 668 | 668 | ; |
| 669 | - if (($v = interprete_argument_balise(1, $p)) !== null) { |
|
| 670 | - $p->code = 'table_valeur(' . $p->code . ', ' . $v . ')'; |
|
| 671 | - } |
|
| 672 | - $p->interdire_scripts = true; |
|
| 669 | + if (($v = interprete_argument_balise(1, $p)) !== null) { |
|
| 670 | + $p->code = 'table_valeur(' . $p->code . ', ' . $v . ')'; |
|
| 671 | + } |
|
| 672 | + $p->interdire_scripts = true; |
|
| 673 | 673 | |
| 674 | - return $p; |
|
| 674 | + return $p; |
|
| 675 | 675 | } |
| 676 | 676 | |
| 677 | 677 | /** |
@@ -700,16 +700,16 @@ discard block |
||
| 700 | 700 | * Pile complétée par le code à générer |
| 701 | 701 | **/ |
| 702 | 702 | function balise_EXPOSE_dist($p) { |
| 703 | - $on = "'on'"; |
|
| 704 | - $off = "''"; |
|
| 705 | - if (($v = interprete_argument_balise(1, $p)) !== null) { |
|
| 706 | - $on = $v; |
|
| 707 | - if (($v = interprete_argument_balise(2, $p)) !== null) { |
|
| 708 | - $off = $v; |
|
| 709 | - } |
|
| 710 | - } |
|
| 703 | + $on = "'on'"; |
|
| 704 | + $off = "''"; |
|
| 705 | + if (($v = interprete_argument_balise(1, $p)) !== null) { |
|
| 706 | + $on = $v; |
|
| 707 | + if (($v = interprete_argument_balise(2, $p)) !== null) { |
|
| 708 | + $off = $v; |
|
| 709 | + } |
|
| 710 | + } |
|
| 711 | 711 | |
| 712 | - return calculer_balise_expose($p, $on, $off); |
|
| 712 | + return calculer_balise_expose($p, $on, $off); |
|
| 713 | 713 | } |
| 714 | 714 | |
| 715 | 715 | /** |
@@ -727,35 +727,35 @@ discard block |
||
| 727 | 727 | * Pile complétée par le code à générer |
| 728 | 728 | **/ |
| 729 | 729 | function calculer_balise_expose($p, $on, $off) { |
| 730 | - $b = index_boucle($p); |
|
| 731 | - if (empty($p->boucles[$b]->primary)) { |
|
| 732 | - $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 733 | - erreur_squelette($msg, $p); |
|
| 734 | - } else { |
|
| 735 | - $key = $p->boucles[$b]->primary; |
|
| 736 | - $type = $p->boucles[$p->id_boucle]->primary; |
|
| 737 | - $desc = $p->boucles[$b]->show; |
|
| 738 | - $connect = sql_quote($p->boucles[$b]->sql_serveur); |
|
| 730 | + $b = index_boucle($p); |
|
| 731 | + if (empty($p->boucles[$b]->primary)) { |
|
| 732 | + $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 733 | + erreur_squelette($msg, $p); |
|
| 734 | + } else { |
|
| 735 | + $key = $p->boucles[$b]->primary; |
|
| 736 | + $type = $p->boucles[$p->id_boucle]->primary; |
|
| 737 | + $desc = $p->boucles[$b]->show; |
|
| 738 | + $connect = sql_quote($p->boucles[$b]->sql_serveur); |
|
| 739 | 739 | |
| 740 | - // Ne pas utiliser champ_sql, on jongle avec le nom boucle explicite |
|
| 741 | - $c = index_pile($p->id_boucle, $type, $p->boucles); |
|
| 740 | + // Ne pas utiliser champ_sql, on jongle avec le nom boucle explicite |
|
| 741 | + $c = index_pile($p->id_boucle, $type, $p->boucles); |
|
| 742 | 742 | |
| 743 | - if (isset($desc['field']['id_parent'])) { |
|
| 744 | - $parent = 0; // pour if (!$parent) dans calculer_expose |
|
| 745 | - } elseif (isset($desc['field']['id_rubrique'])) { |
|
| 746 | - $parent = index_pile($p->id_boucle, 'id_rubrique', $p->boucles, $b); |
|
| 747 | - } elseif (isset($desc['field']['id_groupe'])) { |
|
| 748 | - $parent = index_pile($p->id_boucle, 'id_groupe', $p->boucles, $b); |
|
| 749 | - } else { |
|
| 750 | - $parent = "''"; |
|
| 751 | - } |
|
| 743 | + if (isset($desc['field']['id_parent'])) { |
|
| 744 | + $parent = 0; // pour if (!$parent) dans calculer_expose |
|
| 745 | + } elseif (isset($desc['field']['id_rubrique'])) { |
|
| 746 | + $parent = index_pile($p->id_boucle, 'id_rubrique', $p->boucles, $b); |
|
| 747 | + } elseif (isset($desc['field']['id_groupe'])) { |
|
| 748 | + $parent = index_pile($p->id_boucle, 'id_groupe', $p->boucles, $b); |
|
| 749 | + } else { |
|
| 750 | + $parent = "''"; |
|
| 751 | + } |
|
| 752 | 752 | |
| 753 | - $p->code = "(calcul_exposer($c, '$type', \$Pile[0], $parent, '$key', $connect) ? $on : $off)"; |
|
| 754 | - } |
|
| 753 | + $p->code = "(calcul_exposer($c, '$type', \$Pile[0], $parent, '$key', $connect) ? $on : $off)"; |
|
| 754 | + } |
|
| 755 | 755 | |
| 756 | - $p->interdire_scripts = false; |
|
| 756 | + $p->interdire_scripts = false; |
|
| 757 | 757 | |
| 758 | - return $p; |
|
| 758 | + return $p; |
|
| 759 | 759 | } |
| 760 | 760 | |
| 761 | 761 | |
@@ -796,46 +796,46 @@ discard block |
||
| 796 | 796 | **/ |
| 797 | 797 | function balise_INTRODUCTION_dist($p) { |
| 798 | 798 | |
| 799 | - $type_objet = $p->type_requete; |
|
| 800 | - $cle_objet = id_table_objet($type_objet); |
|
| 801 | - $_id_objet = champ_sql($cle_objet, $p); |
|
| 802 | - |
|
| 803 | - // Récupérer les valeurs sql nécessaires : descriptif, texte et chapo |
|
| 804 | - // ainsi que le longueur d'introduction donnée dans la description de l'objet. |
|
| 805 | - $_introduction_longueur = 'null'; |
|
| 806 | - $_ligne = 'array('; |
|
| 807 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 808 | - if ($desc = $trouver_table(table_objet_sql($type_objet))) { |
|
| 809 | - if (isset($desc['field']['descriptif'])) { |
|
| 810 | - $_ligne .= "'descriptif' => " . champ_sql('descriptif', $p) . ','; |
|
| 811 | - } |
|
| 812 | - if (isset($desc['field']['texte'])) { |
|
| 813 | - $_ligne .= "'texte' => " . champ_sql('texte', $p) . ','; |
|
| 814 | - } |
|
| 815 | - if (isset($desc['field']['chapo'])) { |
|
| 816 | - $_ligne .= "'chapo' => " . champ_sql('chapo', $p) . ','; |
|
| 817 | - } |
|
| 818 | - if (isset($desc['introduction_longueur'])) { |
|
| 819 | - $_introduction_longueur = "'" . $desc['introduction_longueur'] . "'"; |
|
| 820 | - } |
|
| 821 | - } |
|
| 822 | - $_ligne .= ')'; |
|
| 823 | - |
|
| 824 | - // Récupérer la longueur et la suite passés en paramètres |
|
| 825 | - $_longueur_ou_suite = 'null'; |
|
| 826 | - if (($v1 = interprete_argument_balise(1, $p)) !== null) { |
|
| 827 | - $_longueur_ou_suite = $v1; |
|
| 828 | - } |
|
| 829 | - $_suite = 'null'; |
|
| 830 | - if (($v2 = interprete_argument_balise(2, $p)) !== null) { |
|
| 831 | - $_suite = $v2; |
|
| 832 | - } |
|
| 833 | - |
|
| 834 | - $p->code = "generer_objet_introduction($_id_objet, '$type_objet', $_ligne, $_introduction_longueur, $_longueur_ou_suite, $_suite, \$connect)"; |
|
| 835 | - |
|
| 836 | - #$p->interdire_scripts = true; |
|
| 837 | - $p->etoile = '*'; // propre est deja fait dans le calcul de l'intro |
|
| 838 | - return $p; |
|
| 799 | + $type_objet = $p->type_requete; |
|
| 800 | + $cle_objet = id_table_objet($type_objet); |
|
| 801 | + $_id_objet = champ_sql($cle_objet, $p); |
|
| 802 | + |
|
| 803 | + // Récupérer les valeurs sql nécessaires : descriptif, texte et chapo |
|
| 804 | + // ainsi que le longueur d'introduction donnée dans la description de l'objet. |
|
| 805 | + $_introduction_longueur = 'null'; |
|
| 806 | + $_ligne = 'array('; |
|
| 807 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 808 | + if ($desc = $trouver_table(table_objet_sql($type_objet))) { |
|
| 809 | + if (isset($desc['field']['descriptif'])) { |
|
| 810 | + $_ligne .= "'descriptif' => " . champ_sql('descriptif', $p) . ','; |
|
| 811 | + } |
|
| 812 | + if (isset($desc['field']['texte'])) { |
|
| 813 | + $_ligne .= "'texte' => " . champ_sql('texte', $p) . ','; |
|
| 814 | + } |
|
| 815 | + if (isset($desc['field']['chapo'])) { |
|
| 816 | + $_ligne .= "'chapo' => " . champ_sql('chapo', $p) . ','; |
|
| 817 | + } |
|
| 818 | + if (isset($desc['introduction_longueur'])) { |
|
| 819 | + $_introduction_longueur = "'" . $desc['introduction_longueur'] . "'"; |
|
| 820 | + } |
|
| 821 | + } |
|
| 822 | + $_ligne .= ')'; |
|
| 823 | + |
|
| 824 | + // Récupérer la longueur et la suite passés en paramètres |
|
| 825 | + $_longueur_ou_suite = 'null'; |
|
| 826 | + if (($v1 = interprete_argument_balise(1, $p)) !== null) { |
|
| 827 | + $_longueur_ou_suite = $v1; |
|
| 828 | + } |
|
| 829 | + $_suite = 'null'; |
|
| 830 | + if (($v2 = interprete_argument_balise(2, $p)) !== null) { |
|
| 831 | + $_suite = $v2; |
|
| 832 | + } |
|
| 833 | + |
|
| 834 | + $p->code = "generer_objet_introduction($_id_objet, '$type_objet', $_ligne, $_introduction_longueur, $_longueur_ou_suite, $_suite, \$connect)"; |
|
| 835 | + |
|
| 836 | + #$p->interdire_scripts = true; |
|
| 837 | + $p->etoile = '*'; // propre est deja fait dans le calcul de l'intro |
|
| 838 | + return $p; |
|
| 839 | 839 | } |
| 840 | 840 | |
| 841 | 841 | |
@@ -855,15 +855,15 @@ discard block |
||
| 855 | 855 | * Pile complétée par le code à générer |
| 856 | 856 | **/ |
| 857 | 857 | function balise_LANG_dist($p) { |
| 858 | - $_lang = champ_sql('lang', $p); |
|
| 859 | - if (!$p->etoile) { |
|
| 860 | - $p->code = "spip_htmlentities($_lang ? $_lang : \$GLOBALS['spip_lang'])"; |
|
| 861 | - } else { |
|
| 862 | - $p->code = "spip_htmlentities($_lang)"; |
|
| 863 | - } |
|
| 864 | - $p->interdire_scripts = false; |
|
| 858 | + $_lang = champ_sql('lang', $p); |
|
| 859 | + if (!$p->etoile) { |
|
| 860 | + $p->code = "spip_htmlentities($_lang ? $_lang : \$GLOBALS['spip_lang'])"; |
|
| 861 | + } else { |
|
| 862 | + $p->code = "spip_htmlentities($_lang)"; |
|
| 863 | + } |
|
| 864 | + $p->interdire_scripts = false; |
|
| 865 | 865 | |
| 866 | - return $p; |
|
| 866 | + return $p; |
|
| 867 | 867 | } |
| 868 | 868 | |
| 869 | 869 | /** |
@@ -885,45 +885,45 @@ discard block |
||
| 885 | 885 | * Pile complétée par le code à générer |
| 886 | 886 | */ |
| 887 | 887 | function balise_LESAUTEURS_dist($p) { |
| 888 | - // Cherche le champ 'lesauteurs' dans la pile |
|
| 889 | - $_lesauteurs = champ_sql('lesauteurs', $p, ''); |
|
| 890 | - |
|
| 891 | - // Si le champ n'existe pas (cas de spip_articles), on applique |
|
| 892 | - // le modele lesauteurs.html en passant id_article dans le contexte; |
|
| 893 | - // dans le cas contraire on prend le champ 'lesauteurs' |
|
| 894 | - // (cf extension sites/) |
|
| 895 | - if ($_lesauteurs) { |
|
| 896 | - $p->code = "safehtml($_lesauteurs)"; |
|
| 897 | - // $p->interdire_scripts = true; |
|
| 898 | - } else { |
|
| 899 | - if (!$p->id_boucle) { |
|
| 900 | - $connect = ''; |
|
| 901 | - $objet = 'article'; |
|
| 902 | - $id_table_objet = 'id_article'; |
|
| 903 | - } else { |
|
| 904 | - $b = $p->nom_boucle ?: $p->id_boucle; |
|
| 905 | - $connect = $p->boucles[$b]->sql_serveur; |
|
| 906 | - $type_boucle = $p->boucles[$b]->type_requete; |
|
| 907 | - $objet = objet_type($type_boucle); |
|
| 908 | - $id_table_objet = id_table_objet($type_boucle); |
|
| 909 | - } |
|
| 910 | - $c = memoriser_contexte_compil($p); |
|
| 911 | - |
|
| 912 | - $p->code = sprintf( |
|
| 913 | - CODE_RECUPERER_FOND, |
|
| 914 | - "'modeles/lesauteurs'", |
|
| 915 | - "array('objet'=>'" . $objet . |
|
| 916 | - "','id_objet' => " . champ_sql($id_table_objet, $p) . |
|
| 917 | - ",'$id_table_objet' => " . champ_sql($id_table_objet, $p) . |
|
| 918 | - ($objet == 'article' ? '' : ",'id_article' => " . champ_sql('id_article', $p)) . |
|
| 919 | - ')', |
|
| 920 | - "'trim'=>true, 'compil'=>array($c)", |
|
| 921 | - _q($connect) |
|
| 922 | - ); |
|
| 923 | - $p->interdire_scripts = false; // securite apposee par recuperer_fond() |
|
| 924 | - } |
|
| 925 | - |
|
| 926 | - return $p; |
|
| 888 | + // Cherche le champ 'lesauteurs' dans la pile |
|
| 889 | + $_lesauteurs = champ_sql('lesauteurs', $p, ''); |
|
| 890 | + |
|
| 891 | + // Si le champ n'existe pas (cas de spip_articles), on applique |
|
| 892 | + // le modele lesauteurs.html en passant id_article dans le contexte; |
|
| 893 | + // dans le cas contraire on prend le champ 'lesauteurs' |
|
| 894 | + // (cf extension sites/) |
|
| 895 | + if ($_lesauteurs) { |
|
| 896 | + $p->code = "safehtml($_lesauteurs)"; |
|
| 897 | + // $p->interdire_scripts = true; |
|
| 898 | + } else { |
|
| 899 | + if (!$p->id_boucle) { |
|
| 900 | + $connect = ''; |
|
| 901 | + $objet = 'article'; |
|
| 902 | + $id_table_objet = 'id_article'; |
|
| 903 | + } else { |
|
| 904 | + $b = $p->nom_boucle ?: $p->id_boucle; |
|
| 905 | + $connect = $p->boucles[$b]->sql_serveur; |
|
| 906 | + $type_boucle = $p->boucles[$b]->type_requete; |
|
| 907 | + $objet = objet_type($type_boucle); |
|
| 908 | + $id_table_objet = id_table_objet($type_boucle); |
|
| 909 | + } |
|
| 910 | + $c = memoriser_contexte_compil($p); |
|
| 911 | + |
|
| 912 | + $p->code = sprintf( |
|
| 913 | + CODE_RECUPERER_FOND, |
|
| 914 | + "'modeles/lesauteurs'", |
|
| 915 | + "array('objet'=>'" . $objet . |
|
| 916 | + "','id_objet' => " . champ_sql($id_table_objet, $p) . |
|
| 917 | + ",'$id_table_objet' => " . champ_sql($id_table_objet, $p) . |
|
| 918 | + ($objet == 'article' ? '' : ",'id_article' => " . champ_sql('id_article', $p)) . |
|
| 919 | + ')', |
|
| 920 | + "'trim'=>true, 'compil'=>array($c)", |
|
| 921 | + _q($connect) |
|
| 922 | + ); |
|
| 923 | + $p->interdire_scripts = false; // securite apposee par recuperer_fond() |
|
| 924 | + } |
|
| 925 | + |
|
| 926 | + return $p; |
|
| 927 | 927 | } |
| 928 | 928 | |
| 929 | 929 | |
@@ -950,76 +950,76 @@ discard block |
||
| 950 | 950 | * Pile complétée par le code à générer |
| 951 | 951 | */ |
| 952 | 952 | function balise_RANG_dist($p) { |
| 953 | - $b = index_boucle($p); |
|
| 954 | - if ($b === '') { |
|
| 955 | - $msg = [ |
|
| 956 | - 'zbug_champ_hors_boucle', |
|
| 957 | - ['champ' => '#RANG'] |
|
| 958 | - ]; |
|
| 959 | - erreur_squelette($msg, $p); |
|
| 960 | - } else { |
|
| 961 | - // chercher d'abord un champ sql rang (mais pas dans le env : defaut '' si on trouve pas de champ sql) |
|
| 962 | - // dans la boucle immediatement englobante uniquement |
|
| 963 | - // sinon on compose le champ calcule |
|
| 964 | - $_rang = champ_sql('rang', $p, '', false); |
|
| 965 | - |
|
| 966 | - // si pas trouve de champ sql rang : |
|
| 967 | - if (!$_rang or $_rang == "''") { |
|
| 968 | - $boucle = &$p->boucles[$b]; |
|
| 969 | - |
|
| 970 | - // on gere le cas ou #RANG est une extraction du numero dans le titre |
|
| 971 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 972 | - $desc = $trouver_table($boucle->id_table); |
|
| 973 | - $_titre = ''; # où extraire le numero ? |
|
| 974 | - |
|
| 975 | - if (isset($desc['titre'])) { |
|
| 976 | - $t = $desc['titre']; |
|
| 977 | - if ( |
|
| 978 | - // Soit on trouve avec la déclaration de la lang AVANT |
|
| 979 | - preg_match(';(?:lang\s*,)\s*(.*?titre)\s*(,|$);', $t, $m) |
|
| 980 | - // Soit on prend depuis le début |
|
| 981 | - or preg_match(';^(.*?titre)\s*(,|$);', $t, $m) |
|
| 982 | - ) { |
|
| 983 | - $m = preg_replace(',as\s+titre$,i', '', $m[1]); |
|
| 984 | - $m = trim($m); |
|
| 985 | - if ($m != "''") { |
|
| 986 | - if (!preg_match(',\W,', $m)) { |
|
| 987 | - $m = $boucle->id_table . ".$m"; |
|
| 988 | - } |
|
| 989 | - |
|
| 990 | - $m .= ' AS titre_rang'; |
|
| 991 | - |
|
| 992 | - $boucle->select[] = $m; |
|
| 993 | - $_titre = '$Pile[$SP][\'titre_rang\']'; |
|
| 994 | - } |
|
| 995 | - } |
|
| 996 | - } |
|
| 997 | - |
|
| 998 | - // si on n'a rien trouvé, on utilise le champ titre classique |
|
| 999 | - if (!$_titre) { |
|
| 1000 | - $_titre = champ_sql('titre', $p); |
|
| 1001 | - } |
|
| 1002 | - |
|
| 1003 | - // et on recupere aussi les infos de liaison si on est en train d'editer les liens justement |
|
| 1004 | - // cas des formulaires xxx_lies utilises par #FORMULAIRE_EDITER_LIENS |
|
| 1005 | - $type_boucle = $boucle->type_requete; |
|
| 1006 | - $objet = objet_type($type_boucle); |
|
| 1007 | - $id_table_objet = id_table_objet($type_boucle); |
|
| 1008 | - $_primary = champ_sql($id_table_objet, $p, '', false); |
|
| 1009 | - $_env = '$Pile[0]'; |
|
| 1010 | - |
|
| 1011 | - if (!$_titre) {$_titre = "''"; |
|
| 1012 | - } |
|
| 1013 | - if (!$_primary) {$_primary = "''"; |
|
| 1014 | - } |
|
| 1015 | - $_rang = "calculer_rang_smart($_titre, '$objet', $_primary, $_env)"; |
|
| 1016 | - } |
|
| 1017 | - |
|
| 1018 | - $p->code = $_rang; |
|
| 1019 | - $p->interdire_scripts = false; |
|
| 1020 | - } |
|
| 1021 | - |
|
| 1022 | - return $p; |
|
| 953 | + $b = index_boucle($p); |
|
| 954 | + if ($b === '') { |
|
| 955 | + $msg = [ |
|
| 956 | + 'zbug_champ_hors_boucle', |
|
| 957 | + ['champ' => '#RANG'] |
|
| 958 | + ]; |
|
| 959 | + erreur_squelette($msg, $p); |
|
| 960 | + } else { |
|
| 961 | + // chercher d'abord un champ sql rang (mais pas dans le env : defaut '' si on trouve pas de champ sql) |
|
| 962 | + // dans la boucle immediatement englobante uniquement |
|
| 963 | + // sinon on compose le champ calcule |
|
| 964 | + $_rang = champ_sql('rang', $p, '', false); |
|
| 965 | + |
|
| 966 | + // si pas trouve de champ sql rang : |
|
| 967 | + if (!$_rang or $_rang == "''") { |
|
| 968 | + $boucle = &$p->boucles[$b]; |
|
| 969 | + |
|
| 970 | + // on gere le cas ou #RANG est une extraction du numero dans le titre |
|
| 971 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 972 | + $desc = $trouver_table($boucle->id_table); |
|
| 973 | + $_titre = ''; # où extraire le numero ? |
|
| 974 | + |
|
| 975 | + if (isset($desc['titre'])) { |
|
| 976 | + $t = $desc['titre']; |
|
| 977 | + if ( |
|
| 978 | + // Soit on trouve avec la déclaration de la lang AVANT |
|
| 979 | + preg_match(';(?:lang\s*,)\s*(.*?titre)\s*(,|$);', $t, $m) |
|
| 980 | + // Soit on prend depuis le début |
|
| 981 | + or preg_match(';^(.*?titre)\s*(,|$);', $t, $m) |
|
| 982 | + ) { |
|
| 983 | + $m = preg_replace(',as\s+titre$,i', '', $m[1]); |
|
| 984 | + $m = trim($m); |
|
| 985 | + if ($m != "''") { |
|
| 986 | + if (!preg_match(',\W,', $m)) { |
|
| 987 | + $m = $boucle->id_table . ".$m"; |
|
| 988 | + } |
|
| 989 | + |
|
| 990 | + $m .= ' AS titre_rang'; |
|
| 991 | + |
|
| 992 | + $boucle->select[] = $m; |
|
| 993 | + $_titre = '$Pile[$SP][\'titre_rang\']'; |
|
| 994 | + } |
|
| 995 | + } |
|
| 996 | + } |
|
| 997 | + |
|
| 998 | + // si on n'a rien trouvé, on utilise le champ titre classique |
|
| 999 | + if (!$_titre) { |
|
| 1000 | + $_titre = champ_sql('titre', $p); |
|
| 1001 | + } |
|
| 1002 | + |
|
| 1003 | + // et on recupere aussi les infos de liaison si on est en train d'editer les liens justement |
|
| 1004 | + // cas des formulaires xxx_lies utilises par #FORMULAIRE_EDITER_LIENS |
|
| 1005 | + $type_boucle = $boucle->type_requete; |
|
| 1006 | + $objet = objet_type($type_boucle); |
|
| 1007 | + $id_table_objet = id_table_objet($type_boucle); |
|
| 1008 | + $_primary = champ_sql($id_table_objet, $p, '', false); |
|
| 1009 | + $_env = '$Pile[0]'; |
|
| 1010 | + |
|
| 1011 | + if (!$_titre) {$_titre = "''"; |
|
| 1012 | + } |
|
| 1013 | + if (!$_primary) {$_primary = "''"; |
|
| 1014 | + } |
|
| 1015 | + $_rang = "calculer_rang_smart($_titre, '$objet', $_primary, $_env)"; |
|
| 1016 | + } |
|
| 1017 | + |
|
| 1018 | + $p->code = $_rang; |
|
| 1019 | + $p->interdire_scripts = false; |
|
| 1020 | + } |
|
| 1021 | + |
|
| 1022 | + return $p; |
|
| 1023 | 1023 | } |
| 1024 | 1024 | |
| 1025 | 1025 | |
@@ -1041,12 +1041,12 @@ discard block |
||
| 1041 | 1041 | * Pile complétée par le code à générer |
| 1042 | 1042 | **/ |
| 1043 | 1043 | function balise_POPULARITE_dist($p) { |
| 1044 | - $_popularite = champ_sql('popularite', $p); |
|
| 1045 | - $p->code = "(ceil(min(100, 100 * $_popularite |
|
| 1044 | + $_popularite = champ_sql('popularite', $p); |
|
| 1045 | + $p->code = "(ceil(min(100, 100 * $_popularite |
|
| 1046 | 1046 | / max(1 , 0 + \$GLOBALS['meta']['popularite_max']))))"; |
| 1047 | - $p->interdire_scripts = false; |
|
| 1047 | + $p->interdire_scripts = false; |
|
| 1048 | 1048 | |
| 1049 | - return $p; |
|
| 1049 | + return $p; |
|
| 1050 | 1050 | } |
| 1051 | 1051 | |
| 1052 | 1052 | /** |
@@ -1057,8 +1057,8 @@ discard block |
||
| 1057 | 1057 | * l'absence peut-être due à une faute de frappe dans le contexte inclus. |
| 1058 | 1058 | */ |
| 1059 | 1059 | define( |
| 1060 | - 'CODE_PAGINATION', |
|
| 1061 | - '%s($Numrows["%s"]["grand_total"], |
|
| 1060 | + 'CODE_PAGINATION', |
|
| 1061 | + '%s($Numrows["%s"]["grand_total"], |
|
| 1062 | 1062 | %s, |
| 1063 | 1063 | isset($Pile[0][%4$s])?$Pile[0][%4$s]:intval(_request(%4$s)), |
| 1064 | 1064 | %5$s, %6$s, %7$s, %8$s, array(%9$s))' |
@@ -1095,75 +1095,75 @@ discard block |
||
| 1095 | 1095 | * Pile complétée par le code à générer |
| 1096 | 1096 | */ |
| 1097 | 1097 | function balise_PAGINATION_dist($p, $liste = 'true') { |
| 1098 | - $b = index_boucle_mere($p); |
|
| 1099 | - |
|
| 1100 | - // s'il n'y a pas de nom de boucle, on ne peut pas paginer |
|
| 1101 | - if ($b === '') { |
|
| 1102 | - $msg = [ |
|
| 1103 | - 'zbug_champ_hors_boucle', |
|
| 1104 | - ['champ' => $liste ? 'PAGINATION' : 'ANCRE_PAGINATION'] |
|
| 1105 | - ]; |
|
| 1106 | - erreur_squelette($msg, $p); |
|
| 1107 | - |
|
| 1108 | - return $p; |
|
| 1109 | - } |
|
| 1110 | - |
|
| 1111 | - // s'il n'y a pas de mode_partie, c'est qu'on se trouve |
|
| 1112 | - // dans un boucle recursive ou qu'on a oublie le critere {pagination} |
|
| 1113 | - if (!$p->boucles[$b]->mode_partie) { |
|
| 1114 | - if (!$p->boucles[$b]->table_optionnelle) { |
|
| 1115 | - $msg = [ |
|
| 1116 | - 'zbug_pagination_sans_critere', |
|
| 1117 | - ['champ' => '#PAGINATION'] |
|
| 1118 | - ]; |
|
| 1119 | - erreur_squelette($msg, $p); |
|
| 1120 | - } |
|
| 1121 | - |
|
| 1122 | - return $p; |
|
| 1123 | - } |
|
| 1124 | - |
|
| 1125 | - // a priori true |
|
| 1126 | - // si false, le compilo va bloquer sur des syntaxes avec un filtre sans argument qui suit la balise |
|
| 1127 | - // si true, les arguments simples (sans truc=chose) vont degager |
|
| 1128 | - $_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $p->id_boucle, false, false); |
|
| 1129 | - if (is_countable($_contexte) ? count($_contexte) : 0) { |
|
| 1130 | - $key = key($_contexte); |
|
| 1131 | - if (is_numeric($key)) { |
|
| 1132 | - array_shift($_contexte); |
|
| 1133 | - $__modele = interprete_argument_balise(1, $p); |
|
| 1134 | - } |
|
| 1135 | - } |
|
| 1136 | - |
|
| 1137 | - if (is_countable($_contexte) ? count($_contexte) : 0) { |
|
| 1138 | - $code_contexte = implode(',', $_contexte); |
|
| 1139 | - } else { |
|
| 1140 | - $code_contexte = ''; |
|
| 1141 | - } |
|
| 1142 | - |
|
| 1143 | - $connect = $p->boucles[$b]->sql_serveur; |
|
| 1144 | - $pas = $p->boucles[$b]->total_parties; |
|
| 1145 | - $f_pagination = chercher_filtre('pagination'); |
|
| 1146 | - $type = $p->boucles[$b]->modificateur['debut_nom']; |
|
| 1147 | - $modif = ($type[0] !== "'") ? "'debut'.$type" |
|
| 1148 | - : ("'debut" . substr($type, 1)); |
|
| 1149 | - |
|
| 1150 | - $p->code = sprintf( |
|
| 1151 | - CODE_PAGINATION, |
|
| 1152 | - $f_pagination, |
|
| 1153 | - $b, |
|
| 1154 | - $type, |
|
| 1155 | - $modif, |
|
| 1156 | - $pas, |
|
| 1157 | - $liste, |
|
| 1158 | - ((isset($__modele) and $__modele) ? $__modele : "''"), |
|
| 1159 | - _q($connect), |
|
| 1160 | - $code_contexte |
|
| 1161 | - ); |
|
| 1162 | - |
|
| 1163 | - $p->boucles[$b]->numrows = true; |
|
| 1164 | - $p->interdire_scripts = false; |
|
| 1165 | - |
|
| 1166 | - return $p; |
|
| 1098 | + $b = index_boucle_mere($p); |
|
| 1099 | + |
|
| 1100 | + // s'il n'y a pas de nom de boucle, on ne peut pas paginer |
|
| 1101 | + if ($b === '') { |
|
| 1102 | + $msg = [ |
|
| 1103 | + 'zbug_champ_hors_boucle', |
|
| 1104 | + ['champ' => $liste ? 'PAGINATION' : 'ANCRE_PAGINATION'] |
|
| 1105 | + ]; |
|
| 1106 | + erreur_squelette($msg, $p); |
|
| 1107 | + |
|
| 1108 | + return $p; |
|
| 1109 | + } |
|
| 1110 | + |
|
| 1111 | + // s'il n'y a pas de mode_partie, c'est qu'on se trouve |
|
| 1112 | + // dans un boucle recursive ou qu'on a oublie le critere {pagination} |
|
| 1113 | + if (!$p->boucles[$b]->mode_partie) { |
|
| 1114 | + if (!$p->boucles[$b]->table_optionnelle) { |
|
| 1115 | + $msg = [ |
|
| 1116 | + 'zbug_pagination_sans_critere', |
|
| 1117 | + ['champ' => '#PAGINATION'] |
|
| 1118 | + ]; |
|
| 1119 | + erreur_squelette($msg, $p); |
|
| 1120 | + } |
|
| 1121 | + |
|
| 1122 | + return $p; |
|
| 1123 | + } |
|
| 1124 | + |
|
| 1125 | + // a priori true |
|
| 1126 | + // si false, le compilo va bloquer sur des syntaxes avec un filtre sans argument qui suit la balise |
|
| 1127 | + // si true, les arguments simples (sans truc=chose) vont degager |
|
| 1128 | + $_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $p->id_boucle, false, false); |
|
| 1129 | + if (is_countable($_contexte) ? count($_contexte) : 0) { |
|
| 1130 | + $key = key($_contexte); |
|
| 1131 | + if (is_numeric($key)) { |
|
| 1132 | + array_shift($_contexte); |
|
| 1133 | + $__modele = interprete_argument_balise(1, $p); |
|
| 1134 | + } |
|
| 1135 | + } |
|
| 1136 | + |
|
| 1137 | + if (is_countable($_contexte) ? count($_contexte) : 0) { |
|
| 1138 | + $code_contexte = implode(',', $_contexte); |
|
| 1139 | + } else { |
|
| 1140 | + $code_contexte = ''; |
|
| 1141 | + } |
|
| 1142 | + |
|
| 1143 | + $connect = $p->boucles[$b]->sql_serveur; |
|
| 1144 | + $pas = $p->boucles[$b]->total_parties; |
|
| 1145 | + $f_pagination = chercher_filtre('pagination'); |
|
| 1146 | + $type = $p->boucles[$b]->modificateur['debut_nom']; |
|
| 1147 | + $modif = ($type[0] !== "'") ? "'debut'.$type" |
|
| 1148 | + : ("'debut" . substr($type, 1)); |
|
| 1149 | + |
|
| 1150 | + $p->code = sprintf( |
|
| 1151 | + CODE_PAGINATION, |
|
| 1152 | + $f_pagination, |
|
| 1153 | + $b, |
|
| 1154 | + $type, |
|
| 1155 | + $modif, |
|
| 1156 | + $pas, |
|
| 1157 | + $liste, |
|
| 1158 | + ((isset($__modele) and $__modele) ? $__modele : "''"), |
|
| 1159 | + _q($connect), |
|
| 1160 | + $code_contexte |
|
| 1161 | + ); |
|
| 1162 | + |
|
| 1163 | + $p->boucles[$b]->numrows = true; |
|
| 1164 | + $p->interdire_scripts = false; |
|
| 1165 | + |
|
| 1166 | + return $p; |
|
| 1167 | 1167 | } |
| 1168 | 1168 | |
| 1169 | 1169 | |
@@ -1190,11 +1190,11 @@ discard block |
||
| 1190 | 1190 | * Pile complétée par le code à générer |
| 1191 | 1191 | **/ |
| 1192 | 1192 | function balise_ANCRE_PAGINATION_dist($p) { |
| 1193 | - if ($f = charger_fonction('PAGINATION', 'balise', true)) { |
|
| 1194 | - return $f($p, $liste = 'false'); |
|
| 1195 | - } else { |
|
| 1196 | - return null; |
|
| 1197 | - } // ou une erreur ? |
|
| 1193 | + if ($f = charger_fonction('PAGINATION', 'balise', true)) { |
|
| 1194 | + return $f($p, $liste = 'false'); |
|
| 1195 | + } else { |
|
| 1196 | + return null; |
|
| 1197 | + } // ou une erreur ? |
|
| 1198 | 1198 | } |
| 1199 | 1199 | |
| 1200 | 1200 | |
@@ -1215,17 +1215,17 @@ discard block |
||
| 1215 | 1215 | * Pile complétée par le code à générer |
| 1216 | 1216 | **/ |
| 1217 | 1217 | function balise_GRAND_TOTAL_dist($p) { |
| 1218 | - $b = index_boucle_mere($p); |
|
| 1219 | - if ($b === '') { |
|
| 1220 | - $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 1221 | - erreur_squelette($msg, $p); |
|
| 1222 | - } else { |
|
| 1223 | - $p->code = "(\$Numrows['$b']['grand_total'] ?? \$Numrows['$b']['total'] ?? 0)"; |
|
| 1224 | - $p->boucles[$b]->numrows = true; |
|
| 1225 | - $p->interdire_scripts = false; |
|
| 1226 | - } |
|
| 1218 | + $b = index_boucle_mere($p); |
|
| 1219 | + if ($b === '') { |
|
| 1220 | + $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 1221 | + erreur_squelette($msg, $p); |
|
| 1222 | + } else { |
|
| 1223 | + $p->code = "(\$Numrows['$b']['grand_total'] ?? \$Numrows['$b']['total'] ?? 0)"; |
|
| 1224 | + $p->boucles[$b]->numrows = true; |
|
| 1225 | + $p->interdire_scripts = false; |
|
| 1226 | + } |
|
| 1227 | 1227 | |
| 1228 | - return $p; |
|
| 1228 | + return $p; |
|
| 1229 | 1229 | } |
| 1230 | 1230 | |
| 1231 | 1231 | |
@@ -1253,10 +1253,10 @@ discard block |
||
| 1253 | 1253 | * Pile complétée par le code à générer |
| 1254 | 1254 | **/ |
| 1255 | 1255 | function balise_SELF_dist($p) { |
| 1256 | - $p->code = 'self()'; |
|
| 1257 | - $p->interdire_scripts = false; |
|
| 1256 | + $p->code = 'self()'; |
|
| 1257 | + $p->interdire_scripts = false; |
|
| 1258 | 1258 | |
| 1259 | - return $p; |
|
| 1259 | + return $p; |
|
| 1260 | 1260 | } |
| 1261 | 1261 | |
| 1262 | 1262 | |
@@ -1283,17 +1283,17 @@ discard block |
||
| 1283 | 1283 | * Pile complétée par le code à générer |
| 1284 | 1284 | **/ |
| 1285 | 1285 | function balise_CHEMIN_dist($p) { |
| 1286 | - $arg = interprete_argument_balise(1, $p); |
|
| 1287 | - if (!$arg) { |
|
| 1288 | - $msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN']]; |
|
| 1289 | - erreur_squelette($msg, $p); |
|
| 1290 | - } else { |
|
| 1291 | - $p->code = 'find_in_path((string)' . $arg . ')'; |
|
| 1292 | - } |
|
| 1286 | + $arg = interprete_argument_balise(1, $p); |
|
| 1287 | + if (!$arg) { |
|
| 1288 | + $msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN']]; |
|
| 1289 | + erreur_squelette($msg, $p); |
|
| 1290 | + } else { |
|
| 1291 | + $p->code = 'find_in_path((string)' . $arg . ')'; |
|
| 1292 | + } |
|
| 1293 | 1293 | |
| 1294 | - $p->interdire_scripts = false; |
|
| 1294 | + $p->interdire_scripts = false; |
|
| 1295 | 1295 | |
| 1296 | - return $p; |
|
| 1296 | + return $p; |
|
| 1297 | 1297 | } |
| 1298 | 1298 | |
| 1299 | 1299 | /** |
@@ -1318,16 +1318,16 @@ discard block |
||
| 1318 | 1318 | * Pile complétée par le code à générer |
| 1319 | 1319 | **/ |
| 1320 | 1320 | function balise_CHEMIN_IMAGE_dist($p) { |
| 1321 | - $arg = interprete_argument_balise(1, $p); |
|
| 1322 | - if (!$arg) { |
|
| 1323 | - $msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN_IMAGE']]; |
|
| 1324 | - erreur_squelette($msg, $p); |
|
| 1325 | - } else { |
|
| 1326 | - $p->code = 'chemin_image((string)' . $arg . ')'; |
|
| 1327 | - } |
|
| 1321 | + $arg = interprete_argument_balise(1, $p); |
|
| 1322 | + if (!$arg) { |
|
| 1323 | + $msg = ['zbug_balise_sans_argument', ['balise' => ' CHEMIN_IMAGE']]; |
|
| 1324 | + erreur_squelette($msg, $p); |
|
| 1325 | + } else { |
|
| 1326 | + $p->code = 'chemin_image((string)' . $arg . ')'; |
|
| 1327 | + } |
|
| 1328 | 1328 | |
| 1329 | - $p->interdire_scripts = false; |
|
| 1330 | - return $p; |
|
| 1329 | + $p->interdire_scripts = false; |
|
| 1330 | + return $p; |
|
| 1331 | 1331 | } |
| 1332 | 1332 | |
| 1333 | 1333 | |
@@ -1365,36 +1365,36 @@ discard block |
||
| 1365 | 1365 | **/ |
| 1366 | 1366 | function balise_ENV_dist($p, $src = null) { |
| 1367 | 1367 | |
| 1368 | - // cle du tableau desiree |
|
| 1369 | - $_nom = interprete_argument_balise(1, $p); |
|
| 1370 | - // valeur par defaut |
|
| 1371 | - $_sinon = interprete_argument_balise(2, $p); |
|
| 1368 | + // cle du tableau desiree |
|
| 1369 | + $_nom = interprete_argument_balise(1, $p); |
|
| 1370 | + // valeur par defaut |
|
| 1371 | + $_sinon = interprete_argument_balise(2, $p); |
|
| 1372 | 1372 | |
| 1373 | - // $src est un tableau de donnees sources eventuellement transmis |
|
| 1374 | - // en absence, on utilise l'environnement du squelette $Pile[0] |
|
| 1373 | + // $src est un tableau de donnees sources eventuellement transmis |
|
| 1374 | + // en absence, on utilise l'environnement du squelette $Pile[0] |
|
| 1375 | 1375 | |
| 1376 | - if (!$_nom) { |
|
| 1377 | - // cas de #ENV sans argument : on retourne le serialize() du tableau |
|
| 1378 | - // une belle fonction [(#ENV|affiche_env)] serait pratique |
|
| 1379 | - if ($src) { |
|
| 1380 | - $p->code = '(is_array($a = (' . $src . ')) ? serialize($a) : "")'; |
|
| 1381 | - } else { |
|
| 1382 | - $p->code = 'serialize($Pile[0]??[])'; |
|
| 1383 | - } |
|
| 1384 | - } else { |
|
| 1385 | - if (!$src) { |
|
| 1386 | - $src = '$Pile[0]??[]'; |
|
| 1387 | - } |
|
| 1388 | - if ($_sinon) { |
|
| 1389 | - $p->code = "sinon(table_valeur($src, (string)$_nom, null), $_sinon)"; |
|
| 1390 | - } else { |
|
| 1391 | - $p->code = "table_valeur($src, (string)$_nom, null)"; |
|
| 1392 | - } |
|
| 1393 | - } |
|
| 1376 | + if (!$_nom) { |
|
| 1377 | + // cas de #ENV sans argument : on retourne le serialize() du tableau |
|
| 1378 | + // une belle fonction [(#ENV|affiche_env)] serait pratique |
|
| 1379 | + if ($src) { |
|
| 1380 | + $p->code = '(is_array($a = (' . $src . ')) ? serialize($a) : "")'; |
|
| 1381 | + } else { |
|
| 1382 | + $p->code = 'serialize($Pile[0]??[])'; |
|
| 1383 | + } |
|
| 1384 | + } else { |
|
| 1385 | + if (!$src) { |
|
| 1386 | + $src = '$Pile[0]??[]'; |
|
| 1387 | + } |
|
| 1388 | + if ($_sinon) { |
|
| 1389 | + $p->code = "sinon(table_valeur($src, (string)$_nom, null), $_sinon)"; |
|
| 1390 | + } else { |
|
| 1391 | + $p->code = "table_valeur($src, (string)$_nom, null)"; |
|
| 1392 | + } |
|
| 1393 | + } |
|
| 1394 | 1394 | |
| 1395 | - #$p->interdire_scripts = true; |
|
| 1395 | + #$p->interdire_scripts = true; |
|
| 1396 | 1396 | |
| 1397 | - return $p; |
|
| 1397 | + return $p; |
|
| 1398 | 1398 | } |
| 1399 | 1399 | |
| 1400 | 1400 | /** |
@@ -1424,16 +1424,16 @@ discard block |
||
| 1424 | 1424 | * Pile completée du code PHP d'exécution de la balise |
| 1425 | 1425 | */ |
| 1426 | 1426 | function balise_CONFIG_dist($p) { |
| 1427 | - if (!$arg = interprete_argument_balise(1, $p)) { |
|
| 1428 | - $arg = "''"; |
|
| 1429 | - } |
|
| 1430 | - $_sinon = interprete_argument_balise(2, $p); |
|
| 1431 | - $_unserialize = sinon(interprete_argument_balise(3, $p), 'false'); |
|
| 1427 | + if (!$arg = interprete_argument_balise(1, $p)) { |
|
| 1428 | + $arg = "''"; |
|
| 1429 | + } |
|
| 1430 | + $_sinon = interprete_argument_balise(2, $p); |
|
| 1431 | + $_unserialize = sinon(interprete_argument_balise(3, $p), 'false'); |
|
| 1432 | 1432 | |
| 1433 | - $p->code = '(include_spip(\'inc/config\')?lire_config(' . $arg . ',' . |
|
| 1434 | - ($_sinon && $_sinon != "''" ? $_sinon : 'null') . ',' . $_unserialize . "):'')"; |
|
| 1433 | + $p->code = '(include_spip(\'inc/config\')?lire_config(' . $arg . ',' . |
|
| 1434 | + ($_sinon && $_sinon != "''" ? $_sinon : 'null') . ',' . $_unserialize . "):'')"; |
|
| 1435 | 1435 | |
| 1436 | - return $p; |
|
| 1436 | + return $p; |
|
| 1437 | 1437 | } |
| 1438 | 1438 | |
| 1439 | 1439 | |
@@ -1456,10 +1456,10 @@ discard block |
||
| 1456 | 1456 | * Pile completée du code PHP d'exécution de la balise |
| 1457 | 1457 | */ |
| 1458 | 1458 | function balise_CONNECT_dist($p) { |
| 1459 | - $p->code = '($connect ? $connect : NULL)'; |
|
| 1460 | - $p->interdire_scripts = false; |
|
| 1459 | + $p->code = '($connect ? $connect : NULL)'; |
|
| 1460 | + $p->interdire_scripts = false; |
|
| 1461 | 1461 | |
| 1462 | - return $p; |
|
| 1462 | + return $p; |
|
| 1463 | 1463 | } |
| 1464 | 1464 | |
| 1465 | 1465 | |
@@ -1487,15 +1487,15 @@ discard block |
||
| 1487 | 1487 | * Pile completée du code PHP d'exécution de la balise |
| 1488 | 1488 | **/ |
| 1489 | 1489 | function balise_SESSION_dist($p) { |
| 1490 | - $p->descr['session'] = true; |
|
| 1490 | + $p->descr['session'] = true; |
|
| 1491 | 1491 | |
| 1492 | - $f = function_exists('balise_ENV') |
|
| 1493 | - ? 'balise_ENV' |
|
| 1494 | - : 'balise_ENV_dist'; |
|
| 1492 | + $f = function_exists('balise_ENV') |
|
| 1493 | + ? 'balise_ENV' |
|
| 1494 | + : 'balise_ENV_dist'; |
|
| 1495 | 1495 | |
| 1496 | - $p = $f($p, '$GLOBALS["visiteur_session"]??[]'); |
|
| 1496 | + $p = $f($p, '$GLOBALS["visiteur_session"]??[]'); |
|
| 1497 | 1497 | |
| 1498 | - return $p; |
|
| 1498 | + return $p; |
|
| 1499 | 1499 | } |
| 1500 | 1500 | |
| 1501 | 1501 | |
@@ -1518,18 +1518,18 @@ discard block |
||
| 1518 | 1518 | * Pile completée du code PHP d'exécution de la balise |
| 1519 | 1519 | **/ |
| 1520 | 1520 | function balise_SESSION_SET_dist($p) { |
| 1521 | - $_nom = interprete_argument_balise(1, $p); |
|
| 1522 | - $_val = interprete_argument_balise(2, $p); |
|
| 1523 | - if (!$_nom or !$_val) { |
|
| 1524 | - $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'SESSION_SET']]; |
|
| 1525 | - erreur_squelette($err_b_s_a, $p); |
|
| 1526 | - } else { |
|
| 1527 | - $p->code = '(include_spip("inc/session") AND session_set(' . $_nom . ',' . $_val . '))'; |
|
| 1528 | - } |
|
| 1521 | + $_nom = interprete_argument_balise(1, $p); |
|
| 1522 | + $_val = interprete_argument_balise(2, $p); |
|
| 1523 | + if (!$_nom or !$_val) { |
|
| 1524 | + $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'SESSION_SET']]; |
|
| 1525 | + erreur_squelette($err_b_s_a, $p); |
|
| 1526 | + } else { |
|
| 1527 | + $p->code = '(include_spip("inc/session") AND session_set(' . $_nom . ',' . $_val . '))'; |
|
| 1528 | + } |
|
| 1529 | 1529 | |
| 1530 | - $p->interdire_scripts = false; |
|
| 1530 | + $p->interdire_scripts = false; |
|
| 1531 | 1531 | |
| 1532 | - return $p; |
|
| 1532 | + return $p; |
|
| 1533 | 1533 | } |
| 1534 | 1534 | |
| 1535 | 1535 | |
@@ -1560,30 +1560,30 @@ discard block |
||
| 1560 | 1560 | * Pile completée du code PHP d'exécution de la balise |
| 1561 | 1561 | **/ |
| 1562 | 1562 | function balise_EVAL_dist($p) { |
| 1563 | - $php = interprete_argument_balise(1, $p); |
|
| 1564 | - if ($php) { |
|
| 1565 | - # optimisation sur les #EVAL{une expression sans #BALISE} |
|
| 1566 | - # attention au commentaire "// x signes" qui precede |
|
| 1567 | - if ( |
|
| 1568 | - preg_match( |
|
| 1569 | - ",^([[:space:]]*//[^\n]*\n)'([^']+)'$,ms", |
|
| 1570 | - $php, |
|
| 1571 | - $r |
|
| 1572 | - ) |
|
| 1573 | - ) { |
|
| 1574 | - $p->code = /* $r[1]. */ |
|
| 1575 | - '(' . $r[2] . ')'; |
|
| 1576 | - } else { |
|
| 1577 | - $p->code = "eval('return '.$php.';')"; |
|
| 1578 | - } |
|
| 1579 | - } else { |
|
| 1580 | - $msg = ['zbug_balise_sans_argument', ['balise' => ' EVAL']]; |
|
| 1581 | - erreur_squelette($msg, $p); |
|
| 1582 | - } |
|
| 1583 | - |
|
| 1584 | - #$p->interdire_scripts = true; |
|
| 1585 | - |
|
| 1586 | - return $p; |
|
| 1563 | + $php = interprete_argument_balise(1, $p); |
|
| 1564 | + if ($php) { |
|
| 1565 | + # optimisation sur les #EVAL{une expression sans #BALISE} |
|
| 1566 | + # attention au commentaire "// x signes" qui precede |
|
| 1567 | + if ( |
|
| 1568 | + preg_match( |
|
| 1569 | + ",^([[:space:]]*//[^\n]*\n)'([^']+)'$,ms", |
|
| 1570 | + $php, |
|
| 1571 | + $r |
|
| 1572 | + ) |
|
| 1573 | + ) { |
|
| 1574 | + $p->code = /* $r[1]. */ |
|
| 1575 | + '(' . $r[2] . ')'; |
|
| 1576 | + } else { |
|
| 1577 | + $p->code = "eval('return '.$php.';')"; |
|
| 1578 | + } |
|
| 1579 | + } else { |
|
| 1580 | + $msg = ['zbug_balise_sans_argument', ['balise' => ' EVAL']]; |
|
| 1581 | + erreur_squelette($msg, $p); |
|
| 1582 | + } |
|
| 1583 | + |
|
| 1584 | + #$p->interdire_scripts = true; |
|
| 1585 | + |
|
| 1586 | + return $p; |
|
| 1587 | 1587 | } |
| 1588 | 1588 | |
| 1589 | 1589 | |
@@ -1613,19 +1613,19 @@ discard block |
||
| 1613 | 1613 | **/ |
| 1614 | 1614 | function balise_CHAMP_SQL_dist($p) { |
| 1615 | 1615 | |
| 1616 | - if ( |
|
| 1617 | - $p->param |
|
| 1618 | - and isset($p->param[0][1][0]) |
|
| 1619 | - and $champ = ($p->param[0][1][0]->texte) |
|
| 1620 | - ) { |
|
| 1621 | - $p->code = champ_sql($champ, $p); |
|
| 1622 | - } else { |
|
| 1623 | - $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => ' CHAMP_SQL']]; |
|
| 1624 | - erreur_squelette($err_b_s_a, $p); |
|
| 1625 | - } |
|
| 1616 | + if ( |
|
| 1617 | + $p->param |
|
| 1618 | + and isset($p->param[0][1][0]) |
|
| 1619 | + and $champ = ($p->param[0][1][0]->texte) |
|
| 1620 | + ) { |
|
| 1621 | + $p->code = champ_sql($champ, $p); |
|
| 1622 | + } else { |
|
| 1623 | + $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => ' CHAMP_SQL']]; |
|
| 1624 | + erreur_squelette($err_b_s_a, $p); |
|
| 1625 | + } |
|
| 1626 | 1626 | |
| 1627 | - #$p->interdire_scripts = true; |
|
| 1628 | - return $p; |
|
| 1627 | + #$p->interdire_scripts = true; |
|
| 1628 | + return $p; |
|
| 1629 | 1629 | } |
| 1630 | 1630 | |
| 1631 | 1631 | /** |
@@ -1651,13 +1651,13 @@ discard block |
||
| 1651 | 1651 | * Pile complétée par le code à générer |
| 1652 | 1652 | **/ |
| 1653 | 1653 | function balise_VAL_dist($p) { |
| 1654 | - $p->code = interprete_argument_balise(1, $p) ?? ''; |
|
| 1655 | - if (!strlen($p->code)) { |
|
| 1656 | - $p->code = "''"; |
|
| 1657 | - } |
|
| 1658 | - $p->interdire_scripts = false; |
|
| 1654 | + $p->code = interprete_argument_balise(1, $p) ?? ''; |
|
| 1655 | + if (!strlen($p->code)) { |
|
| 1656 | + $p->code = "''"; |
|
| 1657 | + } |
|
| 1658 | + $p->interdire_scripts = false; |
|
| 1659 | 1659 | |
| 1660 | - return $p; |
|
| 1660 | + return $p; |
|
| 1661 | 1661 | } |
| 1662 | 1662 | |
| 1663 | 1663 | /** |
@@ -1686,10 +1686,10 @@ discard block |
||
| 1686 | 1686 | * Pile complétée par le code à générer |
| 1687 | 1687 | **/ |
| 1688 | 1688 | function balise_REM_dist($p) { |
| 1689 | - $p->code = "''"; |
|
| 1690 | - $p->interdire_scripts = false; |
|
| 1689 | + $p->code = "''"; |
|
| 1690 | + $p->interdire_scripts = false; |
|
| 1691 | 1691 | |
| 1692 | - return $p; |
|
| 1692 | + return $p; |
|
| 1693 | 1693 | } |
| 1694 | 1694 | |
| 1695 | 1695 | /** |
@@ -1699,10 +1699,10 @@ discard block |
||
| 1699 | 1699 | * @return mixed |
| 1700 | 1700 | */ |
| 1701 | 1701 | function balise_NULL_dist($p) { |
| 1702 | - $p->code = 'null'; |
|
| 1703 | - $p->interdire_scripts = false; |
|
| 1702 | + $p->code = 'null'; |
|
| 1703 | + $p->interdire_scripts = false; |
|
| 1704 | 1704 | |
| 1705 | - return $p; |
|
| 1705 | + return $p; |
|
| 1706 | 1706 | } |
| 1707 | 1707 | |
| 1708 | 1708 | |
@@ -1726,18 +1726,18 @@ discard block |
||
| 1726 | 1726 | **/ |
| 1727 | 1727 | function balise_HTTP_HEADER_dist($p) { |
| 1728 | 1728 | |
| 1729 | - $header = interprete_argument_balise(1, $p); |
|
| 1730 | - if (!$header) { |
|
| 1731 | - $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'HTTP_HEADER']]; |
|
| 1732 | - erreur_squelette($err_b_s_a, $p); |
|
| 1733 | - } else { |
|
| 1734 | - $p->code = "'<'.'?php header(' . _q(" |
|
| 1735 | - . $header |
|
| 1736 | - . ") . '); ?'.'>'"; |
|
| 1737 | - } |
|
| 1738 | - $p->interdire_scripts = false; |
|
| 1729 | + $header = interprete_argument_balise(1, $p); |
|
| 1730 | + if (!$header) { |
|
| 1731 | + $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'HTTP_HEADER']]; |
|
| 1732 | + erreur_squelette($err_b_s_a, $p); |
|
| 1733 | + } else { |
|
| 1734 | + $p->code = "'<'.'?php header(' . _q(" |
|
| 1735 | + . $header |
|
| 1736 | + . ") . '); ?'.'>'"; |
|
| 1737 | + } |
|
| 1738 | + $p->interdire_scripts = false; |
|
| 1739 | 1739 | |
| 1740 | - return $p; |
|
| 1740 | + return $p; |
|
| 1741 | 1741 | } |
| 1742 | 1742 | |
| 1743 | 1743 | |
@@ -1762,22 +1762,22 @@ discard block |
||
| 1762 | 1762 | * Pile complétée par le code à générer |
| 1763 | 1763 | **/ |
| 1764 | 1764 | function balise_FILTRE_dist($p) { |
| 1765 | - if ($p->param) { |
|
| 1766 | - $args = []; |
|
| 1767 | - foreach ($p->param as $i => $ignore) { |
|
| 1768 | - $args[] = interprete_argument_balise($i + 1, $p); |
|
| 1769 | - } |
|
| 1770 | - $p->code = "'<' . '" |
|
| 1771 | - . '?php header("X-Spip-Filtre: \'.' |
|
| 1772 | - . join('.\'|\'.', $args) |
|
| 1773 | - . " . '\"); ?'.'>'"; |
|
| 1765 | + if ($p->param) { |
|
| 1766 | + $args = []; |
|
| 1767 | + foreach ($p->param as $i => $ignore) { |
|
| 1768 | + $args[] = interprete_argument_balise($i + 1, $p); |
|
| 1769 | + } |
|
| 1770 | + $p->code = "'<' . '" |
|
| 1771 | + . '?php header("X-Spip-Filtre: \'.' |
|
| 1772 | + . join('.\'|\'.', $args) |
|
| 1773 | + . " . '\"); ?'.'>'"; |
|
| 1774 | 1774 | |
| 1775 | - $p->interdire_scripts = false; |
|
| 1775 | + $p->interdire_scripts = false; |
|
| 1776 | 1776 | |
| 1777 | - return $p; |
|
| 1778 | - } |
|
| 1777 | + return $p; |
|
| 1778 | + } |
|
| 1779 | 1779 | |
| 1780 | - return null; |
|
| 1780 | + return null; |
|
| 1781 | 1781 | } |
| 1782 | 1782 | |
| 1783 | 1783 | |
@@ -1813,55 +1813,55 @@ discard block |
||
| 1813 | 1813 | **/ |
| 1814 | 1814 | function balise_CACHE_dist($p) { |
| 1815 | 1815 | |
| 1816 | - if ($p->param) { |
|
| 1817 | - $duree = valeur_numerique($p->param[0][1][0]->texte); |
|
| 1818 | - |
|
| 1819 | - // noter la duree du cache dans un entete proprietaire |
|
| 1820 | - |
|
| 1821 | - $code = "'<'.'" . '?php header("X-Spip-Cache: ' |
|
| 1822 | - . $duree |
|
| 1823 | - . '"); ?' . "'.'>'"; |
|
| 1824 | - |
|
| 1825 | - // Remplir le header Cache-Control |
|
| 1826 | - // cas #CACHE{0} |
|
| 1827 | - if ($duree == 0) { |
|
| 1828 | - $code .= ".'<'.'" |
|
| 1829 | - . '?php header("Cache-Control: no-cache, must-revalidate"); ?' |
|
| 1830 | - . "'.'><'.'" |
|
| 1831 | - . '?php header("Pragma: no-cache"); ?' |
|
| 1832 | - . "'.'>'"; |
|
| 1833 | - } |
|
| 1834 | - |
|
| 1835 | - // recuperer les parametres suivants |
|
| 1836 | - $i = 1; |
|
| 1837 | - while (isset($p->param[0][++$i])) { |
|
| 1838 | - $pa = ($p->param[0][$i][0]->texte); |
|
| 1839 | - |
|
| 1840 | - if ( |
|
| 1841 | - $pa == 'cache-client' |
|
| 1842 | - and $duree > 0 |
|
| 1843 | - ) { |
|
| 1844 | - $code .= ".'<'.'" . '?php header("Cache-Control: max-age=' |
|
| 1845 | - . $duree |
|
| 1846 | - . '"); ?' . "'.'>'"; |
|
| 1847 | - // il semble logique, si on cache-client, de ne pas invalider |
|
| 1848 | - $pa = 'statique'; |
|
| 1849 | - } |
|
| 1850 | - |
|
| 1851 | - if ( |
|
| 1852 | - $pa == 'statique' |
|
| 1853 | - and $duree > 0 |
|
| 1854 | - ) { |
|
| 1855 | - $code .= ".'<'.'" . '?php header("X-Spip-Statique: oui"); ?' . "'.'>'"; |
|
| 1856 | - } |
|
| 1857 | - } |
|
| 1858 | - } else { |
|
| 1859 | - $code = "''"; |
|
| 1860 | - } |
|
| 1861 | - $p->code = $code; |
|
| 1862 | - $p->interdire_scripts = false; |
|
| 1863 | - |
|
| 1864 | - return $p; |
|
| 1816 | + if ($p->param) { |
|
| 1817 | + $duree = valeur_numerique($p->param[0][1][0]->texte); |
|
| 1818 | + |
|
| 1819 | + // noter la duree du cache dans un entete proprietaire |
|
| 1820 | + |
|
| 1821 | + $code = "'<'.'" . '?php header("X-Spip-Cache: ' |
|
| 1822 | + . $duree |
|
| 1823 | + . '"); ?' . "'.'>'"; |
|
| 1824 | + |
|
| 1825 | + // Remplir le header Cache-Control |
|
| 1826 | + // cas #CACHE{0} |
|
| 1827 | + if ($duree == 0) { |
|
| 1828 | + $code .= ".'<'.'" |
|
| 1829 | + . '?php header("Cache-Control: no-cache, must-revalidate"); ?' |
|
| 1830 | + . "'.'><'.'" |
|
| 1831 | + . '?php header("Pragma: no-cache"); ?' |
|
| 1832 | + . "'.'>'"; |
|
| 1833 | + } |
|
| 1834 | + |
|
| 1835 | + // recuperer les parametres suivants |
|
| 1836 | + $i = 1; |
|
| 1837 | + while (isset($p->param[0][++$i])) { |
|
| 1838 | + $pa = ($p->param[0][$i][0]->texte); |
|
| 1839 | + |
|
| 1840 | + if ( |
|
| 1841 | + $pa == 'cache-client' |
|
| 1842 | + and $duree > 0 |
|
| 1843 | + ) { |
|
| 1844 | + $code .= ".'<'.'" . '?php header("Cache-Control: max-age=' |
|
| 1845 | + . $duree |
|
| 1846 | + . '"); ?' . "'.'>'"; |
|
| 1847 | + // il semble logique, si on cache-client, de ne pas invalider |
|
| 1848 | + $pa = 'statique'; |
|
| 1849 | + } |
|
| 1850 | + |
|
| 1851 | + if ( |
|
| 1852 | + $pa == 'statique' |
|
| 1853 | + and $duree > 0 |
|
| 1854 | + ) { |
|
| 1855 | + $code .= ".'<'.'" . '?php header("X-Spip-Statique: oui"); ?' . "'.'>'"; |
|
| 1856 | + } |
|
| 1857 | + } |
|
| 1858 | + } else { |
|
| 1859 | + $code = "''"; |
|
| 1860 | + } |
|
| 1861 | + $p->code = $code; |
|
| 1862 | + $p->interdire_scripts = false; |
|
| 1863 | + |
|
| 1864 | + return $p; |
|
| 1865 | 1865 | } |
| 1866 | 1866 | |
| 1867 | 1867 | |
@@ -1893,13 +1893,13 @@ discard block |
||
| 1893 | 1893 | * Pile complétée par le code à générer |
| 1894 | 1894 | */ |
| 1895 | 1895 | function balise_INSERT_HEAD_dist($p) { |
| 1896 | - $p->code = "'<'.'" |
|
| 1897 | - . '?php header("X-Spip-Filtre: insert_head_css_conditionnel"); ?' |
|
| 1898 | - . "'.'>'"; |
|
| 1899 | - $p->code .= ". pipeline('insert_head','<!-- insert_head -->')"; |
|
| 1900 | - $p->interdire_scripts = false; |
|
| 1896 | + $p->code = "'<'.'" |
|
| 1897 | + . '?php header("X-Spip-Filtre: insert_head_css_conditionnel"); ?' |
|
| 1898 | + . "'.'>'"; |
|
| 1899 | + $p->code .= ". pipeline('insert_head','<!-- insert_head -->')"; |
|
| 1900 | + $p->interdire_scripts = false; |
|
| 1901 | 1901 | |
| 1902 | - return $p; |
|
| 1902 | + return $p; |
|
| 1903 | 1903 | } |
| 1904 | 1904 | |
| 1905 | 1905 | /** |
@@ -1917,10 +1917,10 @@ discard block |
||
| 1917 | 1917 | * Pile complétée par le code à générer |
| 1918 | 1918 | */ |
| 1919 | 1919 | function balise_INSERT_HEAD_CSS_dist($p) { |
| 1920 | - $p->code = "pipeline('insert_head_css','<!-- insert_head_css -->')"; |
|
| 1921 | - $p->interdire_scripts = false; |
|
| 1920 | + $p->code = "pipeline('insert_head_css','<!-- insert_head_css -->')"; |
|
| 1921 | + $p->interdire_scripts = false; |
|
| 1922 | 1922 | |
| 1923 | - return $p; |
|
| 1923 | + return $p; |
|
| 1924 | 1924 | } |
| 1925 | 1925 | |
| 1926 | 1926 | /** |
@@ -1935,11 +1935,11 @@ discard block |
||
| 1935 | 1935 | * Pile complétée par le code à générer |
| 1936 | 1936 | **/ |
| 1937 | 1937 | function balise_INCLUDE_dist($p) { |
| 1938 | - if (function_exists('balise_INCLURE')) { |
|
| 1939 | - return balise_INCLURE($p); |
|
| 1940 | - } else { |
|
| 1941 | - return balise_INCLURE_dist($p); |
|
| 1942 | - } |
|
| 1938 | + if (function_exists('balise_INCLURE')) { |
|
| 1939 | + return balise_INCLURE($p); |
|
| 1940 | + } else { |
|
| 1941 | + return balise_INCLURE_dist($p); |
|
| 1942 | + } |
|
| 1943 | 1943 | } |
| 1944 | 1944 | |
| 1945 | 1945 | /** |
@@ -1973,66 +1973,66 @@ discard block |
||
| 1973 | 1973 | * Pile complétée par le code à générer |
| 1974 | 1974 | **/ |
| 1975 | 1975 | function balise_INCLURE_dist($p) { |
| 1976 | - $id_boucle = $p->id_boucle; |
|
| 1977 | - // la lang n'est pas passe de facon automatique par argumenter |
|
| 1978 | - // mais le sera pas recuperer_fond, sauf si etoile=>true est passe |
|
| 1979 | - // en option |
|
| 1980 | - |
|
| 1981 | - $_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $id_boucle, false, false); |
|
| 1982 | - |
|
| 1983 | - // erreur de syntaxe = fond absent |
|
| 1984 | - // (2 messages d'erreur SPIP pour le prix d'un, mais pas d'erreur PHP |
|
| 1985 | - if (!$_contexte) { |
|
| 1986 | - $_contexte = []; |
|
| 1987 | - } |
|
| 1988 | - |
|
| 1989 | - if (isset($_contexte['fond'])) { |
|
| 1990 | - $f = $_contexte['fond']; |
|
| 1991 | - // toujours vrai : |
|
| 1992 | - if (preg_match('/^.fond.\s*=>(.*)$/s', $f, $r)) { |
|
| 1993 | - $f = $r[1]; |
|
| 1994 | - unset($_contexte['fond']); |
|
| 1995 | - } else { |
|
| 1996 | - spip_log('compilation de #INCLURE a revoir'); |
|
| 1997 | - } |
|
| 1998 | - |
|
| 1999 | - // #INCLURE{doublons} |
|
| 2000 | - if (isset($_contexte['doublons'])) { |
|
| 2001 | - $_contexte['doublons'] = "'doublons' => \$doublons"; |
|
| 2002 | - } |
|
| 2003 | - |
|
| 2004 | - // Critere d'inclusion {env} (et {self} pour compatibilite ascendante) |
|
| 2005 | - $flag_env = false; |
|
| 2006 | - if (isset($_contexte['env']) or isset($_contexte['self'])) { |
|
| 2007 | - $flag_env = true; |
|
| 2008 | - unset($_contexte['env']); |
|
| 2009 | - } |
|
| 2010 | - |
|
| 2011 | - $_options = []; |
|
| 2012 | - if (isset($_contexte['ajax'])) { |
|
| 2013 | - $_options[] = preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']); |
|
| 2014 | - unset($_contexte['ajax']); |
|
| 2015 | - } |
|
| 2016 | - if ($p->etoile) { |
|
| 2017 | - $_options[] = "'etoile'=>true"; |
|
| 2018 | - } |
|
| 2019 | - $_options[] = "'compil'=>array(" . memoriser_contexte_compil($p) . ')'; |
|
| 2020 | - |
|
| 2021 | - $_l = 'array(' . join(",\n\t", $_contexte) . ')'; |
|
| 2022 | - if ($flag_env) { |
|
| 2023 | - $_l = "array_merge(\$Pile[0],$_l)"; |
|
| 2024 | - } |
|
| 2025 | - |
|
| 2026 | - $p->code = sprintf(CODE_RECUPERER_FOND, $f, $_l, join(',', $_options), "_request('connect') ?? ''"); |
|
| 2027 | - } elseif (!isset($_contexte[1])) { |
|
| 2028 | - $msg = ['zbug_balise_sans_argument', ['balise' => ' INCLURE']]; |
|
| 2029 | - erreur_squelette($msg, $p); |
|
| 2030 | - } else { |
|
| 2031 | - $p->code = 'charge_scripts(' . $_contexte[1] . ',false)'; |
|
| 2032 | - } |
|
| 2033 | - |
|
| 2034 | - $p->interdire_scripts = false; // la securite est assuree par recuperer_fond |
|
| 2035 | - return $p; |
|
| 1976 | + $id_boucle = $p->id_boucle; |
|
| 1977 | + // la lang n'est pas passe de facon automatique par argumenter |
|
| 1978 | + // mais le sera pas recuperer_fond, sauf si etoile=>true est passe |
|
| 1979 | + // en option |
|
| 1980 | + |
|
| 1981 | + $_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $id_boucle, false, false); |
|
| 1982 | + |
|
| 1983 | + // erreur de syntaxe = fond absent |
|
| 1984 | + // (2 messages d'erreur SPIP pour le prix d'un, mais pas d'erreur PHP |
|
| 1985 | + if (!$_contexte) { |
|
| 1986 | + $_contexte = []; |
|
| 1987 | + } |
|
| 1988 | + |
|
| 1989 | + if (isset($_contexte['fond'])) { |
|
| 1990 | + $f = $_contexte['fond']; |
|
| 1991 | + // toujours vrai : |
|
| 1992 | + if (preg_match('/^.fond.\s*=>(.*)$/s', $f, $r)) { |
|
| 1993 | + $f = $r[1]; |
|
| 1994 | + unset($_contexte['fond']); |
|
| 1995 | + } else { |
|
| 1996 | + spip_log('compilation de #INCLURE a revoir'); |
|
| 1997 | + } |
|
| 1998 | + |
|
| 1999 | + // #INCLURE{doublons} |
|
| 2000 | + if (isset($_contexte['doublons'])) { |
|
| 2001 | + $_contexte['doublons'] = "'doublons' => \$doublons"; |
|
| 2002 | + } |
|
| 2003 | + |
|
| 2004 | + // Critere d'inclusion {env} (et {self} pour compatibilite ascendante) |
|
| 2005 | + $flag_env = false; |
|
| 2006 | + if (isset($_contexte['env']) or isset($_contexte['self'])) { |
|
| 2007 | + $flag_env = true; |
|
| 2008 | + unset($_contexte['env']); |
|
| 2009 | + } |
|
| 2010 | + |
|
| 2011 | + $_options = []; |
|
| 2012 | + if (isset($_contexte['ajax'])) { |
|
| 2013 | + $_options[] = preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']); |
|
| 2014 | + unset($_contexte['ajax']); |
|
| 2015 | + } |
|
| 2016 | + if ($p->etoile) { |
|
| 2017 | + $_options[] = "'etoile'=>true"; |
|
| 2018 | + } |
|
| 2019 | + $_options[] = "'compil'=>array(" . memoriser_contexte_compil($p) . ')'; |
|
| 2020 | + |
|
| 2021 | + $_l = 'array(' . join(",\n\t", $_contexte) . ')'; |
|
| 2022 | + if ($flag_env) { |
|
| 2023 | + $_l = "array_merge(\$Pile[0],$_l)"; |
|
| 2024 | + } |
|
| 2025 | + |
|
| 2026 | + $p->code = sprintf(CODE_RECUPERER_FOND, $f, $_l, join(',', $_options), "_request('connect') ?? ''"); |
|
| 2027 | + } elseif (!isset($_contexte[1])) { |
|
| 2028 | + $msg = ['zbug_balise_sans_argument', ['balise' => ' INCLURE']]; |
|
| 2029 | + erreur_squelette($msg, $p); |
|
| 2030 | + } else { |
|
| 2031 | + $p->code = 'charge_scripts(' . $_contexte[1] . ',false)'; |
|
| 2032 | + } |
|
| 2033 | + |
|
| 2034 | + $p->interdire_scripts = false; // la securite est assuree par recuperer_fond |
|
| 2035 | + return $p; |
|
| 2036 | 2036 | } |
| 2037 | 2037 | |
| 2038 | 2038 | |
@@ -2060,69 +2060,69 @@ discard block |
||
| 2060 | 2060 | **/ |
| 2061 | 2061 | function balise_MODELE_dist($p) { |
| 2062 | 2062 | |
| 2063 | - $_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $p->id_boucle, false); |
|
| 2064 | - |
|
| 2065 | - // erreur de syntaxe = fond absent |
|
| 2066 | - // (2 messages d'erreur SPIP pour le prix d'un, mais pas d'erreur PHP |
|
| 2067 | - if (!$_contexte) { |
|
| 2068 | - $_contexte = []; |
|
| 2069 | - } |
|
| 2070 | - |
|
| 2071 | - if (!isset($_contexte[1])) { |
|
| 2072 | - $msg = ['zbug_balise_sans_argument', ['balise' => ' MODELE']]; |
|
| 2073 | - erreur_squelette($msg, $p); |
|
| 2074 | - } else { |
|
| 2075 | - $nom = $_contexte[1]; |
|
| 2076 | - unset($_contexte[1]); |
|
| 2077 | - |
|
| 2078 | - if (preg_match("/^\s*'[^']*'/s", $nom)) { |
|
| 2079 | - $nom = "'modeles/" . substr($nom, 1); |
|
| 2080 | - } else { |
|
| 2081 | - $nom = "'modeles/' . $nom"; |
|
| 2082 | - } |
|
| 2083 | - |
|
| 2084 | - $flag_env = false; |
|
| 2085 | - if (isset($_contexte['env'])) { |
|
| 2086 | - $flag_env = true; |
|
| 2087 | - unset($_contexte['env']); |
|
| 2088 | - } |
|
| 2089 | - |
|
| 2090 | - // Incoherence dans la syntaxe du contexte. A revoir. |
|
| 2091 | - // Reserver la cle primaire de la boucle courante si elle existe |
|
| 2092 | - if (isset($p->boucles[$p->id_boucle]->primary)) { |
|
| 2093 | - $primary = $p->boucles[$p->id_boucle]->primary; |
|
| 2094 | - if (!strpos($primary, ',')) { |
|
| 2095 | - $id = champ_sql($primary, $p); |
|
| 2096 | - $_contexte[] = "'$primary'=>" . $id; |
|
| 2097 | - $_contexte[] = "'id'=>" . $id; |
|
| 2098 | - } |
|
| 2099 | - } |
|
| 2100 | - $_contexte[] = "'recurs'=>(++\$recurs)"; |
|
| 2101 | - $connect = ''; |
|
| 2102 | - if (isset($p->boucles[$p->id_boucle])) { |
|
| 2103 | - $connect = $p->boucles[$p->id_boucle]->sql_serveur; |
|
| 2104 | - } |
|
| 2105 | - |
|
| 2106 | - $_options = memoriser_contexte_compil($p); |
|
| 2107 | - $_options = "'compil'=>array($_options), 'trim'=>true"; |
|
| 2108 | - if (isset($_contexte['ajax'])) { |
|
| 2109 | - $_options .= ', ' . preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']); |
|
| 2110 | - unset($_contexte['ajax']); |
|
| 2111 | - } |
|
| 2112 | - |
|
| 2113 | - $_l = 'array(' . join(",\n\t", $_contexte) . ')'; |
|
| 2114 | - if ($flag_env) { |
|
| 2115 | - $_l = "array_merge(\$Pile[0],$_l)"; |
|
| 2116 | - } |
|
| 2117 | - |
|
| 2118 | - $page = sprintf(CODE_RECUPERER_FOND, $nom, $_l, $_options, _q($connect)); |
|
| 2119 | - |
|
| 2120 | - $p->code = "\n\t(((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))>=5)? '' :\n\t$page)\n"; |
|
| 2121 | - |
|
| 2122 | - $p->interdire_scripts = false; // securite assuree par le squelette |
|
| 2123 | - } |
|
| 2124 | - |
|
| 2125 | - return $p; |
|
| 2063 | + $_contexte = argumenter_inclure($p->param, true, $p, $p->boucles, $p->id_boucle, false); |
|
| 2064 | + |
|
| 2065 | + // erreur de syntaxe = fond absent |
|
| 2066 | + // (2 messages d'erreur SPIP pour le prix d'un, mais pas d'erreur PHP |
|
| 2067 | + if (!$_contexte) { |
|
| 2068 | + $_contexte = []; |
|
| 2069 | + } |
|
| 2070 | + |
|
| 2071 | + if (!isset($_contexte[1])) { |
|
| 2072 | + $msg = ['zbug_balise_sans_argument', ['balise' => ' MODELE']]; |
|
| 2073 | + erreur_squelette($msg, $p); |
|
| 2074 | + } else { |
|
| 2075 | + $nom = $_contexte[1]; |
|
| 2076 | + unset($_contexte[1]); |
|
| 2077 | + |
|
| 2078 | + if (preg_match("/^\s*'[^']*'/s", $nom)) { |
|
| 2079 | + $nom = "'modeles/" . substr($nom, 1); |
|
| 2080 | + } else { |
|
| 2081 | + $nom = "'modeles/' . $nom"; |
|
| 2082 | + } |
|
| 2083 | + |
|
| 2084 | + $flag_env = false; |
|
| 2085 | + if (isset($_contexte['env'])) { |
|
| 2086 | + $flag_env = true; |
|
| 2087 | + unset($_contexte['env']); |
|
| 2088 | + } |
|
| 2089 | + |
|
| 2090 | + // Incoherence dans la syntaxe du contexte. A revoir. |
|
| 2091 | + // Reserver la cle primaire de la boucle courante si elle existe |
|
| 2092 | + if (isset($p->boucles[$p->id_boucle]->primary)) { |
|
| 2093 | + $primary = $p->boucles[$p->id_boucle]->primary; |
|
| 2094 | + if (!strpos($primary, ',')) { |
|
| 2095 | + $id = champ_sql($primary, $p); |
|
| 2096 | + $_contexte[] = "'$primary'=>" . $id; |
|
| 2097 | + $_contexte[] = "'id'=>" . $id; |
|
| 2098 | + } |
|
| 2099 | + } |
|
| 2100 | + $_contexte[] = "'recurs'=>(++\$recurs)"; |
|
| 2101 | + $connect = ''; |
|
| 2102 | + if (isset($p->boucles[$p->id_boucle])) { |
|
| 2103 | + $connect = $p->boucles[$p->id_boucle]->sql_serveur; |
|
| 2104 | + } |
|
| 2105 | + |
|
| 2106 | + $_options = memoriser_contexte_compil($p); |
|
| 2107 | + $_options = "'compil'=>array($_options), 'trim'=>true"; |
|
| 2108 | + if (isset($_contexte['ajax'])) { |
|
| 2109 | + $_options .= ', ' . preg_replace(',=>(.*)$,ims', '=> ($v=(\\1))?$v:true', $_contexte['ajax']); |
|
| 2110 | + unset($_contexte['ajax']); |
|
| 2111 | + } |
|
| 2112 | + |
|
| 2113 | + $_l = 'array(' . join(",\n\t", $_contexte) . ')'; |
|
| 2114 | + if ($flag_env) { |
|
| 2115 | + $_l = "array_merge(\$Pile[0],$_l)"; |
|
| 2116 | + } |
|
| 2117 | + |
|
| 2118 | + $page = sprintf(CODE_RECUPERER_FOND, $nom, $_l, $_options, _q($connect)); |
|
| 2119 | + |
|
| 2120 | + $p->code = "\n\t(((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))>=5)? '' :\n\t$page)\n"; |
|
| 2121 | + |
|
| 2122 | + $p->interdire_scripts = false; // securite assuree par le squelette |
|
| 2123 | + } |
|
| 2124 | + |
|
| 2125 | + return $p; |
|
| 2126 | 2126 | } |
| 2127 | 2127 | |
| 2128 | 2128 | |
@@ -2146,21 +2146,21 @@ discard block |
||
| 2146 | 2146 | * Pile complétée par le code à générer |
| 2147 | 2147 | **/ |
| 2148 | 2148 | function balise_SET_dist($p) { |
| 2149 | - $_nom = interprete_argument_balise(1, $p); |
|
| 2150 | - $_val = interprete_argument_balise(2, $p); |
|
| 2149 | + $_nom = interprete_argument_balise(1, $p); |
|
| 2150 | + $_val = interprete_argument_balise(2, $p); |
|
| 2151 | 2151 | |
| 2152 | - if (!$_nom or !$_val) { |
|
| 2153 | - $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'SET']]; |
|
| 2154 | - erreur_squelette($err_b_s_a, $p); |
|
| 2155 | - } |
|
| 2156 | - // affectation $_zzz inutile, mais permet de contourner un bug OpCode cache sous PHP 5.5.4 |
|
| 2157 | - // cf https://bugs.php.net/bug.php?id=65845 |
|
| 2158 | - else { |
|
| 2159 | - $p->code = "vide(\$Pile['vars'][\$_zzz=(string)$_nom] = $_val)"; |
|
| 2160 | - } |
|
| 2152 | + if (!$_nom or !$_val) { |
|
| 2153 | + $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'SET']]; |
|
| 2154 | + erreur_squelette($err_b_s_a, $p); |
|
| 2155 | + } |
|
| 2156 | + // affectation $_zzz inutile, mais permet de contourner un bug OpCode cache sous PHP 5.5.4 |
|
| 2157 | + // cf https://bugs.php.net/bug.php?id=65845 |
|
| 2158 | + else { |
|
| 2159 | + $p->code = "vide(\$Pile['vars'][\$_zzz=(string)$_nom] = $_val)"; |
|
| 2160 | + } |
|
| 2161 | 2161 | |
| 2162 | - $p->interdire_scripts = false; // la balise ne renvoie rien |
|
| 2163 | - return $p; |
|
| 2162 | + $p->interdire_scripts = false; // la balise ne renvoie rien |
|
| 2163 | + return $p; |
|
| 2164 | 2164 | } |
| 2165 | 2165 | |
| 2166 | 2166 | |
@@ -2190,12 +2190,12 @@ discard block |
||
| 2190 | 2190 | * Pile complétée par le code à générer |
| 2191 | 2191 | **/ |
| 2192 | 2192 | function balise_GET_dist($p) { |
| 2193 | - $p->interdire_scripts = false; // le contenu vient de #SET, donc il est de confiance |
|
| 2194 | - if (function_exists('balise_ENV')) { |
|
| 2195 | - return balise_ENV($p, '$Pile["vars"]??[]'); |
|
| 2196 | - } else { |
|
| 2197 | - return balise_ENV_dist($p, '$Pile["vars"]??[]'); |
|
| 2198 | - } |
|
| 2193 | + $p->interdire_scripts = false; // le contenu vient de #SET, donc il est de confiance |
|
| 2194 | + if (function_exists('balise_ENV')) { |
|
| 2195 | + return balise_ENV($p, '$Pile["vars"]??[]'); |
|
| 2196 | + } else { |
|
| 2197 | + return balise_ENV_dist($p, '$Pile["vars"]??[]'); |
|
| 2198 | + } |
|
| 2199 | 2199 | } |
| 2200 | 2200 | |
| 2201 | 2201 | |
@@ -2218,22 +2218,22 @@ discard block |
||
| 2218 | 2218 | * Pile complétée par le code à générer |
| 2219 | 2219 | **/ |
| 2220 | 2220 | function balise_DOUBLONS_dist($p) { |
| 2221 | - if ($type = interprete_argument_balise(1, $p)) { |
|
| 2222 | - if ($famille = interprete_argument_balise(2, $p)) { |
|
| 2223 | - $type .= '.' . $famille; |
|
| 2224 | - } |
|
| 2225 | - $p->code = '(isset($doublons[' . $type . ']) ? $doublons[' . $type . '] : "")'; |
|
| 2226 | - if (!$p->etoile) { |
|
| 2227 | - $p->code = 'array_filter(array_map("intval",explode(",",' |
|
| 2228 | - . $p->code . ')))'; |
|
| 2229 | - } |
|
| 2230 | - } else { |
|
| 2231 | - $p->code = '$doublons'; |
|
| 2232 | - } |
|
| 2221 | + if ($type = interprete_argument_balise(1, $p)) { |
|
| 2222 | + if ($famille = interprete_argument_balise(2, $p)) { |
|
| 2223 | + $type .= '.' . $famille; |
|
| 2224 | + } |
|
| 2225 | + $p->code = '(isset($doublons[' . $type . ']) ? $doublons[' . $type . '] : "")'; |
|
| 2226 | + if (!$p->etoile) { |
|
| 2227 | + $p->code = 'array_filter(array_map("intval",explode(",",' |
|
| 2228 | + . $p->code . ')))'; |
|
| 2229 | + } |
|
| 2230 | + } else { |
|
| 2231 | + $p->code = '$doublons'; |
|
| 2232 | + } |
|
| 2233 | 2233 | |
| 2234 | - $p->interdire_scripts = false; |
|
| 2234 | + $p->interdire_scripts = false; |
|
| 2235 | 2235 | |
| 2236 | - return $p; |
|
| 2236 | + return $p; |
|
| 2237 | 2237 | } |
| 2238 | 2238 | |
| 2239 | 2239 | |
@@ -2256,18 +2256,18 @@ discard block |
||
| 2256 | 2256 | * Pile complétée par le code à générer |
| 2257 | 2257 | **/ |
| 2258 | 2258 | function balise_PIPELINE_dist($p) { |
| 2259 | - $_pipe = interprete_argument_balise(1, $p); |
|
| 2260 | - if (!$_pipe) { |
|
| 2261 | - $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'PIPELINE']]; |
|
| 2262 | - erreur_squelette($err_b_s_a, $p); |
|
| 2263 | - } else { |
|
| 2264 | - $_flux = interprete_argument_balise(2, $p); |
|
| 2265 | - $_flux = $_flux ?: "''"; |
|
| 2266 | - $p->code = "pipeline( $_pipe , $_flux )"; |
|
| 2267 | - $p->interdire_scripts = false; |
|
| 2268 | - } |
|
| 2259 | + $_pipe = interprete_argument_balise(1, $p); |
|
| 2260 | + if (!$_pipe) { |
|
| 2261 | + $err_b_s_a = ['zbug_balise_sans_argument', ['balise' => 'PIPELINE']]; |
|
| 2262 | + erreur_squelette($err_b_s_a, $p); |
|
| 2263 | + } else { |
|
| 2264 | + $_flux = interprete_argument_balise(2, $p); |
|
| 2265 | + $_flux = $_flux ?: "''"; |
|
| 2266 | + $p->code = "pipeline( $_pipe , $_flux )"; |
|
| 2267 | + $p->interdire_scripts = false; |
|
| 2268 | + } |
|
| 2269 | 2269 | |
| 2270 | - return $p; |
|
| 2270 | + return $p; |
|
| 2271 | 2271 | } |
| 2272 | 2272 | |
| 2273 | 2273 | |
@@ -2292,10 +2292,10 @@ discard block |
||
| 2292 | 2292 | * Pile complétée par le code à générer |
| 2293 | 2293 | **/ |
| 2294 | 2294 | function balise_EDIT_dist($p) { |
| 2295 | - $p->code = "''"; |
|
| 2296 | - $p->interdire_scripts = false; |
|
| 2295 | + $p->code = "''"; |
|
| 2296 | + $p->interdire_scripts = false; |
|
| 2297 | 2297 | |
| 2298 | - return $p; |
|
| 2298 | + return $p; |
|
| 2299 | 2299 | } |
| 2300 | 2300 | |
| 2301 | 2301 | |
@@ -2318,11 +2318,11 @@ discard block |
||
| 2318 | 2318 | * Pile complétée par le code à générer |
| 2319 | 2319 | **/ |
| 2320 | 2320 | function balise_TOTAL_UNIQUE_dist($p) { |
| 2321 | - $_famille = interprete_argument_balise(1, $p); |
|
| 2322 | - $_famille = $_famille ?: "''"; |
|
| 2323 | - $p->code = "unique('', $_famille, true)"; |
|
| 2321 | + $_famille = interprete_argument_balise(1, $p); |
|
| 2322 | + $_famille = $_famille ?: "''"; |
|
| 2323 | + $p->code = "unique('', $_famille, true)"; |
|
| 2324 | 2324 | |
| 2325 | - return $p; |
|
| 2325 | + return $p; |
|
| 2326 | 2326 | } |
| 2327 | 2327 | |
| 2328 | 2328 | /** |
@@ -2345,19 +2345,19 @@ discard block |
||
| 2345 | 2345 | * Pile complétée par le code à générer |
| 2346 | 2346 | **/ |
| 2347 | 2347 | function balise_ARRAY_dist($p) { |
| 2348 | - $_code = []; |
|
| 2349 | - $n = 1; |
|
| 2350 | - do { |
|
| 2351 | - $_key = interprete_argument_balise($n++, $p); |
|
| 2352 | - $_val = interprete_argument_balise($n++, $p); |
|
| 2353 | - if ($_key and $_val) { |
|
| 2354 | - $_code[] = "$_key => $_val"; |
|
| 2355 | - } |
|
| 2356 | - } while ($_key && $_val); |
|
| 2357 | - $p->code = 'array(' . join(', ', $_code) . ')'; |
|
| 2358 | - $p->interdire_scripts = false; |
|
| 2348 | + $_code = []; |
|
| 2349 | + $n = 1; |
|
| 2350 | + do { |
|
| 2351 | + $_key = interprete_argument_balise($n++, $p); |
|
| 2352 | + $_val = interprete_argument_balise($n++, $p); |
|
| 2353 | + if ($_key and $_val) { |
|
| 2354 | + $_code[] = "$_key => $_val"; |
|
| 2355 | + } |
|
| 2356 | + } while ($_key && $_val); |
|
| 2357 | + $p->code = 'array(' . join(', ', $_code) . ')'; |
|
| 2358 | + $p->interdire_scripts = false; |
|
| 2359 | 2359 | |
| 2360 | - return $p; |
|
| 2360 | + return $p; |
|
| 2361 | 2361 | } |
| 2362 | 2362 | |
| 2363 | 2363 | /** |
@@ -2376,15 +2376,15 @@ discard block |
||
| 2376 | 2376 | * Pile complétée par le code à générer |
| 2377 | 2377 | */ |
| 2378 | 2378 | function balise_LISTE_dist($p) { |
| 2379 | - $_code = []; |
|
| 2380 | - $n = 1; |
|
| 2381 | - while ($_val = interprete_argument_balise($n++, $p)) { |
|
| 2382 | - $_code[] = $_val; |
|
| 2383 | - } |
|
| 2384 | - $p->code = 'array(' . join(', ', $_code) . ')'; |
|
| 2385 | - $p->interdire_scripts = false; |
|
| 2379 | + $_code = []; |
|
| 2380 | + $n = 1; |
|
| 2381 | + while ($_val = interprete_argument_balise($n++, $p)) { |
|
| 2382 | + $_code[] = $_val; |
|
| 2383 | + } |
|
| 2384 | + $p->code = 'array(' . join(', ', $_code) . ')'; |
|
| 2385 | + $p->interdire_scripts = false; |
|
| 2386 | 2386 | |
| 2387 | - return $p; |
|
| 2387 | + return $p; |
|
| 2388 | 2388 | } |
| 2389 | 2389 | |
| 2390 | 2390 | |
@@ -2418,21 +2418,21 @@ discard block |
||
| 2418 | 2418 | * Pile complétée par le code à générer |
| 2419 | 2419 | **/ |
| 2420 | 2420 | function balise_AUTORISER_dist($p) { |
| 2421 | - $_code = []; |
|
| 2422 | - $p->descr['session'] = true; // faire un cache par session |
|
| 2421 | + $_code = []; |
|
| 2422 | + $p->descr['session'] = true; // faire un cache par session |
|
| 2423 | 2423 | |
| 2424 | - $n = 1; |
|
| 2425 | - while ($_v = interprete_argument_balise($n++, $p)) { |
|
| 2426 | - $_code[] = $_v; |
|
| 2427 | - } |
|
| 2424 | + $n = 1; |
|
| 2425 | + while ($_v = interprete_argument_balise($n++, $p)) { |
|
| 2426 | + $_code[] = $_v; |
|
| 2427 | + } |
|
| 2428 | 2428 | |
| 2429 | - $p->code = '((function_exists("autoriser")||include_spip("inc/autoriser"))&&autoriser(' . join( |
|
| 2430 | - ', ', |
|
| 2431 | - $_code |
|
| 2432 | - ) . ')?" ":"")'; |
|
| 2433 | - $p->interdire_scripts = false; |
|
| 2429 | + $p->code = '((function_exists("autoriser")||include_spip("inc/autoriser"))&&autoriser(' . join( |
|
| 2430 | + ', ', |
|
| 2431 | + $_code |
|
| 2432 | + ) . ')?" ":"")'; |
|
| 2433 | + $p->interdire_scripts = false; |
|
| 2434 | 2434 | |
| 2435 | - return $p; |
|
| 2435 | + return $p; |
|
| 2436 | 2436 | } |
| 2437 | 2437 | |
| 2438 | 2438 | |
@@ -2456,15 +2456,15 @@ discard block |
||
| 2456 | 2456 | * Pile complétée par le code à générer |
| 2457 | 2457 | **/ |
| 2458 | 2458 | function balise_PLUGIN_dist($p) { |
| 2459 | - $plugin = interprete_argument_balise(1, $p); |
|
| 2460 | - $plugin = isset($plugin) ? str_replace('\'', '"', $plugin) : '""'; |
|
| 2461 | - $type_info = interprete_argument_balise(2, $p); |
|
| 2462 | - $type_info = isset($type_info) ? str_replace('\'', '"', $type_info) : '"est_actif"'; |
|
| 2459 | + $plugin = interprete_argument_balise(1, $p); |
|
| 2460 | + $plugin = isset($plugin) ? str_replace('\'', '"', $plugin) : '""'; |
|
| 2461 | + $type_info = interprete_argument_balise(2, $p); |
|
| 2462 | + $type_info = isset($type_info) ? str_replace('\'', '"', $type_info) : '"est_actif"'; |
|
| 2463 | 2463 | |
| 2464 | - $f = chercher_filtre('info_plugin'); |
|
| 2465 | - $p->code = $f . '(' . $plugin . ', ' . $type_info . ')'; |
|
| 2464 | + $f = chercher_filtre('info_plugin'); |
|
| 2465 | + $p->code = $f . '(' . $plugin . ', ' . $type_info . ')'; |
|
| 2466 | 2466 | |
| 2467 | - return $p; |
|
| 2467 | + return $p; |
|
| 2468 | 2468 | } |
| 2469 | 2469 | |
| 2470 | 2470 | /** |
@@ -2485,9 +2485,9 @@ discard block |
||
| 2485 | 2485 | * Pile complétée par le code à générer |
| 2486 | 2486 | **/ |
| 2487 | 2487 | function balise_AIDER_dist($p) { |
| 2488 | - $_motif = interprete_argument_balise(1, $p); |
|
| 2489 | - $p->code = "((\$aider=charger_fonction('aide','inc',true))?\$aider($_motif):'')"; |
|
| 2490 | - return $p; |
|
| 2488 | + $_motif = interprete_argument_balise(1, $p); |
|
| 2489 | + $p->code = "((\$aider=charger_fonction('aide','inc',true))?\$aider($_motif):'')"; |
|
| 2490 | + return $p; |
|
| 2491 | 2491 | } |
| 2492 | 2492 | |
| 2493 | 2493 | /** |
@@ -2513,16 +2513,16 @@ discard block |
||
| 2513 | 2513 | * Pile complétée par le code à générer |
| 2514 | 2514 | **/ |
| 2515 | 2515 | function balise_ACTION_FORMULAIRE($p) { |
| 2516 | - if (!$_url = interprete_argument_balise(1, $p)) { |
|
| 2517 | - $_url = "(\$Pile[0]['action'] ?? '')"; |
|
| 2518 | - } |
|
| 2519 | - if (!$_form = interprete_argument_balise(2, $p)) { |
|
| 2520 | - $_form = "(\$Pile[0]['form'] ?? '')"; |
|
| 2521 | - } |
|
| 2522 | - |
|
| 2523 | - // envoyer le nom du formulaire que l'on traite |
|
| 2524 | - // transmettre les eventuels args de la balise formulaire |
|
| 2525 | - $p->code = " '<span class=\"form-hidden\">' . |
|
| 2516 | + if (!$_url = interprete_argument_balise(1, $p)) { |
|
| 2517 | + $_url = "(\$Pile[0]['action'] ?? '')"; |
|
| 2518 | + } |
|
| 2519 | + if (!$_form = interprete_argument_balise(2, $p)) { |
|
| 2520 | + $_form = "(\$Pile[0]['form'] ?? '')"; |
|
| 2521 | + } |
|
| 2522 | + |
|
| 2523 | + // envoyer le nom du formulaire que l'on traite |
|
| 2524 | + // transmettre les eventuels args de la balise formulaire |
|
| 2525 | + $p->code = " '<span class=\"form-hidden\">' . |
|
| 2526 | 2526 | form_hidden($_url) . |
| 2527 | 2527 | '<input name=\'formulaire_action\' type=\'hidden\' |
| 2528 | 2528 | value=\'' . $_form . '\' />' . |
@@ -2533,9 +2533,9 @@ discard block |
||
| 2533 | 2533 | (\$Pile[0]['_hidden'] ?? '') . |
| 2534 | 2534 | '</span>'"; |
| 2535 | 2535 | |
| 2536 | - $p->interdire_scripts = false; |
|
| 2536 | + $p->interdire_scripts = false; |
|
| 2537 | 2537 | |
| 2538 | - return $p; |
|
| 2538 | + return $p; |
|
| 2539 | 2539 | } |
| 2540 | 2540 | |
| 2541 | 2541 | |
@@ -2576,25 +2576,25 @@ discard block |
||
| 2576 | 2576 | */ |
| 2577 | 2577 | function balise_BOUTON_ACTION_dist($p) { |
| 2578 | 2578 | |
| 2579 | - $args = []; |
|
| 2580 | - for ($k = 1; $k <= 6; $k++) { |
|
| 2581 | - $_a = interprete_argument_balise($k, $p); |
|
| 2582 | - if (!$_a) { |
|
| 2583 | - $_a = "''"; |
|
| 2584 | - } |
|
| 2585 | - $args[] = $_a; |
|
| 2586 | - } |
|
| 2587 | - // supprimer les args vides |
|
| 2588 | - while (end($args) == "''" and count($args) > 2) { |
|
| 2589 | - array_pop($args); |
|
| 2590 | - } |
|
| 2591 | - $args = implode(',', $args); |
|
| 2579 | + $args = []; |
|
| 2580 | + for ($k = 1; $k <= 6; $k++) { |
|
| 2581 | + $_a = interprete_argument_balise($k, $p); |
|
| 2582 | + if (!$_a) { |
|
| 2583 | + $_a = "''"; |
|
| 2584 | + } |
|
| 2585 | + $args[] = $_a; |
|
| 2586 | + } |
|
| 2587 | + // supprimer les args vides |
|
| 2588 | + while (end($args) == "''" and count($args) > 2) { |
|
| 2589 | + array_pop($args); |
|
| 2590 | + } |
|
| 2591 | + $args = implode(',', $args); |
|
| 2592 | 2592 | |
| 2593 | - $bouton_action = chercher_filtre('bouton_action'); |
|
| 2594 | - $p->code = "$bouton_action($args)"; |
|
| 2595 | - $p->interdire_scripts = false; |
|
| 2593 | + $bouton_action = chercher_filtre('bouton_action'); |
|
| 2594 | + $p->code = "$bouton_action($args)"; |
|
| 2595 | + $p->interdire_scripts = false; |
|
| 2596 | 2596 | |
| 2597 | - return $p; |
|
| 2597 | + return $p; |
|
| 2598 | 2598 | } |
| 2599 | 2599 | |
| 2600 | 2600 | |
@@ -2613,10 +2613,10 @@ discard block |
||
| 2613 | 2613 | * Pile complétée par le code à générer |
| 2614 | 2614 | */ |
| 2615 | 2615 | function balise_SLOGAN_SITE_SPIP_dist($p) { |
| 2616 | - $p->code = "\$GLOBALS['meta']['slogan_site']"; |
|
| 2616 | + $p->code = "\$GLOBALS['meta']['slogan_site']"; |
|
| 2617 | 2617 | |
| 2618 | - #$p->interdire_scripts = true; |
|
| 2619 | - return $p; |
|
| 2618 | + #$p->interdire_scripts = true; |
|
| 2619 | + return $p; |
|
| 2620 | 2620 | } |
| 2621 | 2621 | |
| 2622 | 2622 | |
@@ -2640,10 +2640,10 @@ discard block |
||
| 2640 | 2640 | * Pile complétée par le code à générer |
| 2641 | 2641 | */ |
| 2642 | 2642 | function balise_HTML5_dist($p) { |
| 2643 | - $p->code = html5_permis() ? "' '" : "''"; |
|
| 2644 | - $p->interdire_scripts = false; |
|
| 2643 | + $p->code = html5_permis() ? "' '" : "''"; |
|
| 2644 | + $p->interdire_scripts = false; |
|
| 2645 | 2645 | |
| 2646 | - return $p; |
|
| 2646 | + return $p; |
|
| 2647 | 2647 | } |
| 2648 | 2648 | |
| 2649 | 2649 | |
@@ -2669,58 +2669,58 @@ discard block |
||
| 2669 | 2669 | * Pile complétée par le code à générer |
| 2670 | 2670 | */ |
| 2671 | 2671 | function balise_TRI_dist($p, $liste = 'true') { |
| 2672 | - $b = index_boucle_mere($p); |
|
| 2673 | - // s'il n'y a pas de nom de boucle, on ne peut pas trier |
|
| 2674 | - if ($b === '') { |
|
| 2675 | - $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 2676 | - erreur_squelette($msg, $p); |
|
| 2677 | - $p->code = "''"; |
|
| 2672 | + $b = index_boucle_mere($p); |
|
| 2673 | + // s'il n'y a pas de nom de boucle, on ne peut pas trier |
|
| 2674 | + if ($b === '') { |
|
| 2675 | + $msg = ['zbug_champ_hors_boucle', ['champ' => zbug_presenter_champ($p)]]; |
|
| 2676 | + erreur_squelette($msg, $p); |
|
| 2677 | + $p->code = "''"; |
|
| 2678 | 2678 | |
| 2679 | - return $p; |
|
| 2680 | - } |
|
| 2681 | - $boucle = $p->boucles[$b]; |
|
| 2679 | + return $p; |
|
| 2680 | + } |
|
| 2681 | + $boucle = $p->boucles[$b]; |
|
| 2682 | 2682 | |
| 2683 | - // s'il n'y a pas de tri_champ, c'est qu'on se trouve |
|
| 2684 | - // dans un boucle recursive ou qu'on a oublie le critere {tri} |
|
| 2685 | - if (!isset($boucle->modificateur['tri_champ'])) { |
|
| 2686 | - $msg = ['zbug_champ_hors_critere', [ |
|
| 2687 | - 'champ' => zbug_presenter_champ($p), |
|
| 2688 | - 'critere' => 'tri' |
|
| 2689 | - ]]; |
|
| 2690 | - erreur_squelette($msg, $p); |
|
| 2691 | - $p->code = "''"; |
|
| 2683 | + // s'il n'y a pas de tri_champ, c'est qu'on se trouve |
|
| 2684 | + // dans un boucle recursive ou qu'on a oublie le critere {tri} |
|
| 2685 | + if (!isset($boucle->modificateur['tri_champ'])) { |
|
| 2686 | + $msg = ['zbug_champ_hors_critere', [ |
|
| 2687 | + 'champ' => zbug_presenter_champ($p), |
|
| 2688 | + 'critere' => 'tri' |
|
| 2689 | + ]]; |
|
| 2690 | + erreur_squelette($msg, $p); |
|
| 2691 | + $p->code = "''"; |
|
| 2692 | 2692 | |
| 2693 | - return $p; |
|
| 2694 | - } |
|
| 2693 | + return $p; |
|
| 2694 | + } |
|
| 2695 | 2695 | |
| 2696 | - // Différentes infos relatives au tri présentes dans les modificateurs |
|
| 2697 | - $_tri_nom = $boucle->modificateur['tri_nom'] ; // nom du paramètre définissant le tri |
|
| 2698 | - $_tri_champ = $boucle->modificateur['tri_champ']; // champ actuel utilisé le tri |
|
| 2699 | - $_tri_sens = $boucle->modificateur['tri_sens']; // sens de tri actuel |
|
| 2700 | - $_tri_liste_sens_defaut = $boucle->modificateur['tri_liste_sens_defaut']; // sens par défaut pour chaque champ |
|
| 2696 | + // Différentes infos relatives au tri présentes dans les modificateurs |
|
| 2697 | + $_tri_nom = $boucle->modificateur['tri_nom'] ; // nom du paramètre définissant le tri |
|
| 2698 | + $_tri_champ = $boucle->modificateur['tri_champ']; // champ actuel utilisé le tri |
|
| 2699 | + $_tri_sens = $boucle->modificateur['tri_sens']; // sens de tri actuel |
|
| 2700 | + $_tri_liste_sens_defaut = $boucle->modificateur['tri_liste_sens_defaut']; // sens par défaut pour chaque champ |
|
| 2701 | 2701 | |
| 2702 | - $_champ_ou_sens = interprete_argument_balise(1, $p); |
|
| 2703 | - // si pas de champ, renvoyer le critère de tri actuel |
|
| 2704 | - if (!$_champ_ou_sens) { |
|
| 2705 | - $p->code = $_tri_champ; |
|
| 2702 | + $_champ_ou_sens = interprete_argument_balise(1, $p); |
|
| 2703 | + // si pas de champ, renvoyer le critère de tri actuel |
|
| 2704 | + if (!$_champ_ou_sens) { |
|
| 2705 | + $p->code = $_tri_champ; |
|
| 2706 | 2706 | |
| 2707 | - return $p; |
|
| 2708 | - } |
|
| 2709 | - // forcer la jointure si besoin, et si le champ est statique |
|
| 2710 | - if (preg_match(",^'([\w.]+)'$,i", $_champ_ou_sens, $m)) { |
|
| 2711 | - index_pile($b, $m[1], $p->boucles, '', null, true, false); |
|
| 2712 | - } |
|
| 2707 | + return $p; |
|
| 2708 | + } |
|
| 2709 | + // forcer la jointure si besoin, et si le champ est statique |
|
| 2710 | + if (preg_match(",^'([\w.]+)'$,i", $_champ_ou_sens, $m)) { |
|
| 2711 | + index_pile($b, $m[1], $p->boucles, '', null, true, false); |
|
| 2712 | + } |
|
| 2713 | 2713 | |
| 2714 | - $_libelle = interprete_argument_balise(2, $p); |
|
| 2715 | - $_libelle = $_libelle ?: $_champ_ou_sens; |
|
| 2714 | + $_libelle = interprete_argument_balise(2, $p); |
|
| 2715 | + $_libelle = $_libelle ?: $_champ_ou_sens; |
|
| 2716 | 2716 | |
| 2717 | - $_class = interprete_argument_balise(3, $p) ?? "''"; |
|
| 2717 | + $_class = interprete_argument_balise(3, $p) ?? "''"; |
|
| 2718 | 2718 | |
| 2719 | - $p->code = "calculer_balise_tri($_champ_ou_sens, $_libelle, $_class, $_tri_nom, $_tri_champ, $_tri_sens, $_tri_liste_sens_defaut)"; |
|
| 2719 | + $p->code = "calculer_balise_tri($_champ_ou_sens, $_libelle, $_class, $_tri_nom, $_tri_champ, $_tri_sens, $_tri_liste_sens_defaut)"; |
|
| 2720 | 2720 | |
| 2721 | - $p->interdire_scripts = false; |
|
| 2721 | + $p->interdire_scripts = false; |
|
| 2722 | 2722 | |
| 2723 | - return $p; |
|
| 2723 | + return $p; |
|
| 2724 | 2724 | } |
| 2725 | 2725 | |
| 2726 | 2726 | |
@@ -2741,21 +2741,21 @@ discard block |
||
| 2741 | 2741 | * Pile complétée par le code à générer |
| 2742 | 2742 | */ |
| 2743 | 2743 | function balise_SAUTER_dist($p) { |
| 2744 | - $id_boucle = $p->id_boucle; |
|
| 2744 | + $id_boucle = $p->id_boucle; |
|
| 2745 | 2745 | |
| 2746 | - if (empty($p->boucles[$id_boucle])) { |
|
| 2747 | - $msg = ['zbug_champ_hors_boucle', ['champ' => '#SAUTER']]; |
|
| 2748 | - erreur_squelette($msg, $p); |
|
| 2749 | - } else { |
|
| 2750 | - $_saut = interprete_argument_balise(1, $p); |
|
| 2751 | - $_compteur = "\$Numrows['$id_boucle']['compteur_boucle']"; |
|
| 2752 | - $_total = "(\$Numrows['$id_boucle']['total'] ?? null)"; |
|
| 2746 | + if (empty($p->boucles[$id_boucle])) { |
|
| 2747 | + $msg = ['zbug_champ_hors_boucle', ['champ' => '#SAUTER']]; |
|
| 2748 | + erreur_squelette($msg, $p); |
|
| 2749 | + } else { |
|
| 2750 | + $_saut = interprete_argument_balise(1, $p); |
|
| 2751 | + $_compteur = "\$Numrows['$id_boucle']['compteur_boucle']"; |
|
| 2752 | + $_total = "(\$Numrows['$id_boucle']['total'] ?? null)"; |
|
| 2753 | 2753 | |
| 2754 | - $p->code = "vide($_compteur=\$iter->skip($_saut,$_total))"; |
|
| 2755 | - } |
|
| 2756 | - $p->interdire_scripts = false; |
|
| 2754 | + $p->code = "vide($_compteur=\$iter->skip($_saut,$_total))"; |
|
| 2755 | + } |
|
| 2756 | + $p->interdire_scripts = false; |
|
| 2757 | 2757 | |
| 2758 | - return $p; |
|
| 2758 | + return $p; |
|
| 2759 | 2759 | } |
| 2760 | 2760 | |
| 2761 | 2761 | |
@@ -2777,22 +2777,22 @@ discard block |
||
| 2777 | 2777 | * Pile complétée par le code à générer |
| 2778 | 2778 | */ |
| 2779 | 2779 | function balise_PUBLIE_dist($p) { |
| 2780 | - if (!$_type = interprete_argument_balise(1, $p)) { |
|
| 2781 | - $_type = _q($p->type_requete); |
|
| 2782 | - $_id = champ_sql($p->boucles[$p->id_boucle]->primary, $p); |
|
| 2783 | - } else { |
|
| 2784 | - $_id = interprete_argument_balise(2, $p); |
|
| 2785 | - } |
|
| 2780 | + if (!$_type = interprete_argument_balise(1, $p)) { |
|
| 2781 | + $_type = _q($p->type_requete); |
|
| 2782 | + $_id = champ_sql($p->boucles[$p->id_boucle]->primary, $p); |
|
| 2783 | + } else { |
|
| 2784 | + $_id = interprete_argument_balise(2, $p); |
|
| 2785 | + } |
|
| 2786 | 2786 | |
| 2787 | - $connect = ''; |
|
| 2788 | - if (isset($p->boucles[$p->id_boucle])) { |
|
| 2789 | - $connect = $p->boucles[$p->id_boucle]->sql_serveur; |
|
| 2790 | - } |
|
| 2787 | + $connect = ''; |
|
| 2788 | + if (isset($p->boucles[$p->id_boucle])) { |
|
| 2789 | + $connect = $p->boucles[$p->id_boucle]->sql_serveur; |
|
| 2790 | + } |
|
| 2791 | 2791 | |
| 2792 | - $p->code = '(objet_test_si_publie(' . $_type . ',intval(' . $_id . '),' . _q($connect) . ")?' ':'')"; |
|
| 2793 | - $p->interdire_scripts = false; |
|
| 2792 | + $p->code = '(objet_test_si_publie(' . $_type . ',intval(' . $_id . '),' . _q($connect) . ")?' ':'')"; |
|
| 2793 | + $p->interdire_scripts = false; |
|
| 2794 | 2794 | |
| 2795 | - return $p; |
|
| 2795 | + return $p; |
|
| 2796 | 2796 | } |
| 2797 | 2797 | |
| 2798 | 2798 | /** |
@@ -2821,12 +2821,12 @@ discard block |
||
| 2821 | 2821 | * Pile complétée par le code à générer |
| 2822 | 2822 | */ |
| 2823 | 2823 | function balise_PRODUIRE_dist($p) { |
| 2824 | - $balise_inclure = charger_fonction('INCLURE', 'balise'); |
|
| 2825 | - $p = $balise_inclure($p); |
|
| 2824 | + $balise_inclure = charger_fonction('INCLURE', 'balise'); |
|
| 2825 | + $p = $balise_inclure($p); |
|
| 2826 | 2826 | |
| 2827 | - $p->code = str_replace('recuperer_fond(', 'produire_fond_statique(', $p->code); |
|
| 2827 | + $p->code = str_replace('recuperer_fond(', 'produire_fond_statique(', $p->code); |
|
| 2828 | 2828 | |
| 2829 | - return $p; |
|
| 2829 | + return $p; |
|
| 2830 | 2830 | } |
| 2831 | 2831 | |
| 2832 | 2832 | /** |
@@ -2845,13 +2845,13 @@ discard block |
||
| 2845 | 2845 | * Pile complétée par le code à générer |
| 2846 | 2846 | */ |
| 2847 | 2847 | function balise_LARGEUR_ECRAN_dist($p) { |
| 2848 | - $_class = interprete_argument_balise(1, $p); |
|
| 2849 | - if (!$_class) { |
|
| 2850 | - $_class = 'null'; |
|
| 2851 | - } |
|
| 2852 | - $p->code = "(is_string($_class)?vide(\$GLOBALS['largeur_ecran']=$_class):(isset(\$GLOBALS['largeur_ecran'])?\$GLOBALS['largeur_ecran']:''))"; |
|
| 2848 | + $_class = interprete_argument_balise(1, $p); |
|
| 2849 | + if (!$_class) { |
|
| 2850 | + $_class = 'null'; |
|
| 2851 | + } |
|
| 2852 | + $p->code = "(is_string($_class)?vide(\$GLOBALS['largeur_ecran']=$_class):(isset(\$GLOBALS['largeur_ecran'])?\$GLOBALS['largeur_ecran']:''))"; |
|
| 2853 | 2853 | |
| 2854 | - return $p; |
|
| 2854 | + return $p; |
|
| 2855 | 2855 | } |
| 2856 | 2856 | |
| 2857 | 2857 | |
@@ -2867,14 +2867,14 @@ discard block |
||
| 2867 | 2867 | * Pile complétée par le code à générer |
| 2868 | 2868 | **/ |
| 2869 | 2869 | function balise_CONST_dist($p) { |
| 2870 | - $_const = interprete_argument_balise(1, $p); |
|
| 2871 | - if (!strlen($_const ?? '')) { |
|
| 2872 | - $p->code = "''"; |
|
| 2873 | - } |
|
| 2874 | - else { |
|
| 2875 | - $p->code = "(defined($_const)?constant($_const):'')"; |
|
| 2876 | - } |
|
| 2877 | - $p->interdire_scripts = false; |
|
| 2878 | - |
|
| 2879 | - return $p; |
|
| 2870 | + $_const = interprete_argument_balise(1, $p); |
|
| 2871 | + if (!strlen($_const ?? '')) { |
|
| 2872 | + $p->code = "''"; |
|
| 2873 | + } |
|
| 2874 | + else { |
|
| 2875 | + $p->code = "(defined($_const)?constant($_const):'')"; |
|
| 2876 | + } |
|
| 2877 | + $p->interdire_scripts = false; |
|
| 2878 | + |
|
| 2879 | + return $p; |
|
| 2880 | 2880 | } |
@@ -11,7 +11,7 @@ discard block |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | /** |
@@ -25,9 +25,9 @@ discard block |
||
| 25 | 25 | * @return string |
| 26 | 26 | */ |
| 27 | 27 | function generer_nom_fichier_cache($contexte, $page) { |
| 28 | - $u = md5(var_export([$contexte, $page], true)); |
|
| 28 | + $u = md5(var_export([$contexte, $page], true)); |
|
| 29 | 29 | |
| 30 | - return $u . '.cache'; |
|
| 30 | + return $u . '.cache'; |
|
| 31 | 31 | } |
| 32 | 32 | |
| 33 | 33 | /** |
@@ -43,26 +43,26 @@ discard block |
||
| 43 | 43 | * @return string |
| 44 | 44 | */ |
| 45 | 45 | function cache_chemin_fichier($nom_cache, $ecrire = false) { |
| 46 | - static $l1, $l2; |
|
| 47 | - if (is_null($l1)) { |
|
| 48 | - $length = (defined('_CACHE_PROFONDEUR_STOCKAGE') ? min(8, max(_CACHE_PROFONDEUR_STOCKAGE, 2)) : 4); |
|
| 49 | - $l1 = intval(floor($length / 2)); |
|
| 50 | - $l2 = $length - $l1; |
|
| 51 | - } |
|
| 52 | - $d = substr($nom_cache, 0, $l1); |
|
| 53 | - $u = substr($nom_cache, $l1, $l2); |
|
| 54 | - |
|
| 55 | - if ($ecrire) { |
|
| 56 | - $rep = sous_repertoire(_DIR_CACHE, '', false, true); |
|
| 57 | - $rep = sous_repertoire($rep, 'calcul/', false, true); |
|
| 58 | - $rep = sous_repertoire($rep, $d, false, true); |
|
| 59 | - } |
|
| 60 | - else { |
|
| 61 | - // en lecture on essaye pas de creer les repertoires, on va au plus vite |
|
| 62 | - $rep = _DIR_CACHE . "calcul/$d/"; |
|
| 63 | - } |
|
| 64 | - |
|
| 65 | - return $rep . $u . '.cache'; |
|
| 46 | + static $l1, $l2; |
|
| 47 | + if (is_null($l1)) { |
|
| 48 | + $length = (defined('_CACHE_PROFONDEUR_STOCKAGE') ? min(8, max(_CACHE_PROFONDEUR_STOCKAGE, 2)) : 4); |
|
| 49 | + $l1 = intval(floor($length / 2)); |
|
| 50 | + $l2 = $length - $l1; |
|
| 51 | + } |
|
| 52 | + $d = substr($nom_cache, 0, $l1); |
|
| 53 | + $u = substr($nom_cache, $l1, $l2); |
|
| 54 | + |
|
| 55 | + if ($ecrire) { |
|
| 56 | + $rep = sous_repertoire(_DIR_CACHE, '', false, true); |
|
| 57 | + $rep = sous_repertoire($rep, 'calcul/', false, true); |
|
| 58 | + $rep = sous_repertoire($rep, $d, false, true); |
|
| 59 | + } |
|
| 60 | + else { |
|
| 61 | + // en lecture on essaye pas de creer les repertoires, on va au plus vite |
|
| 62 | + $rep = _DIR_CACHE . "calcul/$d/"; |
|
| 63 | + } |
|
| 64 | + |
|
| 65 | + return $rep . $u . '.cache'; |
|
| 66 | 66 | } |
| 67 | 67 | |
| 68 | 68 | /** |
@@ -73,7 +73,7 @@ discard block |
||
| 73 | 73 | * @return bool |
| 74 | 74 | */ |
| 75 | 75 | function ecrire_cache($nom_cache, $valeur) { |
| 76 | - return ecrire_fichier(cache_chemin_fichier($nom_cache, true), serialize(['nom_cache' => $nom_cache, 'valeur' => $valeur])); |
|
| 76 | + return ecrire_fichier(cache_chemin_fichier($nom_cache, true), serialize(['nom_cache' => $nom_cache, 'valeur' => $valeur])); |
|
| 77 | 77 | } |
| 78 | 78 | |
| 79 | 79 | /** |
@@ -83,38 +83,38 @@ discard block |
||
| 83 | 83 | * @return mixed |
| 84 | 84 | */ |
| 85 | 85 | function lire_cache($nom_cache) { |
| 86 | - $tmp = []; |
|
| 87 | - if ( |
|
| 88 | - file_exists($f = cache_chemin_fichier($nom_cache)) |
|
| 89 | - and lire_fichier($f, $tmp) |
|
| 90 | - and $tmp = unserialize($tmp) |
|
| 91 | - and $tmp['nom_cache'] == $nom_cache |
|
| 92 | - and isset($tmp['valeur']) |
|
| 93 | - ) { |
|
| 94 | - return $tmp['valeur']; |
|
| 95 | - } |
|
| 96 | - |
|
| 97 | - return false; |
|
| 86 | + $tmp = []; |
|
| 87 | + if ( |
|
| 88 | + file_exists($f = cache_chemin_fichier($nom_cache)) |
|
| 89 | + and lire_fichier($f, $tmp) |
|
| 90 | + and $tmp = unserialize($tmp) |
|
| 91 | + and $tmp['nom_cache'] == $nom_cache |
|
| 92 | + and isset($tmp['valeur']) |
|
| 93 | + ) { |
|
| 94 | + return $tmp['valeur']; |
|
| 95 | + } |
|
| 96 | + |
|
| 97 | + return false; |
|
| 98 | 98 | } |
| 99 | 99 | |
| 100 | 100 | // Parano : on signe le cache, afin d'interdire un hack d'injection |
| 101 | 101 | // dans notre memcache |
| 102 | 102 | function cache_signature(&$page) { |
| 103 | - if (!isset($GLOBALS['meta']['cache_signature'])) { |
|
| 104 | - include_spip('inc/acces'); |
|
| 105 | - include_spip('auth/sha256.inc'); |
|
| 106 | - ecrire_meta( |
|
| 107 | - 'cache_signature', |
|
| 108 | - spip_sha256( |
|
| 109 | - $_SERVER['DOCUMENT_ROOT'] |
|
| 110 | - . ($_SERVER['SERVER_SIGNATURE'] ?? '') |
|
| 111 | - . creer_uniqid() |
|
| 112 | - ), |
|
| 113 | - 'non' |
|
| 114 | - ); |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - return crc32($GLOBALS['meta']['cache_signature'] . $page['texte']); |
|
| 103 | + if (!isset($GLOBALS['meta']['cache_signature'])) { |
|
| 104 | + include_spip('inc/acces'); |
|
| 105 | + include_spip('auth/sha256.inc'); |
|
| 106 | + ecrire_meta( |
|
| 107 | + 'cache_signature', |
|
| 108 | + spip_sha256( |
|
| 109 | + $_SERVER['DOCUMENT_ROOT'] |
|
| 110 | + . ($_SERVER['SERVER_SIGNATURE'] ?? '') |
|
| 111 | + . creer_uniqid() |
|
| 112 | + ), |
|
| 113 | + 'non' |
|
| 114 | + ); |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + return crc32($GLOBALS['meta']['cache_signature'] . $page['texte']); |
|
| 118 | 118 | } |
| 119 | 119 | |
| 120 | 120 | /** |
@@ -127,14 +127,14 @@ discard block |
||
| 127 | 127 | * @return array |
| 128 | 128 | */ |
| 129 | 129 | function gzip_page($page) { |
| 130 | - if (function_exists('gzcompress') and strlen($page['texte']) > 16 * 1024) { |
|
| 131 | - $page['gz'] = true; |
|
| 132 | - $page['texte'] = gzcompress($page['texte']); |
|
| 133 | - } else { |
|
| 134 | - $page['gz'] = false; |
|
| 135 | - } |
|
| 136 | - |
|
| 137 | - return $page; |
|
| 130 | + if (function_exists('gzcompress') and strlen($page['texte']) > 16 * 1024) { |
|
| 131 | + $page['gz'] = true; |
|
| 132 | + $page['texte'] = gzcompress($page['texte']); |
|
| 133 | + } else { |
|
| 134 | + $page['gz'] = false; |
|
| 135 | + } |
|
| 136 | + |
|
| 137 | + return $page; |
|
| 138 | 138 | } |
| 139 | 139 | |
| 140 | 140 | /** |
@@ -147,10 +147,10 @@ discard block |
||
| 147 | 147 | * @return void |
| 148 | 148 | */ |
| 149 | 149 | function gunzip_page(&$page) { |
| 150 | - if ($page['gz']) { |
|
| 151 | - $page['texte'] = gzuncompress($page['texte']); |
|
| 152 | - $page['gz'] = false; // ne pas gzuncompress deux fois une meme page |
|
| 153 | - } |
|
| 150 | + if ($page['gz']) { |
|
| 151 | + $page['texte'] = gzuncompress($page['texte']); |
|
| 152 | + $page['gz'] = false; // ne pas gzuncompress deux fois une meme page |
|
| 153 | + } |
|
| 154 | 154 | } |
| 155 | 155 | |
| 156 | 156 | /** |
@@ -165,72 +165,72 @@ discard block |
||
| 165 | 165 | * -1 si il faut calculer sans stocker en cache |
| 166 | 166 | */ |
| 167 | 167 | function cache_valide(&$page, $date) { |
| 168 | - $now = $_SERVER['REQUEST_TIME']; |
|
| 169 | - |
|
| 170 | - // Apparition d'un nouvel article post-date ? |
|
| 171 | - if ( |
|
| 172 | - isset($GLOBALS['meta']['post_dates']) |
|
| 173 | - and $GLOBALS['meta']['post_dates'] == 'non' |
|
| 174 | - and isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 175 | - and $now > $GLOBALS['meta']['date_prochain_postdate'] |
|
| 176 | - ) { |
|
| 177 | - spip_log('Un article post-date invalide le cache'); |
|
| 178 | - include_spip('inc/rubriques'); |
|
| 179 | - calculer_prochain_postdate(true); |
|
| 180 | - } |
|
| 181 | - |
|
| 182 | - if (defined('_VAR_NOCACHE') and _VAR_NOCACHE) { |
|
| 183 | - return -1; |
|
| 184 | - } |
|
| 185 | - if (isset($GLOBALS['meta']['cache_inhib']) and $_SERVER['REQUEST_TIME'] < $GLOBALS['meta']['cache_inhib']) { |
|
| 186 | - return -1; |
|
| 187 | - } |
|
| 188 | - if (defined('_NO_CACHE')) { |
|
| 189 | - return (_NO_CACHE == 0 and !isset($page['texte'])) ? 1 : _NO_CACHE; |
|
| 190 | - } |
|
| 191 | - |
|
| 192 | - // pas de cache ? on le met a jour, sauf pour les bots (on leur calcule la page sans mise en cache) |
|
| 193 | - if (!$page or !isset($page['texte']) or !isset($page['entetes']['X-Spip-Cache'])) { |
|
| 194 | - return _IS_BOT ? -1 : 1; |
|
| 195 | - } |
|
| 196 | - |
|
| 197 | - // controle de la signature |
|
| 198 | - if ($page['sig'] !== cache_signature($page)) { |
|
| 199 | - return _IS_BOT ? -1 : 1; |
|
| 200 | - } |
|
| 201 | - |
|
| 202 | - // #CACHE{n,statique} => on n'invalide pas avec derniere_modif |
|
| 203 | - // cf. ecrire/public/balises.php, balise_CACHE_dist() |
|
| 204 | - if (!isset($page['entetes']['X-Spip-Statique']) or $page['entetes']['X-Spip-Statique'] !== 'oui') { |
|
| 205 | - // Cache invalide par la meta 'derniere_modif' |
|
| 206 | - // sauf pour les bots, qui utilisent toujours le cache |
|
| 207 | - if ( |
|
| 208 | - !_IS_BOT |
|
| 209 | - and $GLOBALS['derniere_modif_invalide'] |
|
| 210 | - and isset($GLOBALS['meta']['derniere_modif']) |
|
| 211 | - and $date < $GLOBALS['meta']['derniere_modif'] |
|
| 212 | - ) { |
|
| 213 | - return 1; |
|
| 214 | - } |
|
| 215 | - } |
|
| 216 | - |
|
| 217 | - // Sinon comparer l'age du fichier a sa duree de cache |
|
| 218 | - $duree = intval($page['entetes']['X-Spip-Cache']); |
|
| 219 | - $cache_mark = ($GLOBALS['meta']['cache_mark'] ?? 0); |
|
| 220 | - if ($duree == 0) { #CACHE{0} |
|
| 221 | - return -1; |
|
| 222 | - } // sauf pour les bots, qui utilisent toujours le cache |
|
| 223 | - else { |
|
| 224 | - if ( |
|
| 225 | - (!_IS_BOT and $date + $duree < $now) |
|
| 226 | - # le cache est anterieur a la derniere purge : l'ignorer, meme pour les bots |
|
| 227 | - or $date < $cache_mark |
|
| 228 | - ) { |
|
| 229 | - return _IS_BOT ? -1 : 1; |
|
| 230 | - } else { |
|
| 231 | - return 0; |
|
| 232 | - } |
|
| 233 | - } |
|
| 168 | + $now = $_SERVER['REQUEST_TIME']; |
|
| 169 | + |
|
| 170 | + // Apparition d'un nouvel article post-date ? |
|
| 171 | + if ( |
|
| 172 | + isset($GLOBALS['meta']['post_dates']) |
|
| 173 | + and $GLOBALS['meta']['post_dates'] == 'non' |
|
| 174 | + and isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 175 | + and $now > $GLOBALS['meta']['date_prochain_postdate'] |
|
| 176 | + ) { |
|
| 177 | + spip_log('Un article post-date invalide le cache'); |
|
| 178 | + include_spip('inc/rubriques'); |
|
| 179 | + calculer_prochain_postdate(true); |
|
| 180 | + } |
|
| 181 | + |
|
| 182 | + if (defined('_VAR_NOCACHE') and _VAR_NOCACHE) { |
|
| 183 | + return -1; |
|
| 184 | + } |
|
| 185 | + if (isset($GLOBALS['meta']['cache_inhib']) and $_SERVER['REQUEST_TIME'] < $GLOBALS['meta']['cache_inhib']) { |
|
| 186 | + return -1; |
|
| 187 | + } |
|
| 188 | + if (defined('_NO_CACHE')) { |
|
| 189 | + return (_NO_CACHE == 0 and !isset($page['texte'])) ? 1 : _NO_CACHE; |
|
| 190 | + } |
|
| 191 | + |
|
| 192 | + // pas de cache ? on le met a jour, sauf pour les bots (on leur calcule la page sans mise en cache) |
|
| 193 | + if (!$page or !isset($page['texte']) or !isset($page['entetes']['X-Spip-Cache'])) { |
|
| 194 | + return _IS_BOT ? -1 : 1; |
|
| 195 | + } |
|
| 196 | + |
|
| 197 | + // controle de la signature |
|
| 198 | + if ($page['sig'] !== cache_signature($page)) { |
|
| 199 | + return _IS_BOT ? -1 : 1; |
|
| 200 | + } |
|
| 201 | + |
|
| 202 | + // #CACHE{n,statique} => on n'invalide pas avec derniere_modif |
|
| 203 | + // cf. ecrire/public/balises.php, balise_CACHE_dist() |
|
| 204 | + if (!isset($page['entetes']['X-Spip-Statique']) or $page['entetes']['X-Spip-Statique'] !== 'oui') { |
|
| 205 | + // Cache invalide par la meta 'derniere_modif' |
|
| 206 | + // sauf pour les bots, qui utilisent toujours le cache |
|
| 207 | + if ( |
|
| 208 | + !_IS_BOT |
|
| 209 | + and $GLOBALS['derniere_modif_invalide'] |
|
| 210 | + and isset($GLOBALS['meta']['derniere_modif']) |
|
| 211 | + and $date < $GLOBALS['meta']['derniere_modif'] |
|
| 212 | + ) { |
|
| 213 | + return 1; |
|
| 214 | + } |
|
| 215 | + } |
|
| 216 | + |
|
| 217 | + // Sinon comparer l'age du fichier a sa duree de cache |
|
| 218 | + $duree = intval($page['entetes']['X-Spip-Cache']); |
|
| 219 | + $cache_mark = ($GLOBALS['meta']['cache_mark'] ?? 0); |
|
| 220 | + if ($duree == 0) { #CACHE{0} |
|
| 221 | + return -1; |
|
| 222 | + } // sauf pour les bots, qui utilisent toujours le cache |
|
| 223 | + else { |
|
| 224 | + if ( |
|
| 225 | + (!_IS_BOT and $date + $duree < $now) |
|
| 226 | + # le cache est anterieur a la derniere purge : l'ignorer, meme pour les bots |
|
| 227 | + or $date < $cache_mark |
|
| 228 | + ) { |
|
| 229 | + return _IS_BOT ? -1 : 1; |
|
| 230 | + } else { |
|
| 231 | + return 0; |
|
| 232 | + } |
|
| 233 | + } |
|
| 234 | 234 | } |
| 235 | 235 | |
| 236 | 236 | /** |
@@ -243,59 +243,59 @@ discard block |
||
| 243 | 243 | */ |
| 244 | 244 | function creer_cache(&$page, &$chemin_cache) { |
| 245 | 245 | |
| 246 | - // Ne rien faire si on est en preview, debug, ou si une erreur |
|
| 247 | - // grave s'est presentee (compilation du squelette, MySQL, etc) |
|
| 248 | - // le cas var_nocache ne devrait jamais arriver ici (securite) |
|
| 249 | - // le cas spip_interdire_cache correspond a une ereur SQL grave non anticipable |
|
| 250 | - if ( |
|
| 251 | - (defined('_VAR_NOCACHE') and _VAR_NOCACHE) |
|
| 252 | - or defined('spip_interdire_cache') |
|
| 253 | - ) { |
|
| 254 | - return; |
|
| 255 | - } |
|
| 256 | - |
|
| 257 | - // Si la page c1234 a un invalideur de session 'zz', sauver dans |
|
| 258 | - // 'tmp/cache/MD5(chemin_cache)_zz' |
|
| 259 | - if ( |
|
| 260 | - isset($page['invalideurs']) |
|
| 261 | - and isset($page['invalideurs']['session']) |
|
| 262 | - ) { |
|
| 263 | - // on verifie que le contenu du chemin cache indique seulement |
|
| 264 | - // "cache sessionne" ; sa date indique la date de validite |
|
| 265 | - // des caches sessionnes |
|
| 266 | - if (!$tmp = lire_cache($chemin_cache)) { |
|
| 267 | - spip_log('Creation cache sessionne ' . $chemin_cache); |
|
| 268 | - $tmp = [ |
|
| 269 | - 'invalideurs' => ['session' => ''], |
|
| 270 | - 'lastmodified' => $_SERVER['REQUEST_TIME'] |
|
| 271 | - ]; |
|
| 272 | - ecrire_cache($chemin_cache, $tmp); |
|
| 273 | - } |
|
| 274 | - $chemin_cache = generer_nom_fichier_cache( |
|
| 275 | - ['chemin_cache' => $chemin_cache], |
|
| 276 | - ['session' => $page['invalideurs']['session']] |
|
| 277 | - ); |
|
| 278 | - } |
|
| 279 | - |
|
| 280 | - // ajouter la date de production dans le cache lui meme |
|
| 281 | - // (qui contient deja sa duree de validite) |
|
| 282 | - $page['lastmodified'] = $_SERVER['REQUEST_TIME']; |
|
| 283 | - |
|
| 284 | - // compresser le contenu si besoin |
|
| 285 | - $pagez = gzip_page($page); |
|
| 286 | - |
|
| 287 | - // signer le contenu |
|
| 288 | - $pagez['sig'] = cache_signature($pagez); |
|
| 289 | - |
|
| 290 | - // l'enregistrer, compresse ou non... |
|
| 291 | - $ok = ecrire_cache($chemin_cache, $pagez); |
|
| 292 | - |
|
| 293 | - spip_log((_IS_BOT ? 'Bot:' : '') . "Creation du cache $chemin_cache pour " |
|
| 294 | - . $page['entetes']['X-Spip-Cache'] . ' secondes' . ($ok ? '' : ' (erreur!)'), _LOG_INFO); |
|
| 295 | - |
|
| 296 | - // Inserer ses invalideurs |
|
| 297 | - include_spip('inc/invalideur'); |
|
| 298 | - maj_invalideurs($chemin_cache, $page); |
|
| 246 | + // Ne rien faire si on est en preview, debug, ou si une erreur |
|
| 247 | + // grave s'est presentee (compilation du squelette, MySQL, etc) |
|
| 248 | + // le cas var_nocache ne devrait jamais arriver ici (securite) |
|
| 249 | + // le cas spip_interdire_cache correspond a une ereur SQL grave non anticipable |
|
| 250 | + if ( |
|
| 251 | + (defined('_VAR_NOCACHE') and _VAR_NOCACHE) |
|
| 252 | + or defined('spip_interdire_cache') |
|
| 253 | + ) { |
|
| 254 | + return; |
|
| 255 | + } |
|
| 256 | + |
|
| 257 | + // Si la page c1234 a un invalideur de session 'zz', sauver dans |
|
| 258 | + // 'tmp/cache/MD5(chemin_cache)_zz' |
|
| 259 | + if ( |
|
| 260 | + isset($page['invalideurs']) |
|
| 261 | + and isset($page['invalideurs']['session']) |
|
| 262 | + ) { |
|
| 263 | + // on verifie que le contenu du chemin cache indique seulement |
|
| 264 | + // "cache sessionne" ; sa date indique la date de validite |
|
| 265 | + // des caches sessionnes |
|
| 266 | + if (!$tmp = lire_cache($chemin_cache)) { |
|
| 267 | + spip_log('Creation cache sessionne ' . $chemin_cache); |
|
| 268 | + $tmp = [ |
|
| 269 | + 'invalideurs' => ['session' => ''], |
|
| 270 | + 'lastmodified' => $_SERVER['REQUEST_TIME'] |
|
| 271 | + ]; |
|
| 272 | + ecrire_cache($chemin_cache, $tmp); |
|
| 273 | + } |
|
| 274 | + $chemin_cache = generer_nom_fichier_cache( |
|
| 275 | + ['chemin_cache' => $chemin_cache], |
|
| 276 | + ['session' => $page['invalideurs']['session']] |
|
| 277 | + ); |
|
| 278 | + } |
|
| 279 | + |
|
| 280 | + // ajouter la date de production dans le cache lui meme |
|
| 281 | + // (qui contient deja sa duree de validite) |
|
| 282 | + $page['lastmodified'] = $_SERVER['REQUEST_TIME']; |
|
| 283 | + |
|
| 284 | + // compresser le contenu si besoin |
|
| 285 | + $pagez = gzip_page($page); |
|
| 286 | + |
|
| 287 | + // signer le contenu |
|
| 288 | + $pagez['sig'] = cache_signature($pagez); |
|
| 289 | + |
|
| 290 | + // l'enregistrer, compresse ou non... |
|
| 291 | + $ok = ecrire_cache($chemin_cache, $pagez); |
|
| 292 | + |
|
| 293 | + spip_log((_IS_BOT ? 'Bot:' : '') . "Creation du cache $chemin_cache pour " |
|
| 294 | + . $page['entetes']['X-Spip-Cache'] . ' secondes' . ($ok ? '' : ' (erreur!)'), _LOG_INFO); |
|
| 295 | + |
|
| 296 | + // Inserer ses invalideurs |
|
| 297 | + include_spip('inc/invalideur'); |
|
| 298 | + maj_invalideurs($chemin_cache, $page); |
|
| 299 | 299 | } |
| 300 | 300 | |
| 301 | 301 | |
@@ -308,15 +308,15 @@ discard block |
||
| 308 | 308 | * @return void |
| 309 | 309 | */ |
| 310 | 310 | function nettoyer_petit_cache($prefix, $duree = 300) { |
| 311 | - // determiner le repertoire a purger : 'tmp/CACHE/rech/' |
|
| 312 | - $dircache = sous_repertoire(_DIR_CACHE, $prefix); |
|
| 313 | - if (spip_touch($dircache . 'purger_' . $prefix, $duree, true)) { |
|
| 314 | - foreach (preg_files($dircache, '[.]txt$') as $f) { |
|
| 315 | - if ($_SERVER['REQUEST_TIME'] - (@file_exists($f) ? @filemtime($f) : 0) > $duree) { |
|
| 316 | - spip_unlink($f); |
|
| 317 | - } |
|
| 318 | - } |
|
| 319 | - } |
|
| 311 | + // determiner le repertoire a purger : 'tmp/CACHE/rech/' |
|
| 312 | + $dircache = sous_repertoire(_DIR_CACHE, $prefix); |
|
| 313 | + if (spip_touch($dircache . 'purger_' . $prefix, $duree, true)) { |
|
| 314 | + foreach (preg_files($dircache, '[.]txt$') as $f) { |
|
| 315 | + if ($_SERVER['REQUEST_TIME'] - (@file_exists($f) ? @filemtime($f) : 0) > $duree) { |
|
| 316 | + spip_unlink($f); |
|
| 317 | + } |
|
| 318 | + } |
|
| 319 | + } |
|
| 320 | 320 | } |
| 321 | 321 | |
| 322 | 322 | |
@@ -344,134 +344,134 @@ discard block |
||
| 344 | 344 | */ |
| 345 | 345 | function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$lastmodified) { |
| 346 | 346 | |
| 347 | - # fonction de cache minimale : dire "non on ne met rien en cache" |
|
| 348 | - # $use_cache = -1; return; |
|
| 349 | - |
|
| 350 | - // Second appel, destine a l'enregistrement du cache sur le disque |
|
| 351 | - if (isset($chemin_cache)) { |
|
| 352 | - creer_cache($page, $chemin_cache); |
|
| 353 | - return; |
|
| 354 | - } |
|
| 355 | - |
|
| 356 | - // Toute la suite correspond au premier appel |
|
| 357 | - $contexte_implicite = $page['contexte_implicite']; |
|
| 358 | - |
|
| 359 | - // Cas ignorant le cache car completement dynamique |
|
| 360 | - if ( |
|
| 361 | - (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] === 'POST') |
|
| 362 | - or _request('connect') |
|
| 363 | - ) { |
|
| 364 | - $use_cache = -1; |
|
| 365 | - $lastmodified = 0; |
|
| 366 | - $chemin_cache = ''; |
|
| 367 | - $page = []; |
|
| 368 | - |
|
| 369 | - return; |
|
| 370 | - } |
|
| 371 | - |
|
| 372 | - // Controler l'existence d'un cache nous correspondant |
|
| 373 | - $chemin_cache = generer_nom_fichier_cache($contexte, $page); |
|
| 374 | - $lastmodified = 0; |
|
| 375 | - |
|
| 376 | - // charger le cache s'il existe (et si il a bien le bon hash = anticollision) |
|
| 377 | - if (!$page = lire_cache($chemin_cache)) { |
|
| 378 | - $page = []; |
|
| 379 | - } |
|
| 380 | - |
|
| 381 | - // s'il est sessionne, charger celui correspondant a notre session |
|
| 382 | - if ( |
|
| 383 | - isset($page['invalideurs']) |
|
| 384 | - and isset($page['invalideurs']['session']) |
|
| 385 | - ) { |
|
| 386 | - $chemin_cache_session = generer_nom_fichier_cache( |
|
| 387 | - ['chemin_cache' => $chemin_cache], |
|
| 388 | - ['session' => spip_session()] |
|
| 389 | - ); |
|
| 390 | - if ( |
|
| 391 | - $page_session = lire_cache($chemin_cache_session) |
|
| 392 | - and $page_session['lastmodified'] >= $page['lastmodified'] |
|
| 393 | - ) { |
|
| 394 | - $page = $page_session; |
|
| 395 | - } else { |
|
| 396 | - $page = []; |
|
| 397 | - } |
|
| 398 | - } |
|
| 399 | - |
|
| 400 | - |
|
| 401 | - // Faut-il effacer des pages invalidees (en particulier ce cache-ci) ? |
|
| 402 | - if (isset($GLOBALS['meta']['invalider'])) { |
|
| 403 | - // ne le faire que si la base est disponible |
|
| 404 | - if (spip_connect()) { |
|
| 405 | - include_spip('inc/invalideur'); |
|
| 406 | - retire_caches($chemin_cache); # API invalideur inutile |
|
| 407 | - supprimer_fichier(_DIR_CACHE . $chemin_cache); |
|
| 408 | - if (isset($chemin_cache_session) and $chemin_cache_session) { |
|
| 409 | - supprimer_fichier(_DIR_CACHE . $chemin_cache_session); |
|
| 410 | - } |
|
| 411 | - } |
|
| 412 | - } |
|
| 413 | - |
|
| 414 | - // Si un calcul, recalcul [ou preview, mais c'est recalcul] est demande, |
|
| 415 | - // on supprime le cache |
|
| 416 | - if ( |
|
| 417 | - defined('_VAR_MODE') && |
|
| 418 | - _VAR_MODE && |
|
| 419 | - (isset($_COOKIE['spip_session']) || |
|
| 420 | - isset($_COOKIE['spip_admin']) || |
|
| 421 | - @file_exists(_ACCESS_FILE_NAME)) |
|
| 422 | - ) { |
|
| 423 | - $page = ['contexte_implicite' => $contexte_implicite]; // ignorer le cache deja lu |
|
| 424 | - include_spip('inc/invalideur'); |
|
| 425 | - retire_caches($chemin_cache); # API invalideur inutile |
|
| 426 | - supprimer_fichier(_DIR_CACHE . $chemin_cache); |
|
| 427 | - if (isset($chemin_cache_session) and $chemin_cache_session) { |
|
| 428 | - supprimer_fichier(_DIR_CACHE . $chemin_cache_session); |
|
| 429 | - } |
|
| 430 | - } |
|
| 431 | - |
|
| 432 | - // $delais par defaut |
|
| 433 | - // pour toutes les pages sans #CACHE{} hors modeles/ et espace privé |
|
| 434 | - // qui sont a cache nul par defaut |
|
| 435 | - if (!isset($GLOBALS['delais'])) { |
|
| 436 | - if (!defined('_DUREE_CACHE_DEFAUT')) { |
|
| 437 | - define('_DUREE_CACHE_DEFAUT', 24 * 3600); |
|
| 438 | - } |
|
| 439 | - $GLOBALS['delais'] = _DUREE_CACHE_DEFAUT; |
|
| 440 | - } |
|
| 441 | - |
|
| 442 | - // determiner la validite de la page |
|
| 443 | - if ($page) { |
|
| 444 | - $use_cache = cache_valide($page, $page['lastmodified'] ?? 0); |
|
| 445 | - // le contexte implicite n'est pas stocke dans le cache, mais il y a equivalence |
|
| 446 | - // par le nom du cache. On le reinjecte donc ici pour utilisation eventuelle au calcul |
|
| 447 | - $page['contexte_implicite'] = $contexte_implicite; |
|
| 448 | - if (!$use_cache) { |
|
| 449 | - // $page est un cache utilisable |
|
| 450 | - gunzip_page($page); |
|
| 451 | - |
|
| 452 | - return; |
|
| 453 | - } |
|
| 454 | - } else { |
|
| 455 | - $page = ['contexte_implicite' => $contexte_implicite]; |
|
| 456 | - $use_cache = cache_valide($page, 0); // fichier cache absent : provoque le calcul |
|
| 457 | - } |
|
| 458 | - |
|
| 459 | - // Si pas valide mais pas de connexion a la base, le garder quand meme |
|
| 460 | - if (!spip_connect()) { |
|
| 461 | - if (isset($page['texte'])) { |
|
| 462 | - gunzip_page($page); |
|
| 463 | - $use_cache = 0; |
|
| 464 | - } else { |
|
| 465 | - spip_log("Erreur base de donnees, impossible utiliser $chemin_cache"); |
|
| 466 | - include_spip('inc/minipres'); |
|
| 467 | - |
|
| 468 | - return minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]); |
|
| 469 | - } |
|
| 470 | - } |
|
| 471 | - |
|
| 472 | - if ($use_cache < 0) { |
|
| 473 | - $chemin_cache = ''; |
|
| 474 | - } |
|
| 475 | - |
|
| 476 | - return; |
|
| 347 | + # fonction de cache minimale : dire "non on ne met rien en cache" |
|
| 348 | + # $use_cache = -1; return; |
|
| 349 | + |
|
| 350 | + // Second appel, destine a l'enregistrement du cache sur le disque |
|
| 351 | + if (isset($chemin_cache)) { |
|
| 352 | + creer_cache($page, $chemin_cache); |
|
| 353 | + return; |
|
| 354 | + } |
|
| 355 | + |
|
| 356 | + // Toute la suite correspond au premier appel |
|
| 357 | + $contexte_implicite = $page['contexte_implicite']; |
|
| 358 | + |
|
| 359 | + // Cas ignorant le cache car completement dynamique |
|
| 360 | + if ( |
|
| 361 | + (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] === 'POST') |
|
| 362 | + or _request('connect') |
|
| 363 | + ) { |
|
| 364 | + $use_cache = -1; |
|
| 365 | + $lastmodified = 0; |
|
| 366 | + $chemin_cache = ''; |
|
| 367 | + $page = []; |
|
| 368 | + |
|
| 369 | + return; |
|
| 370 | + } |
|
| 371 | + |
|
| 372 | + // Controler l'existence d'un cache nous correspondant |
|
| 373 | + $chemin_cache = generer_nom_fichier_cache($contexte, $page); |
|
| 374 | + $lastmodified = 0; |
|
| 375 | + |
|
| 376 | + // charger le cache s'il existe (et si il a bien le bon hash = anticollision) |
|
| 377 | + if (!$page = lire_cache($chemin_cache)) { |
|
| 378 | + $page = []; |
|
| 379 | + } |
|
| 380 | + |
|
| 381 | + // s'il est sessionne, charger celui correspondant a notre session |
|
| 382 | + if ( |
|
| 383 | + isset($page['invalideurs']) |
|
| 384 | + and isset($page['invalideurs']['session']) |
|
| 385 | + ) { |
|
| 386 | + $chemin_cache_session = generer_nom_fichier_cache( |
|
| 387 | + ['chemin_cache' => $chemin_cache], |
|
| 388 | + ['session' => spip_session()] |
|
| 389 | + ); |
|
| 390 | + if ( |
|
| 391 | + $page_session = lire_cache($chemin_cache_session) |
|
| 392 | + and $page_session['lastmodified'] >= $page['lastmodified'] |
|
| 393 | + ) { |
|
| 394 | + $page = $page_session; |
|
| 395 | + } else { |
|
| 396 | + $page = []; |
|
| 397 | + } |
|
| 398 | + } |
|
| 399 | + |
|
| 400 | + |
|
| 401 | + // Faut-il effacer des pages invalidees (en particulier ce cache-ci) ? |
|
| 402 | + if (isset($GLOBALS['meta']['invalider'])) { |
|
| 403 | + // ne le faire que si la base est disponible |
|
| 404 | + if (spip_connect()) { |
|
| 405 | + include_spip('inc/invalideur'); |
|
| 406 | + retire_caches($chemin_cache); # API invalideur inutile |
|
| 407 | + supprimer_fichier(_DIR_CACHE . $chemin_cache); |
|
| 408 | + if (isset($chemin_cache_session) and $chemin_cache_session) { |
|
| 409 | + supprimer_fichier(_DIR_CACHE . $chemin_cache_session); |
|
| 410 | + } |
|
| 411 | + } |
|
| 412 | + } |
|
| 413 | + |
|
| 414 | + // Si un calcul, recalcul [ou preview, mais c'est recalcul] est demande, |
|
| 415 | + // on supprime le cache |
|
| 416 | + if ( |
|
| 417 | + defined('_VAR_MODE') && |
|
| 418 | + _VAR_MODE && |
|
| 419 | + (isset($_COOKIE['spip_session']) || |
|
| 420 | + isset($_COOKIE['spip_admin']) || |
|
| 421 | + @file_exists(_ACCESS_FILE_NAME)) |
|
| 422 | + ) { |
|
| 423 | + $page = ['contexte_implicite' => $contexte_implicite]; // ignorer le cache deja lu |
|
| 424 | + include_spip('inc/invalideur'); |
|
| 425 | + retire_caches($chemin_cache); # API invalideur inutile |
|
| 426 | + supprimer_fichier(_DIR_CACHE . $chemin_cache); |
|
| 427 | + if (isset($chemin_cache_session) and $chemin_cache_session) { |
|
| 428 | + supprimer_fichier(_DIR_CACHE . $chemin_cache_session); |
|
| 429 | + } |
|
| 430 | + } |
|
| 431 | + |
|
| 432 | + // $delais par defaut |
|
| 433 | + // pour toutes les pages sans #CACHE{} hors modeles/ et espace privé |
|
| 434 | + // qui sont a cache nul par defaut |
|
| 435 | + if (!isset($GLOBALS['delais'])) { |
|
| 436 | + if (!defined('_DUREE_CACHE_DEFAUT')) { |
|
| 437 | + define('_DUREE_CACHE_DEFAUT', 24 * 3600); |
|
| 438 | + } |
|
| 439 | + $GLOBALS['delais'] = _DUREE_CACHE_DEFAUT; |
|
| 440 | + } |
|
| 441 | + |
|
| 442 | + // determiner la validite de la page |
|
| 443 | + if ($page) { |
|
| 444 | + $use_cache = cache_valide($page, $page['lastmodified'] ?? 0); |
|
| 445 | + // le contexte implicite n'est pas stocke dans le cache, mais il y a equivalence |
|
| 446 | + // par le nom du cache. On le reinjecte donc ici pour utilisation eventuelle au calcul |
|
| 447 | + $page['contexte_implicite'] = $contexte_implicite; |
|
| 448 | + if (!$use_cache) { |
|
| 449 | + // $page est un cache utilisable |
|
| 450 | + gunzip_page($page); |
|
| 451 | + |
|
| 452 | + return; |
|
| 453 | + } |
|
| 454 | + } else { |
|
| 455 | + $page = ['contexte_implicite' => $contexte_implicite]; |
|
| 456 | + $use_cache = cache_valide($page, 0); // fichier cache absent : provoque le calcul |
|
| 457 | + } |
|
| 458 | + |
|
| 459 | + // Si pas valide mais pas de connexion a la base, le garder quand meme |
|
| 460 | + if (!spip_connect()) { |
|
| 461 | + if (isset($page['texte'])) { |
|
| 462 | + gunzip_page($page); |
|
| 463 | + $use_cache = 0; |
|
| 464 | + } else { |
|
| 465 | + spip_log("Erreur base de donnees, impossible utiliser $chemin_cache"); |
|
| 466 | + include_spip('inc/minipres'); |
|
| 467 | + |
|
| 468 | + return minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]); |
|
| 469 | + } |
|
| 470 | + } |
|
| 471 | + |
|
| 472 | + if ($use_cache < 0) { |
|
| 473 | + $chemin_cache = ''; |
|
| 474 | + } |
|
| 475 | + |
|
| 476 | + return; |
|
| 477 | 477 | } |
@@ -20,178 +20,178 @@ discard block |
||
| 20 | 20 | **/ |
| 21 | 21 | |
| 22 | 22 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 23 | - return; |
|
| 23 | + return; |
|
| 24 | 24 | } |
| 25 | 25 | |
| 26 | 26 | // En cas de modification, il faut aussi actualiser la regexp de nettoyer_uri_var() dans inc/utils.php |
| 27 | 27 | if (!defined('_CONTEXTE_IGNORE_VARIABLES')) { |
| 28 | - define('_CONTEXTE_IGNORE_VARIABLES', '/(^var_|^PHPSESSID$|^fbclid$|^utm_)/'); |
|
| 28 | + define('_CONTEXTE_IGNORE_VARIABLES', '/(^var_|^PHPSESSID$|^fbclid$|^utm_)/'); |
|
| 29 | 29 | } |
| 30 | 30 | |
| 31 | 31 | function assembler($fond, string $connect = '') { |
| 32 | 32 | |
| 33 | - $chemin_cache = null; |
|
| 34 | - $lastmodified = null; |
|
| 35 | - $res = null; |
|
| 36 | - // flag_preserver est modifie ici, et utilise en globale |
|
| 37 | - // use_cache sert a informer le bouton d'admin pr savoir s'il met un * |
|
| 38 | - // contexte est utilise en globale dans le formulaire d'admin |
|
| 39 | - |
|
| 40 | - $GLOBALS['contexte'] = calculer_contexte(); |
|
| 41 | - $page = ['contexte_implicite' => calculer_contexte_implicite()]; |
|
| 42 | - $page['contexte_implicite']['cache'] = $fond . preg_replace( |
|
| 43 | - ',\.[a-zA-Z0-9]*$,', |
|
| 44 | - '', |
|
| 45 | - preg_replace('/[?].*$/', '', $GLOBALS['REQUEST_URI']) |
|
| 46 | - ); |
|
| 47 | - // Cette fonction est utilisee deux fois |
|
| 48 | - $cacher = charger_fonction('cacher', 'public', true); |
|
| 49 | - // Les quatre derniers parametres sont modifies par la fonction: |
|
| 50 | - // emplacement, validite, et, s'il est valide, contenu & age |
|
| 51 | - if ($cacher) { |
|
| 52 | - $res = $cacher($GLOBALS['contexte'], $GLOBALS['use_cache'], $chemin_cache, $page, $lastmodified); |
|
| 53 | - } else { |
|
| 54 | - $GLOBALS['use_cache'] = -1; |
|
| 55 | - } |
|
| 56 | - // Si un resultat est retourne, c'est un message d'impossibilite |
|
| 57 | - if ($res) { |
|
| 58 | - return ['texte' => $res]; |
|
| 59 | - } |
|
| 60 | - |
|
| 61 | - if (!$chemin_cache || !$lastmodified) { |
|
| 62 | - $lastmodified = time(); |
|
| 63 | - } |
|
| 64 | - |
|
| 65 | - $headers_only = ($_SERVER['REQUEST_METHOD'] == 'HEAD'); |
|
| 66 | - $calculer_page = true; |
|
| 67 | - |
|
| 68 | - // Pour les pages non-dynamiques (indiquees par #CACHE{duree,cache-client}) |
|
| 69 | - // une perennite valide a meme reponse qu'une requete HEAD (par defaut les |
|
| 70 | - // pages sont dynamiques) |
|
| 71 | - if ( |
|
| 72 | - isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) |
|
| 73 | - and (!defined('_VAR_MODE') or !_VAR_MODE) |
|
| 74 | - and $chemin_cache |
|
| 75 | - and isset($page['entetes']) |
|
| 76 | - and isset($page['entetes']['Cache-Control']) |
|
| 77 | - and strstr($page['entetes']['Cache-Control'], 'max-age=') |
|
| 78 | - and !strstr($_SERVER['SERVER_SOFTWARE'], 'IIS/') |
|
| 79 | - ) { |
|
| 80 | - $since = preg_replace( |
|
| 81 | - '/;.*/', |
|
| 82 | - '', |
|
| 83 | - $_SERVER['HTTP_IF_MODIFIED_SINCE'] |
|
| 84 | - ); |
|
| 85 | - $since = str_replace('GMT', '', $since); |
|
| 86 | - if (trim($since) == gmdate('D, d M Y H:i:s', $lastmodified)) { |
|
| 87 | - $page['status'] = 304; |
|
| 88 | - $headers_only = true; |
|
| 89 | - $calculer_page = false; |
|
| 90 | - } |
|
| 91 | - } |
|
| 92 | - |
|
| 93 | - // Si requete HEAD ou Last-modified compatible, ignorer le texte |
|
| 94 | - // et pas de content-type (pour contrer le bouton admin de inc-public) |
|
| 95 | - if (!$calculer_page) { |
|
| 96 | - $page['texte'] = ''; |
|
| 97 | - } else { |
|
| 98 | - // si la page est prise dans le cache |
|
| 99 | - if (!$GLOBALS['use_cache']) { |
|
| 100 | - // Informer les boutons d'admin du contexte |
|
| 101 | - // (fourni par urls_decoder_url ci-dessous lors de la mise en cache) |
|
| 102 | - $GLOBALS['contexte'] = $page['contexte']; |
|
| 103 | - |
|
| 104 | - // vider les globales url propres qui ne doivent plus etre utilisees en cas |
|
| 105 | - // d'inversion url => objet |
|
| 106 | - // plus necessaire si on utilise bien la fonction urls_decoder_url |
|
| 107 | - #unset($_SERVER['REDIRECT_url_propre']); |
|
| 108 | - #unset($_ENV['url_propre']); |
|
| 109 | - } else { |
|
| 110 | - // Compat ascendante : |
|
| 111 | - // 1. $contexte est global |
|
| 112 | - // (a evacuer car urls_decoder_url gere ce probleme ?) |
|
| 113 | - // et calculer la page |
|
| 114 | - if (!test_espace_prive()) { |
|
| 115 | - include_spip('inc/urls'); |
|
| 116 | - [$fond, $GLOBALS['contexte'], $url_redirect] = urls_decoder_url( |
|
| 117 | - nettoyer_uri(), |
|
| 118 | - $fond, |
|
| 119 | - $GLOBALS['contexte'], |
|
| 120 | - true |
|
| 121 | - ); |
|
| 122 | - } |
|
| 123 | - // squelette par defaut |
|
| 124 | - if (!strlen($fond ?? '')) { |
|
| 125 | - $fond = 'sommaire'; |
|
| 126 | - } |
|
| 127 | - |
|
| 128 | - // produire la page : peut mettre a jour $lastmodified |
|
| 129 | - $produire_page = charger_fonction('produire_page', 'public'); |
|
| 130 | - $page = $produire_page( |
|
| 131 | - $fond, |
|
| 132 | - $GLOBALS['contexte'], |
|
| 133 | - $GLOBALS['use_cache'], |
|
| 134 | - $chemin_cache, |
|
| 135 | - null, |
|
| 136 | - $page, |
|
| 137 | - $lastmodified, |
|
| 138 | - $connect |
|
| 139 | - ); |
|
| 140 | - if ($page === '') { |
|
| 141 | - $erreur = _T( |
|
| 142 | - 'info_erreur_squelette2', |
|
| 143 | - ['fichier' => spip_htmlspecialchars($fond) . '.' . _EXTENSION_SQUELETTES] |
|
| 144 | - ); |
|
| 145 | - erreur_squelette($erreur); |
|
| 146 | - // eviter des erreurs strictes ensuite sur $page['cle'] en PHP >= 5.4 |
|
| 147 | - $page = ['texte' => '', 'erreur' => $erreur]; |
|
| 148 | - } |
|
| 149 | - } |
|
| 150 | - |
|
| 151 | - if ($page and $chemin_cache) { |
|
| 152 | - $page['cache'] = $chemin_cache; |
|
| 153 | - } |
|
| 154 | - |
|
| 155 | - auto_content_type($page); |
|
| 156 | - |
|
| 157 | - $GLOBALS['flag_preserver'] |= headers_sent(); |
|
| 158 | - |
|
| 159 | - // Definir les entetes si ce n'est fait |
|
| 160 | - if (!$GLOBALS['flag_preserver']) { |
|
| 161 | - // Si la page est vide, produire l'erreur 404 ou message d'erreur pour les inclusions |
|
| 162 | - if ( |
|
| 163 | - trim($page['texte']) === '' |
|
| 164 | - and _VAR_MODE !== 'debug' |
|
| 165 | - and !isset($page['entetes']['Location']) // cette page realise une redirection, donc pas d'erreur |
|
| 166 | - ) { |
|
| 167 | - $GLOBALS['contexte']['fond_erreur'] = $fond; |
|
| 168 | - $page = message_page_indisponible($page, $GLOBALS['contexte']); |
|
| 169 | - } |
|
| 170 | - // pas de cache client en mode 'observation' |
|
| 171 | - if (defined('_VAR_MODE') and _VAR_MODE) { |
|
| 172 | - $page['entetes']['Cache-Control'] = 'no-cache,must-revalidate'; |
|
| 173 | - $page['entetes']['Pragma'] = 'no-cache'; |
|
| 174 | - } |
|
| 175 | - } |
|
| 176 | - } |
|
| 177 | - |
|
| 178 | - // Entete Last-Modified: |
|
| 179 | - // eviter d'etre incoherent en envoyant un lastmodified identique |
|
| 180 | - // a celui qu'on a refuse d'honorer plus haut (cf. #655) |
|
| 181 | - if ( |
|
| 182 | - $lastmodified |
|
| 183 | - and !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) |
|
| 184 | - and !isset($page['entetes']['Last-Modified']) |
|
| 185 | - ) { |
|
| 186 | - $page['entetes']['Last-Modified'] = gmdate('D, d M Y H:i:s', $lastmodified) . ' GMT'; |
|
| 187 | - } |
|
| 188 | - |
|
| 189 | - // fermer la connexion apres les headers si requete HEAD |
|
| 190 | - if ($headers_only) { |
|
| 191 | - $page['entetes']['Connection'] = 'close'; |
|
| 192 | - } |
|
| 193 | - |
|
| 194 | - return $page; |
|
| 33 | + $chemin_cache = null; |
|
| 34 | + $lastmodified = null; |
|
| 35 | + $res = null; |
|
| 36 | + // flag_preserver est modifie ici, et utilise en globale |
|
| 37 | + // use_cache sert a informer le bouton d'admin pr savoir s'il met un * |
|
| 38 | + // contexte est utilise en globale dans le formulaire d'admin |
|
| 39 | + |
|
| 40 | + $GLOBALS['contexte'] = calculer_contexte(); |
|
| 41 | + $page = ['contexte_implicite' => calculer_contexte_implicite()]; |
|
| 42 | + $page['contexte_implicite']['cache'] = $fond . preg_replace( |
|
| 43 | + ',\.[a-zA-Z0-9]*$,', |
|
| 44 | + '', |
|
| 45 | + preg_replace('/[?].*$/', '', $GLOBALS['REQUEST_URI']) |
|
| 46 | + ); |
|
| 47 | + // Cette fonction est utilisee deux fois |
|
| 48 | + $cacher = charger_fonction('cacher', 'public', true); |
|
| 49 | + // Les quatre derniers parametres sont modifies par la fonction: |
|
| 50 | + // emplacement, validite, et, s'il est valide, contenu & age |
|
| 51 | + if ($cacher) { |
|
| 52 | + $res = $cacher($GLOBALS['contexte'], $GLOBALS['use_cache'], $chemin_cache, $page, $lastmodified); |
|
| 53 | + } else { |
|
| 54 | + $GLOBALS['use_cache'] = -1; |
|
| 55 | + } |
|
| 56 | + // Si un resultat est retourne, c'est un message d'impossibilite |
|
| 57 | + if ($res) { |
|
| 58 | + return ['texte' => $res]; |
|
| 59 | + } |
|
| 60 | + |
|
| 61 | + if (!$chemin_cache || !$lastmodified) { |
|
| 62 | + $lastmodified = time(); |
|
| 63 | + } |
|
| 64 | + |
|
| 65 | + $headers_only = ($_SERVER['REQUEST_METHOD'] == 'HEAD'); |
|
| 66 | + $calculer_page = true; |
|
| 67 | + |
|
| 68 | + // Pour les pages non-dynamiques (indiquees par #CACHE{duree,cache-client}) |
|
| 69 | + // une perennite valide a meme reponse qu'une requete HEAD (par defaut les |
|
| 70 | + // pages sont dynamiques) |
|
| 71 | + if ( |
|
| 72 | + isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) |
|
| 73 | + and (!defined('_VAR_MODE') or !_VAR_MODE) |
|
| 74 | + and $chemin_cache |
|
| 75 | + and isset($page['entetes']) |
|
| 76 | + and isset($page['entetes']['Cache-Control']) |
|
| 77 | + and strstr($page['entetes']['Cache-Control'], 'max-age=') |
|
| 78 | + and !strstr($_SERVER['SERVER_SOFTWARE'], 'IIS/') |
|
| 79 | + ) { |
|
| 80 | + $since = preg_replace( |
|
| 81 | + '/;.*/', |
|
| 82 | + '', |
|
| 83 | + $_SERVER['HTTP_IF_MODIFIED_SINCE'] |
|
| 84 | + ); |
|
| 85 | + $since = str_replace('GMT', '', $since); |
|
| 86 | + if (trim($since) == gmdate('D, d M Y H:i:s', $lastmodified)) { |
|
| 87 | + $page['status'] = 304; |
|
| 88 | + $headers_only = true; |
|
| 89 | + $calculer_page = false; |
|
| 90 | + } |
|
| 91 | + } |
|
| 92 | + |
|
| 93 | + // Si requete HEAD ou Last-modified compatible, ignorer le texte |
|
| 94 | + // et pas de content-type (pour contrer le bouton admin de inc-public) |
|
| 95 | + if (!$calculer_page) { |
|
| 96 | + $page['texte'] = ''; |
|
| 97 | + } else { |
|
| 98 | + // si la page est prise dans le cache |
|
| 99 | + if (!$GLOBALS['use_cache']) { |
|
| 100 | + // Informer les boutons d'admin du contexte |
|
| 101 | + // (fourni par urls_decoder_url ci-dessous lors de la mise en cache) |
|
| 102 | + $GLOBALS['contexte'] = $page['contexte']; |
|
| 103 | + |
|
| 104 | + // vider les globales url propres qui ne doivent plus etre utilisees en cas |
|
| 105 | + // d'inversion url => objet |
|
| 106 | + // plus necessaire si on utilise bien la fonction urls_decoder_url |
|
| 107 | + #unset($_SERVER['REDIRECT_url_propre']); |
|
| 108 | + #unset($_ENV['url_propre']); |
|
| 109 | + } else { |
|
| 110 | + // Compat ascendante : |
|
| 111 | + // 1. $contexte est global |
|
| 112 | + // (a evacuer car urls_decoder_url gere ce probleme ?) |
|
| 113 | + // et calculer la page |
|
| 114 | + if (!test_espace_prive()) { |
|
| 115 | + include_spip('inc/urls'); |
|
| 116 | + [$fond, $GLOBALS['contexte'], $url_redirect] = urls_decoder_url( |
|
| 117 | + nettoyer_uri(), |
|
| 118 | + $fond, |
|
| 119 | + $GLOBALS['contexte'], |
|
| 120 | + true |
|
| 121 | + ); |
|
| 122 | + } |
|
| 123 | + // squelette par defaut |
|
| 124 | + if (!strlen($fond ?? '')) { |
|
| 125 | + $fond = 'sommaire'; |
|
| 126 | + } |
|
| 127 | + |
|
| 128 | + // produire la page : peut mettre a jour $lastmodified |
|
| 129 | + $produire_page = charger_fonction('produire_page', 'public'); |
|
| 130 | + $page = $produire_page( |
|
| 131 | + $fond, |
|
| 132 | + $GLOBALS['contexte'], |
|
| 133 | + $GLOBALS['use_cache'], |
|
| 134 | + $chemin_cache, |
|
| 135 | + null, |
|
| 136 | + $page, |
|
| 137 | + $lastmodified, |
|
| 138 | + $connect |
|
| 139 | + ); |
|
| 140 | + if ($page === '') { |
|
| 141 | + $erreur = _T( |
|
| 142 | + 'info_erreur_squelette2', |
|
| 143 | + ['fichier' => spip_htmlspecialchars($fond) . '.' . _EXTENSION_SQUELETTES] |
|
| 144 | + ); |
|
| 145 | + erreur_squelette($erreur); |
|
| 146 | + // eviter des erreurs strictes ensuite sur $page['cle'] en PHP >= 5.4 |
|
| 147 | + $page = ['texte' => '', 'erreur' => $erreur]; |
|
| 148 | + } |
|
| 149 | + } |
|
| 150 | + |
|
| 151 | + if ($page and $chemin_cache) { |
|
| 152 | + $page['cache'] = $chemin_cache; |
|
| 153 | + } |
|
| 154 | + |
|
| 155 | + auto_content_type($page); |
|
| 156 | + |
|
| 157 | + $GLOBALS['flag_preserver'] |= headers_sent(); |
|
| 158 | + |
|
| 159 | + // Definir les entetes si ce n'est fait |
|
| 160 | + if (!$GLOBALS['flag_preserver']) { |
|
| 161 | + // Si la page est vide, produire l'erreur 404 ou message d'erreur pour les inclusions |
|
| 162 | + if ( |
|
| 163 | + trim($page['texte']) === '' |
|
| 164 | + and _VAR_MODE !== 'debug' |
|
| 165 | + and !isset($page['entetes']['Location']) // cette page realise une redirection, donc pas d'erreur |
|
| 166 | + ) { |
|
| 167 | + $GLOBALS['contexte']['fond_erreur'] = $fond; |
|
| 168 | + $page = message_page_indisponible($page, $GLOBALS['contexte']); |
|
| 169 | + } |
|
| 170 | + // pas de cache client en mode 'observation' |
|
| 171 | + if (defined('_VAR_MODE') and _VAR_MODE) { |
|
| 172 | + $page['entetes']['Cache-Control'] = 'no-cache,must-revalidate'; |
|
| 173 | + $page['entetes']['Pragma'] = 'no-cache'; |
|
| 174 | + } |
|
| 175 | + } |
|
| 176 | + } |
|
| 177 | + |
|
| 178 | + // Entete Last-Modified: |
|
| 179 | + // eviter d'etre incoherent en envoyant un lastmodified identique |
|
| 180 | + // a celui qu'on a refuse d'honorer plus haut (cf. #655) |
|
| 181 | + if ( |
|
| 182 | + $lastmodified |
|
| 183 | + and !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) |
|
| 184 | + and !isset($page['entetes']['Last-Modified']) |
|
| 185 | + ) { |
|
| 186 | + $page['entetes']['Last-Modified'] = gmdate('D, d M Y H:i:s', $lastmodified) . ' GMT'; |
|
| 187 | + } |
|
| 188 | + |
|
| 189 | + // fermer la connexion apres les headers si requete HEAD |
|
| 190 | + if ($headers_only) { |
|
| 191 | + $page['entetes']['Connection'] = 'close'; |
|
| 192 | + } |
|
| 193 | + |
|
| 194 | + return $page; |
|
| 195 | 195 | } |
| 196 | 196 | |
| 197 | 197 | /** |
@@ -208,19 +208,19 @@ discard block |
||
| 208 | 208 | */ |
| 209 | 209 | function calculer_contexte() { |
| 210 | 210 | |
| 211 | - $contexte = []; |
|
| 212 | - foreach ($_GET as $var => $val) { |
|
| 213 | - if (!preg_match(_CONTEXTE_IGNORE_VARIABLES, $var)) { |
|
| 214 | - $contexte[$var] = $val; |
|
| 215 | - } |
|
| 216 | - } |
|
| 217 | - foreach ($_POST as $var => $val) { |
|
| 218 | - if (!preg_match(_CONTEXTE_IGNORE_VARIABLES, $var)) { |
|
| 219 | - $contexte[$var] = $val; |
|
| 220 | - } |
|
| 221 | - } |
|
| 222 | - |
|
| 223 | - return $contexte; |
|
| 211 | + $contexte = []; |
|
| 212 | + foreach ($_GET as $var => $val) { |
|
| 213 | + if (!preg_match(_CONTEXTE_IGNORE_VARIABLES, $var)) { |
|
| 214 | + $contexte[$var] = $val; |
|
| 215 | + } |
|
| 216 | + } |
|
| 217 | + foreach ($_POST as $var => $val) { |
|
| 218 | + if (!preg_match(_CONTEXTE_IGNORE_VARIABLES, $var)) { |
|
| 219 | + $contexte[$var] = $val; |
|
| 220 | + } |
|
| 221 | + } |
|
| 222 | + |
|
| 223 | + return $contexte; |
|
| 224 | 224 | } |
| 225 | 225 | |
| 226 | 226 | /** |
@@ -231,25 +231,25 @@ discard block |
||
| 231 | 231 | * @return array |
| 232 | 232 | */ |
| 233 | 233 | function calculer_contexte_implicite() { |
| 234 | - static $notes = null; |
|
| 235 | - if (is_null($notes)) { |
|
| 236 | - $notes = charger_fonction('notes', 'inc', true); |
|
| 237 | - } |
|
| 238 | - $contexte_implicite = [ |
|
| 239 | - 'squelettes' => $GLOBALS['dossier_squelettes'], // devrait etre 'chemin' => $GLOBALS['path_sig'], ? |
|
| 240 | - 'host' => ($_SERVER['HTTP_HOST'] ?? null), |
|
| 241 | - 'https' => ($_SERVER['HTTPS'] ?? ''), |
|
| 242 | - 'espace' => test_espace_prive(), |
|
| 243 | - 'marqueur' => ($GLOBALS['marqueur'] ?? ''), |
|
| 244 | - 'marqueur_skel' => ($GLOBALS['marqueur_skel'] ?? ''), |
|
| 245 | - 'notes' => $notes ? $notes('', 'contexter_cache') : '', |
|
| 246 | - 'spip_version_code' => $GLOBALS['spip_version_code'], |
|
| 247 | - ]; |
|
| 248 | - if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { |
|
| 249 | - $contexte_implicite['host'] .= '|' . $_SERVER['HTTP_X_FORWARDED_HOST']; |
|
| 250 | - } |
|
| 251 | - |
|
| 252 | - return $contexte_implicite; |
|
| 234 | + static $notes = null; |
|
| 235 | + if (is_null($notes)) { |
|
| 236 | + $notes = charger_fonction('notes', 'inc', true); |
|
| 237 | + } |
|
| 238 | + $contexte_implicite = [ |
|
| 239 | + 'squelettes' => $GLOBALS['dossier_squelettes'], // devrait etre 'chemin' => $GLOBALS['path_sig'], ? |
|
| 240 | + 'host' => ($_SERVER['HTTP_HOST'] ?? null), |
|
| 241 | + 'https' => ($_SERVER['HTTPS'] ?? ''), |
|
| 242 | + 'espace' => test_espace_prive(), |
|
| 243 | + 'marqueur' => ($GLOBALS['marqueur'] ?? ''), |
|
| 244 | + 'marqueur_skel' => ($GLOBALS['marqueur_skel'] ?? ''), |
|
| 245 | + 'notes' => $notes ? $notes('', 'contexter_cache') : '', |
|
| 246 | + 'spip_version_code' => $GLOBALS['spip_version_code'], |
|
| 247 | + ]; |
|
| 248 | + if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { |
|
| 249 | + $contexte_implicite['host'] .= '|' . $_SERVER['HTTP_X_FORWARDED_HOST']; |
|
| 250 | + } |
|
| 251 | + |
|
| 252 | + return $contexte_implicite; |
|
| 253 | 253 | } |
| 254 | 254 | |
| 255 | 255 | // |
@@ -258,55 +258,55 @@ discard block |
||
| 258 | 258 | |
| 259 | 259 | function auto_content_type($page) { |
| 260 | 260 | |
| 261 | - if (!isset($GLOBALS['flag_preserver'])) { |
|
| 262 | - $GLOBALS['flag_preserver'] = ($page && preg_match( |
|
| 263 | - '/header\s*\(\s*.content\-type:/isx', |
|
| 264 | - $page['texte'] |
|
| 265 | - ) || (isset($page['entetes']['Content-Type']))); |
|
| 266 | - } |
|
| 261 | + if (!isset($GLOBALS['flag_preserver'])) { |
|
| 262 | + $GLOBALS['flag_preserver'] = ($page && preg_match( |
|
| 263 | + '/header\s*\(\s*.content\-type:/isx', |
|
| 264 | + $page['texte'] |
|
| 265 | + ) || (isset($page['entetes']['Content-Type']))); |
|
| 266 | + } |
|
| 267 | 267 | } |
| 268 | 268 | |
| 269 | 269 | function inclure_page($fond, $contexte, string $connect = '') { |
| 270 | - $use_cache = null; |
|
| 271 | - $chemin_cache = null; |
|
| 272 | - $lastinclude = null; |
|
| 273 | - $res = null; |
|
| 274 | - static $cacher, $produire_page; |
|
| 275 | - |
|
| 276 | - // enlever le fond de contexte inclus car sinon il prend la main |
|
| 277 | - // dans les sous inclusions -> boucle infinie d'inclusion identique |
|
| 278 | - // (cette precaution n'est probablement plus utile) |
|
| 279 | - unset($contexte['fond']); |
|
| 280 | - $page = ['contexte_implicite' => calculer_contexte_implicite()]; |
|
| 281 | - $page['contexte_implicite']['cache'] = $fond; |
|
| 282 | - if (is_null($cacher)) { |
|
| 283 | - $cacher = charger_fonction('cacher', 'public', true); |
|
| 284 | - } |
|
| 285 | - // Les quatre derniers parametres sont modifies par la fonction: |
|
| 286 | - // emplacement, validite, et, s'il est valide, contenu & age |
|
| 287 | - if ($cacher) { |
|
| 288 | - $res = $cacher($contexte, $use_cache, $chemin_cache, $page, $lastinclude); |
|
| 289 | - } else { |
|
| 290 | - $use_cache = -1; |
|
| 291 | - } |
|
| 292 | - // $res = message d'erreur : on sort de la |
|
| 293 | - if ($res) { |
|
| 294 | - return ['texte' => $res]; |
|
| 295 | - } |
|
| 296 | - |
|
| 297 | - // Si use_cache ne vaut pas 0, la page doit etre calculee |
|
| 298 | - // produire la page : peut mettre a jour $lastinclude |
|
| 299 | - // le contexte_cache envoye a cacher() a ete conserve et est passe a produire |
|
| 300 | - if ($use_cache) { |
|
| 301 | - if (is_null($produire_page)) { |
|
| 302 | - $produire_page = charger_fonction('produire_page', 'public'); |
|
| 303 | - } |
|
| 304 | - $page = $produire_page($fond, $contexte, $use_cache, $chemin_cache, $contexte, $page, $lastinclude, $connect); |
|
| 305 | - } |
|
| 306 | - // dans tous les cas, mettre a jour $GLOBALS['lastmodified'] |
|
| 307 | - $GLOBALS['lastmodified'] = max(($GLOBALS['lastmodified'] ?? 0), $lastinclude); |
|
| 308 | - |
|
| 309 | - return $page; |
|
| 270 | + $use_cache = null; |
|
| 271 | + $chemin_cache = null; |
|
| 272 | + $lastinclude = null; |
|
| 273 | + $res = null; |
|
| 274 | + static $cacher, $produire_page; |
|
| 275 | + |
|
| 276 | + // enlever le fond de contexte inclus car sinon il prend la main |
|
| 277 | + // dans les sous inclusions -> boucle infinie d'inclusion identique |
|
| 278 | + // (cette precaution n'est probablement plus utile) |
|
| 279 | + unset($contexte['fond']); |
|
| 280 | + $page = ['contexte_implicite' => calculer_contexte_implicite()]; |
|
| 281 | + $page['contexte_implicite']['cache'] = $fond; |
|
| 282 | + if (is_null($cacher)) { |
|
| 283 | + $cacher = charger_fonction('cacher', 'public', true); |
|
| 284 | + } |
|
| 285 | + // Les quatre derniers parametres sont modifies par la fonction: |
|
| 286 | + // emplacement, validite, et, s'il est valide, contenu & age |
|
| 287 | + if ($cacher) { |
|
| 288 | + $res = $cacher($contexte, $use_cache, $chemin_cache, $page, $lastinclude); |
|
| 289 | + } else { |
|
| 290 | + $use_cache = -1; |
|
| 291 | + } |
|
| 292 | + // $res = message d'erreur : on sort de la |
|
| 293 | + if ($res) { |
|
| 294 | + return ['texte' => $res]; |
|
| 295 | + } |
|
| 296 | + |
|
| 297 | + // Si use_cache ne vaut pas 0, la page doit etre calculee |
|
| 298 | + // produire la page : peut mettre a jour $lastinclude |
|
| 299 | + // le contexte_cache envoye a cacher() a ete conserve et est passe a produire |
|
| 300 | + if ($use_cache) { |
|
| 301 | + if (is_null($produire_page)) { |
|
| 302 | + $produire_page = charger_fonction('produire_page', 'public'); |
|
| 303 | + } |
|
| 304 | + $page = $produire_page($fond, $contexte, $use_cache, $chemin_cache, $contexte, $page, $lastinclude, $connect); |
|
| 305 | + } |
|
| 306 | + // dans tous les cas, mettre a jour $GLOBALS['lastmodified'] |
|
| 307 | + $GLOBALS['lastmodified'] = max(($GLOBALS['lastmodified'] ?? 0), $lastinclude); |
|
| 308 | + |
|
| 309 | + return $page; |
|
| 310 | 310 | } |
| 311 | 311 | |
| 312 | 312 | /** |
@@ -324,41 +324,41 @@ discard block |
||
| 324 | 324 | * @return array |
| 325 | 325 | */ |
| 326 | 326 | function public_produire_page_dist( |
| 327 | - $fond, |
|
| 328 | - $contexte, |
|
| 329 | - $use_cache, |
|
| 330 | - $chemin_cache, |
|
| 331 | - $contexte_cache, |
|
| 332 | - &$page, |
|
| 333 | - &$lastinclude, |
|
| 334 | - $connect = '' |
|
| 327 | + $fond, |
|
| 328 | + $contexte, |
|
| 329 | + $use_cache, |
|
| 330 | + $chemin_cache, |
|
| 331 | + $contexte_cache, |
|
| 332 | + &$page, |
|
| 333 | + &$lastinclude, |
|
| 334 | + $connect = '' |
|
| 335 | 335 | ) { |
| 336 | - static $parametrer, $cacher; |
|
| 337 | - if (!$parametrer) { |
|
| 338 | - $parametrer = charger_fonction('parametrer', 'public'); |
|
| 339 | - } |
|
| 340 | - $page = $parametrer($fond, $contexte, $chemin_cache, $connect); |
|
| 341 | - // et on l'enregistre sur le disque |
|
| 342 | - if ( |
|
| 343 | - $chemin_cache |
|
| 344 | - and $use_cache > -1 |
|
| 345 | - and is_array($page) |
|
| 346 | - and count($page) |
|
| 347 | - and isset($page['entetes']['X-Spip-Cache']) |
|
| 348 | - and $page['entetes']['X-Spip-Cache'] > 0 |
|
| 349 | - ) { |
|
| 350 | - if (is_null($cacher)) { |
|
| 351 | - $cacher = charger_fonction('cacher', 'public', true); |
|
| 352 | - } |
|
| 353 | - $lastinclude = time(); |
|
| 354 | - if ($cacher) { |
|
| 355 | - $cacher($contexte_cache, $use_cache, $chemin_cache, $page, $lastinclude); |
|
| 356 | - } else { |
|
| 357 | - $use_cache = -1; |
|
| 358 | - } |
|
| 359 | - } |
|
| 360 | - |
|
| 361 | - return $page; |
|
| 336 | + static $parametrer, $cacher; |
|
| 337 | + if (!$parametrer) { |
|
| 338 | + $parametrer = charger_fonction('parametrer', 'public'); |
|
| 339 | + } |
|
| 340 | + $page = $parametrer($fond, $contexte, $chemin_cache, $connect); |
|
| 341 | + // et on l'enregistre sur le disque |
|
| 342 | + if ( |
|
| 343 | + $chemin_cache |
|
| 344 | + and $use_cache > -1 |
|
| 345 | + and is_array($page) |
|
| 346 | + and count($page) |
|
| 347 | + and isset($page['entetes']['X-Spip-Cache']) |
|
| 348 | + and $page['entetes']['X-Spip-Cache'] > 0 |
|
| 349 | + ) { |
|
| 350 | + if (is_null($cacher)) { |
|
| 351 | + $cacher = charger_fonction('cacher', 'public', true); |
|
| 352 | + } |
|
| 353 | + $lastinclude = time(); |
|
| 354 | + if ($cacher) { |
|
| 355 | + $cacher($contexte_cache, $use_cache, $chemin_cache, $page, $lastinclude); |
|
| 356 | + } else { |
|
| 357 | + $use_cache = -1; |
|
| 358 | + } |
|
| 359 | + } |
|
| 360 | + |
|
| 361 | + return $page; |
|
| 362 | 362 | } |
| 363 | 363 | |
| 364 | 364 | // Fonction inseree par le compilateur dans le code compile. |
@@ -372,14 +372,14 @@ discard block |
||
| 372 | 372 | // 4: langue |
| 373 | 373 | |
| 374 | 374 | function inserer_balise_dynamique($contexte_exec, $contexte_compil) { |
| 375 | - arguments_balise_dyn_depuis_modele(null, 'reset'); |
|
| 376 | - |
|
| 377 | - if (!is_array($contexte_exec)) { |
|
| 378 | - echo $contexte_exec; |
|
| 379 | - } // message d'erreur etc |
|
| 380 | - else { |
|
| 381 | - inclure_balise_dynamique($contexte_exec, true, $contexte_compil); |
|
| 382 | - } |
|
| 375 | + arguments_balise_dyn_depuis_modele(null, 'reset'); |
|
| 376 | + |
|
| 377 | + if (!is_array($contexte_exec)) { |
|
| 378 | + echo $contexte_exec; |
|
| 379 | + } // message d'erreur etc |
|
| 380 | + else { |
|
| 381 | + inclure_balise_dynamique($contexte_exec, true, $contexte_compil); |
|
| 382 | + } |
|
| 383 | 383 | } |
| 384 | 384 | |
| 385 | 385 | /** |
@@ -392,101 +392,101 @@ discard block |
||
| 392 | 392 | * @return string|void |
| 393 | 393 | */ |
| 394 | 394 | function inclure_balise_dynamique($texte, $echo = true, $contexte_compil = []) { |
| 395 | - if (is_array($texte)) { |
|
| 396 | - [$fond, $delainc, $contexte_inclus] = $texte; |
|
| 397 | - |
|
| 398 | - // delais a l'ancienne, c'est pratiquement mort |
|
| 399 | - $d = $GLOBALS['delais'] ?? null; |
|
| 400 | - $GLOBALS['delais'] = $delainc; |
|
| 401 | - |
|
| 402 | - $page = recuperer_fond( |
|
| 403 | - $fond, |
|
| 404 | - $contexte_inclus, |
|
| 405 | - ['trim' => false, 'raw' => true, 'compil' => $contexte_compil] |
|
| 406 | - ); |
|
| 407 | - |
|
| 408 | - $texte = $page['texte']; |
|
| 409 | - |
|
| 410 | - $GLOBALS['delais'] = $d; |
|
| 411 | - // Faire remonter les entetes |
|
| 412 | - if ( |
|
| 413 | - isset($page['entetes']) |
|
| 414 | - and is_array($page['entetes']) |
|
| 415 | - ) { |
|
| 416 | - // mais pas toutes |
|
| 417 | - unset($page['entetes']['X-Spip-Cache']); |
|
| 418 | - unset($page['entetes']['Content-Type']); |
|
| 419 | - if (isset($GLOBALS['page']) and is_array($GLOBALS['page'])) { |
|
| 420 | - if (!is_array($GLOBALS['page']['entetes'])) { |
|
| 421 | - $GLOBALS['page']['entetes'] = []; |
|
| 422 | - } |
|
| 423 | - $GLOBALS['page']['entetes'] = |
|
| 424 | - array_merge($GLOBALS['page']['entetes'], $page['entetes']); |
|
| 425 | - } |
|
| 426 | - } |
|
| 427 | - // _pipelines au pluriel array('nom_pipeline' => $args...) avec une syntaxe permettant plusieurs pipelines |
|
| 428 | - if ( |
|
| 429 | - isset($page['contexte']['_pipelines']) |
|
| 430 | - and is_array($page['contexte']['_pipelines']) |
|
| 431 | - and count($page['contexte']['_pipelines']) |
|
| 432 | - ) { |
|
| 433 | - foreach ($page['contexte']['_pipelines'] as $pipe => $args) { |
|
| 434 | - $args['contexte'] = $page['contexte']; |
|
| 435 | - unset($args['contexte']['_pipelines']); // par precaution, meme si le risque de boucle infinie est a priori nul |
|
| 436 | - $texte = pipeline( |
|
| 437 | - $pipe, |
|
| 438 | - [ |
|
| 439 | - 'data' => $texte, |
|
| 440 | - 'args' => $args |
|
| 441 | - ] |
|
| 442 | - ); |
|
| 443 | - } |
|
| 444 | - } |
|
| 445 | - } |
|
| 446 | - |
|
| 447 | - if (defined('_VAR_MODE') and _VAR_MODE == 'debug') { |
|
| 448 | - // compatibilite : avant on donnait le numero de ligne ou rien. |
|
| 449 | - $ligne = intval($contexte_compil[3] ?? $contexte_compil); |
|
| 450 | - $GLOBALS['debug_objets']['resultat'][$ligne] = $texte; |
|
| 451 | - } |
|
| 452 | - if ($echo) { |
|
| 453 | - echo $texte; |
|
| 454 | - } else { |
|
| 455 | - return $texte; |
|
| 456 | - } |
|
| 395 | + if (is_array($texte)) { |
|
| 396 | + [$fond, $delainc, $contexte_inclus] = $texte; |
|
| 397 | + |
|
| 398 | + // delais a l'ancienne, c'est pratiquement mort |
|
| 399 | + $d = $GLOBALS['delais'] ?? null; |
|
| 400 | + $GLOBALS['delais'] = $delainc; |
|
| 401 | + |
|
| 402 | + $page = recuperer_fond( |
|
| 403 | + $fond, |
|
| 404 | + $contexte_inclus, |
|
| 405 | + ['trim' => false, 'raw' => true, 'compil' => $contexte_compil] |
|
| 406 | + ); |
|
| 407 | + |
|
| 408 | + $texte = $page['texte']; |
|
| 409 | + |
|
| 410 | + $GLOBALS['delais'] = $d; |
|
| 411 | + // Faire remonter les entetes |
|
| 412 | + if ( |
|
| 413 | + isset($page['entetes']) |
|
| 414 | + and is_array($page['entetes']) |
|
| 415 | + ) { |
|
| 416 | + // mais pas toutes |
|
| 417 | + unset($page['entetes']['X-Spip-Cache']); |
|
| 418 | + unset($page['entetes']['Content-Type']); |
|
| 419 | + if (isset($GLOBALS['page']) and is_array($GLOBALS['page'])) { |
|
| 420 | + if (!is_array($GLOBALS['page']['entetes'])) { |
|
| 421 | + $GLOBALS['page']['entetes'] = []; |
|
| 422 | + } |
|
| 423 | + $GLOBALS['page']['entetes'] = |
|
| 424 | + array_merge($GLOBALS['page']['entetes'], $page['entetes']); |
|
| 425 | + } |
|
| 426 | + } |
|
| 427 | + // _pipelines au pluriel array('nom_pipeline' => $args...) avec une syntaxe permettant plusieurs pipelines |
|
| 428 | + if ( |
|
| 429 | + isset($page['contexte']['_pipelines']) |
|
| 430 | + and is_array($page['contexte']['_pipelines']) |
|
| 431 | + and count($page['contexte']['_pipelines']) |
|
| 432 | + ) { |
|
| 433 | + foreach ($page['contexte']['_pipelines'] as $pipe => $args) { |
|
| 434 | + $args['contexte'] = $page['contexte']; |
|
| 435 | + unset($args['contexte']['_pipelines']); // par precaution, meme si le risque de boucle infinie est a priori nul |
|
| 436 | + $texte = pipeline( |
|
| 437 | + $pipe, |
|
| 438 | + [ |
|
| 439 | + 'data' => $texte, |
|
| 440 | + 'args' => $args |
|
| 441 | + ] |
|
| 442 | + ); |
|
| 443 | + } |
|
| 444 | + } |
|
| 445 | + } |
|
| 446 | + |
|
| 447 | + if (defined('_VAR_MODE') and _VAR_MODE == 'debug') { |
|
| 448 | + // compatibilite : avant on donnait le numero de ligne ou rien. |
|
| 449 | + $ligne = intval($contexte_compil[3] ?? $contexte_compil); |
|
| 450 | + $GLOBALS['debug_objets']['resultat'][$ligne] = $texte; |
|
| 451 | + } |
|
| 452 | + if ($echo) { |
|
| 453 | + echo $texte; |
|
| 454 | + } else { |
|
| 455 | + return $texte; |
|
| 456 | + } |
|
| 457 | 457 | } |
| 458 | 458 | |
| 459 | 459 | function message_page_indisponible($page, $contexte) { |
| 460 | - static $deja = false; |
|
| 461 | - if ($deja) { |
|
| 462 | - return 'erreur'; |
|
| 463 | - } |
|
| 464 | - $codes = [ |
|
| 465 | - '404' => '404 Not Found', |
|
| 466 | - '503' => '503 Service Unavailable', |
|
| 467 | - ]; |
|
| 468 | - |
|
| 469 | - $contexte['status'] = ($page !== false) ? '404' : '503'; |
|
| 470 | - $contexte['code'] = $codes[$contexte['status']]; |
|
| 471 | - $contexte['fond'] = '404'; // gere les 2 erreurs |
|
| 472 | - if (!isset($contexte['lang'])) { |
|
| 473 | - include_spip('inc/lang'); |
|
| 474 | - $contexte['lang'] = $GLOBALS['spip_lang']; |
|
| 475 | - } |
|
| 476 | - |
|
| 477 | - $deja = true; |
|
| 478 | - // passer aux plugins qui peuvent decider d'une page d'erreur plus pertinent |
|
| 479 | - // ex restriction d'acces => 401 |
|
| 480 | - $contexte = pipeline('page_indisponible', $contexte); |
|
| 481 | - |
|
| 482 | - // produire la page d'erreur |
|
| 483 | - $page = inclure_page($contexte['fond'], $contexte); |
|
| 484 | - if (!$page) { |
|
| 485 | - $page = inclure_page('404', $contexte); |
|
| 486 | - } |
|
| 487 | - $page['status'] = $contexte['status']; |
|
| 488 | - |
|
| 489 | - return $page; |
|
| 460 | + static $deja = false; |
|
| 461 | + if ($deja) { |
|
| 462 | + return 'erreur'; |
|
| 463 | + } |
|
| 464 | + $codes = [ |
|
| 465 | + '404' => '404 Not Found', |
|
| 466 | + '503' => '503 Service Unavailable', |
|
| 467 | + ]; |
|
| 468 | + |
|
| 469 | + $contexte['status'] = ($page !== false) ? '404' : '503'; |
|
| 470 | + $contexte['code'] = $codes[$contexte['status']]; |
|
| 471 | + $contexte['fond'] = '404'; // gere les 2 erreurs |
|
| 472 | + if (!isset($contexte['lang'])) { |
|
| 473 | + include_spip('inc/lang'); |
|
| 474 | + $contexte['lang'] = $GLOBALS['spip_lang']; |
|
| 475 | + } |
|
| 476 | + |
|
| 477 | + $deja = true; |
|
| 478 | + // passer aux plugins qui peuvent decider d'une page d'erreur plus pertinent |
|
| 479 | + // ex restriction d'acces => 401 |
|
| 480 | + $contexte = pipeline('page_indisponible', $contexte); |
|
| 481 | + |
|
| 482 | + // produire la page d'erreur |
|
| 483 | + $page = inclure_page($contexte['fond'], $contexte); |
|
| 484 | + if (!$page) { |
|
| 485 | + $page = inclure_page('404', $contexte); |
|
| 486 | + } |
|
| 487 | + $page['status'] = $contexte['status']; |
|
| 488 | + |
|
| 489 | + return $page; |
|
| 490 | 490 | } |
| 491 | 491 | |
| 492 | 492 | /** |
@@ -498,44 +498,44 @@ discard block |
||
| 498 | 498 | * @return mixed |
| 499 | 499 | */ |
| 500 | 500 | function arguments_balise_dyn_depuis_modele($arg, $operation = 'set') { |
| 501 | - static $balise_dyn_appellee_par_modele = null; |
|
| 502 | - switch ($operation) { |
|
| 503 | - case 'read': |
|
| 504 | - return $balise_dyn_appellee_par_modele; |
|
| 505 | - case 'reset': |
|
| 506 | - $balise_dyn_appellee_par_modele = null; |
|
| 507 | - return null; |
|
| 508 | - case 'set': |
|
| 509 | - default: |
|
| 510 | - $balise_dyn_appellee_par_modele = $arg; |
|
| 511 | - return $arg; |
|
| 512 | - } |
|
| 501 | + static $balise_dyn_appellee_par_modele = null; |
|
| 502 | + switch ($operation) { |
|
| 503 | + case 'read': |
|
| 504 | + return $balise_dyn_appellee_par_modele; |
|
| 505 | + case 'reset': |
|
| 506 | + $balise_dyn_appellee_par_modele = null; |
|
| 507 | + return null; |
|
| 508 | + case 'set': |
|
| 509 | + default: |
|
| 510 | + $balise_dyn_appellee_par_modele = $arg; |
|
| 511 | + return $arg; |
|
| 512 | + } |
|
| 513 | 513 | } |
| 514 | 514 | |
| 515 | 515 | // temporairement ici : a mettre dans le futur inc/modeles |
| 516 | 516 | // creer_contexte_de_modele('left', 'autostart=true', ...) renvoie un array() |
| 517 | 517 | function creer_contexte_de_modele($args) { |
| 518 | - $contexte = []; |
|
| 519 | - foreach ($args as $var => $val) { |
|
| 520 | - if (is_int($var)) { // argument pas formate |
|
| 521 | - if (in_array($val, ['left', 'right', 'center'])) { |
|
| 522 | - $var = 'align'; |
|
| 523 | - $contexte[$var] = $val; |
|
| 524 | - } else { |
|
| 525 | - $args = explode('=', $val); |
|
| 526 | - if (count($args) >= 2) { // Flashvars=arg1=machin&arg2=truc genere plus de deux args |
|
| 527 | - $contexte[trim($args[0])] = substr($val, strlen($args[0]) + 1); |
|
| 528 | - } else // notation abregee |
|
| 529 | - { |
|
| 530 | - $contexte[trim($val)] = trim($val); |
|
| 531 | - } |
|
| 532 | - } |
|
| 533 | - } else { |
|
| 534 | - $contexte[$var] = $val; |
|
| 535 | - } |
|
| 536 | - } |
|
| 537 | - |
|
| 538 | - return $contexte; |
|
| 518 | + $contexte = []; |
|
| 519 | + foreach ($args as $var => $val) { |
|
| 520 | + if (is_int($var)) { // argument pas formate |
|
| 521 | + if (in_array($val, ['left', 'right', 'center'])) { |
|
| 522 | + $var = 'align'; |
|
| 523 | + $contexte[$var] = $val; |
|
| 524 | + } else { |
|
| 525 | + $args = explode('=', $val); |
|
| 526 | + if (count($args) >= 2) { // Flashvars=arg1=machin&arg2=truc genere plus de deux args |
|
| 527 | + $contexte[trim($args[0])] = substr($val, strlen($args[0]) + 1); |
|
| 528 | + } else // notation abregee |
|
| 529 | + { |
|
| 530 | + $contexte[trim($val)] = trim($val); |
|
| 531 | + } |
|
| 532 | + } |
|
| 533 | + } else { |
|
| 534 | + $contexte[$var] = $val; |
|
| 535 | + } |
|
| 536 | + } |
|
| 537 | + |
|
| 538 | + return $contexte; |
|
| 539 | 539 | } |
| 540 | 540 | |
| 541 | 541 | /** |
@@ -550,43 +550,43 @@ discard block |
||
| 550 | 550 | * @return string |
| 551 | 551 | */ |
| 552 | 552 | function styliser_modele($modele, $id, $contexte = null) { |
| 553 | - static $styliseurs = null; |
|
| 554 | - if (is_null($styliseurs)) { |
|
| 555 | - $tables_objet = lister_tables_objets_sql(); |
|
| 556 | - foreach ($tables_objet as $table => $desc) { |
|
| 557 | - if ( |
|
| 558 | - isset($desc['modeles']) and $desc['modeles'] |
|
| 559 | - and isset($desc['modeles_styliser']) and $desc['modeles_styliser'] |
|
| 560 | - and function_exists($desc['modeles_styliser']) |
|
| 561 | - ) { |
|
| 562 | - $primary = id_table_objet($table); |
|
| 563 | - foreach ($desc['modeles'] as $m) { |
|
| 564 | - $styliseurs[$m] = ['primary' => $primary, 'callback' => $desc['modeles_styliser']]; |
|
| 565 | - } |
|
| 566 | - } |
|
| 567 | - } |
|
| 568 | - } |
|
| 569 | - |
|
| 570 | - if (isset($styliseurs[$modele])) { |
|
| 571 | - $styliseur = $styliseurs[$modele]['callback']; |
|
| 572 | - $primary = $styliseurs[$modele]['primary']; |
|
| 573 | - if (is_null($id) and $contexte) { |
|
| 574 | - if (isset($contexte['id'])) { |
|
| 575 | - $id = $contexte['id']; |
|
| 576 | - } elseif (isset($contexte[$primary])) { |
|
| 577 | - $id = $contexte[$primary]; |
|
| 578 | - } |
|
| 579 | - } |
|
| 580 | - if (is_null($id)) { |
|
| 581 | - $msg = "modeles/$modele : " . _T('zbug_parametres_inclus_incorrects', ['param' => "id/$primary"]); |
|
| 582 | - erreur_squelette($msg); |
|
| 583 | - // on passe id=0 au routeur pour tomber sur le modele par defaut et eviter une seconde erreur sur un modele inexistant |
|
| 584 | - $id = 0; |
|
| 585 | - } |
|
| 586 | - $modele = $styliseur($modele, $id); |
|
| 587 | - } |
|
| 588 | - |
|
| 589 | - return $modele; |
|
| 553 | + static $styliseurs = null; |
|
| 554 | + if (is_null($styliseurs)) { |
|
| 555 | + $tables_objet = lister_tables_objets_sql(); |
|
| 556 | + foreach ($tables_objet as $table => $desc) { |
|
| 557 | + if ( |
|
| 558 | + isset($desc['modeles']) and $desc['modeles'] |
|
| 559 | + and isset($desc['modeles_styliser']) and $desc['modeles_styliser'] |
|
| 560 | + and function_exists($desc['modeles_styliser']) |
|
| 561 | + ) { |
|
| 562 | + $primary = id_table_objet($table); |
|
| 563 | + foreach ($desc['modeles'] as $m) { |
|
| 564 | + $styliseurs[$m] = ['primary' => $primary, 'callback' => $desc['modeles_styliser']]; |
|
| 565 | + } |
|
| 566 | + } |
|
| 567 | + } |
|
| 568 | + } |
|
| 569 | + |
|
| 570 | + if (isset($styliseurs[$modele])) { |
|
| 571 | + $styliseur = $styliseurs[$modele]['callback']; |
|
| 572 | + $primary = $styliseurs[$modele]['primary']; |
|
| 573 | + if (is_null($id) and $contexte) { |
|
| 574 | + if (isset($contexte['id'])) { |
|
| 575 | + $id = $contexte['id']; |
|
| 576 | + } elseif (isset($contexte[$primary])) { |
|
| 577 | + $id = $contexte[$primary]; |
|
| 578 | + } |
|
| 579 | + } |
|
| 580 | + if (is_null($id)) { |
|
| 581 | + $msg = "modeles/$modele : " . _T('zbug_parametres_inclus_incorrects', ['param' => "id/$primary"]); |
|
| 582 | + erreur_squelette($msg); |
|
| 583 | + // on passe id=0 au routeur pour tomber sur le modele par defaut et eviter une seconde erreur sur un modele inexistant |
|
| 584 | + $id = 0; |
|
| 585 | + } |
|
| 586 | + $modele = $styliseur($modele, $id); |
|
| 587 | + } |
|
| 588 | + |
|
| 589 | + return $modele; |
|
| 590 | 590 | } |
| 591 | 591 | |
| 592 | 592 | /** |
@@ -603,102 +603,102 @@ discard block |
||
| 603 | 603 | */ |
| 604 | 604 | function inclure_modele($type, $id, $params, $lien, string $connect = '', $env = []) { |
| 605 | 605 | |
| 606 | - static $compteur; |
|
| 607 | - if (++$compteur > 10) { |
|
| 608 | - return ''; |
|
| 609 | - } # ne pas boucler indefiniment |
|
| 610 | - |
|
| 611 | - $type = strtolower($type); |
|
| 612 | - $type = styliser_modele($type, $id); |
|
| 613 | - |
|
| 614 | - $fond = $class = ''; |
|
| 615 | - |
|
| 616 | - $params = array_filter(explode('|', $params)); |
|
| 617 | - if ($params) { |
|
| 618 | - $soustype = current($params); |
|
| 619 | - $soustype = strtolower(trim($soustype)); |
|
| 620 | - if (in_array($soustype, ['left', 'right', 'center', 'ajax'])) { |
|
| 621 | - $soustype = next($params); |
|
| 622 | - $soustype = strtolower($soustype); |
|
| 623 | - } |
|
| 624 | - |
|
| 625 | - if (preg_match(',^[a-z0-9_]+$,', $soustype)) { |
|
| 626 | - if (!trouve_modele($fond = ($type . '_' . $soustype))) { |
|
| 627 | - $fond = ''; |
|
| 628 | - $class = $soustype; |
|
| 629 | - } |
|
| 630 | - // enlever le sous type des params |
|
| 631 | - $params = array_diff($params, [$soustype]); |
|
| 632 | - } |
|
| 633 | - } |
|
| 634 | - |
|
| 635 | - // Si ca marche pas en precisant le sous-type, prendre le type |
|
| 636 | - if (!$fond and !trouve_modele($fond = $type)) { |
|
| 637 | - spip_log("Modele $type introuvable", _LOG_INFO_IMPORTANTE); |
|
| 638 | - |
|
| 639 | - return false; |
|
| 640 | - } |
|
| 641 | - $fond = 'modeles/' . $fond; |
|
| 642 | - // Creer le contexte |
|
| 643 | - $contexte = $env; |
|
| 644 | - $contexte['dir_racine'] = _DIR_RACINE; # eviter de mixer un cache racine et un cache ecrire (meme si pour l'instant les modeles ne sont pas caches, le resultat etant different il faut que le contexte en tienne compte |
|
| 645 | - |
|
| 646 | - // Le numero du modele est mis dans l'environnement |
|
| 647 | - // d'une part sous l'identifiant "id" |
|
| 648 | - // et d'autre part sous l'identifiant de la cle primaire |
|
| 649 | - // par la fonction id_table_objet, |
|
| 650 | - // (<article1> =>> article =>> id_article =>> id_article=1) |
|
| 651 | - $_id = id_table_objet($type); |
|
| 652 | - $contexte['id'] = $contexte[$_id] = $id; |
|
| 653 | - |
|
| 654 | - if (isset($class)) { |
|
| 655 | - $contexte['class'] = $class; |
|
| 656 | - } |
|
| 657 | - |
|
| 658 | - // Si un lien a ete passe en parametre, ex: [<modele1>->url] ou [<modele1|title_du_lien{hreflang}->url] |
|
| 659 | - if ($lien) { |
|
| 660 | - # un eventuel guillemet (") sera reechappe par #ENV |
|
| 661 | - $contexte['lien'] = str_replace('"', '"', $lien['href']); |
|
| 662 | - $contexte['lien_class'] = $lien['class']; |
|
| 663 | - $contexte['lien_mime'] = $lien['mime']; |
|
| 664 | - $contexte['lien_title'] = $lien['title']; |
|
| 665 | - $contexte['lien_hreflang'] = $lien['hreflang']; |
|
| 666 | - } |
|
| 667 | - |
|
| 668 | - // Traiter les parametres |
|
| 669 | - // par exemple : <img1|center>, <emb12|autostart=true> ou <doc1|lang=en> |
|
| 670 | - $arg_list = creer_contexte_de_modele($params); |
|
| 671 | - $contexte['args'] = $arg_list; // on passe la liste des arguments du modeles dans une variable args |
|
| 672 | - $contexte = array_merge($contexte, $arg_list); |
|
| 673 | - |
|
| 674 | - // Appliquer le modele avec le contexte |
|
| 675 | - $retour = recuperer_fond($fond, $contexte, [], $connect); |
|
| 676 | - |
|
| 677 | - // Regarder si le modele tient compte des liens (il *doit* alors indiquer |
|
| 678 | - // spip_lien_ok dans les classes de son conteneur de premier niveau ; |
|
| 679 | - // sinon, s'il y a un lien, on l'ajoute classiquement |
|
| 680 | - if ( |
|
| 681 | - strstr( |
|
| 682 | - ' ' . ($classes = extraire_attribut($retour, 'class')) . ' ', |
|
| 683 | - 'spip_lien_ok' |
|
| 684 | - ) |
|
| 685 | - ) { |
|
| 686 | - $retour = inserer_attribut( |
|
| 687 | - $retour, |
|
| 688 | - 'class', |
|
| 689 | - trim(str_replace(' spip_lien_ok ', ' ', " $classes ")) |
|
| 690 | - ); |
|
| 691 | - } else { |
|
| 692 | - if ($lien) { |
|
| 693 | - $retour = "<a href=\"" . $lien['href'] . "\" class=\"" . $lien['class'] . "\">" . $retour . '</a>'; |
|
| 694 | - } |
|
| 695 | - } |
|
| 696 | - |
|
| 697 | - $compteur--; |
|
| 698 | - |
|
| 699 | - return (isset($arg_list['ajax']) and $arg_list['ajax'] == 'ajax') |
|
| 700 | - ? encoder_contexte_ajax($contexte, '', $retour) |
|
| 701 | - : $retour; |
|
| 606 | + static $compteur; |
|
| 607 | + if (++$compteur > 10) { |
|
| 608 | + return ''; |
|
| 609 | + } # ne pas boucler indefiniment |
|
| 610 | + |
|
| 611 | + $type = strtolower($type); |
|
| 612 | + $type = styliser_modele($type, $id); |
|
| 613 | + |
|
| 614 | + $fond = $class = ''; |
|
| 615 | + |
|
| 616 | + $params = array_filter(explode('|', $params)); |
|
| 617 | + if ($params) { |
|
| 618 | + $soustype = current($params); |
|
| 619 | + $soustype = strtolower(trim($soustype)); |
|
| 620 | + if (in_array($soustype, ['left', 'right', 'center', 'ajax'])) { |
|
| 621 | + $soustype = next($params); |
|
| 622 | + $soustype = strtolower($soustype); |
|
| 623 | + } |
|
| 624 | + |
|
| 625 | + if (preg_match(',^[a-z0-9_]+$,', $soustype)) { |
|
| 626 | + if (!trouve_modele($fond = ($type . '_' . $soustype))) { |
|
| 627 | + $fond = ''; |
|
| 628 | + $class = $soustype; |
|
| 629 | + } |
|
| 630 | + // enlever le sous type des params |
|
| 631 | + $params = array_diff($params, [$soustype]); |
|
| 632 | + } |
|
| 633 | + } |
|
| 634 | + |
|
| 635 | + // Si ca marche pas en precisant le sous-type, prendre le type |
|
| 636 | + if (!$fond and !trouve_modele($fond = $type)) { |
|
| 637 | + spip_log("Modele $type introuvable", _LOG_INFO_IMPORTANTE); |
|
| 638 | + |
|
| 639 | + return false; |
|
| 640 | + } |
|
| 641 | + $fond = 'modeles/' . $fond; |
|
| 642 | + // Creer le contexte |
|
| 643 | + $contexte = $env; |
|
| 644 | + $contexte['dir_racine'] = _DIR_RACINE; # eviter de mixer un cache racine et un cache ecrire (meme si pour l'instant les modeles ne sont pas caches, le resultat etant different il faut que le contexte en tienne compte |
|
| 645 | + |
|
| 646 | + // Le numero du modele est mis dans l'environnement |
|
| 647 | + // d'une part sous l'identifiant "id" |
|
| 648 | + // et d'autre part sous l'identifiant de la cle primaire |
|
| 649 | + // par la fonction id_table_objet, |
|
| 650 | + // (<article1> =>> article =>> id_article =>> id_article=1) |
|
| 651 | + $_id = id_table_objet($type); |
|
| 652 | + $contexte['id'] = $contexte[$_id] = $id; |
|
| 653 | + |
|
| 654 | + if (isset($class)) { |
|
| 655 | + $contexte['class'] = $class; |
|
| 656 | + } |
|
| 657 | + |
|
| 658 | + // Si un lien a ete passe en parametre, ex: [<modele1>->url] ou [<modele1|title_du_lien{hreflang}->url] |
|
| 659 | + if ($lien) { |
|
| 660 | + # un eventuel guillemet (") sera reechappe par #ENV |
|
| 661 | + $contexte['lien'] = str_replace('"', '"', $lien['href']); |
|
| 662 | + $contexte['lien_class'] = $lien['class']; |
|
| 663 | + $contexte['lien_mime'] = $lien['mime']; |
|
| 664 | + $contexte['lien_title'] = $lien['title']; |
|
| 665 | + $contexte['lien_hreflang'] = $lien['hreflang']; |
|
| 666 | + } |
|
| 667 | + |
|
| 668 | + // Traiter les parametres |
|
| 669 | + // par exemple : <img1|center>, <emb12|autostart=true> ou <doc1|lang=en> |
|
| 670 | + $arg_list = creer_contexte_de_modele($params); |
|
| 671 | + $contexte['args'] = $arg_list; // on passe la liste des arguments du modeles dans une variable args |
|
| 672 | + $contexte = array_merge($contexte, $arg_list); |
|
| 673 | + |
|
| 674 | + // Appliquer le modele avec le contexte |
|
| 675 | + $retour = recuperer_fond($fond, $contexte, [], $connect); |
|
| 676 | + |
|
| 677 | + // Regarder si le modele tient compte des liens (il *doit* alors indiquer |
|
| 678 | + // spip_lien_ok dans les classes de son conteneur de premier niveau ; |
|
| 679 | + // sinon, s'il y a un lien, on l'ajoute classiquement |
|
| 680 | + if ( |
|
| 681 | + strstr( |
|
| 682 | + ' ' . ($classes = extraire_attribut($retour, 'class')) . ' ', |
|
| 683 | + 'spip_lien_ok' |
|
| 684 | + ) |
|
| 685 | + ) { |
|
| 686 | + $retour = inserer_attribut( |
|
| 687 | + $retour, |
|
| 688 | + 'class', |
|
| 689 | + trim(str_replace(' spip_lien_ok ', ' ', " $classes ")) |
|
| 690 | + ); |
|
| 691 | + } else { |
|
| 692 | + if ($lien) { |
|
| 693 | + $retour = "<a href=\"" . $lien['href'] . "\" class=\"" . $lien['class'] . "\">" . $retour . '</a>'; |
|
| 694 | + } |
|
| 695 | + } |
|
| 696 | + |
|
| 697 | + $compteur--; |
|
| 698 | + |
|
| 699 | + return (isset($arg_list['ajax']) and $arg_list['ajax'] == 'ajax') |
|
| 700 | + ? encoder_contexte_ajax($contexte, '', $retour) |
|
| 701 | + : $retour; |
|
| 702 | 702 | } |
| 703 | 703 | |
| 704 | 704 | // Un inclure_page qui marche aussi pour l'espace prive |
@@ -707,105 +707,105 @@ discard block |
||
| 707 | 707 | // recuperer_fond($fond,$contexte,array('raw'=>true)) |
| 708 | 708 | function evaluer_fond($fond, $contexte = [], string $connect = '') { |
| 709 | 709 | |
| 710 | - $page = inclure_page($fond, $contexte, $connect); |
|
| 711 | - |
|
| 712 | - if (!$page) { |
|
| 713 | - return $page; |
|
| 714 | - } |
|
| 715 | - // eval $page et affecte $res |
|
| 716 | - include _ROOT_RESTREINT . 'public/evaluer_page.php'; |
|
| 717 | - |
|
| 718 | - // Lever un drapeau (global) si le fond utilise #SESSION |
|
| 719 | - // a destination de public/parametrer |
|
| 720 | - // pour remonter vers les inclusions appelantes |
|
| 721 | - // il faut bien lever ce drapeau apres avoir evalue le fond |
|
| 722 | - // pour ne pas faire descendre le flag vers les inclusions appelees |
|
| 723 | - if ( |
|
| 724 | - isset($page['invalideurs']) |
|
| 725 | - and isset($page['invalideurs']['session']) |
|
| 726 | - ) { |
|
| 727 | - $GLOBALS['cache_utilise_session'] = $page['invalideurs']['session']; |
|
| 728 | - } |
|
| 729 | - |
|
| 730 | - return $page; |
|
| 710 | + $page = inclure_page($fond, $contexte, $connect); |
|
| 711 | + |
|
| 712 | + if (!$page) { |
|
| 713 | + return $page; |
|
| 714 | + } |
|
| 715 | + // eval $page et affecte $res |
|
| 716 | + include _ROOT_RESTREINT . 'public/evaluer_page.php'; |
|
| 717 | + |
|
| 718 | + // Lever un drapeau (global) si le fond utilise #SESSION |
|
| 719 | + // a destination de public/parametrer |
|
| 720 | + // pour remonter vers les inclusions appelantes |
|
| 721 | + // il faut bien lever ce drapeau apres avoir evalue le fond |
|
| 722 | + // pour ne pas faire descendre le flag vers les inclusions appelees |
|
| 723 | + if ( |
|
| 724 | + isset($page['invalideurs']) |
|
| 725 | + and isset($page['invalideurs']['session']) |
|
| 726 | + ) { |
|
| 727 | + $GLOBALS['cache_utilise_session'] = $page['invalideurs']['session']; |
|
| 728 | + } |
|
| 729 | + |
|
| 730 | + return $page; |
|
| 731 | 731 | } |
| 732 | 732 | |
| 733 | 733 | |
| 734 | 734 | function page_base_href(&$texte) { |
| 735 | - static $set_html_base = null; |
|
| 736 | - if (is_null($set_html_base)) { |
|
| 737 | - if (!defined('_SET_HTML_BASE')) { |
|
| 738 | - // si la profondeur est superieure a 1 |
|
| 739 | - // est que ce n'est pas une url page ni une url action |
|
| 740 | - // activer par defaut |
|
| 741 | - $set_html_base = (( |
|
| 742 | - $GLOBALS['profondeur_url'] >= (_DIR_RESTREINT ? 1 : 2) |
|
| 743 | - and _request(_SPIP_PAGE) !== 'login' |
|
| 744 | - and !_request('action')) ? true : false); |
|
| 745 | - } else { |
|
| 746 | - $set_html_base = _SET_HTML_BASE; |
|
| 747 | - } |
|
| 748 | - } |
|
| 749 | - |
|
| 750 | - if ( |
|
| 751 | - $set_html_base |
|
| 752 | - and isset($GLOBALS['html']) and $GLOBALS['html'] |
|
| 753 | - and $GLOBALS['profondeur_url'] > 0 |
|
| 754 | - and ($poshead = strpos($texte, '</head>')) !== false |
|
| 755 | - ) { |
|
| 756 | - $head = substr($texte, 0, $poshead); |
|
| 757 | - $insert = false; |
|
| 758 | - $href_base = false; |
|
| 759 | - if (strpos($head, '<base') === false) { |
|
| 760 | - $insert = true; |
|
| 761 | - } else { |
|
| 762 | - // si aucun <base ...> n'a de href il faut en inserer un |
|
| 763 | - // sinon juste re-ecrire les ancres si besoin |
|
| 764 | - $insert = true; |
|
| 765 | - include_spip('inc/filtres'); |
|
| 766 | - $bases = extraire_balises($head, 'base'); |
|
| 767 | - foreach ($bases as $base) { |
|
| 768 | - if ($href_base = extraire_attribut($base, 'href')) { |
|
| 769 | - $insert = false; |
|
| 770 | - break; |
|
| 771 | - } |
|
| 772 | - } |
|
| 773 | - } |
|
| 774 | - |
|
| 775 | - if ($insert) { |
|
| 776 | - include_spip('inc/filtres_mini'); |
|
| 777 | - // ajouter un base qui reglera tous les liens relatifs |
|
| 778 | - $href_base = url_absolue('./'); |
|
| 779 | - $base = "\n<base href=\"$href_base\" />"; |
|
| 780 | - if (($pos = strpos($head, '<head>')) !== false) { |
|
| 781 | - $head = substr_replace($head, $base, $pos + 6, 0); |
|
| 782 | - } elseif (preg_match(',<head[^>]*>,i', $head, $r)) { |
|
| 783 | - $head = str_replace($r[0], $r[0] . $base, $head); |
|
| 784 | - } |
|
| 785 | - $texte = $head . substr($texte, $poshead); |
|
| 786 | - } |
|
| 787 | - if ($href_base) { |
|
| 788 | - // gerer les ancres |
|
| 789 | - $base = $_SERVER['REQUEST_URI']; |
|
| 790 | - // pas de guillemets ni < dans l'URL qu'on insere dans le HTML |
|
| 791 | - if (strpos($base, "'") or strpos($base, '"') or strpos($base, '<')) { |
|
| 792 | - $base = str_replace(["'",'"','<'], ['%27','%22','%3C'], $base); |
|
| 793 | - } |
|
| 794 | - if (strpos($texte, "href='#") !== false) { |
|
| 795 | - $texte = str_replace("href='#", "href='$base#", $texte); |
|
| 796 | - } |
|
| 797 | - if (strpos($texte, 'href="#') !== false) { |
|
| 798 | - $texte = str_replace('href="#', "href=\"$base#", $texte); |
|
| 799 | - } |
|
| 800 | - } |
|
| 801 | - } |
|
| 735 | + static $set_html_base = null; |
|
| 736 | + if (is_null($set_html_base)) { |
|
| 737 | + if (!defined('_SET_HTML_BASE')) { |
|
| 738 | + // si la profondeur est superieure a 1 |
|
| 739 | + // est que ce n'est pas une url page ni une url action |
|
| 740 | + // activer par defaut |
|
| 741 | + $set_html_base = (( |
|
| 742 | + $GLOBALS['profondeur_url'] >= (_DIR_RESTREINT ? 1 : 2) |
|
| 743 | + and _request(_SPIP_PAGE) !== 'login' |
|
| 744 | + and !_request('action')) ? true : false); |
|
| 745 | + } else { |
|
| 746 | + $set_html_base = _SET_HTML_BASE; |
|
| 747 | + } |
|
| 748 | + } |
|
| 749 | + |
|
| 750 | + if ( |
|
| 751 | + $set_html_base |
|
| 752 | + and isset($GLOBALS['html']) and $GLOBALS['html'] |
|
| 753 | + and $GLOBALS['profondeur_url'] > 0 |
|
| 754 | + and ($poshead = strpos($texte, '</head>')) !== false |
|
| 755 | + ) { |
|
| 756 | + $head = substr($texte, 0, $poshead); |
|
| 757 | + $insert = false; |
|
| 758 | + $href_base = false; |
|
| 759 | + if (strpos($head, '<base') === false) { |
|
| 760 | + $insert = true; |
|
| 761 | + } else { |
|
| 762 | + // si aucun <base ...> n'a de href il faut en inserer un |
|
| 763 | + // sinon juste re-ecrire les ancres si besoin |
|
| 764 | + $insert = true; |
|
| 765 | + include_spip('inc/filtres'); |
|
| 766 | + $bases = extraire_balises($head, 'base'); |
|
| 767 | + foreach ($bases as $base) { |
|
| 768 | + if ($href_base = extraire_attribut($base, 'href')) { |
|
| 769 | + $insert = false; |
|
| 770 | + break; |
|
| 771 | + } |
|
| 772 | + } |
|
| 773 | + } |
|
| 774 | + |
|
| 775 | + if ($insert) { |
|
| 776 | + include_spip('inc/filtres_mini'); |
|
| 777 | + // ajouter un base qui reglera tous les liens relatifs |
|
| 778 | + $href_base = url_absolue('./'); |
|
| 779 | + $base = "\n<base href=\"$href_base\" />"; |
|
| 780 | + if (($pos = strpos($head, '<head>')) !== false) { |
|
| 781 | + $head = substr_replace($head, $base, $pos + 6, 0); |
|
| 782 | + } elseif (preg_match(',<head[^>]*>,i', $head, $r)) { |
|
| 783 | + $head = str_replace($r[0], $r[0] . $base, $head); |
|
| 784 | + } |
|
| 785 | + $texte = $head . substr($texte, $poshead); |
|
| 786 | + } |
|
| 787 | + if ($href_base) { |
|
| 788 | + // gerer les ancres |
|
| 789 | + $base = $_SERVER['REQUEST_URI']; |
|
| 790 | + // pas de guillemets ni < dans l'URL qu'on insere dans le HTML |
|
| 791 | + if (strpos($base, "'") or strpos($base, '"') or strpos($base, '<')) { |
|
| 792 | + $base = str_replace(["'",'"','<'], ['%27','%22','%3C'], $base); |
|
| 793 | + } |
|
| 794 | + if (strpos($texte, "href='#") !== false) { |
|
| 795 | + $texte = str_replace("href='#", "href='$base#", $texte); |
|
| 796 | + } |
|
| 797 | + if (strpos($texte, 'href="#') !== false) { |
|
| 798 | + $texte = str_replace('href="#', "href=\"$base#", $texte); |
|
| 799 | + } |
|
| 800 | + } |
|
| 801 | + } |
|
| 802 | 802 | } |
| 803 | 803 | |
| 804 | 804 | |
| 805 | 805 | // Envoyer les entetes, en retenant ceux qui sont a usage interne |
| 806 | 806 | // et demarrent par X-Spip-... |
| 807 | 807 | function envoyer_entetes($entetes) { |
| 808 | - foreach ($entetes as $k => $v) { # if (strncmp($k, 'X-Spip-', 7)) |
|
| 809 | - @header(strlen($v) ? "$k: $v" : $k); |
|
| 810 | - } |
|
| 808 | + foreach ($entetes as $k => $v) { # if (strncmp($k, 'X-Spip-', 7)) |
|
| 809 | + @header(strlen($v) ? "$k: $v" : $k); |
|
| 810 | + } |
|
| 811 | 811 | } |
@@ -21,7 +21,7 @@ discard block |
||
| 21 | 21 | **/ |
| 22 | 22 | |
| 23 | 23 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 24 | - return; |
|
| 24 | + return; |
|
| 25 | 25 | } |
| 26 | 26 | |
| 27 | 27 | /** |
@@ -47,12 +47,12 @@ discard block |
||
| 47 | 47 | **/ |
| 48 | 48 | function critere_racine_dist($idb, &$boucles, $crit) { |
| 49 | 49 | |
| 50 | - $not = $crit->not; |
|
| 51 | - $boucle = &$boucles[$idb]; |
|
| 52 | - $id_parent = $GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] ?? 'id_parent'; |
|
| 50 | + $not = $crit->not; |
|
| 51 | + $boucle = &$boucles[$idb]; |
|
| 52 | + $id_parent = $GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] ?? 'id_parent'; |
|
| 53 | 53 | |
| 54 | - $c = ["'='", "'$boucle->id_table." . "$id_parent'", 0]; |
|
| 55 | - $boucle->where[] = ($crit->not ? ["'NOT'", $c] : $c); |
|
| 54 | + $c = ["'='", "'$boucle->id_table." . "$id_parent'", 0]; |
|
| 55 | + $boucle->where[] = ($crit->not ? ["'NOT'", $c] : $c); |
|
| 56 | 56 | } |
| 57 | 57 | |
| 58 | 58 | |
@@ -69,15 +69,15 @@ discard block |
||
| 69 | 69 | * @return void|array |
| 70 | 70 | **/ |
| 71 | 71 | function critere_exclus_dist($idb, &$boucles, $crit) { |
| 72 | - $not = $crit->not; |
|
| 73 | - $boucle = &$boucles[$idb]; |
|
| 74 | - $id = $boucle->primary; |
|
| 75 | - |
|
| 76 | - if ($not or !$id) { |
|
| 77 | - return ['zbug_critere_inconnu', ['critere' => $not . $crit->op]]; |
|
| 78 | - } |
|
| 79 | - $arg = kwote(calculer_argument_precedent($idb, $id, $boucles)); |
|
| 80 | - $boucle->where[] = ["'!='", "'$boucle->id_table." . "$id'", $arg]; |
|
| 72 | + $not = $crit->not; |
|
| 73 | + $boucle = &$boucles[$idb]; |
|
| 74 | + $id = $boucle->primary; |
|
| 75 | + |
|
| 76 | + if ($not or !$id) { |
|
| 77 | + return ['zbug_critere_inconnu', ['critere' => $not . $crit->op]]; |
|
| 78 | + } |
|
| 79 | + $arg = kwote(calculer_argument_precedent($idb, $id, $boucles)); |
|
| 80 | + $boucle->where[] = ["'!='", "'$boucle->id_table." . "$id'", $arg]; |
|
| 81 | 81 | } |
| 82 | 82 | |
| 83 | 83 | |
@@ -97,73 +97,73 @@ discard block |
||
| 97 | 97 | * @return void|array |
| 98 | 98 | **/ |
| 99 | 99 | function critere_doublons_dist($idb, &$boucles, $crit) { |
| 100 | - $boucle = &$boucles[$idb]; |
|
| 101 | - $primary = $boucle->primary; |
|
| 102 | - |
|
| 103 | - // la table nécessite une clé primaire, non composée |
|
| 104 | - if (!$primary or strpos($primary, ',')) { |
|
| 105 | - return ['zbug_doublon_sur_table_sans_cle_primaire']; |
|
| 106 | - } |
|
| 107 | - |
|
| 108 | - $not = ($crit->not ? '' : 'NOT'); |
|
| 109 | - |
|
| 110 | - // le doublon s'applique sur un type de boucle (article) |
|
| 111 | - $nom = "'" . $boucle->type_requete . "'"; |
|
| 112 | - |
|
| 113 | - // compléter le nom avec un nom précisé {doublons nom} |
|
| 114 | - // on obtient $nom = "'article' . 'nom'" |
|
| 115 | - if (isset($crit->param[0])) { |
|
| 116 | - $nom .= '.' . calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 117 | - } |
|
| 118 | - |
|
| 119 | - // code qui déclarera l'index du stockage de nos doublons (pour éviter une notice PHP) |
|
| 120 | - $init_comment = "\n\n\t// Initialise le(s) critère(s) doublons\n"; |
|
| 121 | - $init_code = "\tif (!isset(\$doublons[\$d = $nom])) { \$doublons[\$d] = ''; }\n"; |
|
| 122 | - |
|
| 123 | - // on crée un sql_in avec la clé primaire de la table |
|
| 124 | - // et la collection des doublons déjà emmagasinés dans le tableau |
|
| 125 | - // $doublons et son index, ici $nom |
|
| 126 | - |
|
| 127 | - // debut du code "sql_in('articles.id_article', " |
|
| 128 | - $debut_in = "sql_in('" . $boucle->id_table . '.' . $primary . "', "; |
|
| 129 | - // lecture des données du doublon "$doublons[$doublon_index[] = " |
|
| 130 | - // Attention : boucle->doublons désigne une variable qu'on affecte |
|
| 131 | - $debut_doub = '$doublons[' . (!$not ? '' : ($boucle->doublons . '[]= ')); |
|
| 132 | - |
|
| 133 | - // le debut complet du code des doublons |
|
| 134 | - $debut_doub = $debut_in . $debut_doub; |
|
| 135 | - |
|
| 136 | - // nom du doublon "('article' . 'nom')]" |
|
| 137 | - $fin_doub = "($nom)]"; |
|
| 138 | - |
|
| 139 | - // si on trouve un autre critère doublon, |
|
| 140 | - // on fusionne pour avoir un seul IN, et on s'en va ! |
|
| 141 | - foreach ($boucle->where as $k => $w) { |
|
| 142 | - if (strpos($w[0], $debut_doub) === 0) { |
|
| 143 | - // fusionner le sql_in (du where) |
|
| 144 | - $boucle->where[$k][0] = $debut_doub . $fin_doub . ' . ' . substr($w[0], strlen($debut_in)); |
|
| 145 | - // fusionner l'initialisation (du hash) pour faire plus joli |
|
| 146 | - $x = strpos($boucle->hash, $init_comment); |
|
| 147 | - $len = strlen($init_comment); |
|
| 148 | - $boucle->hash = |
|
| 149 | - substr($boucle->hash, 0, $x + $len) . $init_code . substr($boucle->hash, $x + $len); |
|
| 150 | - |
|
| 151 | - return; |
|
| 152 | - } |
|
| 153 | - } |
|
| 154 | - |
|
| 155 | - // mettre l'ensemble dans un tableau pour que ce ne soit pas vu comme une constante |
|
| 156 | - $boucle->where[] = [$debut_doub . $fin_doub . ", '" . $not . "')"]; |
|
| 157 | - |
|
| 158 | - // déclarer le doublon s'il n'existe pas encore |
|
| 159 | - $boucle->hash .= $init_comment . $init_code; |
|
| 160 | - |
|
| 161 | - |
|
| 162 | - # la ligne suivante avait l'intention d'eviter une collecte deja faite |
|
| 163 | - # mais elle fait planter une boucle a 2 critere doublons: |
|
| 164 | - # {!doublons A}{doublons B} |
|
| 165 | - # (de http://article.gmane.org/gmane.comp.web.spip.devel/31034) |
|
| 166 | - # if ($crit->not) $boucle->doublons = ""; |
|
| 100 | + $boucle = &$boucles[$idb]; |
|
| 101 | + $primary = $boucle->primary; |
|
| 102 | + |
|
| 103 | + // la table nécessite une clé primaire, non composée |
|
| 104 | + if (!$primary or strpos($primary, ',')) { |
|
| 105 | + return ['zbug_doublon_sur_table_sans_cle_primaire']; |
|
| 106 | + } |
|
| 107 | + |
|
| 108 | + $not = ($crit->not ? '' : 'NOT'); |
|
| 109 | + |
|
| 110 | + // le doublon s'applique sur un type de boucle (article) |
|
| 111 | + $nom = "'" . $boucle->type_requete . "'"; |
|
| 112 | + |
|
| 113 | + // compléter le nom avec un nom précisé {doublons nom} |
|
| 114 | + // on obtient $nom = "'article' . 'nom'" |
|
| 115 | + if (isset($crit->param[0])) { |
|
| 116 | + $nom .= '.' . calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 117 | + } |
|
| 118 | + |
|
| 119 | + // code qui déclarera l'index du stockage de nos doublons (pour éviter une notice PHP) |
|
| 120 | + $init_comment = "\n\n\t// Initialise le(s) critère(s) doublons\n"; |
|
| 121 | + $init_code = "\tif (!isset(\$doublons[\$d = $nom])) { \$doublons[\$d] = ''; }\n"; |
|
| 122 | + |
|
| 123 | + // on crée un sql_in avec la clé primaire de la table |
|
| 124 | + // et la collection des doublons déjà emmagasinés dans le tableau |
|
| 125 | + // $doublons et son index, ici $nom |
|
| 126 | + |
|
| 127 | + // debut du code "sql_in('articles.id_article', " |
|
| 128 | + $debut_in = "sql_in('" . $boucle->id_table . '.' . $primary . "', "; |
|
| 129 | + // lecture des données du doublon "$doublons[$doublon_index[] = " |
|
| 130 | + // Attention : boucle->doublons désigne une variable qu'on affecte |
|
| 131 | + $debut_doub = '$doublons[' . (!$not ? '' : ($boucle->doublons . '[]= ')); |
|
| 132 | + |
|
| 133 | + // le debut complet du code des doublons |
|
| 134 | + $debut_doub = $debut_in . $debut_doub; |
|
| 135 | + |
|
| 136 | + // nom du doublon "('article' . 'nom')]" |
|
| 137 | + $fin_doub = "($nom)]"; |
|
| 138 | + |
|
| 139 | + // si on trouve un autre critère doublon, |
|
| 140 | + // on fusionne pour avoir un seul IN, et on s'en va ! |
|
| 141 | + foreach ($boucle->where as $k => $w) { |
|
| 142 | + if (strpos($w[0], $debut_doub) === 0) { |
|
| 143 | + // fusionner le sql_in (du where) |
|
| 144 | + $boucle->where[$k][0] = $debut_doub . $fin_doub . ' . ' . substr($w[0], strlen($debut_in)); |
|
| 145 | + // fusionner l'initialisation (du hash) pour faire plus joli |
|
| 146 | + $x = strpos($boucle->hash, $init_comment); |
|
| 147 | + $len = strlen($init_comment); |
|
| 148 | + $boucle->hash = |
|
| 149 | + substr($boucle->hash, 0, $x + $len) . $init_code . substr($boucle->hash, $x + $len); |
|
| 150 | + |
|
| 151 | + return; |
|
| 152 | + } |
|
| 153 | + } |
|
| 154 | + |
|
| 155 | + // mettre l'ensemble dans un tableau pour que ce ne soit pas vu comme une constante |
|
| 156 | + $boucle->where[] = [$debut_doub . $fin_doub . ", '" . $not . "')"]; |
|
| 157 | + |
|
| 158 | + // déclarer le doublon s'il n'existe pas encore |
|
| 159 | + $boucle->hash .= $init_comment . $init_code; |
|
| 160 | + |
|
| 161 | + |
|
| 162 | + # la ligne suivante avait l'intention d'eviter une collecte deja faite |
|
| 163 | + # mais elle fait planter une boucle a 2 critere doublons: |
|
| 164 | + # {!doublons A}{doublons B} |
|
| 165 | + # (de http://article.gmane.org/gmane.comp.web.spip.devel/31034) |
|
| 166 | + # if ($crit->not) $boucle->doublons = ""; |
|
| 167 | 167 | } |
| 168 | 168 | |
| 169 | 169 | |
@@ -184,14 +184,14 @@ discard block |
||
| 184 | 184 | * @return void |
| 185 | 185 | **/ |
| 186 | 186 | function critere_lang_select_dist($idb, &$boucles, $crit) { |
| 187 | - if (!isset($crit->param[1][0]) or !($param = $crit->param[1][0]->texte)) { |
|
| 188 | - $param = 'oui'; |
|
| 189 | - } |
|
| 190 | - if ($crit->not) { |
|
| 191 | - $param = ($param == 'oui') ? 'non' : 'oui'; |
|
| 192 | - } |
|
| 193 | - $boucle = &$boucles[$idb]; |
|
| 194 | - $boucle->lang_select = $param; |
|
| 187 | + if (!isset($crit->param[1][0]) or !($param = $crit->param[1][0]->texte)) { |
|
| 188 | + $param = 'oui'; |
|
| 189 | + } |
|
| 190 | + if ($crit->not) { |
|
| 191 | + $param = ($param == 'oui') ? 'non' : 'oui'; |
|
| 192 | + } |
|
| 193 | + $boucle = &$boucles[$idb]; |
|
| 194 | + $boucle->lang_select = $param; |
|
| 195 | 195 | } |
| 196 | 196 | |
| 197 | 197 | |
@@ -213,15 +213,15 @@ discard block |
||
| 213 | 213 | * @return void |
| 214 | 214 | **/ |
| 215 | 215 | function critere_debut_dist($idb, &$boucles, $crit) { |
| 216 | - [$un, $deux] = $crit->param; |
|
| 217 | - $un = $un[0]->texte; |
|
| 218 | - $deux = $deux[0]->texte; |
|
| 219 | - if ($deux) { |
|
| 220 | - $boucles[$idb]->limit = |
|
| 221 | - 'intval($Pile[0]["debut' . $un . '"]) . ",' . $deux . '"'; |
|
| 222 | - } else { |
|
| 223 | - calculer_critere_DEFAUT_dist($idb, $boucles, $crit); |
|
| 224 | - } |
|
| 216 | + [$un, $deux] = $crit->param; |
|
| 217 | + $un = $un[0]->texte; |
|
| 218 | + $deux = $deux[0]->texte; |
|
| 219 | + if ($deux) { |
|
| 220 | + $boucles[$idb]->limit = |
|
| 221 | + 'intval($Pile[0]["debut' . $un . '"]) . ",' . $deux . '"'; |
|
| 222 | + } else { |
|
| 223 | + calculer_critere_DEFAUT_dist($idb, $boucles, $crit); |
|
| 224 | + } |
|
| 225 | 225 | } |
| 226 | 226 | |
| 227 | 227 | |
@@ -255,58 +255,58 @@ discard block |
||
| 255 | 255 | **/ |
| 256 | 256 | function critere_pagination_dist($idb, &$boucles, $crit) { |
| 257 | 257 | |
| 258 | - $boucle = &$boucles[$idb]; |
|
| 259 | - // definition de la taille de la page |
|
| 260 | - $pas = !isset($crit->param[0][0]) ? "''" |
|
| 261 | - : calculer_liste([$crit->param[0][0]], $idb, $boucles, $boucle->id_parent); |
|
| 262 | - |
|
| 263 | - if (!preg_match(_CODE_QUOTE, $pas, $r)) { |
|
| 264 | - $pas = "((\$a = intval($pas)) ? \$a : 10)"; |
|
| 265 | - } else { |
|
| 266 | - $r = intval($r[2]); |
|
| 267 | - $pas = strval($r ?: 10); |
|
| 268 | - } |
|
| 269 | - |
|
| 270 | - // Calcul du nommage de la pagination si il existe. |
|
| 271 | - // La nouvelle syntaxe {pagination 20, nom} est prise en compte et privilégiée mais on reste |
|
| 272 | - // compatible avec l'ancienne car certains cas fonctionnent correctement |
|
| 273 | - $type = "'$idb'"; |
|
| 274 | - // Calcul d'un nommage spécifique de la pagination si précisé. |
|
| 275 | - // Syntaxe {pagination 20, nom} |
|
| 276 | - if (isset($crit->param[0][1])) { |
|
| 277 | - $type = calculer_liste([$crit->param[0][1]], $idb, $boucles, $boucle->id_parent); |
|
| 278 | - } // Ancienne syntaxe {pagination 20 nom} pour compatibilité |
|
| 279 | - elseif (isset($crit->param[1][0])) { |
|
| 280 | - $type = calculer_liste([$crit->param[1][0]], $idb, $boucles, $boucle->id_parent); |
|
| 281 | - } |
|
| 282 | - |
|
| 283 | - $debut = ($type[0] !== "'") ? "'debut'.$type" : ("'debut" . substr($type, 1)); |
|
| 284 | - $boucle->modificateur['debut_nom'] = $type; |
|
| 285 | - $partie = |
|
| 286 | - // tester si le numero de page demande est de la forme '@yyy' |
|
| 287 | - 'isset($Pile[0][' . $debut . ']) ? $Pile[0][' . $debut . '] : _request(' . $debut . ");\n" |
|
| 288 | - . "\tif (\$debut_boucle && \$debut_boucle[0] === '@') {\n" |
|
| 289 | - . "\t\t" . '$debut_boucle = $Pile[0][' . $debut . '] = quete_debut_pagination(\'' . $boucle->primary . '\',$Pile[0][\'@' . $boucle->primary . '\'] = substr($debut_boucle,1),' . $pas . ',$iter);' . "\n" |
|
| 290 | - . "\t\t" . '$iter->seek(0);' . "\n" |
|
| 291 | - . "\t}\n" |
|
| 292 | - . "\t" . '$debut_boucle = intval($debut_boucle)'; |
|
| 293 | - |
|
| 294 | - $boucle->hash .= ' |
|
| 258 | + $boucle = &$boucles[$idb]; |
|
| 259 | + // definition de la taille de la page |
|
| 260 | + $pas = !isset($crit->param[0][0]) ? "''" |
|
| 261 | + : calculer_liste([$crit->param[0][0]], $idb, $boucles, $boucle->id_parent); |
|
| 262 | + |
|
| 263 | + if (!preg_match(_CODE_QUOTE, $pas, $r)) { |
|
| 264 | + $pas = "((\$a = intval($pas)) ? \$a : 10)"; |
|
| 265 | + } else { |
|
| 266 | + $r = intval($r[2]); |
|
| 267 | + $pas = strval($r ?: 10); |
|
| 268 | + } |
|
| 269 | + |
|
| 270 | + // Calcul du nommage de la pagination si il existe. |
|
| 271 | + // La nouvelle syntaxe {pagination 20, nom} est prise en compte et privilégiée mais on reste |
|
| 272 | + // compatible avec l'ancienne car certains cas fonctionnent correctement |
|
| 273 | + $type = "'$idb'"; |
|
| 274 | + // Calcul d'un nommage spécifique de la pagination si précisé. |
|
| 275 | + // Syntaxe {pagination 20, nom} |
|
| 276 | + if (isset($crit->param[0][1])) { |
|
| 277 | + $type = calculer_liste([$crit->param[0][1]], $idb, $boucles, $boucle->id_parent); |
|
| 278 | + } // Ancienne syntaxe {pagination 20 nom} pour compatibilité |
|
| 279 | + elseif (isset($crit->param[1][0])) { |
|
| 280 | + $type = calculer_liste([$crit->param[1][0]], $idb, $boucles, $boucle->id_parent); |
|
| 281 | + } |
|
| 282 | + |
|
| 283 | + $debut = ($type[0] !== "'") ? "'debut'.$type" : ("'debut" . substr($type, 1)); |
|
| 284 | + $boucle->modificateur['debut_nom'] = $type; |
|
| 285 | + $partie = |
|
| 286 | + // tester si le numero de page demande est de la forme '@yyy' |
|
| 287 | + 'isset($Pile[0][' . $debut . ']) ? $Pile[0][' . $debut . '] : _request(' . $debut . ");\n" |
|
| 288 | + . "\tif (\$debut_boucle && \$debut_boucle[0] === '@') {\n" |
|
| 289 | + . "\t\t" . '$debut_boucle = $Pile[0][' . $debut . '] = quete_debut_pagination(\'' . $boucle->primary . '\',$Pile[0][\'@' . $boucle->primary . '\'] = substr($debut_boucle,1),' . $pas . ',$iter);' . "\n" |
|
| 290 | + . "\t\t" . '$iter->seek(0);' . "\n" |
|
| 291 | + . "\t}\n" |
|
| 292 | + . "\t" . '$debut_boucle = intval($debut_boucle)'; |
|
| 293 | + |
|
| 294 | + $boucle->hash .= ' |
|
| 295 | 295 | $command[\'pagination\'] = array((isset($Pile[0][' . $debut . ']) ? $Pile[0][' . $debut . '] : null), ' . $pas . ');'; |
| 296 | 296 | |
| 297 | - $boucle->total_parties = $pas; |
|
| 298 | - calculer_parties($boucles, $idb, $partie, 'p+'); |
|
| 299 | - // ajouter la cle primaire dans le select pour pouvoir gerer la pagination referencee par @id |
|
| 300 | - // sauf si pas de primaire, ou si primaire composee |
|
| 301 | - // dans ce cas, on ne sait pas gerer une pagination indirecte |
|
| 302 | - $t = $boucle->id_table . '.' . $boucle->primary; |
|
| 303 | - if ( |
|
| 304 | - $boucle->primary |
|
| 305 | - and !preg_match('/[,\s]/', $boucle->primary) |
|
| 306 | - and !in_array($t, $boucle->select) |
|
| 307 | - ) { |
|
| 308 | - $boucle->select[] = $t; |
|
| 309 | - } |
|
| 297 | + $boucle->total_parties = $pas; |
|
| 298 | + calculer_parties($boucles, $idb, $partie, 'p+'); |
|
| 299 | + // ajouter la cle primaire dans le select pour pouvoir gerer la pagination referencee par @id |
|
| 300 | + // sauf si pas de primaire, ou si primaire composee |
|
| 301 | + // dans ce cas, on ne sait pas gerer une pagination indirecte |
|
| 302 | + $t = $boucle->id_table . '.' . $boucle->primary; |
|
| 303 | + if ( |
|
| 304 | + $boucle->primary |
|
| 305 | + and !preg_match('/[,\s]/', $boucle->primary) |
|
| 306 | + and !in_array($t, $boucle->select) |
|
| 307 | + ) { |
|
| 308 | + $boucle->select[] = $t; |
|
| 309 | + } |
|
| 310 | 310 | } |
| 311 | 311 | |
| 312 | 312 | |
@@ -328,24 +328,24 @@ discard block |
||
| 328 | 328 | **/ |
| 329 | 329 | function critere_recherche_dist($idb, &$boucles, $crit) { |
| 330 | 330 | |
| 331 | - $boucle = &$boucles[$idb]; |
|
| 331 | + $boucle = &$boucles[$idb]; |
|
| 332 | 332 | |
| 333 | - if (!$boucle->primary or strpos($boucle->primary, ',')) { |
|
| 334 | - erreur_squelette(_T('zbug_critere_sur_table_sans_cle_primaire', ['critere' => 'recherche']), $boucle); |
|
| 333 | + if (!$boucle->primary or strpos($boucle->primary, ',')) { |
|
| 334 | + erreur_squelette(_T('zbug_critere_sur_table_sans_cle_primaire', ['critere' => 'recherche']), $boucle); |
|
| 335 | 335 | |
| 336 | - return; |
|
| 337 | - } |
|
| 336 | + return; |
|
| 337 | + } |
|
| 338 | 338 | |
| 339 | - if (isset($crit->param[0])) { |
|
| 340 | - $quoi = calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 341 | - } else { |
|
| 342 | - $quoi = '(isset($Pile[0]["recherche"])?$Pile[0]["recherche"]:(isset($GLOBALS["recherche"])?$GLOBALS["recherche"]:""))'; |
|
| 343 | - } |
|
| 339 | + if (isset($crit->param[0])) { |
|
| 340 | + $quoi = calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 341 | + } else { |
|
| 342 | + $quoi = '(isset($Pile[0]["recherche"])?$Pile[0]["recherche"]:(isset($GLOBALS["recherche"])?$GLOBALS["recherche"]:""))'; |
|
| 343 | + } |
|
| 344 | 344 | |
| 345 | - $_modificateur = var_export($boucle->modificateur, true); |
|
| 346 | - $boucle->hash .= ' |
|
| 345 | + $_modificateur = var_export($boucle->modificateur, true); |
|
| 346 | + $boucle->hash .= ' |
|
| 347 | 347 | // RECHERCHE' |
| 348 | - . ($crit->cond ? ' |
|
| 348 | + . ($crit->cond ? ' |
|
| 349 | 349 | if (!strlen(' . $quoi . ')){ |
| 350 | 350 | list($rech_select, $rech_where) = array("0 as points",""); |
| 351 | 351 | } else' : '') . ' |
@@ -356,21 +356,21 @@ discard block |
||
| 356 | 356 | '; |
| 357 | 357 | |
| 358 | 358 | |
| 359 | - $t = $boucle->id_table . '.' . $boucle->primary; |
|
| 360 | - if (!in_array($t, $boucles[$idb]->select)) { |
|
| 361 | - $boucle->select[] = $t; |
|
| 362 | - } # pour postgres, neuneu ici |
|
| 363 | - // jointure uniquement sur le serveur principal |
|
| 364 | - // (on ne peut joindre une table d'un serveur distant avec la table des resultats du serveur principal) |
|
| 365 | - if (!$boucle->sql_serveur) { |
|
| 366 | - $boucle->join['resultats'] = ["'" . $boucle->id_table . "'", "'id'", "'" . $boucle->primary . "'"]; |
|
| 367 | - $boucle->from['resultats'] = 'spip_resultats'; |
|
| 368 | - } |
|
| 369 | - $boucle->select[] = '$rech_select'; |
|
| 370 | - //$boucle->where[]= "\$rech_where?'resultats.id=".$boucle->id_table.".".$boucle->primary."':''"; |
|
| 371 | - |
|
| 372 | - // et la recherche trouve |
|
| 373 | - $boucle->where[] = '$rech_where?$rech_where:\'\''; |
|
| 359 | + $t = $boucle->id_table . '.' . $boucle->primary; |
|
| 360 | + if (!in_array($t, $boucles[$idb]->select)) { |
|
| 361 | + $boucle->select[] = $t; |
|
| 362 | + } # pour postgres, neuneu ici |
|
| 363 | + // jointure uniquement sur le serveur principal |
|
| 364 | + // (on ne peut joindre une table d'un serveur distant avec la table des resultats du serveur principal) |
|
| 365 | + if (!$boucle->sql_serveur) { |
|
| 366 | + $boucle->join['resultats'] = ["'" . $boucle->id_table . "'", "'id'", "'" . $boucle->primary . "'"]; |
|
| 367 | + $boucle->from['resultats'] = 'spip_resultats'; |
|
| 368 | + } |
|
| 369 | + $boucle->select[] = '$rech_select'; |
|
| 370 | + //$boucle->where[]= "\$rech_where?'resultats.id=".$boucle->id_table.".".$boucle->primary."':''"; |
|
| 371 | + |
|
| 372 | + // et la recherche trouve |
|
| 373 | + $boucle->where[] = '$rech_where?$rech_where:\'\''; |
|
| 374 | 374 | } |
| 375 | 375 | |
| 376 | 376 | /** |
@@ -387,25 +387,25 @@ discard block |
||
| 387 | 387 | * @return void |
| 388 | 388 | **/ |
| 389 | 389 | function critere_traduction_dist($idb, &$boucles, $crit) { |
| 390 | - $boucle = &$boucles[$idb]; |
|
| 391 | - $prim = $boucle->primary; |
|
| 392 | - $table = $boucle->id_table; |
|
| 393 | - $arg = kwote(calculer_argument_precedent($idb, 'id_trad', $boucles)); |
|
| 394 | - $dprim = kwote(calculer_argument_precedent($idb, $prim, $boucles)); |
|
| 395 | - $boucle->where[] = |
|
| 396 | - [ |
|
| 397 | - "'OR'", |
|
| 398 | - [ |
|
| 399 | - "'AND'", |
|
| 400 | - ["'='", "'$table.id_trad'", 0], |
|
| 401 | - ["'='", "'$table.$prim'", $dprim] |
|
| 402 | - ], |
|
| 403 | - [ |
|
| 404 | - "'AND'", |
|
| 405 | - ["'>'", "'$table.id_trad'", 0], |
|
| 406 | - ["'='", "'$table.id_trad'", $arg] |
|
| 407 | - ] |
|
| 408 | - ]; |
|
| 390 | + $boucle = &$boucles[$idb]; |
|
| 391 | + $prim = $boucle->primary; |
|
| 392 | + $table = $boucle->id_table; |
|
| 393 | + $arg = kwote(calculer_argument_precedent($idb, 'id_trad', $boucles)); |
|
| 394 | + $dprim = kwote(calculer_argument_precedent($idb, $prim, $boucles)); |
|
| 395 | + $boucle->where[] = |
|
| 396 | + [ |
|
| 397 | + "'OR'", |
|
| 398 | + [ |
|
| 399 | + "'AND'", |
|
| 400 | + ["'='", "'$table.id_trad'", 0], |
|
| 401 | + ["'='", "'$table.$prim'", $dprim] |
|
| 402 | + ], |
|
| 403 | + [ |
|
| 404 | + "'AND'", |
|
| 405 | + ["'>'", "'$table.id_trad'", 0], |
|
| 406 | + ["'='", "'$table.id_trad'", $arg] |
|
| 407 | + ] |
|
| 408 | + ]; |
|
| 409 | 409 | } |
| 410 | 410 | |
| 411 | 411 | |
@@ -423,17 +423,17 @@ discard block |
||
| 423 | 423 | * @return void |
| 424 | 424 | **/ |
| 425 | 425 | function critere_origine_traduction_dist($idb, &$boucles, $crit) { |
| 426 | - $boucle = &$boucles[$idb]; |
|
| 427 | - $prim = $boucle->primary; |
|
| 428 | - $table = $boucle->id_table; |
|
| 429 | - |
|
| 430 | - $c = |
|
| 431 | - [ |
|
| 432 | - "'OR'", |
|
| 433 | - ["'='", "'$table." . "id_trad'", "'$table.$prim'"], |
|
| 434 | - ["'='", "'$table.id_trad'", "'0'"] |
|
| 435 | - ]; |
|
| 436 | - $boucle->where[] = ($crit->not ? ["'NOT'", $c] : $c); |
|
| 426 | + $boucle = &$boucles[$idb]; |
|
| 427 | + $prim = $boucle->primary; |
|
| 428 | + $table = $boucle->id_table; |
|
| 429 | + |
|
| 430 | + $c = |
|
| 431 | + [ |
|
| 432 | + "'OR'", |
|
| 433 | + ["'='", "'$table." . "id_trad'", "'$table.$prim'"], |
|
| 434 | + ["'='", "'$table.id_trad'", "'0'"] |
|
| 435 | + ]; |
|
| 436 | + $boucle->where[] = ($crit->not ? ["'NOT'", $c] : $c); |
|
| 437 | 437 | } |
| 438 | 438 | |
| 439 | 439 | |
@@ -450,17 +450,17 @@ discard block |
||
| 450 | 450 | **/ |
| 451 | 451 | function critere_meme_parent_dist($idb, &$boucles, $crit) { |
| 452 | 452 | |
| 453 | - $boucle = &$boucles[$idb]; |
|
| 454 | - $arg = kwote(calculer_argument_precedent($idb, 'id_parent', $boucles)); |
|
| 455 | - $id_parent = $GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] ?? 'id_parent'; |
|
| 456 | - $mparent = $boucle->id_table . '.' . $id_parent; |
|
| 457 | - |
|
| 458 | - if ($boucle->type_requete == 'rubriques' or isset($GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'])) { |
|
| 459 | - $boucle->where[] = ["'='", "'$mparent'", $arg]; |
|
| 460 | - } // le cas FORUMS est gere dans le plugin forum, dans la fonction critere_FORUMS_meme_parent_dist() |
|
| 461 | - else { |
|
| 462 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . $boucle->type_requete]]; |
|
| 463 | - } |
|
| 453 | + $boucle = &$boucles[$idb]; |
|
| 454 | + $arg = kwote(calculer_argument_precedent($idb, 'id_parent', $boucles)); |
|
| 455 | + $id_parent = $GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] ?? 'id_parent'; |
|
| 456 | + $mparent = $boucle->id_table . '.' . $id_parent; |
|
| 457 | + |
|
| 458 | + if ($boucle->type_requete == 'rubriques' or isset($GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'])) { |
|
| 459 | + $boucle->where[] = ["'='", "'$mparent'", $arg]; |
|
| 460 | + } // le cas FORUMS est gere dans le plugin forum, dans la fonction critere_FORUMS_meme_parent_dist() |
|
| 461 | + else { |
|
| 462 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . $boucle->type_requete]]; |
|
| 463 | + } |
|
| 464 | 464 | } |
| 465 | 465 | |
| 466 | 466 | |
@@ -491,37 +491,37 @@ discard block |
||
| 491 | 491 | **/ |
| 492 | 492 | function critere_branche_dist($idb, &$boucles, $crit) { |
| 493 | 493 | |
| 494 | - $not = $crit->not; |
|
| 495 | - $boucle = &$boucles[$idb]; |
|
| 496 | - // prendre en priorite un identifiant en parametre {branche XX} |
|
| 497 | - if (isset($crit->param[0])) { |
|
| 498 | - $arg = calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 499 | - // sinon on le prend chez une boucle parente |
|
| 500 | - } else { |
|
| 501 | - $arg = kwote(calculer_argument_precedent($idb, 'id_rubrique', $boucles), $boucle->sql_serveur, 'int NOT NULL'); |
|
| 502 | - } |
|
| 503 | - |
|
| 504 | - //Trouver une jointure |
|
| 505 | - $champ = 'id_rubrique'; |
|
| 506 | - $desc = $boucle->show; |
|
| 507 | - //Seulement si necessaire |
|
| 508 | - if (!array_key_exists($champ, $desc['field'])) { |
|
| 509 | - $cle = trouver_jointure_champ($champ, $boucle); |
|
| 510 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 511 | - $desc = $trouver_table($boucle->from[$cle]); |
|
| 512 | - if (count(trouver_champs_decomposes($champ, $desc)) > 1) { |
|
| 513 | - $decompose = decompose_champ_id_objet($champ); |
|
| 514 | - $champ = array_shift($decompose); |
|
| 515 | - $boucle->where[] = ["'='", _q($cle . '.' . reset($decompose)), '"' . sql_quote(end($decompose)) . '"']; |
|
| 516 | - } |
|
| 517 | - } else { |
|
| 518 | - $cle = $boucle->id_table; |
|
| 519 | - } |
|
| 520 | - |
|
| 521 | - $c = "sql_in('$cle" . ".$champ', calcul_branche_in($arg)" |
|
| 522 | - . ($not ? ", 'NOT'" : '') . ')'; |
|
| 523 | - $boucle->where[] = !$crit->cond ? $c : |
|
| 524 | - ("($arg ? $c : " . ($not ? "'0=1'" : "'1=1'") . ')'); |
|
| 494 | + $not = $crit->not; |
|
| 495 | + $boucle = &$boucles[$idb]; |
|
| 496 | + // prendre en priorite un identifiant en parametre {branche XX} |
|
| 497 | + if (isset($crit->param[0])) { |
|
| 498 | + $arg = calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 499 | + // sinon on le prend chez une boucle parente |
|
| 500 | + } else { |
|
| 501 | + $arg = kwote(calculer_argument_precedent($idb, 'id_rubrique', $boucles), $boucle->sql_serveur, 'int NOT NULL'); |
|
| 502 | + } |
|
| 503 | + |
|
| 504 | + //Trouver une jointure |
|
| 505 | + $champ = 'id_rubrique'; |
|
| 506 | + $desc = $boucle->show; |
|
| 507 | + //Seulement si necessaire |
|
| 508 | + if (!array_key_exists($champ, $desc['field'])) { |
|
| 509 | + $cle = trouver_jointure_champ($champ, $boucle); |
|
| 510 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 511 | + $desc = $trouver_table($boucle->from[$cle]); |
|
| 512 | + if (count(trouver_champs_decomposes($champ, $desc)) > 1) { |
|
| 513 | + $decompose = decompose_champ_id_objet($champ); |
|
| 514 | + $champ = array_shift($decompose); |
|
| 515 | + $boucle->where[] = ["'='", _q($cle . '.' . reset($decompose)), '"' . sql_quote(end($decompose)) . '"']; |
|
| 516 | + } |
|
| 517 | + } else { |
|
| 518 | + $cle = $boucle->id_table; |
|
| 519 | + } |
|
| 520 | + |
|
| 521 | + $c = "sql_in('$cle" . ".$champ', calcul_branche_in($arg)" |
|
| 522 | + . ($not ? ", 'NOT'" : '') . ')'; |
|
| 523 | + $boucle->where[] = !$crit->cond ? $c : |
|
| 524 | + ("($arg ? $c : " . ($not ? "'0=1'" : "'1=1'") . ')'); |
|
| 525 | 525 | } |
| 526 | 526 | |
| 527 | 527 | /** |
@@ -537,15 +537,15 @@ discard block |
||
| 537 | 537 | **/ |
| 538 | 538 | function critere_logo_dist($idb, &$boucles, $crit) { |
| 539 | 539 | |
| 540 | - $boucle = &$boucles[$idb]; |
|
| 541 | - $not = ($crit->not ? 'NOT' : ''); |
|
| 542 | - $serveur = $boucle->sql_serveur; |
|
| 540 | + $boucle = &$boucles[$idb]; |
|
| 541 | + $not = ($crit->not ? 'NOT' : ''); |
|
| 542 | + $serveur = $boucle->sql_serveur; |
|
| 543 | 543 | |
| 544 | - $c = "sql_in('" . |
|
| 545 | - $boucle->id_table . '.' . $boucle->primary |
|
| 546 | - . "', lister_objets_avec_logos('" . $boucle->primary . "'), '$not', '$serveur')"; |
|
| 544 | + $c = "sql_in('" . |
|
| 545 | + $boucle->id_table . '.' . $boucle->primary |
|
| 546 | + . "', lister_objets_avec_logos('" . $boucle->primary . "'), '$not', '$serveur')"; |
|
| 547 | 547 | |
| 548 | - $boucle->where[] = $c; |
|
| 548 | + $boucle->where[] = $c; |
|
| 549 | 549 | } |
| 550 | 550 | |
| 551 | 551 | |
@@ -567,31 +567,31 @@ discard block |
||
| 567 | 567 | * @return void|array |
| 568 | 568 | **/ |
| 569 | 569 | function critere_fusion_dist($idb, &$boucles, $crit) { |
| 570 | - if ($t = isset($crit->param[0])) { |
|
| 571 | - $t = $crit->param[0]; |
|
| 572 | - if ($t[0]->type == 'texte') { |
|
| 573 | - $t = $t[0]->texte; |
|
| 574 | - if (preg_match('/^(.*)\.(.*)$/', $t, $r)) { |
|
| 575 | - $t = table_objet_sql($r[1]); |
|
| 576 | - $t = array_search($t, $boucles[$idb]->from); |
|
| 577 | - if ($t) { |
|
| 578 | - $t .= '.' . $r[2]; |
|
| 579 | - } |
|
| 580 | - } |
|
| 581 | - } else { |
|
| 582 | - $t = '".' |
|
| 583 | - . calculer_critere_arg_dynamique($idb, $boucles, $t) |
|
| 584 | - . '."'; |
|
| 585 | - } |
|
| 586 | - } |
|
| 587 | - if ($t) { |
|
| 588 | - $boucles[$idb]->group[] = $t; |
|
| 589 | - if (!in_array($t, $boucles[$idb]->select)) { |
|
| 590 | - $boucles[$idb]->select[] = $t; |
|
| 591 | - } |
|
| 592 | - } else { |
|
| 593 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ?']]; |
|
| 594 | - } |
|
| 570 | + if ($t = isset($crit->param[0])) { |
|
| 571 | + $t = $crit->param[0]; |
|
| 572 | + if ($t[0]->type == 'texte') { |
|
| 573 | + $t = $t[0]->texte; |
|
| 574 | + if (preg_match('/^(.*)\.(.*)$/', $t, $r)) { |
|
| 575 | + $t = table_objet_sql($r[1]); |
|
| 576 | + $t = array_search($t, $boucles[$idb]->from); |
|
| 577 | + if ($t) { |
|
| 578 | + $t .= '.' . $r[2]; |
|
| 579 | + } |
|
| 580 | + } |
|
| 581 | + } else { |
|
| 582 | + $t = '".' |
|
| 583 | + . calculer_critere_arg_dynamique($idb, $boucles, $t) |
|
| 584 | + . '."'; |
|
| 585 | + } |
|
| 586 | + } |
|
| 587 | + if ($t) { |
|
| 588 | + $boucles[$idb]->group[] = $t; |
|
| 589 | + if (!in_array($t, $boucles[$idb]->select)) { |
|
| 590 | + $boucles[$idb]->select[] = $t; |
|
| 591 | + } |
|
| 592 | + } else { |
|
| 593 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ?']]; |
|
| 594 | + } |
|
| 595 | 595 | } |
| 596 | 596 | |
| 597 | 597 | /** |
@@ -611,7 +611,7 @@ discard block |
||
| 611 | 611 | * @return void |
| 612 | 612 | **/ |
| 613 | 613 | function critere_fusion_supprimer_dist($idb, &$boucles, $crit) { |
| 614 | - $boucles[$idb]->group = []; |
|
| 614 | + $boucles[$idb]->group = []; |
|
| 615 | 615 | } |
| 616 | 616 | |
| 617 | 617 | /** |
@@ -648,44 +648,44 @@ discard block |
||
| 648 | 648 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 649 | 649 | */ |
| 650 | 650 | function critere_collecte_dist($idb, &$boucles, $crit) { |
| 651 | - if (isset($crit->param[0])) { |
|
| 652 | - $_coll = calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 653 | - $boucle = $boucles[$idb]; |
|
| 654 | - $boucle->modificateur['collate'] = "($_coll ?' COLLATE '.$_coll:'')"; |
|
| 655 | - $n = is_countable($boucle->order) ? count($boucle->order) : 0; |
|
| 656 | - if ($n && (strpos($boucle->order[$n - 1], 'COLLATE') === false)) { |
|
| 657 | - // l'instruction COLLATE doit être placée avant ASC ou DESC |
|
| 658 | - // notamment lors de l'utilisation `{!par xxx}{collate yyy}` |
|
| 659 | - if ( |
|
| 660 | - (false !== $i = strpos($boucle->order[$n - 1], 'ASC')) |
|
| 661 | - or (false !== $i = strpos($boucle->order[$n - 1], 'DESC')) |
|
| 662 | - ) { |
|
| 663 | - $boucle->order[$n - 1] = substr_replace($boucle->order[$n - 1], "' . " . $boucle->modificateur['collate'] . " . ' ", $i, 0); |
|
| 664 | - } else { |
|
| 665 | - $boucle->order[$n - 1] .= ' . ' . $boucle->modificateur['collate']; |
|
| 666 | - } |
|
| 667 | - } |
|
| 668 | - } else { |
|
| 669 | - return (['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . (is_countable($boucles[$idb]->order) ? count($boucles[$idb]->order) : 0)]]); |
|
| 670 | - } |
|
| 651 | + if (isset($crit->param[0])) { |
|
| 652 | + $_coll = calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 653 | + $boucle = $boucles[$idb]; |
|
| 654 | + $boucle->modificateur['collate'] = "($_coll ?' COLLATE '.$_coll:'')"; |
|
| 655 | + $n = is_countable($boucle->order) ? count($boucle->order) : 0; |
|
| 656 | + if ($n && (strpos($boucle->order[$n - 1], 'COLLATE') === false)) { |
|
| 657 | + // l'instruction COLLATE doit être placée avant ASC ou DESC |
|
| 658 | + // notamment lors de l'utilisation `{!par xxx}{collate yyy}` |
|
| 659 | + if ( |
|
| 660 | + (false !== $i = strpos($boucle->order[$n - 1], 'ASC')) |
|
| 661 | + or (false !== $i = strpos($boucle->order[$n - 1], 'DESC')) |
|
| 662 | + ) { |
|
| 663 | + $boucle->order[$n - 1] = substr_replace($boucle->order[$n - 1], "' . " . $boucle->modificateur['collate'] . " . ' ", $i, 0); |
|
| 664 | + } else { |
|
| 665 | + $boucle->order[$n - 1] .= ' . ' . $boucle->modificateur['collate']; |
|
| 666 | + } |
|
| 667 | + } |
|
| 668 | + } else { |
|
| 669 | + return (['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . (is_countable($boucles[$idb]->order) ? count($boucles[$idb]->order) : 0)]]); |
|
| 670 | + } |
|
| 671 | 671 | } |
| 672 | 672 | |
| 673 | 673 | function calculer_critere_arg_dynamique($idb, &$boucles, $crit, $suffix = '') { |
| 674 | - $boucle = $boucles[$idb]; |
|
| 675 | - $alt = "('" . $boucle->id_table . '.\' . $x' . $suffix . ')'; |
|
| 676 | - $var = '$champs_' . $idb; |
|
| 677 | - $desc = (strpos($boucle->in, (string) "static $var =") !== false); |
|
| 678 | - if (!$desc) { |
|
| 679 | - $desc = $boucle->show['field']; |
|
| 680 | - $desc = implode(',', array_map('_q', array_keys($desc))); |
|
| 681 | - $boucles[$idb]->in .= "\n\tstatic $var = array(" . $desc . ');'; |
|
| 682 | - } |
|
| 683 | - if ($desc) { |
|
| 684 | - $alt = "(in_array(\$x, $var) ? $alt :(\$x$suffix))"; |
|
| 685 | - } |
|
| 686 | - $arg = calculer_liste($crit, $idb, $boucles, $boucle->id_parent); |
|
| 687 | - |
|
| 688 | - return "((\$x = preg_replace(\"/\\W/\",'', $arg)) ? $alt : '')"; |
|
| 674 | + $boucle = $boucles[$idb]; |
|
| 675 | + $alt = "('" . $boucle->id_table . '.\' . $x' . $suffix . ')'; |
|
| 676 | + $var = '$champs_' . $idb; |
|
| 677 | + $desc = (strpos($boucle->in, (string) "static $var =") !== false); |
|
| 678 | + if (!$desc) { |
|
| 679 | + $desc = $boucle->show['field']; |
|
| 680 | + $desc = implode(',', array_map('_q', array_keys($desc))); |
|
| 681 | + $boucles[$idb]->in .= "\n\tstatic $var = array(" . $desc . ');'; |
|
| 682 | + } |
|
| 683 | + if ($desc) { |
|
| 684 | + $alt = "(in_array(\$x, $var) ? $alt :(\$x$suffix))"; |
|
| 685 | + } |
|
| 686 | + $arg = calculer_liste($crit, $idb, $boucles, $boucle->id_parent); |
|
| 687 | + |
|
| 688 | + return "((\$x = preg_replace(\"/\\W/\",'', $arg)) ? $alt : '')"; |
|
| 689 | 689 | } |
| 690 | 690 | |
| 691 | 691 | /** |
@@ -724,7 +724,7 @@ discard block |
||
| 724 | 724 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 725 | 725 | */ |
| 726 | 726 | function critere_par_dist($idb, &$boucles, $crit) { |
| 727 | - return critere_parinverse($idb, $boucles, $crit); |
|
| 727 | + return critere_parinverse($idb, $boucles, $crit); |
|
| 728 | 728 | } |
| 729 | 729 | |
| 730 | 730 | /** |
@@ -746,93 +746,93 @@ discard block |
||
| 746 | 746 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 747 | 747 | */ |
| 748 | 748 | function critere_parinverse($idb, &$boucles, $crit) { |
| 749 | - $boucle = &$boucles[$idb]; |
|
| 750 | - |
|
| 751 | - $sens = $collecte = ''; |
|
| 752 | - if ($crit->not) { |
|
| 753 | - $sens = " . ' DESC'"; |
|
| 754 | - } |
|
| 755 | - if (isset($boucle->modificateur['collate'])) { |
|
| 756 | - $collecte = ' . ' . $boucle->modificateur['collate']; |
|
| 757 | - } |
|
| 758 | - |
|
| 759 | - // Pour chaque paramètre du critère |
|
| 760 | - foreach ($crit->param as $tri) { |
|
| 761 | - $order = $fct = ''; |
|
| 762 | - // tris specifiés dynamiquement {par #ENV{tri}} |
|
| 763 | - if ($tri[0]->type != 'texte') { |
|
| 764 | - // calculer le order dynamique qui verifie les champs |
|
| 765 | - $order = calculer_critere_arg_dynamique($idb, $boucles, $tri, $sens); |
|
| 766 | - // ajouter 'hasard' comme possibilité de tri dynamique |
|
| 767 | - calculer_critere_par_hasard($idb, $boucles, $crit); |
|
| 768 | - } |
|
| 769 | - // tris textuels {par titre} |
|
| 770 | - else { |
|
| 771 | - $par = array_shift($tri); |
|
| 772 | - $par = $par->texte; |
|
| 773 | - |
|
| 774 | - // tris de la forme {par expression champ} tel que {par num titre} ou {par multi titre} |
|
| 775 | - if (preg_match(',^(\w+)[\s]+(.*)$,', $par, $m)) { |
|
| 776 | - $expression = trim($m[1]); |
|
| 777 | - $champ = trim($m[2]); |
|
| 778 | - if (function_exists($f = 'calculer_critere_par_expression_' . $expression)) { |
|
| 779 | - $order = $f($idb, $boucles, $crit, $tri, $champ); |
|
| 780 | - } else { |
|
| 781 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . " $par"]]; |
|
| 782 | - } |
|
| 783 | - |
|
| 784 | - // tris de la forme {par champ} ou {par FONCTION(champ)} |
|
| 785 | - } elseif ($boucle->type_requete == 'DATA' or preg_match(',^' . CHAMP_SQL_PLUS_FONC . '$,is', $par, $match)) { |
|
| 786 | - // {par FONCTION(champ)} |
|
| 787 | - if (isset($match) and count($match) > 2) { |
|
| 788 | - $par = substr($match[2], 1, -1); |
|
| 789 | - $fct = $match[1]; |
|
| 790 | - } |
|
| 791 | - // quelques cas spécifiques {par hasard}, {par date} |
|
| 792 | - if ($par == 'hasard') { |
|
| 793 | - $order = calculer_critere_par_hasard($idb, $boucles, $crit); |
|
| 794 | - } elseif ($par == 'date' and !empty($boucle->show['date'])) { |
|
| 795 | - $order = "'" . $boucle->id_table . '.' . $boucle->show['date'] . "'"; |
|
| 796 | - } else { |
|
| 797 | - // cas général {par champ}, {par table.champ}, ... |
|
| 798 | - $order = calculer_critere_par_champ($idb, $boucles, $crit, $par); |
|
| 799 | - } |
|
| 800 | - } |
|
| 801 | - |
|
| 802 | - // on ne sait pas traiter… |
|
| 803 | - else { |
|
| 804 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . " $par"]]; |
|
| 805 | - } |
|
| 806 | - |
|
| 807 | - // En cas d'erreur de squelette retournée par une fonction |
|
| 808 | - if (is_array($order)) { |
|
| 809 | - return $order; |
|
| 810 | - } |
|
| 811 | - } |
|
| 812 | - |
|
| 813 | - if (preg_match('/^\'([^"]*)\'$/', $order, $m)) { |
|
| 814 | - $t = $m[1]; |
|
| 815 | - if (strpos($t, '.') and !in_array($t, $boucle->select)) { |
|
| 816 | - $boucle->select[] = $t; |
|
| 817 | - } |
|
| 818 | - } else { |
|
| 819 | - $sens = ''; |
|
| 820 | - } |
|
| 821 | - |
|
| 822 | - if ($fct) { |
|
| 823 | - if (preg_match("/^\s*'(.*)'\s*$/", $order, $r)) { |
|
| 824 | - $order = "'$fct(" . $r[1] . ")'"; |
|
| 825 | - } else { |
|
| 826 | - $order = "'$fct(' . $order . ')'"; |
|
| 827 | - } |
|
| 828 | - } |
|
| 829 | - $t = $order . $collecte . $sens; |
|
| 830 | - if (preg_match("/^(.*)'\s*\.\s*'([^']*')$/", $t, $r)) { |
|
| 831 | - $t = $r[1] . $r[2]; |
|
| 832 | - } |
|
| 833 | - |
|
| 834 | - $boucle->order[] = $t; |
|
| 835 | - } |
|
| 749 | + $boucle = &$boucles[$idb]; |
|
| 750 | + |
|
| 751 | + $sens = $collecte = ''; |
|
| 752 | + if ($crit->not) { |
|
| 753 | + $sens = " . ' DESC'"; |
|
| 754 | + } |
|
| 755 | + if (isset($boucle->modificateur['collate'])) { |
|
| 756 | + $collecte = ' . ' . $boucle->modificateur['collate']; |
|
| 757 | + } |
|
| 758 | + |
|
| 759 | + // Pour chaque paramètre du critère |
|
| 760 | + foreach ($crit->param as $tri) { |
|
| 761 | + $order = $fct = ''; |
|
| 762 | + // tris specifiés dynamiquement {par #ENV{tri}} |
|
| 763 | + if ($tri[0]->type != 'texte') { |
|
| 764 | + // calculer le order dynamique qui verifie les champs |
|
| 765 | + $order = calculer_critere_arg_dynamique($idb, $boucles, $tri, $sens); |
|
| 766 | + // ajouter 'hasard' comme possibilité de tri dynamique |
|
| 767 | + calculer_critere_par_hasard($idb, $boucles, $crit); |
|
| 768 | + } |
|
| 769 | + // tris textuels {par titre} |
|
| 770 | + else { |
|
| 771 | + $par = array_shift($tri); |
|
| 772 | + $par = $par->texte; |
|
| 773 | + |
|
| 774 | + // tris de la forme {par expression champ} tel que {par num titre} ou {par multi titre} |
|
| 775 | + if (preg_match(',^(\w+)[\s]+(.*)$,', $par, $m)) { |
|
| 776 | + $expression = trim($m[1]); |
|
| 777 | + $champ = trim($m[2]); |
|
| 778 | + if (function_exists($f = 'calculer_critere_par_expression_' . $expression)) { |
|
| 779 | + $order = $f($idb, $boucles, $crit, $tri, $champ); |
|
| 780 | + } else { |
|
| 781 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . " $par"]]; |
|
| 782 | + } |
|
| 783 | + |
|
| 784 | + // tris de la forme {par champ} ou {par FONCTION(champ)} |
|
| 785 | + } elseif ($boucle->type_requete == 'DATA' or preg_match(',^' . CHAMP_SQL_PLUS_FONC . '$,is', $par, $match)) { |
|
| 786 | + // {par FONCTION(champ)} |
|
| 787 | + if (isset($match) and count($match) > 2) { |
|
| 788 | + $par = substr($match[2], 1, -1); |
|
| 789 | + $fct = $match[1]; |
|
| 790 | + } |
|
| 791 | + // quelques cas spécifiques {par hasard}, {par date} |
|
| 792 | + if ($par == 'hasard') { |
|
| 793 | + $order = calculer_critere_par_hasard($idb, $boucles, $crit); |
|
| 794 | + } elseif ($par == 'date' and !empty($boucle->show['date'])) { |
|
| 795 | + $order = "'" . $boucle->id_table . '.' . $boucle->show['date'] . "'"; |
|
| 796 | + } else { |
|
| 797 | + // cas général {par champ}, {par table.champ}, ... |
|
| 798 | + $order = calculer_critere_par_champ($idb, $boucles, $crit, $par); |
|
| 799 | + } |
|
| 800 | + } |
|
| 801 | + |
|
| 802 | + // on ne sait pas traiter… |
|
| 803 | + else { |
|
| 804 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . " $par"]]; |
|
| 805 | + } |
|
| 806 | + |
|
| 807 | + // En cas d'erreur de squelette retournée par une fonction |
|
| 808 | + if (is_array($order)) { |
|
| 809 | + return $order; |
|
| 810 | + } |
|
| 811 | + } |
|
| 812 | + |
|
| 813 | + if (preg_match('/^\'([^"]*)\'$/', $order, $m)) { |
|
| 814 | + $t = $m[1]; |
|
| 815 | + if (strpos($t, '.') and !in_array($t, $boucle->select)) { |
|
| 816 | + $boucle->select[] = $t; |
|
| 817 | + } |
|
| 818 | + } else { |
|
| 819 | + $sens = ''; |
|
| 820 | + } |
|
| 821 | + |
|
| 822 | + if ($fct) { |
|
| 823 | + if (preg_match("/^\s*'(.*)'\s*$/", $order, $r)) { |
|
| 824 | + $order = "'$fct(" . $r[1] . ")'"; |
|
| 825 | + } else { |
|
| 826 | + $order = "'$fct(' . $order . ')'"; |
|
| 827 | + } |
|
| 828 | + } |
|
| 829 | + $t = $order . $collecte . $sens; |
|
| 830 | + if (preg_match("/^(.*)'\s*\.\s*'([^']*')$/", $t, $r)) { |
|
| 831 | + $t = $r[1] . $r[2]; |
|
| 832 | + } |
|
| 833 | + |
|
| 834 | + $boucle->order[] = $t; |
|
| 835 | + } |
|
| 836 | 836 | } |
| 837 | 837 | |
| 838 | 838 | /** |
@@ -846,13 +846,13 @@ discard block |
||
| 846 | 846 | * @return string Clause pour le Order by |
| 847 | 847 | */ |
| 848 | 848 | function calculer_critere_par_hasard($idb, &$boucles, $crit) { |
| 849 | - $boucle = &$boucles[$idb]; |
|
| 850 | - // Si ce n'est fait, ajouter un champ 'hasard' dans le select |
|
| 851 | - $parha = 'rand() AS hasard'; |
|
| 852 | - if (!in_array($parha, $boucle->select)) { |
|
| 853 | - $boucle->select[] = $parha; |
|
| 854 | - } |
|
| 855 | - return "'hasard'"; |
|
| 849 | + $boucle = &$boucles[$idb]; |
|
| 850 | + // Si ce n'est fait, ajouter un champ 'hasard' dans le select |
|
| 851 | + $parha = 'rand() AS hasard'; |
|
| 852 | + if (!in_array($parha, $boucle->select)) { |
|
| 853 | + $boucle->select[] = $parha; |
|
| 854 | + } |
|
| 855 | + return "'hasard'"; |
|
| 856 | 856 | } |
| 857 | 857 | |
| 858 | 858 | /** |
@@ -876,24 +876,24 @@ discard block |
||
| 876 | 876 | * @return string|array Clause pour le Order by (array si erreur) |
| 877 | 877 | */ |
| 878 | 878 | function calculer_critere_par_expression_num($idb, &$boucles, $crit, $tri, $champ) { |
| 879 | - $_champ = calculer_critere_par_champ($idb, $boucles, $crit, $champ, true); |
|
| 880 | - if (is_array($_champ)) { |
|
| 881 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . " num $champ"]]; |
|
| 882 | - } |
|
| 883 | - $boucle = &$boucles[$idb]; |
|
| 884 | - $texte = '0+' . $_champ; |
|
| 885 | - $suite = calculer_liste($tri, $idb, $boucles, $boucle->id_parent); |
|
| 886 | - if ($suite !== "''") { |
|
| 887 | - $texte = "\" . ((\$x = $suite) ? ('$texte' . \$x) : '0')" . ' . "'; |
|
| 888 | - } |
|
| 889 | - $asnum = 'num' . ($boucle->order ? count($boucle->order) : ''); |
|
| 890 | - $boucle->select[] = $texte . " AS $asnum"; |
|
| 891 | - |
|
| 892 | - $orderassinum = calculer_critere_par_expression_sinum($idb, $boucles, $crit, $tri, $champ); |
|
| 893 | - $orderassinum = trim($orderassinum, "'"); |
|
| 894 | - |
|
| 895 | - $order = "'$orderassinum, $asnum'"; |
|
| 896 | - return $order; |
|
| 879 | + $_champ = calculer_critere_par_champ($idb, $boucles, $crit, $champ, true); |
|
| 880 | + if (is_array($_champ)) { |
|
| 881 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . " num $champ"]]; |
|
| 882 | + } |
|
| 883 | + $boucle = &$boucles[$idb]; |
|
| 884 | + $texte = '0+' . $_champ; |
|
| 885 | + $suite = calculer_liste($tri, $idb, $boucles, $boucle->id_parent); |
|
| 886 | + if ($suite !== "''") { |
|
| 887 | + $texte = "\" . ((\$x = $suite) ? ('$texte' . \$x) : '0')" . ' . "'; |
|
| 888 | + } |
|
| 889 | + $asnum = 'num' . ($boucle->order ? count($boucle->order) : ''); |
|
| 890 | + $boucle->select[] = $texte . " AS $asnum"; |
|
| 891 | + |
|
| 892 | + $orderassinum = calculer_critere_par_expression_sinum($idb, $boucles, $crit, $tri, $champ); |
|
| 893 | + $orderassinum = trim($orderassinum, "'"); |
|
| 894 | + |
|
| 895 | + $order = "'$orderassinum, $asnum'"; |
|
| 896 | + return $order; |
|
| 897 | 897 | } |
| 898 | 898 | |
| 899 | 899 | /** |
@@ -914,35 +914,35 @@ discard block |
||
| 914 | 914 | * @return string|array Clause pour le Order by (array si erreur) |
| 915 | 915 | */ |
| 916 | 916 | function calculer_critere_par_expression_sinum($idb, &$boucles, $crit, $tri, $champ) { |
| 917 | - $_champ = calculer_critere_par_champ($idb, $boucles, $crit, $champ, true); |
|
| 918 | - if (is_array($_champ)) { |
|
| 919 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . " sinum $champ"]]; |
|
| 920 | - } |
|
| 921 | - $boucle = &$boucles[$idb]; |
|
| 922 | - $texte = '0+' . $_champ; |
|
| 923 | - $suite = calculer_liste($tri, $idb, $boucles, $boucle->id_parent); |
|
| 924 | - if ($suite !== "''") { |
|
| 925 | - $texte = "\" . ((\$x = $suite) ? ('$texte' . \$x) : '0')" . ' . "'; |
|
| 926 | - } |
|
| 927 | - |
|
| 928 | - $as = false; |
|
| 929 | - $select = "CASE ( $texte ) WHEN 0 THEN 1 ELSE 0 END AS "; |
|
| 930 | - foreach ($boucle->select as $s) { |
|
| 931 | - if (strpos($s, $select) === 0) { |
|
| 932 | - $as = trim(substr($s, strlen($select))); |
|
| 933 | - if (!preg_match(',\W,', $as)) { |
|
| 934 | - break; |
|
| 935 | - } |
|
| 936 | - $as = false; |
|
| 937 | - } |
|
| 938 | - } |
|
| 939 | - |
|
| 940 | - if (!$as) { |
|
| 941 | - $as = 'sinum' . ($boucle->order ? count($boucle->order) : ''); |
|
| 942 | - $boucle->select[] = $select . $as; |
|
| 943 | - } |
|
| 944 | - $order = "'$as'"; |
|
| 945 | - return $order; |
|
| 917 | + $_champ = calculer_critere_par_champ($idb, $boucles, $crit, $champ, true); |
|
| 918 | + if (is_array($_champ)) { |
|
| 919 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . " sinum $champ"]]; |
|
| 920 | + } |
|
| 921 | + $boucle = &$boucles[$idb]; |
|
| 922 | + $texte = '0+' . $_champ; |
|
| 923 | + $suite = calculer_liste($tri, $idb, $boucles, $boucle->id_parent); |
|
| 924 | + if ($suite !== "''") { |
|
| 925 | + $texte = "\" . ((\$x = $suite) ? ('$texte' . \$x) : '0')" . ' . "'; |
|
| 926 | + } |
|
| 927 | + |
|
| 928 | + $as = false; |
|
| 929 | + $select = "CASE ( $texte ) WHEN 0 THEN 1 ELSE 0 END AS "; |
|
| 930 | + foreach ($boucle->select as $s) { |
|
| 931 | + if (strpos($s, $select) === 0) { |
|
| 932 | + $as = trim(substr($s, strlen($select))); |
|
| 933 | + if (!preg_match(',\W,', $as)) { |
|
| 934 | + break; |
|
| 935 | + } |
|
| 936 | + $as = false; |
|
| 937 | + } |
|
| 938 | + } |
|
| 939 | + |
|
| 940 | + if (!$as) { |
|
| 941 | + $as = 'sinum' . ($boucle->order ? count($boucle->order) : ''); |
|
| 942 | + $boucle->select[] = $select . $as; |
|
| 943 | + } |
|
| 944 | + $order = "'$as'"; |
|
| 945 | + return $order; |
|
| 946 | 946 | } |
| 947 | 947 | |
| 948 | 948 | |
@@ -962,14 +962,14 @@ discard block |
||
| 962 | 962 | * @return string|array Clause pour le Order by (array si erreur) |
| 963 | 963 | */ |
| 964 | 964 | function calculer_critere_par_expression_multi($idb, &$boucles, $crit, $tri, $champ) { |
| 965 | - $_champ = calculer_critere_par_champ($idb, $boucles, $crit, $champ, true); |
|
| 966 | - if (is_array($_champ)) { |
|
| 967 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . " multi $champ"]]; |
|
| 968 | - } |
|
| 969 | - $boucle = &$boucles[$idb]; |
|
| 970 | - $boucle->select[] = "\".sql_multi('" . $_champ . "', \$GLOBALS['spip_lang']).\""; |
|
| 971 | - $order = "'multi'"; |
|
| 972 | - return $order; |
|
| 965 | + $_champ = calculer_critere_par_champ($idb, $boucles, $crit, $champ, true); |
|
| 966 | + if (is_array($_champ)) { |
|
| 967 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . " multi $champ"]]; |
|
| 968 | + } |
|
| 969 | + $boucle = &$boucles[$idb]; |
|
| 970 | + $boucle->select[] = "\".sql_multi('" . $_champ . "', \$GLOBALS['spip_lang']).\""; |
|
| 971 | + $order = "'multi'"; |
|
| 972 | + return $order; |
|
| 973 | 973 | } |
| 974 | 974 | |
| 975 | 975 | /** |
@@ -988,56 +988,56 @@ discard block |
||
| 988 | 988 | * @return array|string |
| 989 | 989 | */ |
| 990 | 990 | function calculer_critere_par_champ($idb, &$boucles, $crit, $par, $raw = false) { |
| 991 | - $boucle = &$boucles[$idb]; |
|
| 992 | - $desc = $boucle->show; |
|
| 993 | - |
|
| 994 | - // le champ existe dans la table, pas de souci (le plus commun) |
|
| 995 | - if (isset($desc['field'][$par])) { |
|
| 996 | - $par = $boucle->id_table . '.' . $par; |
|
| 997 | - } |
|
| 998 | - // le champ est peut être une jointure |
|
| 999 | - else { |
|
| 1000 | - $table = $table_alias = false; // toutes les tables de jointure possibles |
|
| 1001 | - $champ = $par; |
|
| 1002 | - |
|
| 1003 | - // le champ demandé est une exception de jointure {par titre_mot} |
|
| 1004 | - if (isset($GLOBALS['exceptions_des_jointures'][$par])) { |
|
| 1005 | - [$table, $champ] = $GLOBALS['exceptions_des_jointures'][$par]; |
|
| 1006 | - } // la table de jointure est explicitement indiquée {par truc.muche} |
|
| 1007 | - elseif (preg_match('/^([^,]*)\.(.*)$/', $par, $r)) { |
|
| 1008 | - [, $table, $champ] = $r; |
|
| 1009 | - $table_alias = $table; // c'est peut-être un alias de table {par L1.titre} |
|
| 1010 | - $table = table_objet_sql($table); |
|
| 1011 | - } |
|
| 1012 | - |
|
| 1013 | - // Si on connait la table d'arrivée, on la demande donc explicitement |
|
| 1014 | - // Sinon on cherche le champ dans les tables possibles de jointures |
|
| 1015 | - // Si la table est déjà dans le from, on la réutilise. |
|
| 1016 | - if ($infos = chercher_champ_dans_tables($champ, $boucle->from, $boucle->sql_serveur, $table)) { |
|
| 1017 | - $par = $infos['alias'] . '.' . $champ; |
|
| 1018 | - } elseif ( |
|
| 1019 | - $boucle->jointures_explicites |
|
| 1020 | - and $alias = trouver_jointure_champ($champ, $boucle, explode(' ', $boucle->jointures_explicites), false, $table) |
|
| 1021 | - ) { |
|
| 1022 | - $par = $alias . '.' . $champ; |
|
| 1023 | - } elseif ($alias = trouver_jointure_champ($champ, $boucle, $boucle->jointures, false, $table)) { |
|
| 1024 | - $par = $alias . '.' . $champ; |
|
| 1025 | - // en spécifiant directement l'alias {par L2.titre} (situation hasardeuse tout de même) |
|
| 1026 | - } elseif ( |
|
| 1027 | - $table_alias |
|
| 1028 | - and isset($boucle->from[$table_alias]) |
|
| 1029 | - and $infos = chercher_champ_dans_tables($champ, $boucle->from, $boucle->sql_serveur, $boucle->from[$table_alias]) |
|
| 1030 | - ) { |
|
| 1031 | - $par = $infos['alias'] . '.' . $champ; |
|
| 1032 | - } elseif ($table) { |
|
| 1033 | - // On avait table + champ, mais on ne les a pas trouvés |
|
| 1034 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . " $par"]]; |
|
| 1035 | - } else { |
|
| 1036 | - // Sinon tant pis, ca doit etre un champ synthetise (cf points) |
|
| 1037 | - } |
|
| 1038 | - } |
|
| 1039 | - |
|
| 1040 | - return $raw ? $par : "'$par'"; |
|
| 991 | + $boucle = &$boucles[$idb]; |
|
| 992 | + $desc = $boucle->show; |
|
| 993 | + |
|
| 994 | + // le champ existe dans la table, pas de souci (le plus commun) |
|
| 995 | + if (isset($desc['field'][$par])) { |
|
| 996 | + $par = $boucle->id_table . '.' . $par; |
|
| 997 | + } |
|
| 998 | + // le champ est peut être une jointure |
|
| 999 | + else { |
|
| 1000 | + $table = $table_alias = false; // toutes les tables de jointure possibles |
|
| 1001 | + $champ = $par; |
|
| 1002 | + |
|
| 1003 | + // le champ demandé est une exception de jointure {par titre_mot} |
|
| 1004 | + if (isset($GLOBALS['exceptions_des_jointures'][$par])) { |
|
| 1005 | + [$table, $champ] = $GLOBALS['exceptions_des_jointures'][$par]; |
|
| 1006 | + } // la table de jointure est explicitement indiquée {par truc.muche} |
|
| 1007 | + elseif (preg_match('/^([^,]*)\.(.*)$/', $par, $r)) { |
|
| 1008 | + [, $table, $champ] = $r; |
|
| 1009 | + $table_alias = $table; // c'est peut-être un alias de table {par L1.titre} |
|
| 1010 | + $table = table_objet_sql($table); |
|
| 1011 | + } |
|
| 1012 | + |
|
| 1013 | + // Si on connait la table d'arrivée, on la demande donc explicitement |
|
| 1014 | + // Sinon on cherche le champ dans les tables possibles de jointures |
|
| 1015 | + // Si la table est déjà dans le from, on la réutilise. |
|
| 1016 | + if ($infos = chercher_champ_dans_tables($champ, $boucle->from, $boucle->sql_serveur, $table)) { |
|
| 1017 | + $par = $infos['alias'] . '.' . $champ; |
|
| 1018 | + } elseif ( |
|
| 1019 | + $boucle->jointures_explicites |
|
| 1020 | + and $alias = trouver_jointure_champ($champ, $boucle, explode(' ', $boucle->jointures_explicites), false, $table) |
|
| 1021 | + ) { |
|
| 1022 | + $par = $alias . '.' . $champ; |
|
| 1023 | + } elseif ($alias = trouver_jointure_champ($champ, $boucle, $boucle->jointures, false, $table)) { |
|
| 1024 | + $par = $alias . '.' . $champ; |
|
| 1025 | + // en spécifiant directement l'alias {par L2.titre} (situation hasardeuse tout de même) |
|
| 1026 | + } elseif ( |
|
| 1027 | + $table_alias |
|
| 1028 | + and isset($boucle->from[$table_alias]) |
|
| 1029 | + and $infos = chercher_champ_dans_tables($champ, $boucle->from, $boucle->sql_serveur, $boucle->from[$table_alias]) |
|
| 1030 | + ) { |
|
| 1031 | + $par = $infos['alias'] . '.' . $champ; |
|
| 1032 | + } elseif ($table) { |
|
| 1033 | + // On avait table + champ, mais on ne les a pas trouvés |
|
| 1034 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . " $par"]]; |
|
| 1035 | + } else { |
|
| 1036 | + // Sinon tant pis, ca doit etre un champ synthetise (cf points) |
|
| 1037 | + } |
|
| 1038 | + } |
|
| 1039 | + |
|
| 1040 | + return $raw ? $par : "'$par'"; |
|
| 1041 | 1041 | } |
| 1042 | 1042 | |
| 1043 | 1043 | /** |
@@ -1051,11 +1051,11 @@ discard block |
||
| 1051 | 1051 | * @return string Champ pour le compilateur si trouvé, tel que "'alias.champ'", sinon vide. |
| 1052 | 1052 | */ |
| 1053 | 1053 | function critere_par_joint($table, $champ, &$boucle) { |
| 1054 | - $t = array_search($table, $boucle->from); |
|
| 1055 | - if (!$t) { |
|
| 1056 | - $t = trouver_jointure_champ($champ, $boucle); |
|
| 1057 | - } |
|
| 1058 | - return !$t ? '' : ("'" . $t . '.' . $champ . "'"); |
|
| 1054 | + $t = array_search($table, $boucle->from); |
|
| 1055 | + if (!$t) { |
|
| 1056 | + $t = trouver_jointure_champ($champ, $boucle); |
|
| 1057 | + } |
|
| 1058 | + return !$t ? '' : ("'" . $t . '.' . $champ . "'"); |
|
| 1059 | 1059 | } |
| 1060 | 1060 | |
| 1061 | 1061 | /** |
@@ -1080,33 +1080,33 @@ discard block |
||
| 1080 | 1080 | */ |
| 1081 | 1081 | function critere_inverse_dist($idb, &$boucles, $crit) { |
| 1082 | 1082 | |
| 1083 | - $boucle = &$boucles[$idb]; |
|
| 1084 | - // Classement par ordre inverse |
|
| 1085 | - if ($crit->not) { |
|
| 1086 | - critere_parinverse($idb, $boucles, $crit); |
|
| 1087 | - } else { |
|
| 1088 | - $order = "' DESC'"; |
|
| 1089 | - // Classement par ordre inverse fonction eventuelle de #ENV{...} |
|
| 1090 | - if (isset($crit->param[0])) { |
|
| 1091 | - $critere = calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 1092 | - $order = "(($critere)?' DESC':'')"; |
|
| 1093 | - } |
|
| 1094 | - |
|
| 1095 | - $n = is_countable($boucle->order) ? count($boucle->order) : 0; |
|
| 1096 | - if (!$n) { |
|
| 1097 | - if (isset($boucle->default_order[0])) { |
|
| 1098 | - $boucle->default_order[0] .= ' . " DESC"'; |
|
| 1099 | - } else { |
|
| 1100 | - $boucle->default_order[] = ' DESC'; |
|
| 1101 | - } |
|
| 1102 | - } else { |
|
| 1103 | - $t = $boucle->order[$n - 1] . " . $order"; |
|
| 1104 | - if (preg_match("/^(.*)'\s*\.\s*'([^']*')$/", $t, $r)) { |
|
| 1105 | - $t = $r[1] . $r[2]; |
|
| 1106 | - } |
|
| 1107 | - $boucle->order[$n - 1] = $t; |
|
| 1108 | - } |
|
| 1109 | - } |
|
| 1083 | + $boucle = &$boucles[$idb]; |
|
| 1084 | + // Classement par ordre inverse |
|
| 1085 | + if ($crit->not) { |
|
| 1086 | + critere_parinverse($idb, $boucles, $crit); |
|
| 1087 | + } else { |
|
| 1088 | + $order = "' DESC'"; |
|
| 1089 | + // Classement par ordre inverse fonction eventuelle de #ENV{...} |
|
| 1090 | + if (isset($crit->param[0])) { |
|
| 1091 | + $critere = calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 1092 | + $order = "(($critere)?' DESC':'')"; |
|
| 1093 | + } |
|
| 1094 | + |
|
| 1095 | + $n = is_countable($boucle->order) ? count($boucle->order) : 0; |
|
| 1096 | + if (!$n) { |
|
| 1097 | + if (isset($boucle->default_order[0])) { |
|
| 1098 | + $boucle->default_order[0] .= ' . " DESC"'; |
|
| 1099 | + } else { |
|
| 1100 | + $boucle->default_order[] = ' DESC'; |
|
| 1101 | + } |
|
| 1102 | + } else { |
|
| 1103 | + $t = $boucle->order[$n - 1] . " . $order"; |
|
| 1104 | + if (preg_match("/^(.*)'\s*\.\s*'([^']*')$/", $t, $r)) { |
|
| 1105 | + $t = $r[1] . $r[2]; |
|
| 1106 | + } |
|
| 1107 | + $boucle->order[$n - 1] = $t; |
|
| 1108 | + } |
|
| 1109 | + } |
|
| 1110 | 1110 | } |
| 1111 | 1111 | |
| 1112 | 1112 | /** |
@@ -1118,139 +1118,139 @@ discard block |
||
| 1118 | 1118 | * @return void|array |
| 1119 | 1119 | */ |
| 1120 | 1120 | function critere_par_ordre_liste_dist($idb, &$boucles, $crit) { |
| 1121 | - $boucle = &$boucles[$idb]; |
|
| 1121 | + $boucle = &$boucles[$idb]; |
|
| 1122 | 1122 | |
| 1123 | - $sens = $collecte = ''; |
|
| 1124 | - if ($crit->not) { |
|
| 1125 | - $sens = " . ' DESC'"; |
|
| 1126 | - } |
|
| 1123 | + $sens = $collecte = ''; |
|
| 1124 | + if ($crit->not) { |
|
| 1125 | + $sens = " . ' DESC'"; |
|
| 1126 | + } |
|
| 1127 | 1127 | |
| 1128 | - $crit2 = clone $crit; |
|
| 1129 | - $crit2->not = false; |
|
| 1130 | - $crit2->param = [reset($crit->param)]; |
|
| 1131 | - $res = critere_parinverse($idb, $boucles, $crit2); |
|
| 1128 | + $crit2 = clone $crit; |
|
| 1129 | + $crit2->not = false; |
|
| 1130 | + $crit2->param = [reset($crit->param)]; |
|
| 1131 | + $res = critere_parinverse($idb, $boucles, $crit2); |
|
| 1132 | 1132 | |
| 1133 | - // erreur ? |
|
| 1134 | - if (is_array($res)) { |
|
| 1135 | - return $res; |
|
| 1136 | - } |
|
| 1133 | + // erreur ? |
|
| 1134 | + if (is_array($res)) { |
|
| 1135 | + return $res; |
|
| 1136 | + } |
|
| 1137 | 1137 | |
| 1138 | - $_order = array_pop($boucle->order); |
|
| 1138 | + $_order = array_pop($boucle->order); |
|
| 1139 | 1139 | |
| 1140 | - $_liste = calculer_liste($crit->param[1], [], $boucles, $boucles[$idb]->id_parent); |
|
| 1140 | + $_liste = calculer_liste($crit->param[1], [], $boucles, $boucles[$idb]->id_parent); |
|
| 1141 | 1141 | |
| 1142 | - $order = "'-FIELD(' . $_order . ',' . ((\$zl=formate_liste_critere_par_ordre_liste(array_reverse($_liste),'" . $boucle->sql_serveur . "')) ? \$zl : '0').')'$sens"; |
|
| 1143 | - $boucle->order[] = $order; |
|
| 1142 | + $order = "'-FIELD(' . $_order . ',' . ((\$zl=formate_liste_critere_par_ordre_liste(array_reverse($_liste),'" . $boucle->sql_serveur . "')) ? \$zl : '0').')'$sens"; |
|
| 1143 | + $boucle->order[] = $order; |
|
| 1144 | 1144 | } |
| 1145 | 1145 | |
| 1146 | 1146 | |
| 1147 | 1147 | function critere_agenda_dist($idb, &$boucles, $crit) { |
| 1148 | - $params = $crit->param; |
|
| 1149 | - |
|
| 1150 | - if ((is_countable($params) ? count($params) : 0) < 1) { |
|
| 1151 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ?']]; |
|
| 1152 | - } |
|
| 1153 | - |
|
| 1154 | - $boucle = &$boucles[$idb]; |
|
| 1155 | - $parent = $boucle->id_parent; |
|
| 1156 | - $fields = $boucle->show['field']; |
|
| 1157 | - |
|
| 1158 | - $date = array_shift($params); |
|
| 1159 | - $type = array_shift($params); |
|
| 1160 | - |
|
| 1161 | - // la valeur $type doit etre connue a la compilation |
|
| 1162 | - // donc etre forcement reduite a un litteral unique dans le source |
|
| 1163 | - $type = is_object($type[0]) ? $type[0]->texte : null; |
|
| 1164 | - |
|
| 1165 | - // La valeur date doit designer un champ de la table SQL. |
|
| 1166 | - // Si c'est un litteral unique dans le source, verifier a la compil, |
|
| 1167 | - // sinon synthetiser le test de verif pour execution ulterieure |
|
| 1168 | - // On prendra arbitrairement le premier champ si test negatif. |
|
| 1169 | - if (((is_countable($date) ? count($date) : 0) == 1) and ($date[0]->type == 'texte')) { |
|
| 1170 | - $date = $date[0]->texte; |
|
| 1171 | - if (!isset($fields[$date])) { |
|
| 1172 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . $date]]; |
|
| 1173 | - } |
|
| 1174 | - } else { |
|
| 1175 | - $a = calculer_liste($date, $idb, $boucles, $parent); |
|
| 1176 | - $noms = array_keys($fields); |
|
| 1177 | - $defaut = $noms[0]; |
|
| 1178 | - $noms = join(' ', $noms); |
|
| 1179 | - # bien laisser 2 espaces avant $nom pour que strpos<>0 |
|
| 1180 | - $cond = "(\$a=strval($a))AND\nstrpos(\" $noms \",\" \$a \")"; |
|
| 1181 | - $date = "'.(($cond)\n?\$a:\"$defaut\").'"; |
|
| 1182 | - } |
|
| 1183 | - $annee = $params ? array_shift($params) : ''; |
|
| 1184 | - $annee = "\n" . 'sprintf("%04d", ($x = ' . |
|
| 1185 | - calculer_liste($annee, $idb, $boucles, $parent) . |
|
| 1186 | - ') ? $x : date("Y"))'; |
|
| 1187 | - |
|
| 1188 | - $mois = $params ? array_shift($params) : ''; |
|
| 1189 | - $mois = "\n" . 'sprintf("%02d", ($x = ' . |
|
| 1190 | - calculer_liste($mois, $idb, $boucles, $parent) . |
|
| 1191 | - ') ? $x : date("m"))'; |
|
| 1192 | - |
|
| 1193 | - $jour = $params ? array_shift($params) : ''; |
|
| 1194 | - $jour = "\n" . 'sprintf("%02d", ($x = ' . |
|
| 1195 | - calculer_liste($jour, $idb, $boucles, $parent) . |
|
| 1196 | - ') ? $x : date("d"))'; |
|
| 1197 | - |
|
| 1198 | - $annee2 = $params ? array_shift($params) : ''; |
|
| 1199 | - $annee2 = "\n" . 'sprintf("%04d", ($x = ' . |
|
| 1200 | - calculer_liste($annee2, $idb, $boucles, $parent) . |
|
| 1201 | - ') ? $x : date("Y"))'; |
|
| 1202 | - |
|
| 1203 | - $mois2 = $params ? array_shift($params) : ''; |
|
| 1204 | - $mois2 = "\n" . 'sprintf("%02d", ($x = ' . |
|
| 1205 | - calculer_liste($mois2, $idb, $boucles, $parent) . |
|
| 1206 | - ') ? $x : date("m"))'; |
|
| 1207 | - |
|
| 1208 | - $jour2 = $params ? array_shift($params) : ''; |
|
| 1209 | - $jour2 = "\n" . 'sprintf("%02d", ($x = ' . |
|
| 1210 | - calculer_liste($jour2, $idb, $boucles, $parent) . |
|
| 1211 | - ') ? $x : date("d"))'; |
|
| 1212 | - |
|
| 1213 | - $date = $boucle->id_table . ".$date"; |
|
| 1214 | - |
|
| 1215 | - $quote_end = ",'" . $boucle->sql_serveur . "','text'"; |
|
| 1216 | - if ($type == 'jour') { |
|
| 1217 | - $boucle->where[] = [ |
|
| 1218 | - "'='", |
|
| 1219 | - "'DATE_FORMAT($date, \'%Y%m%d\')'", |
|
| 1220 | - ("sql_quote($annee . $mois . $jour$quote_end)") |
|
| 1221 | - ]; |
|
| 1222 | - } elseif ($type == 'mois') { |
|
| 1223 | - $boucle->where[] = [ |
|
| 1224 | - "'='", |
|
| 1225 | - "'DATE_FORMAT($date, \'%Y%m\')'", |
|
| 1226 | - ("sql_quote($annee . $mois$quote_end)") |
|
| 1227 | - ]; |
|
| 1228 | - } elseif ($type == 'semaine') { |
|
| 1229 | - $boucle->where[] = [ |
|
| 1230 | - "'AND'", |
|
| 1231 | - [ |
|
| 1232 | - "'>='", |
|
| 1233 | - "'DATE_FORMAT($date, \'%Y%m%d\')'", |
|
| 1234 | - ("date_debut_semaine($annee, $mois, $jour)") |
|
| 1235 | - ], |
|
| 1236 | - [ |
|
| 1237 | - "'<='", |
|
| 1238 | - "'DATE_FORMAT($date, \'%Y%m%d\')'", |
|
| 1239 | - ("date_fin_semaine($annee, $mois, $jour)") |
|
| 1240 | - ] |
|
| 1241 | - ]; |
|
| 1242 | - } elseif ((is_countable($crit->param) ? count($crit->param) : 0) > 2) { |
|
| 1243 | - $boucle->where[] = [ |
|
| 1244 | - "'AND'", |
|
| 1245 | - [ |
|
| 1246 | - "'>='", |
|
| 1247 | - "'DATE_FORMAT($date, \'%Y%m%d\')'", |
|
| 1248 | - ("sql_quote($annee . $mois . $jour$quote_end)") |
|
| 1249 | - ], |
|
| 1250 | - ["'<='", "'DATE_FORMAT($date, \'%Y%m%d\')'", ("sql_quote($annee2 . $mois2 . $jour2$quote_end)")] |
|
| 1251 | - ]; |
|
| 1252 | - } |
|
| 1253 | - // sinon on prend tout |
|
| 1148 | + $params = $crit->param; |
|
| 1149 | + |
|
| 1150 | + if ((is_countable($params) ? count($params) : 0) < 1) { |
|
| 1151 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ?']]; |
|
| 1152 | + } |
|
| 1153 | + |
|
| 1154 | + $boucle = &$boucles[$idb]; |
|
| 1155 | + $parent = $boucle->id_parent; |
|
| 1156 | + $fields = $boucle->show['field']; |
|
| 1157 | + |
|
| 1158 | + $date = array_shift($params); |
|
| 1159 | + $type = array_shift($params); |
|
| 1160 | + |
|
| 1161 | + // la valeur $type doit etre connue a la compilation |
|
| 1162 | + // donc etre forcement reduite a un litteral unique dans le source |
|
| 1163 | + $type = is_object($type[0]) ? $type[0]->texte : null; |
|
| 1164 | + |
|
| 1165 | + // La valeur date doit designer un champ de la table SQL. |
|
| 1166 | + // Si c'est un litteral unique dans le source, verifier a la compil, |
|
| 1167 | + // sinon synthetiser le test de verif pour execution ulterieure |
|
| 1168 | + // On prendra arbitrairement le premier champ si test negatif. |
|
| 1169 | + if (((is_countable($date) ? count($date) : 0) == 1) and ($date[0]->type == 'texte')) { |
|
| 1170 | + $date = $date[0]->texte; |
|
| 1171 | + if (!isset($fields[$date])) { |
|
| 1172 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . $date]]; |
|
| 1173 | + } |
|
| 1174 | + } else { |
|
| 1175 | + $a = calculer_liste($date, $idb, $boucles, $parent); |
|
| 1176 | + $noms = array_keys($fields); |
|
| 1177 | + $defaut = $noms[0]; |
|
| 1178 | + $noms = join(' ', $noms); |
|
| 1179 | + # bien laisser 2 espaces avant $nom pour que strpos<>0 |
|
| 1180 | + $cond = "(\$a=strval($a))AND\nstrpos(\" $noms \",\" \$a \")"; |
|
| 1181 | + $date = "'.(($cond)\n?\$a:\"$defaut\").'"; |
|
| 1182 | + } |
|
| 1183 | + $annee = $params ? array_shift($params) : ''; |
|
| 1184 | + $annee = "\n" . 'sprintf("%04d", ($x = ' . |
|
| 1185 | + calculer_liste($annee, $idb, $boucles, $parent) . |
|
| 1186 | + ') ? $x : date("Y"))'; |
|
| 1187 | + |
|
| 1188 | + $mois = $params ? array_shift($params) : ''; |
|
| 1189 | + $mois = "\n" . 'sprintf("%02d", ($x = ' . |
|
| 1190 | + calculer_liste($mois, $idb, $boucles, $parent) . |
|
| 1191 | + ') ? $x : date("m"))'; |
|
| 1192 | + |
|
| 1193 | + $jour = $params ? array_shift($params) : ''; |
|
| 1194 | + $jour = "\n" . 'sprintf("%02d", ($x = ' . |
|
| 1195 | + calculer_liste($jour, $idb, $boucles, $parent) . |
|
| 1196 | + ') ? $x : date("d"))'; |
|
| 1197 | + |
|
| 1198 | + $annee2 = $params ? array_shift($params) : ''; |
|
| 1199 | + $annee2 = "\n" . 'sprintf("%04d", ($x = ' . |
|
| 1200 | + calculer_liste($annee2, $idb, $boucles, $parent) . |
|
| 1201 | + ') ? $x : date("Y"))'; |
|
| 1202 | + |
|
| 1203 | + $mois2 = $params ? array_shift($params) : ''; |
|
| 1204 | + $mois2 = "\n" . 'sprintf("%02d", ($x = ' . |
|
| 1205 | + calculer_liste($mois2, $idb, $boucles, $parent) . |
|
| 1206 | + ') ? $x : date("m"))'; |
|
| 1207 | + |
|
| 1208 | + $jour2 = $params ? array_shift($params) : ''; |
|
| 1209 | + $jour2 = "\n" . 'sprintf("%02d", ($x = ' . |
|
| 1210 | + calculer_liste($jour2, $idb, $boucles, $parent) . |
|
| 1211 | + ') ? $x : date("d"))'; |
|
| 1212 | + |
|
| 1213 | + $date = $boucle->id_table . ".$date"; |
|
| 1214 | + |
|
| 1215 | + $quote_end = ",'" . $boucle->sql_serveur . "','text'"; |
|
| 1216 | + if ($type == 'jour') { |
|
| 1217 | + $boucle->where[] = [ |
|
| 1218 | + "'='", |
|
| 1219 | + "'DATE_FORMAT($date, \'%Y%m%d\')'", |
|
| 1220 | + ("sql_quote($annee . $mois . $jour$quote_end)") |
|
| 1221 | + ]; |
|
| 1222 | + } elseif ($type == 'mois') { |
|
| 1223 | + $boucle->where[] = [ |
|
| 1224 | + "'='", |
|
| 1225 | + "'DATE_FORMAT($date, \'%Y%m\')'", |
|
| 1226 | + ("sql_quote($annee . $mois$quote_end)") |
|
| 1227 | + ]; |
|
| 1228 | + } elseif ($type == 'semaine') { |
|
| 1229 | + $boucle->where[] = [ |
|
| 1230 | + "'AND'", |
|
| 1231 | + [ |
|
| 1232 | + "'>='", |
|
| 1233 | + "'DATE_FORMAT($date, \'%Y%m%d\')'", |
|
| 1234 | + ("date_debut_semaine($annee, $mois, $jour)") |
|
| 1235 | + ], |
|
| 1236 | + [ |
|
| 1237 | + "'<='", |
|
| 1238 | + "'DATE_FORMAT($date, \'%Y%m%d\')'", |
|
| 1239 | + ("date_fin_semaine($annee, $mois, $jour)") |
|
| 1240 | + ] |
|
| 1241 | + ]; |
|
| 1242 | + } elseif ((is_countable($crit->param) ? count($crit->param) : 0) > 2) { |
|
| 1243 | + $boucle->where[] = [ |
|
| 1244 | + "'AND'", |
|
| 1245 | + [ |
|
| 1246 | + "'>='", |
|
| 1247 | + "'DATE_FORMAT($date, \'%Y%m%d\')'", |
|
| 1248 | + ("sql_quote($annee . $mois . $jour$quote_end)") |
|
| 1249 | + ], |
|
| 1250 | + ["'<='", "'DATE_FORMAT($date, \'%Y%m%d\')'", ("sql_quote($annee2 . $mois2 . $jour2$quote_end)")] |
|
| 1251 | + ]; |
|
| 1252 | + } |
|
| 1253 | + // sinon on prend tout |
|
| 1254 | 1254 | } |
| 1255 | 1255 | |
| 1256 | 1256 | |
@@ -1275,33 +1275,33 @@ discard block |
||
| 1275 | 1275 | * @return void |
| 1276 | 1276 | **/ |
| 1277 | 1277 | function calculer_critere_parties($idb, &$boucles, $crit) { |
| 1278 | - $boucle = &$boucles[$idb]; |
|
| 1279 | - $a1 = $crit->param[0]; |
|
| 1280 | - $a2 = $crit->param[1]; |
|
| 1281 | - $op = $crit->op; |
|
| 1282 | - |
|
| 1283 | - [$a11, $a12] = calculer_critere_parties_aux($idb, $boucles, $a1); |
|
| 1284 | - [$a21, $a22] = calculer_critere_parties_aux($idb, $boucles, $a2); |
|
| 1285 | - |
|
| 1286 | - if (($op == ',') && (is_numeric($a11) && (is_numeric($a21)))) { |
|
| 1287 | - $boucle->limit = $a11 . ',' . $a21; |
|
| 1288 | - } else { |
|
| 1289 | - // 3 dans {1/3}, {2,3} ou {1,n-3} |
|
| 1290 | - $boucle->total_parties = ($a21 != 'n') ? $a21 : $a22; |
|
| 1291 | - // 2 dans {2/3}, {2,5}, {n-2,1} |
|
| 1292 | - $partie = ($a11 != 'n') ? $a11 : $a12; |
|
| 1293 | - $mode = (($op == '/') ? '/' : |
|
| 1294 | - (($a11 == 'n') ? '-' : '+') . (($a21 == 'n') ? '-' : '+')); |
|
| 1295 | - // cas simple {0,#ENV{truc}} compilons le en LIMIT : |
|
| 1296 | - if ($a11 !== 'n' and $a21 !== 'n' and $mode == '++' and $op == ',') { |
|
| 1297 | - $boucle->limit = |
|
| 1298 | - (is_numeric($a11) ? "'$a11'" : $a11) |
|
| 1299 | - . ".','." |
|
| 1300 | - . (is_numeric($a21) ? "'$a21'" : $a21); |
|
| 1301 | - } else { |
|
| 1302 | - calculer_parties($boucles, $idb, $partie, $mode); |
|
| 1303 | - } |
|
| 1304 | - } |
|
| 1278 | + $boucle = &$boucles[$idb]; |
|
| 1279 | + $a1 = $crit->param[0]; |
|
| 1280 | + $a2 = $crit->param[1]; |
|
| 1281 | + $op = $crit->op; |
|
| 1282 | + |
|
| 1283 | + [$a11, $a12] = calculer_critere_parties_aux($idb, $boucles, $a1); |
|
| 1284 | + [$a21, $a22] = calculer_critere_parties_aux($idb, $boucles, $a2); |
|
| 1285 | + |
|
| 1286 | + if (($op == ',') && (is_numeric($a11) && (is_numeric($a21)))) { |
|
| 1287 | + $boucle->limit = $a11 . ',' . $a21; |
|
| 1288 | + } else { |
|
| 1289 | + // 3 dans {1/3}, {2,3} ou {1,n-3} |
|
| 1290 | + $boucle->total_parties = ($a21 != 'n') ? $a21 : $a22; |
|
| 1291 | + // 2 dans {2/3}, {2,5}, {n-2,1} |
|
| 1292 | + $partie = ($a11 != 'n') ? $a11 : $a12; |
|
| 1293 | + $mode = (($op == '/') ? '/' : |
|
| 1294 | + (($a11 == 'n') ? '-' : '+') . (($a21 == 'n') ? '-' : '+')); |
|
| 1295 | + // cas simple {0,#ENV{truc}} compilons le en LIMIT : |
|
| 1296 | + if ($a11 !== 'n' and $a21 !== 'n' and $mode == '++' and $op == ',') { |
|
| 1297 | + $boucle->limit = |
|
| 1298 | + (is_numeric($a11) ? "'$a11'" : $a11) |
|
| 1299 | + . ".','." |
|
| 1300 | + . (is_numeric($a21) ? "'$a21'" : $a21); |
|
| 1301 | + } else { |
|
| 1302 | + calculer_parties($boucles, $idb, $partie, $mode); |
|
| 1303 | + } |
|
| 1304 | + } |
|
| 1305 | 1305 | } |
| 1306 | 1306 | |
| 1307 | 1307 | /** |
@@ -1329,63 +1329,63 @@ discard block |
||
| 1329 | 1329 | * @return void |
| 1330 | 1330 | **/ |
| 1331 | 1331 | function calculer_parties(&$boucles, $id_boucle, $debut, $mode) { |
| 1332 | - $total_parties = $boucles[$id_boucle]->total_parties; |
|
| 1333 | - |
|
| 1334 | - preg_match(',([+-/p])([+-/])?,', $mode, $regs); |
|
| 1335 | - [, $op1, $op2] = array_pad($regs, 3, null); |
|
| 1336 | - $nombre_boucle = "\$Numrows['$id_boucle']['total']"; |
|
| 1337 | - // {1/3} |
|
| 1338 | - if ($op1 == '/') { |
|
| 1339 | - $pmoins1 = is_numeric($debut) ? ($debut - 1) : "($debut-1)"; |
|
| 1340 | - $totpos = is_numeric($total_parties) ? ($total_parties) : |
|
| 1341 | - "($total_parties ? $total_parties : 1)"; |
|
| 1342 | - $fin = "ceil(($nombre_boucle * $debut )/$totpos) - 1"; |
|
| 1343 | - $debut = !$pmoins1 ? 0 : "ceil(($nombre_boucle * $pmoins1)/$totpos);"; |
|
| 1344 | - } else { |
|
| 1345 | - // cas {n-1,x} |
|
| 1346 | - if ($op1 == '-') { |
|
| 1347 | - $debut = "$nombre_boucle - $debut;"; |
|
| 1348 | - } |
|
| 1349 | - |
|
| 1350 | - // cas {x,n-1} |
|
| 1351 | - if ($op2 == '-') { |
|
| 1352 | - $fin = '$debut_boucle + ' . $nombre_boucle . ' - ' |
|
| 1353 | - . (is_numeric($total_parties) ? ($total_parties + 1) : |
|
| 1354 | - ($total_parties . ' - 1')); |
|
| 1355 | - } else { |
|
| 1356 | - // {x,1} ou {pagination} |
|
| 1357 | - $fin = '$debut_boucle' |
|
| 1358 | - . (is_numeric($total_parties) ? |
|
| 1359 | - (($total_parties == 1) ? '' : (' + ' . ($total_parties - 1))) : |
|
| 1360 | - ('+' . $total_parties . ' - 1')); |
|
| 1361 | - } |
|
| 1362 | - |
|
| 1363 | - // {pagination}, gerer le debut_xx=-1 pour tout voir |
|
| 1364 | - if ($op1 == 'p') { |
|
| 1365 | - $debut .= ";\n \$debut_boucle = ((\$tout=(\$debut_boucle == -1))?0:(\$debut_boucle))"; |
|
| 1366 | - $debut .= ";\n \$debut_boucle = max(0,min(\$debut_boucle,floor(($nombre_boucle-1)/($total_parties))*($total_parties)))"; |
|
| 1367 | - $fin = "(\$tout ? $nombre_boucle : $fin)"; |
|
| 1368 | - } |
|
| 1369 | - } |
|
| 1370 | - |
|
| 1371 | - // Notes : |
|
| 1372 | - // $debut_boucle et $fin_boucle sont les indices SQL du premier |
|
| 1373 | - // et du dernier demandes dans la boucle : 0 pour le premier, |
|
| 1374 | - // n-1 pour le dernier ; donc total_boucle = 1 + debut - fin |
|
| 1375 | - // Utiliser min pour rabattre $fin_boucle sur total_boucle. |
|
| 1376 | - |
|
| 1377 | - $boucles[$id_boucle]->mode_partie = "\n\t" |
|
| 1378 | - . '$debut_boucle = ' . $debut . ";\n " |
|
| 1379 | - . "\$debut_boucle = intval(\$debut_boucle);\n " |
|
| 1380 | - . '$fin_boucle = min(' . $fin . ", \$Numrows['$id_boucle']['total'] - 1);\n " |
|
| 1381 | - . '$Numrows[\'' . $id_boucle . "']['grand_total'] = \$Numrows['$id_boucle']['total'];\n " |
|
| 1382 | - . '$Numrows[\'' . $id_boucle . '\']["total"] = max(0,$fin_boucle - $debut_boucle + 1);' |
|
| 1383 | - . "\n\tif (\$debut_boucle>0" |
|
| 1384 | - . " AND \$debut_boucle < \$Numrows['$id_boucle']['grand_total']" |
|
| 1385 | - . " AND \$iter->seek(\$debut_boucle,'continue'))" |
|
| 1386 | - . "\n\t\t\$Numrows['$id_boucle']['compteur_boucle'] = \$debut_boucle;\n\t"; |
|
| 1387 | - |
|
| 1388 | - $boucles[$id_boucle]->partie = " |
|
| 1332 | + $total_parties = $boucles[$id_boucle]->total_parties; |
|
| 1333 | + |
|
| 1334 | + preg_match(',([+-/p])([+-/])?,', $mode, $regs); |
|
| 1335 | + [, $op1, $op2] = array_pad($regs, 3, null); |
|
| 1336 | + $nombre_boucle = "\$Numrows['$id_boucle']['total']"; |
|
| 1337 | + // {1/3} |
|
| 1338 | + if ($op1 == '/') { |
|
| 1339 | + $pmoins1 = is_numeric($debut) ? ($debut - 1) : "($debut-1)"; |
|
| 1340 | + $totpos = is_numeric($total_parties) ? ($total_parties) : |
|
| 1341 | + "($total_parties ? $total_parties : 1)"; |
|
| 1342 | + $fin = "ceil(($nombre_boucle * $debut )/$totpos) - 1"; |
|
| 1343 | + $debut = !$pmoins1 ? 0 : "ceil(($nombre_boucle * $pmoins1)/$totpos);"; |
|
| 1344 | + } else { |
|
| 1345 | + // cas {n-1,x} |
|
| 1346 | + if ($op1 == '-') { |
|
| 1347 | + $debut = "$nombre_boucle - $debut;"; |
|
| 1348 | + } |
|
| 1349 | + |
|
| 1350 | + // cas {x,n-1} |
|
| 1351 | + if ($op2 == '-') { |
|
| 1352 | + $fin = '$debut_boucle + ' . $nombre_boucle . ' - ' |
|
| 1353 | + . (is_numeric($total_parties) ? ($total_parties + 1) : |
|
| 1354 | + ($total_parties . ' - 1')); |
|
| 1355 | + } else { |
|
| 1356 | + // {x,1} ou {pagination} |
|
| 1357 | + $fin = '$debut_boucle' |
|
| 1358 | + . (is_numeric($total_parties) ? |
|
| 1359 | + (($total_parties == 1) ? '' : (' + ' . ($total_parties - 1))) : |
|
| 1360 | + ('+' . $total_parties . ' - 1')); |
|
| 1361 | + } |
|
| 1362 | + |
|
| 1363 | + // {pagination}, gerer le debut_xx=-1 pour tout voir |
|
| 1364 | + if ($op1 == 'p') { |
|
| 1365 | + $debut .= ";\n \$debut_boucle = ((\$tout=(\$debut_boucle == -1))?0:(\$debut_boucle))"; |
|
| 1366 | + $debut .= ";\n \$debut_boucle = max(0,min(\$debut_boucle,floor(($nombre_boucle-1)/($total_parties))*($total_parties)))"; |
|
| 1367 | + $fin = "(\$tout ? $nombre_boucle : $fin)"; |
|
| 1368 | + } |
|
| 1369 | + } |
|
| 1370 | + |
|
| 1371 | + // Notes : |
|
| 1372 | + // $debut_boucle et $fin_boucle sont les indices SQL du premier |
|
| 1373 | + // et du dernier demandes dans la boucle : 0 pour le premier, |
|
| 1374 | + // n-1 pour le dernier ; donc total_boucle = 1 + debut - fin |
|
| 1375 | + // Utiliser min pour rabattre $fin_boucle sur total_boucle. |
|
| 1376 | + |
|
| 1377 | + $boucles[$id_boucle]->mode_partie = "\n\t" |
|
| 1378 | + . '$debut_boucle = ' . $debut . ";\n " |
|
| 1379 | + . "\$debut_boucle = intval(\$debut_boucle);\n " |
|
| 1380 | + . '$fin_boucle = min(' . $fin . ", \$Numrows['$id_boucle']['total'] - 1);\n " |
|
| 1381 | + . '$Numrows[\'' . $id_boucle . "']['grand_total'] = \$Numrows['$id_boucle']['total'];\n " |
|
| 1382 | + . '$Numrows[\'' . $id_boucle . '\']["total"] = max(0,$fin_boucle - $debut_boucle + 1);' |
|
| 1383 | + . "\n\tif (\$debut_boucle>0" |
|
| 1384 | + . " AND \$debut_boucle < \$Numrows['$id_boucle']['grand_total']" |
|
| 1385 | + . " AND \$iter->seek(\$debut_boucle,'continue'))" |
|
| 1386 | + . "\n\t\t\$Numrows['$id_boucle']['compteur_boucle'] = \$debut_boucle;\n\t"; |
|
| 1387 | + |
|
| 1388 | + $boucles[$id_boucle]->partie = " |
|
| 1389 | 1389 | if (\$Numrows['$id_boucle']['compteur_boucle'] <= \$debut_boucle) continue; |
| 1390 | 1390 | if (\$Numrows['$id_boucle']['compteur_boucle']-1 > \$fin_boucle) break;"; |
| 1391 | 1391 | } |
@@ -1402,26 +1402,26 @@ discard block |
||
| 1402 | 1402 | * @return array Valeur de l'élément (peut être une expression PHP), Nombre soustrait |
| 1403 | 1403 | **/ |
| 1404 | 1404 | function calculer_critere_parties_aux($idb, &$boucles, $param) { |
| 1405 | - if ($param[0]->type != 'texte') { |
|
| 1406 | - $a1 = calculer_liste([$param[0]], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 1407 | - if (isset($param[1]->texte)) { |
|
| 1408 | - preg_match(',^\s*(-([0-9]+))?\s*$,', $param[1]->texte, $m); |
|
| 1409 | - |
|
| 1410 | - return ["intval($a1)", ((isset($m[2]) and $m[2]) ? $m[2] : 0)]; |
|
| 1411 | - } else { |
|
| 1412 | - return ["intval($a1)", 0]; |
|
| 1413 | - } |
|
| 1414 | - } else { |
|
| 1415 | - preg_match(',^\s*(([0-9]+)|n)\s*(-\s*([0-9]+)?\s*)?$,', $param[0]->texte, $m); |
|
| 1416 | - $a1 = $m[1]; |
|
| 1417 | - if (empty($m[3])) { |
|
| 1418 | - return [$a1, 0]; |
|
| 1419 | - } elseif (!empty($m[4])) { |
|
| 1420 | - return [$a1, $m[4]]; |
|
| 1421 | - } else { |
|
| 1422 | - return [$a1, calculer_liste([$param[1]], $idb, $boucles, $boucles[$idb]->id_parent)]; |
|
| 1423 | - } |
|
| 1424 | - } |
|
| 1405 | + if ($param[0]->type != 'texte') { |
|
| 1406 | + $a1 = calculer_liste([$param[0]], $idb, $boucles, $boucles[$idb]->id_parent); |
|
| 1407 | + if (isset($param[1]->texte)) { |
|
| 1408 | + preg_match(',^\s*(-([0-9]+))?\s*$,', $param[1]->texte, $m); |
|
| 1409 | + |
|
| 1410 | + return ["intval($a1)", ((isset($m[2]) and $m[2]) ? $m[2] : 0)]; |
|
| 1411 | + } else { |
|
| 1412 | + return ["intval($a1)", 0]; |
|
| 1413 | + } |
|
| 1414 | + } else { |
|
| 1415 | + preg_match(',^\s*(([0-9]+)|n)\s*(-\s*([0-9]+)?\s*)?$,', $param[0]->texte, $m); |
|
| 1416 | + $a1 = $m[1]; |
|
| 1417 | + if (empty($m[3])) { |
|
| 1418 | + return [$a1, 0]; |
|
| 1419 | + } elseif (!empty($m[4])) { |
|
| 1420 | + return [$a1, $m[4]]; |
|
| 1421 | + } else { |
|
| 1422 | + return [$a1, calculer_liste([$param[1]], $idb, $boucles, $boucles[$idb]->id_parent)]; |
|
| 1423 | + } |
|
| 1424 | + } |
|
| 1425 | 1425 | } |
| 1426 | 1426 | |
| 1427 | 1427 | |
@@ -1448,47 +1448,47 @@ discard block |
||
| 1448 | 1448 | * array : Erreur sur un des critères |
| 1449 | 1449 | **/ |
| 1450 | 1450 | function calculer_criteres($idb, &$boucles) { |
| 1451 | - $msg = ''; |
|
| 1452 | - $boucle = $boucles[$idb]; |
|
| 1453 | - $table = strtoupper($boucle->type_requete); |
|
| 1454 | - $serveur = strtolower($boucle->sql_serveur); |
|
| 1455 | - |
|
| 1456 | - $defaut = charger_fonction('DEFAUT', 'calculer_critere'); |
|
| 1457 | - // s'il y avait une erreur de syntaxe, propager cette info |
|
| 1458 | - if (!is_array($boucle->criteres)) { |
|
| 1459 | - return []; |
|
| 1460 | - } |
|
| 1461 | - |
|
| 1462 | - foreach ($boucle->criteres as $crit) { |
|
| 1463 | - $critere = $crit->op; |
|
| 1464 | - // critere personnalise ? |
|
| 1465 | - if ( |
|
| 1466 | - (!$serveur or |
|
| 1467 | - ((!function_exists($f = 'critere_' . $serveur . '_' . $table . '_' . $critere)) |
|
| 1468 | - and (!function_exists($f = $f . '_dist')) |
|
| 1469 | - and (!function_exists($f = 'critere_' . $serveur . '_' . $critere)) |
|
| 1470 | - and (!function_exists($f = $f . '_dist')) |
|
| 1471 | - ) |
|
| 1472 | - ) |
|
| 1473 | - and (!function_exists($f = 'critere_' . $table . '_' . $critere)) |
|
| 1474 | - and (!function_exists($f = $f . '_dist')) |
|
| 1475 | - and (!function_exists($f = 'critere_' . $critere)) |
|
| 1476 | - and (!function_exists($f = $f . '_dist')) |
|
| 1477 | - ) { |
|
| 1478 | - // fonction critere standard |
|
| 1479 | - $f = $defaut; |
|
| 1480 | - } |
|
| 1481 | - // compile le critere |
|
| 1482 | - $res = $f($idb, $boucles, $crit); |
|
| 1483 | - |
|
| 1484 | - // Gestion centralisee des erreurs pour pouvoir propager |
|
| 1485 | - if (is_array($res)) { |
|
| 1486 | - $msg = $res; |
|
| 1487 | - erreur_squelette($msg, $boucle); |
|
| 1488 | - } |
|
| 1489 | - } |
|
| 1490 | - |
|
| 1491 | - return $msg; |
|
| 1451 | + $msg = ''; |
|
| 1452 | + $boucle = $boucles[$idb]; |
|
| 1453 | + $table = strtoupper($boucle->type_requete); |
|
| 1454 | + $serveur = strtolower($boucle->sql_serveur); |
|
| 1455 | + |
|
| 1456 | + $defaut = charger_fonction('DEFAUT', 'calculer_critere'); |
|
| 1457 | + // s'il y avait une erreur de syntaxe, propager cette info |
|
| 1458 | + if (!is_array($boucle->criteres)) { |
|
| 1459 | + return []; |
|
| 1460 | + } |
|
| 1461 | + |
|
| 1462 | + foreach ($boucle->criteres as $crit) { |
|
| 1463 | + $critere = $crit->op; |
|
| 1464 | + // critere personnalise ? |
|
| 1465 | + if ( |
|
| 1466 | + (!$serveur or |
|
| 1467 | + ((!function_exists($f = 'critere_' . $serveur . '_' . $table . '_' . $critere)) |
|
| 1468 | + and (!function_exists($f = $f . '_dist')) |
|
| 1469 | + and (!function_exists($f = 'critere_' . $serveur . '_' . $critere)) |
|
| 1470 | + and (!function_exists($f = $f . '_dist')) |
|
| 1471 | + ) |
|
| 1472 | + ) |
|
| 1473 | + and (!function_exists($f = 'critere_' . $table . '_' . $critere)) |
|
| 1474 | + and (!function_exists($f = $f . '_dist')) |
|
| 1475 | + and (!function_exists($f = 'critere_' . $critere)) |
|
| 1476 | + and (!function_exists($f = $f . '_dist')) |
|
| 1477 | + ) { |
|
| 1478 | + // fonction critere standard |
|
| 1479 | + $f = $defaut; |
|
| 1480 | + } |
|
| 1481 | + // compile le critere |
|
| 1482 | + $res = $f($idb, $boucles, $crit); |
|
| 1483 | + |
|
| 1484 | + // Gestion centralisee des erreurs pour pouvoir propager |
|
| 1485 | + if (is_array($res)) { |
|
| 1486 | + $msg = $res; |
|
| 1487 | + erreur_squelette($msg, $boucle); |
|
| 1488 | + } |
|
| 1489 | + } |
|
| 1490 | + |
|
| 1491 | + return $msg; |
|
| 1492 | 1492 | } |
| 1493 | 1493 | |
| 1494 | 1494 | /** |
@@ -1503,11 +1503,11 @@ discard block |
||
| 1503 | 1503 | * @return string Code compilé rééchappé |
| 1504 | 1504 | */ |
| 1505 | 1505 | function kwote($lisp, $serveur = '', $type = '') { |
| 1506 | - if (preg_match(_CODE_QUOTE, $lisp, $r)) { |
|
| 1507 | - return $r[1] . '"' . sql_quote(str_replace(["\\'", '\\\\'], ["'", '\\'], $r[2]), $serveur, $type) . '"'; |
|
| 1508 | - } else { |
|
| 1509 | - return "sql_quote($lisp, '$serveur', '" . str_replace("'", "\\'", $type) . "')"; |
|
| 1510 | - } |
|
| 1506 | + if (preg_match(_CODE_QUOTE, $lisp, $r)) { |
|
| 1507 | + return $r[1] . '"' . sql_quote(str_replace(["\\'", '\\\\'], ["'", '\\'], $r[2]), $serveur, $type) . '"'; |
|
| 1508 | + } else { |
|
| 1509 | + return "sql_quote($lisp, '$serveur', '" . str_replace("'", "\\'", $type) . "')"; |
|
| 1510 | + } |
|
| 1511 | 1511 | } |
| 1512 | 1512 | |
| 1513 | 1513 | |
@@ -1526,81 +1526,81 @@ discard block |
||
| 1526 | 1526 | * @return void|array |
| 1527 | 1527 | **/ |
| 1528 | 1528 | function critere_IN_dist($idb, &$boucles, $crit) { |
| 1529 | - $r = calculer_critere_infixe($idb, $boucles, $crit); |
|
| 1530 | - if (!$r) { |
|
| 1531 | - return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ?']]; |
|
| 1532 | - } |
|
| 1533 | - [$arg, $op, $val, $col, $where_complement] = $r; |
|
| 1534 | - |
|
| 1535 | - $in = critere_IN_cas($idb, $boucles, $crit->not ? 'NOT' : ($crit->exclus ? 'exclus' : ''), $arg, $op, $val, $col); |
|
| 1536 | - |
|
| 1537 | - // inserer la condition; exemple: {id_mot ?IN (66, 62, 64)} |
|
| 1538 | - $where = $in; |
|
| 1539 | - if ($crit->cond) { |
|
| 1540 | - $pred = calculer_argument_precedent($idb, $col, $boucles); |
|
| 1541 | - $where = ["'?'", $pred, $where, "''"]; |
|
| 1542 | - if ($where_complement) { // condition annexe du type "AND (objet='article')" |
|
| 1543 | - $where_complement = ["'?'", $pred, $where_complement, "''"]; |
|
| 1544 | - } |
|
| 1545 | - } |
|
| 1546 | - if ($crit->exclus) { |
|
| 1547 | - if (!preg_match(',^L[0-9]+[.],', $arg)) { |
|
| 1548 | - $where = ["'NOT'", $where]; |
|
| 1549 | - } else // un not sur un critere de jointure se traduit comme un NOT IN avec une sous requete |
|
| 1550 | - // c'est une sous requete identique a la requete principale sous la forme (SELF,$select,$where) avec $select et $where qui surchargent |
|
| 1551 | - { |
|
| 1552 | - $where = [ |
|
| 1553 | - "'NOT'", |
|
| 1554 | - [ |
|
| 1555 | - "'IN'", |
|
| 1556 | - "'" . $boucles[$idb]->id_table . '.' . $boucles[$idb]->primary . "'", |
|
| 1557 | - ["'SELF'", "'" . $boucles[$idb]->id_table . '.' . $boucles[$idb]->primary . "'", $where] |
|
| 1558 | - ] |
|
| 1559 | - ]; |
|
| 1560 | - } |
|
| 1561 | - } |
|
| 1562 | - |
|
| 1563 | - $boucles[$idb]->where[] = $where; |
|
| 1564 | - if ($where_complement) { // condition annexe du type "AND (objet='article')" |
|
| 1565 | - $boucles[$idb]->where[] = $where_complement; |
|
| 1566 | - } |
|
| 1529 | + $r = calculer_critere_infixe($idb, $boucles, $crit); |
|
| 1530 | + if (!$r) { |
|
| 1531 | + return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ?']]; |
|
| 1532 | + } |
|
| 1533 | + [$arg, $op, $val, $col, $where_complement] = $r; |
|
| 1534 | + |
|
| 1535 | + $in = critere_IN_cas($idb, $boucles, $crit->not ? 'NOT' : ($crit->exclus ? 'exclus' : ''), $arg, $op, $val, $col); |
|
| 1536 | + |
|
| 1537 | + // inserer la condition; exemple: {id_mot ?IN (66, 62, 64)} |
|
| 1538 | + $where = $in; |
|
| 1539 | + if ($crit->cond) { |
|
| 1540 | + $pred = calculer_argument_precedent($idb, $col, $boucles); |
|
| 1541 | + $where = ["'?'", $pred, $where, "''"]; |
|
| 1542 | + if ($where_complement) { // condition annexe du type "AND (objet='article')" |
|
| 1543 | + $where_complement = ["'?'", $pred, $where_complement, "''"]; |
|
| 1544 | + } |
|
| 1545 | + } |
|
| 1546 | + if ($crit->exclus) { |
|
| 1547 | + if (!preg_match(',^L[0-9]+[.],', $arg)) { |
|
| 1548 | + $where = ["'NOT'", $where]; |
|
| 1549 | + } else // un not sur un critere de jointure se traduit comme un NOT IN avec une sous requete |
|
| 1550 | + // c'est une sous requete identique a la requete principale sous la forme (SELF,$select,$where) avec $select et $where qui surchargent |
|
| 1551 | + { |
|
| 1552 | + $where = [ |
|
| 1553 | + "'NOT'", |
|
| 1554 | + [ |
|
| 1555 | + "'IN'", |
|
| 1556 | + "'" . $boucles[$idb]->id_table . '.' . $boucles[$idb]->primary . "'", |
|
| 1557 | + ["'SELF'", "'" . $boucles[$idb]->id_table . '.' . $boucles[$idb]->primary . "'", $where] |
|
| 1558 | + ] |
|
| 1559 | + ]; |
|
| 1560 | + } |
|
| 1561 | + } |
|
| 1562 | + |
|
| 1563 | + $boucles[$idb]->where[] = $where; |
|
| 1564 | + if ($where_complement) { // condition annexe du type "AND (objet='article')" |
|
| 1565 | + $boucles[$idb]->where[] = $where_complement; |
|
| 1566 | + } |
|
| 1567 | 1567 | } |
| 1568 | 1568 | |
| 1569 | 1569 | function critere_IN_cas($idb, &$boucles, $crit2, $arg, $op, $val, $col) { |
| 1570 | - static $num = []; |
|
| 1571 | - $descr = $boucles[$idb]->descr; |
|
| 1572 | - $cpt = &$num[$descr['nom']][$descr['gram']][$idb]; |
|
| 1573 | - |
|
| 1574 | - $var = '$in' . $cpt++; |
|
| 1575 | - $x = "\n\t$var = array();"; |
|
| 1576 | - foreach ($val as $k => $v) { |
|
| 1577 | - if (preg_match(",^(\n//.*\n)?'(.*)'$,", $v, $r)) { |
|
| 1578 | - // optimiser le traitement des constantes |
|
| 1579 | - if (is_numeric($r[2])) { |
|
| 1580 | - $x .= "\n\t$var" . "[]= $r[2];"; |
|
| 1581 | - } else { |
|
| 1582 | - $x .= "\n\t$var" . '[]= ' . sql_quote($r[2]) . ';'; |
|
| 1583 | - } |
|
| 1584 | - } else { |
|
| 1585 | - // Pour permettre de passer des tableaux de valeurs |
|
| 1586 | - // on repere l'utilisation brute de #ENV**{X}, |
|
| 1587 | - // c'est-a-dire sa traduction en ($PILE[0][X]). |
|
| 1588 | - // et on deballe mais en rajoutant l'anti XSS |
|
| 1589 | - $x .= "\n\tif (!(is_array(\$a = ($v))))\n\t\t$var" . "[]= \$a;\n\telse $var = array_merge($var, \$a);"; |
|
| 1590 | - } |
|
| 1591 | - } |
|
| 1592 | - |
|
| 1593 | - $boucles[$idb]->in .= $x; |
|
| 1594 | - |
|
| 1595 | - // inserer le tri par defaut selon les ordres du IN ... |
|
| 1596 | - // avec une ecriture de type FIELD qui degrade les performances (du meme ordre qu'un regexp) |
|
| 1597 | - // et que l'on limite donc strictement aux cas necessaires : |
|
| 1598 | - // si ce n'est pas un !IN, et si il n'y a pas d'autre order dans la boucle |
|
| 1599 | - if (!$crit2) { |
|
| 1600 | - $boucles[$idb]->default_order[] = "((!\$zqv=sql_quote($var) OR \$zqv===\"''\") ? 0 : ('FIELD($arg,' . \$zqv . ')'))"; |
|
| 1601 | - } |
|
| 1602 | - |
|
| 1603 | - return "sql_in('$arg', $var" . ($crit2 == 'NOT' ? ",'NOT'" : '') . ')'; |
|
| 1570 | + static $num = []; |
|
| 1571 | + $descr = $boucles[$idb]->descr; |
|
| 1572 | + $cpt = &$num[$descr['nom']][$descr['gram']][$idb]; |
|
| 1573 | + |
|
| 1574 | + $var = '$in' . $cpt++; |
|
| 1575 | + $x = "\n\t$var = array();"; |
|
| 1576 | + foreach ($val as $k => $v) { |
|
| 1577 | + if (preg_match(",^(\n//.*\n)?'(.*)'$,", $v, $r)) { |
|
| 1578 | + // optimiser le traitement des constantes |
|
| 1579 | + if (is_numeric($r[2])) { |
|
| 1580 | + $x .= "\n\t$var" . "[]= $r[2];"; |
|
| 1581 | + } else { |
|
| 1582 | + $x .= "\n\t$var" . '[]= ' . sql_quote($r[2]) . ';'; |
|
| 1583 | + } |
|
| 1584 | + } else { |
|
| 1585 | + // Pour permettre de passer des tableaux de valeurs |
|
| 1586 | + // on repere l'utilisation brute de #ENV**{X}, |
|
| 1587 | + // c'est-a-dire sa traduction en ($PILE[0][X]). |
|
| 1588 | + // et on deballe mais en rajoutant l'anti XSS |
|
| 1589 | + $x .= "\n\tif (!(is_array(\$a = ($v))))\n\t\t$var" . "[]= \$a;\n\telse $var = array_merge($var, \$a);"; |
|
| 1590 | + } |
|
| 1591 | + } |
|
| 1592 | + |
|
| 1593 | + $boucles[$idb]->in .= $x; |
|
| 1594 | + |
|
| 1595 | + // inserer le tri par defaut selon les ordres du IN ... |
|
| 1596 | + // avec une ecriture de type FIELD qui degrade les performances (du meme ordre qu'un regexp) |
|
| 1597 | + // et que l'on limite donc strictement aux cas necessaires : |
|
| 1598 | + // si ce n'est pas un !IN, et si il n'y a pas d'autre order dans la boucle |
|
| 1599 | + if (!$crit2) { |
|
| 1600 | + $boucles[$idb]->default_order[] = "((!\$zqv=sql_quote($var) OR \$zqv===\"''\") ? 0 : ('FIELD($arg,' . \$zqv . ')'))"; |
|
| 1601 | + } |
|
| 1602 | + |
|
| 1603 | + return "sql_in('$arg', $var" . ($crit2 == 'NOT' ? ",'NOT'" : '') . ')'; |
|
| 1604 | 1604 | } |
| 1605 | 1605 | |
| 1606 | 1606 | /** |
@@ -1616,22 +1616,22 @@ discard block |
||
| 1616 | 1616 | * @return void |
| 1617 | 1617 | */ |
| 1618 | 1618 | function critere_where_dist($idb, &$boucles, $crit) { |
| 1619 | - $boucle = &$boucles[$idb]; |
|
| 1620 | - if (isset($crit->param[0])) { |
|
| 1621 | - $_where = calculer_liste($crit->param[0], $idb, $boucles, $boucle->id_parent); |
|
| 1622 | - } else { |
|
| 1623 | - $_where = 'spip_sanitize_from_request(@$Pile[0]["where"],"where","vide")'; |
|
| 1624 | - } |
|
| 1625 | - |
|
| 1626 | - if ($crit->cond) { |
|
| 1627 | - $_where = "((\$zzw = $_where) ? \$zzw : '')"; |
|
| 1628 | - } |
|
| 1629 | - |
|
| 1630 | - if ($crit->not) { |
|
| 1631 | - $_where = "array('NOT',$_where)"; |
|
| 1632 | - } |
|
| 1633 | - |
|
| 1634 | - $boucle->where[] = $_where; |
|
| 1619 | + $boucle = &$boucles[$idb]; |
|
| 1620 | + if (isset($crit->param[0])) { |
|
| 1621 | + $_where = calculer_liste($crit->param[0], $idb, $boucles, $boucle->id_parent); |
|
| 1622 | + } else { |
|
| 1623 | + $_where = 'spip_sanitize_from_request(@$Pile[0]["where"],"where","vide")'; |
|
| 1624 | + } |
|
| 1625 | + |
|
| 1626 | + if ($crit->cond) { |
|
| 1627 | + $_where = "((\$zzw = $_where) ? \$zzw : '')"; |
|
| 1628 | + } |
|
| 1629 | + |
|
| 1630 | + if ($crit->not) { |
|
| 1631 | + $_where = "array('NOT',$_where)"; |
|
| 1632 | + } |
|
| 1633 | + |
|
| 1634 | + $boucle->where[] = $_where; |
|
| 1635 | 1635 | } |
| 1636 | 1636 | |
| 1637 | 1637 | /** |
@@ -1659,31 +1659,31 @@ discard block |
||
| 1659 | 1659 | * @return void |
| 1660 | 1660 | */ |
| 1661 | 1661 | function critere_id__dist($idb, &$boucles, $crit) { |
| 1662 | - /** @var Boucle $boucle */ |
|
| 1663 | - $boucle = $boucles[$idb]; |
|
| 1664 | - |
|
| 1665 | - $champs = lister_champs_id_conditionnel( |
|
| 1666 | - $boucle->show['table'], |
|
| 1667 | - $boucle->show, |
|
| 1668 | - $boucle->sql_serveur |
|
| 1669 | - ); |
|
| 1670 | - |
|
| 1671 | - // ne pas tenir compte des critères identiques déjà présents. |
|
| 1672 | - if (!empty($boucle->modificateur['criteres'])) { |
|
| 1673 | - $champs = array_diff($champs, array_keys($boucle->modificateur['criteres'])); |
|
| 1674 | - } |
|
| 1675 | - // nous aider en mode debug. |
|
| 1676 | - $boucle->debug[] = 'id_ : ' . implode(', ', $champs); |
|
| 1677 | - $boucle->modificateur['id_'] = $champs; |
|
| 1678 | - |
|
| 1679 | - // créer un critère {id_xxx?} de chaque champ retenu |
|
| 1680 | - foreach ($champs as $champ) { |
|
| 1681 | - $critere_id_table = new Critere(); |
|
| 1682 | - $critere_id_table->op = $champ; |
|
| 1683 | - $critere_id_table->cond = '?'; |
|
| 1684 | - $critere_id_table->ligne = $crit->ligne; |
|
| 1685 | - calculer_critere_DEFAUT_dist($idb, $boucles, $critere_id_table); |
|
| 1686 | - } |
|
| 1662 | + /** @var Boucle $boucle */ |
|
| 1663 | + $boucle = $boucles[$idb]; |
|
| 1664 | + |
|
| 1665 | + $champs = lister_champs_id_conditionnel( |
|
| 1666 | + $boucle->show['table'], |
|
| 1667 | + $boucle->show, |
|
| 1668 | + $boucle->sql_serveur |
|
| 1669 | + ); |
|
| 1670 | + |
|
| 1671 | + // ne pas tenir compte des critères identiques déjà présents. |
|
| 1672 | + if (!empty($boucle->modificateur['criteres'])) { |
|
| 1673 | + $champs = array_diff($champs, array_keys($boucle->modificateur['criteres'])); |
|
| 1674 | + } |
|
| 1675 | + // nous aider en mode debug. |
|
| 1676 | + $boucle->debug[] = 'id_ : ' . implode(', ', $champs); |
|
| 1677 | + $boucle->modificateur['id_'] = $champs; |
|
| 1678 | + |
|
| 1679 | + // créer un critère {id_xxx?} de chaque champ retenu |
|
| 1680 | + foreach ($champs as $champ) { |
|
| 1681 | + $critere_id_table = new Critere(); |
|
| 1682 | + $critere_id_table->op = $champ; |
|
| 1683 | + $critere_id_table->cond = '?'; |
|
| 1684 | + $critere_id_table->ligne = $crit->ligne; |
|
| 1685 | + calculer_critere_DEFAUT_dist($idb, $boucles, $critere_id_table); |
|
| 1686 | + } |
|
| 1687 | 1687 | } |
| 1688 | 1688 | |
| 1689 | 1689 | /** |
@@ -1703,75 +1703,75 @@ discard block |
||
| 1703 | 1703 | * @return array Liste de nom de champs (tel que id_article, id_mot, id_parent ...) |
| 1704 | 1704 | */ |
| 1705 | 1705 | function lister_champs_id_conditionnel($table, $desc = null, $serveur = '') { |
| 1706 | - // calculer la description de la table |
|
| 1707 | - if (!is_array($desc)) { |
|
| 1708 | - $desc = description_table($table, $serveur); |
|
| 1709 | - } |
|
| 1710 | - if (!$desc) { |
|
| 1711 | - return []; |
|
| 1712 | - } |
|
| 1713 | - |
|
| 1714 | - // Les champs id_xx de la table demandée |
|
| 1715 | - $champs = array_filter( |
|
| 1716 | - array_keys($desc['field']), |
|
| 1717 | - fn($champ) => strpos($champ, 'id_') === 0 or (in_array($champ, ['objet'])) |
|
| 1718 | - ); |
|
| 1719 | - |
|
| 1720 | - // Si le champ id_rubrique appartient à la liste et si id_secteur n'est pas inclus on le rajoute. |
|
| 1721 | - if ( |
|
| 1722 | - in_array('id_rubrique', $champs) |
|
| 1723 | - and !in_array('id_secteur', $champs) |
|
| 1724 | - ) { |
|
| 1725 | - $champs[] = 'id_secteur'; |
|
| 1726 | - } |
|
| 1727 | - |
|
| 1728 | - // On ne fera pas mieux pour les tables d’un autre serveur |
|
| 1729 | - if ($serveur) { |
|
| 1730 | - return $champs; |
|
| 1731 | - } |
|
| 1732 | - |
|
| 1733 | - $primary = false; |
|
| 1734 | - $associable = false; |
|
| 1735 | - include_spip('action/editer_liens'); |
|
| 1736 | - |
|
| 1737 | - if (isset($desc['type'])) { |
|
| 1738 | - $primary = id_table_objet($desc['type']); |
|
| 1739 | - $associable = objet_associable($desc['type']); |
|
| 1740 | - } |
|
| 1741 | - if (isset($desc['field']['id_objet']) and isset($desc['field']['objet'])) { |
|
| 1742 | - $associable = true; |
|
| 1743 | - } |
|
| 1744 | - |
|
| 1745 | - // liste de toutes les tables principales, sauf la notre |
|
| 1746 | - $tables = lister_tables_objets_sql(); |
|
| 1747 | - unset($tables[$table]); |
|
| 1748 | - |
|
| 1749 | - foreach ($tables as $_table => $_desc) { |
|
| 1750 | - if ( |
|
| 1751 | - $associable |
|
| 1752 | - or ($primary and in_array($primary, array_keys($_desc['field']))) |
|
| 1753 | - or objet_associable($_desc['type']) |
|
| 1754 | - ) { |
|
| 1755 | - $champs[] = id_table_objet($_table); |
|
| 1756 | - } |
|
| 1757 | - } |
|
| 1758 | - $champs = array_values(array_unique($champs)); |
|
| 1759 | - |
|
| 1760 | - // Exclusions de certains id |
|
| 1761 | - $exclusions = pipeline( |
|
| 1762 | - 'exclure_id_conditionnel', |
|
| 1763 | - [ |
|
| 1764 | - 'args' => [ |
|
| 1765 | - 'table' => $table, |
|
| 1766 | - 'id_table_objet' => $primary, |
|
| 1767 | - 'associable' => $associable, |
|
| 1768 | - ], |
|
| 1769 | - 'data' => [], |
|
| 1770 | - ] |
|
| 1771 | - ); |
|
| 1772 | - $champs = array_diff($champs, $exclusions); |
|
| 1773 | - |
|
| 1774 | - return $champs; |
|
| 1706 | + // calculer la description de la table |
|
| 1707 | + if (!is_array($desc)) { |
|
| 1708 | + $desc = description_table($table, $serveur); |
|
| 1709 | + } |
|
| 1710 | + if (!$desc) { |
|
| 1711 | + return []; |
|
| 1712 | + } |
|
| 1713 | + |
|
| 1714 | + // Les champs id_xx de la table demandée |
|
| 1715 | + $champs = array_filter( |
|
| 1716 | + array_keys($desc['field']), |
|
| 1717 | + fn($champ) => strpos($champ, 'id_') === 0 or (in_array($champ, ['objet'])) |
|
| 1718 | + ); |
|
| 1719 | + |
|
| 1720 | + // Si le champ id_rubrique appartient à la liste et si id_secteur n'est pas inclus on le rajoute. |
|
| 1721 | + if ( |
|
| 1722 | + in_array('id_rubrique', $champs) |
|
| 1723 | + and !in_array('id_secteur', $champs) |
|
| 1724 | + ) { |
|
| 1725 | + $champs[] = 'id_secteur'; |
|
| 1726 | + } |
|
| 1727 | + |
|
| 1728 | + // On ne fera pas mieux pour les tables d’un autre serveur |
|
| 1729 | + if ($serveur) { |
|
| 1730 | + return $champs; |
|
| 1731 | + } |
|
| 1732 | + |
|
| 1733 | + $primary = false; |
|
| 1734 | + $associable = false; |
|
| 1735 | + include_spip('action/editer_liens'); |
|
| 1736 | + |
|
| 1737 | + if (isset($desc['type'])) { |
|
| 1738 | + $primary = id_table_objet($desc['type']); |
|
| 1739 | + $associable = objet_associable($desc['type']); |
|
| 1740 | + } |
|
| 1741 | + if (isset($desc['field']['id_objet']) and isset($desc['field']['objet'])) { |
|
| 1742 | + $associable = true; |
|
| 1743 | + } |
|
| 1744 | + |
|
| 1745 | + // liste de toutes les tables principales, sauf la notre |
|
| 1746 | + $tables = lister_tables_objets_sql(); |
|
| 1747 | + unset($tables[$table]); |
|
| 1748 | + |
|
| 1749 | + foreach ($tables as $_table => $_desc) { |
|
| 1750 | + if ( |
|
| 1751 | + $associable |
|
| 1752 | + or ($primary and in_array($primary, array_keys($_desc['field']))) |
|
| 1753 | + or objet_associable($_desc['type']) |
|
| 1754 | + ) { |
|
| 1755 | + $champs[] = id_table_objet($_table); |
|
| 1756 | + } |
|
| 1757 | + } |
|
| 1758 | + $champs = array_values(array_unique($champs)); |
|
| 1759 | + |
|
| 1760 | + // Exclusions de certains id |
|
| 1761 | + $exclusions = pipeline( |
|
| 1762 | + 'exclure_id_conditionnel', |
|
| 1763 | + [ |
|
| 1764 | + 'args' => [ |
|
| 1765 | + 'table' => $table, |
|
| 1766 | + 'id_table_objet' => $primary, |
|
| 1767 | + 'associable' => $associable, |
|
| 1768 | + ], |
|
| 1769 | + 'data' => [], |
|
| 1770 | + ] |
|
| 1771 | + ); |
|
| 1772 | + $champs = array_diff($champs, $exclusions); |
|
| 1773 | + |
|
| 1774 | + return $champs; |
|
| 1775 | 1775 | } |
| 1776 | 1776 | |
| 1777 | 1777 | /** |
@@ -1826,28 +1826,28 @@ discard block |
||
| 1826 | 1826 | * @return void |
| 1827 | 1827 | */ |
| 1828 | 1828 | function critere_tri_dist($idb, &$boucles, $crit) { |
| 1829 | - $boucle = &$boucles[$idb]; |
|
| 1830 | - |
|
| 1831 | - // definition du champ par defaut |
|
| 1832 | - $_champ_defaut = !isset($crit->param[0][0]) ? "''" |
|
| 1833 | - : calculer_liste([$crit->param[0][0]], $idb, $boucles, $boucle->id_parent); |
|
| 1834 | - $_liste_sens_defaut = !isset($crit->param[1][0]) ? '1' |
|
| 1835 | - : calculer_liste([$crit->param[1][0]], $idb, $boucles, $boucle->id_parent); |
|
| 1836 | - $_variable = !isset($crit->param[2][0]) ? "'$idb'" |
|
| 1837 | - : calculer_liste([$crit->param[2][0]], $idb, $boucles, $boucle->id_parent); |
|
| 1838 | - |
|
| 1839 | - $_tri = "((\$t=(isset(\$Pile[0]['tri'.$_variable]))?\$Pile[0]['tri'.$_variable]:((strncmp($_variable,'session',7)==0 AND session_get('tri'.$_variable))?session_get('tri'.$_variable):$_champ_defaut))?tri_protege_champ(\$t):'')"; |
|
| 1840 | - |
|
| 1841 | - $_sens_defaut = "(is_array(\$s=$_liste_sens_defaut)?(isset(\$s[\$st=$_tri])?\$s[\$st]:reset(\$s)):\$s)"; |
|
| 1842 | - $_sens = "((intval(\$t=(isset(\$Pile[0]['sens'.$_variable]))?\$Pile[0]['sens'.$_variable]:((strncmp($_variable,'session',7)==0 AND session_get('sens'.$_variable))?session_get('sens'.$_variable):$_sens_defaut))==-1 OR \$t=='inverse')?-1:1)"; |
|
| 1843 | - |
|
| 1844 | - $boucle->modificateur['tri_champ'] = $_tri; |
|
| 1845 | - $boucle->modificateur['tri_sens'] = $_sens; |
|
| 1846 | - $boucle->modificateur['tri_liste_sens_defaut'] = $_liste_sens_defaut; |
|
| 1847 | - $boucle->modificateur['tri_nom'] = $_variable; |
|
| 1848 | - // faut il inserer un test sur l'existence de $tri parmi les champs de la table ? |
|
| 1849 | - // evite des erreurs sql, mais peut empecher des tri sur jointure ... |
|
| 1850 | - $boucle->hash .= " |
|
| 1829 | + $boucle = &$boucles[$idb]; |
|
| 1830 | + |
|
| 1831 | + // definition du champ par defaut |
|
| 1832 | + $_champ_defaut = !isset($crit->param[0][0]) ? "''" |
|
| 1833 | + : calculer_liste([$crit->param[0][0]], $idb, $boucles, $boucle->id_parent); |
|
| 1834 | + $_liste_sens_defaut = !isset($crit->param[1][0]) ? '1' |
|
| 1835 | + : calculer_liste([$crit->param[1][0]], $idb, $boucles, $boucle->id_parent); |
|
| 1836 | + $_variable = !isset($crit->param[2][0]) ? "'$idb'" |
|
| 1837 | + : calculer_liste([$crit->param[2][0]], $idb, $boucles, $boucle->id_parent); |
|
| 1838 | + |
|
| 1839 | + $_tri = "((\$t=(isset(\$Pile[0]['tri'.$_variable]))?\$Pile[0]['tri'.$_variable]:((strncmp($_variable,'session',7)==0 AND session_get('tri'.$_variable))?session_get('tri'.$_variable):$_champ_defaut))?tri_protege_champ(\$t):'')"; |
|
| 1840 | + |
|
| 1841 | + $_sens_defaut = "(is_array(\$s=$_liste_sens_defaut)?(isset(\$s[\$st=$_tri])?\$s[\$st]:reset(\$s)):\$s)"; |
|
| 1842 | + $_sens = "((intval(\$t=(isset(\$Pile[0]['sens'.$_variable]))?\$Pile[0]['sens'.$_variable]:((strncmp($_variable,'session',7)==0 AND session_get('sens'.$_variable))?session_get('sens'.$_variable):$_sens_defaut))==-1 OR \$t=='inverse')?-1:1)"; |
|
| 1843 | + |
|
| 1844 | + $boucle->modificateur['tri_champ'] = $_tri; |
|
| 1845 | + $boucle->modificateur['tri_sens'] = $_sens; |
|
| 1846 | + $boucle->modificateur['tri_liste_sens_defaut'] = $_liste_sens_defaut; |
|
| 1847 | + $boucle->modificateur['tri_nom'] = $_variable; |
|
| 1848 | + // faut il inserer un test sur l'existence de $tri parmi les champs de la table ? |
|
| 1849 | + // evite des erreurs sql, mais peut empecher des tri sur jointure ... |
|
| 1850 | + $boucle->hash .= " |
|
| 1851 | 1851 | \$senstri = ''; |
| 1852 | 1852 | \$tri = $_tri; |
| 1853 | 1853 | if (\$tri){ |
@@ -1855,8 +1855,8 @@ discard block |
||
| 1855 | 1855 | \$senstri = (\$senstri<0)?' DESC':''; |
| 1856 | 1856 | }; |
| 1857 | 1857 | "; |
| 1858 | - $boucle->select[] = '".tri_champ_select($tri)."'; |
|
| 1859 | - $boucle->order[] = "tri_champ_order(\$tri,\$command['from'],\$senstri)"; |
|
| 1858 | + $boucle->select[] = '".tri_champ_select($tri)."'; |
|
| 1859 | + $boucle->order[] = "tri_champ_order(\$tri,\$command['from'],\$senstri)"; |
|
| 1860 | 1860 | } |
| 1861 | 1861 | |
| 1862 | 1862 | # criteres de comparaison |
@@ -1873,21 +1873,21 @@ discard block |
||
| 1873 | 1873 | * @return void|array |
| 1874 | 1874 | **/ |
| 1875 | 1875 | function calculer_critere_DEFAUT_dist($idb, &$boucles, $crit) { |
| 1876 | - // double cas particulier {0,1} et {1/2} repere a l'analyse lexicale |
|
| 1877 | - if (($crit->op == ',') or ($crit->op == '/')) { |
|
| 1878 | - calculer_critere_parties($idb, $boucles, $crit); |
|
| 1879 | - return; |
|
| 1880 | - } |
|
| 1881 | - |
|
| 1882 | - $r = calculer_critere_infixe($idb, $boucles, $crit); |
|
| 1883 | - if (!$r) { |
|
| 1884 | - # // on produit une erreur seulement si le critere n'a pas de '?' |
|
| 1885 | - # if (!$crit->cond) { |
|
| 1886 | - return ['zbug_critere_inconnu', ['critere' => $crit->op]]; |
|
| 1887 | - # } |
|
| 1888 | - } else { |
|
| 1889 | - calculer_critere_DEFAUT_args($idb, $boucles, $crit, $r); |
|
| 1890 | - } |
|
| 1876 | + // double cas particulier {0,1} et {1/2} repere a l'analyse lexicale |
|
| 1877 | + if (($crit->op == ',') or ($crit->op == '/')) { |
|
| 1878 | + calculer_critere_parties($idb, $boucles, $crit); |
|
| 1879 | + return; |
|
| 1880 | + } |
|
| 1881 | + |
|
| 1882 | + $r = calculer_critere_infixe($idb, $boucles, $crit); |
|
| 1883 | + if (!$r) { |
|
| 1884 | + # // on produit une erreur seulement si le critere n'a pas de '?' |
|
| 1885 | + # if (!$crit->cond) { |
|
| 1886 | + return ['zbug_critere_inconnu', ['critere' => $crit->op]]; |
|
| 1887 | + # } |
|
| 1888 | + } else { |
|
| 1889 | + calculer_critere_DEFAUT_args($idb, $boucles, $crit, $r); |
|
| 1890 | + } |
|
| 1891 | 1891 | } |
| 1892 | 1892 | |
| 1893 | 1893 | |
@@ -1907,62 +1907,62 @@ discard block |
||
| 1907 | 1907 | * @return void |
| 1908 | 1908 | **/ |
| 1909 | 1909 | function calculer_critere_DEFAUT_args($idb, &$boucles, $crit, $args) { |
| 1910 | - [$arg, $op, $val, $col, $where_complement] = $args; |
|
| 1911 | - |
|
| 1912 | - $where = ["'$op'", "'$arg'", $val[0]]; |
|
| 1913 | - |
|
| 1914 | - // inserer la negation (cf !...) |
|
| 1915 | - |
|
| 1916 | - if ($crit->not) { |
|
| 1917 | - $where = ["'NOT'", $where]; |
|
| 1918 | - } |
|
| 1919 | - if ($crit->exclus) { |
|
| 1920 | - if (!preg_match(',^L[0-9]+[.],', $arg)) { |
|
| 1921 | - $where = ["'NOT'", $where]; |
|
| 1922 | - } else { |
|
| 1923 | - // un not sur un critere de jointure se traduit comme un NOT IN avec une sous requete |
|
| 1924 | - // c'est une sous requete identique a la requete principale sous la forme (SELF,$select,$where) avec $select et $where qui surchargent |
|
| 1925 | - $where = [ |
|
| 1926 | - "'NOT'", |
|
| 1927 | - [ |
|
| 1928 | - "'IN'", |
|
| 1929 | - "'" . $boucles[$idb]->id_table . '.' . $boucles[$idb]->primary . "'", |
|
| 1930 | - ["'SELF'", "'" . $boucles[$idb]->id_table . '.' . $boucles[$idb]->primary . "'", $where] |
|
| 1931 | - ] |
|
| 1932 | - ]; |
|
| 1933 | - } |
|
| 1934 | - } |
|
| 1935 | - |
|
| 1936 | - // inserer la condition (cf {lang?}) |
|
| 1937 | - // traiter a part la date, elle est mise d'office par SPIP, |
|
| 1938 | - if ($crit->cond) { |
|
| 1939 | - $pred = calculer_argument_precedent($idb, $col, $boucles); |
|
| 1940 | - if ($col === 'date' or $col === 'date_redac') { |
|
| 1941 | - if ($pred === "\$Pile[0]['" . $col . "']") { |
|
| 1942 | - $pred = "(\$Pile[0]['{$col}_default']?'':$pred)"; |
|
| 1943 | - } |
|
| 1944 | - } |
|
| 1945 | - |
|
| 1946 | - if ($op === '=' and !$crit->not) { |
|
| 1947 | - $where = [ |
|
| 1948 | - "'?'", |
|
| 1949 | - "(is_array($pred))", |
|
| 1950 | - critere_IN_cas($idb, $boucles, 'COND', $arg, $op, [$pred], $col), |
|
| 1951 | - $where |
|
| 1952 | - ]; |
|
| 1953 | - } |
|
| 1954 | - $where = ["'?'", "!is_whereable($pred)", "''", $where]; |
|
| 1955 | - if ($where_complement) { |
|
| 1956 | - // condition annexe du type "AND (objet='article')" |
|
| 1957 | - $where_complement = ["'?'", "!is_whereable($pred)", "''", $where_complement]; |
|
| 1958 | - } |
|
| 1959 | - } |
|
| 1960 | - |
|
| 1961 | - $boucles[$idb]->where[] = $where; |
|
| 1962 | - if ($where_complement) { |
|
| 1963 | - // condition annexe du type "AND (objet='article')" |
|
| 1964 | - $boucles[$idb]->where[] = $where_complement; |
|
| 1965 | - } |
|
| 1910 | + [$arg, $op, $val, $col, $where_complement] = $args; |
|
| 1911 | + |
|
| 1912 | + $where = ["'$op'", "'$arg'", $val[0]]; |
|
| 1913 | + |
|
| 1914 | + // inserer la negation (cf !...) |
|
| 1915 | + |
|
| 1916 | + if ($crit->not) { |
|
| 1917 | + $where = ["'NOT'", $where]; |
|
| 1918 | + } |
|
| 1919 | + if ($crit->exclus) { |
|
| 1920 | + if (!preg_match(',^L[0-9]+[.],', $arg)) { |
|
| 1921 | + $where = ["'NOT'", $where]; |
|
| 1922 | + } else { |
|
| 1923 | + // un not sur un critere de jointure se traduit comme un NOT IN avec une sous requete |
|
| 1924 | + // c'est une sous requete identique a la requete principale sous la forme (SELF,$select,$where) avec $select et $where qui surchargent |
|
| 1925 | + $where = [ |
|
| 1926 | + "'NOT'", |
|
| 1927 | + [ |
|
| 1928 | + "'IN'", |
|
| 1929 | + "'" . $boucles[$idb]->id_table . '.' . $boucles[$idb]->primary . "'", |
|
| 1930 | + ["'SELF'", "'" . $boucles[$idb]->id_table . '.' . $boucles[$idb]->primary . "'", $where] |
|
| 1931 | + ] |
|
| 1932 | + ]; |
|
| 1933 | + } |
|
| 1934 | + } |
|
| 1935 | + |
|
| 1936 | + // inserer la condition (cf {lang?}) |
|
| 1937 | + // traiter a part la date, elle est mise d'office par SPIP, |
|
| 1938 | + if ($crit->cond) { |
|
| 1939 | + $pred = calculer_argument_precedent($idb, $col, $boucles); |
|
| 1940 | + if ($col === 'date' or $col === 'date_redac') { |
|
| 1941 | + if ($pred === "\$Pile[0]['" . $col . "']") { |
|
| 1942 | + $pred = "(\$Pile[0]['{$col}_default']?'':$pred)"; |
|
| 1943 | + } |
|
| 1944 | + } |
|
| 1945 | + |
|
| 1946 | + if ($op === '=' and !$crit->not) { |
|
| 1947 | + $where = [ |
|
| 1948 | + "'?'", |
|
| 1949 | + "(is_array($pred))", |
|
| 1950 | + critere_IN_cas($idb, $boucles, 'COND', $arg, $op, [$pred], $col), |
|
| 1951 | + $where |
|
| 1952 | + ]; |
|
| 1953 | + } |
|
| 1954 | + $where = ["'?'", "!is_whereable($pred)", "''", $where]; |
|
| 1955 | + if ($where_complement) { |
|
| 1956 | + // condition annexe du type "AND (objet='article')" |
|
| 1957 | + $where_complement = ["'?'", "!is_whereable($pred)", "''", $where_complement]; |
|
| 1958 | + } |
|
| 1959 | + } |
|
| 1960 | + |
|
| 1961 | + $boucles[$idb]->where[] = $where; |
|
| 1962 | + if ($where_complement) { |
|
| 1963 | + // condition annexe du type "AND (objet='article')" |
|
| 1964 | + $boucles[$idb]->where[] = $where_complement; |
|
| 1965 | + } |
|
| 1966 | 1966 | } |
| 1967 | 1967 | |
| 1968 | 1968 | |
@@ -2003,165 +2003,165 @@ discard block |
||
| 2003 | 2003 | **/ |
| 2004 | 2004 | function calculer_critere_infixe($idb, &$boucles, $crit) { |
| 2005 | 2005 | |
| 2006 | - $boucle = &$boucles[$idb]; |
|
| 2007 | - $type = $boucle->type_requete; |
|
| 2008 | - $table = $boucle->id_table; |
|
| 2009 | - $desc = $boucle->show; |
|
| 2010 | - $col_vraie = null; |
|
| 2011 | - |
|
| 2012 | - [$fct, $col, $op, $val, $args_sql] = |
|
| 2013 | - calculer_critere_infixe_ops($idb, $boucles, $crit); |
|
| 2014 | - |
|
| 2015 | - $col_alias = $col; |
|
| 2016 | - $where_complement = false; |
|
| 2017 | - |
|
| 2018 | - // Cas particulier : id_enfant => utiliser la colonne id_objet |
|
| 2019 | - if ($col == 'id_enfant') { |
|
| 2020 | - $col = $boucle->primary; |
|
| 2021 | - } |
|
| 2022 | - |
|
| 2023 | - // Cas particulier : id_parent => verifier les exceptions de tables |
|
| 2024 | - if ( |
|
| 2025 | - (in_array($col, ['id_parent', 'id_secteur']) and isset($GLOBALS['exceptions_des_tables'][$table][$col])) |
|
| 2026 | - or (isset($GLOBALS['exceptions_des_tables'][$table][$col]) and is_string($GLOBALS['exceptions_des_tables'][$table][$col])) |
|
| 2027 | - ) { |
|
| 2028 | - $col = $GLOBALS['exceptions_des_tables'][$table][$col]; |
|
| 2029 | - } // et possibilite de gerer un critere secteur sur des tables de plugins (ie forums) |
|
| 2030 | - else { |
|
| 2031 | - if (($col == 'id_secteur') and ($critere_secteur = charger_fonction("critere_secteur_$type", 'public', true))) { |
|
| 2032 | - $table = $critere_secteur($idb, $boucles, $val, $crit); |
|
| 2033 | - } |
|
| 2034 | - |
|
| 2035 | - // cas id_article=xx qui se mappe en id_objet=xx AND objet=article |
|
| 2036 | - // sauf si exception declaree : sauter cette etape |
|
| 2037 | - else { |
|
| 2038 | - if ( |
|
| 2039 | - !isset($GLOBALS['exceptions_des_jointures'][table_objet_sql($table)][$col]) |
|
| 2040 | - and !isset($GLOBALS['exceptions_des_jointures'][$col]) |
|
| 2041 | - and count(trouver_champs_decomposes($col, $desc)) > 1 |
|
| 2042 | - ) { |
|
| 2043 | - $e = decompose_champ_id_objet($col); |
|
| 2044 | - $col = array_shift($e); |
|
| 2045 | - $where_complement = primary_doublee($e, $table); |
|
| 2046 | - } // Cas particulier : expressions de date |
|
| 2047 | - else { |
|
| 2048 | - if ($c = calculer_critere_infixe_date($idb, $boucles, $col)) { |
|
| 2049 | - [$col, $col_vraie] = $c; |
|
| 2050 | - $table = ''; |
|
| 2051 | - } // table explicitée {mots.titre} |
|
| 2052 | - else { |
|
| 2053 | - if (preg_match('/^(.*)\.(.*)$/', $col, $r)) { |
|
| 2054 | - [, $table, $col] = $r; |
|
| 2055 | - $col_alias = $col; |
|
| 2056 | - |
|
| 2057 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 2058 | - if ( |
|
| 2059 | - $desc = $trouver_table($table, $boucle->sql_serveur) |
|
| 2060 | - and isset($desc['field'][$col]) |
|
| 2061 | - and $cle = array_search($desc['table'], $boucle->from) |
|
| 2062 | - ) { |
|
| 2063 | - $table = $cle; |
|
| 2064 | - } else { |
|
| 2065 | - $table = trouver_jointure_champ($col, $boucle, [$table], ($crit->cond or $op != '=')); |
|
| 2066 | - } |
|
| 2067 | - #$table = calculer_critere_externe_init($boucle, array($table), $col, $desc, ($crit->cond OR $op!='='), true); |
|
| 2068 | - if (!$table) { |
|
| 2069 | - return ''; |
|
| 2070 | - } |
|
| 2071 | - } |
|
| 2072 | - // si le champ n'est pas trouvé dans la table, |
|
| 2073 | - // on cherche si une jointure peut l'obtenir |
|
| 2074 | - elseif (@!array_key_exists($col, $desc['field'])) { |
|
| 2075 | - // Champ joker * des iterateurs DATA qui accepte tout |
|
| 2076 | - if (@array_key_exists('*', $desc['field'])) { |
|
| 2077 | - $desc['field'][$col_vraie ?: $col] = ''; // on veut pas de cast INT par defaut car le type peut etre n'importe quoi dans les boucles DATA |
|
| 2078 | - } |
|
| 2079 | - else { |
|
| 2080 | - $r = calculer_critere_infixe_externe($boucle, $crit, $op, $desc, $col, $col_alias, $table); |
|
| 2081 | - if (!$r) { |
|
| 2082 | - return ''; |
|
| 2083 | - } |
|
| 2084 | - [$col, $col_alias, $table, $where_complement, $desc] = $r; |
|
| 2085 | - } |
|
| 2086 | - } |
|
| 2087 | - } |
|
| 2088 | - } |
|
| 2089 | - } |
|
| 2090 | - } |
|
| 2091 | - |
|
| 2092 | - $col_vraie = ($col_vraie ?: $col); |
|
| 2093 | - // Dans tous les cas, |
|
| 2094 | - // virer les guillemets eventuels autour d'un int (qui sont refuses par certains SQL) |
|
| 2095 | - // et passer dans sql_quote avec le type si connu |
|
| 2096 | - // et int sinon si la valeur est numerique |
|
| 2097 | - // sinon introduire le vrai type du champ si connu dans le sql_quote (ou int NOT NULL sinon) |
|
| 2098 | - // Ne pas utiliser intval, PHP tronquant les Bigint de SQL |
|
| 2099 | - if ($op == '=' or in_array($op, $GLOBALS['table_criteres_infixes'])) { |
|
| 2100 | - $type_cast_quote = ($desc['field'][$col_vraie] ?? 'int NOT NULL'); |
|
| 2101 | - // defaire le quote des int et les passer dans sql_quote avec le bon type de champ si on le connait, int sinon |
|
| 2102 | - // prendre en compte le debug ou la valeur arrive avec un commentaire PHP en debut |
|
| 2103 | - if (preg_match(",^\\A(\s*//.*?$\s*)?\"'(-?\d+)'\"\\z,ms", $val[0], $r)) { |
|
| 2104 | - $val[0] = $r[1] . '"' . sql_quote($r[2], $boucle->sql_serveur, $type_cast_quote) . '"'; |
|
| 2105 | - } |
|
| 2106 | - // sinon expliciter les |
|
| 2107 | - // sql_quote(truc) en sql_quote(truc,'',type) |
|
| 2108 | - // sql_quote(truc,serveur) en sql_quote(truc,serveur,type) |
|
| 2109 | - // sql_quote(truc,serveur,'') en sql_quote(truc,serveur,type) |
|
| 2110 | - // sans toucher aux |
|
| 2111 | - // sql_quote(truc,'','varchar(10) DEFAULT \'oui\' COLLATE NOCASE') |
|
| 2112 | - // sql_quote(truc,'','varchar') |
|
| 2113 | - elseif ( |
|
| 2114 | - preg_match('/\Asql_quote[(](.*?)(,[^)]*?)?(,[^)]*(?:\(\d+\)[^)]*)?)?[)]\s*\z/ms', $val[0], $r) |
|
| 2115 | - // si pas deja un type |
|
| 2116 | - and (!isset($r[3]) or !$r[3] or !trim($r[3], ", '")) |
|
| 2117 | - ) { |
|
| 2118 | - $r = $r[1] |
|
| 2119 | - . ((isset($r[2]) and $r[2]) ? $r[2] : ",''") |
|
| 2120 | - . ",'" . addslashes($type_cast_quote) . "'"; |
|
| 2121 | - $val[0] = "sql_quote($r)"; |
|
| 2122 | - } |
|
| 2123 | - elseif ( |
|
| 2124 | - strpos($val[0], '@@defaultcast@@') !== false |
|
| 2125 | - and preg_match("/'@@defaultcast@@'\s*\)\s*\z/ms", $val[0], $r) |
|
| 2126 | - ) { |
|
| 2127 | - $val[0] = substr($val[0], 0, -strlen($r[0])) . "'" . addslashes($type_cast_quote) . "')"; |
|
| 2128 | - } |
|
| 2129 | - } |
|
| 2130 | - |
|
| 2131 | - if ( |
|
| 2132 | - strpos($val[0], '@@defaultcast@@') !== false |
|
| 2133 | - and preg_match("/'@@defaultcast@@'\s*\)\s*\z/ms", $val[0], $r) |
|
| 2134 | - ) { |
|
| 2135 | - $val[0] = substr($val[0], 0, -strlen($r[0])) . "'char')"; |
|
| 2136 | - } |
|
| 2137 | - |
|
| 2138 | - // Indicateur pour permettre aux fonctionx boucle_X de modifier |
|
| 2139 | - // leurs requetes par defaut, notamment le champ statut |
|
| 2140 | - // Ne pas confondre champs de la table principale et des jointures |
|
| 2141 | - if ($table === $boucle->id_table) { |
|
| 2142 | - $boucles[$idb]->modificateur['criteres'][$col_vraie] = true; |
|
| 2143 | - if ($col_alias != $col_vraie) { |
|
| 2144 | - $boucles[$idb]->modificateur['criteres'][$col_alias] = true; |
|
| 2145 | - } |
|
| 2146 | - } |
|
| 2147 | - |
|
| 2148 | - // inserer le nom de la table SQL devant le nom du champ |
|
| 2149 | - if ($table) { |
|
| 2150 | - if ($col[0] == '`') { |
|
| 2151 | - $arg = "$table." . substr($col, 1, -1); |
|
| 2152 | - } else { |
|
| 2153 | - $arg = "$table.$col"; |
|
| 2154 | - } |
|
| 2155 | - } else { |
|
| 2156 | - $arg = $col; |
|
| 2157 | - } |
|
| 2158 | - |
|
| 2159 | - // inserer la fonction SQL |
|
| 2160 | - if ($fct) { |
|
| 2161 | - $arg = "$fct($arg$args_sql)"; |
|
| 2162 | - } |
|
| 2163 | - |
|
| 2164 | - return [$arg, $op, $val, $col_alias, $where_complement]; |
|
| 2006 | + $boucle = &$boucles[$idb]; |
|
| 2007 | + $type = $boucle->type_requete; |
|
| 2008 | + $table = $boucle->id_table; |
|
| 2009 | + $desc = $boucle->show; |
|
| 2010 | + $col_vraie = null; |
|
| 2011 | + |
|
| 2012 | + [$fct, $col, $op, $val, $args_sql] = |
|
| 2013 | + calculer_critere_infixe_ops($idb, $boucles, $crit); |
|
| 2014 | + |
|
| 2015 | + $col_alias = $col; |
|
| 2016 | + $where_complement = false; |
|
| 2017 | + |
|
| 2018 | + // Cas particulier : id_enfant => utiliser la colonne id_objet |
|
| 2019 | + if ($col == 'id_enfant') { |
|
| 2020 | + $col = $boucle->primary; |
|
| 2021 | + } |
|
| 2022 | + |
|
| 2023 | + // Cas particulier : id_parent => verifier les exceptions de tables |
|
| 2024 | + if ( |
|
| 2025 | + (in_array($col, ['id_parent', 'id_secteur']) and isset($GLOBALS['exceptions_des_tables'][$table][$col])) |
|
| 2026 | + or (isset($GLOBALS['exceptions_des_tables'][$table][$col]) and is_string($GLOBALS['exceptions_des_tables'][$table][$col])) |
|
| 2027 | + ) { |
|
| 2028 | + $col = $GLOBALS['exceptions_des_tables'][$table][$col]; |
|
| 2029 | + } // et possibilite de gerer un critere secteur sur des tables de plugins (ie forums) |
|
| 2030 | + else { |
|
| 2031 | + if (($col == 'id_secteur') and ($critere_secteur = charger_fonction("critere_secteur_$type", 'public', true))) { |
|
| 2032 | + $table = $critere_secteur($idb, $boucles, $val, $crit); |
|
| 2033 | + } |
|
| 2034 | + |
|
| 2035 | + // cas id_article=xx qui se mappe en id_objet=xx AND objet=article |
|
| 2036 | + // sauf si exception declaree : sauter cette etape |
|
| 2037 | + else { |
|
| 2038 | + if ( |
|
| 2039 | + !isset($GLOBALS['exceptions_des_jointures'][table_objet_sql($table)][$col]) |
|
| 2040 | + and !isset($GLOBALS['exceptions_des_jointures'][$col]) |
|
| 2041 | + and count(trouver_champs_decomposes($col, $desc)) > 1 |
|
| 2042 | + ) { |
|
| 2043 | + $e = decompose_champ_id_objet($col); |
|
| 2044 | + $col = array_shift($e); |
|
| 2045 | + $where_complement = primary_doublee($e, $table); |
|
| 2046 | + } // Cas particulier : expressions de date |
|
| 2047 | + else { |
|
| 2048 | + if ($c = calculer_critere_infixe_date($idb, $boucles, $col)) { |
|
| 2049 | + [$col, $col_vraie] = $c; |
|
| 2050 | + $table = ''; |
|
| 2051 | + } // table explicitée {mots.titre} |
|
| 2052 | + else { |
|
| 2053 | + if (preg_match('/^(.*)\.(.*)$/', $col, $r)) { |
|
| 2054 | + [, $table, $col] = $r; |
|
| 2055 | + $col_alias = $col; |
|
| 2056 | + |
|
| 2057 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 2058 | + if ( |
|
| 2059 | + $desc = $trouver_table($table, $boucle->sql_serveur) |
|
| 2060 | + and isset($desc['field'][$col]) |
|
| 2061 | + and $cle = array_search($desc['table'], $boucle->from) |
|
| 2062 | + ) { |
|
| 2063 | + $table = $cle; |
|
| 2064 | + } else { |
|
| 2065 | + $table = trouver_jointure_champ($col, $boucle, [$table], ($crit->cond or $op != '=')); |
|
| 2066 | + } |
|
| 2067 | + #$table = calculer_critere_externe_init($boucle, array($table), $col, $desc, ($crit->cond OR $op!='='), true); |
|
| 2068 | + if (!$table) { |
|
| 2069 | + return ''; |
|
| 2070 | + } |
|
| 2071 | + } |
|
| 2072 | + // si le champ n'est pas trouvé dans la table, |
|
| 2073 | + // on cherche si une jointure peut l'obtenir |
|
| 2074 | + elseif (@!array_key_exists($col, $desc['field'])) { |
|
| 2075 | + // Champ joker * des iterateurs DATA qui accepte tout |
|
| 2076 | + if (@array_key_exists('*', $desc['field'])) { |
|
| 2077 | + $desc['field'][$col_vraie ?: $col] = ''; // on veut pas de cast INT par defaut car le type peut etre n'importe quoi dans les boucles DATA |
|
| 2078 | + } |
|
| 2079 | + else { |
|
| 2080 | + $r = calculer_critere_infixe_externe($boucle, $crit, $op, $desc, $col, $col_alias, $table); |
|
| 2081 | + if (!$r) { |
|
| 2082 | + return ''; |
|
| 2083 | + } |
|
| 2084 | + [$col, $col_alias, $table, $where_complement, $desc] = $r; |
|
| 2085 | + } |
|
| 2086 | + } |
|
| 2087 | + } |
|
| 2088 | + } |
|
| 2089 | + } |
|
| 2090 | + } |
|
| 2091 | + |
|
| 2092 | + $col_vraie = ($col_vraie ?: $col); |
|
| 2093 | + // Dans tous les cas, |
|
| 2094 | + // virer les guillemets eventuels autour d'un int (qui sont refuses par certains SQL) |
|
| 2095 | + // et passer dans sql_quote avec le type si connu |
|
| 2096 | + // et int sinon si la valeur est numerique |
|
| 2097 | + // sinon introduire le vrai type du champ si connu dans le sql_quote (ou int NOT NULL sinon) |
|
| 2098 | + // Ne pas utiliser intval, PHP tronquant les Bigint de SQL |
|
| 2099 | + if ($op == '=' or in_array($op, $GLOBALS['table_criteres_infixes'])) { |
|
| 2100 | + $type_cast_quote = ($desc['field'][$col_vraie] ?? 'int NOT NULL'); |
|
| 2101 | + // defaire le quote des int et les passer dans sql_quote avec le bon type de champ si on le connait, int sinon |
|
| 2102 | + // prendre en compte le debug ou la valeur arrive avec un commentaire PHP en debut |
|
| 2103 | + if (preg_match(",^\\A(\s*//.*?$\s*)?\"'(-?\d+)'\"\\z,ms", $val[0], $r)) { |
|
| 2104 | + $val[0] = $r[1] . '"' . sql_quote($r[2], $boucle->sql_serveur, $type_cast_quote) . '"'; |
|
| 2105 | + } |
|
| 2106 | + // sinon expliciter les |
|
| 2107 | + // sql_quote(truc) en sql_quote(truc,'',type) |
|
| 2108 | + // sql_quote(truc,serveur) en sql_quote(truc,serveur,type) |
|
| 2109 | + // sql_quote(truc,serveur,'') en sql_quote(truc,serveur,type) |
|
| 2110 | + // sans toucher aux |
|
| 2111 | + // sql_quote(truc,'','varchar(10) DEFAULT \'oui\' COLLATE NOCASE') |
|
| 2112 | + // sql_quote(truc,'','varchar') |
|
| 2113 | + elseif ( |
|
| 2114 | + preg_match('/\Asql_quote[(](.*?)(,[^)]*?)?(,[^)]*(?:\(\d+\)[^)]*)?)?[)]\s*\z/ms', $val[0], $r) |
|
| 2115 | + // si pas deja un type |
|
| 2116 | + and (!isset($r[3]) or !$r[3] or !trim($r[3], ", '")) |
|
| 2117 | + ) { |
|
| 2118 | + $r = $r[1] |
|
| 2119 | + . ((isset($r[2]) and $r[2]) ? $r[2] : ",''") |
|
| 2120 | + . ",'" . addslashes($type_cast_quote) . "'"; |
|
| 2121 | + $val[0] = "sql_quote($r)"; |
|
| 2122 | + } |
|
| 2123 | + elseif ( |
|
| 2124 | + strpos($val[0], '@@defaultcast@@') !== false |
|
| 2125 | + and preg_match("/'@@defaultcast@@'\s*\)\s*\z/ms", $val[0], $r) |
|
| 2126 | + ) { |
|
| 2127 | + $val[0] = substr($val[0], 0, -strlen($r[0])) . "'" . addslashes($type_cast_quote) . "')"; |
|
| 2128 | + } |
|
| 2129 | + } |
|
| 2130 | + |
|
| 2131 | + if ( |
|
| 2132 | + strpos($val[0], '@@defaultcast@@') !== false |
|
| 2133 | + and preg_match("/'@@defaultcast@@'\s*\)\s*\z/ms", $val[0], $r) |
|
| 2134 | + ) { |
|
| 2135 | + $val[0] = substr($val[0], 0, -strlen($r[0])) . "'char')"; |
|
| 2136 | + } |
|
| 2137 | + |
|
| 2138 | + // Indicateur pour permettre aux fonctionx boucle_X de modifier |
|
| 2139 | + // leurs requetes par defaut, notamment le champ statut |
|
| 2140 | + // Ne pas confondre champs de la table principale et des jointures |
|
| 2141 | + if ($table === $boucle->id_table) { |
|
| 2142 | + $boucles[$idb]->modificateur['criteres'][$col_vraie] = true; |
|
| 2143 | + if ($col_alias != $col_vraie) { |
|
| 2144 | + $boucles[$idb]->modificateur['criteres'][$col_alias] = true; |
|
| 2145 | + } |
|
| 2146 | + } |
|
| 2147 | + |
|
| 2148 | + // inserer le nom de la table SQL devant le nom du champ |
|
| 2149 | + if ($table) { |
|
| 2150 | + if ($col[0] == '`') { |
|
| 2151 | + $arg = "$table." . substr($col, 1, -1); |
|
| 2152 | + } else { |
|
| 2153 | + $arg = "$table.$col"; |
|
| 2154 | + } |
|
| 2155 | + } else { |
|
| 2156 | + $arg = $col; |
|
| 2157 | + } |
|
| 2158 | + |
|
| 2159 | + // inserer la fonction SQL |
|
| 2160 | + if ($fct) { |
|
| 2161 | + $arg = "$fct($arg$args_sql)"; |
|
| 2162 | + } |
|
| 2163 | + |
|
| 2164 | + return [$arg, $op, $val, $col_alias, $where_complement]; |
|
| 2165 | 2165 | } |
| 2166 | 2166 | |
| 2167 | 2167 | |
@@ -2190,77 +2190,77 @@ discard block |
||
| 2190 | 2190 | **/ |
| 2191 | 2191 | function calculer_critere_infixe_externe($boucle, $crit, $op, $desc, $col, $col_alias, $table) { |
| 2192 | 2192 | |
| 2193 | - $where = ''; |
|
| 2194 | - |
|
| 2195 | - $calculer_critere_externe = 'calculer_critere_externe_init'; |
|
| 2196 | - // gestion par les plugins des jointures tordues |
|
| 2197 | - // pas automatiques mais necessaires |
|
| 2198 | - $table_sql = table_objet_sql($table); |
|
| 2199 | - if ( |
|
| 2200 | - isset($GLOBALS['exceptions_des_jointures'][$table_sql]) |
|
| 2201 | - and is_array($GLOBALS['exceptions_des_jointures'][$table_sql]) |
|
| 2202 | - and |
|
| 2203 | - ( |
|
| 2204 | - isset($GLOBALS['exceptions_des_jointures'][$table_sql][$col]) |
|
| 2205 | - or |
|
| 2206 | - isset($GLOBALS['exceptions_des_jointures'][$table_sql]['']) |
|
| 2207 | - ) |
|
| 2208 | - ) { |
|
| 2209 | - $t = $GLOBALS['exceptions_des_jointures'][$table_sql]; |
|
| 2210 | - $index = $t[$col] ?? $t[''] ?? []; |
|
| 2211 | - |
|
| 2212 | - if ((is_countable($index) ? count($index) : 0) == 3) { |
|
| 2213 | - [$t, $col, $calculer_critere_externe] = $index; |
|
| 2214 | - } elseif ((is_countable($index) ? count($index) : 0) == 2) { |
|
| 2215 | - [$t, $col] = $t[$col]; |
|
| 2216 | - } elseif ((is_countable($index) ? count($index) : 0) == 1) { |
|
| 2217 | - [$calculer_critere_externe] = $index; |
|
| 2218 | - $t = $table; |
|
| 2219 | - } else { |
|
| 2220 | - $t = ''; |
|
| 2221 | - } // jointure non declaree. La trouver. |
|
| 2222 | - } elseif (isset($GLOBALS['exceptions_des_jointures'][$col])) { |
|
| 2223 | - [$t, $col] = $GLOBALS['exceptions_des_jointures'][$col]; |
|
| 2224 | - } else { |
|
| 2225 | - $t = ''; |
|
| 2226 | - } // jointure non declaree. La trouver. |
|
| 2227 | - |
|
| 2228 | - // ici on construit le from pour fournir $col en piochant dans les jointures |
|
| 2229 | - |
|
| 2230 | - // si des jointures explicites sont fournies, on cherche d'abord dans celles ci |
|
| 2231 | - // permet de forcer une table de lien quand il y a ambiguite |
|
| 2232 | - // <BOUCLE_(DOCUMENTS documents_liens){id_mot}> |
|
| 2233 | - // alors que <BOUCLE_(DOCUMENTS){id_mot}> produit la meme chose que <BOUCLE_(DOCUMENTS mots_liens){id_mot}> |
|
| 2234 | - $table = ''; |
|
| 2235 | - if ($boucle->jointures_explicites) { |
|
| 2236 | - $jointures_explicites = explode(' ', $boucle->jointures_explicites); |
|
| 2237 | - $table = $calculer_critere_externe($boucle, $jointures_explicites, $col, $desc, ($crit->cond or $op != '='), $t); |
|
| 2238 | - } |
|
| 2239 | - |
|
| 2240 | - // et sinon on cherche parmi toutes les jointures declarees |
|
| 2241 | - if (!$table) { |
|
| 2242 | - $table = $calculer_critere_externe($boucle, $boucle->jointures, $col, $desc, ($crit->cond or $op != '='), $t); |
|
| 2243 | - } |
|
| 2244 | - |
|
| 2245 | - if (!$table) { |
|
| 2246 | - return ''; |
|
| 2247 | - } |
|
| 2248 | - |
|
| 2249 | - // il ne reste plus qu'a trouver le champ dans les from |
|
| 2250 | - [$nom, $desc, $cle] = trouver_champ_exterieur($col, $boucle->from, $boucle); |
|
| 2251 | - |
|
| 2252 | - if ((is_countable($cle) ? count($cle) : 0) > 1 or reset($cle) !== $col) { |
|
| 2253 | - $col_alias = $col; // id_article devient juste le nom d'origine |
|
| 2254 | - if ((is_countable($cle) ? count($cle) : 0) > 1 and reset($cle) == 'id_objet') { |
|
| 2255 | - $e = decompose_champ_id_objet($col); |
|
| 2256 | - $col = array_shift($e); |
|
| 2257 | - $where = primary_doublee($e, $table); |
|
| 2258 | - } else { |
|
| 2259 | - $col = reset($cle); |
|
| 2260 | - } |
|
| 2261 | - } |
|
| 2262 | - |
|
| 2263 | - return [$col, $col_alias, $table, $where, $desc]; |
|
| 2193 | + $where = ''; |
|
| 2194 | + |
|
| 2195 | + $calculer_critere_externe = 'calculer_critere_externe_init'; |
|
| 2196 | + // gestion par les plugins des jointures tordues |
|
| 2197 | + // pas automatiques mais necessaires |
|
| 2198 | + $table_sql = table_objet_sql($table); |
|
| 2199 | + if ( |
|
| 2200 | + isset($GLOBALS['exceptions_des_jointures'][$table_sql]) |
|
| 2201 | + and is_array($GLOBALS['exceptions_des_jointures'][$table_sql]) |
|
| 2202 | + and |
|
| 2203 | + ( |
|
| 2204 | + isset($GLOBALS['exceptions_des_jointures'][$table_sql][$col]) |
|
| 2205 | + or |
|
| 2206 | + isset($GLOBALS['exceptions_des_jointures'][$table_sql]['']) |
|
| 2207 | + ) |
|
| 2208 | + ) { |
|
| 2209 | + $t = $GLOBALS['exceptions_des_jointures'][$table_sql]; |
|
| 2210 | + $index = $t[$col] ?? $t[''] ?? []; |
|
| 2211 | + |
|
| 2212 | + if ((is_countable($index) ? count($index) : 0) == 3) { |
|
| 2213 | + [$t, $col, $calculer_critere_externe] = $index; |
|
| 2214 | + } elseif ((is_countable($index) ? count($index) : 0) == 2) { |
|
| 2215 | + [$t, $col] = $t[$col]; |
|
| 2216 | + } elseif ((is_countable($index) ? count($index) : 0) == 1) { |
|
| 2217 | + [$calculer_critere_externe] = $index; |
|
| 2218 | + $t = $table; |
|
| 2219 | + } else { |
|
| 2220 | + $t = ''; |
|
| 2221 | + } // jointure non declaree. La trouver. |
|
| 2222 | + } elseif (isset($GLOBALS['exceptions_des_jointures'][$col])) { |
|
| 2223 | + [$t, $col] = $GLOBALS['exceptions_des_jointures'][$col]; |
|
| 2224 | + } else { |
|
| 2225 | + $t = ''; |
|
| 2226 | + } // jointure non declaree. La trouver. |
|
| 2227 | + |
|
| 2228 | + // ici on construit le from pour fournir $col en piochant dans les jointures |
|
| 2229 | + |
|
| 2230 | + // si des jointures explicites sont fournies, on cherche d'abord dans celles ci |
|
| 2231 | + // permet de forcer une table de lien quand il y a ambiguite |
|
| 2232 | + // <BOUCLE_(DOCUMENTS documents_liens){id_mot}> |
|
| 2233 | + // alors que <BOUCLE_(DOCUMENTS){id_mot}> produit la meme chose que <BOUCLE_(DOCUMENTS mots_liens){id_mot}> |
|
| 2234 | + $table = ''; |
|
| 2235 | + if ($boucle->jointures_explicites) { |
|
| 2236 | + $jointures_explicites = explode(' ', $boucle->jointures_explicites); |
|
| 2237 | + $table = $calculer_critere_externe($boucle, $jointures_explicites, $col, $desc, ($crit->cond or $op != '='), $t); |
|
| 2238 | + } |
|
| 2239 | + |
|
| 2240 | + // et sinon on cherche parmi toutes les jointures declarees |
|
| 2241 | + if (!$table) { |
|
| 2242 | + $table = $calculer_critere_externe($boucle, $boucle->jointures, $col, $desc, ($crit->cond or $op != '='), $t); |
|
| 2243 | + } |
|
| 2244 | + |
|
| 2245 | + if (!$table) { |
|
| 2246 | + return ''; |
|
| 2247 | + } |
|
| 2248 | + |
|
| 2249 | + // il ne reste plus qu'a trouver le champ dans les from |
|
| 2250 | + [$nom, $desc, $cle] = trouver_champ_exterieur($col, $boucle->from, $boucle); |
|
| 2251 | + |
|
| 2252 | + if ((is_countable($cle) ? count($cle) : 0) > 1 or reset($cle) !== $col) { |
|
| 2253 | + $col_alias = $col; // id_article devient juste le nom d'origine |
|
| 2254 | + if ((is_countable($cle) ? count($cle) : 0) > 1 and reset($cle) == 'id_objet') { |
|
| 2255 | + $e = decompose_champ_id_objet($col); |
|
| 2256 | + $col = array_shift($e); |
|
| 2257 | + $where = primary_doublee($e, $table); |
|
| 2258 | + } else { |
|
| 2259 | + $col = reset($cle); |
|
| 2260 | + } |
|
| 2261 | + } |
|
| 2262 | + |
|
| 2263 | + return [$col, $col_alias, $table, $where, $desc]; |
|
| 2264 | 2264 | } |
| 2265 | 2265 | |
| 2266 | 2266 | |
@@ -2281,10 +2281,10 @@ discard block |
||
| 2281 | 2281 | * - valeur |
| 2282 | 2282 | **/ |
| 2283 | 2283 | function primary_doublee($decompose, $table) { |
| 2284 | - $e1 = reset($decompose); |
|
| 2285 | - $e2 = "sql_quote('" . end($decompose) . "')"; |
|
| 2284 | + $e1 = reset($decompose); |
|
| 2285 | + $e2 = "sql_quote('" . end($decompose) . "')"; |
|
| 2286 | 2286 | |
| 2287 | - return ["'='", "'$table." . $e1 . "'", $e2]; |
|
| 2287 | + return ["'='", "'$table." . $e1 . "'", $e2]; |
|
| 2288 | 2288 | } |
| 2289 | 2289 | |
| 2290 | 2290 | /** |
@@ -2315,57 +2315,57 @@ discard block |
||
| 2315 | 2315 | * Vide sinon. |
| 2316 | 2316 | */ |
| 2317 | 2317 | function calculer_critere_externe_init(&$boucle, $joints, $col, $desc, $cond, $checkarrivee = false) { |
| 2318 | - // si on demande un truc du genre spip_mots |
|
| 2319 | - // avec aussi spip_mots_liens dans les jointures dispo |
|
| 2320 | - // et qu'on est la |
|
| 2321 | - // il faut privilegier la jointure directe en 2 etapes spip_mots_liens, spip_mots |
|
| 2322 | - if ( |
|
| 2323 | - $checkarrivee |
|
| 2324 | - and is_string($checkarrivee) |
|
| 2325 | - and $a = table_objet($checkarrivee) |
|
| 2326 | - and in_array($a . '_liens', $joints) |
|
| 2327 | - ) { |
|
| 2328 | - if ($res = calculer_lien_externe_init($boucle, $joints, $col, $desc, $cond, $checkarrivee)) { |
|
| 2329 | - return $res; |
|
| 2330 | - } |
|
| 2331 | - } |
|
| 2332 | - foreach ($joints as $joint) { |
|
| 2333 | - if ($arrivee = trouver_champ_exterieur($col, [$joint], $boucle, $checkarrivee)) { |
|
| 2334 | - // alias de table dans le from |
|
| 2335 | - $t = array_search($arrivee[0], $boucle->from); |
|
| 2336 | - // recuperer la cle id_xx eventuellement decomposee en (id_objet,objet) |
|
| 2337 | - $cols = $arrivee[2]; |
|
| 2338 | - // mais on ignore la 3eme cle si presente qui correspond alors au point de depart |
|
| 2339 | - if ((is_countable($cols) ? count($cols) : 0) > 2) { |
|
| 2340 | - array_pop($cols); |
|
| 2341 | - } |
|
| 2342 | - if ($t) { |
|
| 2343 | - // la table est déjà dans le FROM, on vérifie si le champ est utilisé. |
|
| 2344 | - $joindre = false; |
|
| 2345 | - foreach ($cols as $col) { |
|
| 2346 | - $c = '/\b' . $t . ".$col" . '\b/'; |
|
| 2347 | - if (trouver_champ($c, $boucle->where)) { |
|
| 2348 | - $joindre = true; |
|
| 2349 | - } else { |
|
| 2350 | - // mais ca peut etre dans le FIELD pour le Having |
|
| 2351 | - $c = "/FIELD.$t" . ".$col,/"; |
|
| 2352 | - if (trouver_champ($c, $boucle->select)) { |
|
| 2353 | - $joindre = true; |
|
| 2354 | - } |
|
| 2355 | - } |
|
| 2356 | - } |
|
| 2357 | - if (!$joindre) { |
|
| 2358 | - return $t; |
|
| 2359 | - } |
|
| 2360 | - } |
|
| 2361 | - array_pop($arrivee); |
|
| 2362 | - if ($res = calculer_jointure($boucle, [$boucle->id_table, $desc], $arrivee, $cols, $cond, 1)) { |
|
| 2363 | - return $res; |
|
| 2364 | - } |
|
| 2365 | - } |
|
| 2366 | - } |
|
| 2367 | - |
|
| 2368 | - return ''; |
|
| 2318 | + // si on demande un truc du genre spip_mots |
|
| 2319 | + // avec aussi spip_mots_liens dans les jointures dispo |
|
| 2320 | + // et qu'on est la |
|
| 2321 | + // il faut privilegier la jointure directe en 2 etapes spip_mots_liens, spip_mots |
|
| 2322 | + if ( |
|
| 2323 | + $checkarrivee |
|
| 2324 | + and is_string($checkarrivee) |
|
| 2325 | + and $a = table_objet($checkarrivee) |
|
| 2326 | + and in_array($a . '_liens', $joints) |
|
| 2327 | + ) { |
|
| 2328 | + if ($res = calculer_lien_externe_init($boucle, $joints, $col, $desc, $cond, $checkarrivee)) { |
|
| 2329 | + return $res; |
|
| 2330 | + } |
|
| 2331 | + } |
|
| 2332 | + foreach ($joints as $joint) { |
|
| 2333 | + if ($arrivee = trouver_champ_exterieur($col, [$joint], $boucle, $checkarrivee)) { |
|
| 2334 | + // alias de table dans le from |
|
| 2335 | + $t = array_search($arrivee[0], $boucle->from); |
|
| 2336 | + // recuperer la cle id_xx eventuellement decomposee en (id_objet,objet) |
|
| 2337 | + $cols = $arrivee[2]; |
|
| 2338 | + // mais on ignore la 3eme cle si presente qui correspond alors au point de depart |
|
| 2339 | + if ((is_countable($cols) ? count($cols) : 0) > 2) { |
|
| 2340 | + array_pop($cols); |
|
| 2341 | + } |
|
| 2342 | + if ($t) { |
|
| 2343 | + // la table est déjà dans le FROM, on vérifie si le champ est utilisé. |
|
| 2344 | + $joindre = false; |
|
| 2345 | + foreach ($cols as $col) { |
|
| 2346 | + $c = '/\b' . $t . ".$col" . '\b/'; |
|
| 2347 | + if (trouver_champ($c, $boucle->where)) { |
|
| 2348 | + $joindre = true; |
|
| 2349 | + } else { |
|
| 2350 | + // mais ca peut etre dans le FIELD pour le Having |
|
| 2351 | + $c = "/FIELD.$t" . ".$col,/"; |
|
| 2352 | + if (trouver_champ($c, $boucle->select)) { |
|
| 2353 | + $joindre = true; |
|
| 2354 | + } |
|
| 2355 | + } |
|
| 2356 | + } |
|
| 2357 | + if (!$joindre) { |
|
| 2358 | + return $t; |
|
| 2359 | + } |
|
| 2360 | + } |
|
| 2361 | + array_pop($arrivee); |
|
| 2362 | + if ($res = calculer_jointure($boucle, [$boucle->id_table, $desc], $arrivee, $cols, $cond, 1)) { |
|
| 2363 | + return $res; |
|
| 2364 | + } |
|
| 2365 | + } |
|
| 2366 | + } |
|
| 2367 | + |
|
| 2368 | + return ''; |
|
| 2369 | 2369 | } |
| 2370 | 2370 | |
| 2371 | 2371 | /** |
@@ -2391,35 +2391,35 @@ discard block |
||
| 2391 | 2391 | * Alias de la table de jointure (Lx) |
| 2392 | 2392 | */ |
| 2393 | 2393 | function calculer_lien_externe_init(&$boucle, $joints, $col, $desc, $cond, $checkarrivee = false) { |
| 2394 | - $primary_arrivee = id_table_objet($checkarrivee); |
|
| 2395 | - |
|
| 2396 | - // [FIXME] $checkarrivee peut-il arriver avec false ???? |
|
| 2397 | - $intermediaire = trouver_champ_exterieur($primary_arrivee, $joints, $boucle, $checkarrivee . '_liens'); |
|
| 2398 | - $arrivee = trouver_champ_exterieur($col, $joints, $boucle, $checkarrivee); |
|
| 2399 | - |
|
| 2400 | - if (!$intermediaire or !$arrivee) { |
|
| 2401 | - return ''; |
|
| 2402 | - } |
|
| 2403 | - array_pop($intermediaire); // enlever la cle en 3eme argument |
|
| 2404 | - array_pop($arrivee); // enlever la cle en 3eme argument |
|
| 2405 | - |
|
| 2406 | - $res = fabrique_jointures( |
|
| 2407 | - $boucle, |
|
| 2408 | - [ |
|
| 2409 | - [ |
|
| 2410 | - $boucle->id_table, |
|
| 2411 | - $intermediaire, |
|
| 2412 | - [id_table_objet($desc['table_objet']), 'id_objet', 'objet', $desc['type']] |
|
| 2413 | - ], |
|
| 2414 | - [reset($intermediaire), $arrivee, $primary_arrivee] |
|
| 2415 | - ], |
|
| 2416 | - $cond, |
|
| 2417 | - $desc, |
|
| 2418 | - $boucle->id_table, |
|
| 2419 | - [$col] |
|
| 2420 | - ); |
|
| 2421 | - |
|
| 2422 | - return $res; |
|
| 2394 | + $primary_arrivee = id_table_objet($checkarrivee); |
|
| 2395 | + |
|
| 2396 | + // [FIXME] $checkarrivee peut-il arriver avec false ???? |
|
| 2397 | + $intermediaire = trouver_champ_exterieur($primary_arrivee, $joints, $boucle, $checkarrivee . '_liens'); |
|
| 2398 | + $arrivee = trouver_champ_exterieur($col, $joints, $boucle, $checkarrivee); |
|
| 2399 | + |
|
| 2400 | + if (!$intermediaire or !$arrivee) { |
|
| 2401 | + return ''; |
|
| 2402 | + } |
|
| 2403 | + array_pop($intermediaire); // enlever la cle en 3eme argument |
|
| 2404 | + array_pop($arrivee); // enlever la cle en 3eme argument |
|
| 2405 | + |
|
| 2406 | + $res = fabrique_jointures( |
|
| 2407 | + $boucle, |
|
| 2408 | + [ |
|
| 2409 | + [ |
|
| 2410 | + $boucle->id_table, |
|
| 2411 | + $intermediaire, |
|
| 2412 | + [id_table_objet($desc['table_objet']), 'id_objet', 'objet', $desc['type']] |
|
| 2413 | + ], |
|
| 2414 | + [reset($intermediaire), $arrivee, $primary_arrivee] |
|
| 2415 | + ], |
|
| 2416 | + $cond, |
|
| 2417 | + $desc, |
|
| 2418 | + $boucle->id_table, |
|
| 2419 | + [$col] |
|
| 2420 | + ); |
|
| 2421 | + |
|
| 2422 | + return $res; |
|
| 2423 | 2423 | } |
| 2424 | 2424 | |
| 2425 | 2425 | |
@@ -2436,17 +2436,17 @@ discard block |
||
| 2436 | 2436 | * false sinon. |
| 2437 | 2437 | **/ |
| 2438 | 2438 | function trouver_champ($champ, $where) { |
| 2439 | - if (!is_array($where)) { |
|
| 2440 | - return preg_match($champ, $where); |
|
| 2441 | - } else { |
|
| 2442 | - foreach ($where as $clause) { |
|
| 2443 | - if (trouver_champ($champ, $clause)) { |
|
| 2444 | - return true; |
|
| 2445 | - } |
|
| 2446 | - } |
|
| 2447 | - |
|
| 2448 | - return false; |
|
| 2449 | - } |
|
| 2439 | + if (!is_array($where)) { |
|
| 2440 | + return preg_match($champ, $where); |
|
| 2441 | + } else { |
|
| 2442 | + foreach ($where as $clause) { |
|
| 2443 | + if (trouver_champ($champ, $clause)) { |
|
| 2444 | + return true; |
|
| 2445 | + } |
|
| 2446 | + } |
|
| 2447 | + |
|
| 2448 | + return false; |
|
| 2449 | + } |
|
| 2450 | 2450 | } |
| 2451 | 2451 | |
| 2452 | 2452 | |
@@ -2472,129 +2472,129 @@ discard block |
||
| 2472 | 2472 | * - string $args_sql Suite des arguments du critère. ? |
| 2473 | 2473 | **/ |
| 2474 | 2474 | function calculer_critere_infixe_ops($idb, &$boucles, $crit) { |
| 2475 | - // cas d'une valeur comparee a elle-meme ou son referent |
|
| 2476 | - if (count($crit->param) == 0) { |
|
| 2477 | - $op = '='; |
|
| 2478 | - $col = $val = $crit->op; |
|
| 2479 | - if (preg_match('/^(.*)\.(.*)$/', $col, $r)) { |
|
| 2480 | - $val = $r[2]; |
|
| 2481 | - } |
|
| 2482 | - // Cas special {lang} : aller chercher $GLOBALS['spip_lang'] |
|
| 2483 | - if ($val == 'lang') { |
|
| 2484 | - $val = [kwote('$GLOBALS[\'spip_lang\']')]; |
|
| 2485 | - } else { |
|
| 2486 | - $defaut = null; |
|
| 2487 | - if ($val == 'id_parent') { |
|
| 2488 | - // Si id_parent, comparer l'id_parent avec l'id_objet |
|
| 2489 | - // de la boucle superieure.... faudrait verifier qu'il existe |
|
| 2490 | - // pour eviter l'erreur SQL |
|
| 2491 | - $val = $boucles[$idb]->primary; |
|
| 2492 | - // mais si pas de boucle superieure, prendre id_parent dans l'env |
|
| 2493 | - $defaut = "(\$Pile[0]['id_parent'] ?? null)"; |
|
| 2494 | - } elseif ($val == 'id_enfant') { |
|
| 2495 | - // Si id_enfant, comparer l'id_objet avec l'id_parent |
|
| 2496 | - // de la boucle superieure |
|
| 2497 | - $val = 'id_parent'; |
|
| 2498 | - } elseif ($crit->cond and ($col == 'date' or $col == 'date_redac')) { |
|
| 2499 | - // un critere conditionnel sur date est traite a part |
|
| 2500 | - // car la date est mise d'office par SPIP, |
|
| 2501 | - $defaut = "(\$Pile[0]['{$col}_default']?'':\$Pile[0]['" . $col . "'])"; |
|
| 2502 | - } |
|
| 2503 | - |
|
| 2504 | - $val = calculer_argument_precedent($idb, $val, $boucles, $defaut); |
|
| 2505 | - $val = [kwote($val)]; |
|
| 2506 | - } |
|
| 2507 | - } else { |
|
| 2508 | - // comparaison explicite |
|
| 2509 | - // le phraseur impose que le premier param soit du texte |
|
| 2510 | - $params = $crit->param; |
|
| 2511 | - $op = $crit->op; |
|
| 2512 | - if ($op == '==') { |
|
| 2513 | - $op = 'REGEXP'; |
|
| 2514 | - } |
|
| 2515 | - $col = array_shift($params); |
|
| 2516 | - $col = $col[0]->texte; |
|
| 2517 | - |
|
| 2518 | - $val = []; |
|
| 2519 | - $parent = $boucles[$idb]->id_parent; |
|
| 2520 | - |
|
| 2521 | - // Dans le cas {x=='#DATE'} etc, defaire le travail du phraseur, |
|
| 2522 | - // celui ne sachant pas ce qu'est un critere infixe |
|
| 2523 | - // et a fortiori son 2e operande qu'entoure " ou ' |
|
| 2524 | - if ( |
|
| 2525 | - count($params) == 1 |
|
| 2526 | - and (is_countable($params[0]) ? count($params[0]) : 0) == 3 |
|
| 2527 | - and $params[0][0]->type == 'texte' |
|
| 2528 | - and $params[0][2]->type == 'texte' |
|
| 2529 | - and ($p = $params[0][0]->texte) == $params[0][2]->texte |
|
| 2530 | - and (($p == "'") or ($p == '"')) |
|
| 2531 | - and $params[0][1]->type == 'champ' |
|
| 2532 | - ) { |
|
| 2533 | - $val[] = "$p\\$p#" . $params[0][1]->nom_champ . "\\$p$p"; |
|
| 2534 | - } else { |
|
| 2535 | - foreach ((($op != 'IN') ? $params : calculer_vieux_in($params)) as $p) { |
|
| 2536 | - $a = calculer_liste($p, $idb, $boucles, $parent); |
|
| 2537 | - if (strcasecmp($op, 'IN') == 0) { |
|
| 2538 | - $val[] = $a; |
|
| 2539 | - } else { |
|
| 2540 | - $val[] = kwote($a, $boucles[$idb]->sql_serveur, '@@defaultcast@@'); |
|
| 2541 | - } // toujours quoter en char ici |
|
| 2542 | - } |
|
| 2543 | - } |
|
| 2544 | - } |
|
| 2545 | - |
|
| 2546 | - $fct = $args_sql = ''; |
|
| 2547 | - // fonction SQL ? |
|
| 2548 | - // chercher FONCTION(champ) tel que CONCAT(titre,descriptif) |
|
| 2549 | - if (preg_match('/^(.*)' . SQL_ARGS . '$/', $col, $m)) { |
|
| 2550 | - $fct = $m[1]; |
|
| 2551 | - preg_match('/^\(([^,]*)(.*)\)$/', $m[2], $a); |
|
| 2552 | - $col = $a[1]; |
|
| 2553 | - if (preg_match('/^(\S*)(\s+AS\s+.*)$/i', $col, $m)) { |
|
| 2554 | - $col = $m[1]; |
|
| 2555 | - $args_sql = $m[2]; |
|
| 2556 | - } |
|
| 2557 | - $args_sql .= $a[2]; |
|
| 2558 | - } |
|
| 2559 | - |
|
| 2560 | - return [$fct, $col, $op, $val, $args_sql]; |
|
| 2475 | + // cas d'une valeur comparee a elle-meme ou son referent |
|
| 2476 | + if (count($crit->param) == 0) { |
|
| 2477 | + $op = '='; |
|
| 2478 | + $col = $val = $crit->op; |
|
| 2479 | + if (preg_match('/^(.*)\.(.*)$/', $col, $r)) { |
|
| 2480 | + $val = $r[2]; |
|
| 2481 | + } |
|
| 2482 | + // Cas special {lang} : aller chercher $GLOBALS['spip_lang'] |
|
| 2483 | + if ($val == 'lang') { |
|
| 2484 | + $val = [kwote('$GLOBALS[\'spip_lang\']')]; |
|
| 2485 | + } else { |
|
| 2486 | + $defaut = null; |
|
| 2487 | + if ($val == 'id_parent') { |
|
| 2488 | + // Si id_parent, comparer l'id_parent avec l'id_objet |
|
| 2489 | + // de la boucle superieure.... faudrait verifier qu'il existe |
|
| 2490 | + // pour eviter l'erreur SQL |
|
| 2491 | + $val = $boucles[$idb]->primary; |
|
| 2492 | + // mais si pas de boucle superieure, prendre id_parent dans l'env |
|
| 2493 | + $defaut = "(\$Pile[0]['id_parent'] ?? null)"; |
|
| 2494 | + } elseif ($val == 'id_enfant') { |
|
| 2495 | + // Si id_enfant, comparer l'id_objet avec l'id_parent |
|
| 2496 | + // de la boucle superieure |
|
| 2497 | + $val = 'id_parent'; |
|
| 2498 | + } elseif ($crit->cond and ($col == 'date' or $col == 'date_redac')) { |
|
| 2499 | + // un critere conditionnel sur date est traite a part |
|
| 2500 | + // car la date est mise d'office par SPIP, |
|
| 2501 | + $defaut = "(\$Pile[0]['{$col}_default']?'':\$Pile[0]['" . $col . "'])"; |
|
| 2502 | + } |
|
| 2503 | + |
|
| 2504 | + $val = calculer_argument_precedent($idb, $val, $boucles, $defaut); |
|
| 2505 | + $val = [kwote($val)]; |
|
| 2506 | + } |
|
| 2507 | + } else { |
|
| 2508 | + // comparaison explicite |
|
| 2509 | + // le phraseur impose que le premier param soit du texte |
|
| 2510 | + $params = $crit->param; |
|
| 2511 | + $op = $crit->op; |
|
| 2512 | + if ($op == '==') { |
|
| 2513 | + $op = 'REGEXP'; |
|
| 2514 | + } |
|
| 2515 | + $col = array_shift($params); |
|
| 2516 | + $col = $col[0]->texte; |
|
| 2517 | + |
|
| 2518 | + $val = []; |
|
| 2519 | + $parent = $boucles[$idb]->id_parent; |
|
| 2520 | + |
|
| 2521 | + // Dans le cas {x=='#DATE'} etc, defaire le travail du phraseur, |
|
| 2522 | + // celui ne sachant pas ce qu'est un critere infixe |
|
| 2523 | + // et a fortiori son 2e operande qu'entoure " ou ' |
|
| 2524 | + if ( |
|
| 2525 | + count($params) == 1 |
|
| 2526 | + and (is_countable($params[0]) ? count($params[0]) : 0) == 3 |
|
| 2527 | + and $params[0][0]->type == 'texte' |
|
| 2528 | + and $params[0][2]->type == 'texte' |
|
| 2529 | + and ($p = $params[0][0]->texte) == $params[0][2]->texte |
|
| 2530 | + and (($p == "'") or ($p == '"')) |
|
| 2531 | + and $params[0][1]->type == 'champ' |
|
| 2532 | + ) { |
|
| 2533 | + $val[] = "$p\\$p#" . $params[0][1]->nom_champ . "\\$p$p"; |
|
| 2534 | + } else { |
|
| 2535 | + foreach ((($op != 'IN') ? $params : calculer_vieux_in($params)) as $p) { |
|
| 2536 | + $a = calculer_liste($p, $idb, $boucles, $parent); |
|
| 2537 | + if (strcasecmp($op, 'IN') == 0) { |
|
| 2538 | + $val[] = $a; |
|
| 2539 | + } else { |
|
| 2540 | + $val[] = kwote($a, $boucles[$idb]->sql_serveur, '@@defaultcast@@'); |
|
| 2541 | + } // toujours quoter en char ici |
|
| 2542 | + } |
|
| 2543 | + } |
|
| 2544 | + } |
|
| 2545 | + |
|
| 2546 | + $fct = $args_sql = ''; |
|
| 2547 | + // fonction SQL ? |
|
| 2548 | + // chercher FONCTION(champ) tel que CONCAT(titre,descriptif) |
|
| 2549 | + if (preg_match('/^(.*)' . SQL_ARGS . '$/', $col, $m)) { |
|
| 2550 | + $fct = $m[1]; |
|
| 2551 | + preg_match('/^\(([^,]*)(.*)\)$/', $m[2], $a); |
|
| 2552 | + $col = $a[1]; |
|
| 2553 | + if (preg_match('/^(\S*)(\s+AS\s+.*)$/i', $col, $m)) { |
|
| 2554 | + $col = $m[1]; |
|
| 2555 | + $args_sql = $m[2]; |
|
| 2556 | + } |
|
| 2557 | + $args_sql .= $a[2]; |
|
| 2558 | + } |
|
| 2559 | + |
|
| 2560 | + return [$fct, $col, $op, $val, $args_sql]; |
|
| 2561 | 2561 | } |
| 2562 | 2562 | |
| 2563 | 2563 | // compatibilite ancienne version |
| 2564 | 2564 | |
| 2565 | 2565 | function calculer_vieux_in($params) { |
| 2566 | - $deb = $params[0][0]; |
|
| 2567 | - $k = (is_countable($params) ? count($params) : 0) - 1; |
|
| 2568 | - $last = $params[$k]; |
|
| 2569 | - $j = (is_countable($last) ? count($last) : 0) - 1; |
|
| 2570 | - $last = $last[$j]; |
|
| 2571 | - $n = isset($last->texte) ? strlen($last->texte) : 0; |
|
| 2572 | - |
|
| 2573 | - if ( |
|
| 2574 | - !((isset($deb->texte[0]) and $deb->texte[0] == '(') |
|
| 2575 | - && (isset($last->texte[$n - 1]) and $last->texte[$n - 1] == ')')) |
|
| 2576 | - ) { |
|
| 2577 | - return $params; |
|
| 2578 | - } |
|
| 2579 | - $params[0][0]->texte = substr($deb->texte, 1); |
|
| 2580 | - // attention, on peut avoir k=0,j=0 ==> recalculer |
|
| 2581 | - $last = $params[$k][$j]; |
|
| 2582 | - $n = strlen($last->texte); |
|
| 2583 | - $params[$k][$j]->texte = substr($last->texte, 0, $n - 1); |
|
| 2584 | - $newp = []; |
|
| 2585 | - foreach ($params as $v) { |
|
| 2586 | - if ($v[0]->type != 'texte') { |
|
| 2587 | - $newp[] = $v; |
|
| 2588 | - } else { |
|
| 2589 | - foreach (explode(',', $v[0]->texte) as $x) { |
|
| 2590 | - $t = new Texte(); |
|
| 2591 | - $t->texte = $x; |
|
| 2592 | - $newp[] = [$t]; |
|
| 2593 | - } |
|
| 2594 | - } |
|
| 2595 | - } |
|
| 2596 | - |
|
| 2597 | - return $newp; |
|
| 2566 | + $deb = $params[0][0]; |
|
| 2567 | + $k = (is_countable($params) ? count($params) : 0) - 1; |
|
| 2568 | + $last = $params[$k]; |
|
| 2569 | + $j = (is_countable($last) ? count($last) : 0) - 1; |
|
| 2570 | + $last = $last[$j]; |
|
| 2571 | + $n = isset($last->texte) ? strlen($last->texte) : 0; |
|
| 2572 | + |
|
| 2573 | + if ( |
|
| 2574 | + !((isset($deb->texte[0]) and $deb->texte[0] == '(') |
|
| 2575 | + && (isset($last->texte[$n - 1]) and $last->texte[$n - 1] == ')')) |
|
| 2576 | + ) { |
|
| 2577 | + return $params; |
|
| 2578 | + } |
|
| 2579 | + $params[0][0]->texte = substr($deb->texte, 1); |
|
| 2580 | + // attention, on peut avoir k=0,j=0 ==> recalculer |
|
| 2581 | + $last = $params[$k][$j]; |
|
| 2582 | + $n = strlen($last->texte); |
|
| 2583 | + $params[$k][$j]->texte = substr($last->texte, 0, $n - 1); |
|
| 2584 | + $newp = []; |
|
| 2585 | + foreach ($params as $v) { |
|
| 2586 | + if ($v[0]->type != 'texte') { |
|
| 2587 | + $newp[] = $v; |
|
| 2588 | + } else { |
|
| 2589 | + foreach (explode(',', $v[0]->texte) as $x) { |
|
| 2590 | + $t = new Texte(); |
|
| 2591 | + $t->texte = $x; |
|
| 2592 | + $newp[] = [$t]; |
|
| 2593 | + } |
|
| 2594 | + } |
|
| 2595 | + } |
|
| 2596 | + |
|
| 2597 | + return $newp; |
|
| 2598 | 2598 | } |
| 2599 | 2599 | |
| 2600 | 2600 | /** |
@@ -2613,95 +2613,95 @@ discard block |
||
| 2613 | 2613 | * - nom de la colonne de date (si le calcul n'est pas relatif) |
| 2614 | 2614 | **/ |
| 2615 | 2615 | function calculer_critere_infixe_date($idb, &$boucles, $col) { |
| 2616 | - if (!preg_match(',^((age|jour|mois|annee)_relatif|date|mois|annee|jour|heure|age)(_[a-z_]+)?$,', $col, $regs)) { |
|
| 2617 | - return ''; |
|
| 2618 | - } |
|
| 2619 | - |
|
| 2620 | - $boucle = $boucles[$idb]; |
|
| 2621 | - $table = $boucle->show; |
|
| 2622 | - |
|
| 2623 | - // si c'est une colonne de la table, ne rien faire |
|
| 2624 | - if (isset($table['field'][$col])) { |
|
| 2625 | - return ''; |
|
| 2626 | - } |
|
| 2627 | - |
|
| 2628 | - // Le type de critère à prendre en compte |
|
| 2629 | - $col = $regs[1]; |
|
| 2630 | - |
|
| 2631 | - // Si on trouve un nom de champ date précis, on l'utilise, pas besoin de déclaration dans l'API objet |
|
| 2632 | - if (isset($regs[3]) and $suite = $regs[3]) { |
|
| 2633 | - # Recherche de l'existence du champ date_xxxx, |
|
| 2634 | - # si oui choisir ce champ, sinon choisir xxxx |
|
| 2635 | - if (isset($table['field']["date$suite"])) { |
|
| 2636 | - $date_orig = 'date' . $suite; |
|
| 2637 | - } else { |
|
| 2638 | - $date_orig = substr($suite, 1); |
|
| 2639 | - } |
|
| 2640 | - |
|
| 2641 | - $pred = $date_orig; |
|
| 2642 | - } else { // Sinon il FAUT avoir déclaré le champ date officiel dans l'API objet |
|
| 2643 | - // Si aucune déclaration trouvée, on quitte |
|
| 2644 | - if (!$table['date'] && !isset($GLOBALS['table_date'][$table['id_table']])) { |
|
| 2645 | - return ''; |
|
| 2646 | - } |
|
| 2647 | - // Par défaut, on prend le champ date déclaré dans l'API |
|
| 2648 | - $pred = $date_orig = $GLOBALS['table_date'][$table['id_table']] ?? $table['date']; |
|
| 2649 | - |
|
| 2650 | - // Si c'est pour du relatif |
|
| 2651 | - if (isset($regs[2]) and $rel = $regs[2]) { |
|
| 2652 | - $pred = 'date'; |
|
| 2653 | - } |
|
| 2654 | - } |
|
| 2655 | - |
|
| 2656 | - $date_compare = "\"' . normaliser_date(" . |
|
| 2657 | - calculer_argument_precedent($idb, $pred, $boucles) . |
|
| 2658 | - ") . '\""; |
|
| 2659 | - |
|
| 2660 | - $col_vraie = $date_orig; |
|
| 2661 | - $date_orig = $boucle->id_table . '.' . $date_orig; |
|
| 2662 | - |
|
| 2663 | - switch ($col) { |
|
| 2664 | - case 'date': |
|
| 2665 | - $col = $date_orig; |
|
| 2666 | - break; |
|
| 2667 | - case 'jour': |
|
| 2668 | - $col = "DAYOFMONTH($date_orig)"; |
|
| 2669 | - break; |
|
| 2670 | - case 'mois': |
|
| 2671 | - $col = "MONTH($date_orig)"; |
|
| 2672 | - break; |
|
| 2673 | - case 'annee': |
|
| 2674 | - $col = "YEAR($date_orig)"; |
|
| 2675 | - break; |
|
| 2676 | - case 'heure': |
|
| 2677 | - $col = "DATE_FORMAT($date_orig, \\'%H:%i\\')"; |
|
| 2678 | - break; |
|
| 2679 | - case 'age': |
|
| 2680 | - $col = calculer_param_date("\'' . date('Y-m-d H:i:00') . '\'", $date_orig); |
|
| 2681 | - $col_vraie = '';// comparer a un int (par defaut) |
|
| 2682 | - break; |
|
| 2683 | - case 'age_relatif': |
|
| 2684 | - $col = calculer_param_date($date_compare, $date_orig); |
|
| 2685 | - $col_vraie = '';// comparer a un int (par defaut) |
|
| 2686 | - break; |
|
| 2687 | - case 'jour_relatif': |
|
| 2688 | - $col = '(TO_DAYS(' . $date_compare . ')-TO_DAYS(' . $date_orig . '))'; |
|
| 2689 | - $col_vraie = '';// comparer a un int (par defaut) |
|
| 2690 | - break; |
|
| 2691 | - case 'mois_relatif': |
|
| 2692 | - $col = 'MONTH(' . $date_compare . ')-MONTH(' . |
|
| 2693 | - $date_orig . ')+12*(YEAR(' . $date_compare . |
|
| 2694 | - ')-YEAR(' . $date_orig . '))'; |
|
| 2695 | - $col_vraie = '';// comparer a un int (par defaut) |
|
| 2696 | - break; |
|
| 2697 | - case 'annee_relatif': |
|
| 2698 | - $col = 'YEAR(' . $date_compare . ')-YEAR(' . |
|
| 2699 | - $date_orig . ')'; |
|
| 2700 | - $col_vraie = '';// comparer a un int (par defaut) |
|
| 2701 | - break; |
|
| 2702 | - } |
|
| 2703 | - |
|
| 2704 | - return [$col, $col_vraie]; |
|
| 2616 | + if (!preg_match(',^((age|jour|mois|annee)_relatif|date|mois|annee|jour|heure|age)(_[a-z_]+)?$,', $col, $regs)) { |
|
| 2617 | + return ''; |
|
| 2618 | + } |
|
| 2619 | + |
|
| 2620 | + $boucle = $boucles[$idb]; |
|
| 2621 | + $table = $boucle->show; |
|
| 2622 | + |
|
| 2623 | + // si c'est une colonne de la table, ne rien faire |
|
| 2624 | + if (isset($table['field'][$col])) { |
|
| 2625 | + return ''; |
|
| 2626 | + } |
|
| 2627 | + |
|
| 2628 | + // Le type de critère à prendre en compte |
|
| 2629 | + $col = $regs[1]; |
|
| 2630 | + |
|
| 2631 | + // Si on trouve un nom de champ date précis, on l'utilise, pas besoin de déclaration dans l'API objet |
|
| 2632 | + if (isset($regs[3]) and $suite = $regs[3]) { |
|
| 2633 | + # Recherche de l'existence du champ date_xxxx, |
|
| 2634 | + # si oui choisir ce champ, sinon choisir xxxx |
|
| 2635 | + if (isset($table['field']["date$suite"])) { |
|
| 2636 | + $date_orig = 'date' . $suite; |
|
| 2637 | + } else { |
|
| 2638 | + $date_orig = substr($suite, 1); |
|
| 2639 | + } |
|
| 2640 | + |
|
| 2641 | + $pred = $date_orig; |
|
| 2642 | + } else { // Sinon il FAUT avoir déclaré le champ date officiel dans l'API objet |
|
| 2643 | + // Si aucune déclaration trouvée, on quitte |
|
| 2644 | + if (!$table['date'] && !isset($GLOBALS['table_date'][$table['id_table']])) { |
|
| 2645 | + return ''; |
|
| 2646 | + } |
|
| 2647 | + // Par défaut, on prend le champ date déclaré dans l'API |
|
| 2648 | + $pred = $date_orig = $GLOBALS['table_date'][$table['id_table']] ?? $table['date']; |
|
| 2649 | + |
|
| 2650 | + // Si c'est pour du relatif |
|
| 2651 | + if (isset($regs[2]) and $rel = $regs[2]) { |
|
| 2652 | + $pred = 'date'; |
|
| 2653 | + } |
|
| 2654 | + } |
|
| 2655 | + |
|
| 2656 | + $date_compare = "\"' . normaliser_date(" . |
|
| 2657 | + calculer_argument_precedent($idb, $pred, $boucles) . |
|
| 2658 | + ") . '\""; |
|
| 2659 | + |
|
| 2660 | + $col_vraie = $date_orig; |
|
| 2661 | + $date_orig = $boucle->id_table . '.' . $date_orig; |
|
| 2662 | + |
|
| 2663 | + switch ($col) { |
|
| 2664 | + case 'date': |
|
| 2665 | + $col = $date_orig; |
|
| 2666 | + break; |
|
| 2667 | + case 'jour': |
|
| 2668 | + $col = "DAYOFMONTH($date_orig)"; |
|
| 2669 | + break; |
|
| 2670 | + case 'mois': |
|
| 2671 | + $col = "MONTH($date_orig)"; |
|
| 2672 | + break; |
|
| 2673 | + case 'annee': |
|
| 2674 | + $col = "YEAR($date_orig)"; |
|
| 2675 | + break; |
|
| 2676 | + case 'heure': |
|
| 2677 | + $col = "DATE_FORMAT($date_orig, \\'%H:%i\\')"; |
|
| 2678 | + break; |
|
| 2679 | + case 'age': |
|
| 2680 | + $col = calculer_param_date("\'' . date('Y-m-d H:i:00') . '\'", $date_orig); |
|
| 2681 | + $col_vraie = '';// comparer a un int (par defaut) |
|
| 2682 | + break; |
|
| 2683 | + case 'age_relatif': |
|
| 2684 | + $col = calculer_param_date($date_compare, $date_orig); |
|
| 2685 | + $col_vraie = '';// comparer a un int (par defaut) |
|
| 2686 | + break; |
|
| 2687 | + case 'jour_relatif': |
|
| 2688 | + $col = '(TO_DAYS(' . $date_compare . ')-TO_DAYS(' . $date_orig . '))'; |
|
| 2689 | + $col_vraie = '';// comparer a un int (par defaut) |
|
| 2690 | + break; |
|
| 2691 | + case 'mois_relatif': |
|
| 2692 | + $col = 'MONTH(' . $date_compare . ')-MONTH(' . |
|
| 2693 | + $date_orig . ')+12*(YEAR(' . $date_compare . |
|
| 2694 | + ')-YEAR(' . $date_orig . '))'; |
|
| 2695 | + $col_vraie = '';// comparer a un int (par defaut) |
|
| 2696 | + break; |
|
| 2697 | + case 'annee_relatif': |
|
| 2698 | + $col = 'YEAR(' . $date_compare . ')-YEAR(' . |
|
| 2699 | + $date_orig . ')'; |
|
| 2700 | + $col_vraie = '';// comparer a un int (par defaut) |
|
| 2701 | + break; |
|
| 2702 | + } |
|
| 2703 | + |
|
| 2704 | + return [$col, $col_vraie]; |
|
| 2705 | 2705 | } |
| 2706 | 2706 | |
| 2707 | 2707 | /** |
@@ -2720,16 +2720,16 @@ discard block |
||
| 2720 | 2720 | * de colonne SQL et une date. |
| 2721 | 2721 | **/ |
| 2722 | 2722 | function calculer_param_date($date_compare, $date_orig) { |
| 2723 | - if (preg_match(",'\" *\.(.*)\. *\"',", $date_compare, $r)) { |
|
| 2724 | - $init = "'\" . (\$x = $r[1]) . \"'"; |
|
| 2725 | - $date_compare = '\'$x\''; |
|
| 2726 | - } else { |
|
| 2727 | - $init = $date_compare; |
|
| 2728 | - } |
|
| 2729 | - |
|
| 2730 | - return |
|
| 2731 | - // optimisation : mais prevoir le support SQLite avant |
|
| 2732 | - "TIMESTAMPDIFF(HOUR,$date_orig,$init)/24"; |
|
| 2723 | + if (preg_match(",'\" *\.(.*)\. *\"',", $date_compare, $r)) { |
|
| 2724 | + $init = "'\" . (\$x = $r[1]) . \"'"; |
|
| 2725 | + $date_compare = '\'$x\''; |
|
| 2726 | + } else { |
|
| 2727 | + $init = $date_compare; |
|
| 2728 | + } |
|
| 2729 | + |
|
| 2730 | + return |
|
| 2731 | + // optimisation : mais prevoir le support SQLite avant |
|
| 2732 | + "TIMESTAMPDIFF(HOUR,$date_orig,$init)/24"; |
|
| 2733 | 2733 | } |
| 2734 | 2734 | |
| 2735 | 2735 | /** |
@@ -2747,20 +2747,20 @@ discard block |
||
| 2747 | 2747 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 2748 | 2748 | */ |
| 2749 | 2749 | function critere_DATA_source_dist($idb, &$boucles, $crit) { |
| 2750 | - $boucle = &$boucles[$idb]; |
|
| 2751 | - |
|
| 2752 | - $args = []; |
|
| 2753 | - foreach ($crit->param as &$param) { |
|
| 2754 | - array_push( |
|
| 2755 | - $args, |
|
| 2756 | - calculer_liste($param, $idb, $boucles, $boucles[$idb]->id_parent) |
|
| 2757 | - ); |
|
| 2758 | - } |
|
| 2750 | + $boucle = &$boucles[$idb]; |
|
| 2759 | 2751 | |
| 2760 | - $boucle->hash .= ' |
|
| 2752 | + $args = []; |
|
| 2753 | + foreach ($crit->param as &$param) { |
|
| 2754 | + array_push( |
|
| 2755 | + $args, |
|
| 2756 | + calculer_liste($param, $idb, $boucles, $boucles[$idb]->id_parent) |
|
| 2757 | + ); |
|
| 2758 | + } |
|
| 2759 | + |
|
| 2760 | + $boucle->hash .= ' |
|
| 2761 | 2761 | $command[\'sourcemode\'] = ' . array_shift($args) . ";\n"; |
| 2762 | 2762 | |
| 2763 | - $boucle->hash .= ' |
|
| 2763 | + $boucle->hash .= ' |
|
| 2764 | 2764 | $command[\'source\'] = array(' . join(', ', $args) . ");\n"; |
| 2765 | 2765 | } |
| 2766 | 2766 | |
@@ -2778,8 +2778,8 @@ discard block |
||
| 2778 | 2778 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 2779 | 2779 | */ |
| 2780 | 2780 | function critere_DATA_datacache_dist($idb, &$boucles, $crit) { |
| 2781 | - $boucle = &$boucles[$idb]; |
|
| 2782 | - $boucle->hash .= ' |
|
| 2781 | + $boucle = &$boucles[$idb]; |
|
| 2782 | + $boucle->hash .= ' |
|
| 2783 | 2783 | $command[\'datacache\'] = ' . calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent) . ';'; |
| 2784 | 2784 | } |
| 2785 | 2785 | |
@@ -2795,12 +2795,12 @@ discard block |
||
| 2795 | 2795 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 2796 | 2796 | */ |
| 2797 | 2797 | function critere_php_args_dist($idb, &$boucles, $crit) { |
| 2798 | - $boucle = &$boucles[$idb]; |
|
| 2799 | - $boucle->hash .= '$command[\'args\']=array();'; |
|
| 2800 | - foreach ($crit->param as $param) { |
|
| 2801 | - $boucle->hash .= ' |
|
| 2798 | + $boucle = &$boucles[$idb]; |
|
| 2799 | + $boucle->hash .= '$command[\'args\']=array();'; |
|
| 2800 | + foreach ($crit->param as $param) { |
|
| 2801 | + $boucle->hash .= ' |
|
| 2802 | 2802 | $command[\'args\'][] = ' . calculer_liste($param, $idb, $boucles, $boucles[$idb]->id_parent) . ';'; |
| 2803 | - } |
|
| 2803 | + } |
|
| 2804 | 2804 | } |
| 2805 | 2805 | |
| 2806 | 2806 | /** |
@@ -2817,16 +2817,16 @@ discard block |
||
| 2817 | 2817 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 2818 | 2818 | */ |
| 2819 | 2819 | function critere_DATA_liste_dist($idb, &$boucles, $crit) { |
| 2820 | - $boucle = &$boucles[$idb]; |
|
| 2821 | - $boucle->hash .= "\n\t" . '$command[\'liste\'] = array();' . "\n"; |
|
| 2822 | - foreach ($crit->param as $param) { |
|
| 2823 | - $boucle->hash .= "\t" . '$command[\'liste\'][] = ' . calculer_liste( |
|
| 2824 | - $param, |
|
| 2825 | - $idb, |
|
| 2826 | - $boucles, |
|
| 2827 | - $boucles[$idb]->id_parent |
|
| 2828 | - ) . ";\n"; |
|
| 2829 | - } |
|
| 2820 | + $boucle = &$boucles[$idb]; |
|
| 2821 | + $boucle->hash .= "\n\t" . '$command[\'liste\'] = array();' . "\n"; |
|
| 2822 | + foreach ($crit->param as $param) { |
|
| 2823 | + $boucle->hash .= "\t" . '$command[\'liste\'][] = ' . calculer_liste( |
|
| 2824 | + $param, |
|
| 2825 | + $idb, |
|
| 2826 | + $boucles, |
|
| 2827 | + $boucles[$idb]->id_parent |
|
| 2828 | + ) . ";\n"; |
|
| 2829 | + } |
|
| 2830 | 2830 | } |
| 2831 | 2831 | |
| 2832 | 2832 | /** |
@@ -2851,16 +2851,16 @@ discard block |
||
| 2851 | 2851 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 2852 | 2852 | */ |
| 2853 | 2853 | function critere_DATA_enum_dist($idb, &$boucles, $crit) { |
| 2854 | - $boucle = &$boucles[$idb]; |
|
| 2855 | - $boucle->hash .= "\n\t" . '$command[\'enum\'] = array();' . "\n"; |
|
| 2856 | - foreach ($crit->param as $param) { |
|
| 2857 | - $boucle->hash .= "\t" . '$command[\'enum\'][] = ' . calculer_liste( |
|
| 2858 | - $param, |
|
| 2859 | - $idb, |
|
| 2860 | - $boucles, |
|
| 2861 | - $boucles[$idb]->id_parent |
|
| 2862 | - ) . ";\n"; |
|
| 2863 | - } |
|
| 2854 | + $boucle = &$boucles[$idb]; |
|
| 2855 | + $boucle->hash .= "\n\t" . '$command[\'enum\'] = array();' . "\n"; |
|
| 2856 | + foreach ($crit->param as $param) { |
|
| 2857 | + $boucle->hash .= "\t" . '$command[\'enum\'][] = ' . calculer_liste( |
|
| 2858 | + $param, |
|
| 2859 | + $idb, |
|
| 2860 | + $boucles, |
|
| 2861 | + $boucles[$idb]->id_parent |
|
| 2862 | + ) . ";\n"; |
|
| 2863 | + } |
|
| 2864 | 2864 | } |
| 2865 | 2865 | |
| 2866 | 2866 | /** |
@@ -2875,11 +2875,11 @@ discard block |
||
| 2875 | 2875 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 2876 | 2876 | */ |
| 2877 | 2877 | function critere_DATA_datapath_dist($idb, &$boucles, $crit) { |
| 2878 | - $boucle = &$boucles[$idb]; |
|
| 2879 | - foreach ($crit->param as $param) { |
|
| 2880 | - $boucle->hash .= ' |
|
| 2878 | + $boucle = &$boucles[$idb]; |
|
| 2879 | + foreach ($crit->param as $param) { |
|
| 2880 | + $boucle->hash .= ' |
|
| 2881 | 2881 | $command[\'datapath\'][] = ' . calculer_liste($param, $idb, $boucles, $boucles[$idb]->id_parent) . ';'; |
| 2882 | - } |
|
| 2882 | + } |
|
| 2883 | 2883 | } |
| 2884 | 2884 | |
| 2885 | 2885 | |
@@ -2911,20 +2911,20 @@ discard block |
||
| 2911 | 2911 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 2912 | 2912 | */ |
| 2913 | 2913 | function critere_si_dist($idb, &$boucles, $crit) { |
| 2914 | - $boucle = &$boucles[$idb]; |
|
| 2915 | - // il faut initialiser 1 fois le tableau a chaque appel de la boucle |
|
| 2916 | - // (par exemple lorsque notre boucle est appelee dans une autre boucle) |
|
| 2917 | - // mais ne pas l'initialiser n fois si il y a n criteres {si } dans la boucle ! |
|
| 2918 | - $boucle->hash .= "\n\tif (!isset(\$si_init)) { \$command['si'] = array(); \$si_init = true; }\n"; |
|
| 2919 | - if ($crit->param) { |
|
| 2920 | - foreach ($crit->param as $param) { |
|
| 2921 | - $boucle->hash .= "\t\$command['si'][] = " |
|
| 2922 | - . calculer_liste($param, $idb, $boucles, $boucles[$idb]->id_parent) . ";\n"; |
|
| 2923 | - } |
|
| 2924 | - // interdire {si 0} aussi ! |
|
| 2925 | - } else { |
|
| 2926 | - $boucle->hash .= '$command[\'si\'][] = 0;'; |
|
| 2927 | - } |
|
| 2914 | + $boucle = &$boucles[$idb]; |
|
| 2915 | + // il faut initialiser 1 fois le tableau a chaque appel de la boucle |
|
| 2916 | + // (par exemple lorsque notre boucle est appelee dans une autre boucle) |
|
| 2917 | + // mais ne pas l'initialiser n fois si il y a n criteres {si } dans la boucle ! |
|
| 2918 | + $boucle->hash .= "\n\tif (!isset(\$si_init)) { \$command['si'] = array(); \$si_init = true; }\n"; |
|
| 2919 | + if ($crit->param) { |
|
| 2920 | + foreach ($crit->param as $param) { |
|
| 2921 | + $boucle->hash .= "\t\$command['si'][] = " |
|
| 2922 | + . calculer_liste($param, $idb, $boucles, $boucles[$idb]->id_parent) . ";\n"; |
|
| 2923 | + } |
|
| 2924 | + // interdire {si 0} aussi ! |
|
| 2925 | + } else { |
|
| 2926 | + $boucle->hash .= '$command[\'si\'][] = 0;'; |
|
| 2927 | + } |
|
| 2928 | 2928 | } |
| 2929 | 2929 | |
| 2930 | 2930 | /** |
@@ -2941,8 +2941,8 @@ discard block |
||
| 2941 | 2941 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 2942 | 2942 | */ |
| 2943 | 2943 | function critere_POUR_tableau_dist($idb, &$boucles, $crit) { |
| 2944 | - $boucle = &$boucles[$idb]; |
|
| 2945 | - $boucle->hash .= ' |
|
| 2944 | + $boucle = &$boucles[$idb]; |
|
| 2945 | + $boucle->hash .= ' |
|
| 2946 | 2946 | $command[\'source\'] = array(' . calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent) . '); |
| 2947 | 2947 | $command[\'sourcemode\'] = \'table\';'; |
| 2948 | 2948 | } |
@@ -2963,27 +2963,27 @@ discard block |
||
| 2963 | 2963 | */ |
| 2964 | 2964 | function critere_noeud_dist($idb, &$boucles, $crit) { |
| 2965 | 2965 | |
| 2966 | - $not = $crit->not; |
|
| 2967 | - $boucle = &$boucles[$idb]; |
|
| 2968 | - $primary = $boucle->primary; |
|
| 2966 | + $not = $crit->not; |
|
| 2967 | + $boucle = &$boucles[$idb]; |
|
| 2968 | + $primary = $boucle->primary; |
|
| 2969 | 2969 | |
| 2970 | - if (!$primary or strpos($primary, ',')) { |
|
| 2971 | - erreur_squelette(_T('zbug_doublon_sur_table_sans_cle_primaire'), $boucle); |
|
| 2970 | + if (!$primary or strpos($primary, ',')) { |
|
| 2971 | + erreur_squelette(_T('zbug_doublon_sur_table_sans_cle_primaire'), $boucle); |
|
| 2972 | 2972 | |
| 2973 | - return; |
|
| 2974 | - } |
|
| 2975 | - $table = $boucle->type_requete; |
|
| 2976 | - $table_sql = table_objet_sql(objet_type($table)); |
|
| 2973 | + return; |
|
| 2974 | + } |
|
| 2975 | + $table = $boucle->type_requete; |
|
| 2976 | + $table_sql = table_objet_sql(objet_type($table)); |
|
| 2977 | 2977 | |
| 2978 | - $id_parent = $GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] ?? 'id_parent'; |
|
| 2978 | + $id_parent = $GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] ?? 'id_parent'; |
|
| 2979 | 2979 | |
| 2980 | - $in = 'IN'; |
|
| 2981 | - $where = ["'IN'", "'$boucle->id_table." . "$primary'", "'('.sql_get_select('$id_parent', '$table_sql').')'"]; |
|
| 2982 | - if ($not) { |
|
| 2983 | - $where = ["'NOT'", $where]; |
|
| 2984 | - } |
|
| 2980 | + $in = 'IN'; |
|
| 2981 | + $where = ["'IN'", "'$boucle->id_table." . "$primary'", "'('.sql_get_select('$id_parent', '$table_sql').')'"]; |
|
| 2982 | + if ($not) { |
|
| 2983 | + $where = ["'NOT'", $where]; |
|
| 2984 | + } |
|
| 2985 | 2985 | |
| 2986 | - $boucle->where[] = $where; |
|
| 2986 | + $boucle->where[] = $where; |
|
| 2987 | 2987 | } |
| 2988 | 2988 | |
| 2989 | 2989 | /** |
@@ -2999,8 +2999,8 @@ discard block |
||
| 2999 | 2999 | * @param Critere $crit Paramètres du critère dans cette boucle |
| 3000 | 3000 | */ |
| 3001 | 3001 | function critere_feuille_dist($idb, &$boucles, $crit) { |
| 3002 | - $not = $crit->not; |
|
| 3003 | - $crit->not = $not ? false : true; |
|
| 3004 | - critere_noeud_dist($idb, $boucles, $crit); |
|
| 3005 | - $crit->not = $not; |
|
| 3002 | + $not = $crit->not; |
|
| 3003 | + $crit->not = $not ? false : true; |
|
| 3004 | + critere_noeud_dist($idb, $boucles, $crit); |
|
| 3005 | + $crit->not = $not; |
|
| 3006 | 3006 | } |
@@ -19,7 +19,7 @@ discard block |
||
| 19 | 19 | */ |
| 20 | 20 | |
| 21 | 21 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 22 | - return; |
|
| 22 | + return; |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | |
@@ -55,65 +55,65 @@ discard block |
||
| 55 | 55 | * @return void |
| 56 | 56 | **/ |
| 57 | 57 | function calculer_rubriques_if($id_rubrique, $modifs, $infos = [], $postdate = false) { |
| 58 | - $statuts_publies = null; |
|
| 59 | - $neuf = false; |
|
| 60 | - |
|
| 61 | - // Compat avec l'ancienne signature |
|
| 62 | - if (is_string($infos)) { |
|
| 63 | - $infos = ['statut_ancien' => $infos]; |
|
| 64 | - } |
|
| 65 | - if (!isset($infos['statut_ancien'])) { |
|
| 66 | - $infos['statut_ancien'] = ''; |
|
| 67 | - } |
|
| 68 | - |
|
| 69 | - // On recherche quels statuts tester |
|
| 70 | - if ( |
|
| 71 | - isset($infos['objet']) |
|
| 72 | - and include_spip('inc/filtres') |
|
| 73 | - and $declaration_statut = objet_info($infos['objet'], 'statut') |
|
| 74 | - and is_array($declaration_statut) |
|
| 75 | - ) { |
|
| 76 | - foreach ($declaration_statut as $champ_statut) { |
|
| 77 | - if ($champ_statut['champ'] == 'statut') { |
|
| 78 | - $statuts_publies = array_map('trim', explode(',', $champ_statut['publie'])); |
|
| 79 | - break; // stop on a trouvé le bon champ |
|
| 80 | - } |
|
| 81 | - } |
|
| 82 | - } else { |
|
| 83 | - $statuts_publies = ['publie']; |
|
| 84 | - } |
|
| 85 | - |
|
| 86 | - if (in_array($infos['statut_ancien'], $statuts_publies)) { |
|
| 87 | - if ( |
|
| 88 | - isset($modifs['statut']) |
|
| 89 | - or isset($modifs['id_rubrique']) |
|
| 90 | - or ($postdate and strtotime($postdate) > time()) |
|
| 91 | - ) { |
|
| 92 | - $neuf |= depublier_branche_rubrique_if($id_rubrique); |
|
| 93 | - } |
|
| 94 | - // ne publier que si c'est pas un postdate, ou si la date n'est pas dans le futur |
|
| 95 | - if ($postdate) { |
|
| 96 | - calculer_prochain_postdate(true); |
|
| 97 | - $neuf |= (strtotime($postdate) <= time()); // par securite |
|
| 98 | - } elseif (isset($modifs['id_rubrique'])) { |
|
| 99 | - $neuf |= publier_branche_rubrique($modifs['id_rubrique']); |
|
| 100 | - } |
|
| 101 | - } elseif (isset($modifs['statut']) and in_array($modifs['statut'], $statuts_publies)) { |
|
| 102 | - if ($postdate) { |
|
| 103 | - calculer_prochain_postdate(true); |
|
| 104 | - $neuf |= (strtotime($postdate) <= time()); // par securite |
|
| 105 | - } else { |
|
| 106 | - $neuf |= publier_branche_rubrique($id_rubrique); |
|
| 107 | - } |
|
| 108 | - } |
|
| 109 | - |
|
| 110 | - if ($neuf) { |
|
| 111 | - // Sauver la date de la derniere mise a jour (pour menu_rubriques) |
|
| 112 | - ecrire_meta('date_calcul_rubriques', date('U')); |
|
| 113 | - } |
|
| 114 | - |
|
| 115 | - $langues = calculer_langues_utilisees(); |
|
| 116 | - ecrire_meta('langues_utilisees', $langues); |
|
| 58 | + $statuts_publies = null; |
|
| 59 | + $neuf = false; |
|
| 60 | + |
|
| 61 | + // Compat avec l'ancienne signature |
|
| 62 | + if (is_string($infos)) { |
|
| 63 | + $infos = ['statut_ancien' => $infos]; |
|
| 64 | + } |
|
| 65 | + if (!isset($infos['statut_ancien'])) { |
|
| 66 | + $infos['statut_ancien'] = ''; |
|
| 67 | + } |
|
| 68 | + |
|
| 69 | + // On recherche quels statuts tester |
|
| 70 | + if ( |
|
| 71 | + isset($infos['objet']) |
|
| 72 | + and include_spip('inc/filtres') |
|
| 73 | + and $declaration_statut = objet_info($infos['objet'], 'statut') |
|
| 74 | + and is_array($declaration_statut) |
|
| 75 | + ) { |
|
| 76 | + foreach ($declaration_statut as $champ_statut) { |
|
| 77 | + if ($champ_statut['champ'] == 'statut') { |
|
| 78 | + $statuts_publies = array_map('trim', explode(',', $champ_statut['publie'])); |
|
| 79 | + break; // stop on a trouvé le bon champ |
|
| 80 | + } |
|
| 81 | + } |
|
| 82 | + } else { |
|
| 83 | + $statuts_publies = ['publie']; |
|
| 84 | + } |
|
| 85 | + |
|
| 86 | + if (in_array($infos['statut_ancien'], $statuts_publies)) { |
|
| 87 | + if ( |
|
| 88 | + isset($modifs['statut']) |
|
| 89 | + or isset($modifs['id_rubrique']) |
|
| 90 | + or ($postdate and strtotime($postdate) > time()) |
|
| 91 | + ) { |
|
| 92 | + $neuf |= depublier_branche_rubrique_if($id_rubrique); |
|
| 93 | + } |
|
| 94 | + // ne publier que si c'est pas un postdate, ou si la date n'est pas dans le futur |
|
| 95 | + if ($postdate) { |
|
| 96 | + calculer_prochain_postdate(true); |
|
| 97 | + $neuf |= (strtotime($postdate) <= time()); // par securite |
|
| 98 | + } elseif (isset($modifs['id_rubrique'])) { |
|
| 99 | + $neuf |= publier_branche_rubrique($modifs['id_rubrique']); |
|
| 100 | + } |
|
| 101 | + } elseif (isset($modifs['statut']) and in_array($modifs['statut'], $statuts_publies)) { |
|
| 102 | + if ($postdate) { |
|
| 103 | + calculer_prochain_postdate(true); |
|
| 104 | + $neuf |= (strtotime($postdate) <= time()); // par securite |
|
| 105 | + } else { |
|
| 106 | + $neuf |= publier_branche_rubrique($id_rubrique); |
|
| 107 | + } |
|
| 108 | + } |
|
| 109 | + |
|
| 110 | + if ($neuf) { |
|
| 111 | + // Sauver la date de la derniere mise a jour (pour menu_rubriques) |
|
| 112 | + ecrire_meta('date_calcul_rubriques', date('U')); |
|
| 113 | + } |
|
| 114 | + |
|
| 115 | + $langues = calculer_langues_utilisees(); |
|
| 116 | + ecrire_meta('langues_utilisees', $langues); |
|
| 117 | 117 | } |
| 118 | 118 | |
| 119 | 119 | |
@@ -131,22 +131,22 @@ discard block |
||
| 131 | 131 | * true si le statut change effectivement |
| 132 | 132 | */ |
| 133 | 133 | function publier_branche_rubrique($id_rubrique) { |
| 134 | - $id_pred = $id_rubrique; |
|
| 135 | - while (true) { |
|
| 136 | - sql_updateq( |
|
| 137 | - 'spip_rubriques', |
|
| 138 | - ['statut' => 'publie', 'date' => date('Y-m-d H:i:s')], |
|
| 139 | - 'id_rubrique=' . intval($id_rubrique) |
|
| 140 | - ); |
|
| 141 | - $id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique)); |
|
| 142 | - if (!$id_parent) { |
|
| 143 | - break; |
|
| 144 | - } |
|
| 145 | - $id_rubrique = $id_parent; |
|
| 146 | - } |
|
| 134 | + $id_pred = $id_rubrique; |
|
| 135 | + while (true) { |
|
| 136 | + sql_updateq( |
|
| 137 | + 'spip_rubriques', |
|
| 138 | + ['statut' => 'publie', 'date' => date('Y-m-d H:i:s')], |
|
| 139 | + 'id_rubrique=' . intval($id_rubrique) |
|
| 140 | + ); |
|
| 141 | + $id_parent = sql_getfetsel('id_parent', 'spip_rubriques AS R', 'R.id_rubrique=' . intval($id_rubrique)); |
|
| 142 | + if (!$id_parent) { |
|
| 143 | + break; |
|
| 144 | + } |
|
| 145 | + $id_rubrique = $id_parent; |
|
| 146 | + } |
|
| 147 | 147 | |
| 148 | 148 | # spip_log(" publier_branche_rubrique($id_rubrique $id_pred"); |
| 149 | - return $id_pred != $id_rubrique; |
|
| 149 | + return $id_pred != $id_rubrique; |
|
| 150 | 150 | } |
| 151 | 151 | |
| 152 | 152 | /** |
@@ -164,20 +164,20 @@ discard block |
||
| 164 | 164 | * true si le statut change effectivement |
| 165 | 165 | */ |
| 166 | 166 | function depublier_branche_rubrique_if($id_rubrique) { |
| 167 | - $date = date('Y-m-d H:i:s'); // figer la date |
|
| 168 | - |
|
| 169 | - # spip_log("depublier_branche_rubrique($id_rubrique ?"); |
|
| 170 | - $id_pred = $id_rubrique; |
|
| 171 | - while ($id_pred) { |
|
| 172 | - if (!depublier_rubrique_if($id_pred, $date)) { |
|
| 173 | - return $id_pred != $id_rubrique; |
|
| 174 | - } |
|
| 175 | - // passer au parent si on a depublie |
|
| 176 | - $r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred)); |
|
| 177 | - $id_pred = $r['id_parent']; |
|
| 178 | - } |
|
| 179 | - |
|
| 180 | - return $id_pred != $id_rubrique; |
|
| 167 | + $date = date('Y-m-d H:i:s'); // figer la date |
|
| 168 | + |
|
| 169 | + # spip_log("depublier_branche_rubrique($id_rubrique ?"); |
|
| 170 | + $id_pred = $id_rubrique; |
|
| 171 | + while ($id_pred) { |
|
| 172 | + if (!depublier_rubrique_if($id_pred, $date)) { |
|
| 173 | + return $id_pred != $id_rubrique; |
|
| 174 | + } |
|
| 175 | + // passer au parent si on a depublie |
|
| 176 | + $r = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_pred)); |
|
| 177 | + $id_pred = $r['id_parent']; |
|
| 178 | + } |
|
| 179 | + |
|
| 180 | + return $id_pred != $id_rubrique; |
|
| 181 | 181 | } |
| 182 | 182 | |
| 183 | 183 | /** |
@@ -194,61 +194,61 @@ discard block |
||
| 194 | 194 | * true si la rubrique a été dépubliée |
| 195 | 195 | */ |
| 196 | 196 | function depublier_rubrique_if($id_rubrique, $date = null) { |
| 197 | - if (is_null($date)) { |
|
| 198 | - $date = date('Y-m-d H:i:s'); |
|
| 199 | - } |
|
| 200 | - $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 201 | - ' AND date <= ' . sql_quote($date) : ''; |
|
| 202 | - |
|
| 203 | - if (!$id_rubrique = intval($id_rubrique)) { |
|
| 204 | - return false; |
|
| 205 | - } |
|
| 206 | - |
|
| 207 | - // verifier qu'elle existe et est bien publiee |
|
| 208 | - $r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 209 | - if (!$r or $r['statut'] !== 'publie') { |
|
| 210 | - return false; |
|
| 211 | - } |
|
| 212 | - |
|
| 213 | - // On met le nombre de chaque type d'enfants dans un tableau |
|
| 214 | - // Le type de l'objet est au pluriel |
|
| 215 | - $compte = [ |
|
| 216 | - 'articles' => sql_countsel( |
|
| 217 | - 'spip_articles', |
|
| 218 | - 'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates" |
|
| 219 | - ), |
|
| 220 | - 'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"), |
|
| 221 | - 'documents' => sql_countsel( |
|
| 222 | - 'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', |
|
| 223 | - 'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') " |
|
| 224 | - ) |
|
| 225 | - ]; |
|
| 226 | - |
|
| 227 | - // On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants |
|
| 228 | - $compte = pipeline( |
|
| 229 | - 'objet_compte_enfants', |
|
| 230 | - [ |
|
| 231 | - 'args' => [ |
|
| 232 | - 'objet' => 'rubrique', |
|
| 233 | - 'id_objet' => $id_rubrique, |
|
| 234 | - 'statut' => 'publie', |
|
| 235 | - 'date' => $date |
|
| 236 | - ], |
|
| 237 | - 'data' => $compte |
|
| 238 | - ] |
|
| 239 | - ); |
|
| 240 | - |
|
| 241 | - // S'il y a au moins un enfant de n'importe quoi, on ne dépublie pas |
|
| 242 | - foreach ($compte as $objet => $n) { |
|
| 243 | - if ($n) { |
|
| 244 | - return false; |
|
| 245 | - } |
|
| 246 | - } |
|
| 247 | - |
|
| 248 | - sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique)); |
|
| 197 | + if (is_null($date)) { |
|
| 198 | + $date = date('Y-m-d H:i:s'); |
|
| 199 | + } |
|
| 200 | + $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 201 | + ' AND date <= ' . sql_quote($date) : ''; |
|
| 202 | + |
|
| 203 | + if (!$id_rubrique = intval($id_rubrique)) { |
|
| 204 | + return false; |
|
| 205 | + } |
|
| 206 | + |
|
| 207 | + // verifier qu'elle existe et est bien publiee |
|
| 208 | + $r = sql_fetsel('id_rubrique,statut', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 209 | + if (!$r or $r['statut'] !== 'publie') { |
|
| 210 | + return false; |
|
| 211 | + } |
|
| 212 | + |
|
| 213 | + // On met le nombre de chaque type d'enfants dans un tableau |
|
| 214 | + // Le type de l'objet est au pluriel |
|
| 215 | + $compte = [ |
|
| 216 | + 'articles' => sql_countsel( |
|
| 217 | + 'spip_articles', |
|
| 218 | + 'id_rubrique=' . intval($id_rubrique) . " AND statut='publie'$postdates" |
|
| 219 | + ), |
|
| 220 | + 'rubriques' => sql_countsel('spip_rubriques', 'id_parent=' . intval($id_rubrique) . " AND statut='publie'"), |
|
| 221 | + 'documents' => sql_countsel( |
|
| 222 | + 'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', |
|
| 223 | + 'L.id_objet=' . intval($id_rubrique) . " AND L.objet='rubrique' and D.mode NOT IN('logoon', 'logooff') " |
|
| 224 | + ) |
|
| 225 | + ]; |
|
| 226 | + |
|
| 227 | + // On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants |
|
| 228 | + $compte = pipeline( |
|
| 229 | + 'objet_compte_enfants', |
|
| 230 | + [ |
|
| 231 | + 'args' => [ |
|
| 232 | + 'objet' => 'rubrique', |
|
| 233 | + 'id_objet' => $id_rubrique, |
|
| 234 | + 'statut' => 'publie', |
|
| 235 | + 'date' => $date |
|
| 236 | + ], |
|
| 237 | + 'data' => $compte |
|
| 238 | + ] |
|
| 239 | + ); |
|
| 240 | + |
|
| 241 | + // S'il y a au moins un enfant de n'importe quoi, on ne dépublie pas |
|
| 242 | + foreach ($compte as $objet => $n) { |
|
| 243 | + if ($n) { |
|
| 244 | + return false; |
|
| 245 | + } |
|
| 246 | + } |
|
| 247 | + |
|
| 248 | + sql_updateq('spip_rubriques', ['statut' => 'prepa'], 'id_rubrique=' . intval($id_rubrique)); |
|
| 249 | 249 | |
| 250 | 250 | # spip_log("depublier_rubrique $id_pred"); |
| 251 | - return true; |
|
| 251 | + return true; |
|
| 252 | 252 | } |
| 253 | 253 | |
| 254 | 254 | |
@@ -271,18 +271,18 @@ discard block |
||
| 271 | 271 | **/ |
| 272 | 272 | function calculer_rubriques() { |
| 273 | 273 | |
| 274 | - calculer_rubriques_publiees(); |
|
| 274 | + calculer_rubriques_publiees(); |
|
| 275 | 275 | |
| 276 | - // Apres chaque (de)publication |
|
| 277 | - // recalculer les langues utilisees sur le site |
|
| 278 | - $langues = calculer_langues_utilisees(); |
|
| 279 | - ecrire_meta('langues_utilisees', $langues); |
|
| 276 | + // Apres chaque (de)publication |
|
| 277 | + // recalculer les langues utilisees sur le site |
|
| 278 | + $langues = calculer_langues_utilisees(); |
|
| 279 | + ecrire_meta('langues_utilisees', $langues); |
|
| 280 | 280 | |
| 281 | - // Sauver la date de la derniere mise a jour (pour menu_rubriques) |
|
| 282 | - ecrire_meta('date_calcul_rubriques', date('U')); |
|
| 281 | + // Sauver la date de la derniere mise a jour (pour menu_rubriques) |
|
| 282 | + ecrire_meta('date_calcul_rubriques', date('U')); |
|
| 283 | 283 | |
| 284 | - // on calcule la date du prochain article post-date |
|
| 285 | - calculer_prochain_postdate(); |
|
| 284 | + // on calcule la date du prochain article post-date |
|
| 285 | + calculer_prochain_postdate(); |
|
| 286 | 286 | } |
| 287 | 287 | |
| 288 | 288 | |
@@ -299,61 +299,61 @@ discard block |
||
| 299 | 299 | **/ |
| 300 | 300 | function calculer_rubriques_publiees() { |
| 301 | 301 | |
| 302 | - // Mettre les compteurs a zero |
|
| 303 | - sql_updateq('spip_rubriques', ['date_tmp' => '0000-00-00 00:00:00', 'statut_tmp' => 'prepa']); |
|
| 304 | - |
|
| 305 | - // |
|
| 306 | - // Publier et dater les rubriques qui ont un article publie |
|
| 307 | - // |
|
| 308 | - |
|
| 309 | - // Afficher les articles post-dates ? |
|
| 310 | - $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 311 | - 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 312 | - |
|
| 313 | - $r = sql_select( |
|
| 314 | - 'R.id_rubrique AS id, max(A.date) AS date_h', |
|
| 315 | - 'spip_rubriques AS R JOIN spip_articles AS A ON R.id_rubrique = A.id_rubrique', |
|
| 316 | - "A.date>R.date_tmp AND A.statut='publie' $postdates ", |
|
| 317 | - 'R.id_rubrique' |
|
| 318 | - ); |
|
| 319 | - while ($row = sql_fetch($r)) { |
|
| 320 | - sql_updateq( |
|
| 321 | - 'spip_rubriques', |
|
| 322 | - ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
|
| 323 | - 'id_rubrique=' . intval($row['id']) |
|
| 324 | - ); |
|
| 325 | - } |
|
| 326 | - |
|
| 327 | - // point d'entree pour permettre a des plugins de gerer le statut |
|
| 328 | - // autrement (par ex: toute rubrique est publiee des sa creation) |
|
| 329 | - // Ce pipeline fait ce qu'il veut, mais s'il touche aux statuts/dates |
|
| 330 | - // c'est statut_tmp/date_tmp qu'il doit modifier |
|
| 331 | - // [C'est un trigger... a renommer en trig_calculer_rubriques ?] |
|
| 332 | - pipeline('calculer_rubriques', null); |
|
| 333 | - |
|
| 334 | - |
|
| 335 | - // Les rubriques qui ont une rubrique fille plus recente |
|
| 336 | - // on tourne tant que les donnees remontent vers la racine. |
|
| 337 | - do { |
|
| 338 | - $continuer = false; |
|
| 339 | - $r = sql_select( |
|
| 340 | - 'R.id_rubrique AS id, max(SR.date_tmp) AS date_h', |
|
| 341 | - 'spip_rubriques AS R JOIN spip_rubriques AS SR ON R.id_rubrique = SR.id_parent', |
|
| 342 | - "(SR.date_tmp>R.date_tmp OR R.statut_tmp<>'publie') AND SR.statut_tmp='publie' ", |
|
| 343 | - 'R.id_rubrique' |
|
| 344 | - ); |
|
| 345 | - while ($row = sql_fetch($r)) { |
|
| 346 | - sql_updateq( |
|
| 347 | - 'spip_rubriques', |
|
| 348 | - ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
|
| 349 | - 'id_rubrique=' . intval($row['id']) |
|
| 350 | - ); |
|
| 351 | - $continuer = true; |
|
| 352 | - } |
|
| 353 | - } while ($continuer); |
|
| 354 | - |
|
| 355 | - // Enregistrement des modifs |
|
| 356 | - sql_update('spip_rubriques', ['date' => 'date_tmp', 'statut' => 'statut_tmp']); |
|
| 302 | + // Mettre les compteurs a zero |
|
| 303 | + sql_updateq('spip_rubriques', ['date_tmp' => '0000-00-00 00:00:00', 'statut_tmp' => 'prepa']); |
|
| 304 | + |
|
| 305 | + // |
|
| 306 | + // Publier et dater les rubriques qui ont un article publie |
|
| 307 | + // |
|
| 308 | + |
|
| 309 | + // Afficher les articles post-dates ? |
|
| 310 | + $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 311 | + 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 312 | + |
|
| 313 | + $r = sql_select( |
|
| 314 | + 'R.id_rubrique AS id, max(A.date) AS date_h', |
|
| 315 | + 'spip_rubriques AS R JOIN spip_articles AS A ON R.id_rubrique = A.id_rubrique', |
|
| 316 | + "A.date>R.date_tmp AND A.statut='publie' $postdates ", |
|
| 317 | + 'R.id_rubrique' |
|
| 318 | + ); |
|
| 319 | + while ($row = sql_fetch($r)) { |
|
| 320 | + sql_updateq( |
|
| 321 | + 'spip_rubriques', |
|
| 322 | + ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
|
| 323 | + 'id_rubrique=' . intval($row['id']) |
|
| 324 | + ); |
|
| 325 | + } |
|
| 326 | + |
|
| 327 | + // point d'entree pour permettre a des plugins de gerer le statut |
|
| 328 | + // autrement (par ex: toute rubrique est publiee des sa creation) |
|
| 329 | + // Ce pipeline fait ce qu'il veut, mais s'il touche aux statuts/dates |
|
| 330 | + // c'est statut_tmp/date_tmp qu'il doit modifier |
|
| 331 | + // [C'est un trigger... a renommer en trig_calculer_rubriques ?] |
|
| 332 | + pipeline('calculer_rubriques', null); |
|
| 333 | + |
|
| 334 | + |
|
| 335 | + // Les rubriques qui ont une rubrique fille plus recente |
|
| 336 | + // on tourne tant que les donnees remontent vers la racine. |
|
| 337 | + do { |
|
| 338 | + $continuer = false; |
|
| 339 | + $r = sql_select( |
|
| 340 | + 'R.id_rubrique AS id, max(SR.date_tmp) AS date_h', |
|
| 341 | + 'spip_rubriques AS R JOIN spip_rubriques AS SR ON R.id_rubrique = SR.id_parent', |
|
| 342 | + "(SR.date_tmp>R.date_tmp OR R.statut_tmp<>'publie') AND SR.statut_tmp='publie' ", |
|
| 343 | + 'R.id_rubrique' |
|
| 344 | + ); |
|
| 345 | + while ($row = sql_fetch($r)) { |
|
| 346 | + sql_updateq( |
|
| 347 | + 'spip_rubriques', |
|
| 348 | + ['statut_tmp' => 'publie', 'date_tmp' => $row['date_h']], |
|
| 349 | + 'id_rubrique=' . intval($row['id']) |
|
| 350 | + ); |
|
| 351 | + $continuer = true; |
|
| 352 | + } |
|
| 353 | + } while ($continuer); |
|
| 354 | + |
|
| 355 | + // Enregistrement des modifs |
|
| 356 | + sql_update('spip_rubriques', ['date' => 'date_tmp', 'statut' => 'statut_tmp']); |
|
| 357 | 357 | } |
| 358 | 358 | |
| 359 | 359 | /** |
@@ -368,123 +368,123 @@ discard block |
||
| 368 | 368 | * @return void |
| 369 | 369 | **/ |
| 370 | 370 | function propager_les_secteurs() { |
| 371 | - // Profondeur 0 |
|
| 372 | - // Toutes les rubriques racines sont de profondeur 0 |
|
| 373 | - // et fixer les id_secteur des rubriques racines |
|
| 374 | - sql_update('spip_rubriques', ['id_secteur' => 'id_rubrique', 'profondeur' => 0], 'id_parent=0'); |
|
| 375 | - // Toute rubrique non racine est de profondeur >0 |
|
| 376 | - sql_updateq('spip_rubriques', ['profondeur' => 1], 'id_parent<>0 AND profondeur=0'); |
|
| 377 | - |
|
| 378 | - // securite : pas plus d'iteration que de rubriques dans la base |
|
| 379 | - $maxiter = sql_countsel('spip_rubriques'); |
|
| 380 | - |
|
| 381 | - // reparer les rubriques qui n'ont pas l'id_secteur de leur parent |
|
| 382 | - // on fait profondeur par profondeur |
|
| 383 | - |
|
| 384 | - $prof = 0; |
|
| 385 | - do { |
|
| 386 | - $continuer = false; |
|
| 387 | - |
|
| 388 | - // Par recursivite : si toutes les rubriques de profondeur $prof sont bonnes |
|
| 389 | - // on fixe le profondeur $prof+1 |
|
| 390 | - |
|
| 391 | - // Toutes les rubriques dont le parent est de profondeur $prof ont une profondeur $prof+1 |
|
| 392 | - // on teste A.profondeur > $prof+1 car : |
|
| 393 | - // - toutes les rubriques de profondeur 0 à $prof sont bonnes |
|
| 394 | - // - si A.profondeur = $prof+1 c'est bon |
|
| 395 | - // - cela nous protege de la boucle infinie en cas de reference circulaire dans les rubriques |
|
| 396 | - $maxiter2 = $maxiter; |
|
| 397 | - while ( |
|
| 398 | - $maxiter2-- |
|
| 399 | - and $rows = sql_allfetsel( |
|
| 400 | - 'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur', |
|
| 401 | - 'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique', |
|
| 402 | - 'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)', |
|
| 403 | - '', |
|
| 404 | - 'R.id_secteur', |
|
| 405 | - '0,100' |
|
| 406 | - ) |
|
| 407 | - ) { |
|
| 408 | - $id_secteur = null; |
|
| 409 | - $ids = []; |
|
| 410 | - while ($row = array_shift($rows)) { |
|
| 411 | - if ($row['id_secteur'] !== $id_secteur) { |
|
| 412 | - if (count($ids)) { |
|
| 413 | - sql_updateq( |
|
| 414 | - 'spip_rubriques', |
|
| 415 | - ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1], |
|
| 416 | - sql_in('id_rubrique', $ids) |
|
| 417 | - ); |
|
| 418 | - } |
|
| 419 | - $id_secteur = $row['id_secteur']; |
|
| 420 | - $ids = []; |
|
| 421 | - } |
|
| 422 | - $ids[] = $row['id']; |
|
| 423 | - } |
|
| 424 | - if (count($ids)) { |
|
| 425 | - sql_updateq( |
|
| 426 | - 'spip_rubriques', |
|
| 427 | - ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1], |
|
| 428 | - sql_in('id_rubrique', $ids) |
|
| 429 | - ); |
|
| 430 | - } |
|
| 431 | - } |
|
| 432 | - |
|
| 433 | - |
|
| 434 | - // Toutes les rubriques de profondeur $prof+1 qui n'ont pas un parent de profondeur $prof sont decalees |
|
| 435 | - $maxiter2 = $maxiter; |
|
| 436 | - while ( |
|
| 437 | - $maxiter2-- |
|
| 438 | - and $rows = sql_allfetsel( |
|
| 439 | - 'id_rubrique as id', |
|
| 440 | - 'spip_rubriques', |
|
| 441 | - 'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select( |
|
| 442 | - 'zzz.id_rubrique', |
|
| 443 | - 'spip_rubriques AS zzz', |
|
| 444 | - 'zzz.profondeur=' . intval($prof) |
|
| 445 | - ) . ')', |
|
| 446 | - '', |
|
| 447 | - '', |
|
| 448 | - '0,100' |
|
| 449 | - ) |
|
| 450 | - ) { |
|
| 451 | - $rows = array_column($rows, 'id'); |
|
| 452 | - sql_updateq('spip_rubriques', ['profondeur' => $prof + 2], sql_in('id_rubrique', $rows)); |
|
| 453 | - } |
|
| 454 | - |
|
| 455 | - // ici on a fini de valider $prof+1, toutes les rubriques de prondeur 0 a $prof+1 sont OK |
|
| 456 | - // si pas de rubrique a profondeur $prof+1 pas la peine de continuer |
|
| 457 | - // si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse) |
|
| 458 | - // on arrete les frais |
|
| 459 | - if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) { |
|
| 460 | - $prof++; |
|
| 461 | - $continuer = true; |
|
| 462 | - } |
|
| 463 | - } while ($continuer and $maxiter--); |
|
| 464 | - |
|
| 465 | - // loger si la table des rubriques semble foireuse |
|
| 466 | - // et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles |
|
| 467 | - if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) { |
|
| 468 | - spip_log( |
|
| 469 | - 'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)', |
|
| 470 | - _LOG_CRITIQUE |
|
| 471 | - ); |
|
| 472 | - sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1)); |
|
| 473 | - } |
|
| 474 | - |
|
| 475 | - // reparer les articles |
|
| 476 | - $r = sql_select( |
|
| 477 | - 'A.id_article AS id, R.id_secteur AS secteur', |
|
| 478 | - 'spip_articles AS A, spip_rubriques AS R', |
|
| 479 | - 'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur' |
|
| 480 | - ); |
|
| 481 | - |
|
| 482 | - while ($row = sql_fetch($r)) { |
|
| 483 | - sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id'])); |
|
| 484 | - } |
|
| 485 | - |
|
| 486 | - // avertir les plugins qui peuvent faire leur mises a jour egalement |
|
| 487 | - pipeline('trig_propager_les_secteurs', ''); |
|
| 371 | + // Profondeur 0 |
|
| 372 | + // Toutes les rubriques racines sont de profondeur 0 |
|
| 373 | + // et fixer les id_secteur des rubriques racines |
|
| 374 | + sql_update('spip_rubriques', ['id_secteur' => 'id_rubrique', 'profondeur' => 0], 'id_parent=0'); |
|
| 375 | + // Toute rubrique non racine est de profondeur >0 |
|
| 376 | + sql_updateq('spip_rubriques', ['profondeur' => 1], 'id_parent<>0 AND profondeur=0'); |
|
| 377 | + |
|
| 378 | + // securite : pas plus d'iteration que de rubriques dans la base |
|
| 379 | + $maxiter = sql_countsel('spip_rubriques'); |
|
| 380 | + |
|
| 381 | + // reparer les rubriques qui n'ont pas l'id_secteur de leur parent |
|
| 382 | + // on fait profondeur par profondeur |
|
| 383 | + |
|
| 384 | + $prof = 0; |
|
| 385 | + do { |
|
| 386 | + $continuer = false; |
|
| 387 | + |
|
| 388 | + // Par recursivite : si toutes les rubriques de profondeur $prof sont bonnes |
|
| 389 | + // on fixe le profondeur $prof+1 |
|
| 390 | + |
|
| 391 | + // Toutes les rubriques dont le parent est de profondeur $prof ont une profondeur $prof+1 |
|
| 392 | + // on teste A.profondeur > $prof+1 car : |
|
| 393 | + // - toutes les rubriques de profondeur 0 à $prof sont bonnes |
|
| 394 | + // - si A.profondeur = $prof+1 c'est bon |
|
| 395 | + // - cela nous protege de la boucle infinie en cas de reference circulaire dans les rubriques |
|
| 396 | + $maxiter2 = $maxiter; |
|
| 397 | + while ( |
|
| 398 | + $maxiter2-- |
|
| 399 | + and $rows = sql_allfetsel( |
|
| 400 | + 'A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur', |
|
| 401 | + 'spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique', |
|
| 402 | + 'R.profondeur=' . intval($prof) . ' AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)', |
|
| 403 | + '', |
|
| 404 | + 'R.id_secteur', |
|
| 405 | + '0,100' |
|
| 406 | + ) |
|
| 407 | + ) { |
|
| 408 | + $id_secteur = null; |
|
| 409 | + $ids = []; |
|
| 410 | + while ($row = array_shift($rows)) { |
|
| 411 | + if ($row['id_secteur'] !== $id_secteur) { |
|
| 412 | + if (count($ids)) { |
|
| 413 | + sql_updateq( |
|
| 414 | + 'spip_rubriques', |
|
| 415 | + ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1], |
|
| 416 | + sql_in('id_rubrique', $ids) |
|
| 417 | + ); |
|
| 418 | + } |
|
| 419 | + $id_secteur = $row['id_secteur']; |
|
| 420 | + $ids = []; |
|
| 421 | + } |
|
| 422 | + $ids[] = $row['id']; |
|
| 423 | + } |
|
| 424 | + if (count($ids)) { |
|
| 425 | + sql_updateq( |
|
| 426 | + 'spip_rubriques', |
|
| 427 | + ['id_secteur' => $id_secteur, 'profondeur' => $prof + 1], |
|
| 428 | + sql_in('id_rubrique', $ids) |
|
| 429 | + ); |
|
| 430 | + } |
|
| 431 | + } |
|
| 432 | + |
|
| 433 | + |
|
| 434 | + // Toutes les rubriques de profondeur $prof+1 qui n'ont pas un parent de profondeur $prof sont decalees |
|
| 435 | + $maxiter2 = $maxiter; |
|
| 436 | + while ( |
|
| 437 | + $maxiter2-- |
|
| 438 | + and $rows = sql_allfetsel( |
|
| 439 | + 'id_rubrique as id', |
|
| 440 | + 'spip_rubriques', |
|
| 441 | + 'profondeur=' . intval($prof + 1) . ' AND id_parent NOT IN (' . sql_get_select( |
|
| 442 | + 'zzz.id_rubrique', |
|
| 443 | + 'spip_rubriques AS zzz', |
|
| 444 | + 'zzz.profondeur=' . intval($prof) |
|
| 445 | + ) . ')', |
|
| 446 | + '', |
|
| 447 | + '', |
|
| 448 | + '0,100' |
|
| 449 | + ) |
|
| 450 | + ) { |
|
| 451 | + $rows = array_column($rows, 'id'); |
|
| 452 | + sql_updateq('spip_rubriques', ['profondeur' => $prof + 2], sql_in('id_rubrique', $rows)); |
|
| 453 | + } |
|
| 454 | + |
|
| 455 | + // ici on a fini de valider $prof+1, toutes les rubriques de prondeur 0 a $prof+1 sont OK |
|
| 456 | + // si pas de rubrique a profondeur $prof+1 pas la peine de continuer |
|
| 457 | + // si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse) |
|
| 458 | + // on arrete les frais |
|
| 459 | + if (sql_countsel('spip_rubriques', 'profondeur=' . intval($prof + 1))) { |
|
| 460 | + $prof++; |
|
| 461 | + $continuer = true; |
|
| 462 | + } |
|
| 463 | + } while ($continuer and $maxiter--); |
|
| 464 | + |
|
| 465 | + // loger si la table des rubriques semble foireuse |
|
| 466 | + // et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles |
|
| 467 | + if (sql_countsel('spip_rubriques', 'profondeur>' . intval($prof + 1))) { |
|
| 468 | + spip_log( |
|
| 469 | + 'Les rubriques de profondeur>' . ($prof + 1) . ' semblent suspectes (branches morte ou reference circulaire dans les parents)', |
|
| 470 | + _LOG_CRITIQUE |
|
| 471 | + ); |
|
| 472 | + sql_update('spip_rubriques', ['id_secteur' => 0], 'profondeur>' . intval($prof + 1)); |
|
| 473 | + } |
|
| 474 | + |
|
| 475 | + // reparer les articles |
|
| 476 | + $r = sql_select( |
|
| 477 | + 'A.id_article AS id, R.id_secteur AS secteur', |
|
| 478 | + 'spip_articles AS A, spip_rubriques AS R', |
|
| 479 | + 'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur' |
|
| 480 | + ); |
|
| 481 | + |
|
| 482 | + while ($row = sql_fetch($r)) { |
|
| 483 | + sql_update('spip_articles', ['id_secteur' => $row['secteur']], 'id_article=' . intval($row['id'])); |
|
| 484 | + } |
|
| 485 | + |
|
| 486 | + // avertir les plugins qui peuvent faire leur mises a jour egalement |
|
| 487 | + pipeline('trig_propager_les_secteurs', ''); |
|
| 488 | 488 | } |
| 489 | 489 | |
| 490 | 490 | |
@@ -499,23 +499,23 @@ discard block |
||
| 499 | 499 | * true si un changement a eu lieu |
| 500 | 500 | **/ |
| 501 | 501 | function calculer_langues_rubriques_etape() { |
| 502 | - $s = sql_select( |
|
| 503 | - 'A.id_rubrique AS id_rubrique, R.lang AS lang', |
|
| 504 | - 'spip_rubriques AS A, spip_rubriques AS R', |
|
| 505 | - "A.id_parent = R.id_rubrique AND A.langue_choisie != 'oui' AND R.lang<>'' AND R.lang<>A.lang" |
|
| 506 | - ); |
|
| 507 | - |
|
| 508 | - $t = false; |
|
| 509 | - while ($row = sql_fetch($s)) { |
|
| 510 | - $id_rubrique = $row['id_rubrique']; |
|
| 511 | - $t = sql_updateq( |
|
| 512 | - 'spip_rubriques', |
|
| 513 | - ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
|
| 514 | - 'id_rubrique=' . intval($id_rubrique) |
|
| 515 | - ); |
|
| 516 | - } |
|
| 517 | - |
|
| 518 | - return $t; |
|
| 502 | + $s = sql_select( |
|
| 503 | + 'A.id_rubrique AS id_rubrique, R.lang AS lang', |
|
| 504 | + 'spip_rubriques AS A, spip_rubriques AS R', |
|
| 505 | + "A.id_parent = R.id_rubrique AND A.langue_choisie != 'oui' AND R.lang<>'' AND R.lang<>A.lang" |
|
| 506 | + ); |
|
| 507 | + |
|
| 508 | + $t = false; |
|
| 509 | + while ($row = sql_fetch($s)) { |
|
| 510 | + $id_rubrique = $row['id_rubrique']; |
|
| 511 | + $t = sql_updateq( |
|
| 512 | + 'spip_rubriques', |
|
| 513 | + ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
|
| 514 | + 'id_rubrique=' . intval($id_rubrique) |
|
| 515 | + ); |
|
| 516 | + } |
|
| 517 | + |
|
| 518 | + return $t; |
|
| 519 | 519 | } |
| 520 | 520 | |
| 521 | 521 | /** |
@@ -535,38 +535,38 @@ discard block |
||
| 535 | 535 | **/ |
| 536 | 536 | function calculer_langues_rubriques() { |
| 537 | 537 | |
| 538 | - // rubriques (recursivite) |
|
| 539 | - sql_updateq( |
|
| 540 | - 'spip_rubriques', |
|
| 541 | - ['lang' => $GLOBALS['meta']['langue_site'], 'langue_choisie' => 'non'], |
|
| 542 | - "id_parent=0 AND langue_choisie != 'oui'" |
|
| 543 | - ); |
|
| 544 | - while (calculer_langues_rubriques_etape()) { |
|
| 545 | - ; |
|
| 546 | - } |
|
| 547 | - |
|
| 548 | - // articles |
|
| 549 | - $s = sql_select( |
|
| 550 | - 'A.id_article AS id_article, R.lang AS lang', |
|
| 551 | - 'spip_articles AS A, spip_rubriques AS R', |
|
| 552 | - "A.id_rubrique = R.id_rubrique AND A.langue_choisie != 'oui' AND (length(A.lang)=0 OR length(R.lang)>0) AND R.lang<>A.lang" |
|
| 553 | - ); |
|
| 554 | - while ($row = sql_fetch($s)) { |
|
| 555 | - $id_article = $row['id_article']; |
|
| 556 | - sql_updateq( |
|
| 557 | - 'spip_articles', |
|
| 558 | - ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
|
| 559 | - 'id_article=' . intval($id_article) |
|
| 560 | - ); |
|
| 561 | - } |
|
| 562 | - |
|
| 563 | - if ($GLOBALS['meta']['multi_rubriques'] == 'oui') { |
|
| 564 | - $langues = calculer_langues_utilisees(); |
|
| 565 | - ecrire_meta('langues_utilisees', $langues); |
|
| 566 | - } |
|
| 567 | - |
|
| 568 | - // avertir les plugins qui peuvent faire leur mises a jour egalement |
|
| 569 | - pipeline('trig_calculer_langues_rubriques', ''); |
|
| 538 | + // rubriques (recursivite) |
|
| 539 | + sql_updateq( |
|
| 540 | + 'spip_rubriques', |
|
| 541 | + ['lang' => $GLOBALS['meta']['langue_site'], 'langue_choisie' => 'non'], |
|
| 542 | + "id_parent=0 AND langue_choisie != 'oui'" |
|
| 543 | + ); |
|
| 544 | + while (calculer_langues_rubriques_etape()) { |
|
| 545 | + ; |
|
| 546 | + } |
|
| 547 | + |
|
| 548 | + // articles |
|
| 549 | + $s = sql_select( |
|
| 550 | + 'A.id_article AS id_article, R.lang AS lang', |
|
| 551 | + 'spip_articles AS A, spip_rubriques AS R', |
|
| 552 | + "A.id_rubrique = R.id_rubrique AND A.langue_choisie != 'oui' AND (length(A.lang)=0 OR length(R.lang)>0) AND R.lang<>A.lang" |
|
| 553 | + ); |
|
| 554 | + while ($row = sql_fetch($s)) { |
|
| 555 | + $id_article = $row['id_article']; |
|
| 556 | + sql_updateq( |
|
| 557 | + 'spip_articles', |
|
| 558 | + ['lang' => $row['lang'], 'langue_choisie' => 'non'], |
|
| 559 | + 'id_article=' . intval($id_article) |
|
| 560 | + ); |
|
| 561 | + } |
|
| 562 | + |
|
| 563 | + if ($GLOBALS['meta']['multi_rubriques'] == 'oui') { |
|
| 564 | + $langues = calculer_langues_utilisees(); |
|
| 565 | + ecrire_meta('langues_utilisees', $langues); |
|
| 566 | + } |
|
| 567 | + |
|
| 568 | + // avertir les plugins qui peuvent faire leur mises a jour egalement |
|
| 569 | + pipeline('trig_calculer_langues_rubriques', ''); |
|
| 570 | 570 | } |
| 571 | 571 | |
| 572 | 572 | |
@@ -583,80 +583,80 @@ discard block |
||
| 583 | 583 | * Liste des langues utilisées séparées par des virgules |
| 584 | 584 | **/ |
| 585 | 585 | function calculer_langues_utilisees($serveur = '') { |
| 586 | - include_spip('public/interfaces'); |
|
| 587 | - include_spip('public/compiler'); |
|
| 588 | - include_spip('public/composer'); |
|
| 589 | - include_spip('public/phraser_html'); |
|
| 590 | - $langues = []; |
|
| 591 | - |
|
| 592 | - $langues[$GLOBALS['meta']['langue_site']] = 1; |
|
| 593 | - |
|
| 594 | - include_spip('base/objets'); |
|
| 595 | - $tables = lister_tables_objets_sql(); |
|
| 596 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 597 | - |
|
| 598 | - foreach (array_keys($tables) as $t) { |
|
| 599 | - $desc = $trouver_table($t, $serveur); |
|
| 600 | - // c'est une table avec des langues |
|
| 601 | - if ( |
|
| 602 | - $desc['exist'] |
|
| 603 | - and isset($desc['field']['lang']) |
|
| 604 | - and isset($desc['field']['langue_choisie']) |
|
| 605 | - ) { |
|
| 606 | - $boucle = new Boucle(); |
|
| 607 | - $boucle->show = $desc; |
|
| 608 | - $boucle->nom = 'calculer_langues_utilisees'; |
|
| 609 | - $boucle->id_boucle = $desc['table_objet']; |
|
| 610 | - $boucle->id_table = $desc['table_objet']; |
|
| 611 | - $boucle->primary = $desc['key']['PRIMARY KEY'] ?? ''; |
|
| 612 | - $boucle->sql_serveur = $serveur; |
|
| 613 | - $boucle->select[] = 'DISTINCT lang'; |
|
| 614 | - $boucle->from[$desc['table_objet']] = $t; |
|
| 615 | - $boucle->separateur[] = ','; |
|
| 616 | - $boucle->return = '$Pile[$SP][\'lang\']'; |
|
| 617 | - $boucle->iterateur = 'sql'; |
|
| 618 | - |
|
| 619 | - $boucle->descr['nom'] = 'calculer_langues_utilisees'; // eviter notice php |
|
| 620 | - $boucle->descr['sourcefile'] = 'internal'; |
|
| 621 | - $boucle->descr['gram'] = 'html'; |
|
| 622 | - |
|
| 623 | - $boucle = pipeline('pre_boucle', $boucle); |
|
| 624 | - |
|
| 625 | - if ( |
|
| 626 | - isset($desc['statut']) |
|
| 627 | - and $desc['statut'] |
|
| 628 | - ) { |
|
| 629 | - $boucles = [ |
|
| 630 | - 'calculer_langues_utilisees' => $boucle, |
|
| 631 | - ]; |
|
| 632 | - // generer un nom de fonction "anonyme" unique |
|
| 633 | - do { |
|
| 634 | - $functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax()); |
|
| 635 | - } while (function_exists($functionname)); |
|
| 636 | - $code = calculer_boucle('calculer_langues_utilisees', $boucles); |
|
| 637 | - $code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code; |
|
| 638 | - $code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();'; |
|
| 639 | - $res = ''; |
|
| 640 | - eval($code); |
|
| 641 | - $res = explode(',', $res); |
|
| 642 | - foreach ($res as $lang) { |
|
| 643 | - $langues[$lang] = 1; |
|
| 644 | - } |
|
| 645 | - } else { |
|
| 646 | - $res = sql_select(implode(',', $boucle->select), $boucle->from); |
|
| 647 | - while ($row = sql_fetch($res)) { |
|
| 648 | - $langues[$row['lang']] = 1; |
|
| 649 | - } |
|
| 650 | - } |
|
| 651 | - } |
|
| 652 | - } |
|
| 653 | - |
|
| 654 | - $langues = array_filter(array_keys($langues)); |
|
| 655 | - sort($langues); |
|
| 656 | - $langues = join(',', $langues); |
|
| 657 | - spip_log("langues utilisees: $langues"); |
|
| 658 | - |
|
| 659 | - return $langues; |
|
| 586 | + include_spip('public/interfaces'); |
|
| 587 | + include_spip('public/compiler'); |
|
| 588 | + include_spip('public/composer'); |
|
| 589 | + include_spip('public/phraser_html'); |
|
| 590 | + $langues = []; |
|
| 591 | + |
|
| 592 | + $langues[$GLOBALS['meta']['langue_site']] = 1; |
|
| 593 | + |
|
| 594 | + include_spip('base/objets'); |
|
| 595 | + $tables = lister_tables_objets_sql(); |
|
| 596 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 597 | + |
|
| 598 | + foreach (array_keys($tables) as $t) { |
|
| 599 | + $desc = $trouver_table($t, $serveur); |
|
| 600 | + // c'est une table avec des langues |
|
| 601 | + if ( |
|
| 602 | + $desc['exist'] |
|
| 603 | + and isset($desc['field']['lang']) |
|
| 604 | + and isset($desc['field']['langue_choisie']) |
|
| 605 | + ) { |
|
| 606 | + $boucle = new Boucle(); |
|
| 607 | + $boucle->show = $desc; |
|
| 608 | + $boucle->nom = 'calculer_langues_utilisees'; |
|
| 609 | + $boucle->id_boucle = $desc['table_objet']; |
|
| 610 | + $boucle->id_table = $desc['table_objet']; |
|
| 611 | + $boucle->primary = $desc['key']['PRIMARY KEY'] ?? ''; |
|
| 612 | + $boucle->sql_serveur = $serveur; |
|
| 613 | + $boucle->select[] = 'DISTINCT lang'; |
|
| 614 | + $boucle->from[$desc['table_objet']] = $t; |
|
| 615 | + $boucle->separateur[] = ','; |
|
| 616 | + $boucle->return = '$Pile[$SP][\'lang\']'; |
|
| 617 | + $boucle->iterateur = 'sql'; |
|
| 618 | + |
|
| 619 | + $boucle->descr['nom'] = 'calculer_langues_utilisees'; // eviter notice php |
|
| 620 | + $boucle->descr['sourcefile'] = 'internal'; |
|
| 621 | + $boucle->descr['gram'] = 'html'; |
|
| 622 | + |
|
| 623 | + $boucle = pipeline('pre_boucle', $boucle); |
|
| 624 | + |
|
| 625 | + if ( |
|
| 626 | + isset($desc['statut']) |
|
| 627 | + and $desc['statut'] |
|
| 628 | + ) { |
|
| 629 | + $boucles = [ |
|
| 630 | + 'calculer_langues_utilisees' => $boucle, |
|
| 631 | + ]; |
|
| 632 | + // generer un nom de fonction "anonyme" unique |
|
| 633 | + do { |
|
| 634 | + $functionname = 'f_calculer_langues_utilisees_' . $boucle->id_table . '_' . time() . '_' . random_int(0, mt_getrandmax()); |
|
| 635 | + } while (function_exists($functionname)); |
|
| 636 | + $code = calculer_boucle('calculer_langues_utilisees', $boucles); |
|
| 637 | + $code = '$SP=0; $command=array();$command["connect"] = $connect = "' . $serveur . '"; $Pile=array(0=>array());' . "\n" . $code; |
|
| 638 | + $code = 'function ' . $functionname . '(){' . $code . '};$res = ' . $functionname . '();'; |
|
| 639 | + $res = ''; |
|
| 640 | + eval($code); |
|
| 641 | + $res = explode(',', $res); |
|
| 642 | + foreach ($res as $lang) { |
|
| 643 | + $langues[$lang] = 1; |
|
| 644 | + } |
|
| 645 | + } else { |
|
| 646 | + $res = sql_select(implode(',', $boucle->select), $boucle->from); |
|
| 647 | + while ($row = sql_fetch($res)) { |
|
| 648 | + $langues[$row['lang']] = 1; |
|
| 649 | + } |
|
| 650 | + } |
|
| 651 | + } |
|
| 652 | + } |
|
| 653 | + |
|
| 654 | + $langues = array_filter(array_keys($langues)); |
|
| 655 | + sort($langues); |
|
| 656 | + $langues = join(',', $langues); |
|
| 657 | + spip_log("langues utilisees: $langues"); |
|
| 658 | + |
|
| 659 | + return $langues; |
|
| 660 | 660 | } |
| 661 | 661 | |
| 662 | 662 | /** |
@@ -673,9 +673,9 @@ discard block |
||
| 673 | 673 | * incluant les rubriques noeuds et toutes leurs descendances |
| 674 | 674 | */ |
| 675 | 675 | function calcul_branche_in($id) { |
| 676 | - $calcul_branche_in = charger_fonction('calcul_branche_in', 'inc'); |
|
| 676 | + $calcul_branche_in = charger_fonction('calcul_branche_in', 'inc'); |
|
| 677 | 677 | |
| 678 | - return $calcul_branche_in($id); |
|
| 678 | + return $calcul_branche_in($id); |
|
| 679 | 679 | } |
| 680 | 680 | |
| 681 | 681 | /** |
@@ -693,9 +693,9 @@ discard block |
||
| 693 | 693 | * incluant les rubriques transmises et toutes leurs parentées |
| 694 | 694 | */ |
| 695 | 695 | function calcul_hierarchie_in($id, $tout = true) { |
| 696 | - $calcul_hierarchie_in = charger_fonction('calcul_hierarchie_in', 'inc'); |
|
| 696 | + $calcul_hierarchie_in = charger_fonction('calcul_hierarchie_in', 'inc'); |
|
| 697 | 697 | |
| 698 | - return $calcul_hierarchie_in($id, $tout); |
|
| 698 | + return $calcul_hierarchie_in($id, $tout); |
|
| 699 | 699 | } |
| 700 | 700 | |
| 701 | 701 | |
@@ -716,40 +716,40 @@ discard block |
||
| 716 | 716 | * incluant les rubriques noeuds et toutes leurs descendances |
| 717 | 717 | */ |
| 718 | 718 | function inc_calcul_branche_in_dist($id) { |
| 719 | - static $b = []; |
|
| 720 | - |
|
| 721 | - // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN |
|
| 722 | - if (!is_array($id)) { |
|
| 723 | - $id = explode(',', $id); |
|
| 724 | - } |
|
| 725 | - $id = join(',', array_map('intval', $id)); |
|
| 726 | - if (isset($b[$id])) { |
|
| 727 | - return $b[$id]; |
|
| 728 | - } |
|
| 729 | - |
|
| 730 | - // Notre branche commence par la rubrique de depart |
|
| 731 | - $branche = $r = $id; |
|
| 732 | - |
|
| 733 | - // On ajoute une generation (les filles de la generation precedente) |
|
| 734 | - // jusqu'a epuisement, en se protegeant des references circulaires |
|
| 735 | - $maxiter = 10000; |
|
| 736 | - while ( |
|
| 737 | - $maxiter-- and $filles = sql_allfetsel( |
|
| 738 | - 'id_rubrique', |
|
| 739 | - 'spip_rubriques', |
|
| 740 | - sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT') |
|
| 741 | - ) |
|
| 742 | - ) { |
|
| 743 | - $r = join(',', array_column($filles, 'id_rubrique')); |
|
| 744 | - $branche .= ',' . $r; |
|
| 745 | - } |
|
| 746 | - |
|
| 747 | - # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
|
| 748 | - if (strlen($branche) < 10000) { |
|
| 749 | - $b[$id] = $branche; |
|
| 750 | - } |
|
| 751 | - |
|
| 752 | - return $branche; |
|
| 719 | + static $b = []; |
|
| 720 | + |
|
| 721 | + // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN |
|
| 722 | + if (!is_array($id)) { |
|
| 723 | + $id = explode(',', $id); |
|
| 724 | + } |
|
| 725 | + $id = join(',', array_map('intval', $id)); |
|
| 726 | + if (isset($b[$id])) { |
|
| 727 | + return $b[$id]; |
|
| 728 | + } |
|
| 729 | + |
|
| 730 | + // Notre branche commence par la rubrique de depart |
|
| 731 | + $branche = $r = $id; |
|
| 732 | + |
|
| 733 | + // On ajoute une generation (les filles de la generation precedente) |
|
| 734 | + // jusqu'a epuisement, en se protegeant des references circulaires |
|
| 735 | + $maxiter = 10000; |
|
| 736 | + while ( |
|
| 737 | + $maxiter-- and $filles = sql_allfetsel( |
|
| 738 | + 'id_rubrique', |
|
| 739 | + 'spip_rubriques', |
|
| 740 | + sql_in('id_parent', $r) . ' AND ' . sql_in('id_rubrique', $r, 'NOT') |
|
| 741 | + ) |
|
| 742 | + ) { |
|
| 743 | + $r = join(',', array_column($filles, 'id_rubrique')); |
|
| 744 | + $branche .= ',' . $r; |
|
| 745 | + } |
|
| 746 | + |
|
| 747 | + # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
|
| 748 | + if (strlen($branche) < 10000) { |
|
| 749 | + $b[$id] = $branche; |
|
| 750 | + } |
|
| 751 | + |
|
| 752 | + return $branche; |
|
| 753 | 753 | } |
| 754 | 754 | |
| 755 | 755 | |
@@ -771,45 +771,45 @@ discard block |
||
| 771 | 771 | * incluant les rubriques transmises et toutes leurs parentées |
| 772 | 772 | */ |
| 773 | 773 | function inc_calcul_hierarchie_in_dist($id, $tout = true) { |
| 774 | - static $b = []; |
|
| 775 | - |
|
| 776 | - // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN |
|
| 777 | - if (!is_array($id)) { |
|
| 778 | - $id = explode(',', $id); |
|
| 779 | - } |
|
| 780 | - $id = join(',', array_map('intval', $id)); |
|
| 781 | - |
|
| 782 | - if (isset($b[$id])) { |
|
| 783 | - // Notre branche commence par la rubrique de depart si $tout=true |
|
| 784 | - return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id]; |
|
| 785 | - } |
|
| 786 | - |
|
| 787 | - $hier = ''; |
|
| 788 | - |
|
| 789 | - // On ajoute une generation (les filles de la generation precedente) |
|
| 790 | - // jusqu'a epuisement, en se protegeant des references circulaires |
|
| 791 | - $ids_nouveaux_parents = $id; |
|
| 792 | - $maxiter = 10000; |
|
| 793 | - while ( |
|
| 794 | - $maxiter-- and $parents = sql_allfetsel( |
|
| 795 | - 'id_parent', |
|
| 796 | - 'spip_rubriques', |
|
| 797 | - sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT') |
|
| 798 | - ) |
|
| 799 | - ) { |
|
| 800 | - $ids_nouveaux_parents = join(',', array_column($parents, 'id_parent')); |
|
| 801 | - $hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : ''); |
|
| 802 | - } |
|
| 803 | - |
|
| 804 | - # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
|
| 805 | - if (strlen($hier) < 10000) { |
|
| 806 | - $b[$id] = $hier; |
|
| 807 | - } |
|
| 808 | - |
|
| 809 | - // Notre branche commence par la rubrique de depart si $tout=true |
|
| 810 | - $hier = $tout ? (strlen($hier) ? "$hier,$id" : $id) : $hier; |
|
| 811 | - |
|
| 812 | - return $hier; |
|
| 774 | + static $b = []; |
|
| 775 | + |
|
| 776 | + // normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN |
|
| 777 | + if (!is_array($id)) { |
|
| 778 | + $id = explode(',', $id); |
|
| 779 | + } |
|
| 780 | + $id = join(',', array_map('intval', $id)); |
|
| 781 | + |
|
| 782 | + if (isset($b[$id])) { |
|
| 783 | + // Notre branche commence par la rubrique de depart si $tout=true |
|
| 784 | + return $tout ? (strlen($b[$id]) ? $b[$id] . ",$id" : $id) : $b[$id]; |
|
| 785 | + } |
|
| 786 | + |
|
| 787 | + $hier = ''; |
|
| 788 | + |
|
| 789 | + // On ajoute une generation (les filles de la generation precedente) |
|
| 790 | + // jusqu'a epuisement, en se protegeant des references circulaires |
|
| 791 | + $ids_nouveaux_parents = $id; |
|
| 792 | + $maxiter = 10000; |
|
| 793 | + while ( |
|
| 794 | + $maxiter-- and $parents = sql_allfetsel( |
|
| 795 | + 'id_parent', |
|
| 796 | + 'spip_rubriques', |
|
| 797 | + sql_in('id_rubrique', $ids_nouveaux_parents) . ' AND ' . sql_in('id_parent', $hier, 'NOT') |
|
| 798 | + ) |
|
| 799 | + ) { |
|
| 800 | + $ids_nouveaux_parents = join(',', array_column($parents, 'id_parent')); |
|
| 801 | + $hier = $ids_nouveaux_parents . (strlen($hier) ? ',' . $hier : ''); |
|
| 802 | + } |
|
| 803 | + |
|
| 804 | + # securite pour ne pas plomber la conso memoire sur les sites prolifiques |
|
| 805 | + if (strlen($hier) < 10000) { |
|
| 806 | + $b[$id] = $hier; |
|
| 807 | + } |
|
| 808 | + |
|
| 809 | + // Notre branche commence par la rubrique de depart si $tout=true |
|
| 810 | + $hier = $tout ? (strlen($hier) ? "$hier,$id" : $id) : $hier; |
|
| 811 | + |
|
| 812 | + return $hier; |
|
| 813 | 813 | } |
| 814 | 814 | |
| 815 | 815 | |
@@ -827,47 +827,47 @@ discard block |
||
| 827 | 827 | * @return void |
| 828 | 828 | **/ |
| 829 | 829 | function calculer_prochain_postdate($check = false) { |
| 830 | - include_spip('base/abstract_sql'); |
|
| 831 | - if ($check) { |
|
| 832 | - $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 833 | - 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 834 | - |
|
| 835 | - $r = sql_select( |
|
| 836 | - 'DISTINCT A.id_rubrique AS id', |
|
| 837 | - 'spip_articles AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique', |
|
| 838 | - "R.statut != 'publie' AND A.statut='publie'$postdates" |
|
| 839 | - ); |
|
| 840 | - while ($row = sql_fetch($r)) { |
|
| 841 | - publier_branche_rubrique($row['id']); |
|
| 842 | - } |
|
| 843 | - |
|
| 844 | - pipeline('trig_calculer_prochain_postdate', ''); |
|
| 845 | - } |
|
| 846 | - |
|
| 847 | - $t = sql_fetsel( |
|
| 848 | - 'date', |
|
| 849 | - 'spip_articles', |
|
| 850 | - "statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')), |
|
| 851 | - '', |
|
| 852 | - 'date', |
|
| 853 | - '1' |
|
| 854 | - ); |
|
| 855 | - |
|
| 856 | - if ($t) { |
|
| 857 | - $t = $t['date']; |
|
| 858 | - if ( |
|
| 859 | - !isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 860 | - or $t <> $GLOBALS['meta']['date_prochain_postdate'] |
|
| 861 | - ) { |
|
| 862 | - ecrire_meta('date_prochain_postdate', strtotime($t)); |
|
| 863 | - ecrire_meta('derniere_modif', time()); |
|
| 864 | - } |
|
| 865 | - } else { |
|
| 866 | - effacer_meta('date_prochain_postdate'); |
|
| 867 | - ecrire_meta('derniere_modif', time()); |
|
| 868 | - } |
|
| 869 | - |
|
| 870 | - spip_log("prochain postdate: $t"); |
|
| 830 | + include_spip('base/abstract_sql'); |
|
| 831 | + if ($check) { |
|
| 832 | + $postdates = ($GLOBALS['meta']['post_dates'] == 'non') ? |
|
| 833 | + 'AND A.date <= ' . sql_quote(date('Y-m-d H:i:s')) : ''; |
|
| 834 | + |
|
| 835 | + $r = sql_select( |
|
| 836 | + 'DISTINCT A.id_rubrique AS id', |
|
| 837 | + 'spip_articles AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique', |
|
| 838 | + "R.statut != 'publie' AND A.statut='publie'$postdates" |
|
| 839 | + ); |
|
| 840 | + while ($row = sql_fetch($r)) { |
|
| 841 | + publier_branche_rubrique($row['id']); |
|
| 842 | + } |
|
| 843 | + |
|
| 844 | + pipeline('trig_calculer_prochain_postdate', ''); |
|
| 845 | + } |
|
| 846 | + |
|
| 847 | + $t = sql_fetsel( |
|
| 848 | + 'date', |
|
| 849 | + 'spip_articles', |
|
| 850 | + "statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')), |
|
| 851 | + '', |
|
| 852 | + 'date', |
|
| 853 | + '1' |
|
| 854 | + ); |
|
| 855 | + |
|
| 856 | + if ($t) { |
|
| 857 | + $t = $t['date']; |
|
| 858 | + if ( |
|
| 859 | + !isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 860 | + or $t <> $GLOBALS['meta']['date_prochain_postdate'] |
|
| 861 | + ) { |
|
| 862 | + ecrire_meta('date_prochain_postdate', strtotime($t)); |
|
| 863 | + ecrire_meta('derniere_modif', time()); |
|
| 864 | + } |
|
| 865 | + } else { |
|
| 866 | + effacer_meta('date_prochain_postdate'); |
|
| 867 | + ecrire_meta('derniere_modif', time()); |
|
| 868 | + } |
|
| 869 | + |
|
| 870 | + spip_log("prochain postdate: $t"); |
|
| 871 | 871 | } |
| 872 | 872 | |
| 873 | 873 | /** |
@@ -892,62 +892,62 @@ discard block |
||
| 892 | 892 | */ |
| 893 | 893 | function creer_rubrique_nommee($titre, $id_parent = 0, $serveur = '') { |
| 894 | 894 | |
| 895 | - // eclater l'arborescence demandee |
|
| 896 | - // echapper les </multi> et autres balises fermantes html |
|
| 897 | - $titre = preg_replace(',</([a-z][^>]*)>,ims', "<@\\1>", $titre); |
|
| 898 | - $arbo = explode('/', preg_replace(',^/,', '', $titre)); |
|
| 899 | - include_spip('base/abstract_sql'); |
|
| 900 | - foreach ($arbo as $titre) { |
|
| 901 | - // retablir les </multi> et autres balises fermantes html |
|
| 902 | - $titre = preg_replace(',<@([a-z][^>]*)>,ims', "</\\1>", $titre); |
|
| 903 | - $r = sql_getfetsel( |
|
| 904 | - 'id_rubrique', |
|
| 905 | - 'spip_rubriques', |
|
| 906 | - 'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent), |
|
| 907 | - $groupby = [], |
|
| 908 | - $orderby = [], |
|
| 909 | - $limit = '', |
|
| 910 | - $having = [], |
|
| 911 | - $serveur |
|
| 912 | - ); |
|
| 913 | - if ($r !== null) { |
|
| 914 | - $id_parent = $r; |
|
| 915 | - } else { |
|
| 916 | - $id_rubrique = sql_insertq('spip_rubriques', [ |
|
| 917 | - 'titre' => $titre, |
|
| 918 | - 'id_parent' => $id_parent, |
|
| 919 | - 'statut' => 'prepa' |
|
| 920 | - ], $desc = [], $serveur); |
|
| 921 | - if ($id_parent > 0) { |
|
| 922 | - $data = sql_fetsel( |
|
| 923 | - 'id_secteur,lang', |
|
| 924 | - 'spip_rubriques', |
|
| 925 | - "id_rubrique=$id_parent", |
|
| 926 | - $groupby = [], |
|
| 927 | - $orderby = [], |
|
| 928 | - $limit = '', |
|
| 929 | - $having = [], |
|
| 930 | - $serveur |
|
| 931 | - ); |
|
| 932 | - $id_secteur = $data['id_secteur']; |
|
| 933 | - $lang = $data['lang']; |
|
| 934 | - } else { |
|
| 935 | - $id_secteur = $id_rubrique; |
|
| 936 | - $lang = $GLOBALS['meta']['langue_site']; |
|
| 937 | - } |
|
| 938 | - |
|
| 939 | - sql_updateq( |
|
| 940 | - 'spip_rubriques', |
|
| 941 | - ['id_secteur' => $id_secteur, 'lang' => $lang], |
|
| 942 | - 'id_rubrique=' . intval($id_rubrique), |
|
| 943 | - [], |
|
| 944 | - $serveur |
|
| 945 | - ); |
|
| 946 | - |
|
| 947 | - // pour la recursion |
|
| 948 | - $id_parent = $id_rubrique; |
|
| 949 | - } |
|
| 950 | - } |
|
| 951 | - |
|
| 952 | - return intval($id_parent); |
|
| 895 | + // eclater l'arborescence demandee |
|
| 896 | + // echapper les </multi> et autres balises fermantes html |
|
| 897 | + $titre = preg_replace(',</([a-z][^>]*)>,ims', "<@\\1>", $titre); |
|
| 898 | + $arbo = explode('/', preg_replace(',^/,', '', $titre)); |
|
| 899 | + include_spip('base/abstract_sql'); |
|
| 900 | + foreach ($arbo as $titre) { |
|
| 901 | + // retablir les </multi> et autres balises fermantes html |
|
| 902 | + $titre = preg_replace(',<@([a-z][^>]*)>,ims', "</\\1>", $titre); |
|
| 903 | + $r = sql_getfetsel( |
|
| 904 | + 'id_rubrique', |
|
| 905 | + 'spip_rubriques', |
|
| 906 | + 'titre = ' . sql_quote($titre) . ' AND id_parent=' . intval($id_parent), |
|
| 907 | + $groupby = [], |
|
| 908 | + $orderby = [], |
|
| 909 | + $limit = '', |
|
| 910 | + $having = [], |
|
| 911 | + $serveur |
|
| 912 | + ); |
|
| 913 | + if ($r !== null) { |
|
| 914 | + $id_parent = $r; |
|
| 915 | + } else { |
|
| 916 | + $id_rubrique = sql_insertq('spip_rubriques', [ |
|
| 917 | + 'titre' => $titre, |
|
| 918 | + 'id_parent' => $id_parent, |
|
| 919 | + 'statut' => 'prepa' |
|
| 920 | + ], $desc = [], $serveur); |
|
| 921 | + if ($id_parent > 0) { |
|
| 922 | + $data = sql_fetsel( |
|
| 923 | + 'id_secteur,lang', |
|
| 924 | + 'spip_rubriques', |
|
| 925 | + "id_rubrique=$id_parent", |
|
| 926 | + $groupby = [], |
|
| 927 | + $orderby = [], |
|
| 928 | + $limit = '', |
|
| 929 | + $having = [], |
|
| 930 | + $serveur |
|
| 931 | + ); |
|
| 932 | + $id_secteur = $data['id_secteur']; |
|
| 933 | + $lang = $data['lang']; |
|
| 934 | + } else { |
|
| 935 | + $id_secteur = $id_rubrique; |
|
| 936 | + $lang = $GLOBALS['meta']['langue_site']; |
|
| 937 | + } |
|
| 938 | + |
|
| 939 | + sql_updateq( |
|
| 940 | + 'spip_rubriques', |
|
| 941 | + ['id_secteur' => $id_secteur, 'lang' => $lang], |
|
| 942 | + 'id_rubrique=' . intval($id_rubrique), |
|
| 943 | + [], |
|
| 944 | + $serveur |
|
| 945 | + ); |
|
| 946 | + |
|
| 947 | + // pour la recursion |
|
| 948 | + $id_parent = $id_rubrique; |
|
| 949 | + } |
|
| 950 | + } |
|
| 951 | + |
|
| 952 | + return intval($id_parent); |
|
| 953 | 953 | } |
@@ -4,879 +4,879 @@ |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'activer_plugin' => 'Ativar o plugin', |
|
| 14 | - 'affichage' => 'Exibição', |
|
| 15 | - 'aide_non_disponible' => 'Esta parte da ajuda online ainda não está disponível neste idioma.', |
|
| 16 | - 'annuler_recherche' => 'Cancelar a busca', |
|
| 17 | - 'auteur' => 'Autor:', |
|
| 18 | - 'avis_acces_interdit' => 'Acesso negado.', |
|
| 19 | - 'avis_acces_interdit_prive' => 'Você não está autorizado a acessar a página <b>@exec@</b>.', |
|
| 20 | - 'avis_article_modifie' => 'Atenção, @nom_auteur_modif@ editou esta matéria há @date_diff@ minutos', |
|
| 21 | - 'avis_aucun_resultat' => 'Nenhum resultado.', |
|
| 22 | - 'avis_base_inaccessible' => 'Não foi possível conectar com a base de dados @base@.', |
|
| 23 | - 'avis_chemin_invalide_1' => 'O caminho que você escolheu', |
|
| 24 | - 'avis_chemin_invalide_2' => 'não parece válido. Por favor, volte à página anterior e verifique as informações fornecidas.', |
|
| 25 | - 'avis_connexion_echec_1' => 'A conexão com a base de dados falhou.', |
|
| 26 | - 'avis_connexion_echec_2' => 'Volte à página anterior e verifique as informações que você forneceu.', |
|
| 27 | - 'avis_connexion_echec_3' => '<b>N.B.</b> Em diversos servidores, você precisa <b>solicitar</b> a ativação do seu acesso à base de dados antes de poder utilizá-la. Se você não consegue se conectar, verifique se você efetuou esse pedido.', |
|
| 28 | - 'avis_connexion_erreur_creer_base' => 'Não foi possível criar a base de dados.', |
|
| 29 | - 'avis_connexion_erreur_fichier_cle_manquant_1' => 'A instalação deve ser realizada por um webmaster com um backup das chaves e sua senha.', |
|
| 30 | - 'avis_connexion_erreur_fichier_cle_manquant_2' => 'A instalação deve ser feita por um webmaster com um backup das chaves', |
|
| 31 | - 'avis_connexion_erreur_nom_base' => 'O nome da base só pode conter letras, números e traços', |
|
| 32 | - 'avis_connexion_ldap_echec_1' => 'A conexão ao servidor LDAP falhou.', |
|
| 33 | - 'avis_connexion_ldap_echec_2' => 'Volte à página anterior e verifique as informações que você forneceu.', |
|
| 34 | - 'avis_connexion_ldap_echec_3' => 'Opcionalmente, não use o suporte LDAP para importar os usuários.', |
|
| 35 | - 'avis_deplacement_rubrique' => 'Atenção! Esta seção contém @contient_breves@ nota@scb@: se você a transferir, por favor, marque este quadrado.', |
|
| 36 | - 'avis_erreur_connexion_mysql' => 'Erro de conexão SQL', |
|
| 37 | - 'avis_erreur_creation_compte' => 'Erro durante a inicialização da conta', |
|
| 38 | - 'avis_espace_interdit' => '<b>Área interdita</b> <div>O SPIP já está instalado.</div>', |
|
| 39 | - 'avis_lecture_noms_bases_1' => 'O programa de instalação não pôde ler os nomes das bases de dados instaladas.', |
|
| 40 | - 'avis_lecture_noms_bases_2' => 'Ou nenhuma base de dados esta disponível, ou a função que permite listar as bases foi desativada por razões de segurança (o que é o caso de diversos provedores de hospedagem).', |
|
| 41 | - 'avis_lecture_noms_bases_3' => 'No segundo caso, é provável que uma base de dados com o nome do seu login possa ser utilizada:', |
|
| 42 | - 'avis_non_acces_page' => 'Você não tem acesso a esta página.', |
|
| 43 | - 'avis_operation_echec' => 'A operação falhou.', |
|
| 44 | - 'avis_operation_impossible' => 'Operação impossível', |
|
| 45 | - 'avis_suppression_base' => 'ATENÇÃO, a supressão dos dados é irreversível', |
|
| 12 | + // A |
|
| 13 | + 'activer_plugin' => 'Ativar o plugin', |
|
| 14 | + 'affichage' => 'Exibição', |
|
| 15 | + 'aide_non_disponible' => 'Esta parte da ajuda online ainda não está disponível neste idioma.', |
|
| 16 | + 'annuler_recherche' => 'Cancelar a busca', |
|
| 17 | + 'auteur' => 'Autor:', |
|
| 18 | + 'avis_acces_interdit' => 'Acesso negado.', |
|
| 19 | + 'avis_acces_interdit_prive' => 'Você não está autorizado a acessar a página <b>@exec@</b>.', |
|
| 20 | + 'avis_article_modifie' => 'Atenção, @nom_auteur_modif@ editou esta matéria há @date_diff@ minutos', |
|
| 21 | + 'avis_aucun_resultat' => 'Nenhum resultado.', |
|
| 22 | + 'avis_base_inaccessible' => 'Não foi possível conectar com a base de dados @base@.', |
|
| 23 | + 'avis_chemin_invalide_1' => 'O caminho que você escolheu', |
|
| 24 | + 'avis_chemin_invalide_2' => 'não parece válido. Por favor, volte à página anterior e verifique as informações fornecidas.', |
|
| 25 | + 'avis_connexion_echec_1' => 'A conexão com a base de dados falhou.', |
|
| 26 | + 'avis_connexion_echec_2' => 'Volte à página anterior e verifique as informações que você forneceu.', |
|
| 27 | + 'avis_connexion_echec_3' => '<b>N.B.</b> Em diversos servidores, você precisa <b>solicitar</b> a ativação do seu acesso à base de dados antes de poder utilizá-la. Se você não consegue se conectar, verifique se você efetuou esse pedido.', |
|
| 28 | + 'avis_connexion_erreur_creer_base' => 'Não foi possível criar a base de dados.', |
|
| 29 | + 'avis_connexion_erreur_fichier_cle_manquant_1' => 'A instalação deve ser realizada por um webmaster com um backup das chaves e sua senha.', |
|
| 30 | + 'avis_connexion_erreur_fichier_cle_manquant_2' => 'A instalação deve ser feita por um webmaster com um backup das chaves', |
|
| 31 | + 'avis_connexion_erreur_nom_base' => 'O nome da base só pode conter letras, números e traços', |
|
| 32 | + 'avis_connexion_ldap_echec_1' => 'A conexão ao servidor LDAP falhou.', |
|
| 33 | + 'avis_connexion_ldap_echec_2' => 'Volte à página anterior e verifique as informações que você forneceu.', |
|
| 34 | + 'avis_connexion_ldap_echec_3' => 'Opcionalmente, não use o suporte LDAP para importar os usuários.', |
|
| 35 | + 'avis_deplacement_rubrique' => 'Atenção! Esta seção contém @contient_breves@ nota@scb@: se você a transferir, por favor, marque este quadrado.', |
|
| 36 | + 'avis_erreur_connexion_mysql' => 'Erro de conexão SQL', |
|
| 37 | + 'avis_erreur_creation_compte' => 'Erro durante a inicialização da conta', |
|
| 38 | + 'avis_espace_interdit' => '<b>Área interdita</b> <div>O SPIP já está instalado.</div>', |
|
| 39 | + 'avis_lecture_noms_bases_1' => 'O programa de instalação não pôde ler os nomes das bases de dados instaladas.', |
|
| 40 | + 'avis_lecture_noms_bases_2' => 'Ou nenhuma base de dados esta disponível, ou a função que permite listar as bases foi desativada por razões de segurança (o que é o caso de diversos provedores de hospedagem).', |
|
| 41 | + 'avis_lecture_noms_bases_3' => 'No segundo caso, é provável que uma base de dados com o nome do seu login possa ser utilizada:', |
|
| 42 | + 'avis_non_acces_page' => 'Você não tem acesso a esta página.', |
|
| 43 | + 'avis_operation_echec' => 'A operação falhou.', |
|
| 44 | + 'avis_operation_impossible' => 'Operação impossível', |
|
| 45 | + 'avis_suppression_base' => 'ATENÇÃO, a supressão dos dados é irreversível', |
|
| 46 | 46 | |
| 47 | - // B |
|
| 48 | - 'bouton_acces_ldap' => 'Incluir o acesso ao LDAP', |
|
| 49 | - 'bouton_ajouter' => 'Incluir', |
|
| 50 | - 'bouton_annuler' => 'Anular', |
|
| 51 | - 'bouton_cache_activer' => 'Reativar o cache', |
|
| 52 | - 'bouton_cache_desactiver' => 'Desativar temporariamente o cache', |
|
| 53 | - 'bouton_demande_publication' => 'Solicitar a publicação desta matéria', |
|
| 54 | - 'bouton_desactive_tout' => 'Desativar tudo', |
|
| 55 | - 'bouton_desinstaller' => 'Desinstalar', |
|
| 56 | - 'bouton_effacer_tout' => 'Apagar TUDO', |
|
| 57 | - 'bouton_envoyer_message' => 'Mensagem definitiva: enviar', |
|
| 58 | - 'bouton_fermer' => 'Fechar', |
|
| 59 | - 'bouton_mettre_a_jour_base' => 'Atualizar a base de dados', |
|
| 60 | - 'bouton_modifier' => 'Alterar', |
|
| 61 | - 'bouton_radio_afficher' => 'Exibir', |
|
| 62 | - 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Exibir nas listas de redatores conectados', |
|
| 63 | - 'bouton_radio_envoi_annonces_adresse' => 'Enviar os avisos para o endereço:', |
|
| 64 | - 'bouton_radio_envoi_liste_nouveautes' => 'Enviar a lista de novidades', |
|
| 65 | - 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Não exibir na lista de redatores', |
|
| 66 | - 'bouton_radio_non_envoi_annonces_editoriales' => 'Não enviar os avisos editoriais', |
|
| 67 | - 'bouton_redirection' => 'REDIRECIONAMENTO', |
|
| 68 | - 'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Reiniciar aos valores padrão', |
|
| 69 | - 'bouton_relancer_inscription' => 'Reiniciar o registro', |
|
| 70 | - 'bouton_relancer_inscriptions' => 'Reiniciar os registros', |
|
| 71 | - 'bouton_relancer_installation' => 'Reiniciar a instalação', |
|
| 72 | - 'bouton_reset_password' => 'Criar uma nova senha e enviá-la por e-mail', |
|
| 73 | - 'bouton_suivant' => 'Avançar', |
|
| 74 | - 'bouton_tenter_recuperation' => 'Tentar uma reparação', |
|
| 75 | - 'bouton_test_proxy' => 'Testar o proxy', |
|
| 76 | - 'bouton_vider_cache' => 'Limpar o cache', |
|
| 47 | + // B |
|
| 48 | + 'bouton_acces_ldap' => 'Incluir o acesso ao LDAP', |
|
| 49 | + 'bouton_ajouter' => 'Incluir', |
|
| 50 | + 'bouton_annuler' => 'Anular', |
|
| 51 | + 'bouton_cache_activer' => 'Reativar o cache', |
|
| 52 | + 'bouton_cache_desactiver' => 'Desativar temporariamente o cache', |
|
| 53 | + 'bouton_demande_publication' => 'Solicitar a publicação desta matéria', |
|
| 54 | + 'bouton_desactive_tout' => 'Desativar tudo', |
|
| 55 | + 'bouton_desinstaller' => 'Desinstalar', |
|
| 56 | + 'bouton_effacer_tout' => 'Apagar TUDO', |
|
| 57 | + 'bouton_envoyer_message' => 'Mensagem definitiva: enviar', |
|
| 58 | + 'bouton_fermer' => 'Fechar', |
|
| 59 | + 'bouton_mettre_a_jour_base' => 'Atualizar a base de dados', |
|
| 60 | + 'bouton_modifier' => 'Alterar', |
|
| 61 | + 'bouton_radio_afficher' => 'Exibir', |
|
| 62 | + 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Exibir nas listas de redatores conectados', |
|
| 63 | + 'bouton_radio_envoi_annonces_adresse' => 'Enviar os avisos para o endereço:', |
|
| 64 | + 'bouton_radio_envoi_liste_nouveautes' => 'Enviar a lista de novidades', |
|
| 65 | + 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Não exibir na lista de redatores', |
|
| 66 | + 'bouton_radio_non_envoi_annonces_editoriales' => 'Não enviar os avisos editoriais', |
|
| 67 | + 'bouton_redirection' => 'REDIRECIONAMENTO', |
|
| 68 | + 'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Reiniciar aos valores padrão', |
|
| 69 | + 'bouton_relancer_inscription' => 'Reiniciar o registro', |
|
| 70 | + 'bouton_relancer_inscriptions' => 'Reiniciar os registros', |
|
| 71 | + 'bouton_relancer_installation' => 'Reiniciar a instalação', |
|
| 72 | + 'bouton_reset_password' => 'Criar uma nova senha e enviá-la por e-mail', |
|
| 73 | + 'bouton_suivant' => 'Avançar', |
|
| 74 | + 'bouton_tenter_recuperation' => 'Tentar uma reparação', |
|
| 75 | + 'bouton_test_proxy' => 'Testar o proxy', |
|
| 76 | + 'bouton_vider_cache' => 'Limpar o cache', |
|
| 77 | 77 | |
| 78 | - // C |
|
| 79 | - 'cache_modifiable_webmestre' => 'Este parâmetro é modificável pelo webmaster do site.', |
|
| 80 | - 'calendrier_synchro' => 'Se você usa um programa de agenda compatível com <b>iCal</b>, você pode sincronizá-lo com as informações deste site.', |
|
| 81 | - 'config_activer_champs' => 'Ativar os campos a seguir', |
|
| 82 | - 'config_choix_base_sup' => 'indicar uma base neste servidor', |
|
| 83 | - 'config_erreur_base_sup' => 'O SPIP não tem acesso à lista de bases acessíveis', |
|
| 84 | - 'config_info_base_sup' => 'Se você tiver outras bases de dados para serem consultadas via SPIP, em seu servidor SQL ou em outro, o formulário abaixo permite configurá-las. Se você deixar determinados campos em branco, os dados de conexão da base principal serão utilizados.', |
|
| 85 | - 'config_info_base_sup_disponibles' => 'Bases suplementares já consultáveis:', |
|
| 86 | - 'config_info_enregistree' => 'A nova configuração foi gravada', |
|
| 87 | - 'config_info_logos' => 'Cada elemento do site pode ter um ícone, bem como um ícone de «mouseOver»', |
|
| 88 | - 'config_info_logos_utiliser' => 'Usar os ícones', |
|
| 89 | - 'config_info_logos_utiliser_non' => 'Não usar o ícones', |
|
| 90 | - 'config_info_logos_utiliser_survol' => 'Usar os ícones de mouseOver', |
|
| 91 | - 'config_info_logos_utiliser_survol_non' => 'Não usar os ícones de mouseOver', |
|
| 92 | - 'config_info_redirection' => 'Ao ativar esta opção, você poderá criar matérias virtuais, meras referências a matérias publicadas em outros sites ou fora do SPIP.', |
|
| 93 | - 'config_redirection' => 'Matérias virtuais', |
|
| 94 | - 'config_titre_base_sup' => 'Configuração de uma base suplementar', |
|
| 95 | - 'config_titre_base_sup_choix' => 'Escolha uma base suplementar', |
|
| 96 | - 'connexion_ldap' => 'Conexão:', |
|
| 97 | - 'creer_et_associer_un_auteur' => 'Criar e vincular um autor', |
|
| 78 | + // C |
|
| 79 | + 'cache_modifiable_webmestre' => 'Este parâmetro é modificável pelo webmaster do site.', |
|
| 80 | + 'calendrier_synchro' => 'Se você usa um programa de agenda compatível com <b>iCal</b>, você pode sincronizá-lo com as informações deste site.', |
|
| 81 | + 'config_activer_champs' => 'Ativar os campos a seguir', |
|
| 82 | + 'config_choix_base_sup' => 'indicar uma base neste servidor', |
|
| 83 | + 'config_erreur_base_sup' => 'O SPIP não tem acesso à lista de bases acessíveis', |
|
| 84 | + 'config_info_base_sup' => 'Se você tiver outras bases de dados para serem consultadas via SPIP, em seu servidor SQL ou em outro, o formulário abaixo permite configurá-las. Se você deixar determinados campos em branco, os dados de conexão da base principal serão utilizados.', |
|
| 85 | + 'config_info_base_sup_disponibles' => 'Bases suplementares já consultáveis:', |
|
| 86 | + 'config_info_enregistree' => 'A nova configuração foi gravada', |
|
| 87 | + 'config_info_logos' => 'Cada elemento do site pode ter um ícone, bem como um ícone de «mouseOver»', |
|
| 88 | + 'config_info_logos_utiliser' => 'Usar os ícones', |
|
| 89 | + 'config_info_logos_utiliser_non' => 'Não usar o ícones', |
|
| 90 | + 'config_info_logos_utiliser_survol' => 'Usar os ícones de mouseOver', |
|
| 91 | + 'config_info_logos_utiliser_survol_non' => 'Não usar os ícones de mouseOver', |
|
| 92 | + 'config_info_redirection' => 'Ao ativar esta opção, você poderá criar matérias virtuais, meras referências a matérias publicadas em outros sites ou fora do SPIP.', |
|
| 93 | + 'config_redirection' => 'Matérias virtuais', |
|
| 94 | + 'config_titre_base_sup' => 'Configuração de uma base suplementar', |
|
| 95 | + 'config_titre_base_sup_choix' => 'Escolha uma base suplementar', |
|
| 96 | + 'connexion_ldap' => 'Conexão:', |
|
| 97 | + 'creer_et_associer_un_auteur' => 'Criar e vincular um autor', |
|
| 98 | 98 | |
| 99 | - // D |
|
| 100 | - 'date_mot_heures' => 'horas', |
|
| 99 | + // D |
|
| 100 | + 'date_mot_heures' => 'horas', |
|
| 101 | 101 | |
| 102 | - // E |
|
| 103 | - 'ecran_connexion_couleur_principale' => 'Cor principal', |
|
| 104 | - 'ecran_connexion_image_fond' => 'Imagem de fundo', |
|
| 105 | - 'ecran_connexion_image_fond_explication' => 'Usar uma imagem (formato JPEG, 1920x1080 pixels)', |
|
| 106 | - 'ecran_connexion_image_revenir_couleur_defaut' => 'Reverter para a cor padrão', |
|
| 107 | - 'ecran_connexion_titre' => 'Tela de conexão', |
|
| 108 | - 'ecran_securite' => ' + tela de segurança @version@', |
|
| 109 | - 'email' => 'e-mail', |
|
| 110 | - 'email_2' => 'e-mail:', |
|
| 111 | - 'en_savoir_plus' => 'Saiba mais', |
|
| 112 | - 'entree_adresse_annuaire' => 'Endereço do catálogo', |
|
| 113 | - 'entree_adresse_email' => 'Seu endereço de e-mail', |
|
| 114 | - 'entree_adresse_email_2' => 'Endereço de e-mail', |
|
| 115 | - 'entree_base_donnee_1' => 'Endereço da base de dados', |
|
| 116 | - 'entree_base_donnee_2' => '(Frequentemente este endereço corresponde ao do seu site, às vezes ele corresponde ao nome «localhost», algumas vezes ele pode ser deixado completamente em branco.)', |
|
| 117 | - 'entree_biographie' => 'Biografia curta em poucas palavras.', |
|
| 118 | - 'entree_chemin_acces' => '<b>Informe</b> o caminho de acesso:', |
|
| 119 | - 'entree_cle_pgp' => 'Sua chave PGP', |
|
| 120 | - 'entree_cle_pgp_2' => 'Chave PGP', |
|
| 121 | - 'entree_contenu_rubrique' => '(Conteúdo da seção em poucas palavras.)', |
|
| 122 | - 'entree_identifiants_connexion' => 'Seus dados de conexão...', |
|
| 123 | - 'entree_identifiants_connexion_2' => 'Dados de conexão', |
|
| 124 | - 'entree_informations_connexion_ldap' => 'Informe neste formulário os dados de conexão ao seu catálogo LDAP. |
|
| 102 | + // E |
|
| 103 | + 'ecran_connexion_couleur_principale' => 'Cor principal', |
|
| 104 | + 'ecran_connexion_image_fond' => 'Imagem de fundo', |
|
| 105 | + 'ecran_connexion_image_fond_explication' => 'Usar uma imagem (formato JPEG, 1920x1080 pixels)', |
|
| 106 | + 'ecran_connexion_image_revenir_couleur_defaut' => 'Reverter para a cor padrão', |
|
| 107 | + 'ecran_connexion_titre' => 'Tela de conexão', |
|
| 108 | + 'ecran_securite' => ' + tela de segurança @version@', |
|
| 109 | + 'email' => 'e-mail', |
|
| 110 | + 'email_2' => 'e-mail:', |
|
| 111 | + 'en_savoir_plus' => 'Saiba mais', |
|
| 112 | + 'entree_adresse_annuaire' => 'Endereço do catálogo', |
|
| 113 | + 'entree_adresse_email' => 'Seu endereço de e-mail', |
|
| 114 | + 'entree_adresse_email_2' => 'Endereço de e-mail', |
|
| 115 | + 'entree_base_donnee_1' => 'Endereço da base de dados', |
|
| 116 | + 'entree_base_donnee_2' => '(Frequentemente este endereço corresponde ao do seu site, às vezes ele corresponde ao nome «localhost», algumas vezes ele pode ser deixado completamente em branco.)', |
|
| 117 | + 'entree_biographie' => 'Biografia curta em poucas palavras.', |
|
| 118 | + 'entree_chemin_acces' => '<b>Informe</b> o caminho de acesso:', |
|
| 119 | + 'entree_cle_pgp' => 'Sua chave PGP', |
|
| 120 | + 'entree_cle_pgp_2' => 'Chave PGP', |
|
| 121 | + 'entree_contenu_rubrique' => '(Conteúdo da seção em poucas palavras.)', |
|
| 122 | + 'entree_identifiants_connexion' => 'Seus dados de conexão...', |
|
| 123 | + 'entree_identifiants_connexion_2' => 'Dados de conexão', |
|
| 124 | + 'entree_informations_connexion_ldap' => 'Informe neste formulário os dados de conexão ao seu catálogo LDAP. |
|
| 125 | 125 | Estas informações deverão ser fornecidas pelo administrador do sistema ou da rede.', |
| 126 | - 'entree_infos_perso' => 'Quem é você?', |
|
| 127 | - 'entree_infos_perso_2' => 'Quem é o autor?', |
|
| 128 | - 'entree_interieur_rubrique' => 'No interior da seção:', |
|
| 129 | - 'entree_liens_sites' => '<b>Link hipertexto</b> (referência, site a visitar...)', |
|
| 130 | - 'entree_login' => 'Seu login', |
|
| 131 | - 'entree_login_connexion_1' => 'O login de conexão', |
|
| 132 | - 'entree_login_connexion_2' => '(Frequentemente corresponde ao seu login para acesso por FTP; às vezes pode ser deixado em branco)', |
|
| 133 | - 'entree_mot_passe' => 'Sua senha', |
|
| 134 | - 'entree_mot_passe_1' => 'A senha de conexão', |
|
| 135 | - 'entree_mot_passe_2' => '(Frequentemente corresponde à sua senha para acesso por FTP; às vezes pode ser deixado em branco)', |
|
| 136 | - 'entree_nom_fichier' => 'Por favor, informe o nome do arquivo @texte_compresse@:', |
|
| 137 | - 'entree_nom_pseudo' => 'Seu nome ou apelido', |
|
| 138 | - 'entree_nom_pseudo_1' => '(Seu nome ou apelido)', |
|
| 139 | - 'entree_nom_pseudo_2' => 'Nome ou apelido', |
|
| 140 | - 'entree_nom_site' => 'O nome do seu site', |
|
| 141 | - 'entree_nom_site_2' => 'Nome do site do autor', |
|
| 142 | - 'entree_nouveau_passe' => 'Nova senha', |
|
| 143 | - 'entree_passe_ldap' => 'Senha', |
|
| 144 | - 'entree_port_annuaire' => 'O número da porta do catálogo', |
|
| 145 | - 'entree_signature' => 'Assinatura', |
|
| 146 | - 'entree_titre_obligatoire' => '<b>Título</b> [Obrigatório]<br />', |
|
| 147 | - 'entree_url' => 'O endereço (URL) do seu site', |
|
| 148 | - 'entree_url_2' => 'Endereço (URL) do site', |
|
| 149 | - 'erreur_connect_deja_existant' => 'Já existe um servidor com esse nome', |
|
| 150 | - 'erreur_contenu_suspect' => 'Texto escapado', |
|
| 151 | - 'erreur_email_deja_existant' => 'Esse endereço de email já está em uso.', |
|
| 152 | - 'erreur_nom_connect_incorrect' => 'Este nome de servidor não é autorizado', |
|
| 153 | - 'erreur_plugin_attribut_balise_manquant' => 'Atributo @attribut@ faltando no tag @balise@.', |
|
| 154 | - 'erreur_plugin_desinstalation_echouee' => 'A desinstalação do plugin falhou. No entanto, você pode desativá-lo.', |
|
| 155 | - 'erreur_plugin_fichier_absent' => 'Arquivo ausente', |
|
| 156 | - 'erreur_plugin_fichier_def_absent' => 'Arquivo de definição ausente', |
|
| 157 | - 'erreur_plugin_nom_fonction_interdit' => 'Nome de função não permitido', |
|
| 158 | - 'erreur_plugin_nom_manquant' => 'Nome do plugin ausente', |
|
| 159 | - 'erreur_plugin_prefix_manquant' => 'Área de nomeação do plugin não definida', |
|
| 160 | - 'erreur_plugin_tag_plugin_absent' => '<plugin> ausente no arquivo de definição', |
|
| 161 | - 'erreur_plugin_version_manquant' => 'Versão do plugin ausente', |
|
| 162 | - 'erreur_type_fichier' => 'Tipo de arquivo incorreto', |
|
| 126 | + 'entree_infos_perso' => 'Quem é você?', |
|
| 127 | + 'entree_infos_perso_2' => 'Quem é o autor?', |
|
| 128 | + 'entree_interieur_rubrique' => 'No interior da seção:', |
|
| 129 | + 'entree_liens_sites' => '<b>Link hipertexto</b> (referência, site a visitar...)', |
|
| 130 | + 'entree_login' => 'Seu login', |
|
| 131 | + 'entree_login_connexion_1' => 'O login de conexão', |
|
| 132 | + 'entree_login_connexion_2' => '(Frequentemente corresponde ao seu login para acesso por FTP; às vezes pode ser deixado em branco)', |
|
| 133 | + 'entree_mot_passe' => 'Sua senha', |
|
| 134 | + 'entree_mot_passe_1' => 'A senha de conexão', |
|
| 135 | + 'entree_mot_passe_2' => '(Frequentemente corresponde à sua senha para acesso por FTP; às vezes pode ser deixado em branco)', |
|
| 136 | + 'entree_nom_fichier' => 'Por favor, informe o nome do arquivo @texte_compresse@:', |
|
| 137 | + 'entree_nom_pseudo' => 'Seu nome ou apelido', |
|
| 138 | + 'entree_nom_pseudo_1' => '(Seu nome ou apelido)', |
|
| 139 | + 'entree_nom_pseudo_2' => 'Nome ou apelido', |
|
| 140 | + 'entree_nom_site' => 'O nome do seu site', |
|
| 141 | + 'entree_nom_site_2' => 'Nome do site do autor', |
|
| 142 | + 'entree_nouveau_passe' => 'Nova senha', |
|
| 143 | + 'entree_passe_ldap' => 'Senha', |
|
| 144 | + 'entree_port_annuaire' => 'O número da porta do catálogo', |
|
| 145 | + 'entree_signature' => 'Assinatura', |
|
| 146 | + 'entree_titre_obligatoire' => '<b>Título</b> [Obrigatório]<br />', |
|
| 147 | + 'entree_url' => 'O endereço (URL) do seu site', |
|
| 148 | + 'entree_url_2' => 'Endereço (URL) do site', |
|
| 149 | + 'erreur_connect_deja_existant' => 'Já existe um servidor com esse nome', |
|
| 150 | + 'erreur_contenu_suspect' => 'Texto escapado', |
|
| 151 | + 'erreur_email_deja_existant' => 'Esse endereço de email já está em uso.', |
|
| 152 | + 'erreur_nom_connect_incorrect' => 'Este nome de servidor não é autorizado', |
|
| 153 | + 'erreur_plugin_attribut_balise_manquant' => 'Atributo @attribut@ faltando no tag @balise@.', |
|
| 154 | + 'erreur_plugin_desinstalation_echouee' => 'A desinstalação do plugin falhou. No entanto, você pode desativá-lo.', |
|
| 155 | + 'erreur_plugin_fichier_absent' => 'Arquivo ausente', |
|
| 156 | + 'erreur_plugin_fichier_def_absent' => 'Arquivo de definição ausente', |
|
| 157 | + 'erreur_plugin_nom_fonction_interdit' => 'Nome de função não permitido', |
|
| 158 | + 'erreur_plugin_nom_manquant' => 'Nome do plugin ausente', |
|
| 159 | + 'erreur_plugin_prefix_manquant' => 'Área de nomeação do plugin não definida', |
|
| 160 | + 'erreur_plugin_tag_plugin_absent' => '<plugin> ausente no arquivo de definição', |
|
| 161 | + 'erreur_plugin_version_manquant' => 'Versão do plugin ausente', |
|
| 162 | + 'erreur_type_fichier' => 'Tipo de arquivo incorreto', |
|
| 163 | 163 | |
| 164 | - // H |
|
| 165 | - 'htaccess_a_simuler' => 'Aviso: a configuração do seu servidor HTTP não leva em conta os arquivos @htaccess@. Para poder garantir um bom nível de segurança, é preciso que você altere esta configuração, ou que as constantes @constantes@ (definíveis no arquivo mes_options.php) tenham como valor os diretórios abaixo de @document_root@.', |
|
| 166 | - 'htaccess_inoperant' => 'htaccess inoperante', |
|
| 164 | + // H |
|
| 165 | + 'htaccess_a_simuler' => 'Aviso: a configuração do seu servidor HTTP não leva em conta os arquivos @htaccess@. Para poder garantir um bom nível de segurança, é preciso que você altere esta configuração, ou que as constantes @constantes@ (definíveis no arquivo mes_options.php) tenham como valor os diretórios abaixo de @document_root@.', |
|
| 166 | + 'htaccess_inoperant' => 'htaccess inoperante', |
|
| 167 | 167 | |
| 168 | - // I |
|
| 169 | - 'ical_info1' => 'Esta página apresenta diversos métodos para se manter a par da atividade deste site.', |
|
| 170 | - 'ical_info2' => 'Para mais informações sobre todas estas técnicas, não deixe de consultar <a href="@spipnet@">a documentação do SPIP</a>.', |
|
| 171 | - 'ical_info_calendrier' => 'Dois calendários estão à sua disposição. O primeiro é um mapa do site anunciando todas as matérias publicadas. O segundo contém os avisos editoriais bem como suas últimas mensagens privadas: ele lhe é reservado graças a uma chave pessoal, que você pode alterar a qualquer momento ao renovar a sua senha.', |
|
| 172 | - 'ical_methode_http' => 'Transferência', |
|
| 173 | - 'ical_methode_webcal' => 'Sincronização (webcal://)', |
|
| 174 | - 'ical_texte_prive' => 'Este calendário, de uso estritamente pessoal, o informa sobre a atividade editorial privada deste site (tarefas e encontros pessoais, matérias e notas propostas...).', |
|
| 175 | - 'ical_texte_public' => 'Este calendário permite-lhe acompanhar a atividade pública deste site (matérias e notas publicadas).', |
|
| 176 | - 'ical_texte_rss' => 'Você pode sindicar as novidades deste site em qualquer leitor de arquivos em formato XML/RSS (Rich Site Summary). É também o formato que permite ao SPIP ler as novidades publicadas em outros sites que utilizem um formato de troca de informações compatível (sites sindicados).', |
|
| 177 | - 'ical_titre_js' => 'Javascript', |
|
| 178 | - 'ical_titre_mailing' => 'Mailing-list', |
|
| 179 | - 'ical_titre_rss' => 'Arquivos de sindicação', |
|
| 180 | - 'icone_accueil' => 'Página Inicial', |
|
| 181 | - 'icone_activer_cookie' => 'Ativar o coockie de correspondência', |
|
| 182 | - 'icone_activite' => 'Atividade', |
|
| 183 | - 'icone_admin_plugin' => 'Gerenciamento dos plugins', |
|
| 184 | - 'icone_administration' => 'Manutenção', |
|
| 185 | - 'icone_afficher_auteurs' => 'Exibir os autores', |
|
| 186 | - 'icone_afficher_visiteurs' => 'Exibir os visitantes', |
|
| 187 | - 'icone_arret_discussion' => 'Não participar mais desta discussão', |
|
| 188 | - 'icone_calendrier' => 'Calendário', |
|
| 189 | - 'icone_configuration' => 'Configuração', |
|
| 190 | - 'icone_creer_auteur' => 'Criar um novo autor e vinculá-lo a esta matéria', |
|
| 191 | - 'icone_creer_mot_cle' => 'Criar uma nova palavra-chave e vinculá-la a esta matéria', |
|
| 192 | - 'icone_creer_rubrique_2' => 'Criar uma nova seção', |
|
| 193 | - 'icone_developpement' => 'Desenvolvimento', |
|
| 194 | - 'icone_edition' => 'Edição', |
|
| 195 | - 'icone_ma_langue' => 'Meu idioma', |
|
| 196 | - 'icone_mes_infos' => 'Minhas informações', |
|
| 197 | - 'icone_mes_preferences' => 'Minhas preferências', |
|
| 198 | - 'icone_modifier_article' => 'Editar esta matéria', |
|
| 199 | - 'icone_modifier_rubrique' => 'Editar esta seção', |
|
| 200 | - 'icone_publication' => 'Publicação', |
|
| 201 | - 'icone_relancer_signataire' => 'Reconfirmar o assinante', |
|
| 202 | - 'icone_retour' => 'Voltar', |
|
| 203 | - 'icone_retour_article' => 'Voltar para a matéria', |
|
| 204 | - 'icone_squelette' => 'Templates', |
|
| 205 | - 'icone_suivi_publication' => 'Acompanhamento da publicação', |
|
| 206 | - 'icone_supprimer_cookie' => 'Excluir o cookie de correspondência', |
|
| 207 | - 'icone_supprimer_rubrique' => 'Excluir esta seção', |
|
| 208 | - 'icone_supprimer_signature' => 'Excluir esta assinatura', |
|
| 209 | - 'icone_valider_signature' => 'Validar esta assinatura', |
|
| 210 | - 'image_administrer_rubrique' => 'Você pode administrar esta seção', |
|
| 211 | - 'impossible_modifier_login_auteur' => 'Não foi possível alterar o login.', |
|
| 212 | - 'impossible_modifier_pass_auteur' => 'Não foi possível alterar a senha.', |
|
| 213 | - 'info_1_article' => '1 matéria', |
|
| 214 | - 'info_1_auteur' => '1 autor', |
|
| 215 | - 'info_1_message' => '1 mensagem', |
|
| 216 | - 'info_1_mot_cle' => '1 palavra-chave', |
|
| 217 | - 'info_1_rubrique' => '1 seção', |
|
| 218 | - 'info_1_visiteur' => '1 visitante', |
|
| 219 | - 'info_activer_cookie' => 'Você pode ativar um <b>cookie de correspondência</b>, que lhe permitirá passar facilmente do site público para o site privado.', |
|
| 220 | - 'info_activer_menu_developpement' => 'Exibir o menu Desenvolvimento', |
|
| 221 | - 'info_admin_etre_webmestre' => 'Me conceder direitos de webmaster', |
|
| 222 | - 'info_admin_je_suis_webmestre' => 'Eu sou <b>webmaster</b>', |
|
| 223 | - 'info_admin_statuer_webmestre' => 'Dar a este administrador os direitos de webmaster', |
|
| 224 | - 'info_admin_webmestre' => 'Este administrador é <b>webmaster</b>', |
|
| 225 | - 'info_administrateur' => 'Administrador', |
|
| 226 | - 'info_administrateur_1' => 'Administrador', |
|
| 227 | - 'info_administrateur_2' => 'do site (<i>use com cuidado</i>)', |
|
| 228 | - 'info_administrateur_site_01' => 'Se você é administrador do site, por favor,', |
|
| 229 | - 'info_administrateur_site_02' => 'clique neste link', |
|
| 230 | - 'info_administrateurs' => 'Administradores', |
|
| 231 | - 'info_administrer_rubrique' => 'Você pode administrar esta seção', |
|
| 232 | - 'info_adresse' => 'no endereço:', |
|
| 233 | - 'info_adresse_desinscription' => 'Endereço da desinscrição:', |
|
| 234 | - 'info_adresse_url' => 'Endereço (URL) do site público', |
|
| 235 | - 'info_afficher_par_nb' => 'Exibir por', |
|
| 236 | - 'info_aide_en_ligne' => 'Ajuda online SPIP', |
|
| 237 | - 'info_ajout_image' => 'Assim que você incluir imagens e documentos anexados a uma matéria, o SPIP pode criar para você, automaticamente, ícones (miniaturas) das imagens inseridas. Isto permite, por exemplo, criar automaticamente uma galeria ou um portfólio.', |
|
| 238 | - 'info_ajouter_rubrique' => 'Incluir outra seção para administrar:', |
|
| 239 | - 'info_annonce_nouveautes' => 'Aviso das novidades', |
|
| 240 | - 'info_article' => 'matéria', |
|
| 241 | - 'info_article_2' => 'matérias', |
|
| 242 | - 'info_article_a_paraitre' => 'As matérias pós-datadas para exibição', |
|
| 243 | - 'info_articles_02' => 'matérias', |
|
| 244 | - 'info_articles_2' => 'Matérias', |
|
| 245 | - 'info_articles_auteur' => 'As matérias deste autor', |
|
| 246 | - 'info_articles_miens' => 'Minhas matérias', |
|
| 247 | - 'info_articles_tous' => 'Todas as matérias', |
|
| 248 | - 'info_articles_trouves' => 'Matérias encontradas', |
|
| 249 | - 'info_attente_validation' => 'Suas matérias aguardando validação', |
|
| 250 | - 'info_aucun_article' => 'Nenhuma matéria', |
|
| 251 | - 'info_aucun_auteur' => 'Nenhum autor', |
|
| 252 | - 'info_aucun_message' => 'Nenhuma mensagem', |
|
| 253 | - 'info_aucun_rubrique' => 'Nenhuma seção', |
|
| 254 | - 'info_aujourdhui' => 'Hoje:', |
|
| 255 | - 'info_auteur_gere_rubriques' => 'Este autor gerencia as seções a seguir:', |
|
| 256 | - 'info_auteur_gere_toutes_rubriques' => 'Este autor gerencia <b>todas as seções</b>', |
|
| 257 | - 'info_auteur_gere_toutes_rubriques_2' => 'Eu gerencio <b>todas as seções</b>', |
|
| 258 | - 'info_auteurs' => 'Os autores', |
|
| 259 | - 'info_auteurs_par_tri' => 'Autores@partri@', |
|
| 260 | - 'info_auteurs_trouves' => 'Autores encontrados', |
|
| 261 | - 'info_authentification_externe' => 'Autenticação externa', |
|
| 262 | - 'info_avertissement' => 'Aviso', |
|
| 263 | - 'info_barre_outils' => 'com sua barra de ferramentas?', |
|
| 264 | - 'info_base_installee' => 'A estrutura da sua base de dados foi instalada.', |
|
| 265 | - 'info_bio' => 'Biografia', |
|
| 266 | - 'info_cache_desactive' => 'O cache está temporariamente desativado.', |
|
| 267 | - 'info_chapeau' => 'Introdução', |
|
| 268 | - 'info_chapeau_2' => 'Introdução:', |
|
| 269 | - 'info_chemin_acces_1' => 'Opções: <b>Caminho de acesso no diretório</b>', |
|
| 270 | - 'info_chemin_acces_2' => 'A partir daqui, você deverá configurar o caminho de acesso às informações do diretório. Esta informação é indispensávelpara ler os perfis dos usuários no diretório.', |
|
| 271 | - 'info_chemin_acces_annuaire' => 'Opções: <b>Caminho de acesso no diretório</b>', |
|
| 272 | - 'info_choix_base' => 'Terceiro passo:', |
|
| 273 | - 'info_classement_1' => '<sup><u>o</u></sup> em @liste@', |
|
| 274 | - 'info_classement_2' => '<sup><u>a</u></sup> em @liste@', |
|
| 275 | - 'info_code_acces' => 'Não se esqueça dos seus dados de conexão!', |
|
| 276 | - 'info_config_suivi' => 'Se este endereço corresponde a uma mailing-list, você pode informar abaixo o endereço onde os participantes do site podem se inscrever. Este endereço pode ser um URL (por exemplo a página de inscrição na lista pela Web), ou um endereço de e-mail dotado de um assunto específico (par exemple: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 277 | - 'info_config_suivi_explication' => 'Voce pode assinar a mailing-list deste site. Você irá receber por e-mail, os avisos de matérias e notas propostos para publicação.', |
|
| 278 | - 'info_confirmer_passe' => 'Confirmar a nova senha:', |
|
| 279 | - 'info_conflit_edition_avis_non_sauvegarde' => 'Atenção os campos a seguir foram alterados por terceiros. As suas modificações nestes campos não foram, por isso, gravadas.', |
|
| 280 | - 'info_conflit_edition_differences' => 'Diferenças:', |
|
| 281 | - 'info_conflit_edition_version_enregistree' => 'A versão gravada:', |
|
| 282 | - 'info_conflit_edition_votre_version' => 'A sua versão:', |
|
| 283 | - 'info_connexion_base' => 'Teste de conexão com a base', |
|
| 284 | - 'info_connexion_base_donnee' => 'Conexão à sua base de dados', |
|
| 285 | - 'info_connexion_ldap_ok' => '<b>A conexão LDAP foi efetuada.</b><p>Você pode passar para o próximo passo.</p>', |
|
| 286 | - 'info_connexion_mysql' => 'Sua conexão SQL', |
|
| 287 | - 'info_connexion_ok' => 'A conexão foi obtida.', |
|
| 288 | - 'info_contact' => 'Contato', |
|
| 289 | - 'info_contenu_articles' => 'Conteúdo das matérias', |
|
| 290 | - 'info_contributions' => 'Contribuições', |
|
| 291 | - 'info_creation_paragraphe' => 'Para criar parágrafos, basta deixar linhas em branco.', |
|
| 292 | - 'info_creation_rubrique' => 'Antes de poder escrever matérias, você deve criar, pelo menos, uma seção.<br />', |
|
| 293 | - 'info_creation_tables' => 'Criação das tabelas da base', |
|
| 294 | - 'info_creer_base' => '<b>Criar</b> uma nova base de dados:', |
|
| 295 | - 'info_dans_rubrique' => 'Na seção:', |
|
| 296 | - 'info_date_publication_anterieure' => 'Data de redação anterior:', |
|
| 297 | - 'info_date_referencement' => 'DATA DE REFERENCIAMENTO DESTE SITE:', |
|
| 298 | - 'info_derniere_etape' => 'Terminou!', |
|
| 299 | - 'info_descriptif' => 'Descrição:', |
|
| 300 | - 'info_desinstaller_plugin' => 'exclui os dados e desativa o plugin', |
|
| 301 | - 'info_discussion_cours' => 'Discussões em andamento', |
|
| 302 | - 'info_ecrire_article' => 'Antes de poder escrever matérias, você precisa criar pelo menos uma seção.', |
|
| 303 | - 'info_email_envoi' => 'Endereço de e-mail de envio (opcional)', |
|
| 304 | - 'info_email_envoi_txt' => 'Informe aqui o endereço a ser utilizado para enviar os e-mails (por padrão, o endereço de destino será usado como endereço de envio):', |
|
| 305 | - 'info_email_webmestre' => 'Endereço de e-mail do webmaster', |
|
| 306 | - 'info_envoi_email_automatique' => 'Envio automático de e-mails', |
|
| 307 | - 'info_envoyer_maintenant' => 'Enviar agora', |
|
| 308 | - 'info_etape_suivante' => 'Avançar para a próxima etapa', |
|
| 309 | - 'info_etape_suivante_1' => 'Você pode passar para a próxima etapa.', |
|
| 310 | - 'info_etape_suivante_2' => 'Você pode passar para a próxima etapa.', |
|
| 311 | - 'info_exceptions_proxy' => 'Exceções para o proxy', |
|
| 312 | - 'info_exportation_base' => 'exportação da base para @archive@', |
|
| 313 | - 'info_facilite_suivi_activite' => 'Para facilitar o acompanhamento da atividade editorial do site, o SPIP pode avisar por e-mail, por exemplo para uma mailing-list de redatores, os avisos dos pedidos de publicação e das validações das matérias. Informe um ou mais endereços, separados por vírgula.', |
|
| 314 | - 'info_fichiers_authent' => 'Arquivos de autenticação «.htpasswd»', |
|
| 315 | - 'info_forums_abo_invites' => 'O seu site comporta fóruns por assinatura; os visitantes são convidados a se registrar no site público.', |
|
| 316 | - 'info_gauche_admin_tech' => '<b>Esta página é acessível apenas aos responsáveis pelo site.</b><p>Ela dá acesso às diferentes funções de manutenção técnica. Algumas dessas funções possuem um processo específico de autenticação que exige acesso FTP ao website.</p>', |
|
| 317 | - 'info_gauche_admin_vider' => '<b>Esta página é acessível apenas aos responsáveis pelo site.</b><p> Ela dá acesso às diferentes funções de manutenção técnica. Algumas dessas funções possuem um processo específico de autenticação que exige acesso FTP ao website.</p>', |
|
| 318 | - 'info_gauche_auteurs' => 'Aqui, você encontra todos os autores do site. |
|
| 168 | + // I |
|
| 169 | + 'ical_info1' => 'Esta página apresenta diversos métodos para se manter a par da atividade deste site.', |
|
| 170 | + 'ical_info2' => 'Para mais informações sobre todas estas técnicas, não deixe de consultar <a href="@spipnet@">a documentação do SPIP</a>.', |
|
| 171 | + 'ical_info_calendrier' => 'Dois calendários estão à sua disposição. O primeiro é um mapa do site anunciando todas as matérias publicadas. O segundo contém os avisos editoriais bem como suas últimas mensagens privadas: ele lhe é reservado graças a uma chave pessoal, que você pode alterar a qualquer momento ao renovar a sua senha.', |
|
| 172 | + 'ical_methode_http' => 'Transferência', |
|
| 173 | + 'ical_methode_webcal' => 'Sincronização (webcal://)', |
|
| 174 | + 'ical_texte_prive' => 'Este calendário, de uso estritamente pessoal, o informa sobre a atividade editorial privada deste site (tarefas e encontros pessoais, matérias e notas propostas...).', |
|
| 175 | + 'ical_texte_public' => 'Este calendário permite-lhe acompanhar a atividade pública deste site (matérias e notas publicadas).', |
|
| 176 | + 'ical_texte_rss' => 'Você pode sindicar as novidades deste site em qualquer leitor de arquivos em formato XML/RSS (Rich Site Summary). É também o formato que permite ao SPIP ler as novidades publicadas em outros sites que utilizem um formato de troca de informações compatível (sites sindicados).', |
|
| 177 | + 'ical_titre_js' => 'Javascript', |
|
| 178 | + 'ical_titre_mailing' => 'Mailing-list', |
|
| 179 | + 'ical_titre_rss' => 'Arquivos de sindicação', |
|
| 180 | + 'icone_accueil' => 'Página Inicial', |
|
| 181 | + 'icone_activer_cookie' => 'Ativar o coockie de correspondência', |
|
| 182 | + 'icone_activite' => 'Atividade', |
|
| 183 | + 'icone_admin_plugin' => 'Gerenciamento dos plugins', |
|
| 184 | + 'icone_administration' => 'Manutenção', |
|
| 185 | + 'icone_afficher_auteurs' => 'Exibir os autores', |
|
| 186 | + 'icone_afficher_visiteurs' => 'Exibir os visitantes', |
|
| 187 | + 'icone_arret_discussion' => 'Não participar mais desta discussão', |
|
| 188 | + 'icone_calendrier' => 'Calendário', |
|
| 189 | + 'icone_configuration' => 'Configuração', |
|
| 190 | + 'icone_creer_auteur' => 'Criar um novo autor e vinculá-lo a esta matéria', |
|
| 191 | + 'icone_creer_mot_cle' => 'Criar uma nova palavra-chave e vinculá-la a esta matéria', |
|
| 192 | + 'icone_creer_rubrique_2' => 'Criar uma nova seção', |
|
| 193 | + 'icone_developpement' => 'Desenvolvimento', |
|
| 194 | + 'icone_edition' => 'Edição', |
|
| 195 | + 'icone_ma_langue' => 'Meu idioma', |
|
| 196 | + 'icone_mes_infos' => 'Minhas informações', |
|
| 197 | + 'icone_mes_preferences' => 'Minhas preferências', |
|
| 198 | + 'icone_modifier_article' => 'Editar esta matéria', |
|
| 199 | + 'icone_modifier_rubrique' => 'Editar esta seção', |
|
| 200 | + 'icone_publication' => 'Publicação', |
|
| 201 | + 'icone_relancer_signataire' => 'Reconfirmar o assinante', |
|
| 202 | + 'icone_retour' => 'Voltar', |
|
| 203 | + 'icone_retour_article' => 'Voltar para a matéria', |
|
| 204 | + 'icone_squelette' => 'Templates', |
|
| 205 | + 'icone_suivi_publication' => 'Acompanhamento da publicação', |
|
| 206 | + 'icone_supprimer_cookie' => 'Excluir o cookie de correspondência', |
|
| 207 | + 'icone_supprimer_rubrique' => 'Excluir esta seção', |
|
| 208 | + 'icone_supprimer_signature' => 'Excluir esta assinatura', |
|
| 209 | + 'icone_valider_signature' => 'Validar esta assinatura', |
|
| 210 | + 'image_administrer_rubrique' => 'Você pode administrar esta seção', |
|
| 211 | + 'impossible_modifier_login_auteur' => 'Não foi possível alterar o login.', |
|
| 212 | + 'impossible_modifier_pass_auteur' => 'Não foi possível alterar a senha.', |
|
| 213 | + 'info_1_article' => '1 matéria', |
|
| 214 | + 'info_1_auteur' => '1 autor', |
|
| 215 | + 'info_1_message' => '1 mensagem', |
|
| 216 | + 'info_1_mot_cle' => '1 palavra-chave', |
|
| 217 | + 'info_1_rubrique' => '1 seção', |
|
| 218 | + 'info_1_visiteur' => '1 visitante', |
|
| 219 | + 'info_activer_cookie' => 'Você pode ativar um <b>cookie de correspondência</b>, que lhe permitirá passar facilmente do site público para o site privado.', |
|
| 220 | + 'info_activer_menu_developpement' => 'Exibir o menu Desenvolvimento', |
|
| 221 | + 'info_admin_etre_webmestre' => 'Me conceder direitos de webmaster', |
|
| 222 | + 'info_admin_je_suis_webmestre' => 'Eu sou <b>webmaster</b>', |
|
| 223 | + 'info_admin_statuer_webmestre' => 'Dar a este administrador os direitos de webmaster', |
|
| 224 | + 'info_admin_webmestre' => 'Este administrador é <b>webmaster</b>', |
|
| 225 | + 'info_administrateur' => 'Administrador', |
|
| 226 | + 'info_administrateur_1' => 'Administrador', |
|
| 227 | + 'info_administrateur_2' => 'do site (<i>use com cuidado</i>)', |
|
| 228 | + 'info_administrateur_site_01' => 'Se você é administrador do site, por favor,', |
|
| 229 | + 'info_administrateur_site_02' => 'clique neste link', |
|
| 230 | + 'info_administrateurs' => 'Administradores', |
|
| 231 | + 'info_administrer_rubrique' => 'Você pode administrar esta seção', |
|
| 232 | + 'info_adresse' => 'no endereço:', |
|
| 233 | + 'info_adresse_desinscription' => 'Endereço da desinscrição:', |
|
| 234 | + 'info_adresse_url' => 'Endereço (URL) do site público', |
|
| 235 | + 'info_afficher_par_nb' => 'Exibir por', |
|
| 236 | + 'info_aide_en_ligne' => 'Ajuda online SPIP', |
|
| 237 | + 'info_ajout_image' => 'Assim que você incluir imagens e documentos anexados a uma matéria, o SPIP pode criar para você, automaticamente, ícones (miniaturas) das imagens inseridas. Isto permite, por exemplo, criar automaticamente uma galeria ou um portfólio.', |
|
| 238 | + 'info_ajouter_rubrique' => 'Incluir outra seção para administrar:', |
|
| 239 | + 'info_annonce_nouveautes' => 'Aviso das novidades', |
|
| 240 | + 'info_article' => 'matéria', |
|
| 241 | + 'info_article_2' => 'matérias', |
|
| 242 | + 'info_article_a_paraitre' => 'As matérias pós-datadas para exibição', |
|
| 243 | + 'info_articles_02' => 'matérias', |
|
| 244 | + 'info_articles_2' => 'Matérias', |
|
| 245 | + 'info_articles_auteur' => 'As matérias deste autor', |
|
| 246 | + 'info_articles_miens' => 'Minhas matérias', |
|
| 247 | + 'info_articles_tous' => 'Todas as matérias', |
|
| 248 | + 'info_articles_trouves' => 'Matérias encontradas', |
|
| 249 | + 'info_attente_validation' => 'Suas matérias aguardando validação', |
|
| 250 | + 'info_aucun_article' => 'Nenhuma matéria', |
|
| 251 | + 'info_aucun_auteur' => 'Nenhum autor', |
|
| 252 | + 'info_aucun_message' => 'Nenhuma mensagem', |
|
| 253 | + 'info_aucun_rubrique' => 'Nenhuma seção', |
|
| 254 | + 'info_aujourdhui' => 'Hoje:', |
|
| 255 | + 'info_auteur_gere_rubriques' => 'Este autor gerencia as seções a seguir:', |
|
| 256 | + 'info_auteur_gere_toutes_rubriques' => 'Este autor gerencia <b>todas as seções</b>', |
|
| 257 | + 'info_auteur_gere_toutes_rubriques_2' => 'Eu gerencio <b>todas as seções</b>', |
|
| 258 | + 'info_auteurs' => 'Os autores', |
|
| 259 | + 'info_auteurs_par_tri' => 'Autores@partri@', |
|
| 260 | + 'info_auteurs_trouves' => 'Autores encontrados', |
|
| 261 | + 'info_authentification_externe' => 'Autenticação externa', |
|
| 262 | + 'info_avertissement' => 'Aviso', |
|
| 263 | + 'info_barre_outils' => 'com sua barra de ferramentas?', |
|
| 264 | + 'info_base_installee' => 'A estrutura da sua base de dados foi instalada.', |
|
| 265 | + 'info_bio' => 'Biografia', |
|
| 266 | + 'info_cache_desactive' => 'O cache está temporariamente desativado.', |
|
| 267 | + 'info_chapeau' => 'Introdução', |
|
| 268 | + 'info_chapeau_2' => 'Introdução:', |
|
| 269 | + 'info_chemin_acces_1' => 'Opções: <b>Caminho de acesso no diretório</b>', |
|
| 270 | + 'info_chemin_acces_2' => 'A partir daqui, você deverá configurar o caminho de acesso às informações do diretório. Esta informação é indispensávelpara ler os perfis dos usuários no diretório.', |
|
| 271 | + 'info_chemin_acces_annuaire' => 'Opções: <b>Caminho de acesso no diretório</b>', |
|
| 272 | + 'info_choix_base' => 'Terceiro passo:', |
|
| 273 | + 'info_classement_1' => '<sup><u>o</u></sup> em @liste@', |
|
| 274 | + 'info_classement_2' => '<sup><u>a</u></sup> em @liste@', |
|
| 275 | + 'info_code_acces' => 'Não se esqueça dos seus dados de conexão!', |
|
| 276 | + 'info_config_suivi' => 'Se este endereço corresponde a uma mailing-list, você pode informar abaixo o endereço onde os participantes do site podem se inscrever. Este endereço pode ser um URL (por exemplo a página de inscrição na lista pela Web), ou um endereço de e-mail dotado de um assunto específico (par exemple: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 277 | + 'info_config_suivi_explication' => 'Voce pode assinar a mailing-list deste site. Você irá receber por e-mail, os avisos de matérias e notas propostos para publicação.', |
|
| 278 | + 'info_confirmer_passe' => 'Confirmar a nova senha:', |
|
| 279 | + 'info_conflit_edition_avis_non_sauvegarde' => 'Atenção os campos a seguir foram alterados por terceiros. As suas modificações nestes campos não foram, por isso, gravadas.', |
|
| 280 | + 'info_conflit_edition_differences' => 'Diferenças:', |
|
| 281 | + 'info_conflit_edition_version_enregistree' => 'A versão gravada:', |
|
| 282 | + 'info_conflit_edition_votre_version' => 'A sua versão:', |
|
| 283 | + 'info_connexion_base' => 'Teste de conexão com a base', |
|
| 284 | + 'info_connexion_base_donnee' => 'Conexão à sua base de dados', |
|
| 285 | + 'info_connexion_ldap_ok' => '<b>A conexão LDAP foi efetuada.</b><p>Você pode passar para o próximo passo.</p>', |
|
| 286 | + 'info_connexion_mysql' => 'Sua conexão SQL', |
|
| 287 | + 'info_connexion_ok' => 'A conexão foi obtida.', |
|
| 288 | + 'info_contact' => 'Contato', |
|
| 289 | + 'info_contenu_articles' => 'Conteúdo das matérias', |
|
| 290 | + 'info_contributions' => 'Contribuições', |
|
| 291 | + 'info_creation_paragraphe' => 'Para criar parágrafos, basta deixar linhas em branco.', |
|
| 292 | + 'info_creation_rubrique' => 'Antes de poder escrever matérias, você deve criar, pelo menos, uma seção.<br />', |
|
| 293 | + 'info_creation_tables' => 'Criação das tabelas da base', |
|
| 294 | + 'info_creer_base' => '<b>Criar</b> uma nova base de dados:', |
|
| 295 | + 'info_dans_rubrique' => 'Na seção:', |
|
| 296 | + 'info_date_publication_anterieure' => 'Data de redação anterior:', |
|
| 297 | + 'info_date_referencement' => 'DATA DE REFERENCIAMENTO DESTE SITE:', |
|
| 298 | + 'info_derniere_etape' => 'Terminou!', |
|
| 299 | + 'info_descriptif' => 'Descrição:', |
|
| 300 | + 'info_desinstaller_plugin' => 'exclui os dados e desativa o plugin', |
|
| 301 | + 'info_discussion_cours' => 'Discussões em andamento', |
|
| 302 | + 'info_ecrire_article' => 'Antes de poder escrever matérias, você precisa criar pelo menos uma seção.', |
|
| 303 | + 'info_email_envoi' => 'Endereço de e-mail de envio (opcional)', |
|
| 304 | + 'info_email_envoi_txt' => 'Informe aqui o endereço a ser utilizado para enviar os e-mails (por padrão, o endereço de destino será usado como endereço de envio):', |
|
| 305 | + 'info_email_webmestre' => 'Endereço de e-mail do webmaster', |
|
| 306 | + 'info_envoi_email_automatique' => 'Envio automático de e-mails', |
|
| 307 | + 'info_envoyer_maintenant' => 'Enviar agora', |
|
| 308 | + 'info_etape_suivante' => 'Avançar para a próxima etapa', |
|
| 309 | + 'info_etape_suivante_1' => 'Você pode passar para a próxima etapa.', |
|
| 310 | + 'info_etape_suivante_2' => 'Você pode passar para a próxima etapa.', |
|
| 311 | + 'info_exceptions_proxy' => 'Exceções para o proxy', |
|
| 312 | + 'info_exportation_base' => 'exportação da base para @archive@', |
|
| 313 | + 'info_facilite_suivi_activite' => 'Para facilitar o acompanhamento da atividade editorial do site, o SPIP pode avisar por e-mail, por exemplo para uma mailing-list de redatores, os avisos dos pedidos de publicação e das validações das matérias. Informe um ou mais endereços, separados por vírgula.', |
|
| 314 | + 'info_fichiers_authent' => 'Arquivos de autenticação «.htpasswd»', |
|
| 315 | + 'info_forums_abo_invites' => 'O seu site comporta fóruns por assinatura; os visitantes são convidados a se registrar no site público.', |
|
| 316 | + 'info_gauche_admin_tech' => '<b>Esta página é acessível apenas aos responsáveis pelo site.</b><p>Ela dá acesso às diferentes funções de manutenção técnica. Algumas dessas funções possuem um processo específico de autenticação que exige acesso FTP ao website.</p>', |
|
| 317 | + 'info_gauche_admin_vider' => '<b>Esta página é acessível apenas aos responsáveis pelo site.</b><p> Ela dá acesso às diferentes funções de manutenção técnica. Algumas dessas funções possuem um processo específico de autenticação que exige acesso FTP ao website.</p>', |
|
| 318 | + 'info_gauche_auteurs' => 'Aqui, você encontra todos os autores do site. |
|
| 319 | 319 | Os status dos autores é indicado pela côr dos ícones (administrador = verde; redator = amarelo).', |
| 320 | - 'info_gauche_auteurs_exterieurs' => 'Os autores externos, sem acesso ao site, são indicados por um ícone azul; |
|
| 320 | + 'info_gauche_auteurs_exterieurs' => 'Os autores externos, sem acesso ao site, são indicados por um ícone azul; |
|
| 321 | 321 | os autores excluídos por um ícone cinza.', |
| 322 | - 'info_gauche_messagerie' => 'O sistema interno de mensagens permite a troca de mensagens entre redatores, a criação de lembretes (para seu uso pessoal) ou exibir anúncios na página de entrada da área privada (se você for administrador).', |
|
| 323 | - 'info_gauche_statistiques_referers' => 'Esta página apresenta a lista dos <i>referers</i>, ou seja, dos sites que contêm links para o seu site, unicamente para ontem e hoje; esta lista é zerada a cada 24 horas.', |
|
| 324 | - 'info_gauche_visiteurs_enregistres' => 'Você encontrará aqui os visitantes registrados na área pública do site (fóruns por assinatura).', |
|
| 325 | - 'info_generation_miniatures_images' => 'Geração de miniaturas das imagens', |
|
| 326 | - 'info_gerer_trad_objets' => '@objets@ : gerenciar os links de tradução', |
|
| 327 | - 'info_hebergeur_desactiver_envoi_email' => 'Alguns serviços de hospedagem desativam o envio automático de e-mails a partir dos seus servidores. Neste caso, as funcionalidades a seguir não funcionarão.', |
|
| 328 | - 'info_hier' => 'ontem:', |
|
| 329 | - 'info_identification_publique' => 'Sua identificação pública...', |
|
| 330 | - 'info_image_process' => 'Por favor, selecione o melhor método de criação dos ícones, clicando na imagem correspondente.', |
|
| 331 | - 'info_image_process2' => 'Se nenhuma imagem está sendo exibida, o servidor que hospeda o seu site não foi configurado para utilizar essas ferramentas. Se você deseja usar essas funções, contate o responsável técnico e solicite as extensões «GD» ou «Imagick».', |
|
| 332 | - 'info_images_auto' => 'Imagens calculadas automaticamente', |
|
| 333 | - 'info_informations_personnelles' => 'Informações pessoais', |
|
| 334 | - 'info_inscription' => 'Inscrição online', |
|
| 335 | - 'info_inscription_automatique' => 'Inscrição automática de novos redatores', |
|
| 336 | - 'info_jeu_caractere' => 'Conjunto de caracteres do site', |
|
| 337 | - 'info_jours' => 'dias', |
|
| 338 | - 'info_laisser_champs_vides' => 'deixar estes campos vazios)', |
|
| 339 | - 'info_langues' => 'Idiomas do site', |
|
| 340 | - 'info_ldap_ok' => 'A autenticação LDAP está instalada.', |
|
| 341 | - 'info_lien_hypertexte' => 'Link hipertexto:', |
|
| 342 | - 'info_liste_nouveautes_envoyee' => 'A lista de novidades foi enviada', |
|
| 343 | - 'info_liste_redacteurs_connectes' => 'Lista de redatores conectados', |
|
| 344 | - 'info_login_existant' => 'Este login já está cadastrado.', |
|
| 345 | - 'info_login_trop_court' => 'Login muito curto.', |
|
| 346 | - 'info_login_trop_court_car_pluriel' => 'O login deve conter pelo menos @nb@ caracteres.', |
|
| 347 | - 'info_logos' => 'Os ícones', |
|
| 348 | - 'info_maximum' => 'máximo:', |
|
| 349 | - 'info_meme_rubrique' => 'Na mesma seção', |
|
| 350 | - 'info_message_en_redaction' => 'Suas mensagens em fase de redação', |
|
| 351 | - 'info_message_technique' => 'Mensagem técnica:', |
|
| 352 | - 'info_messagerie_interne' => 'Mensageria interna', |
|
| 353 | - 'info_mise_a_niveau_base' => 'atualização da sua base SQL', |
|
| 354 | - 'info_mise_a_niveau_base_2' => '{{Atenção!}} Você instalou uma versão de arquivos SPIP {anterior} à que estava instalada no site: a sua base de dados corre o risco de se corromper e o seu site não funcionar mais.<br />{{Reinstale os arquivos SPIP.}}', |
|
| 355 | - 'info_modification_enregistree' => 'Sua alteração foi gravada', |
|
| 356 | - 'info_modifier_auteur' => 'Editar o autor:', |
|
| 357 | - 'info_modifier_rubrique' => 'Editar a seção:', |
|
| 358 | - 'info_modifier_titre' => 'Editar: @titre@', |
|
| 359 | - 'info_mon_site_spip' => 'Meu site SPIP', |
|
| 360 | - 'info_moyenne' => 'média:', |
|
| 361 | - 'info_multi_cet_article' => 'Idioma desta matéria:', |
|
| 362 | - 'info_multi_langues_choisies' => 'Por favor, selecione a seguir os idiomas à disposição dos redatores do seu site. |
|
| 322 | + 'info_gauche_messagerie' => 'O sistema interno de mensagens permite a troca de mensagens entre redatores, a criação de lembretes (para seu uso pessoal) ou exibir anúncios na página de entrada da área privada (se você for administrador).', |
|
| 323 | + 'info_gauche_statistiques_referers' => 'Esta página apresenta a lista dos <i>referers</i>, ou seja, dos sites que contêm links para o seu site, unicamente para ontem e hoje; esta lista é zerada a cada 24 horas.', |
|
| 324 | + 'info_gauche_visiteurs_enregistres' => 'Você encontrará aqui os visitantes registrados na área pública do site (fóruns por assinatura).', |
|
| 325 | + 'info_generation_miniatures_images' => 'Geração de miniaturas das imagens', |
|
| 326 | + 'info_gerer_trad_objets' => '@objets@ : gerenciar os links de tradução', |
|
| 327 | + 'info_hebergeur_desactiver_envoi_email' => 'Alguns serviços de hospedagem desativam o envio automático de e-mails a partir dos seus servidores. Neste caso, as funcionalidades a seguir não funcionarão.', |
|
| 328 | + 'info_hier' => 'ontem:', |
|
| 329 | + 'info_identification_publique' => 'Sua identificação pública...', |
|
| 330 | + 'info_image_process' => 'Por favor, selecione o melhor método de criação dos ícones, clicando na imagem correspondente.', |
|
| 331 | + 'info_image_process2' => 'Se nenhuma imagem está sendo exibida, o servidor que hospeda o seu site não foi configurado para utilizar essas ferramentas. Se você deseja usar essas funções, contate o responsável técnico e solicite as extensões «GD» ou «Imagick».', |
|
| 332 | + 'info_images_auto' => 'Imagens calculadas automaticamente', |
|
| 333 | + 'info_informations_personnelles' => 'Informações pessoais', |
|
| 334 | + 'info_inscription' => 'Inscrição online', |
|
| 335 | + 'info_inscription_automatique' => 'Inscrição automática de novos redatores', |
|
| 336 | + 'info_jeu_caractere' => 'Conjunto de caracteres do site', |
|
| 337 | + 'info_jours' => 'dias', |
|
| 338 | + 'info_laisser_champs_vides' => 'deixar estes campos vazios)', |
|
| 339 | + 'info_langues' => 'Idiomas do site', |
|
| 340 | + 'info_ldap_ok' => 'A autenticação LDAP está instalada.', |
|
| 341 | + 'info_lien_hypertexte' => 'Link hipertexto:', |
|
| 342 | + 'info_liste_nouveautes_envoyee' => 'A lista de novidades foi enviada', |
|
| 343 | + 'info_liste_redacteurs_connectes' => 'Lista de redatores conectados', |
|
| 344 | + 'info_login_existant' => 'Este login já está cadastrado.', |
|
| 345 | + 'info_login_trop_court' => 'Login muito curto.', |
|
| 346 | + 'info_login_trop_court_car_pluriel' => 'O login deve conter pelo menos @nb@ caracteres.', |
|
| 347 | + 'info_logos' => 'Os ícones', |
|
| 348 | + 'info_maximum' => 'máximo:', |
|
| 349 | + 'info_meme_rubrique' => 'Na mesma seção', |
|
| 350 | + 'info_message_en_redaction' => 'Suas mensagens em fase de redação', |
|
| 351 | + 'info_message_technique' => 'Mensagem técnica:', |
|
| 352 | + 'info_messagerie_interne' => 'Mensageria interna', |
|
| 353 | + 'info_mise_a_niveau_base' => 'atualização da sua base SQL', |
|
| 354 | + 'info_mise_a_niveau_base_2' => '{{Atenção!}} Você instalou uma versão de arquivos SPIP {anterior} à que estava instalada no site: a sua base de dados corre o risco de se corromper e o seu site não funcionar mais.<br />{{Reinstale os arquivos SPIP.}}', |
|
| 355 | + 'info_modification_enregistree' => 'Sua alteração foi gravada', |
|
| 356 | + 'info_modifier_auteur' => 'Editar o autor:', |
|
| 357 | + 'info_modifier_rubrique' => 'Editar a seção:', |
|
| 358 | + 'info_modifier_titre' => 'Editar: @titre@', |
|
| 359 | + 'info_mon_site_spip' => 'Meu site SPIP', |
|
| 360 | + 'info_moyenne' => 'média:', |
|
| 361 | + 'info_multi_cet_article' => 'Idioma desta matéria:', |
|
| 362 | + 'info_multi_langues_choisies' => 'Por favor, selecione a seguir os idiomas à disposição dos redatores do seu site. |
|
| 363 | 363 | Os idiomas já utilizados no site (no topo da lista) não podem ser desativados.', |
| 364 | - 'info_multi_objets' => '@objets@ : ativar o menu de idioma', |
|
| 365 | - 'info_multi_secteurs' => '... apenas para as seções situadas na raiz?', |
|
| 366 | - 'info_nb_articles' => '@nb@ matérias', |
|
| 367 | - 'info_nb_auteurs' => '@nb@ autores', |
|
| 368 | - 'info_nb_messages' => '@nb@ mensagens', |
|
| 369 | - 'info_nb_mots_cles' => '@nb@ palavras-chave', |
|
| 370 | - 'info_nb_rubriques' => '@nb@ seções', |
|
| 371 | - 'info_nb_visiteurs' => '@nb@ visitantes', |
|
| 372 | - 'info_nom' => 'Nome', |
|
| 373 | - 'info_nom_destinataire' => 'Nome do destinatário', |
|
| 374 | - 'info_nom_pas_conforme' => 'tags HTML não são permitidas', |
|
| 375 | - 'info_nom_site' => 'Nome do seu site', |
|
| 376 | - 'info_nombre_articles' => '@nb_articles@ matérias,', |
|
| 377 | - 'info_nombre_rubriques' => '@nb_rubriques@ seções,', |
|
| 378 | - 'info_nombre_sites' => '@nb_sites@ sites,', |
|
| 379 | - 'info_non_deplacer' => 'Não mover...', |
|
| 380 | - 'info_non_envoi_annonce_dernieres_nouveautes' => 'O SPIP pode enviar regularmente o anúncio das últimas novidades do site (matérias e notas publicadas recentemente).', |
|
| 381 | - 'info_non_envoi_liste_nouveautes' => 'Não enviar a lista de novidades', |
|
| 382 | - 'info_non_modifiable' => 'não pode ser modificado', |
|
| 383 | - 'info_non_suppression_mot_cle' => 'Eu não quero excluir esta palavra-chave.', |
|
| 384 | - 'info_notes' => 'Observações', |
|
| 385 | - 'info_nouvel_article' => 'Nova matéria', |
|
| 386 | - 'info_nouvelle_traduction' => 'Nova tradução:', |
|
| 387 | - 'info_numero_article' => 'MATÉRIA NÚMERO:', |
|
| 388 | - 'info_obligatoire_02' => '(obrigatório)', |
|
| 389 | - 'info_option_accepter_visiteurs' => 'Aceitar a inscrição de visitantes do site público', |
|
| 390 | - 'info_option_ne_pas_accepter_visiteurs' => 'Recusar a inscrição dos visitantes', |
|
| 391 | - 'info_options_avancees' => 'OPÇÕES AVANÇADAS', |
|
| 392 | - 'info_ou' => 'ou...', |
|
| 393 | - 'info_page_interdite' => 'Página não autorizada', |
|
| 394 | - 'info_par_nom' => 'por nome', |
|
| 395 | - 'info_par_nombre_article' => 'por número de matérias', |
|
| 396 | - 'info_par_statut' => 'por status', |
|
| 397 | - 'info_par_tri' => '’(por @tri@)’', |
|
| 398 | - 'info_passe_trop_court' => 'Senha muito curta.', |
|
| 399 | - 'info_passe_trop_court_car_pluriel' => 'A senha deve conter pelo menos @nb@ caracteres.', |
|
| 400 | - 'info_passes_identiques' => 'As duas senhas não são idênticas.', |
|
| 401 | - 'info_plus_cinq_car' => 'mais de 5 caracteres', |
|
| 402 | - 'info_plus_cinq_car_2' => '(Mais de 5 caracteres)', |
|
| 403 | - 'info_plus_trois_car' => '(Mais de 3 caracteres)', |
|
| 404 | - 'info_popularite' => 'popularidade: @popularite@; visitas: @visites@', |
|
| 405 | - 'info_post_scriptum' => 'Rodapé', |
|
| 406 | - 'info_post_scriptum_2' => 'Rodapé:', |
|
| 407 | - 'info_pour' => 'para', |
|
| 408 | - 'info_preview_texte' => 'É possível visualizar os diferentes elementos editoriais do site que tenham pelo menos o status de «proposto», bem como os elementos em fase de redação de que se é autor. Esta funcionalidade deve estar disponível para os administradores, para os redatores, ou para ninguém?', |
|
| 409 | - 'info_procedez_par_etape' => 'proceder passo-a-passo', |
|
| 410 | - 'info_procedure_maj_version' => 'o procedimento de atualização deve ser rodado para adaptar a base de dados à nova versão do SPIP.', |
|
| 411 | - 'info_proxy_ok' => 'Teste do proxy bem sucedido', |
|
| 412 | - 'info_ps' => 'P.S.', |
|
| 413 | - 'info_publier' => 'publicar', |
|
| 414 | - 'info_publies' => 'Suas matérias publicadas online', |
|
| 415 | - 'info_question_accepter_visiteurs' => 'Se os templates do seu site prevêem o cadastramento de visitantes sem acesso à área privada, por favor, ative a opção abaixo:', |
|
| 416 | - 'info_question_inscription_nouveaux_redacteurs' => 'Você quer aceitar inscrições de novos redatores a partir do site público? Se você aceitar, os visitantes poderão se cadastrar através de um formulário automatizado, tendo acesso à área privada para propôr as suas próprias matérias. <div class="notice">Durante a fase de inscrição, os usuários recebem um e-mail automático, fornecendo-lhes os seus códigos de acesso à área privada. Alguns serviços de hospedagem desativam o envio de e-mails a partir dos seus servidores: nesse caso, a inscrição automática é impossível.</div>', |
|
| 417 | - 'info_qui_edite' => '@nom_auteur_modif@ trabalhou neste conteúdo há @date_diff@ minutos', |
|
| 418 | - 'info_racine_site' => 'Raiz do site', |
|
| 419 | - 'info_recharger_page' => 'Por favor, atualize esta página em alguns instantes.', |
|
| 420 | - 'info_recherche_auteur_zero' => 'Nenhum resultado para «@cherche_auteur@».', |
|
| 421 | - 'info_recommencer' => 'Por favor, recomece.', |
|
| 422 | - 'info_redacteur_1' => 'Redator', |
|
| 423 | - 'info_redacteur_2' => 'com acesso à área privada (<i>recomendado</i>)', |
|
| 424 | - 'info_redacteurs' => 'Redatores', |
|
| 425 | - 'info_redaction_en_cours' => 'EM FASE DE REDAÇÃO', |
|
| 426 | - 'info_redirection' => 'Redirecionamento', |
|
| 427 | - 'info_redirection_activee' => 'O redirecionamento foi ativado.', |
|
| 428 | - 'info_redirection_boucle' => 'Você tentou redirecionar a matéria para ela mesma.', |
|
| 429 | - 'info_redirection_desactivee' => 'O redirecionamento foi excluído.', |
|
| 430 | - 'info_refuses' => 'Suas matérias recusadas', |
|
| 431 | - 'info_reglage_ldap' => 'Opções: <b>Configuração da importação LDAP</b>', |
|
| 432 | - 'info_renvoi_article' => '<b>Redirecionamento.</b> Esta matéria redireciona para a página:', |
|
| 433 | - 'info_reserve_admin' => 'Apenas os administradores podem alterar este endereço.', |
|
| 434 | - 'info_restreindre_rubrique' => 'Restringir o gerenciamento à seção:', |
|
| 435 | - 'info_resultat_recherche' => 'Resultados da busca:', |
|
| 436 | - 'info_rubriques' => 'Seções', |
|
| 437 | - 'info_rubriques_02' => 'seções', |
|
| 438 | - 'info_rubriques_trouvees' => 'Seções encontradas', |
|
| 439 | - 'info_sans_titre' => 'Sem título', |
|
| 440 | - 'info_selection_chemin_acces' => '<b>Selecione</b> a seguir o caminho para acessar o diretório:', |
|
| 441 | - 'info_signatures' => 'assinaturas', |
|
| 442 | - 'info_site' => 'Site', |
|
| 443 | - 'info_site_2' => 'site:', |
|
| 444 | - 'info_site_min' => 'site', |
|
| 445 | - 'info_site_reference_2' => 'Site referenciado', |
|
| 446 | - 'info_site_web' => 'Website:', |
|
| 447 | - 'info_sites' => 'sites', |
|
| 448 | - 'info_sites_lies_mot' => 'Os sites referenciados vinculados a esta palavra-chave', |
|
| 449 | - 'info_sites_proxy' => 'Utilizar um proxy', |
|
| 450 | - 'info_sites_trouves' => 'Sites encontrados', |
|
| 451 | - 'info_sous_titre' => 'Subtítulo:', |
|
| 452 | - 'info_statut_administrateur' => 'Administrador', |
|
| 453 | - 'info_statut_auteur' => 'Status deste autor:', |
|
| 454 | - 'info_statut_auteur_2' => 'Eu sou', |
|
| 455 | - 'info_statut_auteur_a_confirmer' => 'Inscrição a confirmar', |
|
| 456 | - 'info_statut_auteur_autre' => 'Outro status:', |
|
| 457 | - 'info_statut_redacteur' => 'Redator', |
|
| 458 | - 'info_statut_utilisateurs_1' => 'Status padrão dos usuários importados', |
|
| 459 | - 'info_statut_utilisateurs_2' => 'Escolha o status atribuído às pessoas que constam do diretório LDAP, quando elas se conectarem pela primeira vêz. Você poderá, em seguida, alterar caso a caso este valor para cada autor.', |
|
| 460 | - 'info_suivi_activite' => 'Acompanhamento da atividade editorial', |
|
| 461 | - 'info_surtitre' => 'Sobretítulo:', |
|
| 462 | - 'info_syndication_integrale_1' => 'O seu site propõe arquivos de sindicação (ver «<a href="@url@">@titre@</a>»).', |
|
| 463 | - 'info_syndication_integrale_2' => 'Você deseja transmitir as matérias integralmente, ou difundir apenas um resumo de algumas centenas de caracteres?', |
|
| 464 | - 'info_table_prefix' => 'Você pode alterar o prefixo do nome das tabelas de dados (indispensável no caso de pretender instalar diversos sites na mesma base de dados). Este prefixo deve estar em minúsculas, não acentuadas, e sem espaços.', |
|
| 465 | - 'info_taille_maximale_images' => 'SPIP irá testar o tamanho máximo das imagens que o sistema pode tratar (em milhões de pixels).<br />As imagens muito grandes não serão reduzidas.', |
|
| 466 | - 'info_taille_maximale_vignette' => 'Tamanho máximo dos ícones gerados pelo sistema:', |
|
| 467 | - 'info_terminer_installation' => 'Você pode agora terminar o procedimento de instalação padrão.', |
|
| 468 | - 'info_texte' => 'Texto', |
|
| 469 | - 'info_texte_explicatif' => 'Texto explicativo', |
|
| 470 | - 'info_texte_long' => '(o texto é longo: ele aparecerá em diversas partes que serão recombinadas após validação.)', |
|
| 471 | - 'info_texte_message' => 'Texto da sua mensagem', |
|
| 472 | - 'info_texte_message_02' => 'Texto da mensagem', |
|
| 473 | - 'info_titre' => 'Título:', |
|
| 474 | - 'info_total' => 'total:', |
|
| 475 | - 'info_tous_articles_en_redaction' => 'Todas as matérias em fase de redação', |
|
| 476 | - 'info_tous_articles_presents' => 'Todas as matérias publicadas nesta seção', |
|
| 477 | - 'info_tous_articles_refuses' => 'Todas as matérias recusadas', |
|
| 478 | - 'info_tous_les' => 'todos os:', |
|
| 479 | - 'info_tout_site' => 'Todo o site', |
|
| 480 | - 'info_tout_site2' => 'A matéria não foi traduzida para este idioma.', |
|
| 481 | - 'info_tout_site3' => 'A matéria foi traduzida para este idioma, mas foram feitas alterações na matéria de referência. A tradução procisa ser atualizada.', |
|
| 482 | - 'info_tout_site4' => 'A matéria foi traduzida para este idioma e a tradução está em dia.', |
|
| 483 | - 'info_tout_site5' => 'Matéria original.', |
|
| 484 | - 'info_tout_site6' => '<b>Atenção:</b> apenas as matérias originais estão exibidas. |
|
| 364 | + 'info_multi_objets' => '@objets@ : ativar o menu de idioma', |
|
| 365 | + 'info_multi_secteurs' => '... apenas para as seções situadas na raiz?', |
|
| 366 | + 'info_nb_articles' => '@nb@ matérias', |
|
| 367 | + 'info_nb_auteurs' => '@nb@ autores', |
|
| 368 | + 'info_nb_messages' => '@nb@ mensagens', |
|
| 369 | + 'info_nb_mots_cles' => '@nb@ palavras-chave', |
|
| 370 | + 'info_nb_rubriques' => '@nb@ seções', |
|
| 371 | + 'info_nb_visiteurs' => '@nb@ visitantes', |
|
| 372 | + 'info_nom' => 'Nome', |
|
| 373 | + 'info_nom_destinataire' => 'Nome do destinatário', |
|
| 374 | + 'info_nom_pas_conforme' => 'tags HTML não são permitidas', |
|
| 375 | + 'info_nom_site' => 'Nome do seu site', |
|
| 376 | + 'info_nombre_articles' => '@nb_articles@ matérias,', |
|
| 377 | + 'info_nombre_rubriques' => '@nb_rubriques@ seções,', |
|
| 378 | + 'info_nombre_sites' => '@nb_sites@ sites,', |
|
| 379 | + 'info_non_deplacer' => 'Não mover...', |
|
| 380 | + 'info_non_envoi_annonce_dernieres_nouveautes' => 'O SPIP pode enviar regularmente o anúncio das últimas novidades do site (matérias e notas publicadas recentemente).', |
|
| 381 | + 'info_non_envoi_liste_nouveautes' => 'Não enviar a lista de novidades', |
|
| 382 | + 'info_non_modifiable' => 'não pode ser modificado', |
|
| 383 | + 'info_non_suppression_mot_cle' => 'Eu não quero excluir esta palavra-chave.', |
|
| 384 | + 'info_notes' => 'Observações', |
|
| 385 | + 'info_nouvel_article' => 'Nova matéria', |
|
| 386 | + 'info_nouvelle_traduction' => 'Nova tradução:', |
|
| 387 | + 'info_numero_article' => 'MATÉRIA NÚMERO:', |
|
| 388 | + 'info_obligatoire_02' => '(obrigatório)', |
|
| 389 | + 'info_option_accepter_visiteurs' => 'Aceitar a inscrição de visitantes do site público', |
|
| 390 | + 'info_option_ne_pas_accepter_visiteurs' => 'Recusar a inscrição dos visitantes', |
|
| 391 | + 'info_options_avancees' => 'OPÇÕES AVANÇADAS', |
|
| 392 | + 'info_ou' => 'ou...', |
|
| 393 | + 'info_page_interdite' => 'Página não autorizada', |
|
| 394 | + 'info_par_nom' => 'por nome', |
|
| 395 | + 'info_par_nombre_article' => 'por número de matérias', |
|
| 396 | + 'info_par_statut' => 'por status', |
|
| 397 | + 'info_par_tri' => '’(por @tri@)’', |
|
| 398 | + 'info_passe_trop_court' => 'Senha muito curta.', |
|
| 399 | + 'info_passe_trop_court_car_pluriel' => 'A senha deve conter pelo menos @nb@ caracteres.', |
|
| 400 | + 'info_passes_identiques' => 'As duas senhas não são idênticas.', |
|
| 401 | + 'info_plus_cinq_car' => 'mais de 5 caracteres', |
|
| 402 | + 'info_plus_cinq_car_2' => '(Mais de 5 caracteres)', |
|
| 403 | + 'info_plus_trois_car' => '(Mais de 3 caracteres)', |
|
| 404 | + 'info_popularite' => 'popularidade: @popularite@; visitas: @visites@', |
|
| 405 | + 'info_post_scriptum' => 'Rodapé', |
|
| 406 | + 'info_post_scriptum_2' => 'Rodapé:', |
|
| 407 | + 'info_pour' => 'para', |
|
| 408 | + 'info_preview_texte' => 'É possível visualizar os diferentes elementos editoriais do site que tenham pelo menos o status de «proposto», bem como os elementos em fase de redação de que se é autor. Esta funcionalidade deve estar disponível para os administradores, para os redatores, ou para ninguém?', |
|
| 409 | + 'info_procedez_par_etape' => 'proceder passo-a-passo', |
|
| 410 | + 'info_procedure_maj_version' => 'o procedimento de atualização deve ser rodado para adaptar a base de dados à nova versão do SPIP.', |
|
| 411 | + 'info_proxy_ok' => 'Teste do proxy bem sucedido', |
|
| 412 | + 'info_ps' => 'P.S.', |
|
| 413 | + 'info_publier' => 'publicar', |
|
| 414 | + 'info_publies' => 'Suas matérias publicadas online', |
|
| 415 | + 'info_question_accepter_visiteurs' => 'Se os templates do seu site prevêem o cadastramento de visitantes sem acesso à área privada, por favor, ative a opção abaixo:', |
|
| 416 | + 'info_question_inscription_nouveaux_redacteurs' => 'Você quer aceitar inscrições de novos redatores a partir do site público? Se você aceitar, os visitantes poderão se cadastrar através de um formulário automatizado, tendo acesso à área privada para propôr as suas próprias matérias. <div class="notice">Durante a fase de inscrição, os usuários recebem um e-mail automático, fornecendo-lhes os seus códigos de acesso à área privada. Alguns serviços de hospedagem desativam o envio de e-mails a partir dos seus servidores: nesse caso, a inscrição automática é impossível.</div>', |
|
| 417 | + 'info_qui_edite' => '@nom_auteur_modif@ trabalhou neste conteúdo há @date_diff@ minutos', |
|
| 418 | + 'info_racine_site' => 'Raiz do site', |
|
| 419 | + 'info_recharger_page' => 'Por favor, atualize esta página em alguns instantes.', |
|
| 420 | + 'info_recherche_auteur_zero' => 'Nenhum resultado para «@cherche_auteur@».', |
|
| 421 | + 'info_recommencer' => 'Por favor, recomece.', |
|
| 422 | + 'info_redacteur_1' => 'Redator', |
|
| 423 | + 'info_redacteur_2' => 'com acesso à área privada (<i>recomendado</i>)', |
|
| 424 | + 'info_redacteurs' => 'Redatores', |
|
| 425 | + 'info_redaction_en_cours' => 'EM FASE DE REDAÇÃO', |
|
| 426 | + 'info_redirection' => 'Redirecionamento', |
|
| 427 | + 'info_redirection_activee' => 'O redirecionamento foi ativado.', |
|
| 428 | + 'info_redirection_boucle' => 'Você tentou redirecionar a matéria para ela mesma.', |
|
| 429 | + 'info_redirection_desactivee' => 'O redirecionamento foi excluído.', |
|
| 430 | + 'info_refuses' => 'Suas matérias recusadas', |
|
| 431 | + 'info_reglage_ldap' => 'Opções: <b>Configuração da importação LDAP</b>', |
|
| 432 | + 'info_renvoi_article' => '<b>Redirecionamento.</b> Esta matéria redireciona para a página:', |
|
| 433 | + 'info_reserve_admin' => 'Apenas os administradores podem alterar este endereço.', |
|
| 434 | + 'info_restreindre_rubrique' => 'Restringir o gerenciamento à seção:', |
|
| 435 | + 'info_resultat_recherche' => 'Resultados da busca:', |
|
| 436 | + 'info_rubriques' => 'Seções', |
|
| 437 | + 'info_rubriques_02' => 'seções', |
|
| 438 | + 'info_rubriques_trouvees' => 'Seções encontradas', |
|
| 439 | + 'info_sans_titre' => 'Sem título', |
|
| 440 | + 'info_selection_chemin_acces' => '<b>Selecione</b> a seguir o caminho para acessar o diretório:', |
|
| 441 | + 'info_signatures' => 'assinaturas', |
|
| 442 | + 'info_site' => 'Site', |
|
| 443 | + 'info_site_2' => 'site:', |
|
| 444 | + 'info_site_min' => 'site', |
|
| 445 | + 'info_site_reference_2' => 'Site referenciado', |
|
| 446 | + 'info_site_web' => 'Website:', |
|
| 447 | + 'info_sites' => 'sites', |
|
| 448 | + 'info_sites_lies_mot' => 'Os sites referenciados vinculados a esta palavra-chave', |
|
| 449 | + 'info_sites_proxy' => 'Utilizar um proxy', |
|
| 450 | + 'info_sites_trouves' => 'Sites encontrados', |
|
| 451 | + 'info_sous_titre' => 'Subtítulo:', |
|
| 452 | + 'info_statut_administrateur' => 'Administrador', |
|
| 453 | + 'info_statut_auteur' => 'Status deste autor:', |
|
| 454 | + 'info_statut_auteur_2' => 'Eu sou', |
|
| 455 | + 'info_statut_auteur_a_confirmer' => 'Inscrição a confirmar', |
|
| 456 | + 'info_statut_auteur_autre' => 'Outro status:', |
|
| 457 | + 'info_statut_redacteur' => 'Redator', |
|
| 458 | + 'info_statut_utilisateurs_1' => 'Status padrão dos usuários importados', |
|
| 459 | + 'info_statut_utilisateurs_2' => 'Escolha o status atribuído às pessoas que constam do diretório LDAP, quando elas se conectarem pela primeira vêz. Você poderá, em seguida, alterar caso a caso este valor para cada autor.', |
|
| 460 | + 'info_suivi_activite' => 'Acompanhamento da atividade editorial', |
|
| 461 | + 'info_surtitre' => 'Sobretítulo:', |
|
| 462 | + 'info_syndication_integrale_1' => 'O seu site propõe arquivos de sindicação (ver «<a href="@url@">@titre@</a>»).', |
|
| 463 | + 'info_syndication_integrale_2' => 'Você deseja transmitir as matérias integralmente, ou difundir apenas um resumo de algumas centenas de caracteres?', |
|
| 464 | + 'info_table_prefix' => 'Você pode alterar o prefixo do nome das tabelas de dados (indispensável no caso de pretender instalar diversos sites na mesma base de dados). Este prefixo deve estar em minúsculas, não acentuadas, e sem espaços.', |
|
| 465 | + 'info_taille_maximale_images' => 'SPIP irá testar o tamanho máximo das imagens que o sistema pode tratar (em milhões de pixels).<br />As imagens muito grandes não serão reduzidas.', |
|
| 466 | + 'info_taille_maximale_vignette' => 'Tamanho máximo dos ícones gerados pelo sistema:', |
|
| 467 | + 'info_terminer_installation' => 'Você pode agora terminar o procedimento de instalação padrão.', |
|
| 468 | + 'info_texte' => 'Texto', |
|
| 469 | + 'info_texte_explicatif' => 'Texto explicativo', |
|
| 470 | + 'info_texte_long' => '(o texto é longo: ele aparecerá em diversas partes que serão recombinadas após validação.)', |
|
| 471 | + 'info_texte_message' => 'Texto da sua mensagem', |
|
| 472 | + 'info_texte_message_02' => 'Texto da mensagem', |
|
| 473 | + 'info_titre' => 'Título:', |
|
| 474 | + 'info_total' => 'total:', |
|
| 475 | + 'info_tous_articles_en_redaction' => 'Todas as matérias em fase de redação', |
|
| 476 | + 'info_tous_articles_presents' => 'Todas as matérias publicadas nesta seção', |
|
| 477 | + 'info_tous_articles_refuses' => 'Todas as matérias recusadas', |
|
| 478 | + 'info_tous_les' => 'todos os:', |
|
| 479 | + 'info_tout_site' => 'Todo o site', |
|
| 480 | + 'info_tout_site2' => 'A matéria não foi traduzida para este idioma.', |
|
| 481 | + 'info_tout_site3' => 'A matéria foi traduzida para este idioma, mas foram feitas alterações na matéria de referência. A tradução procisa ser atualizada.', |
|
| 482 | + 'info_tout_site4' => 'A matéria foi traduzida para este idioma e a tradução está em dia.', |
|
| 483 | + 'info_tout_site5' => 'Matéria original.', |
|
| 484 | + 'info_tout_site6' => '<b>Atenção:</b> apenas as matérias originais estão exibidas. |
|
| 485 | 485 | As traduções estão associadas ao original, numa côr que indica o seu status:', |
| 486 | - 'info_traductions' => 'Traduções', |
|
| 487 | - 'info_travail_colaboratif' => 'Trabalho colaborativo nas matérias', |
|
| 488 | - 'info_un_article' => 'uma matéria,', |
|
| 489 | - 'info_un_site' => 'um site,', |
|
| 490 | - 'info_une_rubrique' => 'uma seção,', |
|
| 491 | - 'info_une_rubrique_02' => '1 seção', |
|
| 492 | - 'info_url' => 'URL:', |
|
| 493 | - 'info_url_proxy' => 'URL do proxy', |
|
| 494 | - 'info_url_proxy_pas_conforme' => 'O URL do proxy não é válido.', |
|
| 495 | - 'info_url_site_pas_conforme' => 'O URL do site não é válido.', |
|
| 496 | - 'info_url_test_proxy' => 'URL de teste', |
|
| 497 | - 'info_urlref' => 'Link hipertexto:', |
|
| 498 | - 'info_utilisation_spip' => 'Você pode agora começar a utilizar o sistema de publicação assistida...', |
|
| 499 | - 'info_visites_par_mois' => 'Exibir por mês:', |
|
| 500 | - 'info_visiteur_1' => 'Visitante', |
|
| 501 | - 'info_visiteur_2' => 'do site público', |
|
| 502 | - 'info_visiteurs' => 'Visitantes', |
|
| 503 | - 'info_visiteurs_02' => 'Visitantes do site público', |
|
| 504 | - 'info_webmestre_forces' => 'Os webmasters são definidos em <tt>@file_options@</tt>.', |
|
| 505 | - 'install_adresse_base_hebergeur' => 'Endereço da base de dados atribuído pelo serviço de hospedagem:', |
|
| 506 | - 'install_connect_ok' => 'A nova base de dados foi corretamente declarada sob o nome de servidor @connect@.', |
|
| 507 | - 'install_echec_annonce' => 'A instalação irá, provavelmente, falhar, ou levar a um site que não funciona...', |
|
| 508 | - 'install_extension_mbstring' => 'O SPIP não funciona com:', |
|
| 509 | - 'install_extension_php_obligatoire' => 'O SPIP exige a extensão php:', |
|
| 510 | - 'install_login_base_hebergeur' => 'Login de conexão atribuído pelo serviço de hospedagem:', |
|
| 511 | - 'install_nom_base_hebergeur' => 'Nome da base atribuído pelo serviço de hospedagem:', |
|
| 512 | - 'install_pas_table' => 'Base atualmente sem tabelas', |
|
| 513 | - 'install_pass_base_hebergeur' => 'Senha de conexão atribuída pelo serviço de hospedagem', |
|
| 514 | - 'install_php_extension' => 'As extensões a seguir estão faltando: @extensions@', |
|
| 515 | - 'install_php_version' => 'PHP versão @version@ é insuficiente (mínimo = @minimum@)', |
|
| 516 | - 'install_php_version_max' => 'A versão @version@ do PHP é muito recente (máximo = @maximum@)', |
|
| 517 | - 'install_select_langue' => 'Escolha um idioma e clique no botão «avançar» para iniciar o procedimento de instalação.', |
|
| 518 | - 'install_select_type_db' => 'Indicar o tipo de base de dados:', |
|
| 519 | - 'install_select_type_mysql' => 'MySQL', |
|
| 520 | - 'install_select_type_pg' => 'PostgreSQL', |
|
| 521 | - 'install_select_type_sqlite2' => 'SQLite 2', |
|
| 522 | - 'install_select_type_sqlite3' => 'SQLite 3', |
|
| 523 | - 'install_serveur_hebergeur' => 'Servidor de base de dados atribuído pelo serviço de hospedagem', |
|
| 524 | - 'install_table_prefix_hebergeur' => 'Prefixo de tabela atribuído pelo serviço de hospedagem:', |
|
| 525 | - 'install_tables_base' => 'Tabelas da base', |
|
| 526 | - 'install_types_db_connus' => 'SPIP pode usar <b>MySQL</b> (a mais comum), e <b>SQLite</b>.', |
|
| 527 | - 'install_types_db_connus_avertissement' => 'O suporte ao <b>PostgreSQL</b> é também proposto a título experimental', |
|
| 528 | - 'instituer_erreur_statut_a_change' => 'O status já foi alterado', |
|
| 529 | - 'instituer_erreur_statut_non_autorise' => 'Você não pode escolher este status', |
|
| 530 | - 'intem_redacteur' => 'redator', |
|
| 531 | - 'intitule_licence' => 'Licença', |
|
| 532 | - 'item_accepter_inscriptions' => 'Aceitar as inscrições', |
|
| 533 | - 'item_activer_messages_avertissement' => 'Ativar as mensagens de aviso', |
|
| 534 | - 'item_administrateur_2' => 'administrador', |
|
| 535 | - 'item_afficher_calendrier' => 'Exibir no calendário', |
|
| 536 | - 'item_autoriser_syndication_integrale' => 'Difundir a íntegra das matérias nos arquivos de sindicação', |
|
| 537 | - 'item_choix_administrateurs' => 'os administradores', |
|
| 538 | - 'item_choix_generation_miniature' => 'Gerar automaticamente as miniaturas das imagens.', |
|
| 539 | - 'item_choix_non_generation_miniature' => 'Não gerar as miniaturas das imagens.', |
|
| 540 | - 'item_choix_redacteurs' => 'os redatores', |
|
| 541 | - 'item_choix_visiteurs' => 'os visitantes do site público', |
|
| 542 | - 'item_creer_fichiers_authent' => 'Criar os arquivos .htpasswd', |
|
| 543 | - 'item_login' => 'Login', |
|
| 544 | - 'item_messagerie_agenda' => 'Ativar as mesagens internas e a agenda', |
|
| 545 | - 'item_mots_cles_association_articles' => 'às matérias', |
|
| 546 | - 'item_mots_cles_association_rubriques' => 'às seções', |
|
| 547 | - 'item_mots_cles_association_sites' => 'aos sites referenciados ou sindicados.', |
|
| 548 | - 'item_non' => 'Não', |
|
| 549 | - 'item_non_accepter_inscriptions' => 'Não aceitar inscrições', |
|
| 550 | - 'item_non_activer_messages_avertissement' => 'Sem mensagens de aviso', |
|
| 551 | - 'item_non_afficher_calendrier' => 'Não exibir no calendário', |
|
| 552 | - 'item_non_autoriser_syndication_integrale' => 'Difundir apenas um resumo', |
|
| 553 | - 'item_non_creer_fichiers_authent' => 'Não criar os arquivos', |
|
| 554 | - 'item_non_messagerie_agenda' => 'Desativar as mensagens internas e a agenda', |
|
| 555 | - 'item_non_publier_articles' => 'Não publicar as matérias antes da data de publicação fixada.', |
|
| 556 | - 'item_nouvel_auteur' => 'Novo autor', |
|
| 557 | - 'item_nouvelle_rubrique' => 'Nova seção', |
|
| 558 | - 'item_oui' => 'Sim', |
|
| 559 | - 'item_publier_articles' => 'Publicar as matérias seja qual for a sua data de publicação.', |
|
| 560 | - 'item_reponse_article' => 'Resposta à matéria', |
|
| 561 | - 'item_visiteur' => 'Visitante', |
|
| 486 | + 'info_traductions' => 'Traduções', |
|
| 487 | + 'info_travail_colaboratif' => 'Trabalho colaborativo nas matérias', |
|
| 488 | + 'info_un_article' => 'uma matéria,', |
|
| 489 | + 'info_un_site' => 'um site,', |
|
| 490 | + 'info_une_rubrique' => 'uma seção,', |
|
| 491 | + 'info_une_rubrique_02' => '1 seção', |
|
| 492 | + 'info_url' => 'URL:', |
|
| 493 | + 'info_url_proxy' => 'URL do proxy', |
|
| 494 | + 'info_url_proxy_pas_conforme' => 'O URL do proxy não é válido.', |
|
| 495 | + 'info_url_site_pas_conforme' => 'O URL do site não é válido.', |
|
| 496 | + 'info_url_test_proxy' => 'URL de teste', |
|
| 497 | + 'info_urlref' => 'Link hipertexto:', |
|
| 498 | + 'info_utilisation_spip' => 'Você pode agora começar a utilizar o sistema de publicação assistida...', |
|
| 499 | + 'info_visites_par_mois' => 'Exibir por mês:', |
|
| 500 | + 'info_visiteur_1' => 'Visitante', |
|
| 501 | + 'info_visiteur_2' => 'do site público', |
|
| 502 | + 'info_visiteurs' => 'Visitantes', |
|
| 503 | + 'info_visiteurs_02' => 'Visitantes do site público', |
|
| 504 | + 'info_webmestre_forces' => 'Os webmasters são definidos em <tt>@file_options@</tt>.', |
|
| 505 | + 'install_adresse_base_hebergeur' => 'Endereço da base de dados atribuído pelo serviço de hospedagem:', |
|
| 506 | + 'install_connect_ok' => 'A nova base de dados foi corretamente declarada sob o nome de servidor @connect@.', |
|
| 507 | + 'install_echec_annonce' => 'A instalação irá, provavelmente, falhar, ou levar a um site que não funciona...', |
|
| 508 | + 'install_extension_mbstring' => 'O SPIP não funciona com:', |
|
| 509 | + 'install_extension_php_obligatoire' => 'O SPIP exige a extensão php:', |
|
| 510 | + 'install_login_base_hebergeur' => 'Login de conexão atribuído pelo serviço de hospedagem:', |
|
| 511 | + 'install_nom_base_hebergeur' => 'Nome da base atribuído pelo serviço de hospedagem:', |
|
| 512 | + 'install_pas_table' => 'Base atualmente sem tabelas', |
|
| 513 | + 'install_pass_base_hebergeur' => 'Senha de conexão atribuída pelo serviço de hospedagem', |
|
| 514 | + 'install_php_extension' => 'As extensões a seguir estão faltando: @extensions@', |
|
| 515 | + 'install_php_version' => 'PHP versão @version@ é insuficiente (mínimo = @minimum@)', |
|
| 516 | + 'install_php_version_max' => 'A versão @version@ do PHP é muito recente (máximo = @maximum@)', |
|
| 517 | + 'install_select_langue' => 'Escolha um idioma e clique no botão «avançar» para iniciar o procedimento de instalação.', |
|
| 518 | + 'install_select_type_db' => 'Indicar o tipo de base de dados:', |
|
| 519 | + 'install_select_type_mysql' => 'MySQL', |
|
| 520 | + 'install_select_type_pg' => 'PostgreSQL', |
|
| 521 | + 'install_select_type_sqlite2' => 'SQLite 2', |
|
| 522 | + 'install_select_type_sqlite3' => 'SQLite 3', |
|
| 523 | + 'install_serveur_hebergeur' => 'Servidor de base de dados atribuído pelo serviço de hospedagem', |
|
| 524 | + 'install_table_prefix_hebergeur' => 'Prefixo de tabela atribuído pelo serviço de hospedagem:', |
|
| 525 | + 'install_tables_base' => 'Tabelas da base', |
|
| 526 | + 'install_types_db_connus' => 'SPIP pode usar <b>MySQL</b> (a mais comum), e <b>SQLite</b>.', |
|
| 527 | + 'install_types_db_connus_avertissement' => 'O suporte ao <b>PostgreSQL</b> é também proposto a título experimental', |
|
| 528 | + 'instituer_erreur_statut_a_change' => 'O status já foi alterado', |
|
| 529 | + 'instituer_erreur_statut_non_autorise' => 'Você não pode escolher este status', |
|
| 530 | + 'intem_redacteur' => 'redator', |
|
| 531 | + 'intitule_licence' => 'Licença', |
|
| 532 | + 'item_accepter_inscriptions' => 'Aceitar as inscrições', |
|
| 533 | + 'item_activer_messages_avertissement' => 'Ativar as mensagens de aviso', |
|
| 534 | + 'item_administrateur_2' => 'administrador', |
|
| 535 | + 'item_afficher_calendrier' => 'Exibir no calendário', |
|
| 536 | + 'item_autoriser_syndication_integrale' => 'Difundir a íntegra das matérias nos arquivos de sindicação', |
|
| 537 | + 'item_choix_administrateurs' => 'os administradores', |
|
| 538 | + 'item_choix_generation_miniature' => 'Gerar automaticamente as miniaturas das imagens.', |
|
| 539 | + 'item_choix_non_generation_miniature' => 'Não gerar as miniaturas das imagens.', |
|
| 540 | + 'item_choix_redacteurs' => 'os redatores', |
|
| 541 | + 'item_choix_visiteurs' => 'os visitantes do site público', |
|
| 542 | + 'item_creer_fichiers_authent' => 'Criar os arquivos .htpasswd', |
|
| 543 | + 'item_login' => 'Login', |
|
| 544 | + 'item_messagerie_agenda' => 'Ativar as mesagens internas e a agenda', |
|
| 545 | + 'item_mots_cles_association_articles' => 'às matérias', |
|
| 546 | + 'item_mots_cles_association_rubriques' => 'às seções', |
|
| 547 | + 'item_mots_cles_association_sites' => 'aos sites referenciados ou sindicados.', |
|
| 548 | + 'item_non' => 'Não', |
|
| 549 | + 'item_non_accepter_inscriptions' => 'Não aceitar inscrições', |
|
| 550 | + 'item_non_activer_messages_avertissement' => 'Sem mensagens de aviso', |
|
| 551 | + 'item_non_afficher_calendrier' => 'Não exibir no calendário', |
|
| 552 | + 'item_non_autoriser_syndication_integrale' => 'Difundir apenas um resumo', |
|
| 553 | + 'item_non_creer_fichiers_authent' => 'Não criar os arquivos', |
|
| 554 | + 'item_non_messagerie_agenda' => 'Desativar as mensagens internas e a agenda', |
|
| 555 | + 'item_non_publier_articles' => 'Não publicar as matérias antes da data de publicação fixada.', |
|
| 556 | + 'item_nouvel_auteur' => 'Novo autor', |
|
| 557 | + 'item_nouvelle_rubrique' => 'Nova seção', |
|
| 558 | + 'item_oui' => 'Sim', |
|
| 559 | + 'item_publier_articles' => 'Publicar as matérias seja qual for a sua data de publicação.', |
|
| 560 | + 'item_reponse_article' => 'Resposta à matéria', |
|
| 561 | + 'item_visiteur' => 'Visitante', |
|
| 562 | 562 | |
| 563 | - // J |
|
| 564 | - 'jour_non_connu_nc' => 'n.c.', |
|
| 563 | + // J |
|
| 564 | + 'jour_non_connu_nc' => 'n.c.', |
|
| 565 | 565 | |
| 566 | - // L |
|
| 567 | - 'label_bando_outils' => 'Barra de ferramentas', |
|
| 568 | - 'label_bando_outils_afficher' => 'Exibir as ferramentas', |
|
| 569 | - 'label_bando_outils_masquer' => 'Esconder as ferramentas', |
|
| 570 | - 'label_choix_langue' => 'Escolha o seu idioma', |
|
| 571 | - 'label_langue' => 'Idioma', |
|
| 572 | - 'label_nom_fichier_connect' => 'Informe o nome usado por este servidor', |
|
| 573 | - 'label_slogan_site' => 'Slogan do site', |
|
| 574 | - 'label_taille_ecran' => 'Largura da tela', |
|
| 575 | - 'label_texte_et_icones_navigation' => 'Menu de navegação', |
|
| 576 | - 'label_texte_et_icones_page' => 'Exibição na página', |
|
| 577 | - 'ldap_correspondance' => 'herança do campo @champ@', |
|
| 578 | - 'ldap_correspondance_1' => 'Herança dos campos LDAP', |
|
| 579 | - 'ldap_correspondance_2' => 'Para cada um dos campos SPIP a seguir, indique o nome do campo LDAP correspondente. Deixe em branco para não preencher, separe por espaços ou vírgulas para tentar vários campos LDAP.', |
|
| 580 | - 'lien_ajouter_auteur' => 'Incluir este autor', |
|
| 581 | - 'lien_ajouter_une_rubrique' => 'Incluir esta seção', |
|
| 582 | - 'lien_email' => 'e-mail', |
|
| 583 | - 'lien_nom_site' => 'NOME DO SITE:', |
|
| 584 | - 'lien_rapide_contenu' => 'Ir para o conteúdo', |
|
| 585 | - 'lien_rapide_navigation' => 'Ir para a navegação', |
|
| 586 | - 'lien_rapide_recherche' => 'Ir para a busca', |
|
| 587 | - 'lien_retirer_auteur' => 'Retirar o autor', |
|
| 588 | - 'lien_retirer_rubrique' => 'Excluir a seção', |
|
| 589 | - 'lien_retirer_tous_auteurs' => 'Retirar todos os autores', |
|
| 590 | - 'lien_retirer_toutes_rubriques' => 'Retirar todas as seções', |
|
| 591 | - 'lien_site' => 'site', |
|
| 592 | - 'lien_tout_decocher' => 'Desmarcar tudo', |
|
| 593 | - 'lien_tout_deplier' => 'Expandir tudo', |
|
| 594 | - 'lien_tout_replier' => 'Retrair tudo', |
|
| 595 | - 'lien_tout_supprimer' => 'Excluir tudo', |
|
| 596 | - 'lien_trier_nom' => 'Ordenar pelo nome', |
|
| 597 | - 'lien_trier_nombre_articles' => 'Ordenar por número de matérias', |
|
| 598 | - 'lien_trier_statut' => 'Ordenar pelo status', |
|
| 599 | - 'lien_voir_en_ligne' => 'VER ONLINE:', |
|
| 600 | - 'logo_article' => 'Ícone da matéria', |
|
| 601 | - 'logo_auteur' => 'Ícone do autor', |
|
| 602 | - 'logo_rubrique' => 'Ícone da seção', |
|
| 603 | - 'logo_site' => 'Ícone deste site', |
|
| 604 | - 'logo_standard_rubrique' => 'Ícone padrão das seções', |
|
| 605 | - 'logo_survol' => 'Ícone para mouseOver', |
|
| 566 | + // L |
|
| 567 | + 'label_bando_outils' => 'Barra de ferramentas', |
|
| 568 | + 'label_bando_outils_afficher' => 'Exibir as ferramentas', |
|
| 569 | + 'label_bando_outils_masquer' => 'Esconder as ferramentas', |
|
| 570 | + 'label_choix_langue' => 'Escolha o seu idioma', |
|
| 571 | + 'label_langue' => 'Idioma', |
|
| 572 | + 'label_nom_fichier_connect' => 'Informe o nome usado por este servidor', |
|
| 573 | + 'label_slogan_site' => 'Slogan do site', |
|
| 574 | + 'label_taille_ecran' => 'Largura da tela', |
|
| 575 | + 'label_texte_et_icones_navigation' => 'Menu de navegação', |
|
| 576 | + 'label_texte_et_icones_page' => 'Exibição na página', |
|
| 577 | + 'ldap_correspondance' => 'herança do campo @champ@', |
|
| 578 | + 'ldap_correspondance_1' => 'Herança dos campos LDAP', |
|
| 579 | + 'ldap_correspondance_2' => 'Para cada um dos campos SPIP a seguir, indique o nome do campo LDAP correspondente. Deixe em branco para não preencher, separe por espaços ou vírgulas para tentar vários campos LDAP.', |
|
| 580 | + 'lien_ajouter_auteur' => 'Incluir este autor', |
|
| 581 | + 'lien_ajouter_une_rubrique' => 'Incluir esta seção', |
|
| 582 | + 'lien_email' => 'e-mail', |
|
| 583 | + 'lien_nom_site' => 'NOME DO SITE:', |
|
| 584 | + 'lien_rapide_contenu' => 'Ir para o conteúdo', |
|
| 585 | + 'lien_rapide_navigation' => 'Ir para a navegação', |
|
| 586 | + 'lien_rapide_recherche' => 'Ir para a busca', |
|
| 587 | + 'lien_retirer_auteur' => 'Retirar o autor', |
|
| 588 | + 'lien_retirer_rubrique' => 'Excluir a seção', |
|
| 589 | + 'lien_retirer_tous_auteurs' => 'Retirar todos os autores', |
|
| 590 | + 'lien_retirer_toutes_rubriques' => 'Retirar todas as seções', |
|
| 591 | + 'lien_site' => 'site', |
|
| 592 | + 'lien_tout_decocher' => 'Desmarcar tudo', |
|
| 593 | + 'lien_tout_deplier' => 'Expandir tudo', |
|
| 594 | + 'lien_tout_replier' => 'Retrair tudo', |
|
| 595 | + 'lien_tout_supprimer' => 'Excluir tudo', |
|
| 596 | + 'lien_trier_nom' => 'Ordenar pelo nome', |
|
| 597 | + 'lien_trier_nombre_articles' => 'Ordenar por número de matérias', |
|
| 598 | + 'lien_trier_statut' => 'Ordenar pelo status', |
|
| 599 | + 'lien_voir_en_ligne' => 'VER ONLINE:', |
|
| 600 | + 'logo_article' => 'Ícone da matéria', |
|
| 601 | + 'logo_auteur' => 'Ícone do autor', |
|
| 602 | + 'logo_rubrique' => 'Ícone da seção', |
|
| 603 | + 'logo_site' => 'Ícone deste site', |
|
| 604 | + 'logo_standard_rubrique' => 'Ícone padrão das seções', |
|
| 605 | + 'logo_survol' => 'Ícone para mouseOver', |
|
| 606 | 606 | |
| 607 | - // M |
|
| 608 | - 'menu_aide_installation_choix_base' => 'Seleção da sua base', |
|
| 609 | - 'module_fichier_langue' => 'Arquivo de idioma', |
|
| 610 | - 'module_raccourci' => 'Atalho', |
|
| 611 | - 'module_texte_affiche' => 'Texto exibido', |
|
| 612 | - 'module_texte_explicatif' => 'Você pode inserir os atalhos a seguir nos templates do seu site público. Eles serão traduzidos automaticamente para os idiomas para os quais exista um arquivo de idioma.', |
|
| 613 | - 'module_texte_traduction' => 'O arquivo de idioma «@module@» está disponível em:', |
|
| 614 | - 'mois_non_connu' => 'desconhecido', |
|
| 607 | + // M |
|
| 608 | + 'menu_aide_installation_choix_base' => 'Seleção da sua base', |
|
| 609 | + 'module_fichier_langue' => 'Arquivo de idioma', |
|
| 610 | + 'module_raccourci' => 'Atalho', |
|
| 611 | + 'module_texte_affiche' => 'Texto exibido', |
|
| 612 | + 'module_texte_explicatif' => 'Você pode inserir os atalhos a seguir nos templates do seu site público. Eles serão traduzidos automaticamente para os idiomas para os quais exista um arquivo de idioma.', |
|
| 613 | + 'module_texte_traduction' => 'O arquivo de idioma «@module@» está disponível em:', |
|
| 614 | + 'mois_non_connu' => 'desconhecido', |
|
| 615 | 615 | |
| 616 | - // N |
|
| 617 | - 'nouvelle_version_spip' => 'A versão @version@ do SPIP está disponível', |
|
| 618 | - 'nouvelle_version_spip_majeure' => 'Uma nova versão SPIP @version@ está disponível', |
|
| 616 | + // N |
|
| 617 | + 'nouvelle_version_spip' => 'A versão @version@ do SPIP está disponível', |
|
| 618 | + 'nouvelle_version_spip_majeure' => 'Uma nova versão SPIP @version@ está disponível', |
|
| 619 | 619 | |
| 620 | - // O |
|
| 621 | - 'onglet_contenu' => 'Conteúdo', |
|
| 622 | - 'onglet_declarer_une_autre_base' => 'Configurar outra base', |
|
| 623 | - 'onglet_discuter' => 'Discutir', |
|
| 624 | - 'onglet_interactivite' => 'Interatividade', |
|
| 625 | - 'onglet_proprietes' => 'Propriedades', |
|
| 626 | - 'onglet_repartition_actuelle' => 'atualmente', |
|
| 627 | - 'onglet_sous_rubriques' => 'Subseções', |
|
| 620 | + // O |
|
| 621 | + 'onglet_contenu' => 'Conteúdo', |
|
| 622 | + 'onglet_declarer_une_autre_base' => 'Configurar outra base', |
|
| 623 | + 'onglet_discuter' => 'Discutir', |
|
| 624 | + 'onglet_interactivite' => 'Interatividade', |
|
| 625 | + 'onglet_proprietes' => 'Propriedades', |
|
| 626 | + 'onglet_repartition_actuelle' => 'atualmente', |
|
| 627 | + 'onglet_sous_rubriques' => 'Subseções', |
|
| 628 | 628 | |
| 629 | - // P |
|
| 630 | - 'page_pas_proxy' => 'Esta página não deve passar pelo proxy', |
|
| 631 | - 'pas_de_proxy_pour' => 'Se necessário, indique as máquinas ou domínios para os quais este proxy não se aplica (por exemplo: @exemple@)', |
|
| 632 | - 'phpinfo' => 'Configuração PHP', |
|
| 633 | - 'plugin_charge_paquet' => 'Carregamento do pacote @name@', |
|
| 634 | - 'plugin_charger' => 'Transferir', |
|
| 635 | - 'plugin_erreur_charger' => 'erro: não foi possível carregar @zip@', |
|
| 636 | - 'plugin_erreur_droit1' => 'O diretório <code>@dest@</code> não está acessível para escrita.', |
|
| 637 | - 'plugin_erreur_droit2' => 'Por favor, verifique os direitos deste diretório (e criá-lo, caso não exista), ou instalar os arquivos por FTP.', |
|
| 638 | - 'plugin_erreur_zip' => 'falha pclzip: erro @status@', |
|
| 639 | - 'plugin_etat_developpement' => 'em desenvolvimento', |
|
| 640 | - 'plugin_etat_experimental' => 'experimental', |
|
| 641 | - 'plugin_etat_stable' => 'estável', |
|
| 642 | - 'plugin_etat_test' => 'em teste', |
|
| 643 | - 'plugin_impossible_activer' => 'Não foi possível ativar o plugin @plugin@', |
|
| 644 | - 'plugin_info_automatique1' => 'Se você deseja autorizar a instalaçào automática dos plugins, por favor:', |
|
| 645 | - 'plugin_info_automatique1_lib' => 'Se você deseja autorizar a instalação automática desta biblioteca, por favor:', |
|
| 646 | - 'plugin_info_automatique2' => 'crie um diretório <code>@rep@</code> ;', |
|
| 647 | - 'plugin_info_automatique3' => 'verifique se o servidor está autorizado a escrever neste diretório', |
|
| 648 | - 'plugin_info_automatique_creer' => 'a ser criado na raiz do site.', |
|
| 649 | - 'plugin_info_automatique_exemples' => 'exemplos:', |
|
| 650 | - 'plugin_info_automatique_ftp' => 'Você pode instalar os plugins, por FTP, no diretório <tt>@rep@</tt>', |
|
| 651 | - 'plugin_info_automatique_lib' => 'Alguns plugins precisam também poder transferir arquivos para o diretório <code>lib/</code>, a ser criado, caso não exista, na raiz do site.', |
|
| 652 | - 'plugin_info_automatique_liste' => 'Suas listas de plugins:', |
|
| 653 | - 'plugin_info_automatique_liste_officielle' => 'os plugins oficiais', |
|
| 654 | - 'plugin_info_automatique_liste_update' => 'Atualizar as listas', |
|
| 655 | - 'plugin_info_automatique_ou' => 'ou...', |
|
| 656 | - 'plugin_info_automatique_select' => 'Selecione abaixo um plugin: O SPIP o transferirá e o instalará no diretório <code>@rep@</code>; se o plugin já existir, será atualizado.', |
|
| 657 | - 'plugin_info_credit' => 'Créditos', |
|
| 658 | - 'plugin_info_erreur_xml' => 'A declaração deste plugin está incorreta', |
|
| 659 | - 'plugin_info_install_ok' => 'Instalação bem sucedida', |
|
| 660 | - 'plugin_info_necessite' => 'Requer:', |
|
| 661 | - 'plugin_info_non_compatible_spip' => 'Este plugin não é compatível com esta versão do SPIP', |
|
| 662 | - 'plugin_info_plugins_dist_1' => 'Os plugins abaixo são carregados e ativados no diretório @plugins_dist@.', |
|
| 663 | - 'plugin_info_plugins_dist_2' => 'Eles não são desativáveis.', |
|
| 664 | - 'plugin_info_telecharger' => 'transferir de @url@ e instalar em @rep@', |
|
| 665 | - 'plugin_info_upgrade_ok' => 'Atualização bem sucedida', |
|
| 666 | - 'plugin_librairies_installees' => 'Bibliotecas instaladas', |
|
| 667 | - 'plugin_necessite_extension_php' => 'Requer a extensão PHP @plugin@ na versão @version@.', |
|
| 668 | - 'plugin_necessite_extension_php_sans_version' => 'Requer a extensão PHP @plugin@', |
|
| 669 | - 'plugin_necessite_lib' => 'Este plugin precisa da biblioteca @lib@', |
|
| 670 | - 'plugin_necessite_php' => 'Requer @plugin@ na versão @version@.', |
|
| 671 | - 'plugin_necessite_plugin' => 'Precisa do plugin @plugin@, na versão @version@.', |
|
| 672 | - 'plugin_necessite_plugin_sans_version' => 'Precisa do plugin @plugin@', |
|
| 673 | - 'plugin_necessite_spip' => 'É necessário o SPIP na versão @version@, pelo menos.', |
|
| 674 | - 'plugin_source' => 'fonte: ', |
|
| 675 | - 'plugin_titre_automatique' => 'Instalação automática', |
|
| 676 | - 'plugin_titre_automatique_ajouter' => 'Incluir plugins', |
|
| 677 | - 'plugin_titre_installation' => 'Instalação do plugin @plugin@', |
|
| 678 | - 'plugin_titre_modifier' => 'Meus plugins', |
|
| 679 | - 'plugin_utilise_extension_php' => 'A extensão PHP @plugin@ deve estar na versão @version@.', |
|
| 680 | - 'plugin_utilise_php' => '@plugin@ deve estar na versão @version@.', |
|
| 681 | - 'plugin_utilise_plugin' => 'O plugin @plugin@ deve estar na versão @version@.', |
|
| 682 | - 'plugin_zip_active' => 'Continue para o ativar', |
|
| 683 | - 'plugin_zip_adresse' => 'Indique abaixo o endereço de um arquivo zip de plugin a ser transferido, ou ainda o endereço de uma lista de plugins.', |
|
| 684 | - 'plugin_zip_adresse_champ' => 'Endereço do plugin ou da lista', |
|
| 685 | - 'plugin_zip_content' => 'Ele contém os arquivos a seguir (@taille@),<br />prontos para serem instalados no diretório <code>@rep@</code>', |
|
| 686 | - 'plugin_zip_installe_finie' => 'O arquivo @zip@ foi descompactado e instalado.', |
|
| 687 | - 'plugin_zip_installe_rep_finie' => 'O arquivo @zip@ foi descompactado e instalado no diretório @rep@', |
|
| 688 | - 'plugin_zip_installer' => 'Você pode, agora, instalá-lo.', |
|
| 689 | - 'plugin_zip_telecharge' => 'O arquivo @zip@ foi transferido', |
|
| 690 | - 'plugins_actif_aucun' => 'Nenhum plugin ativado.', |
|
| 691 | - 'plugins_actif_un' => 'Um plugin ativado.', |
|
| 692 | - 'plugins_actifs' => '@count@ plugins ativados.', |
|
| 693 | - 'plugins_actifs_liste' => 'Ativos', |
|
| 694 | - 'plugins_compte' => '@count@ plugins', |
|
| 695 | - 'plugins_disponible_un' => 'Um plugin disponível.', |
|
| 696 | - 'plugins_disponibles' => '@count@ plugins disponiveis.', |
|
| 697 | - 'plugins_erreur' => 'Erro nos plugins: @plugins@', |
|
| 698 | - 'plugins_liste' => 'Lista dos plugins', |
|
| 699 | - 'plugins_liste_dist' => 'Plugins bloqueados', |
|
| 700 | - 'plugins_recents' => 'Plugins recentes.', |
|
| 701 | - 'plugins_tous_liste' => 'Todos', |
|
| 702 | - 'plugins_vue_hierarchie' => 'Hierarquia', |
|
| 703 | - 'plugins_vue_liste' => 'Lista', |
|
| 704 | - 'protocole_ldap' => 'Versão do protocolo:', |
|
| 629 | + // P |
|
| 630 | + 'page_pas_proxy' => 'Esta página não deve passar pelo proxy', |
|
| 631 | + 'pas_de_proxy_pour' => 'Se necessário, indique as máquinas ou domínios para os quais este proxy não se aplica (por exemplo: @exemple@)', |
|
| 632 | + 'phpinfo' => 'Configuração PHP', |
|
| 633 | + 'plugin_charge_paquet' => 'Carregamento do pacote @name@', |
|
| 634 | + 'plugin_charger' => 'Transferir', |
|
| 635 | + 'plugin_erreur_charger' => 'erro: não foi possível carregar @zip@', |
|
| 636 | + 'plugin_erreur_droit1' => 'O diretório <code>@dest@</code> não está acessível para escrita.', |
|
| 637 | + 'plugin_erreur_droit2' => 'Por favor, verifique os direitos deste diretório (e criá-lo, caso não exista), ou instalar os arquivos por FTP.', |
|
| 638 | + 'plugin_erreur_zip' => 'falha pclzip: erro @status@', |
|
| 639 | + 'plugin_etat_developpement' => 'em desenvolvimento', |
|
| 640 | + 'plugin_etat_experimental' => 'experimental', |
|
| 641 | + 'plugin_etat_stable' => 'estável', |
|
| 642 | + 'plugin_etat_test' => 'em teste', |
|
| 643 | + 'plugin_impossible_activer' => 'Não foi possível ativar o plugin @plugin@', |
|
| 644 | + 'plugin_info_automatique1' => 'Se você deseja autorizar a instalaçào automática dos plugins, por favor:', |
|
| 645 | + 'plugin_info_automatique1_lib' => 'Se você deseja autorizar a instalação automática desta biblioteca, por favor:', |
|
| 646 | + 'plugin_info_automatique2' => 'crie um diretório <code>@rep@</code> ;', |
|
| 647 | + 'plugin_info_automatique3' => 'verifique se o servidor está autorizado a escrever neste diretório', |
|
| 648 | + 'plugin_info_automatique_creer' => 'a ser criado na raiz do site.', |
|
| 649 | + 'plugin_info_automatique_exemples' => 'exemplos:', |
|
| 650 | + 'plugin_info_automatique_ftp' => 'Você pode instalar os plugins, por FTP, no diretório <tt>@rep@</tt>', |
|
| 651 | + 'plugin_info_automatique_lib' => 'Alguns plugins precisam também poder transferir arquivos para o diretório <code>lib/</code>, a ser criado, caso não exista, na raiz do site.', |
|
| 652 | + 'plugin_info_automatique_liste' => 'Suas listas de plugins:', |
|
| 653 | + 'plugin_info_automatique_liste_officielle' => 'os plugins oficiais', |
|
| 654 | + 'plugin_info_automatique_liste_update' => 'Atualizar as listas', |
|
| 655 | + 'plugin_info_automatique_ou' => 'ou...', |
|
| 656 | + 'plugin_info_automatique_select' => 'Selecione abaixo um plugin: O SPIP o transferirá e o instalará no diretório <code>@rep@</code>; se o plugin já existir, será atualizado.', |
|
| 657 | + 'plugin_info_credit' => 'Créditos', |
|
| 658 | + 'plugin_info_erreur_xml' => 'A declaração deste plugin está incorreta', |
|
| 659 | + 'plugin_info_install_ok' => 'Instalação bem sucedida', |
|
| 660 | + 'plugin_info_necessite' => 'Requer:', |
|
| 661 | + 'plugin_info_non_compatible_spip' => 'Este plugin não é compatível com esta versão do SPIP', |
|
| 662 | + 'plugin_info_plugins_dist_1' => 'Os plugins abaixo são carregados e ativados no diretório @plugins_dist@.', |
|
| 663 | + 'plugin_info_plugins_dist_2' => 'Eles não são desativáveis.', |
|
| 664 | + 'plugin_info_telecharger' => 'transferir de @url@ e instalar em @rep@', |
|
| 665 | + 'plugin_info_upgrade_ok' => 'Atualização bem sucedida', |
|
| 666 | + 'plugin_librairies_installees' => 'Bibliotecas instaladas', |
|
| 667 | + 'plugin_necessite_extension_php' => 'Requer a extensão PHP @plugin@ na versão @version@.', |
|
| 668 | + 'plugin_necessite_extension_php_sans_version' => 'Requer a extensão PHP @plugin@', |
|
| 669 | + 'plugin_necessite_lib' => 'Este plugin precisa da biblioteca @lib@', |
|
| 670 | + 'plugin_necessite_php' => 'Requer @plugin@ na versão @version@.', |
|
| 671 | + 'plugin_necessite_plugin' => 'Precisa do plugin @plugin@, na versão @version@.', |
|
| 672 | + 'plugin_necessite_plugin_sans_version' => 'Precisa do plugin @plugin@', |
|
| 673 | + 'plugin_necessite_spip' => 'É necessário o SPIP na versão @version@, pelo menos.', |
|
| 674 | + 'plugin_source' => 'fonte: ', |
|
| 675 | + 'plugin_titre_automatique' => 'Instalação automática', |
|
| 676 | + 'plugin_titre_automatique_ajouter' => 'Incluir plugins', |
|
| 677 | + 'plugin_titre_installation' => 'Instalação do plugin @plugin@', |
|
| 678 | + 'plugin_titre_modifier' => 'Meus plugins', |
|
| 679 | + 'plugin_utilise_extension_php' => 'A extensão PHP @plugin@ deve estar na versão @version@.', |
|
| 680 | + 'plugin_utilise_php' => '@plugin@ deve estar na versão @version@.', |
|
| 681 | + 'plugin_utilise_plugin' => 'O plugin @plugin@ deve estar na versão @version@.', |
|
| 682 | + 'plugin_zip_active' => 'Continue para o ativar', |
|
| 683 | + 'plugin_zip_adresse' => 'Indique abaixo o endereço de um arquivo zip de plugin a ser transferido, ou ainda o endereço de uma lista de plugins.', |
|
| 684 | + 'plugin_zip_adresse_champ' => 'Endereço do plugin ou da lista', |
|
| 685 | + 'plugin_zip_content' => 'Ele contém os arquivos a seguir (@taille@),<br />prontos para serem instalados no diretório <code>@rep@</code>', |
|
| 686 | + 'plugin_zip_installe_finie' => 'O arquivo @zip@ foi descompactado e instalado.', |
|
| 687 | + 'plugin_zip_installe_rep_finie' => 'O arquivo @zip@ foi descompactado e instalado no diretório @rep@', |
|
| 688 | + 'plugin_zip_installer' => 'Você pode, agora, instalá-lo.', |
|
| 689 | + 'plugin_zip_telecharge' => 'O arquivo @zip@ foi transferido', |
|
| 690 | + 'plugins_actif_aucun' => 'Nenhum plugin ativado.', |
|
| 691 | + 'plugins_actif_un' => 'Um plugin ativado.', |
|
| 692 | + 'plugins_actifs' => '@count@ plugins ativados.', |
|
| 693 | + 'plugins_actifs_liste' => 'Ativos', |
|
| 694 | + 'plugins_compte' => '@count@ plugins', |
|
| 695 | + 'plugins_disponible_un' => 'Um plugin disponível.', |
|
| 696 | + 'plugins_disponibles' => '@count@ plugins disponiveis.', |
|
| 697 | + 'plugins_erreur' => 'Erro nos plugins: @plugins@', |
|
| 698 | + 'plugins_liste' => 'Lista dos plugins', |
|
| 699 | + 'plugins_liste_dist' => 'Plugins bloqueados', |
|
| 700 | + 'plugins_recents' => 'Plugins recentes.', |
|
| 701 | + 'plugins_tous_liste' => 'Todos', |
|
| 702 | + 'plugins_vue_hierarchie' => 'Hierarquia', |
|
| 703 | + 'plugins_vue_liste' => 'Lista', |
|
| 704 | + 'protocole_ldap' => 'Versão do protocolo:', |
|
| 705 | 705 | |
| 706 | - // Q |
|
| 707 | - 'queue_executer_maintenant' => 'Executar agora', |
|
| 708 | - 'queue_info_purger' => 'Você pode excluir todas as tarefas de fundo em espera e reinicializar a lista com as tarefas periódicas', |
|
| 709 | - 'queue_nb_jobs_in_queue' => '@nb@ tarefas em espera', |
|
| 710 | - 'queue_next_job_in_nb_sec' => 'Próxima tarefa em @nb@ s', |
|
| 711 | - 'queue_no_job_in_queue' => 'Nenhum tarefa em espera', |
|
| 712 | - 'queue_one_job_in_queue' => '1 tarefa em espera', |
|
| 713 | - 'queue_priorite_tache' => 'prioridade', |
|
| 714 | - 'queue_purger_queue' => 'Reiniciar a lista de tarefas', |
|
| 715 | - 'queue_titre' => 'Tarefas de fundo', |
|
| 706 | + // Q |
|
| 707 | + 'queue_executer_maintenant' => 'Executar agora', |
|
| 708 | + 'queue_info_purger' => 'Você pode excluir todas as tarefas de fundo em espera e reinicializar a lista com as tarefas periódicas', |
|
| 709 | + 'queue_nb_jobs_in_queue' => '@nb@ tarefas em espera', |
|
| 710 | + 'queue_next_job_in_nb_sec' => 'Próxima tarefa em @nb@ s', |
|
| 711 | + 'queue_no_job_in_queue' => 'Nenhum tarefa em espera', |
|
| 712 | + 'queue_one_job_in_queue' => '1 tarefa em espera', |
|
| 713 | + 'queue_priorite_tache' => 'prioridade', |
|
| 714 | + 'queue_purger_queue' => 'Reiniciar a lista de tarefas', |
|
| 715 | + 'queue_titre' => 'Tarefas de fundo', |
|
| 716 | 716 | |
| 717 | - // R |
|
| 718 | - 'repertoire_plugins' => 'Diretório:', |
|
| 719 | - 'required' => '(obrigatório)', |
|
| 717 | + // R |
|
| 718 | + 'repertoire_plugins' => 'Diretório:', |
|
| 719 | + 'required' => '(obrigatório)', |
|
| 720 | 720 | |
| 721 | - // S |
|
| 722 | - 'sans_heure' => 'sem hora', |
|
| 723 | - 'statut_admin_restreint' => '(admin limitado)', |
|
| 724 | - 'statut_webmestre' => 'webmaster', |
|
| 721 | + // S |
|
| 722 | + 'sans_heure' => 'sem hora', |
|
| 723 | + 'statut_admin_restreint' => '(admin limitado)', |
|
| 724 | + 'statut_webmestre' => 'webmaster', |
|
| 725 | 725 | |
| 726 | - // T |
|
| 727 | - 'tache_cron_asap' => 'Tarefa CRON @function@ (ASAP)', |
|
| 728 | - 'tache_cron_secondes' => 'Tarefa CRON @function@ (a cada @nb@ s)', |
|
| 729 | - 'taille_cache_image' => 'As imagens calculadas automaticamente pelo SPIP (ícones de documentos, títulos apresentados sob a forma gráfica, funções matemáticas em formato TeX...) ocupam, no diretório @dir@, um total de @taille@.', |
|
| 730 | - 'taille_cache_moins_de' => 'O tamanho do cache é menor do que @octets@.', |
|
| 731 | - 'taille_cache_octets' => 'O tamanho atual do cache é de cerca de @octets@.', |
|
| 732 | - 'taille_cache_vide' => 'O cache está vazio.', |
|
| 733 | - 'taille_repertoire_cache' => 'Tamanho do diretório cache', |
|
| 734 | - 'text_article_propose_publication' => 'Matéria proposta para publicação.', |
|
| 735 | - 'texte_acces_ldap_anonyme_1' => 'Alguns servidores LDAP não aceitam nenhum acesso anônimo. Neste caso, é necessário especificar um identificador de acesso inicial de modo a poder, em seguida, pesquisar as informações no diretório. Na maior parte dos casos, entretanto, os campos a seguir poderão ser deixados em branco.', |
|
| 736 | - 'texte_admin_effacer_01' => 'Este comando apaga <i>todo</i> o conteúdo da base de dados,incluindo <i>todos</i> os acessos dos redatores e administradores. Após executá-lo, você deverá reinstalar o SPIP para recriar uma nova base de dados bem como um acesso inicial de administrador.', |
|
| 737 | - 'texte_adresse_annuaire_1' => '(Se o seu diretório está instalado na mesma máquina que este website, trata-se provavelmente de «localhost».)', |
|
| 738 | - 'texte_ajout_auteur' => 'O autor a seguir foi incluído na matéria:', |
|
| 739 | - 'texte_annuaire_ldap_1' => 'Se você tem acesso a um diretório LDAP, você poderá utilizá-lo para importar automaticamente os usuários para o SPIP.', |
|
| 740 | - 'texte_article_statut' => 'Esta matéria está:', |
|
| 741 | - 'texte_article_virtuel' => 'Matéria virtual', |
|
| 742 | - 'texte_article_virtuel_reference' => '<b>Matéria virtual:</b> matéria referenciada no seu site SPIP, mas redirecionada para um outro URL. Para cancelar o redirecionamento, apague o URL abaixo.', |
|
| 743 | - 'texte_aucun_resultat_auteur' => 'Nenhum resultado para "@cherche_auteur@"', |
|
| 744 | - 'texte_auteur_messagerie' => 'Este site pode monitorar permanentemente a lista de editores conectados, permitindo-lhe trocar mensagens em tempo real. Você pode decidir não aparecer nessa lista (ficando "invisível" para os outros usuários).', |
|
| 745 | - 'texte_auteurs' => 'OS AUTORES', |
|
| 746 | - 'texte_choix_base_1' => 'Escolha a sua base:', |
|
| 747 | - 'texte_choix_base_2' => 'O servidor SQL contém várias bases de dados.', |
|
| 748 | - 'texte_choix_base_3' => '<b>Escolha</b> abaixo a que lhe foi atribuída pelo seu serviço de hospedagem:', |
|
| 749 | - 'texte_choix_table_prefix' => 'Prefixo das tabelas:', |
|
| 750 | - 'texte_compte_element' => '@count@ elemento', |
|
| 751 | - 'texte_compte_elements' => '@count@ elementos', |
|
| 752 | - 'texte_conflit_edition_correction' => 'Por favor, controle abaixo as diferenças entre as duas versões do texto; você pode também copiar as suas modificações e depois recomeçar.', |
|
| 753 | - 'texte_connexion_mysql' => 'Consulte as informações fornecidas pelo seu serviço de hospedagem: nelas, você deverá encontrar o servidor de base de dados fornecido e os seus dados de conexão ao servidor SQL.', |
|
| 754 | - 'texte_contenu_article' => '(Conteúdo da matéria em poucas palavras.)', |
|
| 755 | - 'texte_contenu_articles' => 'De acordo com o layout adotado pelo seu site, você poderá decidir se certos elementos das matérias serão utilizados. Use a listagem abaixo para indicar quais elementos estão disponíveis.', |
|
| 756 | - 'texte_crash_base' => 'Se a sua base de dados se corrompeu, você poderá tentar uma reparação automática.', |
|
| 757 | - 'texte_creer_rubrique' => 'Antes de poder escrever matérias, você precisa criar uma seção.', |
|
| 758 | - 'texte_date_creation_article' => 'DATA DE CRIAÇÃO DA MATÉRIA:', |
|
| 759 | - 'texte_date_creation_objet' => 'Data de criação:', # on ajoute le ":" |
|
| 760 | - 'texte_date_publication_anterieure' => 'Data de redação anterior:', |
|
| 761 | - 'texte_date_publication_anterieure_nonaffichee' => 'Não exibir a data de redação anterior.', |
|
| 762 | - 'texte_date_publication_article' => 'DATA DE PUBLICAÇÃO ONLINE:', |
|
| 763 | - 'texte_date_publication_objet' => 'Data de publicação online:', |
|
| 764 | - 'texte_definir_comme_traduction_rubrique' => 'Esta seção é uma tradução da seção número:', |
|
| 765 | - 'texte_descriptif_rapide' => 'Descrição rápida', |
|
| 766 | - 'texte_effacer_base' => 'Apagar a base de dados do SPIP', |
|
| 767 | - 'texte_effacer_statistiques' => 'Apagar as estatísticas', |
|
| 768 | - 'texte_en_cours_validation' => 'Os conteúdos abaixo estão propostos para publicação.', |
|
| 769 | - 'texte_enrichir_mise_a_jour' => 'Você pode enriquecer a diagramação do seu texto usando «atalhos tipográficos».', |
|
| 770 | - 'texte_fichier_authent' => '<b>O SPIP pode criar os arquivos especiais <tt>.htpasswd</tt> e <tt>.htpasswd-admin</tt> no diretório @dossier@?</b><p> |
|
| 726 | + // T |
|
| 727 | + 'tache_cron_asap' => 'Tarefa CRON @function@ (ASAP)', |
|
| 728 | + 'tache_cron_secondes' => 'Tarefa CRON @function@ (a cada @nb@ s)', |
|
| 729 | + 'taille_cache_image' => 'As imagens calculadas automaticamente pelo SPIP (ícones de documentos, títulos apresentados sob a forma gráfica, funções matemáticas em formato TeX...) ocupam, no diretório @dir@, um total de @taille@.', |
|
| 730 | + 'taille_cache_moins_de' => 'O tamanho do cache é menor do que @octets@.', |
|
| 731 | + 'taille_cache_octets' => 'O tamanho atual do cache é de cerca de @octets@.', |
|
| 732 | + 'taille_cache_vide' => 'O cache está vazio.', |
|
| 733 | + 'taille_repertoire_cache' => 'Tamanho do diretório cache', |
|
| 734 | + 'text_article_propose_publication' => 'Matéria proposta para publicação.', |
|
| 735 | + 'texte_acces_ldap_anonyme_1' => 'Alguns servidores LDAP não aceitam nenhum acesso anônimo. Neste caso, é necessário especificar um identificador de acesso inicial de modo a poder, em seguida, pesquisar as informações no diretório. Na maior parte dos casos, entretanto, os campos a seguir poderão ser deixados em branco.', |
|
| 736 | + 'texte_admin_effacer_01' => 'Este comando apaga <i>todo</i> o conteúdo da base de dados,incluindo <i>todos</i> os acessos dos redatores e administradores. Após executá-lo, você deverá reinstalar o SPIP para recriar uma nova base de dados bem como um acesso inicial de administrador.', |
|
| 737 | + 'texte_adresse_annuaire_1' => '(Se o seu diretório está instalado na mesma máquina que este website, trata-se provavelmente de «localhost».)', |
|
| 738 | + 'texte_ajout_auteur' => 'O autor a seguir foi incluído na matéria:', |
|
| 739 | + 'texte_annuaire_ldap_1' => 'Se você tem acesso a um diretório LDAP, você poderá utilizá-lo para importar automaticamente os usuários para o SPIP.', |
|
| 740 | + 'texte_article_statut' => 'Esta matéria está:', |
|
| 741 | + 'texte_article_virtuel' => 'Matéria virtual', |
|
| 742 | + 'texte_article_virtuel_reference' => '<b>Matéria virtual:</b> matéria referenciada no seu site SPIP, mas redirecionada para um outro URL. Para cancelar o redirecionamento, apague o URL abaixo.', |
|
| 743 | + 'texte_aucun_resultat_auteur' => 'Nenhum resultado para "@cherche_auteur@"', |
|
| 744 | + 'texte_auteur_messagerie' => 'Este site pode monitorar permanentemente a lista de editores conectados, permitindo-lhe trocar mensagens em tempo real. Você pode decidir não aparecer nessa lista (ficando "invisível" para os outros usuários).', |
|
| 745 | + 'texte_auteurs' => 'OS AUTORES', |
|
| 746 | + 'texte_choix_base_1' => 'Escolha a sua base:', |
|
| 747 | + 'texte_choix_base_2' => 'O servidor SQL contém várias bases de dados.', |
|
| 748 | + 'texte_choix_base_3' => '<b>Escolha</b> abaixo a que lhe foi atribuída pelo seu serviço de hospedagem:', |
|
| 749 | + 'texte_choix_table_prefix' => 'Prefixo das tabelas:', |
|
| 750 | + 'texte_compte_element' => '@count@ elemento', |
|
| 751 | + 'texte_compte_elements' => '@count@ elementos', |
|
| 752 | + 'texte_conflit_edition_correction' => 'Por favor, controle abaixo as diferenças entre as duas versões do texto; você pode também copiar as suas modificações e depois recomeçar.', |
|
| 753 | + 'texte_connexion_mysql' => 'Consulte as informações fornecidas pelo seu serviço de hospedagem: nelas, você deverá encontrar o servidor de base de dados fornecido e os seus dados de conexão ao servidor SQL.', |
|
| 754 | + 'texte_contenu_article' => '(Conteúdo da matéria em poucas palavras.)', |
|
| 755 | + 'texte_contenu_articles' => 'De acordo com o layout adotado pelo seu site, você poderá decidir se certos elementos das matérias serão utilizados. Use a listagem abaixo para indicar quais elementos estão disponíveis.', |
|
| 756 | + 'texte_crash_base' => 'Se a sua base de dados se corrompeu, você poderá tentar uma reparação automática.', |
|
| 757 | + 'texte_creer_rubrique' => 'Antes de poder escrever matérias, você precisa criar uma seção.', |
|
| 758 | + 'texte_date_creation_article' => 'DATA DE CRIAÇÃO DA MATÉRIA:', |
|
| 759 | + 'texte_date_creation_objet' => 'Data de criação:', # on ajoute le ":" |
|
| 760 | + 'texte_date_publication_anterieure' => 'Data de redação anterior:', |
|
| 761 | + 'texte_date_publication_anterieure_nonaffichee' => 'Não exibir a data de redação anterior.', |
|
| 762 | + 'texte_date_publication_article' => 'DATA DE PUBLICAÇÃO ONLINE:', |
|
| 763 | + 'texte_date_publication_objet' => 'Data de publicação online:', |
|
| 764 | + 'texte_definir_comme_traduction_rubrique' => 'Esta seção é uma tradução da seção número:', |
|
| 765 | + 'texte_descriptif_rapide' => 'Descrição rápida', |
|
| 766 | + 'texte_effacer_base' => 'Apagar a base de dados do SPIP', |
|
| 767 | + 'texte_effacer_statistiques' => 'Apagar as estatísticas', |
|
| 768 | + 'texte_en_cours_validation' => 'Os conteúdos abaixo estão propostos para publicação.', |
|
| 769 | + 'texte_enrichir_mise_a_jour' => 'Você pode enriquecer a diagramação do seu texto usando «atalhos tipográficos».', |
|
| 770 | + 'texte_fichier_authent' => '<b>O SPIP pode criar os arquivos especiais <tt>.htpasswd</tt> e <tt>.htpasswd-admin</tt> no diretório @dossier@?</b><p> |
|
| 771 | 771 | Estes arquivos podem servir para restringir o acesso aos autores e administradores em outras áreas do seu site (programas externos de estatísticas, por exemplo).</p><p> |
| 772 | 772 | Se eles não forem úteis, você poderá deixar esta opção com o seu valor padrão (sem criar os arquivos).</p>', |
| 773 | - 'texte_informations_personnelles_1' => 'O sistema vai criar agora um acesso personalizado ao site.', |
|
| 774 | - 'texte_informations_personnelles_2' => '(Nota: trata-se de uma reinstalação, se o seu acesso funciona corretamente, você pode', |
|
| 775 | - 'texte_introductif_article' => '(Texto introdutório da matéria.)', |
|
| 776 | - 'texte_jeu_caractere' => 'É aconselhável usar no seu site o alfabeto universal (<tt>utf-8</tt>): ele permite a exibição de textos em todos os idiomas, e não tem problemas de compatibilidade com os navegadores modernos.', |
|
| 777 | - 'texte_jeu_caractere_3' => 'O seu site está configurado atualmente com o conjunto de caracteres:', |
|
| 778 | - 'texte_jeu_caractere_4' => 'Se isso não corresponde à realidade dos seus dados (por ex., em seguimento a um restauro da base de dados), ou se <em>você lançou este site</em> e deseja utilizar um outro conjunto de caracteres, por favor, indique-o aqui:', |
|
| 779 | - 'texte_login_ldap_1' => '(Deixe em branco para acesso anônimo, ou informe o caminho completo, por exemplo «<tt>uid=dupont, ou=users, dc=mon-domaine, dc=com</tt>».)', |
|
| 780 | - 'texte_login_precaution' => 'Atenção! Este é o login com o qual você está conectado agora. Use este formulário com cautela...', |
|
| 781 | - 'texte_messagerie_agenda' => 'As mensagens internas permitem que os redatores se comuniquem entre si, diretamente da área privada do site. Elas estão associadas a uma agenda.', |
|
| 782 | - 'texte_mise_a_niveau_base_1' => 'Você acabou de atualizar os arquivos do SPIP. |
|
| 773 | + 'texte_informations_personnelles_1' => 'O sistema vai criar agora um acesso personalizado ao site.', |
|
| 774 | + 'texte_informations_personnelles_2' => '(Nota: trata-se de uma reinstalação, se o seu acesso funciona corretamente, você pode', |
|
| 775 | + 'texte_introductif_article' => '(Texto introdutório da matéria.)', |
|
| 776 | + 'texte_jeu_caractere' => 'É aconselhável usar no seu site o alfabeto universal (<tt>utf-8</tt>): ele permite a exibição de textos em todos os idiomas, e não tem problemas de compatibilidade com os navegadores modernos.', |
|
| 777 | + 'texte_jeu_caractere_3' => 'O seu site está configurado atualmente com o conjunto de caracteres:', |
|
| 778 | + 'texte_jeu_caractere_4' => 'Se isso não corresponde à realidade dos seus dados (por ex., em seguimento a um restauro da base de dados), ou se <em>você lançou este site</em> e deseja utilizar um outro conjunto de caracteres, por favor, indique-o aqui:', |
|
| 779 | + 'texte_login_ldap_1' => '(Deixe em branco para acesso anônimo, ou informe o caminho completo, por exemplo «<tt>uid=dupont, ou=users, dc=mon-domaine, dc=com</tt>».)', |
|
| 780 | + 'texte_login_precaution' => 'Atenção! Este é o login com o qual você está conectado agora. Use este formulário com cautela...', |
|
| 781 | + 'texte_messagerie_agenda' => 'As mensagens internas permitem que os redatores se comuniquem entre si, diretamente da área privada do site. Elas estão associadas a uma agenda.', |
|
| 782 | + 'texte_mise_a_niveau_base_1' => 'Você acabou de atualizar os arquivos do SPIP. |
|
| 783 | 783 | Agora é necessário atualizar a base de dados do site.', |
| 784 | - 'texte_modifier_article' => 'Editar a matéria:', |
|
| 785 | - 'texte_multilinguisme' => 'Se você deseja gerar objetos em diversos idiomas, com uma navegação complexa, você pode incluir um menu de seleção de idioma nesses objetos, de acordo com a estrutura do seu site.', |
|
| 786 | - 'texte_multilinguisme_trad' => 'Você pode, igualmente, ativar um sistema de gerenciamento de links entre as diferentes traduções em certos objetos.', |
|
| 787 | - 'texte_non_compresse' => '<i>não compactado</i> (seu servidor não suporta esta funcionalidade)', |
|
| 788 | - 'texte_nouvelle_version_spip_1' => 'Você instalou uma nova versão do SPIP.', |
|
| 789 | - 'texte_nouvelle_version_spip_2' => 'Esta nova versão precisa de uma atualização mais completa do que o normal. Se você é o webmaster do site, por favor, apague o arquivo @connect@ e retome a instalação de forma a incluir os seus parâmetros de conexão à base de dados.<p> (NB.: se você não se lembra dos seus parâmetros de conexão, consulte o arquivo @connect@ antes de apagá-lo...)</p>', |
|
| 790 | - 'texte_operation_echec' => 'Volte à página anterior, escolha uma outra base de dados ou crie uma nova. Verifique as informações fornecidas pelo seu serviço de hospedagem.', |
|
| 791 | - 'texte_plus_trois_car' => 'mais de 3 caracteres', |
|
| 792 | - 'texte_plusieurs_articles' => 'Demasiados autores encontrados para "@cherche_auteur@":', |
|
| 793 | - 'texte_port_annuaire' => '(O valor padrão indicado é geralmente conveniente.)', |
|
| 794 | - 'texte_presente_plugin' => 'Esta página lista os plugins disponíveis para o site. Você pode ativar os plugins necessários marcando a opção correspondente.', |
|
| 795 | - 'texte_proposer_publication' => 'Assim que a sua matéria estiver pronta, você pode propor a sua publicação.', |
|
| 796 | - 'texte_proxy' => 'Em alguns casos (intranet, redes protegidas...), os sites remotos (documentação do SPIP, sites sindicados etc.) só estarão acessíveis através de um <i>proxy HTTP</i>. Nesse caso, informe abaixo o endereço, no formato @[email protected], você pode deixar este campo vazio.', |
|
| 797 | - 'texte_publication_articles_post_dates' => 'Que comportamento o SPIP deve adotar face às matérias em que a data de publicação está pré-datada?', |
|
| 798 | - 'texte_rappel_selection_champs' => '[Não se esqueça de selecionar corretamente este campo.]', |
|
| 799 | - 'texte_recalcul_page' => 'Se você quiser recalcular uma única página, passe para a área pública e clique no botão «atualizar».', |
|
| 800 | - 'texte_recuperer_base' => 'Reparar a base de dados', |
|
| 801 | - 'texte_reference_mais_redirige' => 'matéria referenciada no seu site em SPIP, mas redirecionada para outro URL.', |
|
| 802 | - 'texte_requetes_echouent' => '<b>Já que certas solicitações SQL falharam sistematicamente e sem razão aparente, é possível que a causa esteja na base de dados em si.</b><p> |
|
| 784 | + 'texte_modifier_article' => 'Editar a matéria:', |
|
| 785 | + 'texte_multilinguisme' => 'Se você deseja gerar objetos em diversos idiomas, com uma navegação complexa, você pode incluir um menu de seleção de idioma nesses objetos, de acordo com a estrutura do seu site.', |
|
| 786 | + 'texte_multilinguisme_trad' => 'Você pode, igualmente, ativar um sistema de gerenciamento de links entre as diferentes traduções em certos objetos.', |
|
| 787 | + 'texte_non_compresse' => '<i>não compactado</i> (seu servidor não suporta esta funcionalidade)', |
|
| 788 | + 'texte_nouvelle_version_spip_1' => 'Você instalou uma nova versão do SPIP.', |
|
| 789 | + 'texte_nouvelle_version_spip_2' => 'Esta nova versão precisa de uma atualização mais completa do que o normal. Se você é o webmaster do site, por favor, apague o arquivo @connect@ e retome a instalação de forma a incluir os seus parâmetros de conexão à base de dados.<p> (NB.: se você não se lembra dos seus parâmetros de conexão, consulte o arquivo @connect@ antes de apagá-lo...)</p>', |
|
| 790 | + 'texte_operation_echec' => 'Volte à página anterior, escolha uma outra base de dados ou crie uma nova. Verifique as informações fornecidas pelo seu serviço de hospedagem.', |
|
| 791 | + 'texte_plus_trois_car' => 'mais de 3 caracteres', |
|
| 792 | + 'texte_plusieurs_articles' => 'Demasiados autores encontrados para "@cherche_auteur@":', |
|
| 793 | + 'texte_port_annuaire' => '(O valor padrão indicado é geralmente conveniente.)', |
|
| 794 | + 'texte_presente_plugin' => 'Esta página lista os plugins disponíveis para o site. Você pode ativar os plugins necessários marcando a opção correspondente.', |
|
| 795 | + 'texte_proposer_publication' => 'Assim que a sua matéria estiver pronta, você pode propor a sua publicação.', |
|
| 796 | + 'texte_proxy' => 'Em alguns casos (intranet, redes protegidas...), os sites remotos (documentação do SPIP, sites sindicados etc.) só estarão acessíveis através de um <i>proxy HTTP</i>. Nesse caso, informe abaixo o endereço, no formato @[email protected], você pode deixar este campo vazio.', |
|
| 797 | + 'texte_publication_articles_post_dates' => 'Que comportamento o SPIP deve adotar face às matérias em que a data de publicação está pré-datada?', |
|
| 798 | + 'texte_rappel_selection_champs' => '[Não se esqueça de selecionar corretamente este campo.]', |
|
| 799 | + 'texte_recalcul_page' => 'Se você quiser recalcular uma única página, passe para a área pública e clique no botão «atualizar».', |
|
| 800 | + 'texte_recuperer_base' => 'Reparar a base de dados', |
|
| 801 | + 'texte_reference_mais_redirige' => 'matéria referenciada no seu site em SPIP, mas redirecionada para outro URL.', |
|
| 802 | + 'texte_requetes_echouent' => '<b>Já que certas solicitações SQL falharam sistematicamente e sem razão aparente, é possível que a causa esteja na base de dados em si.</b><p> |
|
| 803 | 803 | O seu servidor SQL dispõe de uma funcionalidade de reparação das suas tabelas quando elas são danificadas por acidente. Você poderá tentar esta reparação; em caso de falha, conserve uma cópia da mensagem de erro, que poderá conter indícios do que não está funcionando...</p><p> |
| 804 | 804 | Se o problema persistir, contate o seu serviço de hospedagem.</p>', |
| 805 | - 'texte_selection_langue_principale' => 'Você pode escolher abaixo o «idioma principal» do site. esta escolha não o obriga - felizmente! - a escrever as suas matérias no idioma selecionado, mas permite determinar: |
|
| 805 | + 'texte_selection_langue_principale' => 'Você pode escolher abaixo o «idioma principal» do site. esta escolha não o obriga - felizmente! - a escrever as suas matérias no idioma selecionado, mas permite determinar: |
|
| 806 | 806 | <ul><li>o formato padrão das datas no site público;</li> |
| 807 | 807 | <li>a natureza do motor tipográfico que o SPIP deverá usar para a composição dos textos;</li> |
| 808 | 808 | <li>o idioma usado nos formulários do site público;</li> |
| 809 | 809 | <li>o idioma padrão exibido na área privada.</li></ul>', |
| 810 | - 'texte_sous_titre' => 'Subtítulo', |
|
| 811 | - 'texte_statistiques_visites' => '(barras escuras: domingo / curva escura: evolução da média)', |
|
| 812 | - 'texte_statut_attente_validation' => 'aguardando validação', |
|
| 813 | - 'texte_statut_publies' => 'publicadas online', |
|
| 814 | - 'texte_statut_refuses' => 'recusadas', |
|
| 815 | - 'texte_suppression_fichiers' => 'Use este comando para excluir todos os arquivos que constam do cache do SPIP. Isto permite, por exemplo, forçar a reconstrução de todas as páginas, caso você tenha feito alterações importantes no layout ou na estrutura do site.', |
|
| 816 | - 'texte_sur_titre' => 'Sobretítulo', |
|
| 817 | - 'texte_table_ok' => ': esta tabela está OK.', |
|
| 818 | - 'texte_tentative_recuperation' => 'Tentativa de reparação', |
|
| 819 | - 'texte_tenter_reparation' => 'Tentar uma reparação da base de dados', |
|
| 820 | - 'texte_test_proxy' => 'Para testar este proxy, informe aqui o endereço de um website que você deseje testar.', |
|
| 821 | - 'texte_titre_02' => 'Título:', |
|
| 822 | - 'texte_titre_obligatoire' => '<b>Título</b> [obrigatório]', |
|
| 823 | - 'texte_travail_article' => '@nom_auteur_modif@ trabalhou nesta matéria há @date_diff@ minutos', |
|
| 824 | - 'texte_travail_collaboratif' => 'Se é frequente acontecer de mais de um redator trabalhar em uma mesma matéria, o sistema pode exibir as matérias recentemente "abertas", de modo a evitar modificações concorrentes. Esta opção está desativada por padrão, para evitar a exibição de mensagens de aviso desnecessárias.', |
|
| 825 | - 'texte_vide' => 'vazia', |
|
| 826 | - 'texte_vider_cache' => 'Esvaziar o cache', |
|
| 827 | - 'titre_admin_tech' => 'Manutenção técnica', |
|
| 828 | - 'titre_admin_vider' => 'Manutenção técnica', |
|
| 829 | - 'titre_ajouter_un_auteur' => 'Incluir um autor', |
|
| 830 | - 'titre_ajouter_un_mot' => 'Incluir uma palavra-chave', |
|
| 831 | - 'titre_cadre_afficher_article' => 'Exibir as matérias', |
|
| 832 | - 'titre_cadre_afficher_traductions' => 'Exibir o status das traduções para os idiomas a seguir:', |
|
| 833 | - 'titre_cadre_ajouter_auteur' => 'INCLUIR UM AUTOR:', |
|
| 834 | - 'titre_cadre_interieur_rubrique' => 'Na seção', |
|
| 835 | - 'titre_cadre_numero_auteur' => 'AUTOR NÚMERO', |
|
| 836 | - 'titre_cadre_numero_objet' => '@objet@ NÚMERO:', |
|
| 837 | - 'titre_cadre_signature_obligatoire' => '<b>Assinatura</b> [obrigatório]<br />', |
|
| 838 | - 'titre_config_contenu_notifications' => 'Notificações', |
|
| 839 | - 'titre_config_contenu_prive' => 'Na área privada', |
|
| 840 | - 'titre_config_contenu_public' => 'No site público', |
|
| 841 | - 'titre_config_fonctions' => 'Configuração do site', |
|
| 842 | - 'titre_config_langage' => 'Configurar o idioma', |
|
| 843 | - 'titre_configuration' => 'Configuração do site', |
|
| 844 | - 'titre_configurer_preferences' => 'Configurar as suas preferências', |
|
| 845 | - 'titre_configurer_preferences_menus' => 'Configurar as suas preferências de menus', |
|
| 846 | - 'titre_conflit_edition' => 'Conflito durante a edição', |
|
| 847 | - 'titre_connexion_ldap' => 'Opções: <b>Sua conexão LDAP</b>', |
|
| 848 | - 'titre_groupe_mots' => 'GRUPO DE PALAVRAS-CHAVE:', |
|
| 849 | - 'titre_identite_site' => 'Identidade do site', |
|
| 850 | - 'titre_langue_article' => 'Idioma da matéria', |
|
| 851 | - 'titre_langue_rubrique' => 'Idioma da seção', |
|
| 852 | - 'titre_langue_trad_article' => 'IDIOMA E TRADUÇÕES DA MATÉRIA', |
|
| 853 | - 'titre_les_articles' => 'AS MATÉRIAS', |
|
| 854 | - 'titre_messagerie_agenda' => 'Mensagens internas e agenda', |
|
| 855 | - 'titre_naviguer_dans_le_site' => 'Navegar no site...', |
|
| 856 | - 'titre_nouvelle_rubrique' => 'Nova seção', |
|
| 857 | - 'titre_numero_rubrique' => 'SEÇÃO NÚMERO:', |
|
| 858 | - 'titre_page_articles_edit' => 'Editar: @titre@', |
|
| 859 | - 'titre_page_articles_page' => 'As matérias', |
|
| 860 | - 'titre_page_articles_tous' => 'Todo o site', |
|
| 861 | - 'titre_page_calendrier' => 'Calendário @nom_mois@ @annee@', |
|
| 862 | - 'titre_page_config_contenu' => 'Configuração do site', |
|
| 863 | - 'titre_page_delete_all' => 'supressão total e irreversível', |
|
| 864 | - 'titre_page_recherche' => 'Resultados da busca por @recherche@', |
|
| 865 | - 'titre_page_statistiques_referers' => 'Estatísticas (links de entrada)', |
|
| 866 | - 'titre_page_upgrade' => 'Atualização do SPIP', |
|
| 867 | - 'titre_preference_menus_favoris' => 'Menus favoritos', |
|
| 868 | - 'titre_publication_articles_post_dates' => 'Publicação de matérias pós-datadas', |
|
| 869 | - 'titre_reparation' => 'Reparação', |
|
| 870 | - 'titre_suivi_petition' => 'Acompanhamento das petições', |
|
| 871 | - 'tls_ldap' => 'Transport Layer Security:', |
|
| 872 | - 'trad_article_traduction' => 'Todas as versões desta matéria:', |
|
| 873 | - 'trad_delier' => 'Desvincular destas traduções', |
|
| 874 | - 'trad_lier' => 'Esta matéria é uma tradução da matéria número:', |
|
| 875 | - 'trad_new' => 'Escrever uma nova tradução', |
|
| 810 | + 'texte_sous_titre' => 'Subtítulo', |
|
| 811 | + 'texte_statistiques_visites' => '(barras escuras: domingo / curva escura: evolução da média)', |
|
| 812 | + 'texte_statut_attente_validation' => 'aguardando validação', |
|
| 813 | + 'texte_statut_publies' => 'publicadas online', |
|
| 814 | + 'texte_statut_refuses' => 'recusadas', |
|
| 815 | + 'texte_suppression_fichiers' => 'Use este comando para excluir todos os arquivos que constam do cache do SPIP. Isto permite, por exemplo, forçar a reconstrução de todas as páginas, caso você tenha feito alterações importantes no layout ou na estrutura do site.', |
|
| 816 | + 'texte_sur_titre' => 'Sobretítulo', |
|
| 817 | + 'texte_table_ok' => ': esta tabela está OK.', |
|
| 818 | + 'texte_tentative_recuperation' => 'Tentativa de reparação', |
|
| 819 | + 'texte_tenter_reparation' => 'Tentar uma reparação da base de dados', |
|
| 820 | + 'texte_test_proxy' => 'Para testar este proxy, informe aqui o endereço de um website que você deseje testar.', |
|
| 821 | + 'texte_titre_02' => 'Título:', |
|
| 822 | + 'texte_titre_obligatoire' => '<b>Título</b> [obrigatório]', |
|
| 823 | + 'texte_travail_article' => '@nom_auteur_modif@ trabalhou nesta matéria há @date_diff@ minutos', |
|
| 824 | + 'texte_travail_collaboratif' => 'Se é frequente acontecer de mais de um redator trabalhar em uma mesma matéria, o sistema pode exibir as matérias recentemente "abertas", de modo a evitar modificações concorrentes. Esta opção está desativada por padrão, para evitar a exibição de mensagens de aviso desnecessárias.', |
|
| 825 | + 'texte_vide' => 'vazia', |
|
| 826 | + 'texte_vider_cache' => 'Esvaziar o cache', |
|
| 827 | + 'titre_admin_tech' => 'Manutenção técnica', |
|
| 828 | + 'titre_admin_vider' => 'Manutenção técnica', |
|
| 829 | + 'titre_ajouter_un_auteur' => 'Incluir um autor', |
|
| 830 | + 'titre_ajouter_un_mot' => 'Incluir uma palavra-chave', |
|
| 831 | + 'titre_cadre_afficher_article' => 'Exibir as matérias', |
|
| 832 | + 'titre_cadre_afficher_traductions' => 'Exibir o status das traduções para os idiomas a seguir:', |
|
| 833 | + 'titre_cadre_ajouter_auteur' => 'INCLUIR UM AUTOR:', |
|
| 834 | + 'titre_cadre_interieur_rubrique' => 'Na seção', |
|
| 835 | + 'titre_cadre_numero_auteur' => 'AUTOR NÚMERO', |
|
| 836 | + 'titre_cadre_numero_objet' => '@objet@ NÚMERO:', |
|
| 837 | + 'titre_cadre_signature_obligatoire' => '<b>Assinatura</b> [obrigatório]<br />', |
|
| 838 | + 'titre_config_contenu_notifications' => 'Notificações', |
|
| 839 | + 'titre_config_contenu_prive' => 'Na área privada', |
|
| 840 | + 'titre_config_contenu_public' => 'No site público', |
|
| 841 | + 'titre_config_fonctions' => 'Configuração do site', |
|
| 842 | + 'titre_config_langage' => 'Configurar o idioma', |
|
| 843 | + 'titre_configuration' => 'Configuração do site', |
|
| 844 | + 'titre_configurer_preferences' => 'Configurar as suas preferências', |
|
| 845 | + 'titre_configurer_preferences_menus' => 'Configurar as suas preferências de menus', |
|
| 846 | + 'titre_conflit_edition' => 'Conflito durante a edição', |
|
| 847 | + 'titre_connexion_ldap' => 'Opções: <b>Sua conexão LDAP</b>', |
|
| 848 | + 'titre_groupe_mots' => 'GRUPO DE PALAVRAS-CHAVE:', |
|
| 849 | + 'titre_identite_site' => 'Identidade do site', |
|
| 850 | + 'titre_langue_article' => 'Idioma da matéria', |
|
| 851 | + 'titre_langue_rubrique' => 'Idioma da seção', |
|
| 852 | + 'titre_langue_trad_article' => 'IDIOMA E TRADUÇÕES DA MATÉRIA', |
|
| 853 | + 'titre_les_articles' => 'AS MATÉRIAS', |
|
| 854 | + 'titre_messagerie_agenda' => 'Mensagens internas e agenda', |
|
| 855 | + 'titre_naviguer_dans_le_site' => 'Navegar no site...', |
|
| 856 | + 'titre_nouvelle_rubrique' => 'Nova seção', |
|
| 857 | + 'titre_numero_rubrique' => 'SEÇÃO NÚMERO:', |
|
| 858 | + 'titre_page_articles_edit' => 'Editar: @titre@', |
|
| 859 | + 'titre_page_articles_page' => 'As matérias', |
|
| 860 | + 'titre_page_articles_tous' => 'Todo o site', |
|
| 861 | + 'titre_page_calendrier' => 'Calendário @nom_mois@ @annee@', |
|
| 862 | + 'titre_page_config_contenu' => 'Configuração do site', |
|
| 863 | + 'titre_page_delete_all' => 'supressão total e irreversível', |
|
| 864 | + 'titre_page_recherche' => 'Resultados da busca por @recherche@', |
|
| 865 | + 'titre_page_statistiques_referers' => 'Estatísticas (links de entrada)', |
|
| 866 | + 'titre_page_upgrade' => 'Atualização do SPIP', |
|
| 867 | + 'titre_preference_menus_favoris' => 'Menus favoritos', |
|
| 868 | + 'titre_publication_articles_post_dates' => 'Publicação de matérias pós-datadas', |
|
| 869 | + 'titre_reparation' => 'Reparação', |
|
| 870 | + 'titre_suivi_petition' => 'Acompanhamento das petições', |
|
| 871 | + 'tls_ldap' => 'Transport Layer Security:', |
|
| 872 | + 'trad_article_traduction' => 'Todas as versões desta matéria:', |
|
| 873 | + 'trad_delier' => 'Desvincular destas traduções', |
|
| 874 | + 'trad_lier' => 'Esta matéria é uma tradução da matéria número:', |
|
| 875 | + 'trad_new' => 'Escrever uma nova tradução', |
|
| 876 | 876 | |
| 877 | - // U |
|
| 878 | - 'utf8_convert_erreur_orig' => 'Erro: o conjunto de caracteres @charset@ não é suportado.', |
|
| 877 | + // U |
|
| 878 | + 'utf8_convert_erreur_orig' => 'Erro: o conjunto de caracteres @charset@ não é suportado.', |
|
| 879 | 879 | |
| 880 | - // V |
|
| 881 | - 'version' => 'Versão:' |
|
| 880 | + // V |
|
| 881 | + 'version' => 'Versão:' |
|
| 882 | 882 | ); |
@@ -4,584 +4,584 @@ 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' => 'Reen al kompleta grafika interfaco', |
|
| 14 | - 'access_mode_texte' => 'Afiŝi la simpligitan tekstan interfacon', |
|
| 15 | - 'admin_debug' => 'erarserĉilo', |
|
| 16 | - 'admin_modifier_article' => 'Modifu tiun ĉi artikolon', |
|
| 17 | - 'admin_modifier_auteur' => 'Modifu tiun ĉi aŭtoron', |
|
| 18 | - 'admin_modifier_breve' => 'Modifu tiun ĉi fulm-informon', |
|
| 19 | - 'admin_modifier_mot' => 'Modifu tiun ĉi ŝlosilvorton', |
|
| 20 | - 'admin_modifier_rubrique' => 'Modifu tiun ĉi rubrikon', |
|
| 21 | - 'admin_recalculer' => 'Rekalkulu tiun ĉi paĝon', |
|
| 22 | - 'afficher_calendrier' => 'Montri la kalendaro', |
|
| 23 | - 'afficher_trad' => 'afiŝi la tradukojn', |
|
| 24 | - 'alerte_maj_impossible' => '<b>Alarmo !</b> La ĝisdatigo de la SQL-datenbazo al versio @version@ ne eblas pro datenbazo-modif-rajtaj kialoj. Bonvolu kontakti vian retgastiganton.', |
|
| 25 | - 'alerte_modif_info_concourante' => 'ATENTU : Tiu ĉi informo estis modifita de alia homo. La nuna stato estas :', |
|
| 26 | - 'analyse_xml' => 'XML analizo', |
|
| 27 | - 'annuler' => 'Nuligi', |
|
| 28 | - 'antispam_champ_vide' => 'Bonvolu forlasi tiun tajpujon malplena :', |
|
| 29 | - 'articles_recents' => 'La plej freŝaj artikoloj', |
|
| 30 | - 'avis_1_erreur_saisie' => 'Estas 1 eraro en via tajpado, bonvolu kontroli ĝin.', |
|
| 31 | - 'avis_archive_incorrect' => 'Tiu arkivo ne estas SPIP-dosiero', |
|
| 32 | - 'avis_archive_invalide' => 'Tiu arkiva dosiero ne validas', |
|
| 33 | - 'avis_attention' => 'ATENTU !', |
|
| 34 | - 'avis_champ_incorrect_type_objet' => 'Erara tajpuja nomo @name@ por la objekto de tipo @type@', |
|
| 35 | - 'avis_colonne_inexistante' => 'La kolumno @col@ ne ekzistas', |
|
| 36 | - 'avis_erreur' => 'Eraro : vidu ĉi-sube', |
|
| 37 | - 'avis_erreur_connexion' => 'Konekt-eraro', |
|
| 38 | - 'avis_erreur_cookie' => 'kuketo-problemo', |
|
| 39 | - 'avis_erreur_fonction_contexte' => 'Program-eraro. Tiu funkcio ne alvokeblas en tiu ĉi kunteksto.', |
|
| 40 | - 'avis_erreur_mysql' => 'SQL-eraro', |
|
| 41 | - 'avis_erreur_sauvegarde' => 'Konservo-eraro (@type@ @id_objet@) ! ', |
|
| 42 | - 'avis_erreur_visiteur' => 'Alir-problemo al la privata spaco', |
|
| 43 | - 'avis_nb_erreurs_saisie' => 'Estas @nb@ eraroj en via tajpado, bonvolu kontroli ilin.', |
|
| 12 | + // A |
|
| 13 | + 'access_interface_graphique' => 'Reen al kompleta grafika interfaco', |
|
| 14 | + 'access_mode_texte' => 'Afiŝi la simpligitan tekstan interfacon', |
|
| 15 | + 'admin_debug' => 'erarserĉilo', |
|
| 16 | + 'admin_modifier_article' => 'Modifu tiun ĉi artikolon', |
|
| 17 | + 'admin_modifier_auteur' => 'Modifu tiun ĉi aŭtoron', |
|
| 18 | + 'admin_modifier_breve' => 'Modifu tiun ĉi fulm-informon', |
|
| 19 | + 'admin_modifier_mot' => 'Modifu tiun ĉi ŝlosilvorton', |
|
| 20 | + 'admin_modifier_rubrique' => 'Modifu tiun ĉi rubrikon', |
|
| 21 | + 'admin_recalculer' => 'Rekalkulu tiun ĉi paĝon', |
|
| 22 | + 'afficher_calendrier' => 'Montri la kalendaro', |
|
| 23 | + 'afficher_trad' => 'afiŝi la tradukojn', |
|
| 24 | + 'alerte_maj_impossible' => '<b>Alarmo !</b> La ĝisdatigo de la SQL-datenbazo al versio @version@ ne eblas pro datenbazo-modif-rajtaj kialoj. Bonvolu kontakti vian retgastiganton.', |
|
| 25 | + 'alerte_modif_info_concourante' => 'ATENTU : Tiu ĉi informo estis modifita de alia homo. La nuna stato estas :', |
|
| 26 | + 'analyse_xml' => 'XML analizo', |
|
| 27 | + 'annuler' => 'Nuligi', |
|
| 28 | + 'antispam_champ_vide' => 'Bonvolu forlasi tiun tajpujon malplena :', |
|
| 29 | + 'articles_recents' => 'La plej freŝaj artikoloj', |
|
| 30 | + 'avis_1_erreur_saisie' => 'Estas 1 eraro en via tajpado, bonvolu kontroli ĝin.', |
|
| 31 | + 'avis_archive_incorrect' => 'Tiu arkivo ne estas SPIP-dosiero', |
|
| 32 | + 'avis_archive_invalide' => 'Tiu arkiva dosiero ne validas', |
|
| 33 | + 'avis_attention' => 'ATENTU !', |
|
| 34 | + 'avis_champ_incorrect_type_objet' => 'Erara tajpuja nomo @name@ por la objekto de tipo @type@', |
|
| 35 | + 'avis_colonne_inexistante' => 'La kolumno @col@ ne ekzistas', |
|
| 36 | + 'avis_erreur' => 'Eraro : vidu ĉi-sube', |
|
| 37 | + 'avis_erreur_connexion' => 'Konekt-eraro', |
|
| 38 | + 'avis_erreur_cookie' => 'kuketo-problemo', |
|
| 39 | + 'avis_erreur_fonction_contexte' => 'Program-eraro. Tiu funkcio ne alvokeblas en tiu ĉi kunteksto.', |
|
| 40 | + 'avis_erreur_mysql' => 'SQL-eraro', |
|
| 41 | + 'avis_erreur_sauvegarde' => 'Konservo-eraro (@type@ @id_objet@) ! ', |
|
| 42 | + 'avis_erreur_visiteur' => 'Alir-problemo al la privata spaco', |
|
| 43 | + 'avis_nb_erreurs_saisie' => 'Estas @nb@ eraroj en via tajpado, bonvolu kontroli ilin.', |
|
| 44 | 44 | |
| 45 | - // B |
|
| 46 | - 'barre_a_accent_grave' => 'Entajpi malakut-akcentan ĉefliteran A', |
|
| 47 | - 'barre_aide' => 'Uzu la tipografiajn rapidligilojn por pliriĉigi vian enpaĝigon', |
|
| 48 | - 'barre_e_accent_aigu' => 'Entajpi malakut-akcentan ĉefliteran E', |
|
| 49 | - 'barre_eo' => 'Entajpi E en ĉefliteran O', |
|
| 50 | - 'barre_eo_maj' => 'Entajpi E en la ĉeflitero O', |
|
| 51 | - 'barre_euro' => 'Entajpi la simbolon €', |
|
| 52 | - 'barre_gras' => '{{Grasigi}}', |
|
| 53 | - 'barre_guillemets' => 'Flanki per « citiloj »', |
|
| 54 | - 'barre_guillemets_simples' => 'Flanki per simplaj citiloj', |
|
| 55 | - 'barre_intertitre' => '{{{Intertitoligi}}}', |
|
| 56 | - 'barre_italic' => '{Kursivigi}', |
|
| 57 | - 'barre_lien' => 'Transformi al [hiperligo->http://...]', |
|
| 58 | - 'barre_lien_input' => 'Bonvolu indiki la retadreson de via ligilo (vi povas indiki ret-adreson tian, kia http://www.monsite.com aŭ simple indiki la numeron de artikolo de tiu retejo.', |
|
| 59 | - 'barre_note' => 'Transformi al [[sub-paĝan noton]]', |
|
| 60 | - 'barre_paragraphe' => 'Krei paragrafon', |
|
| 61 | - 'barre_quote' => '<quote>Citi mesaĝon</quote>', |
|
| 62 | - 'bouton_changer' => 'Ŝanĝi', |
|
| 63 | - 'bouton_chercher' => 'Serĉi', |
|
| 64 | - 'bouton_choisir' => 'Elekti', |
|
| 65 | - 'bouton_deplacer' => 'Movi', |
|
| 66 | - 'bouton_download' => 'Elŝuti', |
|
| 67 | - 'bouton_enregistrer' => 'Registri', |
|
| 68 | - 'bouton_radio_desactiver_messagerie_interne' => 'Malŝalti la internan mesaĝilon', |
|
| 69 | - 'bouton_radio_envoi_annonces' => 'Sendi la ĉefartikolajn anoncojn', |
|
| 70 | - 'bouton_radio_non_envoi_annonces' => 'Ne sendi anoncojn', |
|
| 71 | - 'bouton_radio_non_envoi_liste_nouveautes' => 'Ne sendi liston de novaĵoj', |
|
| 72 | - 'bouton_recharger_page' => 'freŝigi tiun paĝon', |
|
| 73 | - 'bouton_telecharger' => 'Alŝuti', |
|
| 74 | - 'bouton_upload' => 'Alŝuti', |
|
| 75 | - 'bouton_valider' => 'Validigi', |
|
| 45 | + // B |
|
| 46 | + 'barre_a_accent_grave' => 'Entajpi malakut-akcentan ĉefliteran A', |
|
| 47 | + 'barre_aide' => 'Uzu la tipografiajn rapidligilojn por pliriĉigi vian enpaĝigon', |
|
| 48 | + 'barre_e_accent_aigu' => 'Entajpi malakut-akcentan ĉefliteran E', |
|
| 49 | + 'barre_eo' => 'Entajpi E en ĉefliteran O', |
|
| 50 | + 'barre_eo_maj' => 'Entajpi E en la ĉeflitero O', |
|
| 51 | + 'barre_euro' => 'Entajpi la simbolon €', |
|
| 52 | + 'barre_gras' => '{{Grasigi}}', |
|
| 53 | + 'barre_guillemets' => 'Flanki per « citiloj »', |
|
| 54 | + 'barre_guillemets_simples' => 'Flanki per simplaj citiloj', |
|
| 55 | + 'barre_intertitre' => '{{{Intertitoligi}}}', |
|
| 56 | + 'barre_italic' => '{Kursivigi}', |
|
| 57 | + 'barre_lien' => 'Transformi al [hiperligo->http://...]', |
|
| 58 | + 'barre_lien_input' => 'Bonvolu indiki la retadreson de via ligilo (vi povas indiki ret-adreson tian, kia http://www.monsite.com aŭ simple indiki la numeron de artikolo de tiu retejo.', |
|
| 59 | + 'barre_note' => 'Transformi al [[sub-paĝan noton]]', |
|
| 60 | + 'barre_paragraphe' => 'Krei paragrafon', |
|
| 61 | + 'barre_quote' => '<quote>Citi mesaĝon</quote>', |
|
| 62 | + 'bouton_changer' => 'Ŝanĝi', |
|
| 63 | + 'bouton_chercher' => 'Serĉi', |
|
| 64 | + 'bouton_choisir' => 'Elekti', |
|
| 65 | + 'bouton_deplacer' => 'Movi', |
|
| 66 | + 'bouton_download' => 'Elŝuti', |
|
| 67 | + 'bouton_enregistrer' => 'Registri', |
|
| 68 | + 'bouton_radio_desactiver_messagerie_interne' => 'Malŝalti la internan mesaĝilon', |
|
| 69 | + 'bouton_radio_envoi_annonces' => 'Sendi la ĉefartikolajn anoncojn', |
|
| 70 | + 'bouton_radio_non_envoi_annonces' => 'Ne sendi anoncojn', |
|
| 71 | + 'bouton_radio_non_envoi_liste_nouveautes' => 'Ne sendi liston de novaĵoj', |
|
| 72 | + 'bouton_recharger_page' => 'freŝigi tiun paĝon', |
|
| 73 | + 'bouton_telecharger' => 'Alŝuti', |
|
| 74 | + 'bouton_upload' => 'Alŝuti', |
|
| 75 | + 'bouton_valider' => 'Validigi', |
|
| 76 | 76 | |
| 77 | - // C |
|
| 78 | - 'cal_apresmidi' => 'posttagmezo', |
|
| 79 | - 'cal_jour_entier' => 'tuta tago', |
|
| 80 | - 'cal_matin' => 'mateno', |
|
| 81 | - 'cal_par_jour' => 'tag-kalendaro', |
|
| 82 | - 'cal_par_mois' => 'monat-kalendaro', |
|
| 83 | - 'cal_par_semaine' => 'semajn-kalendaro', |
|
| 84 | - 'choix_couleur_interface' => 'koloro', |
|
| 85 | - 'choix_interface' => 'elekto de interfaco', |
|
| 86 | - 'colonne' => 'Kolumno', |
|
| 87 | - 'confirm_changer_statut' => 'Atentu, vi petis por ŝanĝi la statuton de tiu elemento. Ĉu vi deziras daŭrigi ?', |
|
| 88 | - 'correcte' => 'korekta', |
|
| 77 | + // C |
|
| 78 | + 'cal_apresmidi' => 'posttagmezo', |
|
| 79 | + 'cal_jour_entier' => 'tuta tago', |
|
| 80 | + 'cal_matin' => 'mateno', |
|
| 81 | + 'cal_par_jour' => 'tag-kalendaro', |
|
| 82 | + 'cal_par_mois' => 'monat-kalendaro', |
|
| 83 | + 'cal_par_semaine' => 'semajn-kalendaro', |
|
| 84 | + 'choix_couleur_interface' => 'koloro', |
|
| 85 | + 'choix_interface' => 'elekto de interfaco', |
|
| 86 | + 'colonne' => 'Kolumno', |
|
| 87 | + 'confirm_changer_statut' => 'Atentu, vi petis por ŝanĝi la statuton de tiu elemento. Ĉu vi deziras daŭrigi ?', |
|
| 88 | + 'correcte' => 'korekta', |
|
| 89 | 89 | |
| 90 | - // D |
|
| 91 | - 'date_aujourdhui' => 'hodiaŭ', |
|
| 92 | - 'date_avant_jc' => 'a.K.', |
|
| 93 | - 'date_dans' => 'post @delai@', |
|
| 94 | - 'date_de_mois_1' => '@j@ @nommois@', |
|
| 95 | - 'date_de_mois_10' => '@j@ @nommois@', |
|
| 96 | - 'date_de_mois_11' => '@j@ @nommois@', |
|
| 97 | - 'date_de_mois_12' => '@j@ @nommois@', |
|
| 98 | - 'date_de_mois_2' => '@j@ @nommois@', |
|
| 99 | - 'date_de_mois_3' => '@j@ @nommois@', |
|
| 100 | - 'date_de_mois_4' => '@j@ @nommois@', |
|
| 101 | - 'date_de_mois_5' => '@j@ @nommois@', |
|
| 102 | - 'date_de_mois_6' => '@j@ @nommois@', |
|
| 103 | - 'date_de_mois_7' => '@j@ @nommois@', |
|
| 104 | - 'date_de_mois_8' => '@j@ @nommois@', |
|
| 105 | - 'date_de_mois_9' => '@j@ @nommois@', |
|
| 106 | - 'date_demain' => 'morgaŭ', |
|
| 107 | - 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 108 | - 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 109 | - 'date_fmt_jour' => '@nomjour@ la @jour@a', |
|
| 110 | - 'date_fmt_jour_heure' => '@jour@ je la @heure@', |
|
| 111 | - 'date_fmt_jour_heure_debut_fin' => 'la @jour@ de @heure_debut@ ĝis @heure_fin@', |
|
| 112 | - 'date_fmt_jour_heure_debut_fin_abbr' => 'la @dtstart@@jour@a de @heure_debut@@dtabbr@ ĝis @dtend@@heure_fin@@dtend@', |
|
| 113 | - 'date_fmt_jour_mois' => '@jour@a @nommois@', |
|
| 114 | - 'date_fmt_jour_mois_annee' => '@jour@a @nommois@ @annee@', |
|
| 115 | - 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 116 | - 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 117 | - 'date_fmt_nomjour_date' => 'la @nomjour@ @date@', |
|
| 118 | - 'date_fmt_periode' => 'De @date_debut@ ĝis @date_fin@', |
|
| 119 | - 'date_fmt_periode_abbr' => 'De @dtart@@date_debut@@dtabbr@ ĝis @dtend@@date_fin@@dtabbr@', |
|
| 120 | - 'date_fmt_periode_from' => 'De', |
|
| 121 | - 'date_fmt_periode_to' => 'ĝis', |
|
| 122 | - 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 123 | - 'date_heures' => 'horoj', |
|
| 124 | - 'date_hier' => 'hieraŭ', |
|
| 125 | - 'date_il_y_a' => 'antaŭ @delai@', |
|
| 126 | - 'date_jnum1' => '1', |
|
| 127 | - 'date_jnum10' => '10', |
|
| 128 | - 'date_jnum11' => '11', |
|
| 129 | - 'date_jnum12' => '12', |
|
| 130 | - 'date_jnum13' => '13', |
|
| 131 | - 'date_jnum14' => '14', |
|
| 132 | - 'date_jnum15' => '15', |
|
| 133 | - 'date_jnum16' => '16', |
|
| 134 | - 'date_jnum17' => '17', |
|
| 135 | - 'date_jnum18' => '18', |
|
| 136 | - 'date_jnum19' => '19', |
|
| 137 | - 'date_jnum2' => '2', |
|
| 138 | - 'date_jnum20' => '20', |
|
| 139 | - 'date_jnum21' => '21', |
|
| 140 | - 'date_jnum22' => '22', |
|
| 141 | - 'date_jnum23' => '23', |
|
| 142 | - 'date_jnum24' => '24', |
|
| 143 | - 'date_jnum25' => '25', |
|
| 144 | - 'date_jnum26' => '26', |
|
| 145 | - 'date_jnum27' => '27', |
|
| 146 | - 'date_jnum28' => '28', |
|
| 147 | - 'date_jnum29' => '29', |
|
| 148 | - 'date_jnum3' => '3', |
|
| 149 | - 'date_jnum30' => '30', |
|
| 150 | - 'date_jnum31' => '31', |
|
| 151 | - 'date_jnum4' => '4', |
|
| 152 | - 'date_jnum5' => '5', |
|
| 153 | - 'date_jnum6' => '6', |
|
| 154 | - 'date_jnum7' => '7', |
|
| 155 | - 'date_jnum8' => '8', |
|
| 156 | - 'date_jnum9' => '9', |
|
| 157 | - 'date_jour_1' => 'dimanĉo', |
|
| 158 | - 'date_jour_1_abbr' => 'dim.', |
|
| 159 | - 'date_jour_1_initiale' => 'd.', |
|
| 160 | - 'date_jour_2' => 'lundo', |
|
| 161 | - 'date_jour_2_abbr' => 'lun.', |
|
| 162 | - 'date_jour_2_initiale' => 'l.', |
|
| 163 | - 'date_jour_3' => 'mardo', |
|
| 164 | - 'date_jour_3_abbr' => 'mar.', |
|
| 165 | - 'date_jour_3_initiale' => 'm.', |
|
| 166 | - 'date_jour_4' => 'merkredo', |
|
| 167 | - 'date_jour_4_abbr' => 'mer.', |
|
| 168 | - 'date_jour_4_initiale' => 'm.', |
|
| 169 | - 'date_jour_5' => 'ĵaŭdo', |
|
| 170 | - 'date_jour_5_abbr' => 'jaŭ.', |
|
| 171 | - 'date_jour_5_initiale' => 'j.', |
|
| 172 | - 'date_jour_6' => 'vendredo', |
|
| 173 | - 'date_jour_6_abbr' => 'ven.', |
|
| 174 | - 'date_jour_6_initiale' => 'v.', |
|
| 175 | - 'date_jour_7' => 'sabato', |
|
| 176 | - 'date_jour_7_abbr' => 'sab.', |
|
| 177 | - 'date_jour_7_initiale' => 's.', |
|
| 178 | - 'date_jours' => 'tagoj', |
|
| 179 | - 'date_minutes' => 'minutoj', |
|
| 180 | - 'date_mois' => 'monatoj', |
|
| 181 | - 'date_mois_1' => 'januaro', |
|
| 182 | - 'date_mois_10' => 'oktobro', |
|
| 183 | - 'date_mois_10_abbr' => 'oct.', |
|
| 184 | - 'date_mois_11' => 'novembro', |
|
| 185 | - 'date_mois_11_abbr' => 'nov.', |
|
| 186 | - 'date_mois_12' => 'decembro', |
|
| 187 | - 'date_mois_12_abbr' => 'dec.', |
|
| 188 | - 'date_mois_1_abbr' => 'jan.', |
|
| 189 | - 'date_mois_2' => 'februaro', |
|
| 190 | - 'date_mois_2_abbr' => 'feb.', |
|
| 191 | - 'date_mois_3' => 'marto', |
|
| 192 | - 'date_mois_3_abbr' => 'mar.', |
|
| 193 | - 'date_mois_4' => 'aprilo', |
|
| 194 | - 'date_mois_4_abbr' => 'apr.', |
|
| 195 | - 'date_mois_5' => 'majo', |
|
| 196 | - 'date_mois_5_abbr' => 'majo', |
|
| 197 | - 'date_mois_6' => 'junio', |
|
| 198 | - 'date_mois_6_abbr' => 'jun.', |
|
| 199 | - 'date_mois_7' => 'julio', |
|
| 200 | - 'date_mois_7_abbr' => 'jul.', |
|
| 201 | - 'date_mois_8' => 'aŭgusto', |
|
| 202 | - 'date_mois_8_abbr' => 'aŭg.', |
|
| 203 | - 'date_mois_9' => 'septembro', |
|
| 204 | - 'date_mois_9_abbr' => 'sep.', |
|
| 205 | - 'date_saison_1' => 'vintro', |
|
| 206 | - 'date_saison_2' => 'printempo', |
|
| 207 | - 'date_saison_3' => 'somero', |
|
| 208 | - 'date_saison_4' => 'aŭtuno', |
|
| 209 | - 'date_secondes' => 'sekundoj', |
|
| 210 | - 'date_semaines' => 'semajnoj', |
|
| 211 | - 'date_un_mois' => 'monato', |
|
| 212 | - 'date_une_heure' => 'horo', |
|
| 213 | - 'date_une_minute' => 'minuto', |
|
| 214 | - 'date_une_seconde' => 'sekundo', |
|
| 215 | - 'date_une_semaine' => 'semajno', |
|
| 216 | - 'dirs_commencer' => ' por vere komenci la instalprocezon', |
|
| 217 | - 'dirs_preliminaire' => 'Antaŭfaro : <b>Difinu la alir-rajtojn</b>', |
|
| 218 | - 'dirs_probleme_droits' => 'Alir-rajta problemo', |
|
| 219 | - 'dirs_repertoires_absents' => '<b>La jenaj dosierujoj ne estas trovitaj : <ul>@bad_dirs@.</ul> </b> |
|
| 90 | + // D |
|
| 91 | + 'date_aujourdhui' => 'hodiaŭ', |
|
| 92 | + 'date_avant_jc' => 'a.K.', |
|
| 93 | + 'date_dans' => 'post @delai@', |
|
| 94 | + 'date_de_mois_1' => '@j@ @nommois@', |
|
| 95 | + 'date_de_mois_10' => '@j@ @nommois@', |
|
| 96 | + 'date_de_mois_11' => '@j@ @nommois@', |
|
| 97 | + 'date_de_mois_12' => '@j@ @nommois@', |
|
| 98 | + 'date_de_mois_2' => '@j@ @nommois@', |
|
| 99 | + 'date_de_mois_3' => '@j@ @nommois@', |
|
| 100 | + 'date_de_mois_4' => '@j@ @nommois@', |
|
| 101 | + 'date_de_mois_5' => '@j@ @nommois@', |
|
| 102 | + 'date_de_mois_6' => '@j@ @nommois@', |
|
| 103 | + 'date_de_mois_7' => '@j@ @nommois@', |
|
| 104 | + 'date_de_mois_8' => '@j@ @nommois@', |
|
| 105 | + 'date_de_mois_9' => '@j@ @nommois@', |
|
| 106 | + 'date_demain' => 'morgaŭ', |
|
| 107 | + 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 108 | + 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 109 | + 'date_fmt_jour' => '@nomjour@ la @jour@a', |
|
| 110 | + 'date_fmt_jour_heure' => '@jour@ je la @heure@', |
|
| 111 | + 'date_fmt_jour_heure_debut_fin' => 'la @jour@ de @heure_debut@ ĝis @heure_fin@', |
|
| 112 | + 'date_fmt_jour_heure_debut_fin_abbr' => 'la @dtstart@@jour@a de @heure_debut@@dtabbr@ ĝis @dtend@@heure_fin@@dtend@', |
|
| 113 | + 'date_fmt_jour_mois' => '@jour@a @nommois@', |
|
| 114 | + 'date_fmt_jour_mois_annee' => '@jour@a @nommois@ @annee@', |
|
| 115 | + 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 116 | + 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 117 | + 'date_fmt_nomjour_date' => 'la @nomjour@ @date@', |
|
| 118 | + 'date_fmt_periode' => 'De @date_debut@ ĝis @date_fin@', |
|
| 119 | + 'date_fmt_periode_abbr' => 'De @dtart@@date_debut@@dtabbr@ ĝis @dtend@@date_fin@@dtabbr@', |
|
| 120 | + 'date_fmt_periode_from' => 'De', |
|
| 121 | + 'date_fmt_periode_to' => 'ĝis', |
|
| 122 | + 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 123 | + 'date_heures' => 'horoj', |
|
| 124 | + 'date_hier' => 'hieraŭ', |
|
| 125 | + 'date_il_y_a' => 'antaŭ @delai@', |
|
| 126 | + 'date_jnum1' => '1', |
|
| 127 | + 'date_jnum10' => '10', |
|
| 128 | + 'date_jnum11' => '11', |
|
| 129 | + 'date_jnum12' => '12', |
|
| 130 | + 'date_jnum13' => '13', |
|
| 131 | + 'date_jnum14' => '14', |
|
| 132 | + 'date_jnum15' => '15', |
|
| 133 | + 'date_jnum16' => '16', |
|
| 134 | + 'date_jnum17' => '17', |
|
| 135 | + 'date_jnum18' => '18', |
|
| 136 | + 'date_jnum19' => '19', |
|
| 137 | + 'date_jnum2' => '2', |
|
| 138 | + 'date_jnum20' => '20', |
|
| 139 | + 'date_jnum21' => '21', |
|
| 140 | + 'date_jnum22' => '22', |
|
| 141 | + 'date_jnum23' => '23', |
|
| 142 | + 'date_jnum24' => '24', |
|
| 143 | + 'date_jnum25' => '25', |
|
| 144 | + 'date_jnum26' => '26', |
|
| 145 | + 'date_jnum27' => '27', |
|
| 146 | + 'date_jnum28' => '28', |
|
| 147 | + 'date_jnum29' => '29', |
|
| 148 | + 'date_jnum3' => '3', |
|
| 149 | + 'date_jnum30' => '30', |
|
| 150 | + 'date_jnum31' => '31', |
|
| 151 | + 'date_jnum4' => '4', |
|
| 152 | + 'date_jnum5' => '5', |
|
| 153 | + 'date_jnum6' => '6', |
|
| 154 | + 'date_jnum7' => '7', |
|
| 155 | + 'date_jnum8' => '8', |
|
| 156 | + 'date_jnum9' => '9', |
|
| 157 | + 'date_jour_1' => 'dimanĉo', |
|
| 158 | + 'date_jour_1_abbr' => 'dim.', |
|
| 159 | + 'date_jour_1_initiale' => 'd.', |
|
| 160 | + 'date_jour_2' => 'lundo', |
|
| 161 | + 'date_jour_2_abbr' => 'lun.', |
|
| 162 | + 'date_jour_2_initiale' => 'l.', |
|
| 163 | + 'date_jour_3' => 'mardo', |
|
| 164 | + 'date_jour_3_abbr' => 'mar.', |
|
| 165 | + 'date_jour_3_initiale' => 'm.', |
|
| 166 | + 'date_jour_4' => 'merkredo', |
|
| 167 | + 'date_jour_4_abbr' => 'mer.', |
|
| 168 | + 'date_jour_4_initiale' => 'm.', |
|
| 169 | + 'date_jour_5' => 'ĵaŭdo', |
|
| 170 | + 'date_jour_5_abbr' => 'jaŭ.', |
|
| 171 | + 'date_jour_5_initiale' => 'j.', |
|
| 172 | + 'date_jour_6' => 'vendredo', |
|
| 173 | + 'date_jour_6_abbr' => 'ven.', |
|
| 174 | + 'date_jour_6_initiale' => 'v.', |
|
| 175 | + 'date_jour_7' => 'sabato', |
|
| 176 | + 'date_jour_7_abbr' => 'sab.', |
|
| 177 | + 'date_jour_7_initiale' => 's.', |
|
| 178 | + 'date_jours' => 'tagoj', |
|
| 179 | + 'date_minutes' => 'minutoj', |
|
| 180 | + 'date_mois' => 'monatoj', |
|
| 181 | + 'date_mois_1' => 'januaro', |
|
| 182 | + 'date_mois_10' => 'oktobro', |
|
| 183 | + 'date_mois_10_abbr' => 'oct.', |
|
| 184 | + 'date_mois_11' => 'novembro', |
|
| 185 | + 'date_mois_11_abbr' => 'nov.', |
|
| 186 | + 'date_mois_12' => 'decembro', |
|
| 187 | + 'date_mois_12_abbr' => 'dec.', |
|
| 188 | + 'date_mois_1_abbr' => 'jan.', |
|
| 189 | + 'date_mois_2' => 'februaro', |
|
| 190 | + 'date_mois_2_abbr' => 'feb.', |
|
| 191 | + 'date_mois_3' => 'marto', |
|
| 192 | + 'date_mois_3_abbr' => 'mar.', |
|
| 193 | + 'date_mois_4' => 'aprilo', |
|
| 194 | + 'date_mois_4_abbr' => 'apr.', |
|
| 195 | + 'date_mois_5' => 'majo', |
|
| 196 | + 'date_mois_5_abbr' => 'majo', |
|
| 197 | + 'date_mois_6' => 'junio', |
|
| 198 | + 'date_mois_6_abbr' => 'jun.', |
|
| 199 | + 'date_mois_7' => 'julio', |
|
| 200 | + 'date_mois_7_abbr' => 'jul.', |
|
| 201 | + 'date_mois_8' => 'aŭgusto', |
|
| 202 | + 'date_mois_8_abbr' => 'aŭg.', |
|
| 203 | + 'date_mois_9' => 'septembro', |
|
| 204 | + 'date_mois_9_abbr' => 'sep.', |
|
| 205 | + 'date_saison_1' => 'vintro', |
|
| 206 | + 'date_saison_2' => 'printempo', |
|
| 207 | + 'date_saison_3' => 'somero', |
|
| 208 | + 'date_saison_4' => 'aŭtuno', |
|
| 209 | + 'date_secondes' => 'sekundoj', |
|
| 210 | + 'date_semaines' => 'semajnoj', |
|
| 211 | + 'date_un_mois' => 'monato', |
|
| 212 | + 'date_une_heure' => 'horo', |
|
| 213 | + 'date_une_minute' => 'minuto', |
|
| 214 | + 'date_une_seconde' => 'sekundo', |
|
| 215 | + 'date_une_semaine' => 'semajno', |
|
| 216 | + 'dirs_commencer' => ' por vere komenci la instalprocezon', |
|
| 217 | + 'dirs_preliminaire' => 'Antaŭfaro : <b>Difinu la alir-rajtojn</b>', |
|
| 218 | + 'dirs_probleme_droits' => 'Alir-rajta problemo', |
|
| 219 | + 'dirs_repertoires_absents' => '<b>La jenaj dosierujoj ne estas trovitaj : <ul>@bad_dirs@.</ul> </b> |
|
| 220 | 220 | <p>La problemo verŝajne rilatas al majuskligo de literoj. |
| 221 | 221 | Kontrolu ke la majuskloj ja kongruas kun tio kio estas afiŝita ĉi-supre ; |
| 222 | 222 | se ili ne kongruas, bonvolu renomi la dosierujon per via FTP-programo por korekti la eraron. |
| 223 | 223 | </p><p>Post tio, vi povos</p>', |
| 224 | - 'dirs_repertoires_suivants' => '<b>La jenaj dosierujoj ne estas skribe modifeblaj : |
|
| 224 | + 'dirs_repertoires_suivants' => '<b>La jenaj dosierujoj ne estas skribe modifeblaj : |
|
| 225 | 225 | <ul>@bad_dirs@.</ul></b> |
| 226 | 226 | <p>Por solvi tion, uzu vian FTP-klienton por reguligi la alir-rajtojn de ĉiu |
| 227 | 227 | el tiuj dosierujoj. La proceduron oni detale klarigas en la instalgvidlibro. |
| 228 | 228 | </p><p>Post tio, vi povos </p>', |
| 229 | - 'double_occurrence' => 'Duobla trafo de @balise@', |
|
| 229 | + 'double_occurrence' => 'Duobla trafo de @balise@', |
|
| 230 | 230 | |
| 231 | - // E |
|
| 232 | - 'en_cours' => 'okazanta', |
|
| 233 | - 'envoi_via_le_site' => 'Sendo tra la retejo', |
|
| 234 | - 'erreur' => 'Eraro', |
|
| 235 | - 'erreur_balise_non_fermee' => 'lasta ne fermita marko :', |
|
| 236 | - 'erreur_technique_ajaxform' => 'Aj. Neatendita eraro ne ebligis la sendon de la formularo. Vi povas reprovi denove.', |
|
| 237 | - 'erreur_technique_enregistrement_champs' => 'Teknika eraro neebligis la ĝustan registradon de la kampo @champs@.', |
|
| 238 | - 'erreur_technique_enregistrement_impossible' => 'Teknika eraro neebligis la registradon.', |
|
| 239 | - 'erreur_texte' => 'eraro(j)', |
|
| 240 | - 'etape' => 'Etapo', |
|
| 231 | + // E |
|
| 232 | + 'en_cours' => 'okazanta', |
|
| 233 | + 'envoi_via_le_site' => 'Sendo tra la retejo', |
|
| 234 | + 'erreur' => 'Eraro', |
|
| 235 | + 'erreur_balise_non_fermee' => 'lasta ne fermita marko :', |
|
| 236 | + 'erreur_technique_ajaxform' => 'Aj. Neatendita eraro ne ebligis la sendon de la formularo. Vi povas reprovi denove.', |
|
| 237 | + 'erreur_technique_enregistrement_champs' => 'Teknika eraro neebligis la ĝustan registradon de la kampo @champs@.', |
|
| 238 | + 'erreur_technique_enregistrement_impossible' => 'Teknika eraro neebligis la registradon.', |
|
| 239 | + 'erreur_texte' => 'eraro(j)', |
|
| 240 | + 'etape' => 'Etapo', |
|
| 241 | 241 | |
| 242 | - // F |
|
| 243 | - 'fichier_introuvable' => 'Netrovebla dosiero @fichier@ ', # MODIF |
|
| 244 | - 'form_auteur_confirmation' => 'Konfirmu vian retpoŝtadreso', |
|
| 245 | - 'form_auteur_email_modifie' => 'Via retpoŝtadreso estis modifita.', |
|
| 246 | - 'form_auteur_envoi_mail_confirmation' => 'Konfirmretmesaĝo estis sendita al @email@. Vi devu viziti la menciita retadreso en la retmesaĝo por validigi vian retpoŝtadreson.', |
|
| 247 | - 'form_auteur_mail_confirmation' => 'Saluton, |
|
| 242 | + // F |
|
| 243 | + 'fichier_introuvable' => 'Netrovebla dosiero @fichier@ ', # MODIF |
|
| 244 | + 'form_auteur_confirmation' => 'Konfirmu vian retpoŝtadreso', |
|
| 245 | + 'form_auteur_email_modifie' => 'Via retpoŝtadreso estis modifita.', |
|
| 246 | + 'form_auteur_envoi_mail_confirmation' => 'Konfirmretmesaĝo estis sendita al @email@. Vi devu viziti la menciita retadreso en la retmesaĝo por validigi vian retpoŝtadreson.', |
|
| 247 | + 'form_auteur_mail_confirmation' => 'Saluton, |
|
| 248 | 248 | |
| 249 | 249 | Vi petis ŝanĝi vian retpoŝtadreson. |
| 250 | 250 | Por konfirmi vian novan retadreson, simple ensaluti al |
| 251 | 251 | la retadreso ĉi-sube (alie, via peto estos ignoritaj) : |
| 252 | 252 | |
| 253 | 253 | @url@', |
| 254 | - 'form_deja_inscrit' => 'Vi estas jam registrita.', |
|
| 255 | - 'form_email_non_valide' => 'Via retpoŝtadreso ne validas.', |
|
| 256 | - 'form_forum_access_refuse' => 'Vi ne plu havas alir-rajton al tiu retejo.', |
|
| 257 | - 'form_forum_bonjour' => 'Saluton @nom@,', |
|
| 258 | - 'form_forum_confirmer_email' => 'Por konfirmi vian retpoŝtadreson, iru al tiu retadreso : @url_confirm@', |
|
| 259 | - 'form_forum_email_deja_enregistre' => 'Tiu ĉi retpoŝtadreso estas jam registrita, vi povas do uzi vian kutiman pasvorton.', |
|
| 260 | - 'form_forum_identifiant_mail' => 'Via nova ensalutilo estis ĵus al vi sendita per retletero.', |
|
| 261 | - 'form_forum_identifiants' => 'Personaj ensalutiloj', |
|
| 262 | - 'form_forum_indiquer_nom_email' => 'Indiku ĉi tie vian nomon kaj retpoŝtadreson. Via persona ensalutilo rapide alvenos al vi retletere.', |
|
| 263 | - 'form_forum_login' => 'salutnomo :', |
|
| 264 | - 'form_forum_message_auto' => '(tio estas aŭtomata mesaĝo)', |
|
| 265 | - 'form_forum_pass' => 'pasvorto :', |
|
| 266 | - 'form_forum_probleme_mail' => 'Retpoŝta problemo : la ensalutilo ne sendeblas.', |
|
| 267 | - 'form_forum_voici1' => 'Jen viaj ensalutiloj por partopreni la vivon de la retejo "@nom_site_spip@" (@adresse_site@) :', |
|
| 268 | - 'form_forum_voici2' => 'Jen estas viaj ensalutiloj por proponi artikolojn ĉe la retejo "@nom_site_spip@" (@adresse_login@) :', |
|
| 269 | - 'form_indiquer_email' => 'Bonvolu indiki vian retpoŝtadreson.', |
|
| 270 | - 'form_indiquer_nom' => 'Bonvolu indiki vian nomon.', |
|
| 271 | - 'form_indiquer_nom_site' => 'Bonvolu indiki la nomon de via retejo.', |
|
| 272 | - 'form_pet_deja_enregistre' => 'Tiu retejo estas jam registrita', |
|
| 273 | - 'form_pet_signature_pasprise' => 'Via subskribo ne estas registrita.', |
|
| 274 | - 'form_prop_confirmer_envoi' => 'Konfirmi la sendon', |
|
| 275 | - 'form_prop_description' => 'Priskribo/komento', |
|
| 276 | - 'form_prop_enregistre' => 'Via kontribuo estas registrita, ĝi aperos ĉerete post validigo de la respondeculoj de la retejo.', |
|
| 277 | - 'form_prop_envoyer' => 'Sendi mesaĝon', |
|
| 278 | - 'form_prop_indiquer_email' => 'Bonvolu indiki validan retpoŝtadreson', |
|
| 279 | - 'form_prop_indiquer_nom_site' => 'Bonvolu indiki la nomon de la retejo.', |
|
| 280 | - 'form_prop_indiquer_sujet' => 'Bonvolu indiki temon', |
|
| 281 | - 'form_prop_message_envoye' => 'Mesaĝo sendita', |
|
| 282 | - 'form_prop_non_enregistre' => 'Via propono ne estis registrita.', |
|
| 283 | - 'form_prop_sujet' => 'Temo', |
|
| 284 | - 'form_prop_url_site' => 'URL-adreso de la retejo', |
|
| 285 | - 'format_date_incorrecte' => 'La dato aŭ ĝia formo ne validas', |
|
| 286 | - 'format_heure_incorrecte' => 'La horo aŭ ĝia formo ne validas', |
|
| 287 | - 'forum_non_inscrit' => 'Vi ne estas registrita, aŭ la adreso aŭ la pasvorto ne ĝustas.', |
|
| 288 | - 'forum_par_auteur' => 'de @auteur@', |
|
| 289 | - 'forum_titre_erreur' => 'Eraro...', |
|
| 254 | + 'form_deja_inscrit' => 'Vi estas jam registrita.', |
|
| 255 | + 'form_email_non_valide' => 'Via retpoŝtadreso ne validas.', |
|
| 256 | + 'form_forum_access_refuse' => 'Vi ne plu havas alir-rajton al tiu retejo.', |
|
| 257 | + 'form_forum_bonjour' => 'Saluton @nom@,', |
|
| 258 | + 'form_forum_confirmer_email' => 'Por konfirmi vian retpoŝtadreson, iru al tiu retadreso : @url_confirm@', |
|
| 259 | + 'form_forum_email_deja_enregistre' => 'Tiu ĉi retpoŝtadreso estas jam registrita, vi povas do uzi vian kutiman pasvorton.', |
|
| 260 | + 'form_forum_identifiant_mail' => 'Via nova ensalutilo estis ĵus al vi sendita per retletero.', |
|
| 261 | + 'form_forum_identifiants' => 'Personaj ensalutiloj', |
|
| 262 | + 'form_forum_indiquer_nom_email' => 'Indiku ĉi tie vian nomon kaj retpoŝtadreson. Via persona ensalutilo rapide alvenos al vi retletere.', |
|
| 263 | + 'form_forum_login' => 'salutnomo :', |
|
| 264 | + 'form_forum_message_auto' => '(tio estas aŭtomata mesaĝo)', |
|
| 265 | + 'form_forum_pass' => 'pasvorto :', |
|
| 266 | + 'form_forum_probleme_mail' => 'Retpoŝta problemo : la ensalutilo ne sendeblas.', |
|
| 267 | + 'form_forum_voici1' => 'Jen viaj ensalutiloj por partopreni la vivon de la retejo "@nom_site_spip@" (@adresse_site@) :', |
|
| 268 | + 'form_forum_voici2' => 'Jen estas viaj ensalutiloj por proponi artikolojn ĉe la retejo "@nom_site_spip@" (@adresse_login@) :', |
|
| 269 | + 'form_indiquer_email' => 'Bonvolu indiki vian retpoŝtadreson.', |
|
| 270 | + 'form_indiquer_nom' => 'Bonvolu indiki vian nomon.', |
|
| 271 | + 'form_indiquer_nom_site' => 'Bonvolu indiki la nomon de via retejo.', |
|
| 272 | + 'form_pet_deja_enregistre' => 'Tiu retejo estas jam registrita', |
|
| 273 | + 'form_pet_signature_pasprise' => 'Via subskribo ne estas registrita.', |
|
| 274 | + 'form_prop_confirmer_envoi' => 'Konfirmi la sendon', |
|
| 275 | + 'form_prop_description' => 'Priskribo/komento', |
|
| 276 | + 'form_prop_enregistre' => 'Via kontribuo estas registrita, ĝi aperos ĉerete post validigo de la respondeculoj de la retejo.', |
|
| 277 | + 'form_prop_envoyer' => 'Sendi mesaĝon', |
|
| 278 | + 'form_prop_indiquer_email' => 'Bonvolu indiki validan retpoŝtadreson', |
|
| 279 | + 'form_prop_indiquer_nom_site' => 'Bonvolu indiki la nomon de la retejo.', |
|
| 280 | + 'form_prop_indiquer_sujet' => 'Bonvolu indiki temon', |
|
| 281 | + 'form_prop_message_envoye' => 'Mesaĝo sendita', |
|
| 282 | + 'form_prop_non_enregistre' => 'Via propono ne estis registrita.', |
|
| 283 | + 'form_prop_sujet' => 'Temo', |
|
| 284 | + 'form_prop_url_site' => 'URL-adreso de la retejo', |
|
| 285 | + 'format_date_incorrecte' => 'La dato aŭ ĝia formo ne validas', |
|
| 286 | + 'format_heure_incorrecte' => 'La horo aŭ ĝia formo ne validas', |
|
| 287 | + 'forum_non_inscrit' => 'Vi ne estas registrita, aŭ la adreso aŭ la pasvorto ne ĝustas.', |
|
| 288 | + 'forum_par_auteur' => 'de @auteur@', |
|
| 289 | + 'forum_titre_erreur' => 'Eraro...', |
|
| 290 | 290 | |
| 291 | - // I |
|
| 292 | - 'ical_texte_rss_articles' => 'La abondosiero (backend-dosiero) de la artikoloj de tiu retejo troveblas ĉe la retadreso :', |
|
| 293 | - 'ical_texte_rss_articles2' => 'Sube, vi povas trovi abonligojn por gvati evoluadon de artikoloj el ĉiu rubriko de la retejo :', |
|
| 294 | - 'ical_texte_rss_breves' => 'Krome ekzistas dosiero enhavanta ĉiujn fulm-informojn de la retejo. Precizigante la rubriko-numeron, vi ricevos nur la fulm-informojn el tiu rubriko.', |
|
| 295 | - 'icone_a_suivre' => 'Stabejo', |
|
| 296 | - 'icone_admin_site' => 'Reteja administrado', |
|
| 297 | - 'icone_agenda' => 'Agendo', |
|
| 298 | - 'icone_aide_ligne' => 'Helpilo', |
|
| 299 | - 'icone_articles' => 'Artikoloj', |
|
| 300 | - 'icone_auteurs' => 'Aŭtoroj', |
|
| 301 | - 'icone_brouteur' => 'Rapida retumado', |
|
| 302 | - 'icone_configuration_site' => 'Konfiguro', |
|
| 303 | - 'icone_configurer_site' => 'Konfiguri vian retejon', |
|
| 304 | - 'icone_creer_nouvel_auteur' => 'Krei novan aŭtoron', |
|
| 305 | - 'icone_creer_rubrique' => 'Krei novan rubrikon', |
|
| 306 | - 'icone_creer_sous_rubrique' => 'Krei sub-rubrikon', |
|
| 307 | - 'icone_deconnecter' => 'Elsaluti', |
|
| 308 | - 'icone_discussions' => 'Diskutoj', |
|
| 309 | - 'icone_doc_rubrique' => 'Dokumentoj de la rubrikoj', |
|
| 310 | - 'icone_ecrire_article' => 'Skribi novan artikolon', |
|
| 311 | - 'icone_edition_site' => 'Redaktejo', |
|
| 312 | - 'icone_gestion_langues' => 'Mastrumado de lingvoj', |
|
| 313 | - 'icone_informations_personnelles' => 'Personaj datenoj', |
|
| 314 | - 'icone_interface_complet' => 'kompleta interfaco', |
|
| 315 | - 'icone_interface_simple' => 'Simpla interfaco', |
|
| 316 | - 'icone_maintenance_site' => 'Retejo-bontenado', |
|
| 317 | - 'icone_messagerie_personnelle' => 'Persona mesaĝilo', |
|
| 318 | - 'icone_repartition_debut' => 'Afiŝi la distribuon ekde la komenco', |
|
| 319 | - 'icone_rubriques' => 'Rubrikoj', |
|
| 320 | - 'icone_sauver_site' => 'Savkopii la retejon', |
|
| 321 | - 'icone_site_entier' => 'La tuta retejo', |
|
| 322 | - 'icone_sites_references' => 'Referencigitaj retejoj', |
|
| 323 | - 'icone_statistiques' => 'Statistikoj de la retejo', |
|
| 324 | - 'icone_suivi_activite' => 'Gvati vivon de la retejo', |
|
| 325 | - 'icone_suivi_actualite' => 'Evoluado de la retejo', |
|
| 326 | - 'icone_suivi_pettions' => 'Superrigardi/mastrumi la petskribon', |
|
| 327 | - 'icone_suivi_revisions' => 'Modifoj de artikoloj', |
|
| 328 | - 'icone_supprimer_document' => 'Forigi tiun dokumenton', |
|
| 329 | - 'icone_supprimer_image' => 'Forigi tiun bildon', |
|
| 330 | - 'icone_tous_articles' => 'Ĉiuj viaj artikoloj', |
|
| 331 | - 'icone_tous_auteur' => 'Ĉiuj aŭtoroj', |
|
| 332 | - 'icone_tous_visiteur' => 'Ĉiuj vizitantoj', |
|
| 333 | - 'icone_visiter_site' => 'Vidi la publika spaco', |
|
| 334 | - 'icone_voir_en_ligne' => 'Vidi ĉeretigite', |
|
| 335 | - 'img_indisponible' => 'nedisponebla bildo', |
|
| 336 | - 'impossible' => 'ne eblas', |
|
| 337 | - 'info_a_suivre' => 'STABEJO »', |
|
| 338 | - 'info_acces_interdit' => 'Malpermesata aliro', |
|
| 339 | - 'info_acces_refuse' => 'Rifuzita aliro', |
|
| 340 | - 'info_action' => 'Ago : @action@', |
|
| 341 | - 'info_administrer_rubriques' => 'Vi povas mastrumi tiun rubrikon kaj ties subrubrikojn', |
|
| 342 | - 'info_adresse_non_indiquee' => 'Vi indikis neniun adreson por testi !', |
|
| 343 | - 'info_aide' => 'HELPO :', |
|
| 344 | - 'info_ajouter_mot' => 'Aldoni tiun vorton', |
|
| 345 | - 'info_annonce' => 'ANONCO', |
|
| 346 | - 'info_annonces_generales' => 'Ĝeneralaj anoncoj :', |
|
| 347 | - 'info_article_propose' => 'Proponita artikolo', |
|
| 348 | - 'info_article_publie' => 'Publikigita artikolo', |
|
| 349 | - 'info_article_redaction' => 'Redaktata artikolo', |
|
| 350 | - 'info_article_refuse' => 'Rifuzita artikolo', |
|
| 351 | - 'info_article_supprime' => 'Forviŝita artikolo', |
|
| 352 | - 'info_articles' => 'Artikoloj', |
|
| 353 | - 'info_articles_a_valider' => 'Validigendaj artikoloj', |
|
| 354 | - 'info_articles_nb' => '@nb@ artikoloj', |
|
| 355 | - 'info_articles_proposes' => 'Proponitaj artikoloj', |
|
| 356 | - 'info_articles_un' => '1 artikolo', |
|
| 357 | - 'info_auteurs_nombre' => 'aŭtoro(j) :', |
|
| 358 | - 'info_authentification_ftp' => 'Aŭtentigo (per FTP).', |
|
| 359 | - 'info_breves_2' => 'fulm-informoj', |
|
| 360 | - 'info_breves_nb' => '@nb@ fulm-informoj', |
|
| 361 | - 'info_breves_un' => '1 fulm-informo', |
|
| 362 | - 'info_connexion_refusee' => 'Konektiĝo rifuzata', |
|
| 363 | - 'info_contact_developpeur' => 'Bonvolu kontakti programiston.', |
|
| 364 | - 'info_contenance' => 'Tiu retejo enhavas :', |
|
| 365 | - 'info_contribution' => 'kontribuaĵoj', |
|
| 366 | - 'info_copyright' => '@spip@ estas libera programo distribuata @lien_gpl@.', |
|
| 367 | - 'info_copyright_doc' => 'Por pliaj informoj vidu la retpaĝon <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 368 | - 'info_copyright_gpl' => 'sub licenco GPL', |
|
| 369 | - 'info_cours_edition' => 'Viaj redaktataj artikoloj', # MODIF |
|
| 370 | - 'info_creer_repertoire' => 'Bonvolu krei dosieron aŭ dosierujon kies nomo estu :', |
|
| 371 | - 'info_creer_repertoire_2' => 'ene de la subdosierujo <b>@repertoire@</b>, kaj :', |
|
| 372 | - 'info_creer_vignette' => 'aŭtomata kreo de la vinjeto', |
|
| 373 | - 'info_creerdansrubrique_non_autorise' => 'Vi ne havas sufiĉajn rajtojn por krei enhavo en ĉi tiu rubriko', |
|
| 374 | - 'info_deplier' => 'Malfaldi', |
|
| 375 | - 'info_descriptif_nombre' => 'priskribo(j) :', |
|
| 376 | - 'info_description' => 'Priskribo :', |
|
| 377 | - 'info_description_2' => 'Priskribo :', |
|
| 378 | - 'info_dimension' => 'Dimensioj :', |
|
| 379 | - 'info_documents_nb' => '@nb@ dokumentoj', |
|
| 380 | - 'info_documents_un' => '1 dokumento', |
|
| 381 | - 'info_ecire_message_prive' => 'Skribi privatan mesaĝon', |
|
| 382 | - 'info_email_invalide' => 'Nevalida retpoŝtadreso.', |
|
| 383 | - 'info_en_cours_validation' => 'Viaj redaktataj artikoloj', |
|
| 384 | - 'info_en_ligne' => 'Nun ĉerete :', |
|
| 385 | - 'info_envoyer_message_prive' => 'Sendi privatan mesaĝon al tiu ĉi aŭtoro', |
|
| 386 | - 'info_erreur_requete' => 'Eraro en la peto : ', |
|
| 387 | - 'info_erreur_squelette2' => 'Neniu skeleto <b>@fichier@</b> disponeblas...', |
|
| 388 | - 'info_erreur_systeme' => 'Sistemo-eraro (errno @errsys@)', |
|
| 389 | - 'info_erreur_systeme2' => 'Eble la fiksdisko plenas, aŭ la datenbazo estas difektita.<br /> |
|
| 291 | + // I |
|
| 292 | + 'ical_texte_rss_articles' => 'La abondosiero (backend-dosiero) de la artikoloj de tiu retejo troveblas ĉe la retadreso :', |
|
| 293 | + 'ical_texte_rss_articles2' => 'Sube, vi povas trovi abonligojn por gvati evoluadon de artikoloj el ĉiu rubriko de la retejo :', |
|
| 294 | + 'ical_texte_rss_breves' => 'Krome ekzistas dosiero enhavanta ĉiujn fulm-informojn de la retejo. Precizigante la rubriko-numeron, vi ricevos nur la fulm-informojn el tiu rubriko.', |
|
| 295 | + 'icone_a_suivre' => 'Stabejo', |
|
| 296 | + 'icone_admin_site' => 'Reteja administrado', |
|
| 297 | + 'icone_agenda' => 'Agendo', |
|
| 298 | + 'icone_aide_ligne' => 'Helpilo', |
|
| 299 | + 'icone_articles' => 'Artikoloj', |
|
| 300 | + 'icone_auteurs' => 'Aŭtoroj', |
|
| 301 | + 'icone_brouteur' => 'Rapida retumado', |
|
| 302 | + 'icone_configuration_site' => 'Konfiguro', |
|
| 303 | + 'icone_configurer_site' => 'Konfiguri vian retejon', |
|
| 304 | + 'icone_creer_nouvel_auteur' => 'Krei novan aŭtoron', |
|
| 305 | + 'icone_creer_rubrique' => 'Krei novan rubrikon', |
|
| 306 | + 'icone_creer_sous_rubrique' => 'Krei sub-rubrikon', |
|
| 307 | + 'icone_deconnecter' => 'Elsaluti', |
|
| 308 | + 'icone_discussions' => 'Diskutoj', |
|
| 309 | + 'icone_doc_rubrique' => 'Dokumentoj de la rubrikoj', |
|
| 310 | + 'icone_ecrire_article' => 'Skribi novan artikolon', |
|
| 311 | + 'icone_edition_site' => 'Redaktejo', |
|
| 312 | + 'icone_gestion_langues' => 'Mastrumado de lingvoj', |
|
| 313 | + 'icone_informations_personnelles' => 'Personaj datenoj', |
|
| 314 | + 'icone_interface_complet' => 'kompleta interfaco', |
|
| 315 | + 'icone_interface_simple' => 'Simpla interfaco', |
|
| 316 | + 'icone_maintenance_site' => 'Retejo-bontenado', |
|
| 317 | + 'icone_messagerie_personnelle' => 'Persona mesaĝilo', |
|
| 318 | + 'icone_repartition_debut' => 'Afiŝi la distribuon ekde la komenco', |
|
| 319 | + 'icone_rubriques' => 'Rubrikoj', |
|
| 320 | + 'icone_sauver_site' => 'Savkopii la retejon', |
|
| 321 | + 'icone_site_entier' => 'La tuta retejo', |
|
| 322 | + 'icone_sites_references' => 'Referencigitaj retejoj', |
|
| 323 | + 'icone_statistiques' => 'Statistikoj de la retejo', |
|
| 324 | + 'icone_suivi_activite' => 'Gvati vivon de la retejo', |
|
| 325 | + 'icone_suivi_actualite' => 'Evoluado de la retejo', |
|
| 326 | + 'icone_suivi_pettions' => 'Superrigardi/mastrumi la petskribon', |
|
| 327 | + 'icone_suivi_revisions' => 'Modifoj de artikoloj', |
|
| 328 | + 'icone_supprimer_document' => 'Forigi tiun dokumenton', |
|
| 329 | + 'icone_supprimer_image' => 'Forigi tiun bildon', |
|
| 330 | + 'icone_tous_articles' => 'Ĉiuj viaj artikoloj', |
|
| 331 | + 'icone_tous_auteur' => 'Ĉiuj aŭtoroj', |
|
| 332 | + 'icone_tous_visiteur' => 'Ĉiuj vizitantoj', |
|
| 333 | + 'icone_visiter_site' => 'Vidi la publika spaco', |
|
| 334 | + 'icone_voir_en_ligne' => 'Vidi ĉeretigite', |
|
| 335 | + 'img_indisponible' => 'nedisponebla bildo', |
|
| 336 | + 'impossible' => 'ne eblas', |
|
| 337 | + 'info_a_suivre' => 'STABEJO »', |
|
| 338 | + 'info_acces_interdit' => 'Malpermesata aliro', |
|
| 339 | + 'info_acces_refuse' => 'Rifuzita aliro', |
|
| 340 | + 'info_action' => 'Ago : @action@', |
|
| 341 | + 'info_administrer_rubriques' => 'Vi povas mastrumi tiun rubrikon kaj ties subrubrikojn', |
|
| 342 | + 'info_adresse_non_indiquee' => 'Vi indikis neniun adreson por testi !', |
|
| 343 | + 'info_aide' => 'HELPO :', |
|
| 344 | + 'info_ajouter_mot' => 'Aldoni tiun vorton', |
|
| 345 | + 'info_annonce' => 'ANONCO', |
|
| 346 | + 'info_annonces_generales' => 'Ĝeneralaj anoncoj :', |
|
| 347 | + 'info_article_propose' => 'Proponita artikolo', |
|
| 348 | + 'info_article_publie' => 'Publikigita artikolo', |
|
| 349 | + 'info_article_redaction' => 'Redaktata artikolo', |
|
| 350 | + 'info_article_refuse' => 'Rifuzita artikolo', |
|
| 351 | + 'info_article_supprime' => 'Forviŝita artikolo', |
|
| 352 | + 'info_articles' => 'Artikoloj', |
|
| 353 | + 'info_articles_a_valider' => 'Validigendaj artikoloj', |
|
| 354 | + 'info_articles_nb' => '@nb@ artikoloj', |
|
| 355 | + 'info_articles_proposes' => 'Proponitaj artikoloj', |
|
| 356 | + 'info_articles_un' => '1 artikolo', |
|
| 357 | + 'info_auteurs_nombre' => 'aŭtoro(j) :', |
|
| 358 | + 'info_authentification_ftp' => 'Aŭtentigo (per FTP).', |
|
| 359 | + 'info_breves_2' => 'fulm-informoj', |
|
| 360 | + 'info_breves_nb' => '@nb@ fulm-informoj', |
|
| 361 | + 'info_breves_un' => '1 fulm-informo', |
|
| 362 | + 'info_connexion_refusee' => 'Konektiĝo rifuzata', |
|
| 363 | + 'info_contact_developpeur' => 'Bonvolu kontakti programiston.', |
|
| 364 | + 'info_contenance' => 'Tiu retejo enhavas :', |
|
| 365 | + 'info_contribution' => 'kontribuaĵoj', |
|
| 366 | + 'info_copyright' => '@spip@ estas libera programo distribuata @lien_gpl@.', |
|
| 367 | + 'info_copyright_doc' => 'Por pliaj informoj vidu la retpaĝon <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 368 | + 'info_copyright_gpl' => 'sub licenco GPL', |
|
| 369 | + 'info_cours_edition' => 'Viaj redaktataj artikoloj', # MODIF |
|
| 370 | + 'info_creer_repertoire' => 'Bonvolu krei dosieron aŭ dosierujon kies nomo estu :', |
|
| 371 | + 'info_creer_repertoire_2' => 'ene de la subdosierujo <b>@repertoire@</b>, kaj :', |
|
| 372 | + 'info_creer_vignette' => 'aŭtomata kreo de la vinjeto', |
|
| 373 | + 'info_creerdansrubrique_non_autorise' => 'Vi ne havas sufiĉajn rajtojn por krei enhavo en ĉi tiu rubriko', |
|
| 374 | + 'info_deplier' => 'Malfaldi', |
|
| 375 | + 'info_descriptif_nombre' => 'priskribo(j) :', |
|
| 376 | + 'info_description' => 'Priskribo :', |
|
| 377 | + 'info_description_2' => 'Priskribo :', |
|
| 378 | + 'info_dimension' => 'Dimensioj :', |
|
| 379 | + 'info_documents_nb' => '@nb@ dokumentoj', |
|
| 380 | + 'info_documents_un' => '1 dokumento', |
|
| 381 | + 'info_ecire_message_prive' => 'Skribi privatan mesaĝon', |
|
| 382 | + 'info_email_invalide' => 'Nevalida retpoŝtadreso.', |
|
| 383 | + 'info_en_cours_validation' => 'Viaj redaktataj artikoloj', |
|
| 384 | + 'info_en_ligne' => 'Nun ĉerete :', |
|
| 385 | + 'info_envoyer_message_prive' => 'Sendi privatan mesaĝon al tiu ĉi aŭtoro', |
|
| 386 | + 'info_erreur_requete' => 'Eraro en la peto : ', |
|
| 387 | + 'info_erreur_squelette2' => 'Neniu skeleto <b>@fichier@</b> disponeblas...', |
|
| 388 | + 'info_erreur_systeme' => 'Sistemo-eraro (errno @errsys@)', |
|
| 389 | + 'info_erreur_systeme2' => 'Eble la fiksdisko plenas, aŭ la datenbazo estas difektita.<br /> |
|
| 390 | 390 | <span style="color:red;">Provu<a href=\'@script@\'>ripari la datenbazon</a>, |
| 391 | 391 | aŭ kontaktu vian retgastiganton.</span>', |
| 392 | - 'info_fini' => 'Finite !', |
|
| 393 | - 'info_format_image' => 'Bildaj formatoj uzeblaj por krei vinjetojn : @gd_formats@.', |
|
| 394 | - 'info_format_non_defini' => 'nedefinita formato', |
|
| 395 | - 'info_grand_ecran' => 'Granda ekrano', |
|
| 396 | - 'info_image_aide' => 'HELPILO', |
|
| 397 | - 'info_image_process_titre' => 'Metodo pri vinjet-farado', |
|
| 398 | - 'info_impossible_lire_page' => '<b>Eraro !</b> Ne eblas legi la paĝon <tt> <html>@test_proxy@</html> </tt> tra la prokura servilo <tt>', |
|
| 399 | - 'info_installation_systeme_publication' => 'Instalo de la publikiga sistemo...', |
|
| 400 | - 'info_installer_documents' => 'Vi povas aŭtomate instali ĉiujn dokumentojn troviĝantajn en la dosiero @upload@.', |
|
| 401 | - 'info_installer_ftp' => 'Kiel mastrumanto, vi povas instali (FTP-e) dosierojn en la dosierujon @upload@ kaj poste rekte selekti ilin ĉi tie.', |
|
| 402 | - 'info_installer_images' => 'Vi povas instali bildojn je la formatoj JPEG, GIF kaj PNG.', |
|
| 403 | - 'info_installer_images_dossier' => 'Instali bildojn en la dosierujon @upload@ por povi ilin selekti ĉi tie.', |
|
| 404 | - 'info_interface_complete' => 'kompleta interfaco', |
|
| 405 | - 'info_interface_simple' => 'Simpla interfaco', |
|
| 406 | - 'info_joindre_document_article' => 'Vi povas ligi kun tiu artikolo dokumentojn tiajn, kiaj', |
|
| 407 | - 'info_joindre_document_rubrique' => 'Vi povas ligi kun tiu rubriko dokumentojn tiajn, kiaj', |
|
| 408 | - 'info_joindre_documents_article' => 'Vi povas ligi kun tiu artikolo dokumentojn tiajn, kiaj :', |
|
| 409 | - 'info_l_article' => 'la artikolo', |
|
| 410 | - 'info_la_breve' => 'la fulm-informo', |
|
| 411 | - 'info_la_rubrique' => 'la rubriko', |
|
| 412 | - 'info_langue_principale' => 'Ĉefa lingvo de la retejo', |
|
| 413 | - 'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ bilderoj', |
|
| 414 | - 'info_les_auteurs_1' => 'de @les_auteurs@', |
|
| 415 | - 'info_logo_format_interdit' => 'Nur vinjetoj je formatoj @formats@ estas permesataj.', |
|
| 416 | - 'info_logo_max_poids' => 'Vinjetoj devige pezu malpli ol @maxi@ (tiu dosiero pezas @actuel@).', |
|
| 417 | - 'info_mail_fournisseur' => '[email protected]', |
|
| 418 | - 'info_message_2' => 'MESAĜO', |
|
| 419 | - 'info_message_supprime' => 'FORIGITA MESAĜO', |
|
| 420 | - 'info_messages_nb' => '@nb@ mesaĝoj', |
|
| 421 | - 'info_messages_un' => '1 mesaĝo', |
|
| 422 | - 'info_mise_en_ligne' => 'Dato de ĉeretigo : ', |
|
| 423 | - 'info_modification_parametres_securite' => 'modifoj de la sekuraj parametroj', |
|
| 424 | - 'info_mois_courant' => 'En la kuranta monato :', |
|
| 425 | - 'info_mot_cle_ajoute' => 'La jena ŝlosilvorto estas ligita kun', |
|
| 426 | - 'info_multi_herit' => 'Defaŭlta lingvo', |
|
| 427 | - 'info_multi_langues_soulignees' => 'Por la <u>substrekitaj lingvoj</u>, ĉiuj tekstoj de la interfaco estas tute aŭ parte tradukitaj. Kiam vi elektas tiujn lingvojn, multaj elementoj de la publika retejo (datenoj, formularoj) estos aŭtomate tradukitaj. Por la nesubstrekitaj lingvoj, tiuj elementoj afiŝiĝos en la ĉefa lingvo de la retejo.', |
|
| 428 | - 'info_multilinguisme' => 'Multlingvismo', |
|
| 429 | - 'info_nom_non_utilisateurs_connectes' => 'Via nomo ne aperas en la listo de la ensalutintaj uzantoj.', |
|
| 430 | - 'info_nom_utilisateurs_connectes' => 'Via nomo aperas en la listo de la ensalutintaj uzantoj.', |
|
| 431 | - 'info_nombre_en_ligne' => 'Nun ensalutintaj :', |
|
| 432 | - 'info_non_resultat' => 'Neniu rezulto por "@cherche_mot@"', |
|
| 433 | - 'info_non_utilisation_messagerie' => 'Vi ne uzas la internan mesaĝilon de tiu retejo.', |
|
| 434 | - 'info_nouveau_message' => 'VI HAVAS NOVAN MESAĜON', |
|
| 435 | - 'info_nouveaux_messages' => 'VI HAVAS @total_messages@ NOVA(J)N MESAĜO(J)N', |
|
| 436 | - 'info_numero_abbreviation' => 'N° ', |
|
| 437 | - 'info_obligatoire' => 'Tiu ĉi informo estas deviga', |
|
| 438 | - 'info_pense_bete' => 'MEMORIGILO', |
|
| 439 | - 'info_petit_ecran' => 'Eta ekrano', |
|
| 440 | - 'info_petition_close' => 'Petskribo fermita', |
|
| 441 | - 'info_pixels' => 'bilderoj', |
|
| 442 | - 'info_plusieurs_mots_trouves' => 'Pluraj ŝlosilvortoj trovitaj por "@cherche_mot@" :', |
|
| 443 | - 'info_portfolio_automatique' => 'Aŭtomata dokumentujo :', |
|
| 444 | - 'info_premier_resultat' => '[@debut_limit@ unuaj rezultoj el @total@]', |
|
| 445 | - 'info_premier_resultat_sur' => '[@debut_limit@ unuaj rezultoj el @total@]', |
|
| 446 | - 'info_propose_1' => '[@nom_site_spip@] Proponas : @titre@', |
|
| 447 | - 'info_propose_2' => 'Proponita artikolo |
|
| 392 | + 'info_fini' => 'Finite !', |
|
| 393 | + 'info_format_image' => 'Bildaj formatoj uzeblaj por krei vinjetojn : @gd_formats@.', |
|
| 394 | + 'info_format_non_defini' => 'nedefinita formato', |
|
| 395 | + 'info_grand_ecran' => 'Granda ekrano', |
|
| 396 | + 'info_image_aide' => 'HELPILO', |
|
| 397 | + 'info_image_process_titre' => 'Metodo pri vinjet-farado', |
|
| 398 | + 'info_impossible_lire_page' => '<b>Eraro !</b> Ne eblas legi la paĝon <tt> <html>@test_proxy@</html> </tt> tra la prokura servilo <tt>', |
|
| 399 | + 'info_installation_systeme_publication' => 'Instalo de la publikiga sistemo...', |
|
| 400 | + 'info_installer_documents' => 'Vi povas aŭtomate instali ĉiujn dokumentojn troviĝantajn en la dosiero @upload@.', |
|
| 401 | + 'info_installer_ftp' => 'Kiel mastrumanto, vi povas instali (FTP-e) dosierojn en la dosierujon @upload@ kaj poste rekte selekti ilin ĉi tie.', |
|
| 402 | + 'info_installer_images' => 'Vi povas instali bildojn je la formatoj JPEG, GIF kaj PNG.', |
|
| 403 | + 'info_installer_images_dossier' => 'Instali bildojn en la dosierujon @upload@ por povi ilin selekti ĉi tie.', |
|
| 404 | + 'info_interface_complete' => 'kompleta interfaco', |
|
| 405 | + 'info_interface_simple' => 'Simpla interfaco', |
|
| 406 | + 'info_joindre_document_article' => 'Vi povas ligi kun tiu artikolo dokumentojn tiajn, kiaj', |
|
| 407 | + 'info_joindre_document_rubrique' => 'Vi povas ligi kun tiu rubriko dokumentojn tiajn, kiaj', |
|
| 408 | + 'info_joindre_documents_article' => 'Vi povas ligi kun tiu artikolo dokumentojn tiajn, kiaj :', |
|
| 409 | + 'info_l_article' => 'la artikolo', |
|
| 410 | + 'info_la_breve' => 'la fulm-informo', |
|
| 411 | + 'info_la_rubrique' => 'la rubriko', |
|
| 412 | + 'info_langue_principale' => 'Ĉefa lingvo de la retejo', |
|
| 413 | + 'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ bilderoj', |
|
| 414 | + 'info_les_auteurs_1' => 'de @les_auteurs@', |
|
| 415 | + 'info_logo_format_interdit' => 'Nur vinjetoj je formatoj @formats@ estas permesataj.', |
|
| 416 | + 'info_logo_max_poids' => 'Vinjetoj devige pezu malpli ol @maxi@ (tiu dosiero pezas @actuel@).', |
|
| 417 | + 'info_mail_fournisseur' => '[email protected]', |
|
| 418 | + 'info_message_2' => 'MESAĜO', |
|
| 419 | + 'info_message_supprime' => 'FORIGITA MESAĜO', |
|
| 420 | + 'info_messages_nb' => '@nb@ mesaĝoj', |
|
| 421 | + 'info_messages_un' => '1 mesaĝo', |
|
| 422 | + 'info_mise_en_ligne' => 'Dato de ĉeretigo : ', |
|
| 423 | + 'info_modification_parametres_securite' => 'modifoj de la sekuraj parametroj', |
|
| 424 | + 'info_mois_courant' => 'En la kuranta monato :', |
|
| 425 | + 'info_mot_cle_ajoute' => 'La jena ŝlosilvorto estas ligita kun', |
|
| 426 | + 'info_multi_herit' => 'Defaŭlta lingvo', |
|
| 427 | + 'info_multi_langues_soulignees' => 'Por la <u>substrekitaj lingvoj</u>, ĉiuj tekstoj de la interfaco estas tute aŭ parte tradukitaj. Kiam vi elektas tiujn lingvojn, multaj elementoj de la publika retejo (datenoj, formularoj) estos aŭtomate tradukitaj. Por la nesubstrekitaj lingvoj, tiuj elementoj afiŝiĝos en la ĉefa lingvo de la retejo.', |
|
| 428 | + 'info_multilinguisme' => 'Multlingvismo', |
|
| 429 | + 'info_nom_non_utilisateurs_connectes' => 'Via nomo ne aperas en la listo de la ensalutintaj uzantoj.', |
|
| 430 | + 'info_nom_utilisateurs_connectes' => 'Via nomo aperas en la listo de la ensalutintaj uzantoj.', |
|
| 431 | + 'info_nombre_en_ligne' => 'Nun ensalutintaj :', |
|
| 432 | + 'info_non_resultat' => 'Neniu rezulto por "@cherche_mot@"', |
|
| 433 | + 'info_non_utilisation_messagerie' => 'Vi ne uzas la internan mesaĝilon de tiu retejo.', |
|
| 434 | + 'info_nouveau_message' => 'VI HAVAS NOVAN MESAĜON', |
|
| 435 | + 'info_nouveaux_messages' => 'VI HAVAS @total_messages@ NOVA(J)N MESAĜO(J)N', |
|
| 436 | + 'info_numero_abbreviation' => 'N° ', |
|
| 437 | + 'info_obligatoire' => 'Tiu ĉi informo estas deviga', |
|
| 438 | + 'info_pense_bete' => 'MEMORIGILO', |
|
| 439 | + 'info_petit_ecran' => 'Eta ekrano', |
|
| 440 | + 'info_petition_close' => 'Petskribo fermita', |
|
| 441 | + 'info_pixels' => 'bilderoj', |
|
| 442 | + 'info_plusieurs_mots_trouves' => 'Pluraj ŝlosilvortoj trovitaj por "@cherche_mot@" :', |
|
| 443 | + 'info_portfolio_automatique' => 'Aŭtomata dokumentujo :', |
|
| 444 | + 'info_premier_resultat' => '[@debut_limit@ unuaj rezultoj el @total@]', |
|
| 445 | + 'info_premier_resultat_sur' => '[@debut_limit@ unuaj rezultoj el @total@]', |
|
| 446 | + 'info_propose_1' => '[@nom_site_spip@] Proponas : @titre@', |
|
| 447 | + 'info_propose_2' => 'Proponita artikolo |
|
| 448 | 448 | ---------------', |
| 449 | - 'info_propose_3' => 'La artikolo "@titre@" estas proponita por publikigo.', |
|
| 450 | - 'info_propose_4' => 'Vi estas petata konsulti ĝin kaj doni vian opinion', |
|
| 451 | - 'info_propose_5' => 'en la forumo ligita al ĝi. Ĝi estas disponebla el la adreso :', |
|
| 452 | - 'info_publie_01' => 'La artikolo "@titre@" estis validigita de @connect_nom@.', |
|
| 453 | - 'info_publie_1' => '[@nom_site_spip@] PUBLIKIGAS : @titre@', |
|
| 454 | - 'info_publie_2' => 'Artikolo publikigita |
|
| 449 | + 'info_propose_3' => 'La artikolo "@titre@" estas proponita por publikigo.', |
|
| 450 | + 'info_propose_4' => 'Vi estas petata konsulti ĝin kaj doni vian opinion', |
|
| 451 | + 'info_propose_5' => 'en la forumo ligita al ĝi. Ĝi estas disponebla el la adreso :', |
|
| 452 | + 'info_publie_01' => 'La artikolo "@titre@" estis validigita de @connect_nom@.', |
|
| 453 | + 'info_publie_1' => '[@nom_site_spip@] PUBLIKIGAS : @titre@', |
|
| 454 | + 'info_publie_2' => 'Artikolo publikigita |
|
| 455 | 455 | --------------', |
| 456 | - 'info_rechercher' => 'Serĉi', |
|
| 457 | - 'info_rechercher_02' => 'Serĉi :', |
|
| 458 | - 'info_remplacer_vignette' => 'Anstataŭi la defaŭltan vinjeton per propra vinjeto :', |
|
| 459 | - 'info_rubriques_nb' => '@nb@ rubrikoj', |
|
| 460 | - 'info_rubriques_un' => '1 rubriko', |
|
| 461 | - 'info_sans_titre_2' => 'sen titolo', |
|
| 462 | - 'info_selectionner_fichier' => 'Vi povas selekti dosieron el la dosierujo @upload@', |
|
| 463 | - 'info_selectionner_fichier_2' => 'Elektu dosieron :', |
|
| 464 | - 'info_sites_nb' => '@nb@ retejoj', |
|
| 465 | - 'info_sites_un' => '1 retejo', |
|
| 466 | - 'info_supprimer_vignette' => 'forigi la vinjeton', |
|
| 467 | - 'info_symbole_bleu' => 'La <b>blua</b> simbolo indikas <b>memorigilon</b> : tio estas al vi persone adresata memoriga mesaĝo.', |
|
| 468 | - 'info_symbole_jaune' => 'La <b>flava</b> simbolo indikas <b>anoncon al ĉiuj redaktantoj</b> : modifebla de ĉiuj mastrumantoj, kaj videbla de ĉiuj redaktantoj.', |
|
| 469 | - 'info_symbole_vert' => 'La <b>verda</b> simbolo indikas la <b>mesaĝojn interŝanĝitajn kun aliaj uzantoj</b> de la retejo.', |
|
| 470 | - 'info_telecharger_nouveau_logo' => 'Alŝuti novan vinjeton :', |
|
| 471 | - 'info_telecharger_ordinateur' => 'Alŝuti ekde via komputilo :', |
|
| 472 | - 'info_tous_resultats_enregistres' => '[ĉiuj rezultoj estas registritaj]', |
|
| 473 | - 'info_tout_afficher' => 'Ĉion afiŝi', |
|
| 474 | - 'info_travaux_texte' => 'Tiu retejo ne jam estas konfigurita. Bonvolu reveni poste...', |
|
| 475 | - 'info_travaux_titre' => 'Retejo prilaborata ', |
|
| 476 | - 'info_trop_resultat' => 'Tro da rezultoj por "@cherche_mot@" ; bonvolu fajnigi la serĉokriteriojn.', |
|
| 477 | - 'info_utilisation_messagerie_interne' => 'Vi uzas la internan poŝton de tiu ĉi retejo.', |
|
| 478 | - 'info_valider_lien' => 'validigi tiun ĉi ligilon', |
|
| 479 | - 'info_verifier_image' => ', bonvolu kontroli ĉu viaj bildoj estas trafe transigitaj.', |
|
| 480 | - 'info_vignette_defaut' => 'Defaŭlta vinjeto', |
|
| 481 | - 'info_vignette_personnalisee' => 'Persona vinjeto', |
|
| 482 | - 'info_visite' => 'vizito :', |
|
| 483 | - 'info_vos_rendez_vous' => 'Viaj estontaj rendevuoj', |
|
| 484 | - 'infos_vos_pense_bete' => 'Viaj memorigiloj', |
|
| 456 | + 'info_rechercher' => 'Serĉi', |
|
| 457 | + 'info_rechercher_02' => 'Serĉi :', |
|
| 458 | + 'info_remplacer_vignette' => 'Anstataŭi la defaŭltan vinjeton per propra vinjeto :', |
|
| 459 | + 'info_rubriques_nb' => '@nb@ rubrikoj', |
|
| 460 | + 'info_rubriques_un' => '1 rubriko', |
|
| 461 | + 'info_sans_titre_2' => 'sen titolo', |
|
| 462 | + 'info_selectionner_fichier' => 'Vi povas selekti dosieron el la dosierujo @upload@', |
|
| 463 | + 'info_selectionner_fichier_2' => 'Elektu dosieron :', |
|
| 464 | + 'info_sites_nb' => '@nb@ retejoj', |
|
| 465 | + 'info_sites_un' => '1 retejo', |
|
| 466 | + 'info_supprimer_vignette' => 'forigi la vinjeton', |
|
| 467 | + 'info_symbole_bleu' => 'La <b>blua</b> simbolo indikas <b>memorigilon</b> : tio estas al vi persone adresata memoriga mesaĝo.', |
|
| 468 | + 'info_symbole_jaune' => 'La <b>flava</b> simbolo indikas <b>anoncon al ĉiuj redaktantoj</b> : modifebla de ĉiuj mastrumantoj, kaj videbla de ĉiuj redaktantoj.', |
|
| 469 | + 'info_symbole_vert' => 'La <b>verda</b> simbolo indikas la <b>mesaĝojn interŝanĝitajn kun aliaj uzantoj</b> de la retejo.', |
|
| 470 | + 'info_telecharger_nouveau_logo' => 'Alŝuti novan vinjeton :', |
|
| 471 | + 'info_telecharger_ordinateur' => 'Alŝuti ekde via komputilo :', |
|
| 472 | + 'info_tous_resultats_enregistres' => '[ĉiuj rezultoj estas registritaj]', |
|
| 473 | + 'info_tout_afficher' => 'Ĉion afiŝi', |
|
| 474 | + 'info_travaux_texte' => 'Tiu retejo ne jam estas konfigurita. Bonvolu reveni poste...', |
|
| 475 | + 'info_travaux_titre' => 'Retejo prilaborata ', |
|
| 476 | + 'info_trop_resultat' => 'Tro da rezultoj por "@cherche_mot@" ; bonvolu fajnigi la serĉokriteriojn.', |
|
| 477 | + 'info_utilisation_messagerie_interne' => 'Vi uzas la internan poŝton de tiu ĉi retejo.', |
|
| 478 | + 'info_valider_lien' => 'validigi tiun ĉi ligilon', |
|
| 479 | + 'info_verifier_image' => ', bonvolu kontroli ĉu viaj bildoj estas trafe transigitaj.', |
|
| 480 | + 'info_vignette_defaut' => 'Defaŭlta vinjeto', |
|
| 481 | + 'info_vignette_personnalisee' => 'Persona vinjeto', |
|
| 482 | + 'info_visite' => 'vizito :', |
|
| 483 | + 'info_vos_rendez_vous' => 'Viaj estontaj rendevuoj', |
|
| 484 | + 'infos_vos_pense_bete' => 'Viaj memorigiloj', |
|
| 485 | 485 | |
| 486 | - // L |
|
| 487 | - 'label_ajout_id_rapide' => 'Rapida aldono', |
|
| 488 | - 'label_poids_fichier' => 'Grandeco', |
|
| 489 | - 'lien_afficher_icones_seuls' => 'Afiŝi nur la piktogramojn', |
|
| 490 | - 'lien_afficher_texte_icones' => 'Afiŝi la piktogramojn kaj la tekston', |
|
| 491 | - 'lien_afficher_texte_seul' => 'Afiŝi nur la tekston', |
|
| 492 | - 'lien_liberer' => 'liberigi', |
|
| 493 | - 'lien_liberer_tous' => 'Liberigi ĉiujn', |
|
| 494 | - 'lien_nouvea_pense_bete' => 'NOVA MEMORIGILO', |
|
| 495 | - 'lien_nouveau_message' => 'NOVA MESAĜO', |
|
| 496 | - 'lien_nouvelle_annonce' => 'NOVA ANONCO', |
|
| 497 | - 'lien_petitions' => 'PETSKRIBO', |
|
| 498 | - 'lien_popularite' => 'populareco : @popularite@%', |
|
| 499 | - 'lien_racine_site' => 'RADIKO DE LA RETEJO', |
|
| 500 | - 'lien_reessayer' => 'reprovi', |
|
| 501 | - 'lien_repondre_message' => 'Respondi al tiu mesaĝo', |
|
| 502 | - 'lien_supprimer' => 'forigi', |
|
| 503 | - 'lien_tout_afficher' => 'Afiŝi ĉion', |
|
| 504 | - 'lien_visite_site' => 'viziti tiun retejon', |
|
| 505 | - 'lien_visites' => '@visites@ vizitoj', |
|
| 506 | - 'lien_voir_auteur' => 'Vidi tiun aŭtoron', |
|
| 507 | - 'ligne' => 'Linio', |
|
| 508 | - 'login' => 'Ensaluti', |
|
| 509 | - 'login_acces_prive' => 'aliro al la privata spaco', |
|
| 510 | - 'login_autre_identifiant' => 'ensaluti per alia salutnomo', |
|
| 511 | - 'login_cookie_accepte' => 'Bonvolu agordi vian retumilon por ke ĝi akceptu ilin (almenaŭ por tiu ĉi retejo).', |
|
| 512 | - 'login_cookie_oblige' => 'Por sekure ensalutiĝi en tiu retejo, vi devas akcepti la kuketojn.', |
|
| 513 | - 'login_deconnexion_ok' => 'Elsalutinta.', |
|
| 514 | - 'login_erreur_pass' => 'Pasvort-eraro.', |
|
| 515 | - 'login_espace_prive' => 'privata spaco', |
|
| 516 | - 'login_identifiant_inconnu' => 'La salutnomo « @login@ » estas nekonata.', |
|
| 517 | - 'login_login' => 'Salutnomo :', |
|
| 518 | - 'login_login2' => 'Salutnomo aŭ retpoŝtadreso :', |
|
| 519 | - 'login_login_pass_incorrect' => '(Salutnomo aŭ pasvorto ne valida.)', |
|
| 520 | - 'login_motpasseoublie' => 'ĉu pasvorto forgesita ?', |
|
| 521 | - 'login_non_securise' => 'Atentu, tiu formularo ne estas sekurigita ;. |
|
| 486 | + // L |
|
| 487 | + 'label_ajout_id_rapide' => 'Rapida aldono', |
|
| 488 | + 'label_poids_fichier' => 'Grandeco', |
|
| 489 | + 'lien_afficher_icones_seuls' => 'Afiŝi nur la piktogramojn', |
|
| 490 | + 'lien_afficher_texte_icones' => 'Afiŝi la piktogramojn kaj la tekston', |
|
| 491 | + 'lien_afficher_texte_seul' => 'Afiŝi nur la tekston', |
|
| 492 | + 'lien_liberer' => 'liberigi', |
|
| 493 | + 'lien_liberer_tous' => 'Liberigi ĉiujn', |
|
| 494 | + 'lien_nouvea_pense_bete' => 'NOVA MEMORIGILO', |
|
| 495 | + 'lien_nouveau_message' => 'NOVA MESAĜO', |
|
| 496 | + 'lien_nouvelle_annonce' => 'NOVA ANONCO', |
|
| 497 | + 'lien_petitions' => 'PETSKRIBO', |
|
| 498 | + 'lien_popularite' => 'populareco : @popularite@%', |
|
| 499 | + 'lien_racine_site' => 'RADIKO DE LA RETEJO', |
|
| 500 | + 'lien_reessayer' => 'reprovi', |
|
| 501 | + 'lien_repondre_message' => 'Respondi al tiu mesaĝo', |
|
| 502 | + 'lien_supprimer' => 'forigi', |
|
| 503 | + 'lien_tout_afficher' => 'Afiŝi ĉion', |
|
| 504 | + 'lien_visite_site' => 'viziti tiun retejon', |
|
| 505 | + 'lien_visites' => '@visites@ vizitoj', |
|
| 506 | + 'lien_voir_auteur' => 'Vidi tiun aŭtoron', |
|
| 507 | + 'ligne' => 'Linio', |
|
| 508 | + 'login' => 'Ensaluti', |
|
| 509 | + 'login_acces_prive' => 'aliro al la privata spaco', |
|
| 510 | + 'login_autre_identifiant' => 'ensaluti per alia salutnomo', |
|
| 511 | + 'login_cookie_accepte' => 'Bonvolu agordi vian retumilon por ke ĝi akceptu ilin (almenaŭ por tiu ĉi retejo).', |
|
| 512 | + 'login_cookie_oblige' => 'Por sekure ensalutiĝi en tiu retejo, vi devas akcepti la kuketojn.', |
|
| 513 | + 'login_deconnexion_ok' => 'Elsalutinta.', |
|
| 514 | + 'login_erreur_pass' => 'Pasvort-eraro.', |
|
| 515 | + 'login_espace_prive' => 'privata spaco', |
|
| 516 | + 'login_identifiant_inconnu' => 'La salutnomo « @login@ » estas nekonata.', |
|
| 517 | + 'login_login' => 'Salutnomo :', |
|
| 518 | + 'login_login2' => 'Salutnomo aŭ retpoŝtadreso :', |
|
| 519 | + 'login_login_pass_incorrect' => '(Salutnomo aŭ pasvorto ne valida.)', |
|
| 520 | + 'login_motpasseoublie' => 'ĉu pasvorto forgesita ?', |
|
| 521 | + 'login_non_securise' => 'Atentu, tiu formularo ne estas sekurigita ;. |
|
| 522 | 522 | Se vi ne volas ke via pasvorto estu fraŭde |
| 523 | 523 | interkaptita ĉe la reto, bonvolu aktivigi |
| 524 | 524 | Javascript-on en via retumilo', |
| 525 | - 'login_nouvelle_tentative' => 'Nova provo', |
|
| 526 | - 'login_par_ici' => 'Vi estas registrita... ĉi tien...', |
|
| 527 | - 'login_pass2' => 'Pasvorto :', |
|
| 528 | - 'login_preferez_refuser' => '<b>Se vi preferas rifuzi kuketojn</b>, alia konektometodo (malpli sekura) estas je via dispono :', |
|
| 529 | - 'login_recharger' => 'freŝigi tiun ĉi paĝon', |
|
| 530 | - 'login_rester_identifie' => 'Resti ensalutinta kelkajn tagojn', # MODIF |
|
| 531 | - 'login_retour_public' => 'Reen al la publika spaco', |
|
| 532 | - 'login_retour_site' => 'Reen al la publika spaco', |
|
| 533 | - 'login_retoursitepublic' => 'reen al la publika spaco', |
|
| 534 | - 'login_sans_cookie' => 'Ensaluto sen kuketo', |
|
| 535 | - 'login_securise' => 'Sekura salutnomo', |
|
| 536 | - 'login_sinscrire' => 'registriĝi', # MODIF |
|
| 537 | - 'login_test_navigateur' => 'testo retumilo/rekonektiĝo', |
|
| 538 | - 'login_verifiez_navigateur' => '(Kontrolu tamen ke via retumilo ne memoras pri via pasvorto...)', |
|
| 525 | + 'login_nouvelle_tentative' => 'Nova provo', |
|
| 526 | + 'login_par_ici' => 'Vi estas registrita... ĉi tien...', |
|
| 527 | + 'login_pass2' => 'Pasvorto :', |
|
| 528 | + 'login_preferez_refuser' => '<b>Se vi preferas rifuzi kuketojn</b>, alia konektometodo (malpli sekura) estas je via dispono :', |
|
| 529 | + 'login_recharger' => 'freŝigi tiun ĉi paĝon', |
|
| 530 | + 'login_rester_identifie' => 'Resti ensalutinta kelkajn tagojn', # MODIF |
|
| 531 | + 'login_retour_public' => 'Reen al la publika spaco', |
|
| 532 | + 'login_retour_site' => 'Reen al la publika spaco', |
|
| 533 | + 'login_retoursitepublic' => 'reen al la publika spaco', |
|
| 534 | + 'login_sans_cookie' => 'Ensaluto sen kuketo', |
|
| 535 | + 'login_securise' => 'Sekura salutnomo', |
|
| 536 | + 'login_sinscrire' => 'registriĝi', # MODIF |
|
| 537 | + 'login_test_navigateur' => 'testo retumilo/rekonektiĝo', |
|
| 538 | + 'login_verifiez_navigateur' => '(Kontrolu tamen ke via retumilo ne memoras pri via pasvorto...)', |
|
| 539 | 539 | |
| 540 | - // M |
|
| 541 | - 'masquer_colonne' => 'Kaŝi tiun ĉi kolumnon', |
|
| 542 | - 'masquer_trad' => 'kaŝi la tradukojn', |
|
| 543 | - 'message_nouveaux_identifiants_echec' => 'Ne eblas krei novajn ensalutilojn.', |
|
| 544 | - 'message_nouveaux_identifiants_echec_envoi' => 'Ne eblis sendi la novajn ensalutilojn.', |
|
| 545 | - 'message_nouveaux_identifiants_ok' => 'La novaj ensalutilojn estis senditaj al @email@.', |
|
| 546 | - 'module_fichiers_langues' => 'Dosieroj de lingvo', |
|
| 540 | + // M |
|
| 541 | + 'masquer_colonne' => 'Kaŝi tiun ĉi kolumnon', |
|
| 542 | + 'masquer_trad' => 'kaŝi la tradukojn', |
|
| 543 | + 'message_nouveaux_identifiants_echec' => 'Ne eblas krei novajn ensalutilojn.', |
|
| 544 | + 'message_nouveaux_identifiants_echec_envoi' => 'Ne eblis sendi la novajn ensalutilojn.', |
|
| 545 | + 'message_nouveaux_identifiants_ok' => 'La novaj ensalutilojn estis senditaj al @email@.', |
|
| 546 | + 'module_fichiers_langues' => 'Dosieroj de lingvo', |
|
| 547 | 547 | |
| 548 | - // N |
|
| 549 | - 'navigateur_pas_redirige' => 'Se via retumilo ne redirektiĝas, daŭrigu musklakante ĉi tie.', |
|
| 550 | - 'numero' => 'Numero', |
|
| 548 | + // N |
|
| 549 | + 'navigateur_pas_redirige' => 'Se via retumilo ne redirektiĝas, daŭrigu musklakante ĉi tie.', |
|
| 550 | + 'numero' => 'Numero', |
|
| 551 | 551 | |
| 552 | - // O |
|
| 553 | - 'occurence' => 'Trafo', |
|
| 554 | - 'onglet_affacer_base' => 'Forigi la datenbazon', |
|
| 555 | - 'onglet_auteur' => 'La aŭtoro', |
|
| 556 | - 'onglet_contenu_site' => 'Enhavo de la retejo', |
|
| 557 | - 'onglet_evolution_visite_mod' => 'Evoluado', |
|
| 558 | - 'onglet_fonctions_avances' => 'Ampleksaj funkcioj', |
|
| 559 | - 'onglet_informations_personnelles' => 'Personaj datenoj', |
|
| 560 | - 'onglet_interactivite' => 'Interagado', |
|
| 561 | - 'onglet_messagerie' => 'Mesaĝilo', |
|
| 562 | - 'onglet_repartition_rubrique' => 'Distribuo laŭ rubrikoj', |
|
| 563 | - 'onglet_save_restaur_base' => 'Savkopii/restaŭri la datenbazon', |
|
| 564 | - 'onglet_vider_cache' => 'Malplenigi la staplon', |
|
| 552 | + // O |
|
| 553 | + 'occurence' => 'Trafo', |
|
| 554 | + 'onglet_affacer_base' => 'Forigi la datenbazon', |
|
| 555 | + 'onglet_auteur' => 'La aŭtoro', |
|
| 556 | + 'onglet_contenu_site' => 'Enhavo de la retejo', |
|
| 557 | + 'onglet_evolution_visite_mod' => 'Evoluado', |
|
| 558 | + 'onglet_fonctions_avances' => 'Ampleksaj funkcioj', |
|
| 559 | + 'onglet_informations_personnelles' => 'Personaj datenoj', |
|
| 560 | + 'onglet_interactivite' => 'Interagado', |
|
| 561 | + 'onglet_messagerie' => 'Mesaĝilo', |
|
| 562 | + 'onglet_repartition_rubrique' => 'Distribuo laŭ rubrikoj', |
|
| 563 | + 'onglet_save_restaur_base' => 'Savkopii/restaŭri la datenbazon', |
|
| 564 | + 'onglet_vider_cache' => 'Malplenigi la staplon', |
|
| 565 | 565 | |
| 566 | - // P |
|
| 567 | - 'pass_choix_pass' => 'Bonvolu elekti vian novan pasvorton :', |
|
| 568 | - 'pass_erreur' => 'Eraro', |
|
| 569 | - 'pass_erreur_acces_refuse' => '<b>Eraro :</b> vi ne plu havas aliron al tiu retejo.', |
|
| 570 | - 'pass_erreur_code_inconnu' => '<b>Eraro :</b> tiu kodo kongruas kun neniu el la vizitantoj rajtantaj aliri tiun ĉi retejon.', |
|
| 571 | - 'pass_erreur_non_enregistre' => '<b>Eraro :</b> la retpoŝtadreso <tt>@email_oubli@</tt> ne estas registrita ĉi tie.', |
|
| 572 | - 'pass_erreur_non_valide' => '<b>Eraro :</b> tiu retpoŝtadreso <tt>@email_oubli@</tt> ne validas !', |
|
| 573 | - 'pass_erreur_probleme_technique' => '<b>Eraro :</b> pro teknika problemo, la retmesaĝo ne povas esti sendata.', |
|
| 574 | - 'pass_espace_prive_bla' => 'La privata spaco de tiu ĉi retejo estas malfermita al |
|
| 566 | + // P |
|
| 567 | + 'pass_choix_pass' => 'Bonvolu elekti vian novan pasvorton :', |
|
| 568 | + 'pass_erreur' => 'Eraro', |
|
| 569 | + 'pass_erreur_acces_refuse' => '<b>Eraro :</b> vi ne plu havas aliron al tiu retejo.', |
|
| 570 | + 'pass_erreur_code_inconnu' => '<b>Eraro :</b> tiu kodo kongruas kun neniu el la vizitantoj rajtantaj aliri tiun ĉi retejon.', |
|
| 571 | + 'pass_erreur_non_enregistre' => '<b>Eraro :</b> la retpoŝtadreso <tt>@email_oubli@</tt> ne estas registrita ĉi tie.', |
|
| 572 | + 'pass_erreur_non_valide' => '<b>Eraro :</b> tiu retpoŝtadreso <tt>@email_oubli@</tt> ne validas !', |
|
| 573 | + 'pass_erreur_probleme_technique' => '<b>Eraro :</b> pro teknika problemo, la retmesaĝo ne povas esti sendata.', |
|
| 574 | + 'pass_espace_prive_bla' => 'La privata spaco de tiu ĉi retejo estas malfermita al |
|
| 575 | 575 | vizitantoj, post ties registriĝo. Tio farita, vi povos |
| 576 | 576 | konsulti la redaktatajn artikolojn, proponi artikolojn |
| 577 | 577 | kaj partopreni en ĉiuj forumoj.', |
| 578 | - 'pass_forum_bla' => 'Vi petis por kontribui en forumo |
|
| 578 | + 'pass_forum_bla' => 'Vi petis por kontribui en forumo |
|
| 579 | 579 | rezervita al registritaj vizitantoj.', |
| 580 | - 'pass_indiquez_cidessous' => 'Indiku ĉi-sube la retpoŝtadreson laŭ kiu vi |
|
| 580 | + 'pass_indiquez_cidessous' => 'Indiku ĉi-sube la retpoŝtadreson laŭ kiu vi |
|
| 581 | 581 | antaŭe registriĝis. Vi |
| 582 | 582 | ricevos retmesaĝon kiu indikos al vi kion fari por |
| 583 | 583 | reakiri vian alir-rajton.', |
| 584 | - 'pass_mail_passcookie' => '(tio ĉi estas aŭtomata mesaĝo) |
|
| 584 | + 'pass_mail_passcookie' => '(tio ĉi estas aŭtomata mesaĝo) |
|
| 585 | 585 | Por reakiri alireblon al la retejo |
| 586 | 586 | @nom_site_spip@ (@adresse_site@) |
| 587 | 587 | |
@@ -593,145 +593,145 @@ discard block |
||
| 593 | 593 | kaj ensaluti. |
| 594 | 594 | |
| 595 | 595 | ', |
| 596 | - 'pass_mot_oublie' => 'Pasvorto forgesita', |
|
| 597 | - 'pass_nouveau_enregistre' => 'Via nova pasvorto estas registrita.', |
|
| 598 | - 'pass_nouveau_pass' => 'Nova pasvorto', |
|
| 599 | - 'pass_ok' => 'JES', |
|
| 600 | - 'pass_oubli_mot' => 'Pasvorto-forgeso', |
|
| 601 | - 'pass_procedure_changer' => 'Por ŝanĝi vian pasvorton, specifu al ni la asociitan retpoŝtadreson el via konto.', |
|
| 602 | - 'pass_quitter_fenetre' => 'Forlasi tiun fenestron', |
|
| 603 | - 'pass_rappel_login' => 'Memoru : via ensalutilo (salutnomo) estas « @login@ ».', |
|
| 604 | - 'pass_recevoir_mail' => 'Vi ricevos retmesaĝon indikantan al vi kiel retrovi vian aliron al la retejo.', # MODIF |
|
| 605 | - 'pass_retour_public' => 'Reen al la publika spaco', |
|
| 606 | - 'pass_rien_a_faire_ici' => 'Nenion por fari ĉi tie.', |
|
| 607 | - 'pass_vousinscrire' => 'Registriĝi ĉe tiu retejo', |
|
| 608 | - 'precedent' => 'antaŭan', |
|
| 609 | - 'previsualisation' => 'Antaŭrigardo', |
|
| 610 | - 'previsualiser' => 'Antaŭrigardi', |
|
| 596 | + 'pass_mot_oublie' => 'Pasvorto forgesita', |
|
| 597 | + 'pass_nouveau_enregistre' => 'Via nova pasvorto estas registrita.', |
|
| 598 | + 'pass_nouveau_pass' => 'Nova pasvorto', |
|
| 599 | + 'pass_ok' => 'JES', |
|
| 600 | + 'pass_oubli_mot' => 'Pasvorto-forgeso', |
|
| 601 | + 'pass_procedure_changer' => 'Por ŝanĝi vian pasvorton, specifu al ni la asociitan retpoŝtadreson el via konto.', |
|
| 602 | + 'pass_quitter_fenetre' => 'Forlasi tiun fenestron', |
|
| 603 | + 'pass_rappel_login' => 'Memoru : via ensalutilo (salutnomo) estas « @login@ ».', |
|
| 604 | + 'pass_recevoir_mail' => 'Vi ricevos retmesaĝon indikantan al vi kiel retrovi vian aliron al la retejo.', # MODIF |
|
| 605 | + 'pass_retour_public' => 'Reen al la publika spaco', |
|
| 606 | + 'pass_rien_a_faire_ici' => 'Nenion por fari ĉi tie.', |
|
| 607 | + 'pass_vousinscrire' => 'Registriĝi ĉe tiu retejo', |
|
| 608 | + 'precedent' => 'antaŭan', |
|
| 609 | + 'previsualisation' => 'Antaŭrigardo', |
|
| 610 | + 'previsualiser' => 'Antaŭrigardi', |
|
| 611 | 611 | |
| 612 | - // R |
|
| 613 | - 'retour' => 'Reen', |
|
| 612 | + // R |
|
| 613 | + 'retour' => 'Reen', |
|
| 614 | 614 | |
| 615 | - // S |
|
| 616 | - 'spip_conforme_dtd' => 'SPIP konsideras tiun dokumenton konforma al sia DOCTYPE :', |
|
| 617 | - 'squelette' => 'skeleto', |
|
| 618 | - 'squelette_inclus_ligne' => 'skeleto inkluzivita, linio', |
|
| 619 | - 'squelette_ligne' => 'skeleto, linio', |
|
| 620 | - 'stats_visites_et_popularite' => '@visites@ vizitoj ; populareco : @popularite@', |
|
| 621 | - 'suivant' => 'sekvanta', |
|
| 615 | + // S |
|
| 616 | + 'spip_conforme_dtd' => 'SPIP konsideras tiun dokumenton konforma al sia DOCTYPE :', |
|
| 617 | + 'squelette' => 'skeleto', |
|
| 618 | + 'squelette_inclus_ligne' => 'skeleto inkluzivita, linio', |
|
| 619 | + 'squelette_ligne' => 'skeleto, linio', |
|
| 620 | + 'stats_visites_et_popularite' => '@visites@ vizitoj ; populareco : @popularite@', |
|
| 621 | + 'suivant' => 'sekvanta', |
|
| 622 | 622 | |
| 623 | - // T |
|
| 624 | - 'taille_go' => '@taille@ Go', |
|
| 625 | - 'taille_ko' => '@taille@ kb', |
|
| 626 | - 'taille_mo' => '@taille@ Mb', |
|
| 627 | - 'taille_octets' => '@taille@ bitokoj', |
|
| 628 | - 'taille_octets_bi' => '@taille@ bitokoj', |
|
| 629 | - 'texte_actualite_site_1' => 'Kiam vi estos kutimiĝinta kun la interfaco, vi povos musklaki sur « ', |
|
| 630 | - 'texte_actualite_site_2' => 'kompleta interfaco', |
|
| 631 | - 'texte_actualite_site_3' => ' » por malfermi pliajn eblecojn.', |
|
| 632 | - 'texte_creation_automatique_vignette' => 'La aŭtomata kreado de antaŭrigardaj vinjetoj estas aktivigita ĉe tiu ĉi retejo. Se vi instalas pere de tiu ĉi formularo bildojn je la formato(j) @gd_formats@, ili estos akompanataj de vinjeto kun maksimuma grandeco de @taille_preview@ bilderoj.', |
|
| 633 | - 'texte_documents_associes' => 'La sekvantaj dokumentoj estas asociitaj al la artikolo, |
|
| 623 | + // T |
|
| 624 | + 'taille_go' => '@taille@ Go', |
|
| 625 | + 'taille_ko' => '@taille@ kb', |
|
| 626 | + 'taille_mo' => '@taille@ Mb', |
|
| 627 | + 'taille_octets' => '@taille@ bitokoj', |
|
| 628 | + 'taille_octets_bi' => '@taille@ bitokoj', |
|
| 629 | + 'texte_actualite_site_1' => 'Kiam vi estos kutimiĝinta kun la interfaco, vi povos musklaki sur « ', |
|
| 630 | + 'texte_actualite_site_2' => 'kompleta interfaco', |
|
| 631 | + 'texte_actualite_site_3' => ' » por malfermi pliajn eblecojn.', |
|
| 632 | + 'texte_creation_automatique_vignette' => 'La aŭtomata kreado de antaŭrigardaj vinjetoj estas aktivigita ĉe tiu ĉi retejo. Se vi instalas pere de tiu ĉi formularo bildojn je la formato(j) @gd_formats@, ili estos akompanataj de vinjeto kun maksimuma grandeco de @taille_preview@ bilderoj.', |
|
| 633 | + 'texte_documents_associes' => 'La sekvantaj dokumentoj estas asociitaj al la artikolo, |
|
| 634 | 634 | sed ili ne estis rekte enmetitaj en ĝin. |
| 635 | 635 | Laŭ la enpaĝigo de la publika spaco, |
| 636 | 636 | ili povos aperi en formo de alkroĉitaj dokumentoj.', |
| 637 | - 'texte_erreur_mise_niveau_base' => 'Datenbazo-eraro dum la alniveligo. |
|
| 637 | + 'texte_erreur_mise_niveau_base' => 'Datenbazo-eraro dum la alniveligo. |
|
| 638 | 638 | La bildo <b>@fichier@</b> ne transŝutiĝis (artikolo @id_article@). |
| 639 | 639 | Bone notu tiun referencon, reprovu la alniveligon, |
| 640 | 640 | kaj fine kontrolu ke la bildoj plu aperu |
| 641 | 641 | en la artikoloj.', |
| 642 | - 'texte_erreur_visiteur' => 'Vi provis eniri la privatan spacon pere de ne alir-rajtiga salutnomo.', |
|
| 643 | - 'texte_inc_auth_1' => 'Vi ensalutis laŭ la |
|
| 642 | + 'texte_erreur_visiteur' => 'Vi provis eniri la privatan spacon pere de ne alir-rajtiga salutnomo.', |
|
| 643 | + 'texte_inc_auth_1' => 'Vi ensalutis laŭ la |
|
| 644 | 644 | salutnomo <b>@auth_login@</b>, sed tiu ne/ne plu ekzistas en la datenbazo. |
| 645 | 645 | Provu', |
| 646 | - 'texte_inc_auth_2' => 'rekonektiĝi', |
|
| 647 | - 'texte_inc_auth_3' => ', post esti eventuale ferminta kaj |
|
| 646 | + 'texte_inc_auth_2' => 'rekonektiĝi', |
|
| 647 | + 'texte_inc_auth_3' => ', post esti eventuale ferminta kaj |
|
| 648 | 648 | restartiginta via retumilon.', |
| 649 | - 'texte_inc_config' => 'La ŝanĝoj faritaj en tiuj ĉi paĝoj influas grave la |
|
| 649 | + 'texte_inc_config' => 'La ŝanĝoj faritaj en tiuj ĉi paĝoj influas grave la |
|
| 650 | 650 | funkciadon de via retejo. Ni konsilas al vi ne plu interveni antaŭ ol esti pli |
| 651 | 651 | kutimiĝinta pri la funkciado de la SPIP-sistemo. <br /><br /><b>Pli |
| 652 | 652 | ĝenerale, estas tre konsilinde lasi la mastrumadon de tiuj ĉi paĝoj |
| 653 | 653 | sub la respondeco de la ĉefa retejestro .</b>', |
| 654 | - 'texte_inc_meta_1' => 'La sistemo detektis eraron dum skribado de la dosiero <code>@fichier@</code>. Bonvolu, kiel mastrumanto de la retejo,', |
|
| 655 | - 'texte_inc_meta_2' => 'kontroli la skriborajtojn', |
|
| 656 | - 'texte_inc_meta_3' => 'en la dosierujo <code>@repertoire@</code>.', |
|
| 657 | - 'texte_statut_en_cours_redaction' => 'Redaktataj', |
|
| 658 | - 'texte_statut_poubelle' => 'en rubujo', |
|
| 659 | - 'texte_statut_propose_evaluation' => 'proponita por taksado', |
|
| 660 | - 'texte_statut_publie' => 'rete publikigita', |
|
| 661 | - 'texte_statut_refuse' => 'rifuzita', |
|
| 662 | - 'titre_ajouter_mot_cle' => 'ALDONI ŜLOSILVORTON :', |
|
| 663 | - 'titre_cadre_raccourcis' => 'RAPIDAJ ALIROJ :', |
|
| 664 | - 'titre_changer_couleur_interface' => 'Ŝanĝi la koloron de la interfaco', |
|
| 665 | - 'titre_image_admin_article' => 'Vi povas mastrumi tiun ĉi artikolon', |
|
| 666 | - 'titre_image_administrateur' => 'Mastrumanto', |
|
| 667 | - 'titre_image_aide' => 'Helpo pri tiu elemento', |
|
| 668 | - 'titre_image_auteur_supprime' => 'Aŭtoro forigita', |
|
| 669 | - 'titre_image_redacteur' => 'Redaktanto sen alireblo', |
|
| 670 | - 'titre_image_redacteur_02' => 'Redaktanto', |
|
| 671 | - 'titre_image_selecteur' => 'Montri la liston', |
|
| 672 | - 'titre_image_visiteur' => 'Vizitanto', |
|
| 673 | - 'titre_joindre_document' => 'ALDONI DOKUMENTON', |
|
| 674 | - 'titre_mots_cles' => 'ŜLOSILVORTOJ', |
|
| 675 | - 'titre_probleme_technique' => 'Atentu : teknika problemo (SQL-servilo) malhelpas la aliron al tiu parto de la retejo. Dankon pro via komprenemo.', |
|
| 676 | - 'titre_publier_document' => 'PUBLIKIGI DOKUMENTON EN TIU ĈI RUBRIKO', |
|
| 677 | - 'titre_signatures_attente' => 'Subskriboj validotaj', |
|
| 678 | - 'titre_signatures_confirmees' => 'Subskriboj konfirmitaj', |
|
| 679 | - 'titre_statistiques' => 'Statistikoj de la retejo', |
|
| 680 | - 'titre_titre_document' => 'Titolo de la dokumento :', |
|
| 681 | - 'todo' => 'venonta', |
|
| 682 | - 'trad_definir_reference' => 'Elekti „@titre@“ kiel referenco de la tradukoj', |
|
| 683 | - 'trad_reference' => '(referenco de la traduktoj)', |
|
| 654 | + 'texte_inc_meta_1' => 'La sistemo detektis eraron dum skribado de la dosiero <code>@fichier@</code>. Bonvolu, kiel mastrumanto de la retejo,', |
|
| 655 | + 'texte_inc_meta_2' => 'kontroli la skriborajtojn', |
|
| 656 | + 'texte_inc_meta_3' => 'en la dosierujo <code>@repertoire@</code>.', |
|
| 657 | + 'texte_statut_en_cours_redaction' => 'Redaktataj', |
|
| 658 | + 'texte_statut_poubelle' => 'en rubujo', |
|
| 659 | + 'texte_statut_propose_evaluation' => 'proponita por taksado', |
|
| 660 | + 'texte_statut_publie' => 'rete publikigita', |
|
| 661 | + 'texte_statut_refuse' => 'rifuzita', |
|
| 662 | + 'titre_ajouter_mot_cle' => 'ALDONI ŜLOSILVORTON :', |
|
| 663 | + 'titre_cadre_raccourcis' => 'RAPIDAJ ALIROJ :', |
|
| 664 | + 'titre_changer_couleur_interface' => 'Ŝanĝi la koloron de la interfaco', |
|
| 665 | + 'titre_image_admin_article' => 'Vi povas mastrumi tiun ĉi artikolon', |
|
| 666 | + 'titre_image_administrateur' => 'Mastrumanto', |
|
| 667 | + 'titre_image_aide' => 'Helpo pri tiu elemento', |
|
| 668 | + 'titre_image_auteur_supprime' => 'Aŭtoro forigita', |
|
| 669 | + 'titre_image_redacteur' => 'Redaktanto sen alireblo', |
|
| 670 | + 'titre_image_redacteur_02' => 'Redaktanto', |
|
| 671 | + 'titre_image_selecteur' => 'Montri la liston', |
|
| 672 | + 'titre_image_visiteur' => 'Vizitanto', |
|
| 673 | + 'titre_joindre_document' => 'ALDONI DOKUMENTON', |
|
| 674 | + 'titre_mots_cles' => 'ŜLOSILVORTOJ', |
|
| 675 | + 'titre_probleme_technique' => 'Atentu : teknika problemo (SQL-servilo) malhelpas la aliron al tiu parto de la retejo. Dankon pro via komprenemo.', |
|
| 676 | + 'titre_publier_document' => 'PUBLIKIGI DOKUMENTON EN TIU ĈI RUBRIKO', |
|
| 677 | + 'titre_signatures_attente' => 'Subskriboj validotaj', |
|
| 678 | + 'titre_signatures_confirmees' => 'Subskriboj konfirmitaj', |
|
| 679 | + 'titre_statistiques' => 'Statistikoj de la retejo', |
|
| 680 | + 'titre_titre_document' => 'Titolo de la dokumento :', |
|
| 681 | + 'todo' => 'venonta', |
|
| 682 | + 'trad_definir_reference' => 'Elekti „@titre@“ kiel referenco de la tradukoj', |
|
| 683 | + 'trad_reference' => '(referenco de la traduktoj)', |
|
| 684 | 684 | |
| 685 | - // U |
|
| 686 | - 'upload_limit' => 'Tiu dosiero estas tro granda por la servilo : la maksimuma dosiergrando, kiam oni alŝutas, estas @max@.', |
|
| 685 | + // U |
|
| 686 | + 'upload_limit' => 'Tiu dosiero estas tro granda por la servilo : la maksimuma dosiergrando, kiam oni alŝutas, estas @max@.', |
|
| 687 | 687 | |
| 688 | - // Z |
|
| 689 | - 'zbug_balise_b_aval' => ' : posta B marko', |
|
| 690 | - 'zbug_balise_inexistante' => 'Marko @balise@ malbone deklarita por @from@', |
|
| 691 | - 'zbug_balise_sans_argument' => 'Mankas argumento en la marko @balise@', |
|
| 692 | - 'zbug_boucle' => 'iteracio', |
|
| 693 | - 'zbug_boucle_recursive_undef' => 'Nedifinita rekursia iteracio : @nom@', |
|
| 694 | - 'zbug_calcul' => 'komputado', |
|
| 695 | - 'zbug_champ_hors_boucle' => 'Kampo @champ@ eksteras iteracion', |
|
| 696 | - 'zbug_champ_hors_motif' => 'Kampo @champ@ eksteras kontekston @motif@', |
|
| 697 | - 'zbug_code' => 'kodo', |
|
| 698 | - 'zbug_critere_inconnu' => 'Nekonata kriterio @critere@', |
|
| 699 | - 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} pri tabelo sen atoma ĉefŝlosilo', |
|
| 700 | - 'zbug_distant_interdit' => 'Ago ĉe tiu ekstera datenbazo malpermesata', |
|
| 701 | - 'zbug_doublon_table_sans_cle_primaire' => 'Duobloj uzitaj ĉe tabelo, kiu ne havas simplan ĉefŝlosilon', |
|
| 702 | - 'zbug_doublon_table_sans_index' => 'Duoblaĵoj en la datentabelo sen indekso', |
|
| 703 | - 'zbug_erreur_boucle_double' => 'Duobla difino de la interacio @id@', |
|
| 704 | - 'zbug_erreur_boucle_fermant' => 'Iteracio @id@ ne fermita', |
|
| 705 | - 'zbug_erreur_boucle_syntaxe' => 'Sintakso de la iteracia @id@ ne valida', |
|
| 706 | - 'zbug_erreur_compilation' => 'Kompil-eraro', |
|
| 707 | - 'zbug_erreur_execution_page' => 'Eraro dum plenumo', |
|
| 708 | - 'zbug_erreur_filtre' => 'Filtrilo @filtre@ nedifinita', |
|
| 709 | - 'zbug_erreur_meme_parent' => 'La kriterio {meme_parent} nur aplikiĝas je iteracioj (FORUMS) aŭ (RUBRIQUES)', |
|
| 710 | - 'zbug_erreur_squelette' => 'Eraro(j) en la skeleto', |
|
| 711 | - 'zbug_hors_compilation' => 'Ne kompilita', |
|
| 712 | - 'zbug_info_erreur_squelette' => 'Eraro ĉe la retejo', |
|
| 713 | - 'zbug_inversion_ordre_inexistant' => 'Inversigo de ne ekzistanta ordo', |
|
| 714 | - 'zbug_pagination_sans_critere' => 'Marko #PAGINATION senkriteria {pagination} aŭ uzata en rekursia iteracio', |
|
| 715 | - 'zbug_parametres_inclus_incorrects' => 'Ne korektaj inkludaj parametroj : @param@', |
|
| 716 | - 'zbug_profile' => 'Kalkuldaŭro : @time@', |
|
| 717 | - 'zbug_resultat' => 'rezulto', |
|
| 718 | - 'zbug_serveur_indefini' => 'Nedifinata SQL-servilo', |
|
| 719 | - 'zbug_statistiques' => 'statistikoj pri SQL-informpetoj ordigitaj laŭ daŭro', |
|
| 720 | - 'zbug_table_inconnue' => 'nekonata SQL « @table@ » tabelo', |
|
| 721 | - 'zxml_connus_attributs' => 'konataj atributoj', |
|
| 722 | - 'zxml_de' => 'de', |
|
| 723 | - 'zxml_inconnu_attribut' => 'nekonataj atributoj', |
|
| 724 | - 'zxml_inconnu_balise' => 'ne konita marko', |
|
| 725 | - 'zxml_inconnu_entite' => 'ne konata ento', |
|
| 726 | - 'zxml_inconnu_id' => 'ne konata ID', |
|
| 727 | - 'zxml_mais_de' => 'sed', |
|
| 728 | - 'zxml_non_conforme' => 'ne kongrua kun la motivo', |
|
| 729 | - 'zxml_non_fils' => 'ne estas filo de', |
|
| 730 | - 'zxml_nonvide_balise' => 'ne malplena marko', |
|
| 731 | - 'zxml_obligatoire_attribut' => 'deviga atributo sed foresta en', |
|
| 732 | - 'zxml_succession_fils_incorrecte' => 'sinsekvo de filoj korekta', |
|
| 733 | - 'zxml_survoler' => 'superflugi por ekvidi korektaĵojn', |
|
| 734 | - 'zxml_valeur_attribut' => 'atributa valoro', |
|
| 735 | - 'zxml_vide_balise' => 'malplena marko', |
|
| 736 | - 'zxml_vu' => 'antaŭe vidita' |
|
| 688 | + // Z |
|
| 689 | + 'zbug_balise_b_aval' => ' : posta B marko', |
|
| 690 | + 'zbug_balise_inexistante' => 'Marko @balise@ malbone deklarita por @from@', |
|
| 691 | + 'zbug_balise_sans_argument' => 'Mankas argumento en la marko @balise@', |
|
| 692 | + 'zbug_boucle' => 'iteracio', |
|
| 693 | + 'zbug_boucle_recursive_undef' => 'Nedifinita rekursia iteracio : @nom@', |
|
| 694 | + 'zbug_calcul' => 'komputado', |
|
| 695 | + 'zbug_champ_hors_boucle' => 'Kampo @champ@ eksteras iteracion', |
|
| 696 | + 'zbug_champ_hors_motif' => 'Kampo @champ@ eksteras kontekston @motif@', |
|
| 697 | + 'zbug_code' => 'kodo', |
|
| 698 | + 'zbug_critere_inconnu' => 'Nekonata kriterio @critere@', |
|
| 699 | + 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} pri tabelo sen atoma ĉefŝlosilo', |
|
| 700 | + 'zbug_distant_interdit' => 'Ago ĉe tiu ekstera datenbazo malpermesata', |
|
| 701 | + 'zbug_doublon_table_sans_cle_primaire' => 'Duobloj uzitaj ĉe tabelo, kiu ne havas simplan ĉefŝlosilon', |
|
| 702 | + 'zbug_doublon_table_sans_index' => 'Duoblaĵoj en la datentabelo sen indekso', |
|
| 703 | + 'zbug_erreur_boucle_double' => 'Duobla difino de la interacio @id@', |
|
| 704 | + 'zbug_erreur_boucle_fermant' => 'Iteracio @id@ ne fermita', |
|
| 705 | + 'zbug_erreur_boucle_syntaxe' => 'Sintakso de la iteracia @id@ ne valida', |
|
| 706 | + 'zbug_erreur_compilation' => 'Kompil-eraro', |
|
| 707 | + 'zbug_erreur_execution_page' => 'Eraro dum plenumo', |
|
| 708 | + 'zbug_erreur_filtre' => 'Filtrilo @filtre@ nedifinita', |
|
| 709 | + 'zbug_erreur_meme_parent' => 'La kriterio {meme_parent} nur aplikiĝas je iteracioj (FORUMS) aŭ (RUBRIQUES)', |
|
| 710 | + 'zbug_erreur_squelette' => 'Eraro(j) en la skeleto', |
|
| 711 | + 'zbug_hors_compilation' => 'Ne kompilita', |
|
| 712 | + 'zbug_info_erreur_squelette' => 'Eraro ĉe la retejo', |
|
| 713 | + 'zbug_inversion_ordre_inexistant' => 'Inversigo de ne ekzistanta ordo', |
|
| 714 | + 'zbug_pagination_sans_critere' => 'Marko #PAGINATION senkriteria {pagination} aŭ uzata en rekursia iteracio', |
|
| 715 | + 'zbug_parametres_inclus_incorrects' => 'Ne korektaj inkludaj parametroj : @param@', |
|
| 716 | + 'zbug_profile' => 'Kalkuldaŭro : @time@', |
|
| 717 | + 'zbug_resultat' => 'rezulto', |
|
| 718 | + 'zbug_serveur_indefini' => 'Nedifinata SQL-servilo', |
|
| 719 | + 'zbug_statistiques' => 'statistikoj pri SQL-informpetoj ordigitaj laŭ daŭro', |
|
| 720 | + 'zbug_table_inconnue' => 'nekonata SQL « @table@ » tabelo', |
|
| 721 | + 'zxml_connus_attributs' => 'konataj atributoj', |
|
| 722 | + 'zxml_de' => 'de', |
|
| 723 | + 'zxml_inconnu_attribut' => 'nekonataj atributoj', |
|
| 724 | + 'zxml_inconnu_balise' => 'ne konita marko', |
|
| 725 | + 'zxml_inconnu_entite' => 'ne konata ento', |
|
| 726 | + 'zxml_inconnu_id' => 'ne konata ID', |
|
| 727 | + 'zxml_mais_de' => 'sed', |
|
| 728 | + 'zxml_non_conforme' => 'ne kongrua kun la motivo', |
|
| 729 | + 'zxml_non_fils' => 'ne estas filo de', |
|
| 730 | + 'zxml_nonvide_balise' => 'ne malplena marko', |
|
| 731 | + 'zxml_obligatoire_attribut' => 'deviga atributo sed foresta en', |
|
| 732 | + 'zxml_succession_fils_incorrecte' => 'sinsekvo de filoj korekta', |
|
| 733 | + 'zxml_survoler' => 'superflugi por ekvidi korektaĵojn', |
|
| 734 | + 'zxml_valeur_attribut' => 'atributa valoro', |
|
| 735 | + 'zxml_vide_balise' => 'malplena marko', |
|
| 736 | + 'zxml_vu' => 'antaŭe vidita' |
|
| 737 | 737 | ); |
@@ -4,510 +4,510 @@ 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' => 'Tam grafik arayüze geri dön', |
|
| 14 | - 'access_mode_texte' => 'Basitleştirilmiş metin arayüzünü göster', |
|
| 15 | - 'admin_debug' => 'hata ayıkla', |
|
| 16 | - 'admin_modifier_article' => 'Bu makaleyi değiştir', |
|
| 17 | - 'admin_modifier_auteur' => 'Bu yazarı değiştir', |
|
| 18 | - 'admin_modifier_breve' => 'Bu kısa haberi değiştir', |
|
| 19 | - 'admin_modifier_mot' => 'Bu anahtar sözcüğü değiştir', |
|
| 20 | - 'admin_modifier_rubrique' => 'Bu bölümü değiştir', |
|
| 21 | - 'admin_recalculer' => 'Bu sayfayı yeniden oluştur', |
|
| 22 | - 'afficher_trad' => 'çevirileri listele', |
|
| 23 | - 'alerte_maj_impossible' => '<b>Dikkat !</b> SQL veri tabanının @version@ sürümüne güncellenmesi imkansız. Sorun veritabanı değiştirme haklarından kaynaklanıyor olabilir, lütfen sitenizi barındıran şirkete başvurunuz.', |
|
| 24 | - 'alerte_modif_info_concourante' => 'DİKKAT: Bu bilgi başka bir yerde değiştirildi. Güncel değer :', |
|
| 25 | - 'analyse_xml' => 'XML analizi', |
|
| 26 | - 'annuler' => 'İptal et', |
|
| 27 | - 'antispam_champ_vide' => 'Lütfen bu alanı boş bırakınız :', |
|
| 28 | - 'articles_recents' => 'En yeni makaleler', |
|
| 29 | - 'avis_archive_incorrect' => 'arşiv dosyası SPIP dosyası değil', |
|
| 30 | - 'avis_archive_invalide' => 'bu arşiv dosyası geçerli değil', |
|
| 31 | - 'avis_attention' => 'DİKKAT !', |
|
| 32 | - 'avis_champ_incorrect_type_objet' => '@type@ tipindeki nesne için @name@ ismi geçersiz', |
|
| 33 | - 'avis_colonne_inexistante' => '@col@ isimli sütun yok', |
|
| 34 | - 'avis_erreur' => 'Hata: aşağıdaki açıklamaya bakınız', |
|
| 35 | - 'avis_erreur_connexion' => 'Bağlantı hatası', |
|
| 36 | - 'avis_erreur_cookie' => 'çerez sorunu', |
|
| 37 | - 'avis_erreur_fonction_contexte' => 'Yazılım hatası. Bu işlev bu biçimde kullanılmamalı.', |
|
| 38 | - 'avis_erreur_mysql' => 'SQL hatası', |
|
| 39 | - 'avis_erreur_sauvegarde' => 'Yedeklemede hata (@type@ @id_objet@) !', |
|
| 40 | - 'avis_erreur_visiteur' => 'Özel alana erişim sorunu', |
|
| 12 | + // A |
|
| 13 | + 'access_interface_graphique' => 'Tam grafik arayüze geri dön', |
|
| 14 | + 'access_mode_texte' => 'Basitleştirilmiş metin arayüzünü göster', |
|
| 15 | + 'admin_debug' => 'hata ayıkla', |
|
| 16 | + 'admin_modifier_article' => 'Bu makaleyi değiştir', |
|
| 17 | + 'admin_modifier_auteur' => 'Bu yazarı değiştir', |
|
| 18 | + 'admin_modifier_breve' => 'Bu kısa haberi değiştir', |
|
| 19 | + 'admin_modifier_mot' => 'Bu anahtar sözcüğü değiştir', |
|
| 20 | + 'admin_modifier_rubrique' => 'Bu bölümü değiştir', |
|
| 21 | + 'admin_recalculer' => 'Bu sayfayı yeniden oluştur', |
|
| 22 | + 'afficher_trad' => 'çevirileri listele', |
|
| 23 | + 'alerte_maj_impossible' => '<b>Dikkat !</b> SQL veri tabanının @version@ sürümüne güncellenmesi imkansız. Sorun veritabanı değiştirme haklarından kaynaklanıyor olabilir, lütfen sitenizi barındıran şirkete başvurunuz.', |
|
| 24 | + 'alerte_modif_info_concourante' => 'DİKKAT: Bu bilgi başka bir yerde değiştirildi. Güncel değer :', |
|
| 25 | + 'analyse_xml' => 'XML analizi', |
|
| 26 | + 'annuler' => 'İptal et', |
|
| 27 | + 'antispam_champ_vide' => 'Lütfen bu alanı boş bırakınız :', |
|
| 28 | + 'articles_recents' => 'En yeni makaleler', |
|
| 29 | + 'avis_archive_incorrect' => 'arşiv dosyası SPIP dosyası değil', |
|
| 30 | + 'avis_archive_invalide' => 'bu arşiv dosyası geçerli değil', |
|
| 31 | + 'avis_attention' => 'DİKKAT !', |
|
| 32 | + 'avis_champ_incorrect_type_objet' => '@type@ tipindeki nesne için @name@ ismi geçersiz', |
|
| 33 | + 'avis_colonne_inexistante' => '@col@ isimli sütun yok', |
|
| 34 | + 'avis_erreur' => 'Hata: aşağıdaki açıklamaya bakınız', |
|
| 35 | + 'avis_erreur_connexion' => 'Bağlantı hatası', |
|
| 36 | + 'avis_erreur_cookie' => 'çerez sorunu', |
|
| 37 | + 'avis_erreur_fonction_contexte' => 'Yazılım hatası. Bu işlev bu biçimde kullanılmamalı.', |
|
| 38 | + 'avis_erreur_mysql' => 'SQL hatası', |
|
| 39 | + 'avis_erreur_sauvegarde' => 'Yedeklemede hata (@type@ @id_objet@) !', |
|
| 40 | + 'avis_erreur_visiteur' => 'Özel alana erişim sorunu', |
|
| 41 | 41 | |
| 42 | - // B |
|
| 43 | - 'barre_a_accent_grave' => 'A harfinin üstüne aksan ekle (Türkçede anlamsız)', |
|
| 44 | - 'barre_aide' => 'Sayfa düzenini zenginleştirmek için tipografik kısayolları kullanınız', |
|
| 45 | - 'barre_e_accent_aigu' => 'E harfinin üstüne aksan ekle (Türkçe’de anlamsız)', |
|
| 46 | - 'barre_eo' => 'Türkçe’de anlamsız', |
|
| 47 | - 'barre_eo_maj' => 'Türkçe’de anlamsız', |
|
| 48 | - 'barre_euro' => '€ işaretini girin', |
|
| 49 | - 'barre_gras' => '{{Kalın}} yaz', |
|
| 50 | - 'barre_guillemets' => '« Tırnak » içine al', |
|
| 51 | - 'barre_guillemets_simples' => 'İkinci biçimde tırnak içine al', |
|
| 52 | - 'barre_intertitre' => '{{{Arabaşlık’a}}} dönüştür', |
|
| 53 | - 'barre_italic' => '{Yana yatık (italik)} yaz', |
|
| 54 | - 'barre_lien' => '[Hipermetin bağlantısına->http://...] dönüştür', |
|
| 55 | - 'barre_lien_input' => 'Lütfen bağlantınızın adresini girin (adresi http://www.adresim.com veya bu sitede bulunan bir metnin numarası şeklinde girebilirsiniz).', |
|
| 56 | - 'barre_note' => '[[Sayfa sonu notuna]] dönüştür', |
|
| 57 | - 'barre_paragraphe' => 'Bir paragraf oluştur', |
|
| 58 | - 'barre_quote' => '<quote>Bir iletiden alıntı yap</quote>', |
|
| 59 | - 'bouton_changer' => 'Değiştir', |
|
| 60 | - 'bouton_chercher' => 'Ara', |
|
| 61 | - 'bouton_choisir' => 'Seç', |
|
| 62 | - 'bouton_download' => 'İndir', # MODIF |
|
| 63 | - 'bouton_enregistrer' => 'Kaydet', |
|
| 64 | - 'bouton_radio_desactiver_messagerie_interne' => 'İç iletileri kapat', |
|
| 65 | - 'bouton_radio_envoi_annonces' => 'Yazar duyurularını yolla', |
|
| 66 | - 'bouton_radio_non_envoi_annonces' => 'Duyuruları yollama', |
|
| 67 | - 'bouton_radio_non_envoi_liste_nouveautes' => 'Yenilikler listesini gönderme', |
|
| 68 | - 'bouton_recharger_page' => 'bu sayfayı yeniden yükle', |
|
| 69 | - 'bouton_telecharger' => 'İndir', |
|
| 70 | - 'bouton_upload' => 'İndir', # MODIF |
|
| 71 | - 'bouton_valider' => 'Onayla', |
|
| 42 | + // B |
|
| 43 | + 'barre_a_accent_grave' => 'A harfinin üstüne aksan ekle (Türkçede anlamsız)', |
|
| 44 | + 'barre_aide' => 'Sayfa düzenini zenginleştirmek için tipografik kısayolları kullanınız', |
|
| 45 | + 'barre_e_accent_aigu' => 'E harfinin üstüne aksan ekle (Türkçe’de anlamsız)', |
|
| 46 | + 'barre_eo' => 'Türkçe’de anlamsız', |
|
| 47 | + 'barre_eo_maj' => 'Türkçe’de anlamsız', |
|
| 48 | + 'barre_euro' => '€ işaretini girin', |
|
| 49 | + 'barre_gras' => '{{Kalın}} yaz', |
|
| 50 | + 'barre_guillemets' => '« Tırnak » içine al', |
|
| 51 | + 'barre_guillemets_simples' => 'İkinci biçimde tırnak içine al', |
|
| 52 | + 'barre_intertitre' => '{{{Arabaşlık’a}}} dönüştür', |
|
| 53 | + 'barre_italic' => '{Yana yatık (italik)} yaz', |
|
| 54 | + 'barre_lien' => '[Hipermetin bağlantısına->http://...] dönüştür', |
|
| 55 | + 'barre_lien_input' => 'Lütfen bağlantınızın adresini girin (adresi http://www.adresim.com veya bu sitede bulunan bir metnin numarası şeklinde girebilirsiniz).', |
|
| 56 | + 'barre_note' => '[[Sayfa sonu notuna]] dönüştür', |
|
| 57 | + 'barre_paragraphe' => 'Bir paragraf oluştur', |
|
| 58 | + 'barre_quote' => '<quote>Bir iletiden alıntı yap</quote>', |
|
| 59 | + 'bouton_changer' => 'Değiştir', |
|
| 60 | + 'bouton_chercher' => 'Ara', |
|
| 61 | + 'bouton_choisir' => 'Seç', |
|
| 62 | + 'bouton_download' => 'İndir', # MODIF |
|
| 63 | + 'bouton_enregistrer' => 'Kaydet', |
|
| 64 | + 'bouton_radio_desactiver_messagerie_interne' => 'İç iletileri kapat', |
|
| 65 | + 'bouton_radio_envoi_annonces' => 'Yazar duyurularını yolla', |
|
| 66 | + 'bouton_radio_non_envoi_annonces' => 'Duyuruları yollama', |
|
| 67 | + 'bouton_radio_non_envoi_liste_nouveautes' => 'Yenilikler listesini gönderme', |
|
| 68 | + 'bouton_recharger_page' => 'bu sayfayı yeniden yükle', |
|
| 69 | + 'bouton_telecharger' => 'İndir', |
|
| 70 | + 'bouton_upload' => 'İndir', # MODIF |
|
| 71 | + 'bouton_valider' => 'Onayla', |
|
| 72 | 72 | |
| 73 | - // C |
|
| 74 | - 'cal_apresmidi' => 'öğleden sonra', |
|
| 75 | - 'cal_jour_entier' => 'tam gün', |
|
| 76 | - 'cal_matin' => 'sabah', |
|
| 77 | - 'cal_par_jour' => 'günlük takvim', |
|
| 78 | - 'cal_par_mois' => 'aylık takvim', |
|
| 79 | - 'cal_par_semaine' => 'haftalık takvim', |
|
| 80 | - 'choix_couleur_interface' => 'renk', |
|
| 81 | - 'choix_interface' => 'arayüz seçimi', |
|
| 82 | - 'colonne' => 'Sütun', |
|
| 83 | - 'confirm_changer_statut' => 'Dikkat, bu elemanın durumunu değiştirmek istediniz. Devam etmek istiyor musunuz ?', |
|
| 84 | - 'correcte' => 'doğru', |
|
| 73 | + // C |
|
| 74 | + 'cal_apresmidi' => 'öğleden sonra', |
|
| 75 | + 'cal_jour_entier' => 'tam gün', |
|
| 76 | + 'cal_matin' => 'sabah', |
|
| 77 | + 'cal_par_jour' => 'günlük takvim', |
|
| 78 | + 'cal_par_mois' => 'aylık takvim', |
|
| 79 | + 'cal_par_semaine' => 'haftalık takvim', |
|
| 80 | + 'choix_couleur_interface' => 'renk', |
|
| 81 | + 'choix_interface' => 'arayüz seçimi', |
|
| 82 | + 'colonne' => 'Sütun', |
|
| 83 | + 'confirm_changer_statut' => 'Dikkat, bu elemanın durumunu değiştirmek istediniz. Devam etmek istiyor musunuz ?', |
|
| 84 | + 'correcte' => 'doğru', |
|
| 85 | 85 | |
| 86 | - // D |
|
| 87 | - 'date_aujourdhui' => 'bugün', |
|
| 88 | - 'date_avant_jc' => 'İ.Ö.', |
|
| 89 | - 'date_dans' => ' @delai@ içinde', |
|
| 90 | - 'date_de_mois_1' => '@j@ @nommois@', |
|
| 91 | - 'date_de_mois_10' => '@j@ @nommois@', |
|
| 92 | - 'date_de_mois_11' => '@j@ @nommois@', |
|
| 93 | - 'date_de_mois_12' => '@j@ @nommois@', |
|
| 94 | - 'date_de_mois_2' => '@j@ @nommois@', |
|
| 95 | - 'date_de_mois_3' => '@j@ @nommois@', |
|
| 96 | - 'date_de_mois_4' => '@j@ @nommois@', |
|
| 97 | - 'date_de_mois_5' => '@j@ @nommois@', |
|
| 98 | - 'date_de_mois_6' => '@j@ @nommois@', |
|
| 99 | - 'date_de_mois_7' => '@j@ @nommois@', |
|
| 100 | - 'date_de_mois_8' => '@j@ @nommois@', |
|
| 101 | - 'date_de_mois_9' => '@j@ @nommois@', |
|
| 102 | - 'date_demain' => 'yarın', |
|
| 103 | - 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 104 | - 'date_fmt_jour_heure' => '@jour@ @heure@', |
|
| 105 | - 'date_fmt_jour_mois' => '@jour@ @nommois@', |
|
| 106 | - 'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@', |
|
| 107 | - 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 108 | - 'date_fmt_nomjour_date' => '@date@ @nomjour@', |
|
| 109 | - 'date_heures' => 'saat ', |
|
| 110 | - 'date_hier' => 'dün', |
|
| 111 | - 'date_il_y_a' => '@delai@ önce', |
|
| 112 | - 'date_jnum1' => '1.', |
|
| 113 | - 'date_jnum10' => '10', |
|
| 114 | - 'date_jnum11' => '11', |
|
| 115 | - 'date_jnum12' => '12', |
|
| 116 | - 'date_jnum13' => '13', |
|
| 117 | - 'date_jnum14' => '14', |
|
| 118 | - 'date_jnum15' => '15', |
|
| 119 | - 'date_jnum16' => '16', |
|
| 120 | - 'date_jnum17' => '17', |
|
| 121 | - 'date_jnum18' => '18', |
|
| 122 | - 'date_jnum19' => '19', |
|
| 123 | - 'date_jnum2' => '2', |
|
| 124 | - 'date_jnum20' => '20', |
|
| 125 | - 'date_jnum21' => '21', |
|
| 126 | - 'date_jnum22' => '22', |
|
| 127 | - 'date_jnum23' => '23', |
|
| 128 | - 'date_jnum24' => '24', |
|
| 129 | - 'date_jnum25' => '25', |
|
| 130 | - 'date_jnum26' => '26', |
|
| 131 | - 'date_jnum27' => '27', |
|
| 132 | - 'date_jnum28' => '28', |
|
| 133 | - 'date_jnum29' => '29', |
|
| 134 | - 'date_jnum3' => '3', |
|
| 135 | - 'date_jnum30' => '30', |
|
| 136 | - 'date_jnum31' => '31', |
|
| 137 | - 'date_jnum4' => '4', |
|
| 138 | - 'date_jnum5' => '5', |
|
| 139 | - 'date_jnum6' => '6', |
|
| 140 | - 'date_jnum7' => '7', |
|
| 141 | - 'date_jnum8' => '8', |
|
| 142 | - 'date_jnum9' => '9', |
|
| 143 | - 'date_jour_1' => 'Pazar', |
|
| 144 | - 'date_jour_1_abbr' => 'Pzr.', |
|
| 145 | - 'date_jour_1_initiale' => 'g.', |
|
| 146 | - 'date_jour_2' => 'Pazartesi', |
|
| 147 | - 'date_jour_2_abbr' => 'Ptesi.', |
|
| 148 | - 'date_jour_2_initiale' => 'P.', |
|
| 149 | - 'date_jour_3' => 'Salı', |
|
| 150 | - 'date_jour_3_abbr' => 'Salı', |
|
| 151 | - 'date_jour_3_initiale' => 'S.', |
|
| 152 | - 'date_jour_4' => 'Çarşamba', |
|
| 153 | - 'date_jour_4_abbr' => 'Çarş.', |
|
| 154 | - 'date_jour_4_initiale' => 'Ç.', |
|
| 155 | - 'date_jour_5' => 'Perşembe', |
|
| 156 | - 'date_jour_5_abbr' => 'Perş.', |
|
| 157 | - 'date_jour_5_initiale' => 'P.', |
|
| 158 | - 'date_jour_6' => 'Cuma', |
|
| 159 | - 'date_jour_6_abbr' => 'Cuma', |
|
| 160 | - 'date_jour_6_initiale' => 'C.', |
|
| 161 | - 'date_jour_7' => 'Cumartesi', |
|
| 162 | - 'date_jour_7_abbr' => 'Ctesi', |
|
| 163 | - 'date_jour_7_initiale' => 'Ct.', |
|
| 164 | - 'date_jours' => 'gün', |
|
| 165 | - 'date_minutes' => 'dakika', |
|
| 166 | - 'date_mois' => 'ay', |
|
| 167 | - 'date_mois_1' => 'Ocak', |
|
| 168 | - 'date_mois_10' => 'Ekim', |
|
| 169 | - 'date_mois_11' => 'Kasım', |
|
| 170 | - 'date_mois_12' => 'Aralık', |
|
| 171 | - 'date_mois_2' => 'Şubat', |
|
| 172 | - 'date_mois_3' => 'Mart', |
|
| 173 | - 'date_mois_4' => 'Nisan', |
|
| 174 | - 'date_mois_5' => 'Mayıs', |
|
| 175 | - 'date_mois_6' => 'Haziran', |
|
| 176 | - 'date_mois_7' => 'Temmuz', |
|
| 177 | - 'date_mois_8' => 'Ağustos', |
|
| 178 | - 'date_mois_9' => 'Eylül', |
|
| 179 | - 'date_saison_1' => 'kış', |
|
| 180 | - 'date_saison_2' => 'ilkbahar', |
|
| 181 | - 'date_saison_3' => 'yaz', |
|
| 182 | - 'date_saison_4' => 'sonbahar', |
|
| 183 | - 'date_semaines' => 'hafta', |
|
| 184 | - 'dirs_commencer' => ' yüklemeye gerçekten başlamak için', |
|
| 185 | - 'dirs_preliminaire' => 'Ön bilgi : <b>Erişim haklarını ayarlayınız</b>', |
|
| 186 | - 'dirs_probleme_droits' => 'Erişim hakları sorunu ', |
|
| 187 | - 'dirs_repertoires_absents' => '<p><b>Şu dizinler bulunamadı : </b></p><ul>@bad_dirs@</ul> </b> |
|
| 86 | + // D |
|
| 87 | + 'date_aujourdhui' => 'bugün', |
|
| 88 | + 'date_avant_jc' => 'İ.Ö.', |
|
| 89 | + 'date_dans' => ' @delai@ içinde', |
|
| 90 | + 'date_de_mois_1' => '@j@ @nommois@', |
|
| 91 | + 'date_de_mois_10' => '@j@ @nommois@', |
|
| 92 | + 'date_de_mois_11' => '@j@ @nommois@', |
|
| 93 | + 'date_de_mois_12' => '@j@ @nommois@', |
|
| 94 | + 'date_de_mois_2' => '@j@ @nommois@', |
|
| 95 | + 'date_de_mois_3' => '@j@ @nommois@', |
|
| 96 | + 'date_de_mois_4' => '@j@ @nommois@', |
|
| 97 | + 'date_de_mois_5' => '@j@ @nommois@', |
|
| 98 | + 'date_de_mois_6' => '@j@ @nommois@', |
|
| 99 | + 'date_de_mois_7' => '@j@ @nommois@', |
|
| 100 | + 'date_de_mois_8' => '@j@ @nommois@', |
|
| 101 | + 'date_de_mois_9' => '@j@ @nommois@', |
|
| 102 | + 'date_demain' => 'yarın', |
|
| 103 | + 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 104 | + 'date_fmt_jour_heure' => '@jour@ @heure@', |
|
| 105 | + 'date_fmt_jour_mois' => '@jour@ @nommois@', |
|
| 106 | + 'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@', |
|
| 107 | + 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 108 | + 'date_fmt_nomjour_date' => '@date@ @nomjour@', |
|
| 109 | + 'date_heures' => 'saat ', |
|
| 110 | + 'date_hier' => 'dün', |
|
| 111 | + 'date_il_y_a' => '@delai@ önce', |
|
| 112 | + 'date_jnum1' => '1.', |
|
| 113 | + 'date_jnum10' => '10', |
|
| 114 | + 'date_jnum11' => '11', |
|
| 115 | + 'date_jnum12' => '12', |
|
| 116 | + 'date_jnum13' => '13', |
|
| 117 | + 'date_jnum14' => '14', |
|
| 118 | + 'date_jnum15' => '15', |
|
| 119 | + 'date_jnum16' => '16', |
|
| 120 | + 'date_jnum17' => '17', |
|
| 121 | + 'date_jnum18' => '18', |
|
| 122 | + 'date_jnum19' => '19', |
|
| 123 | + 'date_jnum2' => '2', |
|
| 124 | + 'date_jnum20' => '20', |
|
| 125 | + 'date_jnum21' => '21', |
|
| 126 | + 'date_jnum22' => '22', |
|
| 127 | + 'date_jnum23' => '23', |
|
| 128 | + 'date_jnum24' => '24', |
|
| 129 | + 'date_jnum25' => '25', |
|
| 130 | + 'date_jnum26' => '26', |
|
| 131 | + 'date_jnum27' => '27', |
|
| 132 | + 'date_jnum28' => '28', |
|
| 133 | + 'date_jnum29' => '29', |
|
| 134 | + 'date_jnum3' => '3', |
|
| 135 | + 'date_jnum30' => '30', |
|
| 136 | + 'date_jnum31' => '31', |
|
| 137 | + 'date_jnum4' => '4', |
|
| 138 | + 'date_jnum5' => '5', |
|
| 139 | + 'date_jnum6' => '6', |
|
| 140 | + 'date_jnum7' => '7', |
|
| 141 | + 'date_jnum8' => '8', |
|
| 142 | + 'date_jnum9' => '9', |
|
| 143 | + 'date_jour_1' => 'Pazar', |
|
| 144 | + 'date_jour_1_abbr' => 'Pzr.', |
|
| 145 | + 'date_jour_1_initiale' => 'g.', |
|
| 146 | + 'date_jour_2' => 'Pazartesi', |
|
| 147 | + 'date_jour_2_abbr' => 'Ptesi.', |
|
| 148 | + 'date_jour_2_initiale' => 'P.', |
|
| 149 | + 'date_jour_3' => 'Salı', |
|
| 150 | + 'date_jour_3_abbr' => 'Salı', |
|
| 151 | + 'date_jour_3_initiale' => 'S.', |
|
| 152 | + 'date_jour_4' => 'Çarşamba', |
|
| 153 | + 'date_jour_4_abbr' => 'Çarş.', |
|
| 154 | + 'date_jour_4_initiale' => 'Ç.', |
|
| 155 | + 'date_jour_5' => 'Perşembe', |
|
| 156 | + 'date_jour_5_abbr' => 'Perş.', |
|
| 157 | + 'date_jour_5_initiale' => 'P.', |
|
| 158 | + 'date_jour_6' => 'Cuma', |
|
| 159 | + 'date_jour_6_abbr' => 'Cuma', |
|
| 160 | + 'date_jour_6_initiale' => 'C.', |
|
| 161 | + 'date_jour_7' => 'Cumartesi', |
|
| 162 | + 'date_jour_7_abbr' => 'Ctesi', |
|
| 163 | + 'date_jour_7_initiale' => 'Ct.', |
|
| 164 | + 'date_jours' => 'gün', |
|
| 165 | + 'date_minutes' => 'dakika', |
|
| 166 | + 'date_mois' => 'ay', |
|
| 167 | + 'date_mois_1' => 'Ocak', |
|
| 168 | + 'date_mois_10' => 'Ekim', |
|
| 169 | + 'date_mois_11' => 'Kasım', |
|
| 170 | + 'date_mois_12' => 'Aralık', |
|
| 171 | + 'date_mois_2' => 'Şubat', |
|
| 172 | + 'date_mois_3' => 'Mart', |
|
| 173 | + 'date_mois_4' => 'Nisan', |
|
| 174 | + 'date_mois_5' => 'Mayıs', |
|
| 175 | + 'date_mois_6' => 'Haziran', |
|
| 176 | + 'date_mois_7' => 'Temmuz', |
|
| 177 | + 'date_mois_8' => 'Ağustos', |
|
| 178 | + 'date_mois_9' => 'Eylül', |
|
| 179 | + 'date_saison_1' => 'kış', |
|
| 180 | + 'date_saison_2' => 'ilkbahar', |
|
| 181 | + 'date_saison_3' => 'yaz', |
|
| 182 | + 'date_saison_4' => 'sonbahar', |
|
| 183 | + 'date_semaines' => 'hafta', |
|
| 184 | + 'dirs_commencer' => ' yüklemeye gerçekten başlamak için', |
|
| 185 | + 'dirs_preliminaire' => 'Ön bilgi : <b>Erişim haklarını ayarlayınız</b>', |
|
| 186 | + 'dirs_probleme_droits' => 'Erişim hakları sorunu ', |
|
| 187 | + 'dirs_repertoires_absents' => '<p><b>Şu dizinler bulunamadı : </b></p><ul>@bad_dirs@</ul> </b> |
|
| 188 | 188 | <p>Büyük küçük harf hatasına bağlı olabilir. |
| 189 | 189 | Dizinlerin küçük büyük harflerle yazılışlarının yukarıda gösterilenlerle uyuştuğunu kontrol edin; eğer uyuşmuyorsa FTP programınızla dizin isimlerini düzeltin.</p> |
| 190 | 190 | <p>Bu işlemi yaptığınızda ', |
| 191 | - 'dirs_repertoires_suivants' => '<p><b>Aşağıdaki dizinlere yazma izni yoktur : </b></p><ul>@bad_dirs@.</ul> |
|
| 191 | + 'dirs_repertoires_suivants' => '<p><b>Aşağıdaki dizinlere yazma izni yoktur : </b></p><ul>@bad_dirs@.</ul> |
|
| 192 | 192 | <p>Bu sorunu çözmek için FTP programınızla her bir dizine erişim haklarını düzenleyin. Bu yordam, kurulum kitapçığında detaylı biçimde açıklanmıştır./p> |
| 193 | 193 | <p>Bu işlemi yaptığınızda ', |
| 194 | - 'double_occurrence' => 'Çift tekrar ', # MODIF |
|
| 194 | + 'double_occurrence' => 'Çift tekrar ', # MODIF |
|
| 195 | 195 | |
| 196 | - // E |
|
| 197 | - 'en_cours' => 'işlenmekte', |
|
| 198 | - 'envoi_via_le_site' => 'Site üzerinden gönder', |
|
| 199 | - 'erreur' => 'Hata', |
|
| 200 | - 'erreur_balise_non_fermee' => 'son etiket kapatılmamış :', |
|
| 201 | - 'erreur_texte' => 'hata(lar)', |
|
| 202 | - 'etape' => 'Aşama', |
|
| 196 | + // E |
|
| 197 | + 'en_cours' => 'işlenmekte', |
|
| 198 | + 'envoi_via_le_site' => 'Site üzerinden gönder', |
|
| 199 | + 'erreur' => 'Hata', |
|
| 200 | + 'erreur_balise_non_fermee' => 'son etiket kapatılmamış :', |
|
| 201 | + 'erreur_texte' => 'hata(lar)', |
|
| 202 | + 'etape' => 'Aşama', |
|
| 203 | 203 | |
| 204 | - // F |
|
| 205 | - 'fichier_introuvable' => '@fichier@ dosyası bulunamadı', # MODIF |
|
| 206 | - 'form_deja_inscrit' => 'Zaten kayıtlısınız.', |
|
| 207 | - 'form_email_non_valide' => 'E-posta adresiniz geçersiz.', |
|
| 208 | - 'form_forum_access_refuse' => 'Artık bu siteye erişim izniniz yok.', |
|
| 209 | - 'form_forum_bonjour' => 'Merhaba @nom@,', |
|
| 210 | - 'form_forum_email_deja_enregistre' => 'Bu e-posta adresi zaten kayıtlı, kullanmakta olduğunuz şifrenizi kullanmaya devam edebilirsiniz.', |
|
| 211 | - 'form_forum_identifiant_mail' => 'Yeni tanımlayıcınız e-posta yoluyla gönderildi.', |
|
| 212 | - 'form_forum_identifiants' => 'Kişisel tanımlayıcılar', |
|
| 213 | - 'form_forum_indiquer_nom_email' => 'Buraya isminizi ve e-posta adresinizi giriniz. Yeni tanımlayıcınız size bir e-posta ile hemen gönderilecektir.', |
|
| 214 | - 'form_forum_login' => 'kullanıcı ismi :', |
|
| 215 | - 'form_forum_message_auto' => '(bu otomatik bir iletidir)', |
|
| 216 | - 'form_forum_pass' => 'şifre :', |
|
| 217 | - 'form_forum_probleme_mail' => 'E-posta sorunu : tanımlayıcı gönderilemiyor.', |
|
| 218 | - 'form_forum_voici1' => '"@nom_site_spip@" (@adresse_site@) site yaşamına katılabilmek için tanımlayıcılarınız :', |
|
| 219 | - 'form_forum_voici2' => '"@nom_site_spip@" (@adresse_login@) sitesinde makale yayınlayabilmeniz için gereken kimlik bilgileriniz :', |
|
| 220 | - 'form_indiquer_email' => 'Lütfen e-posta adresinizi belirtiniz.', |
|
| 221 | - 'form_indiquer_nom' => 'Lütfen isminizi belirtiniz.', |
|
| 222 | - 'form_indiquer_nom_site' => 'Lütfen sitenizin ismini belirtiniz.', |
|
| 223 | - 'form_pet_deja_enregistre' => 'Bu site zaten kayıtlı', |
|
| 224 | - 'form_pet_signature_pasprise' => 'İmzanız dikkate alınmadı.', |
|
| 225 | - 'form_prop_confirmer_envoi' => 'Gönderiyi onayla', |
|
| 226 | - 'form_prop_description' => 'Tanım / Yorum', |
|
| 227 | - 'form_prop_enregistre' => 'Öneriniz kaydedildi, sitenin sorumluları tarafından onaylandıktan sonra çevrimiçi yayınlanacak.', |
|
| 228 | - 'form_prop_envoyer' => 'Bir ileti gönder', |
|
| 229 | - 'form_prop_indiquer_email' => 'Lütfen geçerli bir e-posta adresi belirtiniz', |
|
| 230 | - 'form_prop_indiquer_nom_site' => 'Sitenin ismini giriniz.', |
|
| 231 | - 'form_prop_indiquer_sujet' => 'Bir konu belirtiniz', |
|
| 232 | - 'form_prop_message_envoye' => 'İleti gönderildi', |
|
| 233 | - 'form_prop_non_enregistre' => 'Öneriniz kaydedilmedi.', |
|
| 234 | - 'form_prop_sujet' => 'Konu', |
|
| 235 | - 'form_prop_url_site' => 'Sitenin Url adresi', # MODIF |
|
| 236 | - 'forum_non_inscrit' => 'Kayıtlı değilsiniz veya adresiniz veya şifreniz hatalı.', |
|
| 237 | - 'forum_par_auteur' => 'yazan @auteur@ ', |
|
| 238 | - 'forum_titre_erreur' => 'Hata...', |
|
| 204 | + // F |
|
| 205 | + 'fichier_introuvable' => '@fichier@ dosyası bulunamadı', # MODIF |
|
| 206 | + 'form_deja_inscrit' => 'Zaten kayıtlısınız.', |
|
| 207 | + 'form_email_non_valide' => 'E-posta adresiniz geçersiz.', |
|
| 208 | + 'form_forum_access_refuse' => 'Artık bu siteye erişim izniniz yok.', |
|
| 209 | + 'form_forum_bonjour' => 'Merhaba @nom@,', |
|
| 210 | + 'form_forum_email_deja_enregistre' => 'Bu e-posta adresi zaten kayıtlı, kullanmakta olduğunuz şifrenizi kullanmaya devam edebilirsiniz.', |
|
| 211 | + 'form_forum_identifiant_mail' => 'Yeni tanımlayıcınız e-posta yoluyla gönderildi.', |
|
| 212 | + 'form_forum_identifiants' => 'Kişisel tanımlayıcılar', |
|
| 213 | + 'form_forum_indiquer_nom_email' => 'Buraya isminizi ve e-posta adresinizi giriniz. Yeni tanımlayıcınız size bir e-posta ile hemen gönderilecektir.', |
|
| 214 | + 'form_forum_login' => 'kullanıcı ismi :', |
|
| 215 | + 'form_forum_message_auto' => '(bu otomatik bir iletidir)', |
|
| 216 | + 'form_forum_pass' => 'şifre :', |
|
| 217 | + 'form_forum_probleme_mail' => 'E-posta sorunu : tanımlayıcı gönderilemiyor.', |
|
| 218 | + 'form_forum_voici1' => '"@nom_site_spip@" (@adresse_site@) site yaşamına katılabilmek için tanımlayıcılarınız :', |
|
| 219 | + 'form_forum_voici2' => '"@nom_site_spip@" (@adresse_login@) sitesinde makale yayınlayabilmeniz için gereken kimlik bilgileriniz :', |
|
| 220 | + 'form_indiquer_email' => 'Lütfen e-posta adresinizi belirtiniz.', |
|
| 221 | + 'form_indiquer_nom' => 'Lütfen isminizi belirtiniz.', |
|
| 222 | + 'form_indiquer_nom_site' => 'Lütfen sitenizin ismini belirtiniz.', |
|
| 223 | + 'form_pet_deja_enregistre' => 'Bu site zaten kayıtlı', |
|
| 224 | + 'form_pet_signature_pasprise' => 'İmzanız dikkate alınmadı.', |
|
| 225 | + 'form_prop_confirmer_envoi' => 'Gönderiyi onayla', |
|
| 226 | + 'form_prop_description' => 'Tanım / Yorum', |
|
| 227 | + 'form_prop_enregistre' => 'Öneriniz kaydedildi, sitenin sorumluları tarafından onaylandıktan sonra çevrimiçi yayınlanacak.', |
|
| 228 | + 'form_prop_envoyer' => 'Bir ileti gönder', |
|
| 229 | + 'form_prop_indiquer_email' => 'Lütfen geçerli bir e-posta adresi belirtiniz', |
|
| 230 | + 'form_prop_indiquer_nom_site' => 'Sitenin ismini giriniz.', |
|
| 231 | + 'form_prop_indiquer_sujet' => 'Bir konu belirtiniz', |
|
| 232 | + 'form_prop_message_envoye' => 'İleti gönderildi', |
|
| 233 | + 'form_prop_non_enregistre' => 'Öneriniz kaydedilmedi.', |
|
| 234 | + 'form_prop_sujet' => 'Konu', |
|
| 235 | + 'form_prop_url_site' => 'Sitenin Url adresi', # MODIF |
|
| 236 | + 'forum_non_inscrit' => 'Kayıtlı değilsiniz veya adresiniz veya şifreniz hatalı.', |
|
| 237 | + 'forum_par_auteur' => 'yazan @auteur@ ', |
|
| 238 | + 'forum_titre_erreur' => 'Hata...', |
|
| 239 | 239 | |
| 240 | - // I |
|
| 241 | - 'ical_texte_rss_articles' => 'Makalelerin «backend» dosyası şu adrestedir:', |
|
| 242 | - 'ical_texte_rss_articles2' => 'Sitenin her bir bölümünün makaleleri için «backend» dosyaları edinebilirsiniz :', |
|
| 243 | - 'ical_texte_rss_breves' => 'Ayrıca site haberlerini içeren bir dosya mevcuttur. Bir bölüm numarası belirterek, sadece bu bölümün haberlerini elde edebilirsiniz.', |
|
| 244 | - 'icone_a_suivre' => 'İzlenecek', |
|
| 245 | - 'icone_admin_site' => 'Site yönetimi', |
|
| 246 | - 'icone_agenda' => 'Ajanda', |
|
| 247 | - 'icone_aide_ligne' => 'Yardım', |
|
| 248 | - 'icone_articles' => 'Makaleler', |
|
| 249 | - 'icone_auteurs' => 'Yazarlar', |
|
| 250 | - 'icone_brouteur' => 'Hızlı gezinti', |
|
| 251 | - 'icone_configuration_site' => 'Yapılandırma', |
|
| 252 | - 'icone_configurer_site' => 'Sitenizi yapılandırın', |
|
| 253 | - 'icone_creer_nouvel_auteur' => 'Yeni bir yazar oluştur', |
|
| 254 | - 'icone_creer_rubrique' => 'Bölüm oluştur', |
|
| 255 | - 'icone_creer_sous_rubrique' => 'Alt-bölüm oluştur', |
|
| 256 | - 'icone_deconnecter' => 'Çıkış', |
|
| 257 | - 'icone_discussions' => 'Tartışmalar', |
|
| 258 | - 'icone_doc_rubrique' => 'Bölüm belgeleri', |
|
| 259 | - 'icone_ecrire_article' => 'Yeni bir makale yaz', |
|
| 260 | - 'icone_edition_site' => 'Yayın', |
|
| 261 | - 'icone_gestion_langues' => 'Dillerin yönetimi', |
|
| 262 | - 'icone_informations_personnelles' => 'Kişisel bilgiler', |
|
| 263 | - 'icone_interface_complet' => 'Tüm arayüz', |
|
| 264 | - 'icone_interface_simple' => 'Basit arayüz', |
|
| 265 | - 'icone_maintenance_site' => 'Site bakımı', |
|
| 266 | - 'icone_messagerie_personnelle' => 'Kişisel iletiler', |
|
| 267 | - 'icone_repartition_debut' => 'Dağılımı en başından itibaren göster', |
|
| 268 | - 'icone_rubriques' => 'Bölümler', |
|
| 269 | - 'icone_sauver_site' => 'Siteyi yedekle', |
|
| 270 | - 'icone_site_entier' => 'Tüm site', |
|
| 271 | - 'icone_sites_references' => 'Önerilen siteler', |
|
| 272 | - 'icone_statistiques' => 'Site istatistikleri', |
|
| 273 | - 'icone_suivi_activite' => 'Site yaşamını izle', |
|
| 274 | - 'icone_suivi_actualite' => 'Site gelişimi', |
|
| 275 | - 'icone_suivi_pettions' => 'Dilekçeleri izle / Yönet', |
|
| 276 | - 'icone_suivi_revisions' => 'Makale değişiklikleri', |
|
| 277 | - 'icone_supprimer_document' => 'Bu belgeyi sil', |
|
| 278 | - 'icone_supprimer_image' => 'Bu resmi sil', |
|
| 279 | - 'icone_tous_articles' => 'Tüm makaleleriniz', |
|
| 280 | - 'icone_tous_auteur' => 'Tüm yazarlar', |
|
| 281 | - 'icone_visiter_site' => 'Ziyaret et', # MODIF |
|
| 282 | - 'icone_voir_en_ligne' => 'Çevrimiçi göster', |
|
| 283 | - 'img_indisponible' => 'resim mevcut değil', |
|
| 284 | - 'impossible' => 'olanaksız', |
|
| 285 | - 'info_a_suivre' => 'İZLENECEK »', |
|
| 286 | - 'info_acces_interdit' => 'Erişim yasak', |
|
| 287 | - 'info_acces_refuse' => 'Erişim reddedildi', |
|
| 288 | - 'info_action' => 'Eylem : @action@', |
|
| 289 | - 'info_administrer_rubriques' => 'Bu bölümü ve alt-bölümleri yönetebilirsiniz', |
|
| 290 | - 'info_adresse_non_indiquee' => 'Denenecek bir adres belirtmediniz !', |
|
| 291 | - 'info_aide' => 'YARDIM :', |
|
| 292 | - 'info_ajouter_mot' => 'Bu sözcüğü ekle', |
|
| 293 | - 'info_annonce' => 'DUYURU', |
|
| 294 | - 'info_annonces_generales' => 'Genel duyurular :', |
|
| 295 | - 'info_article_propose' => 'Önerilen makale', |
|
| 296 | - 'info_article_publie' => 'Yayınlanan makale', |
|
| 297 | - 'info_article_redaction' => 'Yazılmakta olan makale', |
|
| 298 | - 'info_article_refuse' => 'Reddedilen makale', |
|
| 299 | - 'info_article_supprime' => 'Silinen makale', |
|
| 300 | - 'info_articles' => 'Makaleler', |
|
| 301 | - 'info_articles_a_valider' => 'Onaylanacak makaleler', |
|
| 302 | - 'info_articles_proposes' => 'Önerilen makaleler', |
|
| 303 | - 'info_auteurs_nombre' => 'yazar(lar) :', |
|
| 304 | - 'info_authentification_ftp' => 'Onay (FTP ile)', |
|
| 305 | - 'info_breves_2' => 'kısa haberler', |
|
| 306 | - 'info_connexion_refusee' => 'Bağlantı reddedildi', |
|
| 307 | - 'info_contact_developpeur' => 'Lütfen bir program geliştirici ile temasa geçiniz.', |
|
| 308 | - 'info_contenance' => 'Site içeriği :', |
|
| 309 | - 'info_contribution' => 'Forum katkıları', # MODIF |
|
| 310 | - 'info_copyright' => '@spip@, @lien_gpl@ GPL lisansı ile dağıtılan serbest bir yazılımdır.', |
|
| 311 | - 'info_copyright_doc' => 'Ayrıntılı bilgi için, bkz. <a href="@spipnet@">http://www.spip.net/fr</a>.', # MODIF |
|
| 312 | - 'info_copyright_gpl' => 'GPL lisansı altında', |
|
| 313 | - 'info_cours_edition' => 'Yazılmakta olan makaleleriniz', # MODIF |
|
| 314 | - 'info_creer_repertoire' => 'Şu isimde bir dosya veya dizin oluşturunuz :', |
|
| 315 | - 'info_creer_repertoire_2' => '<b>@repertoire@</b> alt-dizini içerisinde, daha sonra :', |
|
| 316 | - 'info_creer_vignette' => 'otomatik ikon oluşturma', |
|
| 317 | - 'info_deplier' => 'Açılıp sergilenmesi', |
|
| 318 | - 'info_descriptif_nombre' => 'tanımlayıcı(lar) :', |
|
| 319 | - 'info_description' => 'Tanımlama :', |
|
| 320 | - 'info_description_2' => 'Tanımlama :', |
|
| 321 | - 'info_dimension' => 'Boyutlar :', |
|
| 322 | - 'info_ecire_message_prive' => 'Özel bir ileti yaz', |
|
| 323 | - 'info_email_invalide' => 'Geçersiz e-posta adresi.', |
|
| 324 | - 'info_en_cours_validation' => 'Yazılmakta olan makaleleriniz', |
|
| 325 | - 'info_en_ligne' => 'Şu anda çevrimiçi :', |
|
| 326 | - 'info_envoyer_message_prive' => 'Bu yazara özel bir ileti gönder', |
|
| 327 | - 'info_erreur_requete' => 'Aramada hata :', |
|
| 328 | - 'info_erreur_squelette2' => 'Hiçbir @fichier@ iskeleti müsait değil...', |
|
| 329 | - 'info_erreur_systeme' => 'Sistem hatası (hata no @errsys@)', |
|
| 330 | - 'info_erreur_systeme2' => 'Sabit disk dolu olabilir veya veritabanı hasar görmüş olabilir.<br /> |
|
| 240 | + // I |
|
| 241 | + 'ical_texte_rss_articles' => 'Makalelerin «backend» dosyası şu adrestedir:', |
|
| 242 | + 'ical_texte_rss_articles2' => 'Sitenin her bir bölümünün makaleleri için «backend» dosyaları edinebilirsiniz :', |
|
| 243 | + 'ical_texte_rss_breves' => 'Ayrıca site haberlerini içeren bir dosya mevcuttur. Bir bölüm numarası belirterek, sadece bu bölümün haberlerini elde edebilirsiniz.', |
|
| 244 | + 'icone_a_suivre' => 'İzlenecek', |
|
| 245 | + 'icone_admin_site' => 'Site yönetimi', |
|
| 246 | + 'icone_agenda' => 'Ajanda', |
|
| 247 | + 'icone_aide_ligne' => 'Yardım', |
|
| 248 | + 'icone_articles' => 'Makaleler', |
|
| 249 | + 'icone_auteurs' => 'Yazarlar', |
|
| 250 | + 'icone_brouteur' => 'Hızlı gezinti', |
|
| 251 | + 'icone_configuration_site' => 'Yapılandırma', |
|
| 252 | + 'icone_configurer_site' => 'Sitenizi yapılandırın', |
|
| 253 | + 'icone_creer_nouvel_auteur' => 'Yeni bir yazar oluştur', |
|
| 254 | + 'icone_creer_rubrique' => 'Bölüm oluştur', |
|
| 255 | + 'icone_creer_sous_rubrique' => 'Alt-bölüm oluştur', |
|
| 256 | + 'icone_deconnecter' => 'Çıkış', |
|
| 257 | + 'icone_discussions' => 'Tartışmalar', |
|
| 258 | + 'icone_doc_rubrique' => 'Bölüm belgeleri', |
|
| 259 | + 'icone_ecrire_article' => 'Yeni bir makale yaz', |
|
| 260 | + 'icone_edition_site' => 'Yayın', |
|
| 261 | + 'icone_gestion_langues' => 'Dillerin yönetimi', |
|
| 262 | + 'icone_informations_personnelles' => 'Kişisel bilgiler', |
|
| 263 | + 'icone_interface_complet' => 'Tüm arayüz', |
|
| 264 | + 'icone_interface_simple' => 'Basit arayüz', |
|
| 265 | + 'icone_maintenance_site' => 'Site bakımı', |
|
| 266 | + 'icone_messagerie_personnelle' => 'Kişisel iletiler', |
|
| 267 | + 'icone_repartition_debut' => 'Dağılımı en başından itibaren göster', |
|
| 268 | + 'icone_rubriques' => 'Bölümler', |
|
| 269 | + 'icone_sauver_site' => 'Siteyi yedekle', |
|
| 270 | + 'icone_site_entier' => 'Tüm site', |
|
| 271 | + 'icone_sites_references' => 'Önerilen siteler', |
|
| 272 | + 'icone_statistiques' => 'Site istatistikleri', |
|
| 273 | + 'icone_suivi_activite' => 'Site yaşamını izle', |
|
| 274 | + 'icone_suivi_actualite' => 'Site gelişimi', |
|
| 275 | + 'icone_suivi_pettions' => 'Dilekçeleri izle / Yönet', |
|
| 276 | + 'icone_suivi_revisions' => 'Makale değişiklikleri', |
|
| 277 | + 'icone_supprimer_document' => 'Bu belgeyi sil', |
|
| 278 | + 'icone_supprimer_image' => 'Bu resmi sil', |
|
| 279 | + 'icone_tous_articles' => 'Tüm makaleleriniz', |
|
| 280 | + 'icone_tous_auteur' => 'Tüm yazarlar', |
|
| 281 | + 'icone_visiter_site' => 'Ziyaret et', # MODIF |
|
| 282 | + 'icone_voir_en_ligne' => 'Çevrimiçi göster', |
|
| 283 | + 'img_indisponible' => 'resim mevcut değil', |
|
| 284 | + 'impossible' => 'olanaksız', |
|
| 285 | + 'info_a_suivre' => 'İZLENECEK »', |
|
| 286 | + 'info_acces_interdit' => 'Erişim yasak', |
|
| 287 | + 'info_acces_refuse' => 'Erişim reddedildi', |
|
| 288 | + 'info_action' => 'Eylem : @action@', |
|
| 289 | + 'info_administrer_rubriques' => 'Bu bölümü ve alt-bölümleri yönetebilirsiniz', |
|
| 290 | + 'info_adresse_non_indiquee' => 'Denenecek bir adres belirtmediniz !', |
|
| 291 | + 'info_aide' => 'YARDIM :', |
|
| 292 | + 'info_ajouter_mot' => 'Bu sözcüğü ekle', |
|
| 293 | + 'info_annonce' => 'DUYURU', |
|
| 294 | + 'info_annonces_generales' => 'Genel duyurular :', |
|
| 295 | + 'info_article_propose' => 'Önerilen makale', |
|
| 296 | + 'info_article_publie' => 'Yayınlanan makale', |
|
| 297 | + 'info_article_redaction' => 'Yazılmakta olan makale', |
|
| 298 | + 'info_article_refuse' => 'Reddedilen makale', |
|
| 299 | + 'info_article_supprime' => 'Silinen makale', |
|
| 300 | + 'info_articles' => 'Makaleler', |
|
| 301 | + 'info_articles_a_valider' => 'Onaylanacak makaleler', |
|
| 302 | + 'info_articles_proposes' => 'Önerilen makaleler', |
|
| 303 | + 'info_auteurs_nombre' => 'yazar(lar) :', |
|
| 304 | + 'info_authentification_ftp' => 'Onay (FTP ile)', |
|
| 305 | + 'info_breves_2' => 'kısa haberler', |
|
| 306 | + 'info_connexion_refusee' => 'Bağlantı reddedildi', |
|
| 307 | + 'info_contact_developpeur' => 'Lütfen bir program geliştirici ile temasa geçiniz.', |
|
| 308 | + 'info_contenance' => 'Site içeriği :', |
|
| 309 | + 'info_contribution' => 'Forum katkıları', # MODIF |
|
| 310 | + 'info_copyright' => '@spip@, @lien_gpl@ GPL lisansı ile dağıtılan serbest bir yazılımdır.', |
|
| 311 | + 'info_copyright_doc' => 'Ayrıntılı bilgi için, bkz. <a href="@spipnet@">http://www.spip.net/fr</a>.', # MODIF |
|
| 312 | + 'info_copyright_gpl' => 'GPL lisansı altında', |
|
| 313 | + 'info_cours_edition' => 'Yazılmakta olan makaleleriniz', # MODIF |
|
| 314 | + 'info_creer_repertoire' => 'Şu isimde bir dosya veya dizin oluşturunuz :', |
|
| 315 | + 'info_creer_repertoire_2' => '<b>@repertoire@</b> alt-dizini içerisinde, daha sonra :', |
|
| 316 | + 'info_creer_vignette' => 'otomatik ikon oluşturma', |
|
| 317 | + 'info_deplier' => 'Açılıp sergilenmesi', |
|
| 318 | + 'info_descriptif_nombre' => 'tanımlayıcı(lar) :', |
|
| 319 | + 'info_description' => 'Tanımlama :', |
|
| 320 | + 'info_description_2' => 'Tanımlama :', |
|
| 321 | + 'info_dimension' => 'Boyutlar :', |
|
| 322 | + 'info_ecire_message_prive' => 'Özel bir ileti yaz', |
|
| 323 | + 'info_email_invalide' => 'Geçersiz e-posta adresi.', |
|
| 324 | + 'info_en_cours_validation' => 'Yazılmakta olan makaleleriniz', |
|
| 325 | + 'info_en_ligne' => 'Şu anda çevrimiçi :', |
|
| 326 | + 'info_envoyer_message_prive' => 'Bu yazara özel bir ileti gönder', |
|
| 327 | + 'info_erreur_requete' => 'Aramada hata :', |
|
| 328 | + 'info_erreur_squelette2' => 'Hiçbir @fichier@ iskeleti müsait değil...', |
|
| 329 | + 'info_erreur_systeme' => 'Sistem hatası (hata no @errsys@)', |
|
| 330 | + 'info_erreur_systeme2' => 'Sabit disk dolu olabilir veya veritabanı hasar görmüş olabilir.<br /> |
|
| 331 | 331 | <span style="color:red;">Veritabanını <a href=\'@script@\'>onarmayı deneyiniz </a>, veya sitenizi barındıran firmayı arayınız.</span>', |
| 332 | - 'info_fini' => 'Bitti !', |
|
| 333 | - 'info_format_image' => 'İkon yaratmak için kullanılabilecek resim formatları : @gd_formats@.', |
|
| 334 | - 'info_format_non_defini' => 'tanımsız format', |
|
| 335 | - 'info_grand_ecran' => 'Büyük ekran', |
|
| 336 | - 'info_image_aide' => 'YARDIM', |
|
| 337 | - 'info_image_process_titre' => 'İkon oluşturma yöntemleri', |
|
| 338 | - 'info_impossible_lire_page' => '<b>Hata !</b> Sayfa vekil (proxy) üzerinden <tt><html>@test_proxy@</html></tt> okunamıyor <tt>', |
|
| 339 | - 'info_installation_systeme_publication' => 'Yayın sistemi kurulumu...', |
|
| 340 | - 'info_installer_documents' => '@upload@ dizininde bulunan tüm belgeleri otomatik olarak kurabilirsiniz. ', |
|
| 341 | - 'info_installer_ftp' => 'Yönetici olarak (FTP ile) @upload@ dizinine dosya gönderip sonra onları buradan direkt olarak seçebilirsiniz. ', |
|
| 342 | - 'info_installer_images' => 'JPEG, GIF ve PNG formatında resimler yükleyebilirsiniz.', |
|
| 343 | - 'info_installer_images_dossier' => 'Buradan seçim yapabilmek için @upload@ dizinine resim yükleyiniz. ', |
|
| 344 | - 'info_interface_complete' => 'Tam arayüz', |
|
| 345 | - 'info_interface_simple' => 'Basit arayüz', |
|
| 346 | - 'info_joindre_document_article' => 'Bu makaleye ekleyebileceğiniz belgeler ', |
|
| 347 | - 'info_joindre_document_rubrique' => 'Bu bölüme ekleyebileceğiniz belgeler ', |
|
| 348 | - 'info_joindre_documents_article' => 'Makalenize ekleyebileceğiniz belgeler :', |
|
| 349 | - 'info_l_article' => 'makale', |
|
| 350 | - 'info_la_breve' => 'kısa haber', |
|
| 351 | - 'info_la_rubrique' => 'bölüm', |
|
| 352 | - 'info_langue_principale' => 'Sitenin ana dili', |
|
| 353 | - 'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ piksel', |
|
| 354 | - 'info_les_auteurs_1' => 'yazan @les_auteurs@ ', |
|
| 355 | - 'info_logo_format_interdit' => 'Sadece @formats@ formatındaki logolar kullanılabilir.', |
|
| 356 | - 'info_logo_max_poids' => 'Logolar @maxi@ dan daha küçük olmalıdır (bu dosyanın boyutu @actuel@).', |
|
| 357 | - 'info_mail_fournisseur' => 'isminiz@hizmet_veren_firma.com', |
|
| 358 | - 'info_message_2' => 'İLETİ', |
|
| 359 | - 'info_message_supprime' => 'İLETİ SİLİNDİ', |
|
| 360 | - 'info_mise_en_ligne' => 'Çevrimiçi yayın tarihi :', |
|
| 361 | - 'info_modification_parametres_securite' => 'güvenlik parametreleri değişikliği', |
|
| 362 | - 'info_mois_courant' => 'Ay içinde :', |
|
| 363 | - 'info_mot_cle_ajoute' => 'Şu anahtar sözcük eklendi > ', |
|
| 364 | - 'info_multi_herit' => 'Varsayılan dil :', |
|
| 365 | - 'info_multi_langues_soulignees' => '<u>Altı çizili dillerin</u> arayüzde tüm metinlerin çevirileri bulunmaktadır. Bu dilleri seçerseniz, kamu sitesinin bir çok elemanı (tarihler, formlar) otomatik olarak çevrilecektir. Altı çizili olmayan diller için ise bu elemanlar sitenin başlıca dilinde görüntülenecektir.', # MODIF |
|
| 366 | - 'info_multilinguisme' => 'Çok dillilik', |
|
| 367 | - 'info_nom_non_utilisateurs_connectes' => 'Bağlı kullanıcılar listesinde isminiz görünmüyor.', |
|
| 368 | - 'info_nom_utilisateurs_connectes' => 'Bağlı kullanıcılar listesinde isminiz görünüyor.', |
|
| 369 | - 'info_nombre_en_ligne' => 'Şu anda çevrimiçi :', |
|
| 370 | - 'info_non_resultat' => '"@cherche_mot@" için hiç sonuç yok', |
|
| 371 | - 'info_non_utilisation_messagerie' => 'Bu sitenin iç ileti sistemini kullanmıyorsunuz.', |
|
| 372 | - 'info_nouveau_message' => 'YENİ BİR İLETİNİZ VAR', |
|
| 373 | - 'info_nouveaux_messages' => '@total_messages@ YENİ MESAJINIZ VAR', |
|
| 374 | - 'info_numero_abbreviation' => 'N° ', |
|
| 375 | - 'info_obligatoire' => 'Bu bilgi zorunludur.', |
|
| 376 | - 'info_pense_bete' => 'HATIRLATMA', |
|
| 377 | - 'info_petit_ecran' => 'Küçük ekran', |
|
| 378 | - 'info_petition_close' => 'Dilekçe kapandı', |
|
| 379 | - 'info_pixels' => 'Piksel', |
|
| 380 | - 'info_plusieurs_mots_trouves' => ' "@cherche_mot@" için birçok anahtar sözcük bulundu', |
|
| 381 | - 'info_portfolio_automatique' => 'Otomatik portföy :', |
|
| 382 | - 'info_premier_resultat' => '[Toplam @total@ dan @debut_limit@ ilk sonuç]', |
|
| 383 | - 'info_premier_resultat_sur' => '[@debut_limit@ ilk sonuç / @total@ sonuç]', |
|
| 384 | - 'info_propose_1' => '[@nom_site_spip@] Öneriyor : @titre@', |
|
| 385 | - 'info_propose_2' => 'Önerilen makale |
|
| 332 | + 'info_fini' => 'Bitti !', |
|
| 333 | + 'info_format_image' => 'İkon yaratmak için kullanılabilecek resim formatları : @gd_formats@.', |
|
| 334 | + 'info_format_non_defini' => 'tanımsız format', |
|
| 335 | + 'info_grand_ecran' => 'Büyük ekran', |
|
| 336 | + 'info_image_aide' => 'YARDIM', |
|
| 337 | + 'info_image_process_titre' => 'İkon oluşturma yöntemleri', |
|
| 338 | + 'info_impossible_lire_page' => '<b>Hata !</b> Sayfa vekil (proxy) üzerinden <tt><html>@test_proxy@</html></tt> okunamıyor <tt>', |
|
| 339 | + 'info_installation_systeme_publication' => 'Yayın sistemi kurulumu...', |
|
| 340 | + 'info_installer_documents' => '@upload@ dizininde bulunan tüm belgeleri otomatik olarak kurabilirsiniz. ', |
|
| 341 | + 'info_installer_ftp' => 'Yönetici olarak (FTP ile) @upload@ dizinine dosya gönderip sonra onları buradan direkt olarak seçebilirsiniz. ', |
|
| 342 | + 'info_installer_images' => 'JPEG, GIF ve PNG formatında resimler yükleyebilirsiniz.', |
|
| 343 | + 'info_installer_images_dossier' => 'Buradan seçim yapabilmek için @upload@ dizinine resim yükleyiniz. ', |
|
| 344 | + 'info_interface_complete' => 'Tam arayüz', |
|
| 345 | + 'info_interface_simple' => 'Basit arayüz', |
|
| 346 | + 'info_joindre_document_article' => 'Bu makaleye ekleyebileceğiniz belgeler ', |
|
| 347 | + 'info_joindre_document_rubrique' => 'Bu bölüme ekleyebileceğiniz belgeler ', |
|
| 348 | + 'info_joindre_documents_article' => 'Makalenize ekleyebileceğiniz belgeler :', |
|
| 349 | + 'info_l_article' => 'makale', |
|
| 350 | + 'info_la_breve' => 'kısa haber', |
|
| 351 | + 'info_la_rubrique' => 'bölüm', |
|
| 352 | + 'info_langue_principale' => 'Sitenin ana dili', |
|
| 353 | + 'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ piksel', |
|
| 354 | + 'info_les_auteurs_1' => 'yazan @les_auteurs@ ', |
|
| 355 | + 'info_logo_format_interdit' => 'Sadece @formats@ formatındaki logolar kullanılabilir.', |
|
| 356 | + 'info_logo_max_poids' => 'Logolar @maxi@ dan daha küçük olmalıdır (bu dosyanın boyutu @actuel@).', |
|
| 357 | + 'info_mail_fournisseur' => 'isminiz@hizmet_veren_firma.com', |
|
| 358 | + 'info_message_2' => 'İLETİ', |
|
| 359 | + 'info_message_supprime' => 'İLETİ SİLİNDİ', |
|
| 360 | + 'info_mise_en_ligne' => 'Çevrimiçi yayın tarihi :', |
|
| 361 | + 'info_modification_parametres_securite' => 'güvenlik parametreleri değişikliği', |
|
| 362 | + 'info_mois_courant' => 'Ay içinde :', |
|
| 363 | + 'info_mot_cle_ajoute' => 'Şu anahtar sözcük eklendi > ', |
|
| 364 | + 'info_multi_herit' => 'Varsayılan dil :', |
|
| 365 | + 'info_multi_langues_soulignees' => '<u>Altı çizili dillerin</u> arayüzde tüm metinlerin çevirileri bulunmaktadır. Bu dilleri seçerseniz, kamu sitesinin bir çok elemanı (tarihler, formlar) otomatik olarak çevrilecektir. Altı çizili olmayan diller için ise bu elemanlar sitenin başlıca dilinde görüntülenecektir.', # MODIF |
|
| 366 | + 'info_multilinguisme' => 'Çok dillilik', |
|
| 367 | + 'info_nom_non_utilisateurs_connectes' => 'Bağlı kullanıcılar listesinde isminiz görünmüyor.', |
|
| 368 | + 'info_nom_utilisateurs_connectes' => 'Bağlı kullanıcılar listesinde isminiz görünüyor.', |
|
| 369 | + 'info_nombre_en_ligne' => 'Şu anda çevrimiçi :', |
|
| 370 | + 'info_non_resultat' => '"@cherche_mot@" için hiç sonuç yok', |
|
| 371 | + 'info_non_utilisation_messagerie' => 'Bu sitenin iç ileti sistemini kullanmıyorsunuz.', |
|
| 372 | + 'info_nouveau_message' => 'YENİ BİR İLETİNİZ VAR', |
|
| 373 | + 'info_nouveaux_messages' => '@total_messages@ YENİ MESAJINIZ VAR', |
|
| 374 | + 'info_numero_abbreviation' => 'N° ', |
|
| 375 | + 'info_obligatoire' => 'Bu bilgi zorunludur.', |
|
| 376 | + 'info_pense_bete' => 'HATIRLATMA', |
|
| 377 | + 'info_petit_ecran' => 'Küçük ekran', |
|
| 378 | + 'info_petition_close' => 'Dilekçe kapandı', |
|
| 379 | + 'info_pixels' => 'Piksel', |
|
| 380 | + 'info_plusieurs_mots_trouves' => ' "@cherche_mot@" için birçok anahtar sözcük bulundu', |
|
| 381 | + 'info_portfolio_automatique' => 'Otomatik portföy :', |
|
| 382 | + 'info_premier_resultat' => '[Toplam @total@ dan @debut_limit@ ilk sonuç]', |
|
| 383 | + 'info_premier_resultat_sur' => '[@debut_limit@ ilk sonuç / @total@ sonuç]', |
|
| 384 | + 'info_propose_1' => '[@nom_site_spip@] Öneriyor : @titre@', |
|
| 385 | + 'info_propose_2' => 'Önerilen makale |
|
| 386 | 386 | ---------------', |
| 387 | - 'info_propose_3' => '"@titre@" makalesi yayınlanmak üzere önerildi.', |
|
| 388 | - 'info_propose_4' => 'Lütfen inceleyiniz ve görüşünüzü belirtiniz', |
|
| 389 | - 'info_propose_5' => 'bağlı olan forumda. Forumun adresi:', |
|
| 390 | - 'info_publie_01' => '"@titre@" makalesi @connect_nom@ tarafından onaylandı.', |
|
| 391 | - 'info_publie_1' => '[@nom_site_spip@] YAYINLANDI : @titre@', |
|
| 392 | - 'info_publie_2' => 'Yayınlanan makale |
|
| 387 | + 'info_propose_3' => '"@titre@" makalesi yayınlanmak üzere önerildi.', |
|
| 388 | + 'info_propose_4' => 'Lütfen inceleyiniz ve görüşünüzü belirtiniz', |
|
| 389 | + 'info_propose_5' => 'bağlı olan forumda. Forumun adresi:', |
|
| 390 | + 'info_publie_01' => '"@titre@" makalesi @connect_nom@ tarafından onaylandı.', |
|
| 391 | + 'info_publie_1' => '[@nom_site_spip@] YAYINLANDI : @titre@', |
|
| 392 | + 'info_publie_2' => 'Yayınlanan makale |
|
| 393 | 393 | -----------------', |
| 394 | - 'info_rechercher' => 'Ara', |
|
| 395 | - 'info_rechercher_02' => 'Ara :', |
|
| 396 | - 'info_remplacer_vignette' => 'Varsayılan etiketi kişiselleştirilmiş bir logo ile değiştir :', |
|
| 397 | - 'info_sans_titre_2' => 'başlıksız', |
|
| 398 | - 'info_selectionner_fichier' => '@upload@ dizininden bir dosya seçebilirsiniz. ', |
|
| 399 | - 'info_selectionner_fichier_2' => 'Bir dosya seç :', |
|
| 400 | - 'info_supprimer_vignette' => 'Bu etiketi sil', |
|
| 401 | - 'info_symbole_bleu' => '<b>Mavi</b> sembol bir <b>hatırlatmayı</b> gösterir : yani, kişisel kullanımınız için bir iletidir.', |
|
| 402 | - 'info_symbole_jaune' => '<b>Sarı</b> sembol <b>tüm editörlere yönelik</b> bir duyuruyu gösterir : tüm yöneticiler tarafından değiştirilebilir ve tüm editörler tarafından görülebilir. ', |
|
| 403 | - 'info_symbole_vert' => 'Sarı sembol sitenin başka kullanıcılarıyla yapılan ileti alışverişlerini gösterir.', |
|
| 404 | - 'info_telecharger_nouveau_logo' => 'Yeni bir logo yükle :', |
|
| 405 | - 'info_telecharger_ordinateur' => 'Bilgisayarınızdan indiriniz :', |
|
| 406 | - 'info_tous_resultats_enregistres' => '[tüm sonuçlar kaydedildi]', |
|
| 407 | - 'info_tout_afficher' => 'Tümünü görüntüle', |
|
| 408 | - 'info_travaux_texte' => 'Bu site henüz konfigüre edilmedi. Lütfen daha sonra uğrayınız.', |
|
| 409 | - 'info_travaux_titre' => 'Site yapım aşamasında.', |
|
| 410 | - 'info_trop_resultat' => ' "@cherche_mot@" için çok fazla sonuç çıktı; lütfen aramayı netleştirin.', |
|
| 411 | - 'info_utilisation_messagerie_interne' => 'Bu sitenin iç ileti sistemini kullanıyorsunuz.', |
|
| 412 | - 'info_valider_lien' => 'Bu bağlantıyı onayla', |
|
| 413 | - 'info_verifier_image' => 'Resimlerinizin doğru iletildiğinden emin olunuz.', |
|
| 414 | - 'info_vignette_defaut' => 'Varsayılan ikon', |
|
| 415 | - 'info_vignette_personnalisee' => 'Kişiselleştirilmiş etiket', |
|
| 416 | - 'info_visite' => 'Ziyaret :', |
|
| 417 | - 'info_vos_rendez_vous' => 'İlerideki randevularınız', |
|
| 418 | - 'infos_vos_pense_bete' => 'Hatırlatmalarınız', # MODIF |
|
| 394 | + 'info_rechercher' => 'Ara', |
|
| 395 | + 'info_rechercher_02' => 'Ara :', |
|
| 396 | + 'info_remplacer_vignette' => 'Varsayılan etiketi kişiselleştirilmiş bir logo ile değiştir :', |
|
| 397 | + 'info_sans_titre_2' => 'başlıksız', |
|
| 398 | + 'info_selectionner_fichier' => '@upload@ dizininden bir dosya seçebilirsiniz. ', |
|
| 399 | + 'info_selectionner_fichier_2' => 'Bir dosya seç :', |
|
| 400 | + 'info_supprimer_vignette' => 'Bu etiketi sil', |
|
| 401 | + 'info_symbole_bleu' => '<b>Mavi</b> sembol bir <b>hatırlatmayı</b> gösterir : yani, kişisel kullanımınız için bir iletidir.', |
|
| 402 | + 'info_symbole_jaune' => '<b>Sarı</b> sembol <b>tüm editörlere yönelik</b> bir duyuruyu gösterir : tüm yöneticiler tarafından değiştirilebilir ve tüm editörler tarafından görülebilir. ', |
|
| 403 | + 'info_symbole_vert' => 'Sarı sembol sitenin başka kullanıcılarıyla yapılan ileti alışverişlerini gösterir.', |
|
| 404 | + 'info_telecharger_nouveau_logo' => 'Yeni bir logo yükle :', |
|
| 405 | + 'info_telecharger_ordinateur' => 'Bilgisayarınızdan indiriniz :', |
|
| 406 | + 'info_tous_resultats_enregistres' => '[tüm sonuçlar kaydedildi]', |
|
| 407 | + 'info_tout_afficher' => 'Tümünü görüntüle', |
|
| 408 | + 'info_travaux_texte' => 'Bu site henüz konfigüre edilmedi. Lütfen daha sonra uğrayınız.', |
|
| 409 | + 'info_travaux_titre' => 'Site yapım aşamasında.', |
|
| 410 | + 'info_trop_resultat' => ' "@cherche_mot@" için çok fazla sonuç çıktı; lütfen aramayı netleştirin.', |
|
| 411 | + 'info_utilisation_messagerie_interne' => 'Bu sitenin iç ileti sistemini kullanıyorsunuz.', |
|
| 412 | + 'info_valider_lien' => 'Bu bağlantıyı onayla', |
|
| 413 | + 'info_verifier_image' => 'Resimlerinizin doğru iletildiğinden emin olunuz.', |
|
| 414 | + 'info_vignette_defaut' => 'Varsayılan ikon', |
|
| 415 | + 'info_vignette_personnalisee' => 'Kişiselleştirilmiş etiket', |
|
| 416 | + 'info_visite' => 'Ziyaret :', |
|
| 417 | + 'info_vos_rendez_vous' => 'İlerideki randevularınız', |
|
| 418 | + 'infos_vos_pense_bete' => 'Hatırlatmalarınız', # MODIF |
|
| 419 | 419 | |
| 420 | - // L |
|
| 421 | - 'lien_afficher_icones_seuls' => 'Sadece ikonları görüntüle', |
|
| 422 | - 'lien_afficher_texte_icones' => 'ikonları ve metni görüntüle', |
|
| 423 | - 'lien_afficher_texte_seul' => 'Sadece metni görüntüle', |
|
| 424 | - 'lien_liberer' => 'Serbest bırak', |
|
| 425 | - 'lien_liberer_tous' => 'Bu makaleleri serbest bırak', # MODIF |
|
| 426 | - 'lien_nouvea_pense_bete' => 'YENİ HATIRLATMA', |
|
| 427 | - 'lien_nouveau_message' => 'YENİ İLETİ', |
|
| 428 | - 'lien_nouvelle_annonce' => 'YENİ DUYURU', |
|
| 429 | - 'lien_petitions' => 'DİLEKÇE ', |
|
| 430 | - 'lien_popularite' => 'Popülerlik : @popularite@%', |
|
| 431 | - 'lien_racine_site' => 'SİTENİN KÖK DİZİNİ', |
|
| 432 | - 'lien_reessayer' => 'Tekrar dene', |
|
| 433 | - 'lien_repondre_message' => 'Bu iletiye yanıt ver', |
|
| 434 | - 'lien_supprimer' => 'Sil', |
|
| 435 | - 'lien_tout_afficher' => 'Tümünü görüntüle', |
|
| 436 | - 'lien_visite_site' => 'Bu siteyi ziyaret et', |
|
| 437 | - 'lien_visites' => '@visites@ ziyaret', |
|
| 438 | - 'lien_voir_auteur' => 'Bu yazarı görüntüle', |
|
| 439 | - 'ligne' => 'Satır', |
|
| 440 | - 'login' => 'Bağlantı', |
|
| 441 | - 'login_acces_prive' => 'Özel alana erişim', |
|
| 442 | - 'login_autre_identifiant' => 'Başka bir kullanıcı ismi ile bağlan', |
|
| 443 | - 'login_cookie_accepte' => 'Lütfen gezgininizi (en azından bu site için) bunları kabul edecek biçimde ayarlayınız.', |
|
| 444 | - 'login_cookie_oblige' => 'Kendinizi güvenli bir şekilde tanımlamak için çerezleri kabul etmelisiniz.', |
|
| 445 | - 'login_deconnexion_ok' => 'Bağlantıya son verildi.', |
|
| 446 | - 'login_erreur_pass' => 'Şifre hatası.', |
|
| 447 | - 'login_espace_prive' => 'Özel alan', |
|
| 448 | - 'login_identifiant_inconnu' => '"@login@" kullanıcı ismi tanınmıyor.', |
|
| 449 | - 'login_login' => 'Kullanıcı ismi :', |
|
| 450 | - 'login_login2' => 'Kullanıcı ismi :', # MODIF |
|
| 451 | - 'login_login_pass_incorrect' => '(Kullanıcı ismi veya şifre hatalı.)', |
|
| 452 | - 'login_motpasseoublie' => 'Şifreyi unuttum', |
|
| 453 | - 'login_non_securise' => 'Dikkat, bu form güvenli değil. |
|
| 420 | + // L |
|
| 421 | + 'lien_afficher_icones_seuls' => 'Sadece ikonları görüntüle', |
|
| 422 | + 'lien_afficher_texte_icones' => 'ikonları ve metni görüntüle', |
|
| 423 | + 'lien_afficher_texte_seul' => 'Sadece metni görüntüle', |
|
| 424 | + 'lien_liberer' => 'Serbest bırak', |
|
| 425 | + 'lien_liberer_tous' => 'Bu makaleleri serbest bırak', # MODIF |
|
| 426 | + 'lien_nouvea_pense_bete' => 'YENİ HATIRLATMA', |
|
| 427 | + 'lien_nouveau_message' => 'YENİ İLETİ', |
|
| 428 | + 'lien_nouvelle_annonce' => 'YENİ DUYURU', |
|
| 429 | + 'lien_petitions' => 'DİLEKÇE ', |
|
| 430 | + 'lien_popularite' => 'Popülerlik : @popularite@%', |
|
| 431 | + 'lien_racine_site' => 'SİTENİN KÖK DİZİNİ', |
|
| 432 | + 'lien_reessayer' => 'Tekrar dene', |
|
| 433 | + 'lien_repondre_message' => 'Bu iletiye yanıt ver', |
|
| 434 | + 'lien_supprimer' => 'Sil', |
|
| 435 | + 'lien_tout_afficher' => 'Tümünü görüntüle', |
|
| 436 | + 'lien_visite_site' => 'Bu siteyi ziyaret et', |
|
| 437 | + 'lien_visites' => '@visites@ ziyaret', |
|
| 438 | + 'lien_voir_auteur' => 'Bu yazarı görüntüle', |
|
| 439 | + 'ligne' => 'Satır', |
|
| 440 | + 'login' => 'Bağlantı', |
|
| 441 | + 'login_acces_prive' => 'Özel alana erişim', |
|
| 442 | + 'login_autre_identifiant' => 'Başka bir kullanıcı ismi ile bağlan', |
|
| 443 | + 'login_cookie_accepte' => 'Lütfen gezgininizi (en azından bu site için) bunları kabul edecek biçimde ayarlayınız.', |
|
| 444 | + 'login_cookie_oblige' => 'Kendinizi güvenli bir şekilde tanımlamak için çerezleri kabul etmelisiniz.', |
|
| 445 | + 'login_deconnexion_ok' => 'Bağlantıya son verildi.', |
|
| 446 | + 'login_erreur_pass' => 'Şifre hatası.', |
|
| 447 | + 'login_espace_prive' => 'Özel alan', |
|
| 448 | + 'login_identifiant_inconnu' => '"@login@" kullanıcı ismi tanınmıyor.', |
|
| 449 | + 'login_login' => 'Kullanıcı ismi :', |
|
| 450 | + 'login_login2' => 'Kullanıcı ismi :', # MODIF |
|
| 451 | + 'login_login_pass_incorrect' => '(Kullanıcı ismi veya şifre hatalı.)', |
|
| 452 | + 'login_motpasseoublie' => 'Şifreyi unuttum', |
|
| 453 | + 'login_non_securise' => 'Dikkat, bu form güvenli değil. |
|
| 454 | 454 | Eğer şifrenizin ağ üzerinde tesbit edilmesini istemiyorsanız, |
| 455 | 455 | lütfen gezgininizde Javascript’i çalıştırınız ve ', |
| 456 | - 'login_nouvelle_tentative' => 'Yeni deneme', |
|
| 457 | - 'login_par_ici' => 'Kayıt oldunuz... buradan devam ediniz...', |
|
| 458 | - 'login_pass2' => 'Şifre :', |
|
| 459 | - 'login_preferez_refuser' => '<b>Eğer çerezleri reddetmeyi tercih ediyorsanız,</b> başka (daha az güvenli) bir bağlantı yöntemi emrinizde :', |
|
| 460 | - 'login_recharger' => 'sayfayı tekrar yükle', |
|
| 461 | - 'login_rester_identifie' => 'Bir kaç gün tanımlanmış olarak kalayım', # MODIF |
|
| 462 | - 'login_retour_public' => 'Kamusal siteye dön', |
|
| 463 | - 'login_retour_site' => 'Kamusal siteye dön', |
|
| 464 | - 'login_retoursitepublic' => 'Kamusal siteye dön', |
|
| 465 | - 'login_sinscrire' => 'Kayıt ol', # MODIF |
|
| 466 | - 'login_test_navigateur' => 'Gezgini dene / Tekrar bağlan', |
|
| 467 | - 'login_verifiez_navigateur' => '(Ancak gezginin şifrenizi belleğe almadığından emin olunuz...)', |
|
| 456 | + 'login_nouvelle_tentative' => 'Yeni deneme', |
|
| 457 | + 'login_par_ici' => 'Kayıt oldunuz... buradan devam ediniz...', |
|
| 458 | + 'login_pass2' => 'Şifre :', |
|
| 459 | + 'login_preferez_refuser' => '<b>Eğer çerezleri reddetmeyi tercih ediyorsanız,</b> başka (daha az güvenli) bir bağlantı yöntemi emrinizde :', |
|
| 460 | + 'login_recharger' => 'sayfayı tekrar yükle', |
|
| 461 | + 'login_rester_identifie' => 'Bir kaç gün tanımlanmış olarak kalayım', # MODIF |
|
| 462 | + 'login_retour_public' => 'Kamusal siteye dön', |
|
| 463 | + 'login_retour_site' => 'Kamusal siteye dön', |
|
| 464 | + 'login_retoursitepublic' => 'Kamusal siteye dön', |
|
| 465 | + 'login_sinscrire' => 'Kayıt ol', # MODIF |
|
| 466 | + 'login_test_navigateur' => 'Gezgini dene / Tekrar bağlan', |
|
| 467 | + 'login_verifiez_navigateur' => '(Ancak gezginin şifrenizi belleğe almadığından emin olunuz...)', |
|
| 468 | 468 | |
| 469 | - // M |
|
| 470 | - 'masquer_colonne' => 'Bu sütunu sakla', |
|
| 471 | - 'masquer_trad' => 'çevirileri gizle', |
|
| 472 | - 'module_fichiers_langues' => 'Dil dosyaları', |
|
| 469 | + // M |
|
| 470 | + 'masquer_colonne' => 'Bu sütunu sakla', |
|
| 471 | + 'masquer_trad' => 'çevirileri gizle', |
|
| 472 | + 'module_fichiers_langues' => 'Dil dosyaları', |
|
| 473 | 473 | |
| 474 | - // N |
|
| 475 | - 'navigateur_pas_redirige' => 'Gezgininiz yeniden yönlenmiyorsa, devam etmek için buraya tıklayınız.', |
|
| 476 | - 'numero' => 'Numara', |
|
| 474 | + // N |
|
| 475 | + 'navigateur_pas_redirige' => 'Gezgininiz yeniden yönlenmiyorsa, devam etmek için buraya tıklayınız.', |
|
| 476 | + 'numero' => 'Numara', |
|
| 477 | 477 | |
| 478 | - // O |
|
| 479 | - 'occurence' => 'Tekrarlanış', |
|
| 480 | - 'onglet_affacer_base' => 'Veritabanını sil', |
|
| 481 | - 'onglet_auteur' => 'Yazar', |
|
| 482 | - 'onglet_contenu_site' => 'Sitenin içeriği', |
|
| 483 | - 'onglet_evolution_visite_mod' => 'Ziyaretlerin gelişimi', |
|
| 484 | - 'onglet_fonctions_avances' => 'Gelişmiş işlevler', |
|
| 485 | - 'onglet_informations_personnelles' => 'Kişisel bilgi', |
|
| 486 | - 'onglet_interactivite' => 'Etkileşim özelliği', |
|
| 487 | - 'onglet_messagerie' => 'İleti sistemi', |
|
| 488 | - 'onglet_repartition_rubrique' => 'Bölümlere göre dağılım', |
|
| 489 | - 'onglet_save_restaur_base' => 'Veritabanını yedekle / Geri yükle', |
|
| 490 | - 'onglet_vider_cache' => 'Önbelleği boşalt', |
|
| 478 | + // O |
|
| 479 | + 'occurence' => 'Tekrarlanış', |
|
| 480 | + 'onglet_affacer_base' => 'Veritabanını sil', |
|
| 481 | + 'onglet_auteur' => 'Yazar', |
|
| 482 | + 'onglet_contenu_site' => 'Sitenin içeriği', |
|
| 483 | + 'onglet_evolution_visite_mod' => 'Ziyaretlerin gelişimi', |
|
| 484 | + 'onglet_fonctions_avances' => 'Gelişmiş işlevler', |
|
| 485 | + 'onglet_informations_personnelles' => 'Kişisel bilgi', |
|
| 486 | + 'onglet_interactivite' => 'Etkileşim özelliği', |
|
| 487 | + 'onglet_messagerie' => 'İleti sistemi', |
|
| 488 | + 'onglet_repartition_rubrique' => 'Bölümlere göre dağılım', |
|
| 489 | + 'onglet_save_restaur_base' => 'Veritabanını yedekle / Geri yükle', |
|
| 490 | + 'onglet_vider_cache' => 'Önbelleği boşalt', |
|
| 491 | 491 | |
| 492 | - // P |
|
| 493 | - 'pass_choix_pass' => 'Lütfen yeni şifrenizi seçiniz :', |
|
| 494 | - 'pass_erreur' => 'Hata', |
|
| 495 | - 'pass_erreur_acces_refuse' => '<b>Hata : </b> artık bu siteye erişiminiz yoktur.', |
|
| 496 | - 'pass_erreur_code_inconnu' => 'Hata : bu şifre bu siteye erişimi olan hiç bir ziyaretçiye uymuyor.', |
|
| 497 | - 'pass_erreur_non_enregistre' => 'Hata : @email_oubli@ adresi bu siteye kayıtlı değil. ', |
|
| 498 | - 'pass_erreur_non_valide' => 'Hata : @email_oubli@ e-posta adresi geçerli değil !', |
|
| 499 | - 'pass_erreur_probleme_technique' => 'Hata : teknik bir sorundan ötürü e-posta gönderilemiyor.', |
|
| 500 | - 'pass_espace_prive_bla' => 'Bu sitenin özel alanı, |
|
| 492 | + // P |
|
| 493 | + 'pass_choix_pass' => 'Lütfen yeni şifrenizi seçiniz :', |
|
| 494 | + 'pass_erreur' => 'Hata', |
|
| 495 | + 'pass_erreur_acces_refuse' => '<b>Hata : </b> artık bu siteye erişiminiz yoktur.', |
|
| 496 | + 'pass_erreur_code_inconnu' => 'Hata : bu şifre bu siteye erişimi olan hiç bir ziyaretçiye uymuyor.', |
|
| 497 | + 'pass_erreur_non_enregistre' => 'Hata : @email_oubli@ adresi bu siteye kayıtlı değil. ', |
|
| 498 | + 'pass_erreur_non_valide' => 'Hata : @email_oubli@ e-posta adresi geçerli değil !', |
|
| 499 | + 'pass_erreur_probleme_technique' => 'Hata : teknik bir sorundan ötürü e-posta gönderilemiyor.', |
|
| 500 | + 'pass_espace_prive_bla' => 'Bu sitenin özel alanı, |
|
| 501 | 501 | kayıtlı ziyaretçilere açıktır. Kayıt olduktan sonra, |
| 502 | 502 | yazılmakta olan makalelere bakabilir, makale önerebilir |
| 503 | 503 | ve tüm forumlara katılabilirsiniz. ', |
| 504 | - 'pass_forum_bla' => 'Kayıtlı ziyaretçilere ayrılmış bir foruma |
|
| 504 | + 'pass_forum_bla' => 'Kayıtlı ziyaretçilere ayrılmış bir foruma |
|
| 505 | 505 | müdahale etmek istediniz. ', |
| 506 | - 'pass_indiquez_cidessous' => 'Daha önce kayıt olduğunuz e-posta adresinizi aşağıya belirtiniz. |
|
| 506 | + 'pass_indiquez_cidessous' => 'Daha önce kayıt olduğunuz e-posta adresinizi aşağıya belirtiniz. |
|
| 507 | 507 | Tekrar erişebilmek için gereken işlemi |
| 508 | 508 | belirten |
| 509 | 509 | bir e-posta alacaksınız. ', |
| 510 | - 'pass_mail_passcookie' => '(Bu otomatik bir iletidir) |
|
| 510 | + 'pass_mail_passcookie' => '(Bu otomatik bir iletidir) |
|
| 511 | 511 | |
| 512 | 512 | @nom_site_spip@ (@adresse_site@) |
| 513 | 513 | |
@@ -517,125 +517,125 @@ discard block |
||
| 517 | 517 | @sendcookie@ |
| 518 | 518 | O zaman yeni bir şifre girebilecek |
| 519 | 519 | ve tekrar siteye bağlanabileceksiniz. ', |
| 520 | - 'pass_mot_oublie' => 'Şifreyi unuttum', |
|
| 521 | - 'pass_nouveau_enregistre' => 'Yeni şifreniz kaydedildi.', |
|
| 522 | - 'pass_nouveau_pass' => 'Yeni şifre', |
|
| 523 | - 'pass_ok' => 'OK', |
|
| 524 | - 'pass_oubli_mot' => 'Şifremi unuttum', |
|
| 525 | - 'pass_quitter_fenetre' => 'Bu pencereyi terk et', |
|
| 526 | - 'pass_rappel_login' => 'Hatırlatma : kullanıcı isminiz « @login@ » dır.', |
|
| 527 | - 'pass_recevoir_mail' => 'Siteye erişiminizi yeniden nasıl kazanabileceğinizi belirten bir e-posta alacaksınız. ', # MODIF |
|
| 528 | - 'pass_retour_public' => 'Kamu sitesine dönüş', |
|
| 529 | - 'pass_rien_a_faire_ici' => 'Burada yapılacak bir şey yok.', |
|
| 530 | - 'pass_vousinscrire' => 'Bu siteye kaydolmanız', |
|
| 531 | - 'precedent' => 'önceki', |
|
| 532 | - 'previsualisation' => 'Öngörüntüle', |
|
| 533 | - 'previsualiser' => 'Öngörüntüle', |
|
| 520 | + 'pass_mot_oublie' => 'Şifreyi unuttum', |
|
| 521 | + 'pass_nouveau_enregistre' => 'Yeni şifreniz kaydedildi.', |
|
| 522 | + 'pass_nouveau_pass' => 'Yeni şifre', |
|
| 523 | + 'pass_ok' => 'OK', |
|
| 524 | + 'pass_oubli_mot' => 'Şifremi unuttum', |
|
| 525 | + 'pass_quitter_fenetre' => 'Bu pencereyi terk et', |
|
| 526 | + 'pass_rappel_login' => 'Hatırlatma : kullanıcı isminiz « @login@ » dır.', |
|
| 527 | + 'pass_recevoir_mail' => 'Siteye erişiminizi yeniden nasıl kazanabileceğinizi belirten bir e-posta alacaksınız. ', # MODIF |
|
| 528 | + 'pass_retour_public' => 'Kamu sitesine dönüş', |
|
| 529 | + 'pass_rien_a_faire_ici' => 'Burada yapılacak bir şey yok.', |
|
| 530 | + 'pass_vousinscrire' => 'Bu siteye kaydolmanız', |
|
| 531 | + 'precedent' => 'önceki', |
|
| 532 | + 'previsualisation' => 'Öngörüntüle', |
|
| 533 | + 'previsualiser' => 'Öngörüntüle', |
|
| 534 | 534 | |
| 535 | - // R |
|
| 536 | - 'retour' => 'Geri dön', |
|
| 535 | + // R |
|
| 536 | + 'retour' => 'Geri dön', |
|
| 537 | 537 | |
| 538 | - // S |
|
| 539 | - 'spip_conforme_dtd' => 'SPIP bu belgeyi DOCTYPE’e uygun buluyor :', |
|
| 540 | - 'squelette' => 'iskelet', |
|
| 541 | - 'squelette_inclus_ligne' => 'iskelet eklendi, satır', |
|
| 542 | - 'squelette_ligne' => 'iskelet, satır', |
|
| 543 | - 'stats_visites_et_popularite' => '@visites@ ziyaret; popülerlik : @popularite@', |
|
| 544 | - 'suivant' => 'sonraki', |
|
| 538 | + // S |
|
| 539 | + 'spip_conforme_dtd' => 'SPIP bu belgeyi DOCTYPE’e uygun buluyor :', |
|
| 540 | + 'squelette' => 'iskelet', |
|
| 541 | + 'squelette_inclus_ligne' => 'iskelet eklendi, satır', |
|
| 542 | + 'squelette_ligne' => 'iskelet, satır', |
|
| 543 | + 'stats_visites_et_popularite' => '@visites@ ziyaret; popülerlik : @popularite@', |
|
| 544 | + 'suivant' => 'sonraki', |
|
| 545 | 545 | |
| 546 | - // T |
|
| 547 | - 'taille_ko' => '@taille@ kb', |
|
| 548 | - 'taille_mo' => '@taille@ Mb', |
|
| 549 | - 'taille_octets' => '@taille@ bayt', |
|
| 550 | - 'taille_octets_bi' => '@taille@ bayt', |
|
| 551 | - 'texte_actualite_site_1' => 'Arayüze alışınca «', |
|
| 552 | - 'texte_actualite_site_2' => 'Tüm arayüz', |
|
| 553 | - 'texte_actualite_site_3' => '»’e tıklayarak daha fazla seçeneğe ulaşabilirsiniz.', |
|
| 554 | - 'texte_creation_automatique_vignette' => 'Bu sitede öngörüntüleme ikonlarının otomatik olarak yaratılması işlemi etkinleştirişmiştir. Eğer bu formdan hareket ederek @gd_formats@, formatlı resimler yüklerseniz, bunlara, en fazla @taille_preview@ piksel boyutunda bir ikon eşlik edecektir.', |
|
| 555 | - 'texte_documents_associes' => 'Aşağıdaki belgeler makale ile bağlantılı olup, |
|
| 546 | + // T |
|
| 547 | + 'taille_ko' => '@taille@ kb', |
|
| 548 | + 'taille_mo' => '@taille@ Mb', |
|
| 549 | + 'taille_octets' => '@taille@ bayt', |
|
| 550 | + 'taille_octets_bi' => '@taille@ bayt', |
|
| 551 | + 'texte_actualite_site_1' => 'Arayüze alışınca «', |
|
| 552 | + 'texte_actualite_site_2' => 'Tüm arayüz', |
|
| 553 | + 'texte_actualite_site_3' => '»’e tıklayarak daha fazla seçeneğe ulaşabilirsiniz.', |
|
| 554 | + 'texte_creation_automatique_vignette' => 'Bu sitede öngörüntüleme ikonlarının otomatik olarak yaratılması işlemi etkinleştirişmiştir. Eğer bu formdan hareket ederek @gd_formats@, formatlı resimler yüklerseniz, bunlara, en fazla @taille_preview@ piksel boyutunda bir ikon eşlik edecektir.', |
|
| 555 | + 'texte_documents_associes' => 'Aşağıdaki belgeler makale ile bağlantılı olup, |
|
| 556 | 556 | doğrudan makalenin içine dahil edilmemiştir. Kamu sitesinin sayfa düzenine göre, |
| 557 | 557 | sonradan belge eki olarak görülebilir.', |
| 558 | - 'texte_erreur_mise_niveau_base' => 'Güncelleme sırasında veritabanı hatası. @fichier@ resmi ulaşmadı (@id_article@ makalesi). Bu referansı kaydedip güncelemeyi tekrar deneyiniz ve resimlerin makalelerde görüldüğünden emin olunuz. ', |
|
| 559 | - 'texte_erreur_visiteur' => 'Özel alana, girişe izin vermeyen bir kullanıcı ismiyle erişmeyi denediniz.', |
|
| 560 | - 'texte_inc_auth_1' => '<b>@auth_login@</b> kullanıcı ismini girdiniz ancak veritabanında bu kullanıcı ismi yok/artık yok. Lütfen şunu deneyiniz', |
|
| 561 | - 'texte_inc_auth_2' => 'gezgininizi kapatıp tekrar çalıştırınız ve ', |
|
| 562 | - 'texte_inc_auth_3' => 'tekrar bağlanınız.', |
|
| 563 | - 'texte_inc_config' => 'Bu sayfalarda yapılan değişiklikler sitenizin işleyişi üzerinde büyük ölçüde etkilidir. SPIP sisteminin işleyişine aşina olmadığınız sürece müdahale etmemenizi öneririz. <br /><br /><b>Daha genel bir ifadeyle söylemek gerekirse bu sayfalarla ilgilenme işini sitenin Ağ Yöneticisi’ne bırakmanızı özellikle öneririz.</b>', |
|
| 564 | - 'texte_inc_meta_1' => 'Sistem <code>@fichier@</code> dosyasının yazılması sırasında bir hata ile karşılaştı. Lütfen, site yöneticisi olarak ', |
|
| 565 | - 'texte_inc_meta_2' => '(<code>ecrire/data/</code> dizinindeki) ', |
|
| 566 | - 'texte_inc_meta_3' => '<code>@repertoire@</code> dizinindeki yazma haklarını kontrol ediniz. ', |
|
| 567 | - 'texte_statut_en_cours_redaction' => 'Yazılıyor', |
|
| 568 | - 'texte_statut_poubelle' => 'Çöpe atıldı', |
|
| 569 | - 'texte_statut_propose_evaluation' => 'Değerlendirmeye alındı', |
|
| 570 | - 'texte_statut_publie' => 'Çevrimiçi yayınlandı', |
|
| 571 | - 'texte_statut_refuse' => 'Reddedildi', |
|
| 572 | - 'titre_ajouter_mot_cle' => 'BİR ANAHTAR-SÖZCÜK EKLE :', |
|
| 573 | - 'titre_cadre_raccourcis' => 'KISA YOLLAR :', |
|
| 574 | - 'titre_changer_couleur_interface' => 'Arayüz rengini değiştir', |
|
| 575 | - 'titre_image_admin_article' => 'Bu makaleyi yönetebilirsiniz', |
|
| 576 | - 'titre_image_administrateur' => 'Yönetici', |
|
| 577 | - 'titre_image_aide' => 'Bu eleman hakkında yardım', |
|
| 578 | - 'titre_image_auteur_supprime' => 'Silinmiş yazar', |
|
| 579 | - 'titre_image_redacteur' => 'Erişim hakkı olmayan yazar', |
|
| 580 | - 'titre_image_redacteur_02' => 'Yazar', |
|
| 581 | - 'titre_image_visiteur' => 'Ziyaretçi', |
|
| 582 | - 'titre_joindre_document' => 'BİR BELGE EKLE', |
|
| 583 | - 'titre_mots_cles' => 'ANAHTAR SÖZCÜKLER', |
|
| 584 | - 'titre_probleme_technique' => 'Dikkat : teknik bir sorun (SQL hizmet birimi) sitenin bu bölümüne erişimi engelliyor. Anlayışınız için teşekkürler.', |
|
| 585 | - 'titre_publier_document' => 'BU BÖLÜM ALTINDA BİR BELGE YAYINLA', |
|
| 586 | - 'titre_signatures_attente' => 'Onay bekleyen imzalar', |
|
| 587 | - 'titre_signatures_confirmees' => 'Onaylanmış imzalar', |
|
| 588 | - 'titre_statistiques' => 'Site istatistikleri', |
|
| 589 | - 'titre_titre_document' => 'Belge başlığı :', |
|
| 590 | - 'todo' => 'gelecek', |
|
| 591 | - 'trad_reference' => '(referans makale)', # MODIF |
|
| 558 | + 'texte_erreur_mise_niveau_base' => 'Güncelleme sırasında veritabanı hatası. @fichier@ resmi ulaşmadı (@id_article@ makalesi). Bu referansı kaydedip güncelemeyi tekrar deneyiniz ve resimlerin makalelerde görüldüğünden emin olunuz. ', |
|
| 559 | + 'texte_erreur_visiteur' => 'Özel alana, girişe izin vermeyen bir kullanıcı ismiyle erişmeyi denediniz.', |
|
| 560 | + 'texte_inc_auth_1' => '<b>@auth_login@</b> kullanıcı ismini girdiniz ancak veritabanında bu kullanıcı ismi yok/artık yok. Lütfen şunu deneyiniz', |
|
| 561 | + 'texte_inc_auth_2' => 'gezgininizi kapatıp tekrar çalıştırınız ve ', |
|
| 562 | + 'texte_inc_auth_3' => 'tekrar bağlanınız.', |
|
| 563 | + 'texte_inc_config' => 'Bu sayfalarda yapılan değişiklikler sitenizin işleyişi üzerinde büyük ölçüde etkilidir. SPIP sisteminin işleyişine aşina olmadığınız sürece müdahale etmemenizi öneririz. <br /><br /><b>Daha genel bir ifadeyle söylemek gerekirse bu sayfalarla ilgilenme işini sitenin Ağ Yöneticisi’ne bırakmanızı özellikle öneririz.</b>', |
|
| 564 | + 'texte_inc_meta_1' => 'Sistem <code>@fichier@</code> dosyasının yazılması sırasında bir hata ile karşılaştı. Lütfen, site yöneticisi olarak ', |
|
| 565 | + 'texte_inc_meta_2' => '(<code>ecrire/data/</code> dizinindeki) ', |
|
| 566 | + 'texte_inc_meta_3' => '<code>@repertoire@</code> dizinindeki yazma haklarını kontrol ediniz. ', |
|
| 567 | + 'texte_statut_en_cours_redaction' => 'Yazılıyor', |
|
| 568 | + 'texte_statut_poubelle' => 'Çöpe atıldı', |
|
| 569 | + 'texte_statut_propose_evaluation' => 'Değerlendirmeye alındı', |
|
| 570 | + 'texte_statut_publie' => 'Çevrimiçi yayınlandı', |
|
| 571 | + 'texte_statut_refuse' => 'Reddedildi', |
|
| 572 | + 'titre_ajouter_mot_cle' => 'BİR ANAHTAR-SÖZCÜK EKLE :', |
|
| 573 | + 'titre_cadre_raccourcis' => 'KISA YOLLAR :', |
|
| 574 | + 'titre_changer_couleur_interface' => 'Arayüz rengini değiştir', |
|
| 575 | + 'titre_image_admin_article' => 'Bu makaleyi yönetebilirsiniz', |
|
| 576 | + 'titre_image_administrateur' => 'Yönetici', |
|
| 577 | + 'titre_image_aide' => 'Bu eleman hakkında yardım', |
|
| 578 | + 'titre_image_auteur_supprime' => 'Silinmiş yazar', |
|
| 579 | + 'titre_image_redacteur' => 'Erişim hakkı olmayan yazar', |
|
| 580 | + 'titre_image_redacteur_02' => 'Yazar', |
|
| 581 | + 'titre_image_visiteur' => 'Ziyaretçi', |
|
| 582 | + 'titre_joindre_document' => 'BİR BELGE EKLE', |
|
| 583 | + 'titre_mots_cles' => 'ANAHTAR SÖZCÜKLER', |
|
| 584 | + 'titre_probleme_technique' => 'Dikkat : teknik bir sorun (SQL hizmet birimi) sitenin bu bölümüne erişimi engelliyor. Anlayışınız için teşekkürler.', |
|
| 585 | + 'titre_publier_document' => 'BU BÖLÜM ALTINDA BİR BELGE YAYINLA', |
|
| 586 | + 'titre_signatures_attente' => 'Onay bekleyen imzalar', |
|
| 587 | + 'titre_signatures_confirmees' => 'Onaylanmış imzalar', |
|
| 588 | + 'titre_statistiques' => 'Site istatistikleri', |
|
| 589 | + 'titre_titre_document' => 'Belge başlığı :', |
|
| 590 | + 'todo' => 'gelecek', |
|
| 591 | + 'trad_reference' => '(referans makale)', # MODIF |
|
| 592 | 592 | |
| 593 | - // Z |
|
| 594 | - 'zbug_balise_b_aval' => ' : B etiketinde sorun var', |
|
| 595 | - 'zbug_balise_inexistante' => 'hata @from@: #@balise@ komutu mevcut değil', # MODIF |
|
| 596 | - 'zbug_balise_sans_argument' => '@balise@ komutunda argüman eksik', |
|
| 597 | - 'zbug_boucle' => 'döngü', |
|
| 598 | - 'zbug_boucle_recursive_undef' => 'tanımsız tekrarlı döngü', # MODIF |
|
| 599 | - 'zbug_calcul' => 'hesaplama', |
|
| 600 | - 'zbug_champ_hors_boucle' => '@champ@ alanı döngü dışında', |
|
| 601 | - 'zbug_champ_hors_motif' => '@champ@ alanı @motif@ döngüsü dışında ', # MODIF |
|
| 602 | - 'zbug_code' => 'kod', |
|
| 603 | - 'zbug_critere_inconnu' => 'tanımsız kriter @critere@', # MODIF |
|
| 604 | - 'zbug_distant_interdit' => 'yasaklanmış dış veri dosyası', # MODIF |
|
| 605 | - 'zbug_doublon_table_sans_cle_primaire' => 'endekssiz bir tabloda tekrarlar var', # MODIF |
|
| 606 | - 'zbug_doublon_table_sans_index' => 'endekslenmemiş bir tabloda tekrarlanan bilgiler', # MODIF |
|
| 607 | - 'zbug_erreur_boucle_double' => 'DÖNGÜ@id@: çift tanımlı', # MODIF |
|
| 608 | - 'zbug_erreur_boucle_fermant' => 'DÖNGÜ@id@: kapatma etiketi eksik', # MODIF |
|
| 609 | - 'zbug_erreur_boucle_syntaxe' => 'Döngü tümcesi hatalı', # MODIF |
|
| 610 | - 'zbug_erreur_compilation' => 'derleme hatası', |
|
| 611 | - 'zbug_erreur_execution_page' => 'sayfa işletilirken hata oluştu', # MODIF |
|
| 612 | - 'zbug_erreur_filtre' => 'Hata : <b>« @filtre@ »</b> filtresi tanımsız', # MODIF |
|
| 613 | - 'zbug_erreur_meme_parent' => '{meme_parent} sadece (FORUMS) veya (RUBRIQUES) için uygulanabilir', # MODIF |
|
| 614 | - 'zbug_erreur_squelette' => 'İskelette hata var', |
|
| 615 | - 'zbug_hors_compilation' => 'Derleme Dışı', |
|
| 616 | - 'zbug_info_erreur_squelette' => 'Sitede hata var', |
|
| 617 | - 'zbug_inversion_ordre_inexistant' => 'olmayan bir sıralama ters çevrilemez', # MODIF |
|
| 618 | - 'zbug_pagination_sans_critere' => 'kritersiz veya kendini çağıran döngüde kullanılan #PAGINATION {pagination} ', # MODIF |
|
| 619 | - 'zbug_parametres_inclus_incorrects' => 'Ekleme parametreleri hatalı', # MODIF |
|
| 620 | - 'zbug_profile' => 'Hesaplama süresi : @time@', |
|
| 621 | - 'zbug_resultat' => 'sonuç', |
|
| 622 | - 'zbug_serveur_indefini' => 'SQL hizmet birimi tanımsız', # MODIF |
|
| 623 | - 'zbug_statistiques' => 'Süreye göre sınıflanmış SQL istekleri istatistikleri', |
|
| 624 | - 'zbug_table_inconnue' => '« @table@ » SQL tablosu tanımsız', |
|
| 625 | - 'zxml_connus_attributs' => 'bilinen öznitelikler', |
|
| 626 | - 'zxml_de' => 'nın / nin', |
|
| 627 | - 'zxml_inconnu_attribut' => 'bilinmeyen öznitelik', |
|
| 628 | - 'zxml_inconnu_balise' => 'bilinmeyen etiket', |
|
| 629 | - 'zxml_inconnu_entite' => 'bilinmeyen madde', |
|
| 630 | - 'zxml_inconnu_id' => 'bilinmeyen ID', |
|
| 631 | - 'zxml_mais_de' => 'ama nın / nin', |
|
| 632 | - 'zxml_non_conforme' => 'amaca uygun değil', |
|
| 633 | - 'zxml_non_fils' => 'bir alt maddesi değil', |
|
| 634 | - 'zxml_nonvide_balise' => 'boş olmayan etiket', |
|
| 635 | - 'zxml_obligatoire_attribut' => 'zorunlu ama belirtilmemiş etiket', |
|
| 636 | - 'zxml_succession_fils_incorrecte' => 'alt maddelerin peşpeşe gelmesi hatalı', |
|
| 637 | - 'zxml_survoler' => 'doğruları görmek için üzerindne geçmek ???', |
|
| 638 | - 'zxml_valeur_attribut' => 'özniteliğin değeri', |
|
| 639 | - 'zxml_vide_balise' => 'boş etiket', |
|
| 640 | - 'zxml_vu' => 'önceden görülen' |
|
| 593 | + // Z |
|
| 594 | + 'zbug_balise_b_aval' => ' : B etiketinde sorun var', |
|
| 595 | + 'zbug_balise_inexistante' => 'hata @from@: #@balise@ komutu mevcut değil', # MODIF |
|
| 596 | + 'zbug_balise_sans_argument' => '@balise@ komutunda argüman eksik', |
|
| 597 | + 'zbug_boucle' => 'döngü', |
|
| 598 | + 'zbug_boucle_recursive_undef' => 'tanımsız tekrarlı döngü', # MODIF |
|
| 599 | + 'zbug_calcul' => 'hesaplama', |
|
| 600 | + 'zbug_champ_hors_boucle' => '@champ@ alanı döngü dışında', |
|
| 601 | + 'zbug_champ_hors_motif' => '@champ@ alanı @motif@ döngüsü dışında ', # MODIF |
|
| 602 | + 'zbug_code' => 'kod', |
|
| 603 | + 'zbug_critere_inconnu' => 'tanımsız kriter @critere@', # MODIF |
|
| 604 | + 'zbug_distant_interdit' => 'yasaklanmış dış veri dosyası', # MODIF |
|
| 605 | + 'zbug_doublon_table_sans_cle_primaire' => 'endekssiz bir tabloda tekrarlar var', # MODIF |
|
| 606 | + 'zbug_doublon_table_sans_index' => 'endekslenmemiş bir tabloda tekrarlanan bilgiler', # MODIF |
|
| 607 | + 'zbug_erreur_boucle_double' => 'DÖNGÜ@id@: çift tanımlı', # MODIF |
|
| 608 | + 'zbug_erreur_boucle_fermant' => 'DÖNGÜ@id@: kapatma etiketi eksik', # MODIF |
|
| 609 | + 'zbug_erreur_boucle_syntaxe' => 'Döngü tümcesi hatalı', # MODIF |
|
| 610 | + 'zbug_erreur_compilation' => 'derleme hatası', |
|
| 611 | + 'zbug_erreur_execution_page' => 'sayfa işletilirken hata oluştu', # MODIF |
|
| 612 | + 'zbug_erreur_filtre' => 'Hata : <b>« @filtre@ »</b> filtresi tanımsız', # MODIF |
|
| 613 | + 'zbug_erreur_meme_parent' => '{meme_parent} sadece (FORUMS) veya (RUBRIQUES) için uygulanabilir', # MODIF |
|
| 614 | + 'zbug_erreur_squelette' => 'İskelette hata var', |
|
| 615 | + 'zbug_hors_compilation' => 'Derleme Dışı', |
|
| 616 | + 'zbug_info_erreur_squelette' => 'Sitede hata var', |
|
| 617 | + 'zbug_inversion_ordre_inexistant' => 'olmayan bir sıralama ters çevrilemez', # MODIF |
|
| 618 | + 'zbug_pagination_sans_critere' => 'kritersiz veya kendini çağıran döngüde kullanılan #PAGINATION {pagination} ', # MODIF |
|
| 619 | + 'zbug_parametres_inclus_incorrects' => 'Ekleme parametreleri hatalı', # MODIF |
|
| 620 | + 'zbug_profile' => 'Hesaplama süresi : @time@', |
|
| 621 | + 'zbug_resultat' => 'sonuç', |
|
| 622 | + 'zbug_serveur_indefini' => 'SQL hizmet birimi tanımsız', # MODIF |
|
| 623 | + 'zbug_statistiques' => 'Süreye göre sınıflanmış SQL istekleri istatistikleri', |
|
| 624 | + 'zbug_table_inconnue' => '« @table@ » SQL tablosu tanımsız', |
|
| 625 | + 'zxml_connus_attributs' => 'bilinen öznitelikler', |
|
| 626 | + 'zxml_de' => 'nın / nin', |
|
| 627 | + 'zxml_inconnu_attribut' => 'bilinmeyen öznitelik', |
|
| 628 | + 'zxml_inconnu_balise' => 'bilinmeyen etiket', |
|
| 629 | + 'zxml_inconnu_entite' => 'bilinmeyen madde', |
|
| 630 | + 'zxml_inconnu_id' => 'bilinmeyen ID', |
|
| 631 | + 'zxml_mais_de' => 'ama nın / nin', |
|
| 632 | + 'zxml_non_conforme' => 'amaca uygun değil', |
|
| 633 | + 'zxml_non_fils' => 'bir alt maddesi değil', |
|
| 634 | + 'zxml_nonvide_balise' => 'boş olmayan etiket', |
|
| 635 | + 'zxml_obligatoire_attribut' => 'zorunlu ama belirtilmemiş etiket', |
|
| 636 | + 'zxml_succession_fils_incorrecte' => 'alt maddelerin peşpeşe gelmesi hatalı', |
|
| 637 | + 'zxml_survoler' => 'doğruları görmek için üzerindne geçmek ???', |
|
| 638 | + 'zxml_valeur_attribut' => 'özniteliğin değeri', |
|
| 639 | + 'zxml_vide_balise' => 'boş etiket', |
|
| 640 | + 'zxml_vu' => 'önceden görülen' |
|
| 641 | 641 | ); |
@@ -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,137 +591,137 @@ 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 | - 'taille_octets_bi' => ' @taille@ bytes', |
|
| 627 | - 'texte_actualite_site_1' => 'Quando você estiver mais familiarizado com a interface, clique em «', |
|
| 628 | - 'texte_actualite_site_2' => 'interface completa', |
|
| 629 | - 'texte_actualite_site_3' => '» para abrir mais possibilidades.', |
|
| 630 | - '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.', |
|
| 631 | - '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 | + 'taille_octets_bi' => ' @taille@ bytes', |
|
| 627 | + 'texte_actualite_site_1' => 'Quando você estiver mais familiarizado com a interface, clique em «', |
|
| 628 | + 'texte_actualite_site_2' => 'interface completa', |
|
| 629 | + 'texte_actualite_site_3' => '» para abrir mais possibilidades.', |
|
| 630 | + '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.', |
|
| 631 | + 'texte_documents_associes' => 'Os documentos a seguir estão associados à matéria, |
|
| 632 | 632 | mas eles não foram inseridos diretamente. Dependendo da elaboração dos templates do site público, eles podem aparecer como documentos anexados.', |
| 633 | - 'texte_erreur_mise_niveau_base' => 'Erro da base de dados durante a atualização. |
|
| 633 | + 'texte_erreur_mise_niveau_base' => 'Erro da base de dados durante a atualização. |
|
| 634 | 634 | A imagem <b>@fichier@</b> não passou (matéria @id_article@). |
| 635 | 635 | Anote esta referência, tente novamente a atualização e, finalmente, verifique se as imagens aparecem nas matérias.', |
| 636 | - 'texte_erreur_visiteur' => 'Você tentou acessar o espaço restrito com um login que não tem a permissão necessária.', |
|
| 637 | - 'texte_inc_auth_1' => 'Você se identificou com o login <b>@auth_login@</b>, mas ele não consta (mais) na base. |
|
| 636 | + 'texte_erreur_visiteur' => 'Você tentou acessar o espaço restrito com um login que não tem a permissão necessária.', |
|
| 637 | + 'texte_inc_auth_1' => 'Você se identificou com o login <b>@auth_login@</b>, mas ele não consta (mais) na base. |
|
| 638 | 638 | Tente se', |
| 639 | - 'texte_inc_auth_2' => 'reconectar', |
|
| 640 | - 'texte_inc_auth_3' => ', após ter eventualmente saído e reiniciado o seu navegador.', |
|
| 641 | - '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>', |
|
| 642 | - 'texte_inc_meta_1' => 'O sistema encontrou um erro durante a escrita do arquivo <code>@fichier@</code>. Como administrador do site, queira por favor,', |
|
| 643 | - 'texte_inc_meta_2' => 'Verificar os direitos de escrita', |
|
| 644 | - 'texte_inc_meta_3' => 'no diretório <code>@repertoire@</code>.', |
|
| 645 | - 'texte_statut_en_cours_redaction' => 'em fase de redação', |
|
| 646 | - 'texte_statut_poubelle' => 'na lixeira', |
|
| 647 | - 'texte_statut_propose_evaluation' => 'proposto para avaliação', |
|
| 648 | - 'texte_statut_publie' => 'publicado online', |
|
| 649 | - 'texte_statut_refuse' => 'recusado', |
|
| 650 | - 'titre_ajouter_mot_cle' => 'INCLUIR UMA PALAVRA-CHAVE:', |
|
| 651 | - 'titre_cadre_raccourcis' => 'ATALHOS:', |
|
| 652 | - 'titre_changer_couleur_interface' => 'Alterar a côr da interface', |
|
| 653 | - 'titre_image_admin_article' => 'Você pode administrar esta matéria', |
|
| 654 | - 'titre_image_administrateur' => 'Administrador', |
|
| 655 | - 'titre_image_aide' => 'Ajuda sobre este elemento', |
|
| 656 | - 'titre_image_auteur_supprime' => 'Autor excluído', |
|
| 657 | - 'titre_image_redacteur' => 'Redator sem acesso', |
|
| 658 | - 'titre_image_redacteur_02' => 'Redator', |
|
| 659 | - 'titre_image_selecteur' => 'Ver a lista', |
|
| 660 | - 'titre_image_visiteur' => 'Visitante', |
|
| 661 | - 'titre_joindre_document' => 'INCLUIR UM DOCUMENTO', |
|
| 662 | - 'titre_mots_cles' => 'PALAVRAS-CHAVE', |
|
| 663 | - 'titre_probleme_technique' => 'Atenção: um problema técnico (servidor SQL) impede o acesso a esta parte do site. Agradecemos sua compreensão.', |
|
| 664 | - 'titre_publier_document' => 'PUBLICAR UM DOCUMENTO NESTA SEÇÃO', |
|
| 665 | - 'titre_signatures_attente' => 'Assinaturas aguardando validação', |
|
| 666 | - 'titre_signatures_confirmees' => 'Assinaturas confirmadas', |
|
| 667 | - 'titre_statistiques' => 'Estatísticas do site', |
|
| 668 | - 'titre_titre_document' => 'Título do documento:', |
|
| 669 | - 'todo' => 'breve', |
|
| 670 | - 'trad_definir_reference' => 'Escolher "@titre@" como referência das traduções', |
|
| 671 | - 'trad_reference' => '(matéria das traduções)', |
|
| 639 | + 'texte_inc_auth_2' => 'reconectar', |
|
| 640 | + 'texte_inc_auth_3' => ', após ter eventualmente saído e reiniciado o seu navegador.', |
|
| 641 | + '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>', |
|
| 642 | + 'texte_inc_meta_1' => 'O sistema encontrou um erro durante a escrita do arquivo <code>@fichier@</code>. Como administrador do site, queira por favor,', |
|
| 643 | + 'texte_inc_meta_2' => 'Verificar os direitos de escrita', |
|
| 644 | + 'texte_inc_meta_3' => 'no diretório <code>@repertoire@</code>.', |
|
| 645 | + 'texte_statut_en_cours_redaction' => 'em fase de redação', |
|
| 646 | + 'texte_statut_poubelle' => 'na lixeira', |
|
| 647 | + 'texte_statut_propose_evaluation' => 'proposto para avaliação', |
|
| 648 | + 'texte_statut_publie' => 'publicado online', |
|
| 649 | + 'texte_statut_refuse' => 'recusado', |
|
| 650 | + 'titre_ajouter_mot_cle' => 'INCLUIR UMA PALAVRA-CHAVE:', |
|
| 651 | + 'titre_cadre_raccourcis' => 'ATALHOS:', |
|
| 652 | + 'titre_changer_couleur_interface' => 'Alterar a côr da interface', |
|
| 653 | + 'titre_image_admin_article' => 'Você pode administrar esta matéria', |
|
| 654 | + 'titre_image_administrateur' => 'Administrador', |
|
| 655 | + 'titre_image_aide' => 'Ajuda sobre este elemento', |
|
| 656 | + 'titre_image_auteur_supprime' => 'Autor excluído', |
|
| 657 | + 'titre_image_redacteur' => 'Redator sem acesso', |
|
| 658 | + 'titre_image_redacteur_02' => 'Redator', |
|
| 659 | + 'titre_image_selecteur' => 'Ver a lista', |
|
| 660 | + 'titre_image_visiteur' => 'Visitante', |
|
| 661 | + 'titre_joindre_document' => 'INCLUIR UM DOCUMENTO', |
|
| 662 | + 'titre_mots_cles' => 'PALAVRAS-CHAVE', |
|
| 663 | + 'titre_probleme_technique' => 'Atenção: um problema técnico (servidor SQL) impede o acesso a esta parte do site. Agradecemos sua compreensão.', |
|
| 664 | + 'titre_publier_document' => 'PUBLICAR UM DOCUMENTO NESTA SEÇÃO', |
|
| 665 | + 'titre_signatures_attente' => 'Assinaturas aguardando validação', |
|
| 666 | + 'titre_signatures_confirmees' => 'Assinaturas confirmadas', |
|
| 667 | + 'titre_statistiques' => 'Estatísticas do site', |
|
| 668 | + 'titre_titre_document' => 'Título do documento:', |
|
| 669 | + 'todo' => 'breve', |
|
| 670 | + 'trad_definir_reference' => 'Escolher "@titre@" como referência das traduções', |
|
| 671 | + 'trad_reference' => '(matéria das traduções)', |
|
| 672 | 672 | |
| 673 | - // U |
|
| 674 | - 'upload_limit' => 'Este arquivo é grande demais para o servidor; o tamanho máximo autorizado para <i>upload</i> é de @max@.', |
|
| 673 | + // U |
|
| 674 | + 'upload_limit' => 'Este arquivo é grande demais para o servidor; o tamanho máximo autorizado para <i>upload</i> é de @max@.', |
|
| 675 | 675 | |
| 676 | - // Z |
|
| 677 | - 'zbug_balise_b_aval' => ': tag B colocada após BOUCLE', |
|
| 678 | - 'zbug_balise_inexistante' => 'Tag @balise@ mal declarada para @from@', |
|
| 679 | - 'zbug_balise_sans_argument' => 'Falta um arqumento na tag @balise@', |
|
| 680 | - 'zbug_boucle' => 'laço', |
|
| 681 | - 'zbug_boucle_recursive_undef' => 'Laço recursivo não definido: @nom@', |
|
| 682 | - 'zbug_calcul' => 'cálculo', |
|
| 683 | - 'zbug_champ_hors_boucle' => 'Campo @champ@ fora do laço', |
|
| 684 | - 'zbug_champ_hors_critere' => 'Campo @champ@ fora do critério @critere@', |
|
| 685 | - 'zbug_champ_hors_motif' => 'Campo @champ@ fora de um contexto @motif@', |
|
| 686 | - 'zbug_code' => 'código', |
|
| 687 | - 'zbug_critere_inconnu' => 'Critério @critere@ desconhecido', |
|
| 688 | - 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} em uma tabela sem chave primária atômica', |
|
| 689 | - 'zbug_distant_interdit' => 'Externa interdita', |
|
| 690 | - 'zbug_doublon_table_sans_cle_primaire' => 'Duplicação em tabela sem chave primária atômica', |
|
| 691 | - 'zbug_doublon_table_sans_index' => 'Doublons em uma tabela sem index', |
|
| 692 | - 'zbug_erreur_boucle_double' => 'Dupla definição do laço @id@', |
|
| 693 | - 'zbug_erreur_boucle_fermant' => 'Laço @id@ não fechado', |
|
| 694 | - 'zbug_erreur_boucle_syntaxe' => 'Sintaxe do laço @id@ está incorreta', |
|
| 695 | - 'zbug_erreur_compilation' => 'Erro de compilação', |
|
| 696 | - 'zbug_erreur_execution_page' => 'Erro de execução', |
|
| 697 | - 'zbug_erreur_filtre' => 'Filtro @filtre@ não definido', |
|
| 698 | - 'zbug_erreur_filtre_nbarg_min' => 'Filtro @filtre@: falta(m) @nb@ argumento(s)', |
|
| 699 | - 'zbug_erreur_meme_parent' => 'O critério {meme_parent} aplica-se exclusivamente aos laços (FORUMS) ou (RUBRIQUES)', |
|
| 700 | - 'zbug_erreur_squelette' => 'Erro(s) no template', |
|
| 701 | - 'zbug_hors_compilation' => 'Fora de Compilação', |
|
| 702 | - 'zbug_info_erreur_squelette' => 'Erro no site', |
|
| 703 | - 'zbug_inversion_ordre_inexistant' => 'Inversão de uma ordem inexistente', |
|
| 704 | - 'zbug_pagination_sans_critere' => 'Tag #PAGINATION sem critério {pagination} ou usada dentro de uma boucle recursiva', |
|
| 705 | - 'zbug_parametres_inclus_incorrects' => 'Parâmetro de inclusão incorreto: @param@', |
|
| 706 | - 'zbug_profile' => 'Tempo de processamento: @time@', |
|
| 707 | - 'zbug_resultat' => 'resultado', |
|
| 708 | - 'zbug_serveur_indefini' => 'Sevidor SQL não definido', |
|
| 709 | - 'zbug_statistiques' => 'Estatísticas das requisições SQL classificadas por duração', |
|
| 710 | - 'zbug_table_inconnue' => 'Tabela SQL «@table@» desconhecida', |
|
| 711 | - 'zxml_connus_attributs' => 'atributos conhecidos', |
|
| 712 | - 'zxml_de' => 'de', |
|
| 713 | - 'zxml_inconnu_attribut' => 'atributo desconhecido', |
|
| 714 | - 'zxml_inconnu_balise' => 'tag desconhecida', |
|
| 715 | - 'zxml_inconnu_entite' => 'entidade desconhecida', |
|
| 716 | - 'zxml_inconnu_id' => 'ID desconhecida', |
|
| 717 | - 'zxml_mais_de' => 'mas de', |
|
| 718 | - 'zxml_non_conforme' => 'não está de acordo com o motivo', |
|
| 719 | - 'zxml_non_fils' => 'não é filho de', |
|
| 720 | - 'zxml_nonvide_balise' => 'tag não vazia', |
|
| 721 | - 'zxml_obligatoire_attribut' => 'atributo obrigatório mas ausente em', |
|
| 722 | - 'zxml_succession_fils_incorrecte' => 'sucessão de filhos incorreta', |
|
| 723 | - 'zxml_survoler' => 'sobrepor para ver os corretos', |
|
| 724 | - 'zxml_valeur_attribut' => 'valor do atributo', |
|
| 725 | - 'zxml_vide_balise' => 'tag vazia', |
|
| 726 | - 'zxml_vu' => 'previsualização' |
|
| 676 | + // Z |
|
| 677 | + 'zbug_balise_b_aval' => ': tag B colocada após BOUCLE', |
|
| 678 | + 'zbug_balise_inexistante' => 'Tag @balise@ mal declarada para @from@', |
|
| 679 | + 'zbug_balise_sans_argument' => 'Falta um arqumento na tag @balise@', |
|
| 680 | + 'zbug_boucle' => 'laço', |
|
| 681 | + 'zbug_boucle_recursive_undef' => 'Laço recursivo não definido: @nom@', |
|
| 682 | + 'zbug_calcul' => 'cálculo', |
|
| 683 | + 'zbug_champ_hors_boucle' => 'Campo @champ@ fora do laço', |
|
| 684 | + 'zbug_champ_hors_critere' => 'Campo @champ@ fora do critério @critere@', |
|
| 685 | + 'zbug_champ_hors_motif' => 'Campo @champ@ fora de um contexto @motif@', |
|
| 686 | + 'zbug_code' => 'código', |
|
| 687 | + 'zbug_critere_inconnu' => 'Critério @critere@ desconhecido', |
|
| 688 | + 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} em uma tabela sem chave primária atômica', |
|
| 689 | + 'zbug_distant_interdit' => 'Externa interdita', |
|
| 690 | + 'zbug_doublon_table_sans_cle_primaire' => 'Duplicação em tabela sem chave primária atômica', |
|
| 691 | + 'zbug_doublon_table_sans_index' => 'Doublons em uma tabela sem index', |
|
| 692 | + 'zbug_erreur_boucle_double' => 'Dupla definição do laço @id@', |
|
| 693 | + 'zbug_erreur_boucle_fermant' => 'Laço @id@ não fechado', |
|
| 694 | + 'zbug_erreur_boucle_syntaxe' => 'Sintaxe do laço @id@ está incorreta', |
|
| 695 | + 'zbug_erreur_compilation' => 'Erro de compilação', |
|
| 696 | + 'zbug_erreur_execution_page' => 'Erro de execução', |
|
| 697 | + 'zbug_erreur_filtre' => 'Filtro @filtre@ não definido', |
|
| 698 | + 'zbug_erreur_filtre_nbarg_min' => 'Filtro @filtre@: falta(m) @nb@ argumento(s)', |
|
| 699 | + 'zbug_erreur_meme_parent' => 'O critério {meme_parent} aplica-se exclusivamente aos laços (FORUMS) ou (RUBRIQUES)', |
|
| 700 | + 'zbug_erreur_squelette' => 'Erro(s) no template', |
|
| 701 | + 'zbug_hors_compilation' => 'Fora de Compilação', |
|
| 702 | + 'zbug_info_erreur_squelette' => 'Erro no site', |
|
| 703 | + 'zbug_inversion_ordre_inexistant' => 'Inversão de uma ordem inexistente', |
|
| 704 | + 'zbug_pagination_sans_critere' => 'Tag #PAGINATION sem critério {pagination} ou usada dentro de uma boucle recursiva', |
|
| 705 | + 'zbug_parametres_inclus_incorrects' => 'Parâmetro de inclusão incorreto: @param@', |
|
| 706 | + 'zbug_profile' => 'Tempo de processamento: @time@', |
|
| 707 | + 'zbug_resultat' => 'resultado', |
|
| 708 | + 'zbug_serveur_indefini' => 'Sevidor SQL não definido', |
|
| 709 | + 'zbug_statistiques' => 'Estatísticas das requisições SQL classificadas por duração', |
|
| 710 | + 'zbug_table_inconnue' => 'Tabela SQL «@table@» desconhecida', |
|
| 711 | + 'zxml_connus_attributs' => 'atributos conhecidos', |
|
| 712 | + 'zxml_de' => 'de', |
|
| 713 | + 'zxml_inconnu_attribut' => 'atributo desconhecido', |
|
| 714 | + 'zxml_inconnu_balise' => 'tag desconhecida', |
|
| 715 | + 'zxml_inconnu_entite' => 'entidade desconhecida', |
|
| 716 | + 'zxml_inconnu_id' => 'ID desconhecida', |
|
| 717 | + 'zxml_mais_de' => 'mas de', |
|
| 718 | + 'zxml_non_conforme' => 'não está de acordo com o motivo', |
|
| 719 | + 'zxml_non_fils' => 'não é filho de', |
|
| 720 | + 'zxml_nonvide_balise' => 'tag não vazia', |
|
| 721 | + 'zxml_obligatoire_attribut' => 'atributo obrigatório mas ausente em', |
|
| 722 | + 'zxml_succession_fils_incorrecte' => 'sucessão de filhos incorreta', |
|
| 723 | + 'zxml_survoler' => 'sobrepor para ver os corretos', |
|
| 724 | + 'zxml_valeur_attribut' => 'valor do atributo', |
|
| 725 | + 'zxml_vide_balise' => 'tag vazia', |
|
| 726 | + 'zxml_vu' => 'previsualização' |
|
| 727 | 727 | ); |