Subversion Repositories Applications.bazar

Rev

Rev 17 | Rev 33 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 17 Rev 19
1
<?php
1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
3
// Copyright (C) 1999-2004 Tela Botanica (accueil@tela-botanica.org)
3
// Copyright (C) 1999-2004 Tela Botanica (accueil@tela-botanica.org)
4
//
4
//
5
// Ce logiciel est un programme informatique servant à gérer du contenu et des
5
// Ce logiciel est un programme informatique servant à gérer du contenu et des
6
// applications web.
6
// applications web.
7
                                                                                                      
7
                                                                                                      
8
// Ce logiciel est régi par la licence CeCILL soumise au droit français et
8
// Ce logiciel est régi par la licence CeCILL soumise au droit français et
9
// respectant les principes de diffusion des logiciels libres. Vous pouvez
9
// respectant les principes de diffusion des logiciels libres. Vous pouvez
10
// utiliser, modifier et/ou redistribuer ce programme sous les conditions
10
// utiliser, modifier et/ou redistribuer ce programme sous les conditions
11
// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
11
// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
12
// sur le site "http://www.cecill.info".
12
// sur le site "http://www.cecill.info".
13
 
13
 
14
// En contrepartie de l'accessibilité au code source et des droits de copie,
14
// En contrepartie de l'accessibilité au code source et des droits de copie,
15
// de modification et de redistribution accordés par cette licence, il n'est
15
// de modification et de redistribution accordés par cette licence, il n'est
16
// offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
16
// offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
17
// seule une responsabilité restreinte pèse sur l'auteur du programme,  le
17
// seule une responsabilité restreinte pèse sur l'auteur du programme,  le
18
// titulaire des droits patrimoniaux et les concédants successifs.
18
// titulaire des droits patrimoniaux et les concédants successifs.
19
 
19
 
20
// A cet égard  l'attention de l'utilisateur est attirée sur les risques
20
// A cet égard  l'attention de l'utilisateur est attirée sur les risques
21
// associés au chargement,  à l'utilisation,  à la modification et/ou au
21
// associés au chargement,  à l'utilisation,  à la modification et/ou au
22
// développement et à la reproduction du logiciel par l'utilisateur étant 
22
// développement et à la reproduction du logiciel par l'utilisateur étant 
23
// donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
23
// donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
24
// manipuler et qui le réserve donc à des développeurs et des professionnels
24
// manipuler et qui le réserve donc à des développeurs et des professionnels
25
// avertis possédant  des  connaissances  informatiques approfondies.  Les
25
// avertis possédant  des  connaissances  informatiques approfondies.  Les
26
// utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
26
// utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
27
// logiciel à leurs besoins dans des conditions permettant d'assurer la
27
// logiciel à leurs besoins dans des conditions permettant d'assurer la
28
// sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
28
// sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
29
// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 
29
// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 
30
 
30
 
31
// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
31
// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
32
// pris connaissance de la licence CeCILL, et que vous en avez accepté les
32
// pris connaissance de la licence CeCILL, et que vous en avez accepté les
33
// termes.
33
// termes.
34
// ----
34
// ----
35
// CVS : $Id: bazar.calendrier.php,v 1.3 2005-09-30 23:04:31 ddelon Exp $
35
// CVS : $Id: bazar.calendrier.php,v 1.4 2005-10-01 11:21:39 ddelon Exp $
36
/**
36
/**
37
* bazar_calendrier : programme affichant les evenements du bazar sous forme de Calendrier
37
* bazar_calendrier : programme affichant les evenements du bazar sous forme de Calendrier
38
*
38
*
39
*
39
*
40
*@package Bazar
40
*@package Bazar
41
//Auteur original :
41
//Auteur original :
42
*@author        David DELON <david.delon@clapas.net>
42
*@author        David DELON <david.delon@clapas.net>
43
*@version       $Revision: 1.3 $ $Date: 2005-09-30 23:04:31 $
43
*@version       $Revision: 1.4 $ $Date: 2005-10-01 11:21:39 $
44
// +------------------------------------------------------------------------------------------------------+
44
// +------------------------------------------------------------------------------------------------------+
45
*/
45
*/
46
 
46
 
47
// TODO : afficher evenement sur plusieur jours
47
// TODO : afficher evenement sur plusieur jours
48
// TODO : traduction entete mois calendrier
48
// TODO : traduction entete mois calendrier
49
// Parametrage EVENEMENT : template 
49
// Parametrage EVENEMENT : template 
50
 
50
 
