From 32738ec515dcb903bf027dd560d952858573b5fe Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Fri, 14 Dec 2007 09:43:41 +0000
Subject: [PATCH] =?UTF-8?q?Acc=C3=A9l=C3=A9ration=20de=20include=5Fspip+fi?=
 =?UTF-8?q?nd=5Fin=5Fpath:=20ces=20deux=20fonctions=20vont=20=C3=AAtre=20f?=
 =?UTF-8?q?usionn=C3=A9es=20afin=20d'=C3=A9viter=20des=20redondances=20de?=
 =?UTF-8?q?=20tests=20et=20des=20allocations=20de=20cha=C3=AEnes=20=C3=A0?=
 =?UTF-8?q?=20chaque=20appel.=20Premi=C3=A8re=20=C3=A9tape:=20traitement?=
 =?UTF-8?q?=20des=20cas=20particuliers.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

ATTENTION: les .php3 ne sont plus pris en compte à partir de maintenant.
---
 ecrire/action/editer_rubrique.php |  2 +-
 ecrire/base/connect_sql.php       |  7 ++---
 ecrire/base/import_all.php        |  2 +-
 ecrire/exec/aide_index.php        |  2 +-
 ecrire/exec/breves_edit.php       |  2 +-
 ecrire/exec/breves_voir.php       |  1 -
 ecrire/inc/charsets.php           |  2 +-
 ecrire/inc/export.php             |  3 ++-
 ecrire/inc/filtres.php            | 13 ++++-----
 ecrire/inc/filtres_images.php     |  5 ++--
 ecrire/inc/import.php             |  3 ++-
 ecrire/inc/install.php            |  2 +-
 ecrire/inc/lang.php               |  2 +-
 ecrire/inc/traduire.php           |  4 +--
 ecrire/inc/utils.php              | 44 +++++++++++--------------------
 ecrire/public/compiler.php        |  4 +--
 ecrire/public/composer.php        |  2 +-
 17 files changed, 42 insertions(+), 58 deletions(-)

