From 928df97335575f3df3681b58d6216b986a96752e Mon Sep 17 00:00:00 2001
From: Matthieu Marcillaud <marcimat@rezo.net>
Date: Wed, 9 Nov 2016 12:21:35 +0000
Subject: [PATCH] =?UTF-8?q?Report=20de=20r23248=20:=20S=C3=A9parer=20dans?=
 =?UTF-8?q?=20une=20fonction=20le=20calcul=20de=20la=20dur=C3=A9e=20du=20c?=
 =?UTF-8?q?ookie=20de=20session,=20mettre=20un=20phpdoc=20qui=20explique,?=
 =?UTF-8?q?=20et=20reformater=20pour=20plus=20de=20clart=C3=A9.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc/session.php | 33 ++++++++++++++++++++++++++++-----
 1 file changed, 28 insertions(+), 5 deletions(-)

diff --git a/ecrire/inc/session.php b/ecrire/inc/session.php
index e9479d0ce7..3440f6aa95 100644
--- a/ecrire/inc/session.php
+++ b/ecrire/inc/session.php
@@ -200,11 +200,7 @@ function ajouter_session($auteur) {
 
 	// poser le cookie de session SPIP
 	include_spip('inc/cookie');
-	$duree = _RENOUVELLE_ALEA *
-		(!isset($auteur['cookie'])
-			? 2 : (is_numeric($auteur['cookie'])
-				? $auteur['cookie'] : 20));
-
+	$duree = definir_duree_cookie_session($auteur);
 	spip_setcookie(
 		'spip_session',
 		$_COOKIE['spip_session'],
@@ -218,6 +214,33 @@ function ajouter_session($auteur) {
 	return $_COOKIE['spip_session'];
 }
 
+/**
+ * Calcule le temps de validité en seconde du cookie de session
+ *
+ * Applique un coefficient multiplicateur à la durée de renouvellement de l'alea 
+ * (noté ensuite `dR`, valant 12h par défaut) pour déterminer la durée du cookie.
+ * 
+ * - `2 * dR`, par défaut 
+ * - `20 * dR` si le visiteur a indiqué vouloir rester connecté quelques jours 
+ *    sur le formulaire de login (la clé `cookie` vaut alors `oui`) 
+ * - `c * dR`, un coeficient défini manuellement si la clé `cookie` est numérique
+ * 
+ * @param array $auteur
+ *     Description de l'auteur
+ * @return int
+ *     Durée en secondes
+**/
+function definir_duree_cookie_session($auteur) {
+	$coef = 2;
+	if (isset($auteur['cookie'])) {
+		if (is_numeric($auteur['cookie'])) {
+			$coef = $auteur['cookie'];
+		} else {
+			$coef = 20;
+		}
+	}
+	return (int)(_RENOUVELLE_ALEA * $coef);
+}
 
 /**
  * Vérifie si le cookie spip_session indique une session valide
-- 
GitLab