51
// Fonction Calendrier de Pear 
51
// Fonction Calendrier de Pear 
52
 
52
 
53
require_once 'Calendar/Month/Weekdays.php';
53
require_once 'Calendar/Month/Weekdays.php';
54
require_once 'Calendar/Day.php';
54
require_once 'Calendar/Day.php';
55
require_once 'Calendar/Decorator.php'; 
55
require_once 'Calendar/Decorator.php'; 
56
 
56
 
57
define ('BAZ_VOIR_FICHE', 8) ;
57
define ('BAZ_VOIR_FICHE', 8) ;
58
include_once 'configuration/baz_config.inc.php'; //fichier de configuration de Bazar
58
include_once 'configuration/baz_config.inc.php'; //fichier de configuration de Bazar
59
include_once 'bibliotheque/bazar.fonct.php'; //fichier des fonctions de Bazar
59
include_once 'bibliotheque/bazar.fonct.php'; //fichier des fonctions de Bazar
60
 
60
 
61
 
61
 
62
 
62
 
63
// Classe Utilitaire pour Calendrier
63
// Classe Utilitaire pour Calendrier
64
 
64
 
65
class DiaryEvent extends Calendar_Decorator {
65
class DiaryEvent extends Calendar_Decorator {
66
	var $entry=array();
66
	var $entry=array();
67
	function DiaryEvent($calendar) {
67
	function DiaryEvent($calendar) {
68
		Calendar_Decorator::Calendar_Decorator($calendar);
68
		Calendar_Decorator::Calendar_Decorator($calendar);
69
	}
69
	}
70
	function setEntry($entry) {
70
	function setEntry($entry) {
71
		$this->entry[]=$entry;
71
		$this->entry[]=$entry;
72
		
72
		
73
	}
73
	}
74
	function getEntry() {
74
	function getEntry() {
75
		return $this->entry;
75
		return $this->entry;
76
	}
76
	}
77
} 
77
} 
78
 
78
 
79
 
79
 
