From b7db8eb9619c249c9c86b46e1e65a178af1bd86f Mon Sep 17 00:00:00 2001
From: James <james@rezo.net>
Date: Sat, 21 Oct 2006 20:10:38 +0000
Subject: [PATCH] =?UTF-8?q?On=20d=C3=A9place=20la=20d=C3=A9finition=20de?=
 =?UTF-8?q?=20=5FSPIP=5FCHMOD=20dans=20un=20fichier=20=C3=A0=20part=20(il?=
 =?UTF-8?q?=20concerne=20le=20file=5Fsystem,=20pas=20la=20base=20de=20donn?=
 =?UTF-8?q?=C3=A9es)=20dans=20config/.=20Il=20s'appelle=20chmod.php,=20c'e?=
 =?UTF-8?q?st=20original...?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Ce qui marche mieux pour le surcharger dans mes_options.php, et c'est inc_version.php qui lui donne une valeur par défaut, le cas échéant. Ce fichier est crée pour une nouvelle installation. Sur une mise à jour, il ne se passe rien, on fait du 777 comme avant.

config/ abrite donc potentiellement deux fichiers, ça prend son sens maintenant :)... et on pourrait imaginer que ldap soit indépendant de la même manière... mais rien ne presse...

ça règle un soucis de création du cache en fichier plat aussi (cf. #635)
---
 ecrire/inc/utils.php       |  3 ---
 ecrire/inc_version.php     | 15 +++++++++++++++
 ecrire/install/etape_1.php |  3 +++
 ecrire/install/etape_4.php | 11 ++++++++++-
 ecrire/install/etape_5.php |  5 +++++
 ecrire/install/etape_6.php | 12 ++++++++++++
 6 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 832aa6ef9d..7633e15e96 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -207,9 +207,6 @@ function spip_connect($serveur='') {
 	if (!isset($t[$serveur])) {
 		$f = charger_fonction($serveur, 'base', true);
 		$t[$serveur] = $f ? $f() : false;
-
-		// on en profite pour fixer ca si absent de connect.php (hack)
-		define('_SPIP_CHMOD', 0777);
 	}
 
 	return $t[$serveur];
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index 58f661cf89..6c310abd2e 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -303,6 +303,13 @@ function spip_initialisation_parametree($pi, $pa, $ti, $ta) {
 
 	define('_DIR_CONFIG', $pi);
 
+	// Le fichier de definition des droits d'acces en ecriture
+	define('_FILE_CHMOD_INS', ($pi . "chmod"));
+	define('_FILE_CHMOD',
+		(@is_readable($f = _FILE_CHMOD_INS . '.php') ? $f
+	:	false));
+	
+
 	// Le fichier de connexion a la base de donnees
 	define('_FILE_CONNECT_INS_ANTE_192', (_DIR_RESTREINT . "inc_connect"));
 	define('_FILE_CONNECT_INS', ($pi . "connect"));
@@ -353,6 +360,14 @@ spip_initialisation_parametree(
        (_DIR_RACINE  . _DIRNAME_TEMPORAIRE_ACCESSIBLE)
        );
 
+if (defined('_FILE_CHMOD')) {
+	if (@file_exists(_FILE_CHMOD)) {
+		include_once(_FILE_CHMOD);
+	}
+}else {
+	define('_SPIP_CHMOD', 0777);
+}
+
 //
 // Definitions standards (charge aussi inc/flock)
 //
diff --git a/ecrire/install/etape_1.php b/ecrire/install/etape_1.php
index c04ed92b4d..f6b01de73e 100644
--- a/ecrire/install/etape_1.php
+++ b/ecrire/install/etape_1.php
@@ -42,6 +42,9 @@ function install_etape_1_dist()
 			if ($port_db = $regs[2]) $adresse_db .= ':'.$port_db;
 			$login_db = $regs[3];
 		}
+	}
+	if(@file_exists(_FILE_CHMOD_INS . _FILE_TMP . '.php')){
+		$s = @join('', @file(_FILE_CHMOD_INS . _FILE_TMP . '.php'));
 		if(ereg("define\('_SPIP_CHMOD', (.*)\)", $s, $regs)) {
 			$chmod = $regs[1]; 
 		}
diff --git a/ecrire/install/etape_4.php b/ecrire/install/etape_4.php
index c49197fd4c..b463947753 100644
--- a/ecrire/install/etape_4.php
+++ b/ecrire/install/etape_4.php
@@ -66,6 +66,16 @@ function install_etape_4_dist()
 	}
 	echo "($result_ok) -->";
 
+	if($chmod) {
+		$conn = "<"."?php\n";
+		$conn .= "if (!defined(\"_ECRIRE_INC_VERSION\")) return;\n";
+		$conn .= "define('_SPIP_CHMOD', ".$chmod.");\n";
+		$conn .= "?".">";
+		if (!ecrire_fichier(_FILE_CHMOD_INS . _FILE_TMP . '.php',
+		$conn))
+			redirige_par_entete(generer_url_ecrire('install'));
+	}
+
 	if ($result_ok) {
 		if (preg_match(',(.*):(.*),', $adresse_db, $r))
 			list(,$adresse_db, $port) = $r;
@@ -74,7 +84,6 @@ function install_etape_4_dist()
 		$conn = "<"."?php\n";
 		$conn .= "if (!defined(\"_ECRIRE_INC_VERSION\")) return;\n";
 		$conn .= "\$GLOBALS['spip_connect_version'] = 0.4;\n";
-		$conn .= "define('_SPIP_CHMOD', ".$chmod.");\n";
 		$conn .= $ligne_rappel;
 		$conn .= "spip_connect_db("
 			. "'$adresse_db','$port','$login_db','$pass_db','$sel_db'"
diff --git a/ecrire/install/etape_5.php b/ecrire/install/etape_5.php
index 2d05daef65..80809a0886 100644
--- a/ecrire/install/etape_5.php
+++ b/ecrire/install/etape_5.php
@@ -22,6 +22,11 @@ function install_etape_5_dist()
 	else
 		redirige_par_entete(generer_url_ecrire('install'));
 
+	if (@file_exists(_FILE_CHMOD_INS . _FILE_TMP . '.php'))
+		include(_FILE_CHMOD_INS . _FILE_TMP . '.php');
+	else
+		redirige_par_entete(generer_url_ecrire('install'));
+
 	echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_informations_personnelles')."</FONT>\n";
 
 	echo "<b>"._T('texte_informations_personnelles_1')."</b>";
diff --git a/ecrire/install/etape_6.php b/ecrire/install/etape_6.php
index 839a6b1747..efb18c0176 100644
--- a/ecrire/install/etape_6.php
+++ b/ecrire/install/etape_6.php
@@ -28,6 +28,11 @@ function install_etape_6_dist()
 	else
 		redirige_par_entete(generer_url_ecrire('install'));
 
+	if (@file_exists(_FILE_CHMOD_INS . _FILE_TMP . '.php'))
+		include(_FILE_CHMOD_INS . _FILE_TMP . '.php');
+	else
+		redirige_par_entete(generer_url_ecrire('install'));
+
 	# maintenant on connait le vrai charset du site s'il est deja configure
 	# sinon par defaut inc/meta reglera _DEFAULT_CHARSET
 	# (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
@@ -78,6 +83,13 @@ function install_etape_6_dist()
 		@unlink(_FILE_CONNECT_INS . _FILE_TMP . '.php');
 	}
 
+	if (!@rename(_FILE_CHMOD_INS . _FILE_TMP . '.php',
+		    _FILE_CHMOD_INS . '.php')) {
+		copy(_FILE_CHMOD_INS . _FILE_TMP . '.php', 
+		     _FILE_CHMOD_INS . '.php');
+		@unlink(_FILE_CHMOD_INS . _FILE_TMP . '.php');
+	}
+
 	echo "<form action='./' method='post'>";
 	echo bouton_suivant();
 	echo "</FORM>";
-- 
GitLab