From 08a194976cfd4c51f9828f8ca485533e247a27c4 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sun, 4 Feb 2007 14:05:58 +0000
Subject: [PATCH] Pas malin de calculer 2 fois s'il y a des rendez-vous,
 d'autant que les gadgets en rajoutent une couche.

---
 ecrire/exec/accueil.php | 32 ++++--------------------------
 ecrire/inc/agenda.php   | 26 +++++++++++++++++++++++-
 ecrire/inc/gadgets.php  | 44 ++++++++++++-----------------------------
 3 files changed, 42 insertions(+), 60 deletions(-)

diff --git a/ecrire/exec/accueil.php b/ecrire/exec/accueil.php
index cf8c2ae8d1..3cdb150edd 100644
--- a/ecrire/exec/accueil.php
+++ b/ecrire/exec/accueil.php
@@ -390,33 +390,6 @@ function etat_base_accueil()
 	return $res ;
 }
 
-//
-// Affiche les messsages
-// et les calendrier du mois et du jour s'il y a des rendez-vous
-//
-
-// http://doc.spip.org/@accueil_evenements
-function accueil_evenements()
-{
-	global  $partie_cal, $echelle;
-
-	$mois = date("m");
-	$annee = date("Y");
-	$jour = date("d");
-	$date = date("Y-m-d");
-
-	$evtm = sql_calendrier_agenda($annee, $mois);
-	$evt = sql_calendrier_interval_rv("'$date'", "'$date 23:59:59'");
-
-	return "<div>&nbsp;</div>"
-	. http_calendrier_rv(sql_calendrier_taches_annonces(),"annonces")
-	. http_calendrier_rv(sql_calendrier_taches_pb(),"pb")
-	. http_calendrier_rv(sql_calendrier_taches_rv(), "rv")
-	. ($evtm ? http_calendrier_agenda($annee, $mois, $jour, $mois, $annee, false, generer_url_ecrire('calendrier'), '', $evtm) : '')
-	. ($evt ? ( http_calendrier_ics_titre($annee,$mois,$jour,generer_url_ecrire('calendrier')) . http_calendrier_ics($annee, $mois, $jour, $echelle, $partie_cal, 90, array('', $evt))) : '');
-}
-
-
 // http://doc.spip.org/@exec_accueil_dist
 function exec_accueil_dist()
 {
@@ -442,7 +415,10 @@ function exec_accueil_dist()
 	}
 
 	creer_colonne_droite();
-	echo accueil_evenements();
+	list($evtm, $evtt, $evtr) = http_calendrier_messages(date("Y"), date("m"), date("d")," 23:59:59");
+
+	echo "<div>&nbsp;</div>", $evtt, $evtm, $evtr;
+
 	echo pipeline('affiche_droite',array('args'=>array('exec'=>'accueil','id_rubrique'=>$id_rubrique),'data'=>''));
 
 	debut_droite();