80
function afficherContenuCorps() {
80
function afficherContenuCorps() {
81
	
81
	
82
		// Ajout d'une feuille de style externe
82
		// Ajout d'une feuille de style externe
83
	GEN_stockerStyleExterne ('wikini', 'client/bazar/presentations/styles/calendrier.css') ;
83
	GEN_stockerStyleExterne ('wikini', 'client/bazar/presentations/styles/calendrier.css') ;
84
	
84
	
85
	$retour='';
85
	$retour='';
86
 
86
 
87
	$url = $GLOBALS['_GEN_commun']['url'] ;
87
	$url = $GLOBALS['_GEN_commun']['url'] ;
88
	$db = &$GLOBALS['_GEN_commun']['pear_db'] ;
88
	$db = &$GLOBALS['_GEN_commun']['pear_db'] ;
89
	$auth = &$GLOBALS['_GEN_commun']['pear_auth'] ;
89
	$auth = &$GLOBALS['_GEN_commun']['pear_auth'] ;
90
	
90
	
91
	if (!isset($_GET['y'])) { 
91
	if (!isset($_GET['y'])) { 
92
		$_GET['y'] = date('Y');
92
		$_GET['y'] = date('Y');
93
	}
93
	}
94
	
94
	
95
	if (!isset($_GET['m'])) { 
95
	if (!isset($_GET['m'])) { 
96
		$_GET['m'] = date('m');
96
		$_GET['m'] = date('m');
97
	}
97
	}
98
	
98
	
99
	
99
	
100
	// 	Construction Mois en Cours 
100
	// 	Construction Mois en Cours 
101
	$month = new Calendar_Month_Weekdays($_GET['y'],$_GET['m']);
101
	$month = new Calendar_Month_Weekdays($_GET['y'],$_GET['m']);
102
 
102
 
103
	$curStamp=$month->getTimeStamp();
103
	$curStamp=$month->getTimeStamp();
104
	$url->addQueryString ('y', date('Y',$curStamp));
104
	$url->addQueryString ('y', date('Y',$curStamp));
105
	$url->addQueryString ('m', date('n',$curStamp));
105
	$url->addQueryString ('m', date('n',$curStamp));
106
	$url->addQueryString ('d', date('j',$curStamp));
106
	$url->addQueryString ('d', date('j',$curStamp));
107
	$cur = $url->getUrl();
107
	$cur = $url->getUrl();
108
	
108
	
109
	// Navigation 
109
	// Navigation 
110
	$prevStamp = $month->prevMonth(true);
110
	$prevStamp = $month->prevMonth(true);
111
	$url->addQueryString ('y', date('Y',$prevStamp));
111
	$url->addQueryString ('y', date('Y',$prevStamp));
112
	$url->addQueryString ('m', date('n',$prevStamp));
112
	$url->addQueryString ('m', date('n',$prevStamp));
113
	$url->addQueryString ('d', date('j',$prevStamp));
113
	$url->addQueryString ('d', date('j',$prevStamp));
114
	$prev = $url->getUrl();
114
	$prev = $url->getUrl();
115
	$nextStamp = $month->nextMonth(true);
115
	$nextStamp = $month->nextMonth(true);
116
	$url->addQueryString ('y', date('Y',$nextStamp));
116
	$url->addQueryString ('y', date('Y',$nextStamp));
117
	$url->addQueryString ('m', date('n',$nextStamp));
117
	$url->addQueryString ('m', date('n',$nextStamp));
118
	$url->addQueryString ('d', date('j',$nextStamp));
118
	$url->addQueryString ('d', date('j',$nextStamp));
119
	$next = $url->getUrl();
119
	$next = $url->getUrl();
120
 
120
 
121
	$fr_month=array("1"=>BAZ_JANVIER,"2"=>BAZ_FEVRIER,"3"=>BAZ_MARS,"4"=>BAZ_AVRIL,"5"=>BAZ_MAI,"6"=>BAZ_JUIN,"7"=>BAZ_JUILLET,"8"=>BAZ_AOUT,"9"=>BAZ_SEPTEMBRE,"10"=>BAZ_OCTOBRE,"11"=>BAZ_NOVEMBRE,"12"=>BAZ_DECEMBRE);
121
	$fr_month=array("1"=>BAZ_JANVIER,"2"=>BAZ_FEVRIER,"3"=>BAZ_MARS,"4"=>BAZ_AVRIL,"5"=>BAZ_MAI,"6"=>BAZ_JUIN,"7"=>BAZ_JUILLET,"8"=>BAZ_AOUT,"9"=>BAZ_SEPTEMBRE,"10"=>BAZ_OCTOBRE,"11"=>BAZ_NOVEMBRE,"12"=>BAZ_DECEMBRE);
122
 
122
 
123
	$retour.= "<div class=\"navi\">";
123
	$retour.= "<div class=\"navi\">";
124
	$retour.= "<a href=\"".$prev."\"> &lt;&lt; </a>"; 
124
	$retour.= "<a href=\"".$prev."\"> &lt;&lt; </a>"; 
125
 
125
 
126
	$retour.= "&nbsp;&nbsp;";
126
	$retour.= "&nbsp;&nbsp;";
127
	$retour.= "<a href=\"".$cur;
127
	$retour.= "<a href=\"".$cur;
128
	$retour.= "\"> ";
128
	$retour.= "\"> ";
129
	$retour.= $fr_month[(date('n',$curStamp))]; 
129
	$retour.= $fr_month[(date('n',$curStamp))]; 
130
	$retour.= "&nbsp;";
130
	$retour.= "&nbsp;";
131
	$retour.= (date('Y',$curStamp));
131
	$retour.= (date('Y',$curStamp));
132
	$retour.= "</a>";
132
	$retour.= "</a>";
133
	$retour.= "&nbsp;&nbsp;";
133
	$retour.= "&nbsp;&nbsp;";
134
	$retour.= "<a href=\"".$next."\"> &gt;&gt; </a>";
134
	$retour.= "<a href=\"".$next."\"> &gt;&gt; </a>";
135
 
135
 
136
	$retour.= "</div>";
136
	$retour.= "</div>";
137
 
137
 
138
	$retour.="<br></br>";
138
	$retour.="<br></br>";
139
 
139
 
140
		// Vue Mois 
140
		// Vue Mois 
141
	if (!isset($_GET['id_fiche'])) {
141
	if (!isset($_GET['id_fiche'])) {
142
			
142
			
143
		// Recherche evenement de la periode selectionnée 
143
		// Recherche evenement de la periode selectionnée 
144
		
144
		
145
	 	// TODO : Selectionner element du mois en cours 
145
	 	// TODO : Selectionner element du mois en cours 
146
	 	
146
	 	
147
	    $requete_evenements = "SELECT DISTINCT bf_id_fiche, bf_titre, bf_lieu_evenement, day(bf_date_debut_evenement) as bf_jour_debut_evenement , bf_date_fin_evenement, bf_description FROM bazar_fiche, bazar_nature where year(bf_date_debut_evenement) =".date('Y',$curStamp)." and month(bf_date_debut_evenement)=".date('m',$curStamp)." and bf_ce_nature=bn_id_nature and bn_label_nature='Évènements'";
147
	    $requete_evenements = "SELECT DISTINCT bf_id_fiche, bf_titre, bf_lieu_evenement, day(bf_date_debut_evenement) as bf_jour_debut_evenement , bf_date_fin_evenement, bf_description FROM bazar_fiche, bazar_nature where year(bf_date_debut_evenement) =".date('Y',$curStamp)." and month(bf_date_debut_evenement)=".date('m',$curStamp)." and bf_ce_nature=bn_id_nature and bn_label_nature='Évènements'";
148
	            
148
	            
149
	            
149
	            
150
	   	$resultat_evenement = $db->query($requete_evenements);
150
	   	$resultat_evenement = $db->query($requete_evenements);
151
	   	
151
	   	
152
	    (DB::isError($resultat_evenement))
152
	    (DB::isError($resultat_evenement))
153
	    ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_evenement->getMessage(), $requete_evenements))
153
	    ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_evenement->getMessage(), $requete_evenements))
