From 046828e516b0b29f002f406836778a036da6beef Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Fri, 11 Nov 2005 10:02:34 +0000
Subject: [PATCH] permettre aux petits scripts comme iframe de ne pas charger
 inc_filtres ni d'initialiser des globales inutiles (par deport dans
 inc_version inc_minipres de qq fonctions indispensables)

---
 ecrire/articles_tous.php3    | 24 ++++++++++-
 ecrire/inc.php3              | 46 +++------------------
 ecrire/inc_accueil.php       | 12 +++---
 ecrire/inc_auteur_infos.php  |  3 --
 ecrire/inc_config.php3       |  1 -
 ecrire/inc_filtres.php3      | 78 ------------------------------------
 ecrire/inc_index.php3        |  1 -
 ecrire/inc_lang.php3         |  1 -
 ecrire/inc_layer.php3        |  4 --
 ecrire/inc_mail.php3         |  2 -
 ecrire/inc_meta.php3         |  1 -
 ecrire/inc_minipres.php      | 44 +++++++++++++++++++-
 ecrire/inc_mots.php3         |  3 --
 ecrire/inc_presentation.php3 | 18 ++++++---
 ecrire/inc_session.php3      |  1 -
 ecrire/inc_statistiques.php3 |  1 -
 ecrire/inc_texte.php3        |  1 -
 ecrire/inc_version.php3      | 13 ++++++
 ecrire/upgrade.php3          |  1 -
 inc-calcul-outils.php3       |  7 +++-
 20 files changed, 108 insertions(+), 154 deletions(-)

diff --git a/ecrire/articles_tous.php3 b/ecrire/articles_tous.php3
index c213231c7f..8673012f6d 100644
--- a/ecrire/articles_tous.php3
+++ b/ecrire/articles_tous.php3
@@ -11,13 +11,35 @@
 \***************************************************************************/
 
 
-
 include ("inc.php3");
 include_ecrire("inc_presentation.php3");
 include_ecrire("inc_texte.php3");
 include_ecrire("inc_urls.php3");
 include_ecrire("inc_rubriques.php3");
 
+//  checkbox avec imgage
+
+function http_label_img($statut, $etat, $var, $img, $texte) {
+  return "<label for='$statut'>". 
+    boutonne('checkbox',
+	     $var . '[]',
+	     $statut,
+	     (($etat !== false) ? ' checked="checked"' : '') .
+	     "id='$statut'") .
+    "&nbsp;" .
+    http_img_pack($img, $texte, "width='8' height='9' border='0'", $texte) .
+    " " .
+    $texte .
+    "</label><br />";
+}
+
+// fabrique un bouton de type $t de Name $n, de Value $v et autres attributs $a
+function boutonne($t, $n, $v, $a='') {
+  return "\n<input type='$t'" .
+    (!$n ? '' : " name='$n'") .
+    " value=\"$v\" $a />";
+}
+
 if (count($aff_art) > 0) $aff_art = join(',', $aff_art);
 else $aff_art = 'prop,publie';
 
diff --git a/ecrire/inc.php3 b/ecrire/inc.php3
index 60c442c9d2..145433056b 100644
--- a/ecrire/inc.php3
+++ b/ecrire/inc.php3
@@ -10,7 +10,6 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-
 if (!defined('_ECRIRE_INC_VERSION')) {
 	include ("inc_version.php3");
 }
@@ -30,12 +29,10 @@ else {spip_log("fonction $var_nom indisponible dans $var_f");exit;}
 
 if (!$var_res) exit;
 
-
 include_ecrire("inc_minipres.php"); // choisit la langue
 include_ecrire('inc_admin.php3');
 include_ecrire('inc_cookie.php');
 
-
 //
 // Preferences de presentation
 //
