From 2ac4569229e89eb9106eb79ea2c696713b903adb Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Wed, 17 Sep 2003 04:03:44 +0000
Subject: [PATCH] Deux choses :
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

1) pas de bouton "recalculer cette page" sur la page de login (très laid!)

2) meilleure stratégie pour le spip_test_dirs : on essaie de créer le répertoire ou de modifier ses droits avant de dire qu'il y a un problème ; en ce qui concerne ecrire/, on ne sollicite les droits d'écriture *que* si inc_connect.php3 est absent ; cela permet donc de livrer SPIP sans les répertoires CACHE ni ecrire/data/ ; pour IMG c'est différent car on utilise ses sous-répertoires icones/ et incones_barre/ : il faudrait peut-être les mettre ailleurs (mais c'est trop tard?)
---
 inc-public-global.php3 |  2 ++
 spip_login.php3        |  1 +
 spip_test_dirs.php3    | 55 +++++++++++++++++++++++++++---------------
 3 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/inc-public-global.php3 b/inc-public-global.php3
index b66f8c7507..37ebf8c6eb 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -4,6 +4,8 @@ include ("ecrire/inc_version.php3");
 include_local ("inc-cache.php3");
 
 if ($INSECURE['fond'] || $INSECURE['delais']) exit;
+if (!isset($delais))
+	$delais = 1 * 3600;
 
 /*function t($s = '') {
 	global $t0, $t1;
diff --git a/spip_login.php3 b/spip_login.php3
index b1adf4a3f9..8011fff27b 100644
--- a/spip_login.php3
+++ b/spip_login.php3
@@ -2,6 +2,7 @@
 $fond = "login";
 $delais = 3600;
 $flag_dynamique = true;
+$flag_preserver = true;
 
 include ("inc-public.php3");
 
diff --git a/spip_test_dirs.php3 b/spip_test_dirs.php3
index 35724da1a5..42bc88fd52 100644
--- a/spip_test_dirs.php3
+++ b/spip_test_dirs.php3
@@ -62,7 +62,18 @@ function absent_dirs($bad_dirs, $test_dir) {
 	install_fin_html();
 }
 
-
+//
+// Tente d'ecrire
+//
+function test_ecrire($my_dir) {
+	$ok = true;
+	$nom_fich = "$my_dir/test.txt";
+	$f = @fopen($nom_fich, "w");
+	if (!$f) $ok = false;
+	else if (!@fclose($f)) $ok = false;
+	else if (!@unlink($nom_fich)) $ok = false;
+	return $ok;
+}
 
 //
 // teste les droits sur les repertoires
@@ -72,36 +83,42 @@ $install = !file_exists("ecrire/inc_connect.php3");
 
 if ($test_dir)
 	$test_dirs[] = $test_dir;
-else
-	$test_dirs = array("CACHE", "IMG", "ecrire", "ecrire/data");
+else {
+	$test_dirs = array("CACHE", "IMG", "ecrire/data");
+	if ($install)
+		$test_dirs[] = "ecrire";
+}
 
 unset($bad_dirs);
 unset($absent_dirs);
 
 while (list(, $my_dir) = each($test_dirs)) {
-	$ok = true;
-	$nom_fich = "$my_dir/test.txt";
-	$f = @fopen($nom_fich, "w");
-	if (!$f) $ok = false;
-	else if (!@fclose($f)) $ok = false;
-	else if (!@unlink($nom_fich)) $ok = false;
-
-	if (!$ok) {
-		if (file_exists($my_dir))
-			$bad_dirs[] = "<LI>".$my_dir;
-		else
+	if (!test_ecrire($my_dir)) {
+		@umask(0); 
+		if (!@file_exists($my_dir))
+			mkdir($my_dir, 0777);
+
+		if (@file_exists($my_dir)) {
+			@chmod($my_dir, 0777);
+			if (!test_ecrire($my_dir))
+				@chmod($my_dir, 0775);
+			if (!test_ecrire($my_dir))
+				@chmod($my_dir, 0755);
+			if (!test_ecrire($my_dir))
+				$bad_dirs[] = "<LI>".$my_dir;
+		} else
 			$absent_dirs[] = "<LI>".$my_dir;
 	}
 }
 
-if ($absent_dirs) {
-	$absent_dirs = join(" ", $absent_dirs);
-	absent_dirs($absent_dirs, $test_dir);
-}
-else if ($bad_dirs) {
+if ($bad_dirs) {
 	$bad_dirs = join(" ", $bad_dirs);
 	bad_dirs($bad_dirs, $test_dir, $install);
 }
+else if ($absent_dirs) {
+	$absent_dirs = join(" ", $absent_dirs);
+	absent_dirs($absent_dirs, $test_dir);
+}
 else {
 	if ($install)
 		header("Location: ./ecrire/install.php3?etape=1");
-- 
GitLab