154
	    : '';
154
	    : '';
155
	
155
	
156
		$calcom="";
156
		$calcom="";
157
		
157
		
158
		$selection=array();
158
		$selection=array();
159
		$evenements=array();
159
		$evenements=array();
160
		 
160
		 
161
		$prev_curday_ymd=0;
161
		$prev_curday_ymd=0;
162
		
162
		
163
	    while ($ligne_evenements = $resultat_evenement->fetchRow(DB_FETCHMODE_OBJECT)) {
163
	    while ($ligne_evenements = $resultat_evenement->fetchRow(DB_FETCHMODE_OBJECT)) {
164
	    	
164
	    	
165
			$curday_ymd=date('Ym',$curStamp).$ligne_evenements->bf_jour_debut_evenement;
165
			$curday_ymd=date('Ym',$curStamp).$ligne_evenements->bf_jour_debut_evenement;
166
			if ($curday_ymd!=$prev_curday_ymd) {
166
			if ($curday_ymd!=$prev_curday_ymd) {
167
				$Day = new Calendar_Day(date('Y',$curStamp),date('m',$curStamp), $ligne_evenements->bf_jour_debut_evenement);
167
				$Day = new Calendar_Day(date('Y',$curStamp),date('m',$curStamp), $ligne_evenements->bf_jour_debut_evenement);
168
				$DiaryEvent = new DiaryEvent($Day);
168
				$DiaryEvent = new DiaryEvent($Day);
169
				$prev_curday_ymd=$curday_ymd;
169
				$prev_curday_ymd=$curday_ymd;
170
			}
170
			}
171
			
171
			
172
			$DiaryEvent->setEntry($ligne_evenements);
172
			$DiaryEvent->setEntry($ligne_evenements);
173
			
173
			
174
			// Add the decorator to the selection
174
			// Add the decorator to the selection
175
			$selection[] = $DiaryEvent;
175
			$selection[] = $DiaryEvent;
176
				
176
				
177
		}
177
		}
178
			
178
			
179
		// Affichage Calendrier
179
		// Affichage Calendrier
180
		
180
		
181
		
181
		
182
		$month->build($selection);
182
		$month->build($selection);
183
	
183
	
184
		$retour.= "<table class=\"calendar\">
184
		$retour.= "<table class=\"calendar\">
185
		 <tr>
185
		 <tr>
186
		
186
		
187
		  <th> ". BAZ_LUNDI ."</th>
187
		  <th> ". BAZ_LUNDI ."</th>
188
		  <th> ". BAZ_MARDI ."</th>
188
		  <th> ". BAZ_MARDI ."</th>
189
		  <th> ". BAZ_MERCREDI ."</th>
189
		  <th> ". BAZ_MERCREDI ."</th>
190
		  <th> ". BAZ_JEUDI ."</th>
190
		  <th> ". BAZ_JEUDI ."</th>
191
		  <th> ". BAZ_VENDREDI ."</th>
191
		  <th> ". BAZ_VENDREDI ."</th>
192
		  <th> ". BAZ_SAMEDI ."</th>
192
		  <th> ". BAZ_SAMEDI ."</th>
193
		  <th> ". BAZ_DIMANCHE ."</th>
193
		  <th> ". BAZ_DIMANCHE ."</th>
194
		 </tr>
194
		 </tr>
195
		 ";
195
		 ";
196
		
196
		
