From dd4501ac4ce6320d382204f184c9c8ac4a1f652c Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Tue, 4 Nov 2008 17:32:35 +0000
Subject: [PATCH] =?UTF-8?q?Du=20code=20mort=20et=20quasi-impossible=20?=
 =?UTF-8?q?=C3=A0=20surcharger.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/exec/controle_petition.php | 57 +++++++++++++------------------
 1 file changed, 24 insertions(+), 33 deletions(-)

diff --git a/ecrire/exec/controle_petition.php b/ecrire/exec/controle_petition.php
index 7c4a08ddae..7fe89b98c3 100644
--- a/ecrire/exec/controle_petition.php
+++ b/ecrire/exec/controle_petition.php
@@ -28,26 +28,11 @@ function exec_controle_petition_dist()
 // http://doc.spip.org/@exec_controle_petition_args
 function exec_controle_petition_args($id_article, $type, $date, $debut, $id_signature, $pas=0)
 {
-	if (!preg_match('/^\w+$/',$type)) $type = 'public';
-	$statut='new';
-	$where = '';
 	if ($id_signature) {
 		$id_article = sql_getfetsel("id_article", "spip_signatures", "id_signature=$id_signature");
-		if ($id_article)
-			$where = '(id_signature=' . sql_quote($id_signature) . ') AND ';
-	}
-	if ($id_article) {
-		$row = sql_fetsel("titre,statut", "spip_articles", "id_article=$id_article");
-		if (!$row) {
-			$id_article = 0;
-			$titre = '';
-		} else {
-			$titre = $row['titre'];
-			$statut = $row['statut'];	
-		}
-	} else 	$titre = '    '; // ok.
-
-	if (!$titre) {
+		$where = '(id_signature=' . sql_quote($id_signature) . ') AND ';
+	} else 	$where = '';
+	if ($id_article AND !($titre = sql_getfetsel("titre", "spip_articles", "id_article=$id_article"))) {
 		include_spip('inc/minipres');
                 echo minipres(_T('public:aucun_article'));
 	} elseif (!(
@@ -60,12 +45,6 @@ function exec_controle_petition_args($id_article, $type, $date, $debut, $id_sign
 		include_spip('inc/minipres'); 
 		echo minipres();}
 	else {
-		$where .= "(statut='publie' OR statut='poubelle')";
-		if ($type == 'interne')   $where = "NOT($where)";
-		if ($id_article) $where .= " AND id_article=$id_article";
-		$order = "date_time DESC";
-		if (!$pas) $pas = 15;
-		$signatures = charger_fonction('signatures', 'inc');
 		if ($date) {
 			include_spip('inc/forum');
 			$query = array('SELECT' => 'UNIX_TIMESTAMP(date_time) AS d',
@@ -74,20 +53,32 @@ function exec_controle_petition_args($id_article, $type, $date, $debut, $id_sign
 					'ORDER BY' => $order);
 			$debut = navigation_trouve_date($date, 'd', $pas, $query);
 		}
-
-		$r = $signatures('controle_petition', $id_article, $debut, $pas, $where, $order, $type);
-
+		if (!preg_match('/^\w+$/',$type)) $type = 'public';
+		if ($id_article) $where .= "id_article=$id_article AND ";
+		$res = controle_petition_args($id_article, $type, $debut, $titre, $where, $pas);
 		if (_AJAX) {
-			ajax_retour($r);
+			ajax_retour($res);
 		} else {
-			$ong = controle_petition_onglet($id_article, $debut, $type);
-			controle_petition_page($id_article, $titre, $ong, $statut, $r);
+		  $ong = controle_petition_onglet($id_article, $debut, $type);
+		  controle_petition_page($id_article, $titre, $ong, $res);
 		}
 	}
 }
 
+function controle_petition_args($id_article, $type, $debut, $titre, $where, $pas=0)
+{
+	$extrait = "(statut='publie' OR statut='poubelle')";
+	if ($type == 'interne') $extrait = "NOT($extrait)";
+	$where .= $extrait;
+	$order = "date_time DESC";
+	if (!$pas) $pas = 15;
+	$signatures = charger_fonction('signatures', 'inc');
+
+	return $signatures('controle_petition', $id_article, $debut, $pas, $where, $order, $type);
+}
+
 // http://doc.spip.org/@controle_petition_page
-function controle_petition_page($id_article, $titre,  $ong, $statut, $corps)
+function controle_petition_page($id_article, $titre,  $ong, $corps)
 {
 	if ($id_article) {
 		$a =  generer_url_ecrire("statistiques_visites","id_article=$id_article");
@@ -131,9 +122,9 @@ function controle_petition_page($id_article, $titre,  $ong, $statut, $corps)
 }
 
 // http://doc.spip.org/@controle_petition_onglet
-function controle_petition_onglet($id_article, $debut, $type)
+function controle_petition_onglet($id_article, $debut, $type, $arg='')
 {
-	$arg = ($id_article ? "id_article=$id_article&" :'');
+	$arg .= ($id_article ? "id_article=$id_article&" :'');
 	$arg2 = ($debut ? "debut=$debut&" : '');
 	if ($type=='public') {
 	  $argp = $arg2;
-- 
GitLab