Compare commits

...

58 Commits
master ... 1.8

Author SHA1 Message Date
Committo,Ergo:sum 61644347f1 SPIP 1.8.3: bardée d'occurrences de {{{ereg}}} et consorts, remplacements uniquement destinés à permettre de vérifier que la faille de [15849] est absente de cette version. Vérification ok, on garde ces remplacements mais il y en aurait plein d'autres à faire pour que cette version tourne en PHP5 sans Warning. 11 years ago
Cerdic dc5d667fb1 1.9.2g et 1.8.3b 13 years ago
Cerdic 6a84c4fd44 report de [13521] + [13524] 13 years ago
Committo,Ergo:sum 533458dc7c En 1.8.3 aussi il ne fallait pas perdre son temps... 13 years ago
Stephane 96cced88f9 report 10221 (securite #EXPOSER) 14 years ago
Fil 1883c73955 bug url-propres et mots-clés (maintenance de la branche 1.8) 15 years ago
Fil 80a7ec2f29 balise <multi> en 1.8.3 (résoud le bug #292) 15 years ago
Fil b5d4e858b0 corrige le bug de repertoire qui se produisait (pour rien, bien souvent) lors de l indexation d un document distant 15 years ago
Fil e0f7353f25 le kurde s"affiche en RTL 15 years ago
Fil cf5c7ed45e referme #212 sur le filtre majuscules (code "perfectible", nicolas1, suite) 15 years ago
Fil 02370a3f38 referme #212 sur le filtre majuscules (code "perfectible", nicolas1) 15 years ago
Fil 0da72d4094 filtre |majuscules #212 15 years ago
Fil d354fe5112 report [6092] dans la branche stable (Jeremy Hetzel) 15 years ago
James fc89f7dda6 on renomme le dossier 15 years ago
James b4cd71265d SPIP 1.8.3 15 years ago
James 991238db66 barre typo pour safari 15 years ago
James b364564d42 transparence pour reduire_image 15 years ago
Fil b04d17e7ff safehtml applique trop tard => plus de confirmation des forums... 15 years ago
Fil 8a179c16e9 ** qui semble marcher 15 years ago
James 944a59af3d retour arrière : retrait de ** 15 years ago
James 33a9a1aa92 un autre petit correctif 15 years ago
Fil 638923844e optimisation claculer_hierarchie (ne sort plus le 0) 15 years ago
James 7bba2c5ae5 encore quelques reports 15 years ago
James 3f67a700d3 creer des sous-rubriques: a tester... 15 years ago
James 6dcdb93e94 {mode=image} (mortimer) 15 years ago
Fil 06bb1a1959 idem 15 years ago
Fil 35e425eb26 un petit coucou de Trondheim 15 years ago
James 7d686d2bbb coquille (pyrat) 15 years ago
James 5f1ffee997 du safehtml dans l'espace prive. 15 years ago
James 2e6c6ea1ad report des correctifs suivants: 15 years ago
James b26170b4c1 report des correctifs suivants: 15 years ago
James 0883390994 langue tcheque (et prepa tamil ?) (paolo) 15 years ago
Fil 9b9d612683 bug suivi des revisions 15 years ago
Fil 9b4e68712f integration de safehtml pour 1.8.3 15 years ago
Fil 85602d5f99 trous dans le truc censé faire la sécurité des documents 15 years ago
Fil cd06efc05c Ne pas se faire manger par un bug php qui laisse passer ?GLOBALS[truc]=toto 15 years ago
Fil 5ddc3c793c Undefined index... 15 years ago
Fil 67580555b3 révision de "magic_quotes" pour qu'il nettoie aussi les caractères %00 15 years ago
Fil 3c20694465 ne pas prendre de risques intuiles en laissant n'importe quoi dans spip.log 15 years ago
Fil 2a2966fb1a trou de sécurité sur la balise #LANG, et conséquences 15 years ago
James 9cc9bb03f5 spip-1.8.2f 15 years ago
James 9a337bfe81 report [5540], [5542] corrections XSS. 15 years ago
Fil 7e2455e704 bug sur les mots-cles de forum : quand on ne precise pas $afficher_groupe, il faut afficher tous les groupes de mots marques comme "utilises par les visiteurs", et non pas aucun. (signale par Jordi Mir sur la liste spip@rezo.net) 16 years ago
James bd7356910d idem [4974] 16 years ago
Fil 1bd6a4deff woula c'est cromitte 16 years ago
James 9911b67ce6 brezhoneg pour breton 16 years ago
James 8120ed3fa0 conversion unix pour le mail des nouveautes (Manu) 16 years ago
James 10bce0aeff idem [4949] 16 years ago
James c6689938ab Mise à jour de langue (turc et ajour du breton) [4946] et [4947] 16 years ago
James be41dcd472 une page auteurs.php3 qui ne mange pas la memoire (spip-contrib) 16 years ago
James 9d289fd4c2 oubli du debutant 16 years ago
James 7bea3f6c1b maintenance : "merge", dans la branche spip-1.8.2, des patches suivants : 16 years ago
Fil 181436a0aa report dans la version de dev et dans la branche de maintenance 1.8.2 de 16 years ago
Fil 10415acb51 maintenance 1.8.2 : mise a jour des fichiers de langue + ajout du russe 16 years ago
Committo,Ergo:sum 3a195cefa2 maintenance : "merge", dans la branche spip-1.8.2, des patches suivants : 16 years ago
Fil 33f9504adb report de la revision [4755] (bug effacement de IMG/ lors de l'upload d'un .zip mal corrige) 16 years ago
Fil 6c76fc3f10 maintenance : "merge", dans la branche spip-1.8.2, des patches suivants : 16 years ago
Fil 9b9da7e9a1 branche SPIP 1.8.2 pour maintenance, etablie a partir de la revision [4676] 16 years ago
  1. 16
      .gitattributes
  2. 11
      dist/backend.html
  3. 9
      ecrire/aide_index.php3
  4. 5
      ecrire/auteur_infos.php3
  5. 192
      ecrire/auteurs.php3
  6. 12
      ecrire/delete_all.php3
  7. 38
      ecrire/engines-list.txt
  8. 3
      ecrire/inc.php3
  9. 6
      ecrire/inc_acces.php3
  10. 232
      ecrire/inc_calendrier.php
  11. 2
      ecrire/inc_charsets.php3
  12. 1
      ecrire/inc_cron.php3
  13. 2
      ecrire/inc_db_mysql.php3
  14. 3
      ecrire/inc_debug_sql.php3
  15. 3
      ecrire/inc_documents.php3
  16. 9
      ecrire/inc_extra.php3
  17. 29
      ecrire/inc_filtres.php3
  18. 19
      ecrire/inc_lang.php3
  19. 5
      ecrire/inc_layer.php3
  20. 18
      ecrire/inc_logos.php3
  21. 3
      ecrire/inc_mail.php3
  22. 26
      ecrire/inc_majbase.php3
  23. 2
      ecrire/inc_meta.php3
  24. 13
      ecrire/inc_mots.php3
  25. 3
      ecrire/inc_presentation.php3
  26. 4
      ecrire/inc_rss.php3
  27. 7
      ecrire/inc_serialbase.php3
  28. 1
      ecrire/inc_signatures.php3
  29. 3
      ecrire/inc_sites.php3
  30. 6
      ecrire/inc_suivi_revisions.php
  31. 108
      ecrire/inc_texte.php3
  32. 201
      ecrire/inc_version.php3
  33. 6
      ecrire/index.php3
  34. 14
      ecrire/install.php3
  35. 5
      ecrire/lang/ecrire_ar.php3
  36. 998
      ecrire/lang/ecrire_br.php3
  37. 3
      ecrire/lang/ecrire_ca.php3
  38. 1060
      ecrire/lang/ecrire_cs.php3
  39. 5
      ecrire/lang/ecrire_de.php3
  40. 7
      ecrire/lang/ecrire_en.php3
  41. 3
      ecrire/lang/ecrire_es.php3
  42. 7
      ecrire/lang/ecrire_fa.php3
  43. 3
      ecrire/lang/ecrire_fr.php3
  44. 3
      ecrire/lang/ecrire_gl.php3
  45. 3
      ecrire/lang/ecrire_it.php3
  46. 144
      ecrire/lang/ecrire_ja.php3
  47. 14
      ecrire/lang/ecrire_pl.php3
  48. 6
      ecrire/lang/ecrire_pt.php3
  49. 5
      ecrire/lang/ecrire_pt_br.php3
  50. 17
      ecrire/lang/ecrire_ro.php3
  51. 1067
      ecrire/lang/ecrire_ru.php3
  52. 1015
      ecrire/lang/ecrire_tr.php3
  53. 127
      ecrire/lang/public_br.php3
  54. 128
      ecrire/lang/public_cs.php3
  55. 2
      ecrire/lang/public_fa.php3
  56. 1
      ecrire/lang/public_it.php3
  57. 4
      ecrire/lang/public_pt.php3
  58. 128
      ecrire/lang/public_ru.php3
  59. 24
      ecrire/lang/public_tr.php3
  60. 723
      ecrire/lang/spip_br.php3
  61. 740
      ecrire/lang/spip_cs.php3
  62. 2
      ecrire/lang/spip_en.php3
  63. 6
      ecrire/lang/spip_it.php3
  64. 51
      ecrire/lang/spip_ja.php3
  65. 44
      ecrire/lang/spip_pt.php3
  66. 2
      ecrire/lang/spip_pt_br.php3
  67. 1
      ecrire/lang/spip_ro.php3
  68. 751
      ecrire/lang/spip_ru.php3
  69. 588
      ecrire/lang/spip_tr.php3
  70. 16
      ecrire/lang/spip_zh.php3
  71. 18
      ecrire/naviguer.php3
  72. 687
      ecrire/safehtml/classes/HTMLSax3.php
  73. 363
      ecrire/safehtml/classes/HTMLSax3/Decorators.php
  74. 287
      ecrire/safehtml/classes/HTMLSax3/States.php
  75. 621
      ecrire/safehtml/classes/safehtml.php
  76. 26
      ecrire/safehtml/license.txt
  77. 14
      ecrire/safehtml/readme-SPIP.txt
  78. 75
      ecrire/safehtml/readme.txt
  79. 1
      ecrire/spip_style.php3
  80. 4
      ecrire/suivi_revisions.php3
  81. 6
      ecrire/unpack.php3
  82. 6
      ecrire/upgrade.php3
  83. 2
      formulaires/formulaire_forum.html
  84. 31
      formulaires/inc-formulaire_forum.php3
  85. 2
      formulaires/inc-formulaire_inscription.php3
  86. 1
      formulaires/inc-formulaire_signature.php3
  87. 1
      formulaires/inc-formulaire_site.php3
  88. 8
      formulaires/inc-login_public.php3
  89. 53
      inc-balises.php3
  90. 12
      inc-cache.php3
  91. 4
      inc-calcul-outils.php3
  92. 2
      inc-calcul.php3
  93. 4
      inc-compilo-index.php3
  94. 2
      inc-compilo.php3
  95. 15
      inc-criteres.php3
  96. 7
      inc-html-squel.php3
  97. 2
      inc-messforum.php3
  98. 9
      inc-public-global.php3
  99. 11
      inc-urls-propres.php3
  100. 4
      page.php3

16
.gitattributes

@ -244,12 +244,28 @@ ecrire/img_pack/visiter-48_rtl.png -text
ecrire/img_pack/warning-24.gif -text
ecrire/img_pack/warning.gif -text
ecrire/img_pack/xml.gif -text
ecrire/lang/ecrire_br.php3 -text
ecrire/lang/ecrire_cs.php3 -text
ecrire/lang/ecrire_ru.php3 -text
ecrire/lang/public_br.php3 -text
ecrire/lang/public_cs.php3 -text
ecrire/lang/public_ru.php3 -text
ecrire/lang/spip_br.php3 -text
ecrire/lang/spip_cs.php3 -text
ecrire/lang/spip_ru.php3 -text
ecrire/polices/dustismo-license.txt -text svneol=unset#application/octet-stream
ecrire/polices/dustismo.ttf -text
ecrire/polices/dustismo_bold.ttf -text
ecrire/puce.gif -text
ecrire/puce_rtl.gif -text
ecrire/rien.gif -text
ecrire/safehtml/classes/HTMLSax3.php -text
ecrire/safehtml/classes/HTMLSax3/Decorators.php -text
ecrire/safehtml/classes/HTMLSax3/States.php -text
ecrire/safehtml/classes/safehtml.php -text
ecrire/safehtml/license.txt -text
ecrire/safehtml/readme-SPIP.txt -text
ecrire/safehtml/readme.txt -text
/puce.gif -text
/puce_rtl.gif -text
/rien.gif -text

11
dist/backend.html

@ -22,7 +22,16 @@
<title>[(#TITRE|supprimer_numero|texte_backend)]</title>
<link>#URL_SITE_SPIP/#URL_ARTICLE</link>
<date>#DATE</date>
<description>[(#LOGO_ARTICLE|right||liens_absolus|texte_backend)][(#TEXTE|liens_absolus|texte_backend)]</description>
[(#REM)
Il est possible de mettre le texte integral de l'article dans le backend
en remplacant *INTRODUCTION par *CHAPO et *TEXTE etc., a filtrer avec
"liens_absolus".
]
<description>[(#LOGO_ARTICLE|right||liens_absolus|texte_backend)
][(#INTRODUCTION|texte_backend)]</description>
<author><BOUCLE_auteurs(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_auteurs></author>
<dc:date>[(#DATE|date_iso)]</dc:date>
<dc:format>text/html</dc:format>

9
ecrire/aide_index.php3

@ -101,8 +101,8 @@ function fichier_aide($lang_aide = '') {
ecrire_fichier ($fichier_aide, $contenu);
}
}
lire_fichier($fichier_aide, $contenu);
if (@file_exists($fichier_aide))
lire_fichier($fichier_aide, $contenu);
if (strlen($contenu) > 500) {
return array($contenu, $lang_aide);
@ -116,7 +116,6 @@ function fichier_aide($lang_aide = '') {
$GLOBALS['clean_link'] = new Link("../aide/?aide=$aide");
}
erreur_aide_indisponible();
}
return false;
@ -270,7 +269,7 @@ function help_img($regs) {
echo $contenu;
ecrire_fichier (_DIR_CACHE . 'aide-'.$cache, $contenu);
} else
header ("Location: $help_server/$rep/$lang/$file");
redirige_par_entete("$help_server/$rep/$lang/$file");
}
exit;
}
@ -477,7 +476,7 @@ else {
if (!$html) {
// Renvoyer sur l'aide en ligne du serveur externe
if ($help_server)
@Header("Location: $help_server/?lang=$spip_lang");
redirige_par_entete("$help_server/?aide=$aide&lang=$spip_lang");
// Sinon message d'erreur
else {
erreur_aide_indisponible();

5
ecrire/auteur_infos.php3

@ -252,8 +252,9 @@ if ($echec){
debut_cadre_formulaire();
echo "<FORM ACTION='auteur_infos.php3?id_auteur=$id_auteur' METHOD='post'>";
echo "<INPUT TYPE='Hidden' NAME='id_auteur' VALUE=\"$id_auteur\">";
echo "<form method='POST' action='auteur_infos.php3",
(!$id_auteur ? "'>" :
("?id_auteur=$id_auteur'><input type='hidden' name='id_auteur' value='$id_auteur' />"));
//

192
ecrire/auteurs.php3

@ -22,13 +22,12 @@ if ($supp && ($connect_statut == '0minirezo'))
spip_query("UPDATE spip_auteurs SET statut='5poubelle' WHERE id_auteur=$supp");
$retour = "auteurs.php3?";
if ($tri) {
$retour .= "tri=$tri";
if ($tri=='nom' OR $tri=='statut')
$partri = " "._T('info_par_tri', array('tri' => $tri));
else if ($tri=='nombre')
$partri = " "._T('info_par_nombre_article');
}
if (!$tri) $tri='nom';
$retour .= "tri=$tri";
if ($tri=='nom' OR $tri=='statut')
$partri = " "._T('info_par_tri', array('tri' => $tri));
else if ($tri=='nombre')
$partri = " "._T('info_par_nombre_article');
if ($visiteurs == "oui") {
debut_page(_T('titre_page_auteurs'),"auteurs","redacteurs");
@ -53,7 +52,7 @@ fin_boite_info();
if ($connect_statut == '0minirezo') {
$query = "SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 0,1";
$query = "SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 1";
$result = spip_query($query);
$flag_visiteurs = spip_num_rows($result) > 0;
@ -75,19 +74,25 @@ debut_droite();
// Construire la requete
//
// si on n'est pas minirezo, supprimer les auteurs sans article publie
// sauf les admins, toujours visibles.
// limiter les statuts affiches
if (($visiteurs == "oui") AND ($connect_statut == '0minirezo')) {
$sql_statut_auteurs = " AND auteurs.statut IN ('6forum', '5poubelle')";
$sql_statut_articles = '';
$tri = 'nom';
} else if ($connect_statut != '0minirezo') {
$sql_statut_auteurs = " AND auteurs.statut IN ('0minirezo', '1comite')";
$sql_statut_articles = " AND articles.statut IN ('prop', 'publie')";
if ($connect_statut == '0minirezo') {
if ($visiteurs == "oui") {
$sql_visible = "aut.statut IN ('6forum','5poubelle')";
$tri = 'nom';
} else {
$sql_visible = "aut.statut IN ('0minirezo','1comite','5poubelle')";
}
} else {
$sql_statut_auteurs = " AND auteurs.statut IN ('0minirezo', '1comite', '5poubelle')";
$sql_statut_articles = "";
$sql_visible = "(
aut.statut = '0minirezo'
OR art.statut IN ('prop', 'publie')
)";
}
$sql_sel = '';
// tri
switch ($tri) {
case 'nombre':
@ -96,111 +101,80 @@ case 'nombre':
break;
case 'statut':
$sql_order = ' ORDER BY auteurs.statut, login = "", unom';
$sql_order = ' ORDER BY statut, login = "", unom';
$type_requete = 'auteur';
break;
case 'nom':
default:
// $sql_order = ' ORDER BY unom';
$type_requete = 'auteur';
$sql_sel = ", ".creer_objet_multi ("nom", "$spip_lang");
$sql_sel = ", ".creer_objet_multi ("nom", $spip_lang);
$sql_order = " ORDER BY multi";
}
// si on doit afficher les auteurs par statut ou par nom,
// la requete principale est simple, et une autre requete
// vient calculer les nombres d'articles publies ;
// si en revanche on doit classer par nombre, la bonne requete
// est la concatenation de $query_nombres et de $query_auteurs
unset($nombre_auteurs);
$auteurs = Array();
//
// La requete de base est tres sympa
//
if ($type_requete == 'auteur') {
$result_auteurs = spip_query("SELECT id_auteur, statut, login, nom, email, url_site, messagerie, UPPER(nom) AS unom$sql_sel
FROM spip_auteurs AS auteurs
WHERE 1 $sql_statut_auteurs
$sql_order");
while ($row = spip_fetch_array($result_auteurs)) {
$auteurs[$row['id_auteur']] = $row;
$nombre_auteurs ++;
}
$query = "SELECT
aut.id_auteur AS id_auteur,
aut.statut AS statut,
aut.login AS login,
aut.nom AS nom,
aut.email AS email,
aut.url_site AS url_site,
aut.messagerie AS messagerie,
UPPER(aut.nom) AS unom,
count(lien.id_article) as compteur
$sql_sel
FROM spip_auteurs as aut
LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur
LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)
WHERE
$sql_visible
GROUP BY aut.id_auteur
$sql_order";
$t = spip_query($query);
$nombre_auteurs = spip_num_rows($t);
$result_nombres = spip_query("SELECT auteurs.id_auteur, UPPER(auteurs.nom) AS unom, COUNT(articles.id_article) AS compteur, ".creer_objet_multi ("UPPER(auteurs.nom)", "$spip_lang")."
FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articles
WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article
$sql_statut_auteurs $sql_statut_articles
GROUP BY auteurs.id_auteur
$sql_order");
while ($row = spip_fetch_array($result_nombres))
$auteurs[$row['id_auteur']]['compteur'] = $row['compteur'];
// si on n'est pas minirezo, supprimer les auteurs sans article publie
// sauf les admins, toujours visibles.
if ($connect_statut != '0minirezo') {
reset($auteurs);
while (list(,$auteur) = each ($auteurs)) {
if (! $auteur['compteur'] AND ($auteur['statut'] != '0minirezo')) {
unset($auteurs[$auteur['id_auteur']]);
$nombre_auteurs --;
}
}
//
// Lire les auteurs qui nous interessent
// et memoriser la liste des lettres initiales
//
$max_par_page = 30;
if ($debut > $nombre_auteurs - $max_par_page)
$debut = max(0,$nombre_auteurs - $max_par_page);
$debut = intval($debut);
$i = 0;
$auteurs=array();
while ($auteur = spip_fetch_array($t)) {
if ($i>=$debut AND $i<$debut+$max_par_page) {
if ($auteur['statut'] == '0minirezo')
$auteur['restreint'] = spip_num_rows(
spip_query("SELECT * FROM spip_auteurs_rubriques
WHERE id_auteur=".$auteur['id_auteur']));
$auteurs[] = $auteur;
}
$i++;
// apres avoir supprime les auteurs sans article publie
// generer les paires lettre/indice pour l'acces direct
// sur la premiere lettre
$lettres_nombre_auteurs = 0;
foreach ($auteurs as $auteur) {
if ($tri == 'nom') {
$lettres_nombre_auteurs ++;
$premiere_lettre = addslashes(strtoupper(spip_substr($auteur['multi'],0,1)));
$premiere_lettre = strtoupper(spip_substr(extraire_multi($auteur['nom']),0,1));
if ($premiere_lettre != $lettre_prec) {
# echo " - $auteur[nom] -";
$lettre[$premiere_lettre] = $lettres_nombre_auteurs-1;
}
$lettre_prec = $premiere_lettre;
}
} else { // tri par nombre
$result_nombres = spip_query("SELECT auteurs.id_auteur, auteurs.statut, auteurs.login, auteurs.nom, auteurs.email, auteurs.url_site, auteurs.messagerie, UPPER(nom) AS unom, COUNT(articles.id_article) AS compteur
FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien, spip_articles AS articles
WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=articles.id_article
$sql_statut_auteurs $sql_statut_articles
GROUP BY auteurs.id_auteur
$sql_order");
unset($vus);
while ($row = spip_fetch_array($result_nombres)) {
$auteurs[$row['id_auteur']] = $row;
$vus .= ','.$row['id_auteur'];
$nombre_auteurs ++;
}
// si on est admin, ajouter tous les auteurs sans articles
// sinon ajouter seulement les admins sans articles
if ($connect_statut == '0minirezo')
$sql_statut_auteurs_ajout = $sql_statut_auteurs;
else
$sql_statut_auteurs_ajout = " AND auteurs.statut = '0minirezo'";
$result_auteurs = spip_query("SELECT auteurs.id_auteur, auteurs.statut, auteurs.login, auteurs.nom, auteurs.email, auteurs.url_site, auteurs.messagerie, UPPER(nom) AS unom, 0 as compteur
FROM spip_auteurs AS auteurs
WHERE id_auteur NOT IN (0$vus)
$sql_statut_auteurs_ajout
$sql_order");
while ($row = spip_fetch_array($result_auteurs)) {
$auteurs[$row['id_auteur']] = $row;
$nombre_auteurs ++;
}
}
unset ($rub_restreinte);
if ($connect_statut == '0minirezo') { // recuperer les admins restreints
$restreint = spip_query("SELECT * FROM spip_auteurs_rubriques");
while ($row = spip_fetch_array($restreint))
$rub_restreinte[$row['id_auteur']] .= ','.$row['id_rubrique'];
}
//
// Affichage
@ -213,18 +187,7 @@ else
gros_titre(_T('info_auteurs'));
echo "<p>";
// reglage du debut
$max_par_page = 30;
if ($debut > $nombre_auteurs - $max_par_page)
$debut = max(0,$nombre_auteurs - $max_par_page);
$fin = min($nombre_auteurs, $debut + $max_par_page);
// ignorer les $debut premiers
unset ($i);
reset ($auteurs);
while ($i++ < $debut AND each($auteurs));
// ici commence la vraie boucle
debut_cadre_relief('auteur-24.gif');
echo "<TABLE BORDER=0 CELLPADDING=2 CELLSPACING=0 WIDTH='100%' class='arial2' style='border: 1px solid #aaaaaa;'>\n";
echo "<tr bgcolor='#DBE1C5'>";
@ -271,25 +234,22 @@ if ($nombre_auteurs > $max_par_page) {
//echo "</font>";
echo "</td></tr>\n";
if (($tri == 'nom' OR !$tri) AND $options == 'avancees') {
if ($tri == 'nom' AND $options == 'avancees') {
// affichage des lettres
echo "<tr bgcolor='white'><td class='arial11' colspan='5'>";
// echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
while (list($key,$val) = each($lettre)) {
foreach ($lettre as $key => $val) {
if ($val == $debut)
echo "<b>$key</b> ";
else
echo "<a href=$retour&debut=$val>$key</a> ";
}
// echo "</font>";
echo "</td></tr>\n";
}
echo "<tr height='5'></tr>";
}
while ($i++ <= $fin && (list(,$row) = each ($auteurs))) {
foreach ($auteurs as $row) {
// couleur de ligne
$couleur = ($i % 2) ? '#FFFFFF' : $couleur_claire;
echo "<tr style='background-color: #eeeeee;'>";
@ -302,7 +262,7 @@ while ($i++ <= $fin && (list(,$row) = each ($auteurs))) {
echo "</td><td class='verdana11' style='border-top: 1px solid #cccccc;'>";
echo "<a href='auteurs_edit.php3?id_auteur=".$row['id_auteur']."'>".typo($row['nom']).'</a>';
if ($connect_statut == '0minirezo' AND $row['statut']=='0minirezo' AND $rub_restreinte[$row['id_auteur']])
if ($connect_statut == '0minirezo' AND $row['restreint'])
echo " &nbsp;<small>"._T('statut_admin_restreint')."</small>";

12
ecrire/delete_all.php3

@ -62,6 +62,18 @@ spip_query("DROP TABLE spip_visites");
spip_query("DROP TABLE spip_visites_articles");
spip_query("DROP TABLE spip_visites_temp");
spip_query("DROP TABLE spip_test");
spip_query("DROP TABLE spip_caches");
spip_query("DROP TABLE spip_documents_syndic");
spip_query("DROP TABLE spip_index_documents");
spip_query("DROP TABLE spip_index_forum");
spip_query("DROP TABLE spip_index_signatures");
spip_query("DROP TABLE spip_mots_documents");
spip_query("DROP TABLE spip_ortho_cache");
spip_query("DROP TABLE spip_ortho_dico");
spip_query("DROP TABLE spip_versions");
spip_query("DROP TABLE spip_versions_fragments");
spip_query("DROP TABLE spip_ajax_fonc");
@unlink(_ACCESS_FILE_NAME);
@unlink(_FILE_CONNECT);

38
ecrire/engines-list.txt

@ -16,7 +16,7 @@ rien=
[Google]
(q|as_q)=
www\.google\.(.*)
(www|ww)\.google\.(.*)
(web|www).toile.com
[Voila]
@ -71,20 +71,17 @@ name=
recherche\.francite\.com
[MSN]
s=
leguide(.*)\.msn\.([a-z]+)$
[MSN]
q=
(q|s)=
search(.*)\.msn\.([a-z]+)$
leguide(.*)\.msn\.([a-z]+)$
search\.ninemsn\.com\.au
[Excite]
search=
www\.excite\.fr
### nota bene : sur AOL il existe aussi des requetes avec &r=xxxxxx
[AOL France]
q=
(q|r)=
(.*)recherche\.aol\.fr
[AOLsearch]
@ -141,7 +138,30 @@ www\.reacteur\.com
q=
www\.francesurf\.net
[n9uf]
Keywords=
(www\.)?neuf\.fr
[MozBot]
q=
www\.mozbot\.([a-z]+)$
[Cegetel]
q=
(www\.)?cegetel\.([a-z]+)$
[MyWay]
searchfor=
kf\.mysearch\.myway\.com
www\.mywebsearch\.com
[MonGenie]
Keywords=
www\.mongenie\.com
[Need2Find]
searchfor=
kx\.search\.need2find\.com
#
# Dmoz
@ -151,7 +171,6 @@ rien=
(.*\.)?dmoz\.org
#
# Services de mail
#
@ -165,4 +184,3 @@ courrielweb\.cmaisonneuve\.qc\.ca
webmail([0-9]*)\.wanadoo\.fr
www\.laposte\.net
mail([0-9]*)\.voila\.fr

3
ecrire/inc.php3

@ -28,8 +28,7 @@ include_ecrire("inc_forum.php3");
include_ecrire('inc_admin.php3');
//
// Preferences de presentation
//// Preferences de presentation
//
if ($spip_lang_ecrire = $GLOBALS['_COOKIE']['spip_lang_ecrire']

6
ecrire/inc_acces.php3

@ -39,9 +39,9 @@ function creer_pass_aleatoire($longueur = 8, $sel = "") {
$pass .= $x;
$s = substr($s, 2);
}
$pass = ereg_replace("[./]", "a", $pass);
$pass = ereg_replace("[I1l]", "L", $pass);
$pass = ereg_replace("[0O]", "o", $pass);
$pass = preg_replace(",[./],", "a", $pass);
$pass = preg_replace(",[I1l],", "L", $pass);
$pass = preg_replace(",[0O],", "o", $pass);
return $pass;
}

232
ecrire/inc_calendrier.php

@ -16,6 +16,7 @@ if (defined("_ECRIRE_INC_CALENDRIER")) return;
define("_ECRIRE_INC_CALENDRIER", "1");
include_ecrire("inc_texte.php3");
charger_generer_url();
// Typographie generale des calendriers de 3 type: jour/semaine/mois(ou plus)
@ -54,13 +55,21 @@ function calendrier_retire_args_ancre($script)
return array($script, $ancre);
}
function calendrier_args_date($annee, $mois, $jour)
// tous les liens de navigations sont issus de cette fonction
// on peut definir generer_url_date et un htacces pour simplifier les URL
function calendrier_args_date($script, $annee, $mois, $jour, $type, $finurl)
{
return 'annee=' . sprintf("%04d", $annee) . '&' .
'mois=' . sprintf("%02d", $mois) . '&' .
'jour=' . sprintf("%02d", $jour);
if (function_exists('generer_url_date'))
return generer_url_date($script, $annee, $mois, $jour, $type, $finurl);
else return $script .
(ereg('[?&]$', $script) ? "" : (strpos($script,'?') ? '&' : '?')) .
'annee=' . sprintf("%04d", $annee) . '&' .
'mois=' . sprintf("%02d", $mois) . '&' .
'jour=' . sprintf("%02d", $jour) . '&' .
'type=' . $type .
$finurl;
}
# prend une heure de debut et de fin, ainsi qu'une echelle (seconde/pixel)
# et retourne un tableau compose
@ -137,8 +146,11 @@ function http_calendrier_init($time='', $ltype='', $lechelle='', $lpartie_cal=''
$mois = date("m",$time);
$annee = date("Y",$time);
if (!$ltype) $ltype = $type ? $type : 'mois';
if (!$lechelle) $lechelle = $echelle;
if (!$lpartie_cal) $lpartie_cal = $partie_cal;
if (!$lechelle = intval($lechelle)) $lechelle = intval($echelle);
if (!$lpartie_cal OR !preg_match('/^\w+$/', $$lpartie_cal))
$lpartie_cal = preg_match('/^\w+$/',$partie_cal) ?
$partie_cal : 'sansheure';
list($script, $ancre) =
calendrier_retire_args_ancre($script ? $script :
$GLOBALS['clean_link']->getUrl());
@ -186,33 +198,32 @@ function http_calendrier_mois($annee, $mois, $jour, $echelle, $partie_cal, $scri
{
global $spip_ecran;
if (!isset($spip_ecran)) $spip_ecran = 'large';
list($sansduree, $evenements, $premier_jour, $dernier_jour) = $evt;
if ($sansduree)
foreach($sansduree as $d => $r)
{
$evenements[$d] = !$evenements[$d] ? $r :
array_merge($evenements[$d], $r); }
if (!$premier_jour) $premier_jour = '01';
if (!$dernier_jour)
{
$dernier_jour = 31;
while (!(checkdate($mois,$dernier_jour,$annee))) $dernier_jour--;
}
$scriptep = $script .
(ereg('[?&]$', $script) ? "" : (strpos($script,'?') ? '&' : '?')) .
"echelle=$echelle&partie_cal=$partie_cal&";
$premier_jour = '01';
$dernier_jour = '31';
if (is_array($evt)) {
list($sansduree, $evenements, $premier_jour, $dernier_jour) = $evt;
if (!$premier_jour) $premier_jour = '01';
if (!$dernier_jour)
{
$dernier_jour = 31;
while (!(checkdate($mois,$dernier_jour,$annee))) $dernier_jour--;
}
if ($sansduree)
foreach($sansduree as $d => $r)
$evenements[$d] = !$evenements[$d] ? $r : array_merge($evenements[$d], $r);
$evt =
http_calendrier_mois_noms($annee, $mois, $jour, $script, $ancre) .
http_calendrier_mois_sept($annee, $mois, $premier_jour, $dernier_jour,$evenements, $script, "&echelle=$echelle&partie_cal=$partie_cal$ancre") ;
}
return
"<table class='calendrier-table-$spip_ecran' cellspacing='0' cellpadding='0'>" .
http_calendrier_mois_navigation($annee, $mois, $premier_jour, $dernier_jour, $echelle, $partie_cal, $script, $ancre) .
http_calendrier_mois_noms($annee, $mois, $jour, $scriptep, $ancre) .
http_calendrier_mois_sept($annee, $mois, $premier_jour, $dernier_jour,$evenements, $scriptep, $ancre) .
'</table>' .
http_calendrier_sans_date($annee, $mois, $evenements) .
(_DIR_RESTREINT ? "" : http_calendrier_aide_mess());
"<table class='calendrier-table-$spip_ecran' cellspacing='0' cellpadding='0'>" .
http_calendrier_mois_navigation($annee, $mois, $premier_jour, $dernier_jour, $echelle, $partie_cal, $script, $ancre) .
$evt .
'</table>' .
http_calendrier_sans_date($annee, $mois, $evenements) .
(_DIR_RESTREINT ? "" : http_calendrier_aide_mess());
}
// si la periore a plus de 31 jours, c'est du genre trimestre, semestre etc
@ -233,8 +244,8 @@ function http_calendrier_mois_navigation($annee, $mois, $premier_jour, $dernier_
$annee_prec=$annee-1;
}
else if ($mois==12){$mois_suiv=1; $annee_suiv=$annee+1;}
$prec = calendrier_args_date($annee_prec, $mois_prec, 1);
$suiv = calendrier_args_date($annee_suiv, $mois_suiv, 1);
$prec = array($annee_prec, $mois_prec, 1, "mois");
$suiv = array($annee_suiv, $mois_suiv, 1, "mois");
$periode = affdate_mois_annee("$annee-$mois-1");
}
return
@ -295,7 +306,6 @@ function http_calendrier_mois_sept($annee, $mois, $premier_jour, $dernier_jour,$
$mois_en_cours = date("m",$nom);
$annee_en_cours = date("Y",$nom);
$amj = date("Y",$nom) . $mois_en_cours . $jour;
$scriptarg = $script . calendrier_args_date($annee_en_cours, $mois_en_cours, $jour);
$couleur_lien = "black";
$couleur_fond = "";
@ -327,10 +337,11 @@ function http_calendrier_mois_sept($annee, $mois, $premier_jour, $dernier_jour,$
" border-$spip_lang_left: 1px solid $couleur_claire;") .
"'>" .
(!_DIR_RESTREINT ?
(http_href($scriptarg . "&type=jour" . $ancre, $jour,
'', "color: $couleur_lien",'calendrier-helvetica16') .
(http_href(calendrier_args_date($script,$annee_en_cours, $mois_en_cours, $jour, "jour", $ancre),
$jour,
'', "color: $couleur_lien",'calendrier-helvetica16') .
http_calendrier_ics_message($annee_en_cours, $mois_en_cours, $jour, false)):
http_calendrier_mois_clics($annee_en_cours, $mois_en_cours, $jour, $scriptarg, $ancre)) .
http_calendrier_mois_clics($annee_en_cours, $mois_en_cours, $jour, $script, $ancre)) .
$res .
"\n\t</td>";
}
@ -345,14 +356,14 @@ function http_calendrier_mois_clics($annee, $mois, $jour, $script, $ancre)
$semaine = date("W", $d);
return
"<table width='100%'>\n<tr><td style='text-align: left'>".
http_href("$script&type=jour" . $ancre,
http_href(calendrier_args_date($script,$annee, $mois, $jour, "jour", $ancre),
"$jour/$mois",
_T('date_jour_'. (1+date('w',$d))) .
" $jour " .
_T('date_mois_'.(0+$mois)),
'','calendrier-helvetica16') .
"</td><td style='text-align: right'>" .
http_href("$script&type=semaine" . $ancre,
http_href(calendrier_args_date($script,$annee, $mois, $jour, "semaine", $ancre),
$semaine,
_T('date_semaines') . " $semaine",
'',
@ -369,18 +380,23 @@ function http_calendrier_semaine($annee, $mois, $jour, $echelle, $partie_cal, $s
$init = date("w",mktime(1,1,1,$mois,$jour,$annee));
$init = $jour+1-($init ? $init : 7);
$sd = '';
$scriptep = $script .
(ereg('[?&]$', $script) ? "" : (strpos($script,'?') ? '&' : '?')) .
"echelle=$echelle&partie_cal=$partie_cal&";
if (is_array($evt))
{
$sd = http_calendrier_sans_date($annee, $mois,$evt[0]);
$finurl = "&echelle=$echelle&partie_cal=$partie_cal$ancre";
$evt =
http_calendrier_semaine_noms($annee, $mois, $init, $scriptep, $finurl) .
http_calendrier_semaine_sept($annee, $mois, $init, $echelle, $partie_cal, $evt);
}
return
"\n<table class='calendrier-table-$spip_ecran' cellspacing='0' cellpadding='0'>" .
http_calendrier_semaine_navigation($annee, $mois, $init, $echelle, $partie_cal, $script, $ancre) .
http_calendrier_semaine_noms($annee, $mois, $init, $scriptep, $ancre) .
http_calendrier_semaine_sept($annee, $mois, $init, $echelle, $partie_cal, $evt) .
$evt .
"</table>" .
http_calendrier_sans_date($annee, $mois,$evt[0]) .
$sd .
(_DIR_RESTREINT ? "" : http_calendrier_aide_mess());
}
@ -411,8 +427,8 @@ function http_calendrier_semaine_navigation($annee, $mois, $jour, $echelle, $par
$partie_cal,
$periode,
$script,
calendrier_args_date($dannee, $dmois, ($djour-7)),
calendrier_args_date($fannee, $fmois, ($fjour+1)),
array($dannee, $dmois, ($djour-7), "semaine"),
array($fannee, $fmois, ($fjour+1), "semaine"),
'semaine',
$ancre) .
"</td></tr>\n";
@ -420,11 +436,9 @@ calendrier_args_date($fannee, $fmois, ($fjour+1)),
function http_calendrier_semaine_noms($annee, $mois, $jour, $script, $ancre){
global $couleur_claire;
$href = $script .
(ereg('[?&]$', $script) ? '' : (strpos($script,'?') ? '&' : '?')) .
"type=jour&";
$bandeau = '';
$script .= (ereg('[?&]$', $script) ? "" : (strpos($script,'?') ? '&' : '?'));
for ($j=$jour; $j<$jour+7;$j++){
$nom = mktime(0,0,0,$mois,$j,$annee);
$num = intval(date("d", $nom)) ;
@ -432,10 +446,7 @@ function http_calendrier_semaine_noms($annee, $mois, $jour, $script, $ancre){
$nomjour = _T('date_jour_'. (1+date('w',$nom)));
$bandeau .=
"\n\t<th class='calendrier-th'>" .
http_href(($href .
calendrier_args_date(date("Y",$nom), $numois, $num) .
$ancre),
http_href((calendrier_args_date($script, date("Y",$nom), $numois, $num, 'jour', $ancre)),
($nomjour .
" " .
$num .
@ -474,9 +485,6 @@ function http_calendrier_semaine_sept($annee, $mois, $jour, $echelle, $partie_ca
function http_calendrier_jour($annee, $mois, $jour, $echelle, $partie_cal, $script, $ancre, $evt){
global $spip_ecran;
if (!isset($spip_ecran)) $spip_ecran = 'large';
$scriptep = $script .
(ereg('[?&]$', $script) ? "" : (strpos($script,'?') ? '&' : '?')) .
"echelle=$echelle&partie_cal=$partie_cal&";
return
"\n<table class='calendrier-table-$spip_ecran'>" .
@ -486,33 +494,36 @@ function http_calendrier_jour($annee, $mois, $jour, $echelle, $partie_cal, $scri
(nom_jour("$annee-$mois-$jour") . " " .
affdate_jourcourt("$annee-$mois-$jour")),
$script,
calendrier_args_date($annee, $mois, ($jour-1)),
calendrier_args_date($annee, $mois, ($jour+1)),
array($annee, $mois, ($jour-1), "jour"),
array($annee, $mois, ($jour+1), "jour"),
'jour',
$ancre) .
"</td>" .
"<td class='calendrier-td-droit calendrier-arial10'></td>" .
"</tr>" .
http_calendrier_jour_noms($annee, $mois, $jour, $scriptep, $ancre) .
http_calendrier_jour_sept($annee, $mois, $jour, $echelle, $partie_cal, $script, $ancre, $evt) .
(!is_array($evt) ? $evt :
(http_calendrier_jour_noms($annee, $mois, $jour, $echelle, $partie_cal, $script, $ancre) .
http_calendrier_jour_sept($annee, $mois, $jour, $echelle, $partie_cal, $script, $ancre, $evt))) .
"</table>";
}
function http_calendrier_jour_noms($annee, $mois, $jour, $script, $ancre){
function http_calendrier_jour_noms($annee, $mois, $jour, $echelle, $partie_cal, $script, $ancre){
global $spip_ecran;
$finurl = "&echelle=$echelle&partie_cal=$partie_cal$ancre";
$gauche = (_DIR_RESTREINT || ($spip_ecran != "large"));
return
"\n<tr><td class='calendrier-td-gauche'>" .
($gauche ? '' :
http_calendrier_ics_titre($annee,$mois,$jour-1,$script)) .
http_calendrier_ics_titre($annee,$mois,$jour-1,$script, $finurl)) .
"</td><td colspan='5' class='calendrier-td-centre'>" .
(_DIR_RESTREINT ? '' :
("\n\t<div class='calendrier-titre'>" .
http_calendrier_ics_message($annee, $mois, $jour, true) .
'</div>')) .
"</td><td class='calendrier-td-droit calendrier-arial10'> " .
(_DIR_RESTREINT ? '' : http_calendrier_ics_titre($annee,$mois,$jour+1,$script)) .
(_DIR_RESTREINT ? '' : http_calendrier_ics_titre($annee,$mois,$jour+1,$script, $finurl)) .
"</td></tr>";
}
@ -748,19 +759,15 @@ function http_calendrier_ics_trois($evt, $largeur, $dimjour, $fontsize, $border)
return "\n<div style='position: relative; z-index: 2; top: ${pos}px; margin-$spip_lang_left: " . $largeur . "px'>$res</div>";
}
function http_calendrier_ics_titre($annee, $mois, $jour,$script)
function http_calendrier_ics_titre($annee, $mois, $jour,$script, $finurl='')
{
$date = mktime(0,0,0,$mois, $jour, $annee);
$jour = date("d",$date);
$mois = date("m",$date);
$annee = date("Y",$date);
$l = new Link($script);
$l->addvar("type","jour");
return "<div class='calendrier-arial10 calendrier-titre'>" .
http_href($l->getUrl() . '&' .
calendrier_args_date($annee, $mois, $jour),
http_href(calendrier_args_date($script, $annee, $mois, $jour, 'jour', $finurl),
affdate_jourcourt("$annee-$mois-$jour"),
'', '', 'calendrier-noir') .
"</div>";
@ -892,10 +899,18 @@ function http_calendrier_navigation($annee, $mois, $jour, $echelle, $partie_cal,
if (!$echelle) $echelle = DEFAUT_D_ECHELLE;
if (!ereg('[?&]$', $script)) $script .= (strpos($script,'?') ? '&' : '?');
$args = calendrier_args_date($annee, $mois, $jour);
$args_e = "$args&type=$type&echelle=$echelle";
$args_p = "$args&type=$type&partie_cal=$partie_cal";
if ($args_pred) {
list($a, $m, $j, $t) = $args_pred;
$args_pred = calendrier_args_date($script, $a, $m, $j, $t, "&echelle=$echelle&partie_cal=$partie_cal$ancre");
}
if ($args_suiv) {
list($a, $m, $j, $t) = $args_suiv;
$args_suiv = calendrier_args_date($script, $a, $m, $j, $t, "&echelle=$echelle&partie_cal=$partie_cal$ancre");
}
$args_e = calendrier_args_date($script, $annee, $mois, $jour, $type, "&echelle=$echelle");
$args_p = calendrier_args_date($script, $annee, $mois, $jour, $type, "&partie_cal=$partie_cal");
$today=getdate(time());
$jour_today = $today["mday"];
$mois_today = $today["mon"];
@ -909,50 +924,48 @@ function http_calendrier_navigation($annee, $mois, $jour, $echelle, $partie_cal,
. "><div style='float: $spip_lang_right; padding-left: 5px; padding-right: 5px;'>"
. (($type == "mois") ? '' :
(
http_href_img(("$script$args_e&partie_cal=tout$ancre"),
http_href_img(("$args_e&partie_cal=tout$ancre"),
"heures-tout.png",
"class='calendrier-png" .
(($partie_cal == "tout") ? " calendrier-opacity'" : "'"),
_T('cal_jour_entier'))
.http_href_img(("$script$args_e&partie_cal=matin$ancre"),
.http_href_img(("$args_e&partie_cal=matin$ancre"),
"heures-am.png",
"class='calendrier-png" .
(($partie_cal == "matin") ? " calendrier-opacity'" : "'"),
_T('cal_matin'))
.http_href_img(("$script$args_e&partie_cal=soir$ancre"),
.http_href_img(("$args_e&partie_cal=soir$ancre"),
"heures-pm.png",
"class='calendrier-png" .
(($partie_cal == "soir") ? " calendrier-opacity'" : "'"),
_T('cal_apresmidi'))
. "&nbsp;"
. http_href_img(("$script$args_p&echelle=" .
. http_href_img(("$args_p&echelle=" .
floor($echelle * 1.5)) . $ancre,
"loupe-moins.gif",
'',
_T('info_zoom'). '-')
. http_href_img(("$script$args_p&echelle=" .
. http_href_img(("$args_p&echelle=" .
floor($echelle / 1.5)) . $ancre,
"loupe-plus.gif",
'',
_T('info_zoom'). '+')
))
. http_href_img(("$script$args&type=jour&echelle=$echelle&partie_cal=$partie_cal$ancre"),"cal-jour.gif",
. http_href_img(calendrier_args_date($script,$annee, $mois, $jour, "jour", "&echelle=$echelle&partie_cal=$partie_cal$ancre"),"cal-jour.gif",
(($type == 'jour') ? " class='calendrier-opacity'" : ''),
_T('cal_par_jour'))
. http_href_img("$script$args&type=semaine&echelle=$echelle&partie_cal=$partie_cal$ancre", "cal-semaine.gif",
. http_href_img(calendrier_args_date($script,$annee, $mois, $jour, "semaine", "&echelle=$echelle&partie_cal=$partie_cal$ancre"), "cal-semaine.gif",
(($type == 'semaine') ? " class='calendrier-opacity'" : "" ),
_T('cal_par_semaine'))
. http_href_img("$script$args&type=mois&echelle=$echelle&partie_cal=$partie_cal$ancre","cal-mois.gif",
. http_href_img(calendrier_args_date($script,$annee, $mois, $jour, "mois", "&echelle=$echelle&partie_cal=$partie_cal$ancre"),"cal-mois.gif",
(($type == 'mois') ? " class='calendrier-opacity'" : "" ),
_T('cal_par_mois'))
. "</div>"
. "&nbsp;&nbsp;"
. http_href_img($script .
calendrier_args_date($annee_today, $mois_today, $jour_today) .
"&type=$type&echelle=$echelle&partie_cal=$partie_cal$ancre",
. http_href_img(calendrier_args_date($script,$annee_today, $mois_today, $jour_today, $type, "&echelle=$echelle&partie_cal=$partie_cal$ancre"),
"cal-today.gif",
(" onmouseover=\"montrer('$id');\"" .
(($annee == $annee_today && $mois == $mois_today && (($type == 'mois') || ($jour == $jour_today)))
@ -960,18 +973,18 @@ calendrier_args_date($annee_today, $mois_today, $jour_today) .
_T("ecrire:info_aujourdhui"))
. "&nbsp;"
. (!$args_pred ? '' :
http_href($script . "type=$type&echelle=$echelle&partie_cal=$partie_cal&$args_pred$ancre",
http_href($args_pred,
http_img_pack("fleche-$spip_lang_left.png", '&lt;&lt;&lt;', "class='calendrier-png'"),
_T('precedent')))
. (!$args_suiv ? '' :
http_href(($script . "type=$type&echelle=$echelle&partie_cal=$partie_cal&args_suiv$ancre"),
http_href($args_suiv,
http_img_pack("fleche-$spip_lang_right.png", '&gt;&gt;&gt;', "class='calendrier-png'"),
_T('suivant')))
. "&nbsp;&nbsp;"
. $nom
. (_DIR_RESTREINT ? '' : aide("messcalen"))
. "</div>"
. http_calendrier_invisible($annee, $mois, $jour, $script . "echelle=$echelle&partie_cal=$partie_cal&", $ancre,$id);
. http_calendrier_invisible($annee, $mois, $jour, $script, "&echelle=$echelle&partie_cal=$partie_cal$ancre", $id);
}
@ -990,16 +1003,12 @@ function http_calendrier_invisible($annee, $mois, $jour, $script, $ancre, $id)
$annee_avant = $annee - 1;
$annee_apres = $annee + 1;
$finurl = "&type=mois" . $ancre;
for ($i=$mois; $i < 13; $i++) {
$gadget .= http_href($script .
calendrier_args_date($annee_avant, $i, 1) . $finurl,
$gadget .= http_href(calendrier_args_date($script,$annee_avant, $i, 1, "mois", $ancre),
nom_mois("$annee_avant-$i-1"),'','', 'calendrier-annee') ;
}
for ($i=1; $i < $mois - 1; $i++) {
$gadget .= http_href($script .
calendrier_args_date($annee, $i, 1) . $finurl,
$gadget .= http_href(calendrier_args_date($script,$annee, $i, 1, "mois", $ancre),
nom_mois("$annee-$i-1"),'','', 'calendrier-annee');
}
$gadget .= "</td></tr>"
@ -1013,13 +1022,11 @@ function http_calendrier_invisible($annee, $mois, $jour, $script, $ancre, $id)
. "</tr>"
. "\n<tr><td colspan='3' style='text-align:$spip_lang_right;'>";
for ($i=$mois+2; $i <= 12; $i++) {
$gadget .= http_href($script .
calendrier_args_date($annee, $i, 1) . $finurl,
$gadget .= http_href(calendrier_args_date($script,$annee, $i, 1, "mois", $ancre),
nom_mois("$annee-$i-1"),'','', 'calendrier-annee');
}
for ($i=1; $i < $mois+1; $i++) {
$gadget .= http_href($script .
calendrier_args_date($annee_apres, $i, 1) . $finurl,
$gadget .= http_href(calendrier_args_date($script, $annee_apres, $i, 1, "mois", $ancre),
nom_mois("$annee_apres-$i-1"),'','', 'calendrier-annee');
}
return $gadget . "</td></tr></table></div>";
@ -1036,9 +1043,7 @@ function http_calendrier_agenda ($annee, $mois, $jour_ved, $mois_ved, $annee_ved
if (!$evt) $evt = sql_calendrier_agenda($annee, $mois);
return
"<div class='calendrier-titre calendrier-arial10'>" .
http_href($script .
calendrier_args_date($annee, $mois, 1) .
'&type=mois' . $ancre,
http_href(calendrier_args_date($script, $annee, $mois, 1, 'mois', $ancre),
affdate_mois_annee("$annee-$mois-1"),
'',
'color: black;') .
@ -1056,9 +1061,7 @@ function http_calendrier_clic($annee, $mois, $jour, $type, $couleur, $perso)
list($script, $ancre) = $perso;
return http_href($script .
calendrier_args_date($annee, $mois, $jour) .
"&type=$type$ancre",
return http_href(calendrier_args_date($script, $annee, $mois, $jour,$type, $ancre),
$jour,
'',
"color: $couleur; font-weight: bold");
@ -1324,20 +1327,7 @@ ORDER BY date
while($row=spip_fetch_array($result)){
$amj = date_anneemoisjour($row['date']);
if ((!_DIR_RESTREINT) || ($now >= $amj))
$url = $script . $row['id_article'];
else {
if (substr($row['chapo'], 0, 1) != '=')
$url = " ";
else {
list(,$url) = extraire_lien(array('','','',
substr($row['chapo'], 1)));
if ($url)
$url = texte_script(str_replace('&amp;', '&', $url));
else $url = " ";
}
}
$url = generer_url_article($row['id_article']);
$evenements[$amj][]=
array(
'CATEGORIES' => 'info_articles',
@ -1358,10 +1348,10 @@ ORDER BY date_heure
");
while($row=spip_fetch_array($result)){
$amj = date_anneemoisjour($row['date_heure']);
$script = (_DIR_RESTREINT ? 'breve' : 'breves_voir');
$script = generer_url_breve($row['id_breve']);
$evenements[$amj][]=
array(
'URL' => $script . _EXTENSION_PHP . "?id_breve=" . $row['id_breve'],
'URL' => $script,
'CATEGORIES' => 'info_breves_02',
'SUMMARY' => $row['titre']);
}

2
ecrire/inc_charsets.php3

@ -2138,6 +2138,8 @@ function charset2unicode($texte, $charset='AUTO', $forcer = false) {
if ($charset == 'AUTO')
$charset = lire_meta('charset');
$charset = strtolower($charset);
switch ($charset) {
case 'utf-8':
return utf_8_to_unicode($texte);

1
ecrire/inc_cron.php3

@ -246,6 +246,7 @@ function cron_mail($t) {
# lignes suivantes jusqu'a la premiere blanche: headers SMTP
$page = stripslashes(trim($page));
$page = preg_replace(",\r\n?,", "\n", $page);
$p = strpos($page,"\n\n");
$s = strpos($page,"\n");
if ($p AND $s) {

2
ecrire/inc_db_mysql.php3

@ -237,7 +237,7 @@ function spip_release_lock($nom) {
// IN (...) est limite a 255 elements, d'ou cette fonction assistante
//
function calcul_mysql_in($val, $valeurs, $not='') {
if (!$valeurs) return '0=0';
if (!$valeurs) return ($not ? "0=0" : '0=1');
$n = $i = 0;
$in_sql ="";

3
ecrire/inc_debug_sql.php3

@ -214,7 +214,7 @@ function trouve_boucle_debug($n, $nom, $debut=0, $boucle = "")
$id = $nom . $boucle;
foreach($debug_objets['sequence'][$id] as $v) {
if (!ereg('^(.*)(<\?.*\?>)(.*)$', $v[2],$r))
if (!preg_match('/^(.*)(<\?.*\?>)(.*)$/', $v[2],$r))
$y = substr_count($v[2], "\n");
else {
if ($v[1][0] == '#')
@ -343,6 +343,7 @@ function debug_dumpfile ($texte, $fonc, $type) {
$i = 0;
$colors = array('#e0e0f0', '#f8f8ff');
$res = "";
if (is_array($debug_objets['pretty']))
foreach ($debug_objets['pretty'] as $nom => $pretty)
if (substr($nom, 0, strlen($nom_skel)) == $nom_skel) {
$i++;

3
ecrire/inc_documents.php3

@ -433,7 +433,8 @@ function afficher_formulaire_taille($document, $type_inclus='AUTO') {
$type_inclus = $type['inclus'];
if (($type_inclus == "embed" #meme pour le MP3 : "l x h pixels"?
OR $type_inclus == "image")) {
OR $type_inclus == "image")
AND $document['largeur']*$document['hauteur']) {
echo "<br /><b>"._T('entree_dimensions')."</b><br />\n";
echo "<input type='text' name='largeur_document' class='fondl' style='font-size:9px;' value=\"".$document['largeur']."\" size='5'>";
echo " &#215; <input type='text' name='hauteur_document' class='fondl' style='font-size:9px;' value=\"".$document['hauteur']."\" size='5'> "._T('info_pixels');

9
ecrire/inc_extra.php3

@ -14,10 +14,11 @@
////////////////////////////////////////////////////////////////////////////////////
// Pour utiliser les champs "extra", il faut installer dans le fichier
// ecrire/mes_options.php3 un tableau definissant les champs en question,
// pour chaque type d'objet (article, rubrique, breve, auteur ou mot) que
// l'on veut ainsi etendre ; utiliser dans l'espace public avec
// [(#EXTRA|nom_du_champ)]
// ecrire/mes_options.php3 un tableau definissant les champs pour chaque
// type d'objet que l'on veut Žtendre (article, rubrique, breve, auteur,
// site ou mot). Pour acceder aux valeurs des champs extra dans les
// squelettes du site public, utiliser la notation :
// [(#EXTRA|extra{nom_du_champ})]
// Exemples :
/*

29
ecrire/inc_filtres.php3

@ -249,6 +249,8 @@ function lignes_longues($texte, $l = 70) {
// Majuscules y compris accents, en HTML
function majuscules($texte) {
if (!strlen($texte)) return '';
// Cas du turc
if ($GLOBALS['spip_lang'] == 'tr') {
# remplacer hors des tags et des entites
@ -264,7 +266,7 @@ function majuscules($texte) {
}
// Cas general
return "<span style='text-transform: uppercase'>$texte</span>";
return "<span style='text-transform: uppercase;'>$texte</span>";
}
// "127.4 ko" ou "3.1 Mo"
@ -828,11 +830,23 @@ function reduire_image($texte, $taille = -1, $taille_y = -1) {
}
}
// Cas general : trier toutes les images
if (preg_match_all(',<img\s.*>,Uims', $texte, $tags, PREG_SET_ORDER)) {
// Cas general : trier toutes les images, avec eventuellement leur <span>
if (preg_match_all(
',(<(span|div) [^<>]*spip_documents[^<>]*>)?(<img\s.*>),Uims',
$texte, $tags, PREG_SET_ORDER)) {
foreach ($tags as $tag) {
if ($reduit = reduire_une_image($tag[0], $taille, $taille_y))
$texte = str_replace($tag[0], $reduit, $texte);
if ($reduit = reduire_une_image($tag[3], $taille, $taille_y))
// En cas de span spip_documents, modifier le style=...width:
if($tag[1]
AND $w = extraire_attribut($reduit, 'width')) {
$texte = str_replace($tag[1],
inserer_attribut($tag[1], 'style',
preg_replace(", width: *\d+px,", " width: ${w}px",
extraire_attribut($tag[1], 'style'))), $texte);
}
$texte = str_replace($tag[3], $reduit, $texte);
}
}
@ -960,8 +974,9 @@ function multi_trad ($trads) {
// analyse un bloc multi
function extraire_trad ($bloc) {
$lang = '';
while (preg_match("/^(.*?)[{\[]([a-z_]+)[}\]]/si", $bloc, $regs)) {
// ce reg fait planter l'analyse multi s'il y a de l'{italique} dans le champ
// while (preg_match("/^(.*?)[{\[]([a-z_]+)[}\]]/si", $bloc, $regs)) {
while (preg_match("/^(.*?)[\[]([a-z_]+)[\]]/si", $bloc, $regs)) {
$texte = trim($regs[1]);
if ($texte OR $lang)
$trads[$lang] = $texte;

19
ecrire/inc_lang.php3

@ -82,7 +82,7 @@ function changer_langue($lang) {
$liste_langues = $all_langs.','.lire_meta('langues_multilingue');
if ($lang && ereg(",$lang,", ",$liste_langues,")) {
if ($lang && preg_match("/,$lang,/", ",$liste_langues,")) {
$GLOBALS['spip_lang'] = $lang;
$spip_lang_rtl = lang_dir($lang, '', '_rtl');
@ -106,7 +106,7 @@ function regler_langue_navigateur() {
$accept_langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
if (is_array($accept_langs)) {
while(list(, $s) = each($accept_langs)) {
if (eregi('^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$', trim($s), $r)) {
if (preg_match('/^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$/i', trim($s), $r)) {
$lang = strtolower($r[1]);
if (changer_langue($lang)) return $lang;
}