From 1a7e1ecef9e773a65f459c7c521445d47d2ad143 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Sat, 12 May 2007 20:22:43 +0000
Subject: [PATCH] poser les cookies a la racine du site afficher le message
 erreur de mot de passe meme pour une autre langue que celle du site (c'etait
 casse) passe l'alea par defaut a 12h, et supprime la case de 'rester
 connecte' si c'est inferieur

---
 dist/formulaires/login.html    |  4 +++-
 ecrire/action/converser.php    |  9 +++++----
 ecrire/action/cookie.php       |  3 ++-
 ecrire/balise/login_public.php |  9 +++++++--
 ecrire/exec/accueil.php        |  4 ++--
 ecrire/inc/actions.php         |  2 +-
 ecrire/inc/auth.php            |  9 ++++-----
 ecrire/inc/config.php          |  5 -----
 ecrire/inc/cookie.php          |  5 ++++-
 ecrire/inc/lang.php            |  7 +++++--
 ecrire/inc/session.php         | 10 +++++-----
 ecrire/inc/utils.php           |  2 +-
 ecrire/inc_version.php         |  3 +--
 ecrire/prive.php               |  5 +----
 ecrire/public.php              |  3 ++-
 15 files changed, 43 insertions(+), 37 deletions(-)

diff --git a/dist/formulaires/login.html b/dist/formulaires/login.html
index 5ba7fc9e5a..911831b491 100644
--- a/dist/formulaires/login.html
+++ b/dist/formulaires/login.html
@@ -47,9 +47,11 @@ document.write("<p><:login_login:>&nbsp;<strong>[(#ENV{login_alt})]<" + "/strong
 
 	<p><label[ for="var_login_(#ENV{login})"]><:login_pass2:></label><br />
 	<input type="password" class="forml" name="session_password"[ id="var_login_(#ENV{login})"] value="" size="20" /></p>
+
+[(#ENV{rester_connecte})
 	<p><input type="checkbox" name="session_remember" id="session[_(#ENV{login})]" value="oui"[(#ENV*{prefs}|filtre_rester_connecte)checked="checked"]/>
 	<label for="session[_(#ENV{login})]"><:login_rester_identifie:></label></p>
-
+]
 	<input type="hidden" name="session_password_md5" value="" />
 	<input type="hidden" name="next_session_password_md5" value="" />
 	<input type="hidden" name="essai_login" value="oui" />
diff --git a/ecrire/action/converser.php b/ecrire/action/converser.php
index 31c9e17a82..5552d4f985 100644
--- a/ecrire/action/converser.php
+++ b/ecrire/action/converser.php
@@ -31,10 +31,11 @@ function action_converser_dist()
 			$GLOBALS['auteur_session']['lang'] = $lang;
 			$session = charger_fonction('session', 'inc');
 			if ($spip_session = $session($GLOBALS['auteur_session'])) {
-				preg_match(',^[^/]*//[^/]*(.*)/$,',
-					   url_de_base(),
-					   $r);
-				spip_setcookie('spip_session', $spip_session, time() + 3600 * 24 * 14, $r[1]);
+				spip_setcookie(
+					'spip_session',
+					$spip_session,
+					time() + 3600 * 24 * 14
+				);
 			}
 		}
 		action_converser_post($lang, 'spip_lang_ecrire');
diff --git a/ecrire/action/cookie.php b/ecrire/action/cookie.php
index e09005b24d..7b7c7eda64 100644
--- a/ecrire/action/cookie.php
+++ b/ecrire/action/cookie.php
@@ -70,7 +70,8 @@ function action_cookie_dist() {
 			if (strpos($redirect,_DIR_RESTREINT_ABS)!==false)
 				$redirect = generer_url_public('login',
 					"var_login=$session_login", true);
-			if (_request('session_password') OR _request('session_password_md5'))
+			if (_request('session_password')
+			OR _request('session_password_md5'))
 				$redirect = parametre_url($redirect, 'var_erreur', 'pass', '&');
 			$redirect .= '&url=' . rawurlencode($url);
 			spip_log("echec login: $session_login");
diff --git a/ecrire/balise/login_public.php b/ecrire/balise/login_public.php
index b0c5bc6001..100faffe88 100644
--- a/ecrire/balise/login_public.php
+++ b/ecrire/balise/login_public.php
@@ -98,7 +98,7 @@ function login_pour_tous($login, $cible, $action) {
 	$echec_visiteur = _request('var_echec_visiteur')?' ':'';
 
 
-	$pose_cookie = generer_url_public('spip_cookie');
+	$pose_cookie = generer_url_action('cookie');
 	$auth_http = '';	
 	if ($echec_cookie AND !$ignore_auth_http) {
 		if (($GLOBALS['flag_sapi_name']
@@ -151,6 +151,10 @@ function login_pour_tous($login, $cible, $action) {
 	if (_request('var_erreur') == 'pass')
 		$erreur = _T('login_erreur_pass');
 
+	// Ne pas proposer de "rester connecte quelques jours"
+	// si la duree de l'alea est inferieure a 12 h (valeur par defaut)
+	$rester_connecte = (_RENOUVELLE_ALEA < 12*3600) ? '' : ' ';
+
 	// Appeler le squelette formulaire_login
 	return array('formulaires/login', $GLOBALS['delais'],
 		array_merge(
@@ -165,7 +169,8 @@ function login_pour_tous($login, $cible, $action) {
 					'echec_visiteur' => $echec_visiteur,
 					'login' => $login,
 					'login_alt' => (isset($login_alt) ? $login_alt : $login),
-					'self' => str_replace('&amp;', '&', self())
+					'self' => str_replace('&amp;', '&', self()),
+					'rester_connecte' => $rester_connecte
 					)
 				)
 			);
diff --git a/ecrire/exec/accueil.php b/ecrire/exec/accueil.php
index 4cbdec9028..4b4bce9cb4 100644
--- a/ecrire/exec/accueil.php
+++ b/ecrire/exec/accueil.php
@@ -191,7 +191,7 @@ function colonne_droite_neq4($id_rubrique, $activer_breves, $activer_sites, $art
 	if (!@$_COOKIE['spip_admin']) {
 		$cookie = rawurlencode("@$connect_login");
 		$retour = rawurlencode(_DIR_RESTREINT_ABS . _SPIP_ECRIRE_SCRIPT);
-		$lien = generer_url_public('spip_cookie', "cookie_admin=$cookie&url=$retour");
+		$lien = generer_url_action('cookie', "cookie_admin=$cookie&url=$retour");
 		$gadget .= "<div>&nbsp;</div>".
 			  "<table width='95%'><tr>".
 			  "<td style='width: 100%'>".
@@ -248,7 +248,7 @@ function personnel_accueil($coockcookie)
 	//
 	
 	if ($coockcookie) {
-		$lien = generer_url_public("spip_cookie", "cookie_admin=non&url=".rawurlencode(_DIR_RESTREINT_ABS . _SPIP_ECRIRE_SCRIPT));
+		$lien = generer_url_action('cookie', "cookie_admin=non&url=".rawurlencode(_DIR_RESTREINT_ABS . _SPIP_ECRIRE_SCRIPT));
 		$t = _T('icone_supprimer_cookie');
 		$t = icone_horizontale($t, $lien, "cookie-24.gif", "", false);
 		if ($GLOBALS['spip_display'] != 1) 
diff --git a/ecrire/inc/actions.php b/ecrire/inc/actions.php
index aeacfb092b..c2a75325f3 100644
--- a/ecrire/inc/actions.php
+++ b/ecrire/inc/actions.php
@@ -299,7 +299,7 @@ function ask_php_auth($pb, $raison, $retour, $url='', $re='', $lien='') {
 	$ici = generer_url_ecrire();
 	echo "<b>$pb</b><p>$raison</p>[<a href='$ici'>$retour</a>] ";
 	if ($url) {
-		echo "[<a href='", generer_url_public('spip_cookie',"essai_auth_http=oui&$url"), "'>$re</a>]";
+		echo "[<a href='", generer_url_action('cookie',"essai_auth_http=oui&$url"), "'>$re</a>]";
 	}
 	
 	if ($lien)
diff --git a/ecrire/inc/auth.php b/ecrire/inc/auth.php
index 9760956d3f..88f76c281f 100644
--- a/ecrire/inc/auth.php
+++ b/ecrire/inc/auth.php
@@ -171,12 +171,11 @@ function inc_auth_dist() {
 		$session = charger_fonction('session', 'inc');
 		if ($spip_session = $session($row)) {
 			include_spip('inc/cookie');
-			preg_match(',^[^/]*//[^/]*(.*)/$,',
-				   url_de_base(),
-				   $r);
-			spip_setcookie('spip_session',
+			spip_setcookie(
+				'spip_session',
 				$_COOKIE['spip_session'] = $spip_session,
-				time() + 3600 * 24 * 14, $r[1]);
+				time() + 3600 * 24 * 14
+			);
 		}
 	}
 
diff --git a/ecrire/inc/config.php b/ecrire/inc/config.php
index e6d0bed573..4fb26b8ced 100644
--- a/ecrire/inc/config.php
+++ b/ecrire/inc/config.php
@@ -82,11 +82,6 @@ function init_config() {
 		$modifs = true;
 	}
 
-	/*if (isset($GLOBALS['meta']['nouvelle_install']) && $GLOBALS['meta']['nouvelle_install'] == 'oui') {
-		effacer_meta('nouvelle_install');
-		$modifs = true;
-	}*/
-
 	if ($modifs) ecrire_metas();
 
 	include_spip('inc/rubriques');
diff --git a/ecrire/inc/cookie.php b/ecrire/inc/cookie.php
index 7ae79a588a..6009d93aed 100644
--- a/ecrire/inc/cookie.php
+++ b/ecrire/inc/cookie.php
@@ -18,7 +18,10 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 // http://doc.spip.org/@spip_setcookie
 function spip_setcookie ($name='', $value='', $expire=0, $path='AUTO', $domain='', $secure='') {
 	$name = preg_replace ('/^spip_/', $GLOBALS['cookie_prefix'].'_', $name);
-	if ($path == 'AUTO') $path=$GLOBALS['cookie_path'];
+	if ($path == 'AUTO')
+		$path = preg_replace(',^\w+://[^/]*,', '', url_de_base());
+
+spip_log("path cookie = $path");
 
 	if ($secure)
 		@setcookie ($name, $value, $expire, $path, $domain, $secure);
diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php
index e27ae33795..fa7f731609 100644
--- a/ecrire/inc/lang.php
+++ b/ecrire/inc/lang.php
@@ -203,8 +203,11 @@ function verifier_lang_url() {
 	AND changer_langue($lang_demandee)
 	AND $lang_demandee != @$_GET['lang']) {
 		$destination = parametre_url(self(),'lang', $lang_demandee, '&');
-		if (isset($GLOBALS['var_mode']))
-			$destination = parametre_url($destination, 'var_mode', $GLOBALS['var_mode'], '&');
+		// ici on a besoin des var_truc
+		foreach ($_GET as $var => $val) {
+			if (!strncmp('var_', $var, 4))
+				$destination = parametre_url($destination, $var, $val, '&');
+		}
 		include_spip('inc/headers');
 		redirige_par_entete($destination);
 	}
diff --git a/ecrire/inc/session.php b/ecrire/inc/session.php
index 7e101721d4..8dbe19578b 100644
--- a/ecrire/inc/session.php
+++ b/ecrire/inc/session.php
@@ -69,11 +69,11 @@ function ajouter_session($auteur) {
 		redirige_par_entete(generer_test_dirs(_DIR_SESSIONS,true));
 	} else {
 		include_spip('inc/cookie');
-		preg_match(',^[^/]*//[^/]*(.*)/.*/$,', url_de_base(), $r);
-
-		spip_setcookie('spip_session', $_COOKIE['spip_session'],
-			       time() + 20 * _RENOUVELLE_ALEA,
-			       $r[1]);
+		spip_setcookie(
+			'spip_session',
+			$_COOKIE['spip_session'],
+			time() + 20 * _RENOUVELLE_ALEA
+		);
 		spip_log("ajoute session $fichier_session");
 		return $_COOKIE['spip_session'];
 	}
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 321f8aa075..c6f2f64f36 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -1247,7 +1247,7 @@ function spip_initialisation($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {
 	include_once _DIR_RESTREINT . 'inc/flock.php';
 
 	// Duree de validite de l'alea pour les cookies et ce qui s'ensuit.
-	define('_RENOUVELLE_ALEA', 4 * 3600);
+	define('_RENOUVELLE_ALEA', 12 * 3600);
 
 	// Lire les meta cachees et init noyau (espace public uniquement)
 
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index 988614e93e..31686cbbc2 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -93,10 +93,9 @@ $taille_des_logs = 100;
 // (a modifier pour avoir plusieurs sites SPIP dans une seule base)
 $table_prefix = "spip";
 
-// Prefixe et chemin des cookies
+// Prefixe des cookies
 // (a modifier pour installer des sites SPIP dans des sous-repertoires)
 $cookie_prefix = "spip";
-$cookie_path = "";
 
 // Dossier des squelettes
 // (a modifier si l'on veut passer rapidement d'un jeu de squelettes a un autre)
diff --git a/ecrire/prive.php b/ecrire/prive.php
index 5ccd9feac4..b22f98b769 100644
--- a/ecrire/prive.php
+++ b/ecrire/prive.php
@@ -24,10 +24,7 @@ if ($auth) {
 	include_spip('inc/headers');
 	if ($auth == '6forum') {
 		$auth = '../?' . $_SERVER['QUERY_STRING'];
-		preg_match(',^[^/]*//[^/]*(.*)/.*/$,',
-				   url_de_base(),
-				   $r);
-		spip_setcookie('spip_session', $_COOKIE['spip_session'], time() + 3600 * 24 * 14, $r[1]);
+		spip_setcookie('spip_session', $_COOKIE['spip_session'], time() + 3600 * 24 * 14);
 	} else
 	  $auth = generer_url_public('login',
 			"url=" . 
diff --git a/ecrire/public.php b/ecrire/public.php
index 27c7cb659c..88406b7e6a 100644
--- a/ecrire/public.php
+++ b/ecrire/public.php
@@ -60,7 +60,8 @@ if (defined('_INC_PUBLIC')) {
 			redirige_par_entete(urldecode($redirect));
 		else if (!headers_sent()) {
 			http_status(204);
-			spip_log("action $action renvoie status 204");
+			# trop verbeux : chaque cron() provoque un 204
+			# spip_log("action $action renvoie status 204");
 		} else {
 			spip_log("action $action renvoie du contenu");
 		}
-- 
GitLab