@@ -49,8 +46,9 @@ if (!$GLOBALS['_COOKIE']['spip_accepte_ajax']) {
 if ($spip_lang_ecrire = $GLOBALS['_COOKIE']['spip_lang_ecrire']
 AND $spip_lang_ecrire <> $auteur_session['lang']
 AND changer_langue($spip_lang_ecrire)) {
-	spip_query ("UPDATE spip_auteurs SET lang = '".addslashes($spip_lang_ecrire)
-	."' WHERE id_auteur = $connect_id_auteur");
+	spip_query ("UPDATE spip_auteurs SET lang = '".
+		    addslashes($spip_lang_ecrire) .
+		    "' WHERE id_auteur = $connect_id_auteur");
 	$auteur_session['lang'] = $spip_lang_ecrire;
 	ajouter_session($auteur_session, $spip_session);
 }
@@ -88,7 +86,6 @@ $GLOBALS['couleurs_spip'] = array(
 		"couleur_lien" => "#657701",
 		"couleur_lien_off" => "#A6C113"
 		),
-
 // Violet clair
 2 => array (
 		"couleur_foncee" => "#eb68b3",
@@ -96,7 +93,6 @@ $GLOBALS['couleurs_spip'] = array(
 		"couleur_lien" => "#8F004D",
 		"couleur_lien_off" => "#BE6B97"
 		),
-
 // Orange
 3 => array (
 		"couleur_foncee" => "#fa9a00",
@@ -104,7 +100,6 @@ $GLOBALS['couleurs_spip'] = array(
 		"couleur_lien" => "#FF5B00",
 		"couleur_lien_off" => "#B49280"
 		),
-
 // Saumon
 4 => array (
 		"couleur_foncee" => "#CDA261",
@@ -112,7 +107,6 @@ $GLOBALS['couleurs_spip'] = array(
 		"couleur_lien" => "#AA6A09",
 		"couleur_lien_off" => "#B79562"
 		),
-
 //  Bleu pastel
 5 => array (
 		"couleur_foncee" => "#5da7c5",
@@ -120,7 +114,6 @@ $GLOBALS['couleurs_spip'] = array(
 		"couleur_lien" => "#116587",
 		"couleur_lien_off" => "#81B7CD"
 		),
-
 //  Gris
 6 => array (
 		"couleur_foncee" => "#85909A",
@@ -134,7 +127,7 @@ $GLOBALS['couleurs_spip'] = array(
 $options      = $prefs['options'];
 $spip_display = $prefs['display'];
 $choix_couleur = $prefs['couleur'];
-if (strlen($couleurs_spip[$choix_couleur]['couleur_foncee']) < 7) $choix_couleur = 1;
+if (!isset($couleurs_spip[$choix_couleur])) $choix_couleur = 1;
 
 $couleur_foncee = $couleurs_spip[$choix_couleur]['couleur_foncee'];
 $couleur_claire = $couleurs_spip[$choix_couleur]['couleur_claire'];
@@ -148,38 +141,9 @@ topmargin='0' leftmargin='0' marginwidth='0' marginheight='0' frameborder='0'" .
   ($spip_lang_rtl ? " dir='rtl'" : "");
 
 //
-// Gestion de version
+// Gestion de version, sauf si justement on est en train de le faire
 //
 
 if (!isset($reinstall)) if (demande_maj_version()) exit;
 
-//
-// Gestion de la configuration globale du site
-//
-
-if (!$adresse_site) {
-	$nom_site_spip = lire_meta("nom_site");
-	$adresse_site = lire_meta("adresse_site");
-}
-
-if (!$nom_site_spip) {
-	$nom_site_spip = _T('info_mon_site_spip');
-	ecrire_meta("nom_site", $nom_site_spip);
-	ecrire_metas();
-}
-
-if (!$adresse_site) {
-	$adresse_site = "http://$HTTP_HOST".substr($REQUEST_URI, 0, strpos($REQUEST_URI, "/ecrire"));
-	ecrire_meta("adresse_site", $adresse_site);
-	ecrire_metas();
-}
-
-
-
-//
-// Recuperation du cookie
-//
-
-$cookie_admin = $_COOKIE['spip_admin'];
-
 ?>
diff --git a/ecrire/inc_accueil.php b/ecrire/inc_accueil.php
index bee711b35e..ca44ffc66a 100644
--- a/ecrire/inc_accueil.php
+++ b/ecrire/inc_accueil.php
@@ -110,7 +110,7 @@ function colonne_gauche_accueil($id_rubrique, $activer_breves,
 {
 
   global  $spip_display, $connect_statut, $connect_toutes_rubriques,
-    $connect_id_auteur, $cookie_admin, $connect_login;
+    $connect_id_auteur, $connect_login;
 
 
 //
@@ -211,7 +211,7 @@ if ($spip_display == 4) {
 //
 
 if ($connect_statut == "0minirezo" AND $spip_display != 4) {
-	if (!$cookie_admin) {
+	if (!$_COOKIE['spip_admin']) {
 		$gadget .= "<div>&nbsp;</div>".
 			"<table width=95%><tr>".
 			"<td width=100%>".
@@ -239,7 +239,7 @@ echo "<div>&nbsp;</div>";
 function personnel_accueil()
 {
   global $spip_display, $spip_lang_left, $connect_id_auteur, $connect_id_rubrique,
-$connect_nom, $connect_statut, $cookie_admin,  $partie_cal, $echelle;
+$connect_nom, $connect_statut,  $partie_cal, $echelle;
 
 if ($spip_display != 4) {
 	
@@ -278,7 +278,7 @@ if ($spip_display != 4) {
 	// Supprimer le cookie, se deconnecter...
 	//
 	
-	if ($cookie_admin) {
+	if ($_COOKIE['spip_admin']) {
 			$texte = _T('icone_supprimer_cookie');
 			if ($spip_display != 1) $texte .= aide("cookie");
 			icone_horizontale( $texte , "../spip_cookie.php3?cookie_admin=non&url=".rawurlencode(_DIR_RESTREINT_ABS), "cookie-24.gif", "");
@@ -291,12 +291,12 @@ if ($spip_display != 4) {
 
 function etat_base_accueil()
 {
-  global $spip_display, $spip_lang_left, $connect_id_auteur, $connect_nom, $connect_statut, $cookie_admin,  $partie_cal, $echelle;
+  global $spip_display, $spip_lang_left, $connect_id_auteur, $connect_nom, $connect_statut, $partie_cal, $echelle;
 
 if ($spip_display != 4) {
 
 	$nom_site_spip = propre(lire_meta("nom_site"));
-	if (!$nom_site_spip) $nom_site_spip="SPIP";
+	if (!$nom_site_spip) $nom_site_spip=  _T('info_mon_site_spip');
 	
 	
 	echo "\n<div>&nbsp;</div>";
diff --git a/ecrire/inc_auteur_infos.php b/ecrire/inc_auteur_infos.php
index bda26a80c6..82d6caa279 100644
--- a/ecrire/inc_auteur_infos.php
+++ b/ecrire/inc_auteur_infos.php
@@ -12,13 +12,10 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 include_ecrire("inc_presentation.php3");
-include_ecrire("inc_texte.php3");
 include_ecrire("inc_urls.php3");
 include_ecrire("inc_rubriques.php3");
 include_ecrire ("inc_acces.php3");
 include_ecrire ("inc_logos.php3");
-include_ecrire ("inc_session.php3");
-include_ecrire ("inc_filtres.php3");
 include_ecrire ("inc_abstract_sql.php3");
 
 function affiche_auteur_info_dist($id_auteur, $auteur,  $echec, $redirect, $ajouter_id_article)
diff --git a/ecrire/inc_config.php3 b/ecrire/inc_config.php3
index ede84265e2..7580bc2253 100644
--- a/ecrire/inc_config.php3
+++ b/ecrire/inc_config.php3
@@ -16,7 +16,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_ecrire ("inc_meta.php3");
 include_ecrire ("inc_admin.php3");
-include_ecrire ("inc_mail.php3");
 
 //
 // Appliquer les valeurs par defaut pour les options non initialisees
diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3
index 8c739ee67b..f50547b747 100644
--- a/ecrire/inc_filtres.php3
+++ b/ecrire/inc_filtres.php3
@@ -15,13 +15,6 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 
-// Transforme n'importe quel champ en une chaine utilisable
-// en PHP ou Javascript en toute securite
-// < ? php $x = '[(#TEXTE|texte_script)]'; ? >
-function texte_script($texte) {
-	return str_replace('\'', '\\\'', str_replace('\\', '\\\\', $texte));
-}
-
 // Echappement des entites HTML avec correction des entites "brutes"
 // (generees par les butineurs lorsqu'on rentre des caracteres n'appartenant
 // pas au charset de la page [iso-8859-1 par defaut])
@@ -172,53 +165,6 @@ function liens_ouvrants ($texte) {
 		"<a \\1 target=\"_blank\">", $texte);
 }
 
-// Fabrique une balise A, avec un href conforme au validateur W3C
-// attention au cas ou la href est du Javascript avec des "'"
-
-function http_href($href, $clic, $title='', $style='', $class='', $evt='') {
-	return '<a href="' .
-		str_replace('&', '&amp;', $href) .
-		'"' .
-		(!$title ? '' : ("\ntitle=\"" . supprimer_tags($title)."\"")) .
-		(!$style ? '' : ("\nstyle=\"" . $style . "\"")) .
-		(!$class ? '' : ("\nclass=\"" . $class . "\"")) .
-		($evt ? "\n$evt" : '') .
-		'>' .
-		$clic .
-		'</a>';
-}
-
-// produit une balise img avec un champ alt d'office si vide
-// attention le htmlentities et la traduction doivent etre appliques avant.
-
-function http_img_pack($img, $alt, $att, $title='') {
-	return "<img src='" . _DIR_IMG_PACK . $img
-	  . ("'\nalt=\"" .
-	     ($alt ? $alt : ($title ? $title : ereg_replace('\..*$','',$img)))
-	     . '" ')
-	  . ($title ? " title=\"$title\"" : '')
-	  . $att . " />";
-}
-
-// variante avec un label et un checkbox
-
-function http_label_img($statut, $etat, $var, $img, $texte) {
-  return "<label for='$statut'>". 
-    "<input type='checkbox' " .
-    (($etat !== false) ? ' checked="checked"' : '') .
-    " name='$var" .
-    "[]' value='$statut' id='$statut'>&nbsp;" .
-    http_img_pack($img, $texte, "width='8' height='9' border='0'", $texte) .
-    " " .
-    $texte .
-    "</label><br />";
-}
-
-function http_href_img($href, $img, $att, $title='', $style='', $class='', $evt='') {
-	return  http_href($href, http_img_pack($img, $title, $att), $title, $style, $class, $evt);
-}
-
-
 // Transformer les sauts de paragraphe en simples passages a la ligne
 function PtoBR($texte){
 	$texte = eregi_replace("</p>", "\n", $texte);
@@ -1679,23 +1625,6 @@ function vider_attribut ($balise, $attribut) {
 	return inserer_attribut($balise, $attribut, '', false, true);
 }
 
-// fabrique un bouton de type $t de Name $n, de Value $v et autres attributs $a
-# a placer ailleurs que dans inc_filtres
-function boutonne($t, $n, $v, $a='') {
-  return "\n<input type='$t'" .
-    (!$n ? '' : " name='$n'") .
-    " value=\"$v\" $a />";
-}
-
-function http_script($script, $src='', $noscript='') {
-	return '<script type="text/javascript"'
-		. ($src ? " src=\"$src\"" : '')
-		. ">"
-		. ($script ? "<!--\n$script\n//-->" : '')
-		. "</script>\n"
-		. (!$noscript ? '' : "<noscript>\n\t$noscript\n</noscript>\n");
-}
-
 
 // Un filtre ad hoc, qui retourne ce qu'il faut pour les tests de config
 // dans les squelettes : [(#URL_SITE_SPIP|tester_config{quoi})]
@@ -1715,13 +1644,6 @@ function tester_config($ignore, $quoi) {
 	}
 }
 
-// transformation XML des "&" en "&amp;"
-function quote_amp($u) {
-	return preg_replace(
-		"/&(?![a-z]{0,4}\w{2,3};|#x?[0-9a-f]{2,5};)/i",
-		"&amp;",$u);
-}
-
 //
 // Un filtre qui, etant donne un #PARAMETRES_FORUM, retourne un URL de suivi rss
 // dudit forum
diff --git a/ecrire/inc_index.php3 b/ecrire/inc_index.php3
index bea53f2c2b..d76d23c077 100644
--- a/ecrire/inc_index.php3
+++ b/ecrire/inc_index.php3
@@ -215,7 +215,6 @@ function indexer_objet($type, $id_objet, $forcer_reset = true) {
 	spip_query("UPDATE $table SET idx='idx' WHERE $col_id=$id_objet");
 
 	include_ecrire("inc_texte.php3");
-	include_ecrire("inc_filtres.php3");
 
 	spip_log("indexation $type $id_objet");
 	$index = '';
diff --git a/ecrire/inc_lang.php3 b/ecrire/inc_lang.php3
index b7b1da9f99..e545f01592 100644
--- a/ecrire/inc_lang.php3
+++ b/ecrire/inc_lang.php3
@@ -243,7 +243,6 @@ function lang_dselect ($rien='') {
 // 
 function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $herit = '', $lien='') {
 	global $couleur_foncee, $connect_id_auteur;
-	include_ecrire('inc_filtres.php3');
 
 	$ret = liste_options_langues($nom_select, $default, $herit);
 
diff --git a/ecrire/inc_layer.php3 b/ecrire/inc_layer.php3
index 9a82e8c8a5..45072ec057 100644
--- a/ecrire/inc_layer.php3
+++ b/ecrire/inc_layer.php3
@@ -12,10 +12,6 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
- include_ecrire ("inc_filtres.php3"); # pour http_script (normalement déjà fait)
-
-
-
 function debut_block_visible($nom_block){
 	global $numero_block, $compteur_block, $browser_layer;
 	if (!$browser_layer) return '';
diff --git a/ecrire/inc_mail.php3 b/ecrire/inc_mail.php3
index 352cc1051e..16e37a0399 100644
--- a/ecrire/inc_mail.php3
+++ b/ecrire/inc_mail.php3
@@ -95,7 +95,6 @@ function nettoyer_caracteres_mail($t) {
 
 function envoyer_mail($email, $sujet, $texte, $from = "", $headers = "") {
 	global $hebergeur, $queue_mails;
-	include_ecrire('inc_filtres.php3');
 	include_ecrire('inc_charsets.php3');
 
 	if (!email_valide($email)) return false;
@@ -166,7 +165,6 @@ function envoyer_mail($email, $sujet, $texte, $from = "", $headers = "") {
 
 function extrait_article($row) {
 	include_ecrire("inc_texte.php3");
-	include_ecrire("inc_filtres.php3");
 
 	$adresse_site = lire_meta("adresse_site");
 
diff --git a/ecrire/inc_meta.php3 b/ecrire/inc_meta.php3
index 931a935bf9..d9b4b89dcf 100644
--- a/ecrire/inc_meta.php3
+++ b/ecrire/inc_meta.php3
@@ -42,7 +42,6 @@ function effacer_meta($nom) {
 //
 function ecrire_metas() {
 	global $meta;
-	include_ecrire('inc_filtres.php3'); # pour texte_script
 
 	lire_metas();
 
diff --git a/ecrire/inc_minipres.php b/ecrire/inc_minipres.php
index fe43eee66e..3f5c7835fb 100644
--- a/ecrire/inc_minipres.php
+++ b/ecrire/inc_minipres.php
@@ -14,11 +14,9 @@
 //
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-include_ecrire ("inc_filtres.php3"); # pour les fonctions http_* (normalement deja la)
 include_ecrire ("inc_lang.php3");
 utiliser_langue_visiteur();
 
-
 //
 // Presentation des pages d'installation et d'erreurs
 //
@@ -113,4 +111,46 @@ function afficher_bouton_preview() {
 		  . http_img_pack('naviguer-site.png', $x, '')
 		  ."&nbsp;$x</div>";
 }
+
+// Fabrique une balise A, avec un href conforme au validateur W3C
+// attention au cas ou la href est du Javascript avec des "'"
+
+function http_href($href, $clic, $title='', $style='', $class='', $evt='') {
+	return '<a href="' .
+		str_replace('&', '&amp;', $href) .
+		'"' .
+		(!$title ? '' : ("\ntitle=\"" . supprimer_tags($title)."\"")) .
+		(!$style ? '' : ("\nstyle=\"" . $style . "\"")) .
+		(!$class ? '' : ("\nclass=\"" . $class . "\"")) .
+		($evt ? "\n$evt" : '') .
+		'>' .
+		$clic .
+		'</a>';
+}
+
+// produit une balise img avec un champ alt d'office si vide
+// attention le htmlentities et la traduction doivent etre appliques avant.
+
+function http_img_pack($img, $alt, $att, $title='') {
+	return "<img src='" . _DIR_IMG_PACK . $img
+	  . ("'\nalt=\"" .
+	     ($alt ? $alt : ($title ? $title : ereg_replace('\..*$','',$img)))
+	     . '" ')
+	  . ($title ? " title=\"$title\"" : '')
+	  . $att . " />";
+}
+
+function http_href_img($href, $img, $att, $title='', $style='', $class='', $evt='') {
+	return  http_href($href, http_img_pack($img, $title, $att), $title, $style, $class, $evt);
+}
+
+function http_script($script, $src='', $noscript='') {
+	return '<script type="text/javascript"'
+		. ($src ? " src=\"$src\"" : '')
+		. ">"
+		. ($script ? "<!--\n$script\n//-->" : '')
+		. "</script>\n"
+		. (!$noscript ? '' : "<noscript>\n\t$noscript\n</noscript>\n");
+}
+
 ?>
diff --git a/ecrire/inc_mots.php3 b/ecrire/inc_mots.php3
index 1da009b6fb..8ec4e49cc9 100644
--- a/ecrire/inc_mots.php3
+++ b/ecrire/inc_mots.php3
@@ -14,9 +14,6 @@
 //
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-include_ecrire ("inc_filtres.php3"); # pour http_script (normalement déjà fait)
-
-
 // ne pas faire d'erreur si les chaines sont > 254 caracteres
 function levenshtein255 ($a, $b) {
 	$a = substr($a, 0, 254);
diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3
index ad02825793..66106aa810 100644
--- a/ecrire/inc_presentation.php3
+++ b/ecrire/inc_presentation.php3
@@ -1804,7 +1804,7 @@ function debut_html($titre = "", $rubrique="") {
 
 	global $attributes_body, $browser_verifForm;
 	$nom_site_spip = entites_html(textebrut(typo(lire_meta("nom_site"))));
-	if (!$nom_site_spip) $nom_site_spip="SPIP";
+	if (!$nom_site_spip) $nom_site_spip=  _T('info_mon_site_spip');
 	$titre = textebrut(typo($titre));
 
 	http_no_cache();
@@ -2302,7 +2302,7 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr
 function init_entete($titre, $rubrique, $css) {
 	global $attributes_body, $browser_verifForm;
 	$nom_site_spip = entites_html(textebrut(typo(lire_meta("nom_site"))));
-	if (!$nom_site_spip) $nom_site_spip="SPIP";
+	if (!$nom_site_spip) $nom_site_spip=  _T('info_mon_site_spip');
 
 	// envoi des en-tetes, du doctype et du <head><title...
 	include_ecrire('inc_headers.php');
@@ -2327,7 +2327,7 @@ function init_entete($titre, $rubrique, $css) {
 function init_body($rubrique = "asuivre", $sous_rubrique = "asuivre") {
 	global $couleur_foncee;
 	global $couleur_claire;
-	global $adresse_site;
+	global $REQUEST_URI;
 	global $connect_id_auteur;
 	global $connect_statut;
 	global $connect_activer_messagerie;
@@ -2337,6 +2337,14 @@ function init_body($rubrique = "asuivre", $sous_rubrique = "asuivre") {
 	global $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
 	$activer_messagerie = "oui";
 
+	if (!$adresse_site) {
+		$adresse_site = lire_meta("adresse_site");
+		if (!$adresse_site) {
+			$adresse_site = "http://$HTTP_HOST".substr($REQUEST_URI, 0, strpos($REQUEST_URI, "/" . _DIR_RESTREINT_ABS));
+			ecrire_meta("adresse_site", $adresse_site);
+			ecrire_metas();
+		}
+	}
 
 	if ($spip_ecran == "large") $largeur = 974;
 	else $largeur = 750;
@@ -3091,7 +3099,7 @@ function fin_cadre_formulaire(){
 //
 
 function debut_gauche($rubrique = "asuivre") {
-	global $connect_statut, $cookie_admin;
+	global $connect_statut;
 	global $options, $spip_display;
 	global $connect_id_auteur;
 	global $spip_ecran;
@@ -3139,7 +3147,7 @@ function creer_colonne_droite($rubrique=""){
 	global $activer_imessage;
 	global $connect_activer_messagerie;
 	global $connect_activer_imessage;
-	global $connect_statut, $cookie_admin;
+	global $connect_statut;
 	global $options;
 	global $connect_id_auteur, $spip_ecran;
 	global $flag_3_colonnes, $flag_centre_large;
diff --git a/ecrire/inc_session.php3 b/ecrire/inc_session.php3
index 7f5ba88e90..8fe679217d 100644
--- a/ecrire/inc_session.php3
+++ b/ecrire/inc_session.php3
@@ -213,7 +213,6 @@ function ask_php_auth($pb, $raison, $retour, $url='', $re='', $lien='') {
 	@Header("HTTP/1.0 401 Unauthorized");
 	echo "<b>$pb</b><p>$raison</p>[<a href='./'>$retour</a>] ";
 	if ($url) {
-		include_ecrire('inc_filtres.php3');
 		$url = quote_amp($url);
 		echo "[<a href='spip_cookie.php3?essai_auth_http=oui"
 			. "&amp;$url'>$re</a>]";
diff --git a/ecrire/inc_statistiques.php3 b/ecrire/inc_statistiques.php3
index 49f07115d8..69d5acd82d 100644
--- a/ecrire/inc_statistiques.php3
+++ b/ecrire/inc_statistiques.php3
@@ -60,7 +60,6 @@ function stats_load_engines() {
 function stats_show_keywords($kw_referer, $kw_referer_host) {
 	static $arr_engines;
 	static $url_site;
-	include_ecrire("inc_filtres.php3");
 
 	if (!$arr_engines) {
 		// Charger les moteurs de recherche
diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index 0d89a966eb..dc283f608f 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -616,7 +616,6 @@ function extraire_lien ($regs) {
 		$lien_url .= $ancre;
 
 		// supprimer les numeros des titres
-		include_ecrire("inc_filtres.php3");
 		$lien_texte = supprimer_numero($lien_texte);
 	}
 	else if (preg_match(',^\?(.*)$,s', $lien_url, $regs)) {
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 103939a1b9..fd3a04f262 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -949,6 +949,19 @@ function redirige_par_entete($url) {
 	exit;
 }
 
+// transformation XML des "&" en "&amp;"
+function quote_amp($u) {
+	return preg_replace(
+		"/&(?![a-z]{0,4}\w{2,3};|#x?[0-9a-f]{2,5};)/i",
+		"&amp;",$u);
+}
+
+// Transforme n'importe quel champ en une chaine utilisable
+// en PHP ou Javascript en toute securite
+// < ? php $x = '[(#TEXTE|texte_script)]'; ? >
+function texte_script($texte) {
+	return str_replace('\'', '\\\'', str_replace('\\', '\\\\', $texte));
+}
 
 //
 // find_in_path() : chercher un fichier nomme x selon le chemin rep1:rep2:rep3
diff --git a/ecrire/upgrade.php3 b/ecrire/upgrade.php3
index 02f13f6e14..d1ec7ab26e 100644
--- a/ecrire/upgrade.php3
+++ b/ecrire/upgrade.php3
@@ -22,7 +22,6 @@ if (!_FILE_CONNECT) {
 include_ecrire ("inc_acces.php3");
 include_ecrire ("inc_config.php3");
 include_ecrire ("inc_texte.php3");
-include_ecrire ("inc_filtres.php3");
 
 // Si reinstallation necessaire, message ad hoc
 if ($reinstall == 'oui') {
diff --git a/inc-calcul-outils.php3 b/inc-calcul-outils.php3
index e6226ab7d1..da44e3164a 100644
--- a/inc-calcul-outils.php3
+++ b/inc-calcul-outils.php3
@@ -57,7 +57,12 @@ function affiche_logos($logos, $lien, $align) {
 		. $mouseover
 		. " style='border-width: 0px;' class='spip_logos' />";
 
-	return ($lien ? http_href($lien, $milieu) : $milieu);
+	return (!$lien ? $milieu :
+		('<a href="' .
+		 str_replace('&', '&amp;', $lien) .
+		'">' .
+		$milieu .
+		'</a>'	 ));
 }
 
 //
-- 
GitLab