diff --git a/ecrire/action/editer_rubrique.php b/ecrire/action/editer_rubrique.php
index 608741ed23..571cfaf547 100644
--- a/ecrire/action/editer_rubrique.php
+++ b/ecrire/action/editer_rubrique.php
@@ -69,7 +69,7 @@ function revisions_rubriques($id_rubrique, $c=false) {
 	// qu'on n'administre pas.
 	$statut_ancien = $parent = '';
 	if (NULL !== ($id_parent = _request('id_parent', $c))) {
-		include_spip('inc_rubrique');
+
 		$id_parent = intval($id_parent);
 		$filles = calcul_branche($id_rubrique);
 		if (strpos(",$id_parent',", "$,filles,") != false)
diff --git a/ecrire/base/connect_sql.php b/ecrire/base/connect_sql.php
index b6a7b4629f..61e85963af 100644
--- a/ecrire/base/connect_sql.php
+++ b/ecrire/base/connect_sql.php
@@ -61,10 +61,11 @@ function spip_connect($serveur='', $version='') {
 	$type = $GLOBALS['db_ok']['type'];
 	$jeu = 'spip_' . $type .'_functions_' . $version;
 	if (!isset($GLOBALS[$jeu])) {
-		if (!include_spip($type . '_' . $version, 'req'))
+		if (!find_in_path($type . '_' . $version . '.php', 'req/', true)){
 			spip_log("spip_connect: serveur $index version '$version' non defini par $jeu.");
-		// ne plus reessayer 
-		return $connexions[$index][$version] = array();
+			// ne plus reessayer 
+			return $connexions[$index][$version] = array();
+		}
 	}
 	$connexions[$index][$version] = $GLOBALS[$jeu];
 	if ($old) return $connexions[$index];
diff --git a/ecrire/base/import_all.php b/ecrire/base/import_all.php
index a751df904a..1e4a184e51 100644
--- a/ecrire/base/import_all.php
+++ b/ecrire/base/import_all.php
@@ -32,7 +32,7 @@ else{
 
 // NB: Ce fichier peut ajouter des tables (old-style)
 // donc il faut l'inclure "en globals"
-if ($f = include_spip('mes_fonctions', false)) {
+if ($f = find_in_path('mes_fonctions.php')) {
 	global $dossier_squelettes;
 	@include_once ($f); 
 }
diff --git a/ecrire/exec/aide_index.php b/ecrire/exec/aide_index.php
index e2c38d1912..ac95c6337f 100644
--- a/ecrire/exec/aide_index.php
+++ b/ecrire/exec/aide_index.php
@@ -13,7 +13,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/headers');
-include_spip("inc/texte");
+include_spip('inc/texte');
 include_spip('inc/layer');
 
 /////////////////////////////
diff --git a/ecrire/exec/breves_edit.php b/ecrire/exec/breves_edit.php
index dba029e686..e348df2e44 100644
--- a/ecrire/exec/breves_edit.php
+++ b/ecrire/exec/breves_edit.php
@@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/presentation');
 include_spip('inc/documents');
-include_spip ('inc/barre');
+include_spip('inc/barre');
 
 // http://doc.spip.org/@exec_breves_edit_dist
 function exec_breves_edit_dist()
diff --git a/ecrire/exec/breves_voir.php b/ecrire/exec/breves_voir.php
index 9d2eb84f70..5f0d2e85c4 100644
--- a/ecrire/exec/breves_voir.php
+++ b/ecrire/exec/breves_voir.php
@@ -14,7 +14,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/presentation');
 include_spip('inc/actions');
-include_spip("inc/indexation");
 
 // http://doc.spip.org/@exec_breves_voir_dist
 function exec_breves_voir_dist()
diff --git a/ecrire/inc/charsets.php b/ecrire/inc/charsets.php
index 6421e82482..7d5db86762 100644
--- a/ecrire/inc/charsets.php
+++ b/ecrire/inc/charsets.php
@@ -42,7 +42,7 @@ function load_charset ($charset = 'AUTO', $langue_site = 'AUTO') {
 	else if ($charset == 'windows-1251') $charset = 'cp1251';
 	else if ($charset == 'windows-1256') $charset = 'cp1256';
 
-	if (include_spip('charsets/'.$charset)) {
+	if (find_in_path($charset . '.php', 'charsets/', true)) {
 		return $charset;
 	} else {
 		spip_log("Erreur: pas de fichier de conversion 'charsets/$charset'");
diff --git a/ecrire/inc/export.php b/ecrire/inc/export.php
index c12ff60049..934b426b99 100644
--- a/ecrire/inc/export.php
+++ b/ecrire/inc/export.php
@@ -18,10 +18,11 @@ include_spip('public/interfaces'); // pour table_jointures
 $GLOBALS['version_archive'] = '1.3';
 // NB: Ce fichier peut ajouter des tables (old-style)
 // donc il faut l'inclure "en globals"
-if ($f = include_spip('mes_fonctions', false)) {
+if ($f = find_in_path('mes_fonctions.php')) {
 	global $dossier_squelettes;
 	@include_once ($f); 
 }
+
 if (@is_readable(_DIR_TMP."charger_plugins_fonctions.php")){
 	// chargement optimise precompile
 	include_once(_DIR_TMP."charger_plugins_fonctions.php");
diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 57e09a5504..aff2061a73 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -14,7 +14,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/charsets');
-// signaler les filtres ayant besoin d'inclue inc/filtres_images
+// signaler les filtres ayant besoin d'inclure inc/filtres_images
 
 $GLOBALS['spip_matrice']['image_valeurs_trans'] = '';
 $GLOBALS['spip_matrice']['image_reduire'] = '';
@@ -71,12 +71,10 @@ function appliquer_filtre($arg, $filtre) {
 	return $f($arg);
 }
 
-// Appliquer un filtre (eventuellement defini dans la matrice) aux donnees
-// et arguments
+// Appliquer un filtre de la matrice
 // http://doc.spip.org/@filtrer
 function filtrer($filtre) {
-	if (isset($GLOBALS['spip_matrice'][$filtre]))
-		include_spip('inc/filtres_images');
+	include_spip('inc/filtres_images');
 
 	$tous = func_get_args();
 	if (substr($filtre,0,6)=='image_')
@@ -303,7 +301,7 @@ function proteger_amp($texte){
 // http://doc.spip.org/@entites_html
 function entites_html($texte, $tout=false) {
 	if (!$texte) return $texte;
-	include_spip("inc/texte");
+	include_spip('inc/texte');
 	$texte = htmlspecialchars(echappe_retour(echappe_html($texte,'',true),'','proteger_amp'));
 	if ($tout)
 		return corriger_toutes_entites_html($texte);
@@ -315,7 +313,6 @@ function entites_html($texte, $tout=false) {
 // http://doc.spip.org/@filtrer_entites
 function filtrer_entites($texte) {
 	if (strpos($texte,'&') === false) return $texte;
-#	include_spip('inc/charsets');
 	// filtrer
 	$texte = html2unicode($texte);
 	// remettre le tout dans le charset cible
@@ -1631,7 +1628,7 @@ function barre_textarea($texte, $rows, $cols, $lang='') {
 		return "<textarea name='texte' rows='$rows' class='forml' cols='$cols'>$texte</textarea>";
 
 	$num_textarea++;
-	include_spip ('inc/barre');
+	include_spip('inc/barre');
 	return afficher_barre("document.getElementById('textarea_$num_textarea')", true, $lang) .
 	  "
 <textarea name='texte' rows='$rows' class='forml' cols='$cols'
diff --git a/ecrire/inc/filtres_images.php b/ecrire/inc/filtres_images.php
index f13bb95b1e..2ace4c9926 100644
--- a/ecrire/inc/filtres_images.php
+++ b/ecrire/inc/filtres_images.php
@@ -61,7 +61,7 @@ function image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cre
 
 	// les protocoles web prennent au moins 3 lettres
 	if (preg_match(';^(\w{3,7}://);', $source)){
-		include_spip("inc/distant");
+		include_spip('inc/distant');
 		$fichier = _DIR_RACINE . copie_locale($source);
 		if (!$fichier) return "";
 	} else 	$fichier = $source;
@@ -2018,7 +2018,7 @@ function image_aplatir($im, $format='jpg', $coul='000000', $qualite=NULL)
 
 	if (!$image) return("");
 
-	include_spip("filtres");
+	include_spip('inc/filtres');
 	$couleurs = couleur_hex_to_dec($coul);
 	$dr= $couleurs["red"];
 	$dv= $couleurs["green"];
@@ -2317,7 +2317,6 @@ function couleur_eclaircir_si_foncee ($couleur) {
 function couleur_saturation($couleur, $val) {
 	if ($couleur == "ffffff") $couleur = "eeeeee";
 
-	include_spip("inc/filtres_images");
 	$couleurs = couleur_hex_to_dec($couleur);
 	$r= 255 - $couleurs["red"];
 	$g= 255 - $couleurs["green"];
diff --git a/ecrire/inc/import.php b/ecrire/inc/import.php
index 36f44dda8e..c51c76e633 100644
--- a/ecrire/inc/import.php
+++ b/ecrire/inc/import.php
@@ -18,10 +18,11 @@ include_spip('base/abstract_sql');
 
 // NB: Ce fichier peut ajouter des tables (old-style)
 // donc il faut l'inclure "en globals"
-if ($f = include_spip('mes_fonctions', false)) {
+if ($f = find_in_path('mes_fonctions.php')) {
 	global $dossier_squelettes;
 	@include_once ($f); 
 }
+
 if (@is_readable(_DIR_TMP."charger_plugins_fonctions.php")){
 	// chargement optimise precompile
 	include_once(_DIR_TMP."charger_plugins_fonctions.php");
diff --git a/ecrire/inc/install.php b/ecrire/inc/install.php
index 099aebe746..34ab70ff39 100644
--- a/ecrire/inc/install.php
+++ b/ecrire/inc/install.php
@@ -210,7 +210,7 @@ function install_connexion_form($db, $login, $pass, $predef, $hidden, $etape)
 	$pg = function_exists('pg_connect');
 	$mysql = function_exists('mysql_connect');
 	// demander les version dispo de sqlite
-	include_spip("req/sqlite_generique");
+	include_spip('req/sqlite_generique');
 	$versions = spip_versions_sqlite();
 	$sqlite2 = in_array(2, $versions);
 	$sqlite3 = in_array(3, $versions);
diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php
index 58c3b63e78..0907c8cc3f 100644
--- a/ecrire/inc/lang.php
+++ b/ecrire/inc/lang.php
@@ -263,7 +263,7 @@ function repertoire_lang($module='spip', $lang='fr') {
 		return _DIR_LANG;
 
 	# regarder s'il existe une v.f. qq part
-	if ($f = include_spip('lang/'.$module.'_'.$lang, false))
+	if ($f = find_in_path($module.'_'.$lang . '.php', 'lang/'))
 		return dirname($f).'/';
 
 	# sinon, je ne sais trop pas quoi dire...
diff --git a/ecrire/inc/traduire.php b/ecrire/inc/traduire.php
index 841fc185b8..76d6be4fc9 100644
--- a/ecrire/inc/traduire.php
+++ b/ecrire/inc/traduire.php
@@ -21,12 +21,12 @@ function chercher_module_lang($module, $lang = '') {
 		$lang = '_'.$lang;
 
 	// 1) dans un repertoire nomme lang/ se trouvant sur le chemin
-	if ($f = include_spip('lang/'.$module.$lang, false))
+	if ($f = find_in_path($module.$lang.'.php', 'lang/'))
 		return $f;
 
 	// 2) directement dans le chemin (old style, uniquement pour local)
 	return ($module == 'local')
-		? include_spip($module.$lang, false)
+		? find_in_path('local'.$lang. '.php')
 		: '';
 }
 
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 89de11e7fb..78c68db4ba 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -524,11 +524,6 @@ function texte_script($texte) {
 	return str_replace('\'', '\\\'', str_replace('\\', '\\\\', $texte));
 }
 
-//
-// find_in_path() : chercher un fichier nomme x selon le chemin rep1:rep2:rep3
-//
-
-
 // la fonction _chemin ajoute un repertoire au chemin courant si un repertoire lui est passe en parametre
 // retourne le chemin courant sinon, sous forme de array
 // seul le dossier squelette peut etre modifie en dehors de cette fonction, pour raison historique
@@ -605,26 +600,13 @@ function creer_chemin() {
 	return $path_a;
 }
 
-/*
-// Cette fonction est appelee une seule fois par hit et par dir du chemin
-// http://doc.spip.org/@memoriser_fichiers
-function memoriser_fichiers($dir) {
-	$fichiers = array();
-
-	if ($dir === '') $dir = '.';
-
-	if (@is_dir($dir)
-	AND $t = @opendir($dir)) {
-		while (($f = readdir($t)) !== false) {
-			$fichiers[$f] = true;
-		}
-	}
-	return $fichiers;
-}
-*/
+//
+// chercher un fichier $file dans le SPIP_PATH
+// si on donne un sous-repertoire en 2e arg optionnel, il FAUT le / final
+// si 3e arg vrai, on inclut si ce n'est fait.
 
 // http://doc.spip.org/@find_in_path
-function find_in_path ($file, $dirname='') {
+function find_in_path ($file, $dirname='', $include=false) {
 	static $files=array(), $dirs=array();
 
 	$a = strrpos($file,'/');
@@ -633,14 +615,18 @@ function find_in_path ($file, $dirname='') {
 		$file = substr($file, $a);
 	}
 
-	if (isset($files[$dirname][$file])) return $files[$dirname][$file];
-
+	if (isset($files[$dirname][$file])) {
+		if ($include) include_once $files[$dirname][$file];
+		return  $files[$dirname][$file];
+	}
 	foreach(creer_chemin() as $dir) {
 		if (!isset($dirs[$a = $dir . $dirname]))
 			$dirs[$a] = is_dir($a);
 		if ($dirs[$a]) {
-			if (is_readable($a .= $file))
+			if (is_readable($a .= $file)) {
+				if ($include) include_once $a;
 				return $files[$dirname][$file] = $a;
+			}
 		}
 	}
 }
@@ -694,10 +680,10 @@ function charger_generer_url() {
 		// fichier inc-urls ? (old style)
 		if (@is_readable($f = _DIR_RACINE.'inc-urls.php3')
 		OR @is_readable($f = _DIR_RACINE.'inc-urls.php')
-		OR $f = find_in_path('inc-urls-'.$GLOBALS['type_urls'].'.php3')
-		OR $f = include_spip('urls/'.$GLOBALS['type_urls'], false)
-		)
+		OR $f = find_in_path('inc-urls-'.$GLOBALS['type_urls'].'.php3'))
 			include_once($f);
+
+		else include_spip('urls/'.$GLOBALS['type_urls']);
 	}
 }
 
diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index 34127ef6d7..9a314706d0 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -831,8 +831,8 @@ function " . $nom . '($Cache, $Pile, $doublons=array(), $Numrows=array(), $SP=0)
 	$connect = ' .
 	_q($connect) . ';
 	$page = ' .
-	// ATTENTION, le calcul du l'expression $corps affectera $Cache
-	// c'est pourquoi on l'affecte a cette variable auxiliaire
+	// ATTENTION, le calcul de l'expression $corps affectera $Cache
+	// c'est pourquoi on l'affecte a la variable auxiliaire $page. 
 	// avant de referencer $Cache
 	$corps . ";
 
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index bfd9797396..3af2adfef7 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -247,7 +247,7 @@ function argumenter_squelette($v) {
 // verifier leurs arguments et filtres, et calculer le code a inclure
 // http://doc.spip.org/@executer_balise_dynamique
 function executer_balise_dynamique($nom, $args, $filtres, $lang, $ligne) {
-	if (!$file = include_spip('balise/' . strtolower($nom)))
+	if (!$file = find_in_path(strtolower($nom) .'.php', 'balise/', true))
 		die ("pas de balise dynamique pour #". strtolower($nom)." !");
 
 	// Y a-t-il une fonction de traitement filtres-arguments ?
-- 
GitLab