diff --git a/ecrire/inc/agenda.php b/ecrire/inc/agenda.php
index 2d2f851d9c..c57f6c9a3f 100644
--- a/ecrire/inc/agenda.php
+++ b/ecrire/inc/agenda.php
@@ -1166,7 +1166,31 @@ function http_calendrier_agenda_rv ($annee, $mois, $les_rv, $fclic,
 
 
 
-// Fonction pour la messagerie et la page d'accueil
+// Fonctions pour la messagerie, la page d'accueil et les gadgets
+
+function http_calendrier_messages($annee='', $mois='', $jour='', $heures='')
+{
+	global  $partie_cal, $echelle;
+
+	if ($evtm = sql_calendrier_agenda($annee, $mois))
+		$evtm = http_calendrier_agenda($annee, $mois, $jour, $mois, $annee, false, generer_url_ecrire('calendrier'), '', $evtm);
+	else $evtm= '';
+
+	$evtt = http_calendrier_rv(sql_calendrier_taches_annonces(),"annonces")
+	  . http_calendrier_rv(sql_calendrier_taches_pb(),"pb")
+	  . http_calendrier_rv(sql_calendrier_taches_rv(), "rv");
+
+	$evtr= '';
+	if ($heures) {
+		$date = date("$annee-$mois-$jour");
+		$datef = "'$date $heures'";
+		if ($heures = sql_calendrier_interval_rv("'$date'", $datef))
+			$evtr = http_calendrier_ics_titre($annee,$mois,$jour,generer_url_ecrire('calendrier')) . http_calendrier_ics($annee, $mois, $jour, $echelle, $partie_cal, 90, array('', $heures));
+	}
+	return array($evtm, $evtt, $evtr);
+}
+
+
 
 // http://doc.spip.org/@http_calendrier_rv
 function http_calendrier_rv($messages, $type) {
diff --git a/ecrire/inc/gadgets.php b/ecrire/inc/gadgets.php
index 067dcfad04..e4b53533d9 100644
--- a/ecrire/inc/gadgets.php
+++ b/ecrire/inc/gadgets.php
@@ -437,37 +437,19 @@ function bandeau_gadgets($largeur, $options, $id_rubrique) {
 function gadget_agenda() {
 	global $connect_id_auteur;
 
-	$gadget = '';
-	$today = getdate(time());
-	$jour_today = $today["mday"];
-	$mois_today = $today["mon"];
-	$annee_today = $today["year"];
-	$date = date("Y-m-d", mktime(0,0,0,$mois_today, 1, $annee_today));
-	$mois = mois($date);
-	$annee = annee($date);
-	$jour = jour($date);
-	$gadget .= "<table><tr>";
-	$gadget .= "<td style='width: 200px' valign='top' >";
-	$gadget .= "<div>";
-	$gadget .= http_calendrier_agenda($annee_today, $mois_today, $jour_today, $mois_today, $annee_today, false, generer_url_ecrire('calendrier'));
-	$gadget .= "</div>";
-	$gadget .= "</td>";
-
-	$n = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_messages AS messages WHERE id_auteur=$connect_id_auteur AND statut='publie' AND type='pb' AND rv!='oui' LIMIT 1"));
-	if (!$n['n'])
-		$n = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE ((lien.id_auteur='$connect_id_auteur' AND lien.id_message=messages.id_message) OR messages.type='affich') AND messages.rv='oui' AND messages.date_heure > DATE_SUB(NOW(), INTERVAL 1 DAY) AND messages.date_heure < DATE_ADD(NOW(), INTERVAL 1 MONTH) AND messages.statut='publie' GROUP BY messages.id_message ORDER BY messages.date_heure LIMIT 1"));
-	if ($n['n']) {
-		$gadget .= "<td style='width: 10px' valign='top'> &nbsp; </td>";
-		$gadget .= "<td style='width: 200px; color: black;' valign='top'>";
-		$gadget .= "<div>&nbsp;</div>";
-		$gadget .= http_calendrier_rv(sql_calendrier_taches_annonces(),"annonces");
-		$gadget .=  http_calendrier_rv(sql_calendrier_taches_pb(),"pb");
-		$gadget .=  http_calendrier_rv(sql_calendrier_taches_rv(), "rv");
-		$gadget .= "</td>";
-	}
-	$gadget .= "</tr></table>";
-
-	return $gadget;
+	list($evtm, $evtt, $evtr) = http_calendrier_messages(date("Y"), date("m"), date("d"));
+
+	return "<table><tr>"
+	. "<td style='width: 200px; vertical-align: top;' >"
+	. "<div>"
+	. $evtm
+	. "</div>"
+	. "</td>"
+	.  (!$evtt ? '' :
+	      ( "<td style='width: 10px; vertical-align: top'> &nbsp; </td>"
+		. "<td style='width: 200px; color: black; vertical-align: top'>"
+		. "<div>&nbsp;</div>$evtt</td>"))
+	. "</tr></table>";
 }
 
 // http://doc.spip.org/@gadget_messagerie
-- 
GitLab