197
		$todayStamp=time();
197
		$todayStamp=time();
198
		
198
		
199
		$today_ymd=date('Ymd',$todayStamp);
199
		$today_ymd=date('Ymd',$todayStamp);
200
	
200
	
201
		// Other month : mois 
201
		// Other month : mois 
202
		//
202
		//
203
		
203
		
204
		while ($day = $month->fetch() ) {
204
		while ($day = $month->fetch() ) {
205
				
205
				
206
				$dayStamp = $day->thisDay(true);
206
				$dayStamp = $day->thisDay(true);
207
				$day_ymd=date('Ymd',$dayStamp);
207
				$day_ymd=date('Ymd',$dayStamp);
208
				
208
				
209
				if ( $day->isEmpty() ) {
209
				if ( $day->isEmpty() ) {
210
						$class = "other_month";
210
						$class = "other_month";
211
				}
211
				}
212
				else {
212
				else {
213
					if (($day_ymd < $today_ymd)) {
213
					if (($day_ymd < $today_ymd)) {
214
						$class="previous_month";
214
						$class="previous_month";
215
					}
215
					}
216
					else {
216
					else {
-
 
217
						 if ($day_ymd == $today_ymd) {
-
 
218
						 	$class="current_day";
-
 
219
						 }
-
 
220
						 else {
217
						$class="current_month";
221
							$class="current_month";
-
 
222
						 }
218
					}
223
					}
219
				}
224
				}
220
				
225
				
221
				$url->addQueryString ('y', date('Y',$dayStamp));
226
				$url->addQueryString ('y', date('Y',$dayStamp));
222
				$url->addQueryString ('m', date('n',$dayStamp));
227
				$url->addQueryString ('m', date('n',$dayStamp));
223
				$url->addQueryString ('d', date('j',$dayStamp));
228
				$url->addQueryString ('d', date('j',$dayStamp));
224
				
229
				
225
				$link = $url->getUrl();
230
				$link = $url->getUrl();
226
			
231
			
227
				// isFirst() to find start of week
232
				// isFirst() to find start of week
228
				if ($day->isFirst())
233
				if ($day->isFirst())
229
					$retour.= ( "<tr>\n" );
234
					$retour.= ( "<tr>\n" );
230
				
235
				
231
				$retour.= ( "<td class=\"".$class."\"><a href=\"".$link."\">".$day->thisDay()."</a>\n" );
236
				$retour.= ( "<td class=\"".$class."\"><a href=\"".$link."\">".$day->thisDay()."</a>\n" );
232
				
237
				
233
				if ($day->isSelected() ) {
238
				if ($day->isSelected() ) {
234
					$evenements=$day->getEntry();
239
					$evenements=$day->getEntry();
235
					while ($ligne_evenement=array_pop($evenements)) {
240
					while ($ligne_evenement=array_pop($evenements)) {
236
						$url->addQueryString ('id_fiche',$ligne_evenement->bf_id_fiche);
241
						$url->addQueryString ('id_fiche',$ligne_evenement->bf_id_fiche);
237
						$link = $url->getUrl();
242
						$link = $url->getUrl();
238
						$retour.= ( "<a href=\"".$link."\">".$ligne_evenement->bf_titre."</a>\n" );
243
						$retour.= ( "<a href=\"".$link."\">".$ligne_evenement->bf_titre."</a>\n" );
239
					}
244
					}
240
					
245
					
241
				}
246
				}
242
				
247
				
243
				$retour.= ( "</td>\n" );
248
				$retour.= ( "</td>\n" );
244
				
249
				
245
				// isLast() to find end of week
250
				// isLast() to find end of week
246
				if ( $day->isLast() )
251
				if ( $day->isLast() )
247
					$retour.= ( "</tr>\n" );
252
					$retour.= ( "</tr>\n" );
248
			}
253
			}
249
		
254
		
250
			$retour.= "</table>";
255
			$retour.= "</table>";
251
			
256
			
252
			return $retour;
257
			return $retour;
253
		
258
		
254
		}
259
		}
255
		else {
260
		else {
256
			// Vue jour
261
			// Vue jour
257
			if (isset($_GET['id_fiche'])) {
262
			if (isset($_GET['id_fiche'])) {
258
				return 	$retour.baz_voir_fiche(0, $_GET['id_fiche']);
263
				return 	$retour.baz_voir_fiche(0, $_GET['id_fiche']);
259
			}
264
			}
260
		}
265
		}
261
	}
266
	}
262
	
267
	
263
?>
268
?>