1<?php
2/* $Id: view_avail.php,v 1.7 2006/04/16 14:40:44 leyeti Exp $ */
3error_reporting  (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
4$myEnv["module"] = "calendar";
5$myEnv["output"] = "html";
6
7header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); //MSIE6 P3P header
8
9include("../../config.inc.php");
10include(INCLUDEPATH . "container.inc.php");
11include(INCLUDEPATH . "mSelectBox.class.php");
12
13// adding file revision into global array
14if(function_exists("revisionInit")) revisionInit("\$Revision: 1.7 $", __FILE__);
15
16
17//// NATYS //// Date langage :
18include(CAL1_INC_DIR."date_lang.php");
19$_SESSION["date_lang"] = array ("language" => $_SESSION["MGW"]->spkz,
20								"lang_dir" => CAL1_DIR."lang/"
21								);
22///////////////
23
24/// NATYS ////
25
26/////////////
27// NATYS : temporaire:
28//pour traiter le texte :
29function text_process($text){
30return $text;
31}
32///
33
34
35$serial_week = (isset($_GET["serial_week"])) ? $_GET["serial_week"] : (IsSet($_POST["serial_week"]) ? $_POST["serial_week"] : "");
36$serial_year = (isset($_GET["serial_year"])) ? $_GET["serial_year"] : (IsSet($_POST["serial_year"]) ? $_POST["serial_year"] : "");
37//parties is a string containing participants (e.g. : 1|4|12|14 -> four participants)
38$parties = (isset($_GET["parties"])) ? $_GET["parties"] : (IsSet($_POST["parties"]) ? $_POST["parties"] : "");
39
40$date = (isset($_GET["date"])) ? $_GET["date"] : (IsSet($_POST["date"]) ? $_POST["date"] : "");
41$gotodate = IsSet($_POST["gotodate"]) ? $_POST["gotodate"] : "";
42if(isset($_GET["action"]) || isset($_POST["action"])) $action = (isset($_GET["action"])) ? $_GET["action"] : $_POST["action"];
43
44$new = (isset($_GET["new"])) ? $_GET["new"] : (IsSet($_POST["new"]) ? $_POST["new"] : "");
45
46$update = (isset($_GET["update"])) ? $_GET["update"] : (IsSet($_POST["update"]) ? $_POST["update"] : "");
47$tsupdate = (isset($_GET["tsupdate"])) ? $_GET["tsupdate"] : (IsSet($_POST["tsupdate"]) ? $_POST["tsupdate"] : "");
48$participants = (isset($_GET["participants"])) ? $_GET["participants"] : (IsSet($_POST["participants"]) ? $_POST["participants"] : array());
49
50if (sizeof($participants)==0 && $parties!="") {
51    //get array with participants:
52	$participants=explode("|",$parties);
53}
54$parties ="";
55
56$ind = (isset($_GET["ind"])) ? $_GET["ind"] : (IsSet($_POST["ind"]) ? $_POST["ind"] : "");
57$appointment_attribute = (isset($_GET["appointment_attribute"])) ? $_GET["appointment_attribute"] : (IsSet($_POST["appointment_attribute"]) ? $_POST["appointment_attribute"] : "");
58
59$appointment_start = (isset($_GET["appointment_start"])) ? $_GET["appointment_start"] : (IsSet($_POST["appointment_start"]) ? $_POST["appointment_start"] : "");
60$appointment_end = (isset($_GET["appointment_end"])) ? $_GET["appointment_end"] : (IsSet($_POST["appointment_end"]) ? $_POST["appointment_end"] : "");
61
62//Duration:
63$appointment_duration = (isset($_GET["appointment_duration"])) ? $_GET["appointment_duration"] : (IsSet($_POST["appointment_duration"]) ? $_POST["appointment_duration"] : 0);
64if (!isset($duration)) {
65	/*if($appointment_duration!=0)*/
66	//echo (date("H",$appointment_duration))." ".date("i",$appointment_duration);
67	//echo "<BR>".date("H:i",mktime(0,30,0, 1, 1,1971));
68	$duration = date("H",$appointment_duration)*3600+date("i",$appointment_duration)*60;
69	//echo "<BR>".date("H:i",$duration+mktime(0,0,0, 1, 1,1971));
70	//else $duration = 61;
71}
72
73
74// redirect to default view
75if($_SESSION["MGW"]->settings["calendar_defaultview"]!="" && (!isset($_GET['submenu']) || $_GET['submenu']!="yes") &&
76   empty($date) && empty($gotodate) && empty($action) && empty($new) &&
77   empty($update) && empty($tsupdate) && trim($_SESSION["MGW"]->settings["calendar_defaultview"])!="index.php"){
78    redirect($_SESSION["MGW"]->settings["calendar_defaultview"]."?".SID);
79}
80
81$timemask = $_SESSION["MGW"]->settings["timefmt"];
82
83// get the settings
84$holitemp      = $_SESSION["MGW"]->settings["calendar_holiday_system"];			// calendar holiday system (country)
85$interval      = $_SESSION["MGW"]->settings["calendar_interval"];			// calender interval length in minutes
86$interval_sec  = 60 * $interval;					// calender interval length in seconds
87$starthour     = $_SESSION["MGW"]->settings["calendar_viewfrom"];			// start hour of day-view
88$endhour       = $_SESSION["MGW"]->settings["calendar_viewto"];			// last  hour of day-view
89
90
91$concat = $conn->Concat("'* '","firstname","' '","lastname");
92
93
94if (isset($action)){
95
96	switch($action)
97		{
98		case "choose" :	if (empty($date)) {
99					    $date = mktime(0,0,0, date("m", time()), date("d", time()), date("Y", time()));
100						}
101						break;
102
103		case "view" :   if (empty($date)) {
104		                $date = get_weektimestamp($serial_week,$serial_year);
105		                }
106						break;
107
108		}
109
110}
111
112
113
114// Set certain values for time-handling
115$actual_date_arr = getdate($date);
116
117// Start time (according to settings) of selected day
118$start_time =  mktime(0,0,0, $actual_date_arr["mon"], $actual_date_arr["mday"], $actual_date_arr["year"]) + $starthour * 3600;
119$app_start_time =  mktime(0,0,0, $actual_date_arr["mon"], $actual_date_arr["mday"], $actual_date_arr["year"]);
120
121// End time (according to settings) of selected day
122$end_time   =  mktime(0,0,0, $actual_date_arr["mon"], $actual_date_arr["mday"], $actual_date_arr["year"]) + $endhour   * 3600;
123$app_end_time   =  mktime(0,0,0, $actual_date_arr["mon"], $actual_date_arr["mday"], $actual_date_arr["year"]) + 23.5 * 3600;
124
125
126
127
128
129// ===========================================
130// Show Template : form for Choosing to View availabity
131// ===========================================
132if ($action=="choose") {
133
134	// according to settings : set current user available or selected:
135	if ($_SESSION["MGW"]->settings['calendar_be_participant']==1) $sql_where = " WHERE id != '".$_SESSION["MGW"]->userid."'";
136	else $sql_current = "";
137
138	$sql  = "SELECT id as userid, ".$conn->Concat("firstname", "' '", "lastname")." AS name
139		FROM mgw_users".
140		$sql_where ."
141		ORDER BY name"; // is $sql_where ever defined here?
142
143	if(!$res = $conn->Execute($sql)) die(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__));
144	while ($row = $res->FetchRow()) {
145		$smarty->append("partie", $row);
146	}
147
148	// according to settings : select current user by default:
149	if ($_SESSION["MGW"]->settings['calendar_be_participant']==1) {
150		$currentuser = array( 	"userid" => $_SESSION["MGW"]->userid ,
151								"name" => $_SESSION["MGW"]->fullusername);
152	$smarty->append("spartie", $currentuser);
153	}
154
155	// create selectboxes
156	$sdate=getDate($date);
157
158	//current week :
159	$smarty->assign("week_sel",get_weeknumber($date));
160
161	// years
162	$syears = new mSelectBox("serial_year");
163	$syears ->setHandler("OnChange", "keep_weeks_coherence()");
164	$smarty->assign("serial_year", $syears->getSB_Year(date("Y",time()),date("Y",time())+30,$sdate["year"],false));
165
166
167
168	//duration => a passer en parametre
169	for( $t=mktime(0,30,0,1,1,1971); $t <= mktime(12,0,0,1,1,1971); $t+=$interval_sec) {
170		$appointment_duration_list = array(
171			"timestamp" 	=> $t,
172			"time_label"  	=> date($timemask, $t),
173			"sel" 		=> ($duration==$t ? " selected" : "")
174		);
175	//print_r($appointment_duration_list);
176	$smarty->append("appointment_duration_list", $appointment_duration_list);
177	}
178
179
180	$smarty->assign("year53_list",get_year53_list(date("Y",time()),date("Y",time())+30));
181
182	if (isset($week)) {
183	    $smarty->assign("week_sel",$week);
184	}
185
186	//$smarty->assign('date',  $date);
187	$smarty->assign('back',  "view_avail.php?date=$date&".SID);
188	$smarty->assign('sname', "new");
189	$smarty->assign('datum', date(Lang::getLanguageString("gentemp_date_format_php"), $date));
190	$smarty->assign('temp_err_no_start', Lang::getLanguageString("temp_err_no_start"));
191	$smarty->assign('temp_err_no_end', Lang::getLanguageString("temp_err_no_end"));
192	$smarty->assign('temp_err_end_before', Lang::getLanguageString("temp_err_no_before"));
193	$smarty->assign('temp_err_thema_long', Lang::getLanguageString("temp_err_thema_long"));
194	$smarty->assign('temp_err_external_long', Lang::getLanguageString("temp_err_external_long"));
195
196	//$smarty->assign('temp_i_will', Lang::getLanguageString("i_will_part"));
197	//$smarty->assign('temp_will_selected', ($_SESSION["MGW"]->settings['calendar_be_participant']==1 ? true : false));
198	$smarty->assign("temp_title", Lang::getLanguageString("temp_newappointment"));
199	$smarty->assign("submenu", 7);
200	$smarty->assign("suvalue", Lang::getLanguageString("gentemp_view_avail"));
201	$smarty->assign("appointment_attribute",0);
202
203
204	$smarty->assign("target","view_avail.php");
205
206	$smarty->display('calendar_choose_avail.tpl'); //new.tpl
207	////////////////
208
209} // FIN IF CHOOSE
210
211
212
213//===================================
214// SHOW week with availability...
215//===================================
216
217if ($action=="view") {
218	// show week with periods:
219//echo "start: $start_time : ".date("H:i d-m-Y",$start_time)."<BR>";
220//echo "end: $end_time : ".date("H:i d-m-Y",$end_time)."<BR>";
221
222$actual_week_start_date     = $start_time - ($actual_date_arr["wday"]-1) * 3600 * 24 - $starthour*3600;
223$actual_week_end_date       = $end_time   + (7-$actual_date_arr["wday"]) * 3600 * 24 - $endhour * 3600;
224
225// Set day header in week-view
226$woch_arr = array( Lang::getLanguageString("temp_weekday_abbr_1"), Lang::getLanguageString("temp_weekday_abbr_2"), Lang::getLanguageString("temp_weekday_abbr_3"), Lang::getLanguageString("temp_weekday_abbr_4"),
227		   Lang::getLanguageString("temp_weekday_abbr_5"), Lang::getLanguageString("temp_weekday_abbr_6"), Lang::getLanguageString("temp_weekday_abbr_0"));
228
229$w = $actual_week_start_date;
230for ($i=0;$i<=6;$i++) {
231    $j=$i+2;
232    $colum = "d$j";
233    if (get_celebrate_days($w, $holitemp) != "") $wday = get_celebrate_days($w, $holitemp);
234    else if ($i <= 4) $wday = $woch_arr[$i] . ",&nbsp;"./* NATYS date*/date_lang( Lang::getLanguageString("gentemp_date_format_php"), $w) . "";
235    else if ($i == 5) $wday = Lang::getLanguageString("gentemp_weekday_7");
236    else if ($i == 6) $wday = Lang::getLanguageString("gentemp_weekday_1");
237    $smarty->assign("$colum", "<a class=\"edit\" href=\"index.php?date=$w&amp;".SID."\">$wday</a>");
238    $smarty->append("clm", array("date" => $w, "wkd"=> $woch_arr[$i]));
239    $w += 24*3600;
240}
241
242$wst_d      = date("d/m",    $actual_week_start_date);
243$wen_d      = date("d/m/Y",  $actual_week_end_date);
244$sql_start = date("Ymd", $actual_week_start_date);
245$sql_ende  = date("Ymd", $actual_week_end_date);
246
247// =======================
248//  calendar change
249// =======================
250if (isset($_POST["new_calendarid"])){
251    if ($_POST["new_calendarid"]=="all") {
252	$_SESSION['calendarid'] = "all";
253	$_SESSION['calendarname'] = Lang::getLanguageString("calendarownerall"); // translated all
254    }
255    else {
256	$sql = "SELECT id, $concat AS name FROM mgw_users WHERE NOT(level=".UDELETED.") AND id = ".$_POST["new_calendarid"];
257
258	if(!$res = $conn->Execute($sql)) die(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__));
259	$row = $res->FetchRow();
260	$_SESSION['calendarid']   = $row["id"];
261	$_SESSION['calendarname'] = $row["name"];
262    }
263    unset($chgcal);
264}
265
266
267// ========================
268// GET BIRTHDAYS
269// ========================
270
271if($_SESSION["MGW"]->settings["calendar_show_birthdays"]){
272
273    $w = $actual_week_start_date;
274    for ($i=1;$i<=7;$i++) {
275	$bd_start = $conn->DBDate(mktime(0,0,1,date("m",$w),date("d",$w),date("Y",$w)));
276	$bd_end = $conn->DBDate(mktime(23,59,59,date("m",$w),date("d",$w),date("Y",$w)));
277
278	//$bdsql = "SELECT $concat AS jubilee FROM mgw_contacts WHERE SUBSTRING(birthday,6,5)='".date("m-d",$w)."' AND (ispublic='1' OR owner='".$_SESSION["MGW"]->userid."')";
279	$bdsql = "SELECT $concat AS jubilee
280	          FROM mgw_contacts
281			  WHERE birthday >= $bd_start AND
282				  birthday <= $bd_end AND
283			  (ispublic='1' OR owner='".$_SESSION["MGW"]->userid."')";
284	if(!$bdres = $conn->Execute($bdsql)) exit(showSQLerror($bdsql, $conn->ErrorMsg(), __LINE__, __FILE__));
285	$br = "";
286	$bd = array_fill(0,8,"");
287	while($bdrow = $bdres->FetchRow()){
288    $bd[$i] .= $bdrow["jubilee"].$br;
289    $br = "<br />";
290	}
291
292	$nam = "klasse$i";
293	if (get_celebrate_days(mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$i-1,date("Y",$actual_week_start_date)), $holitemp) != "")
294	    $$nam = "feiertag";
295	else if ((date("w", mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$i-1,date("Y",$actual_week_start_date))) == 0) || (date("w", mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$i-1,date("Y",$actual_week_start_date))) == 6))
296	    $$nam = "wochenende";
297	else if (mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$i-1,date("Y",$actual_week_start_date)) == mktime(0,0,0, date("m",time()),date("j",time()),date("Y",time())))
298	    $$nam = "heute";
299	else $$nam = "tab";
300
301	$w += 24*3600; // WARNING !! use mktime instead !!
302    }
303
304    $zeile = array( "von" => "",
305		    "mon" => $bd[1], "tue" => $bd[2], "wed" => $bd[3], "thu" => $bd[4], "fri" => $bd[5], "sat" => $bd[6], "sun" => $bd[7],
306		    "klass2" => $klasse1, "klass3" => $klasse2, "klass4" => $klasse3, "klass5" => $klasse4, "klass6" => $klasse5, "klass7" => $klasse6, "klass8" => $klasse7);
307    $smarty -> append("cw", $zeile);
308}
309
310// ========================
311// ENTRY WEEKVIEW
312// ========================
313if(!isset($_GET["action"]) or $_GET["action"]=="view") {
314
315
316//echo "w-start: $actual_week_start_date : ".date("H:i d-m-Y",$actual_week_start_date)."<BR>";
317//echo "w-end: $actual_week_end_date : ".date("H:i d-m-Y",$actual_week_end_date)."<BR>";
318
319	$color_avail_ok = "#C8FFB6";
320	$color_avail_too_small = "#D18A76";
321	$color_not_avail = "#CDD9E8";
322
323	$smarty->assign("color_avail_ok",$color_avail_ok);
324	$smarty->assign("color_avail_too_small",$color_avail_too_small);
325	$smarty->assign("color_not_avail",$color_not_avail);
326
327    if (!IsSet($_SESSION["calendar_month"]) && !IsSet($_SESSION["calendar_year"])) {
328	$_SESSION['calendar_month'] = date("m", $date);
329	$_SESSION['calendar_year'] = date("Y", $date);
330	$_SESSION["calendar_month"] = $_SESSION['calendar_month'];
331	$_SESSION["calendar_year"] = $_SESSION['calendar_year'];
332    }
333
334    ////////////////////////////////////////////////////////////////////////
335    // set calenderid = userid if calendarid is not set
336    ////////////////////////////////////////////////////////////////////////
337    if (!isset($_SESSION["calendarid"])) {
338	$_SESSION['calendarid']   = $_SESSION["MGW"]->userid;
339	$_SESSION['calendarname'] = $_SESSION["MGW"]->fullusername;
340    }
341
342    ////////////////////////////////////////////////////////////////////////
343    // show user list as possible calendar owners
344    ////////////////////////////////////////////////////////////////////////
345    $sql = "SELECT id, $concat AS name FROM mgw_users WHERE NOT(level=".UDELETED.") order by 2";
346
347    if(!$res = $conn->Execute($sql)) die(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__));
348
349    while ($row = $res->FetchRow()){
350	$smarty->append("td2", $row);
351    }
352
353    $smarty->assign('action', "inh");
354
355    /*// Selected entry all
356    if ($_SESSION['calendarid']=="all") {
357	$sql_owner_part="";
358    }
359    else {
360	$sql_owner_part="userid = ".$_SESSION['calendarid']." AND";
361    }
362   */
363   $nb_part = sizeof($participants);
364   $sql_owner_part = "( ";
365
366	for ($i=0;$i<$nb_part;$i++)
367		{
368		//format string with participants :
369      	$parties .= $participants[$i].(($i==$nb_part-1) ? "" : "|");
370		//format sql with participants
371		$sql_owner_part.="userid = '".$participants[$i]."' OR ";
372		}
373   $sql_owner_part.=" (1=0) ) AND ";
374
375
376   ////////////  list of participants:  ////////////////
377   	   $sql_spart = "SELECT id as userid, ".$conn->Concat("firstname", "' '", "lastname")." AS name
378			 		  FROM mgw_users
379					  WHERE NOT(level=".UDELETED.") AND ( ";
380		for ($i=0;$i<$nb_part;$i++)
381			{
382			//format sql with selected participants
383			$sql_spart.="id = '".$participants[$i]."' OR ";
384			}
385	   $sql_spart.=" (1=0) )
386			    	 ORDER BY lastname";
387
388		if(!$res = $conn->Execute($sql_spart)) die(showSQLerror($sql_spart, $conn->ErrorMsg(), __LINE__, __FILE__));
389		while ($row = $res->FetchRow()) {
390			$smarty->append("spartie", $row);
391		}
392    //  $sql = "SELECT * FROM mgw_calendar WHERE $sql_owner_part SUBSTRING(date,1,8) >= '$sql_start' AND substring(date,1,8) <= '$sql_ende'	GROUP BY 1, date , userid , subject, location, private , duration, external, inituserid, day_ind, repeat_mode, rep_from, rep_until, dategroup_id, holiday_id ORDER BY 1";
393
394	$sql = "SELECT date, duration FROM mgw_calendar
395	        WHERE $sql_owner_part date >= ".$conn->DBTimeStamp(mktime(0,0,0, date("m",$actual_week_start_date), date("d",$actual_week_start_date), date("Y",$actual_week_start_date)) )." AND
396            date <= ".$conn->DBTimeStamp( mktime(23,59,59, date("m",$actual_week_end_date), date("d",$actual_week_end_date), date("Y",$actual_week_end_date)))."
397			GROUP BY 1, date , duration
398			ORDER BY 1";
399
400
401    if(!$res = $conn->Execute($sql)) die(showSQLerror($sql, $conn->ErrorMsg(), __LINE__, __FILE__));
402    $num = $res->RecordCount();
403
404    $nb_opened_days = 5; // here : we don't want to make appointment on Sat or Sun
405	$next_week_start_date = mktime(0,0,0,date("m",$actual_week_start_date),date("d",$actual_week_start_date)+$nb_opened_days,date("Y",$actual_week_start_date));
406
407	$ar_appt =array();
408	//fill an array containing all appointments (timestamps)
409	while($row = $res->FetchRow()){
410
411		$vmin  = $res->UnixTimeStamp($row["date"]);
412	    $bmin  = $vmin + $row["duration"] * 60;
413
414		for ($i=$vmin;$i<$bmin;$i+= $interval_sec)
415			if (date("H",$i) >= $starthour && date("H",$i) <= $endhour) {
416			    $ar_appt[]= $i;
417			}
418	} // while
419
420	//print_r($ar_appt);
421	$new_interval = 1;
422	$continue_interval = 2;
423	$too_small_interval = 3;
424	$not_avail_interval = 4;
425
426	$duration_remainder = 0;
427	for ($ts=$actual_week_start_date; $ts<$next_week_start_date; $ts+=$interval_sec){
428
429		// init for each:
430		$duration_ok = false;
431		$is_available = false;
432		$type_interval = 0; // type_interval contain 0, 1, 2, 3
433
434
435		// there is a free interval beetween starthour and endhour
436		if(!in_array($ts, $ar_appt) && ((date("Hi",$ts)/100) >= $starthour && (date("Hi",$ts)/100) < $endhour))
437			{
438			 $is_available = true;
439			}
440		else {
441			$is_available = false;
442			$type_interval = $not_avail_interval;
443			}
444
445		if ($is_available) {
446			$duration_ok = true;
447			for ($i=$ts;$i<$ts+$duration && $i<$next_week_start_date ;$i+=$interval_sec)
448				{
449				$duration_ok = $duration_ok && !in_array($i, $ar_appt) && /*limit = endhour =>*/(date("Hi",$i)/100) < $endhour;
450				//echo "i: $i, date: ".date("H:i d-m-Y", $i)." ok?: $duration_ok / ".!in_array($i, $ar_appt)."<BR>";
451				}
452		}
453
454		if ($is_available)
455			{
456				if ($duration_ok) {
457					$duration_remainder = $duration-$interval_sec;
458					$type_interval = $new_interval;
459				}
460				else {
461						if ($duration_remainder > 0) {
462						     $duration_remainder = $duration_remainder-$interval_sec;
463							 $type_interval = $continue_interval;
464						  }
465						else $type_interval = $too_small_interval;
466
467					}
468			}
469
470
471
472		switch($type_interval)
473			{
474			case $new_interval :		$t_klasse = "edit";
475										$datum = getdate($ts);
476										$vzeit = date("His", $ts);
477										$week[$datum["wday"]][$vzeit] = "<a href=\"index.php?action=new1&newtype=meeting&parties=$parties&date=$ts&end_date=".($ts+$duration-$interval_sec)."&".SID."\" class=\"edit\">".Lang::getLanguageString("gentemp_view_avail_available")."</a>";
478										$bg_klasse[$datum["wday"]][$vzeit] = $color_avail_ok;
479										break;
480
481			case $continue_interval : 	$t_klasse = "edit";
482										$datum = getdate($ts);
483										$vzeit = date("His", $ts);
484										$week[$datum["wday"]][$vzeit] = "<a href=\"index.php?action=new1&newtype=meeting&parties=$parties&date=".($ts-($duration-$duration_remainder-$interval_sec))."&end_date=".(($ts-($duration-$duration_remainder-$interval_sec))+$duration-$interval_sec)."&".SID."\" class=\"edit\">"."..."."</a>";
485										$bg_klasse[$datum["wday"]][$vzeit] = $color_avail_ok;
486										break;
487
488			case $too_small_interval :	$t_klasse = "edit";
489										$datum = getdate($ts);
490										$vzeit = date("His", $ts);
491										$week[$datum["wday"]][$vzeit] = Lang::getLanguageString("gentemp_view_avail_tooshort");
492										$bg_klasse[$datum["wday"]][$vzeit] = $color_avail_too_small;
493										break;
494
495			case $not_avail_interval :	$t_klasse = "edit";
496										$datum = getdate($ts);
497										$vzeit = date("His", $ts);
498										$bg_klasse[$datum["wday"]][$vzeit] = $color_not_avail;
499										break;
500
501			default : 	/*$t_klasse = "edit";
502						$datum = getdate($ts);
503						$vzeit = date("His", $ts);
504						$week[$datum["wday"]][$vzeit] = "<a href=\"details.php?id=99999&".SID."\" class=\"edit\">".short_string(str_decode("000"),$max_subject_length)."</a>";
505						*/
506						//$bg_klasse[$datum["wday"]][$vzeit] = $color_not_avail;
507						break;
508
509
510			}
511
512
513/*
514	    if (get_celebrate_days($vmin, $holitemp) != "") $t_klasse = "feiertag";
515	    else if ((date("w", $vmin) == 0) || (date("w", $vmin) == 6))   $t_klasse = "wochenende";
516	    else if (mktime(0,0,0, date("m",$vmin),date("j",$vmin),date("Y",$vmin)) ==
517		     mktime(0,0,0, date("m",time()),date("j",time()),date("Y",time()))) $t_klasse = "heute";
518	    else $t_klasse = "edit";
519
520//// NATYS : color of appointment : appointment type
521	//----- appointment type :
522	$id_appt_type = $row["id_appt_type"];
523	$sql_appt_type = "SELECT * FROM mgw_calendar_appt_type WHERE id=$id_appt_type";
524	if(!$res_appt_type = $conn->Execute($sql_appt_type)) exit(showSQLerror($sql_appt_type, $conn->ErrorMsg(), __LINE__, __FILE__));
525	$row_appt_type = $res_appt_type->FetchRow();
526	$appointment_type = array( 	"text" => Lang::getLanguageString("gentemp_".$row_appt_type["type"]),
527								"color"=> $row_appt_type["color"]
528							 );
529/////////////
530
531	    for ($w = $vmin; $w < $bmin; $w += $interval_sec){
532		$datum = getdate($w);
533		$vzeit = date("His", $w);
534		// NATYS : extracted from if and else :
535		$klasse[$datum["wday"]][$vzeit] = "$t_klasse";
536		$bg_klasse[$datum["wday"]][$vzeit] = $appointment_type["color"];
537		if ($w == $vmin){
538		    $myid = $row["id"];
539		    //NATYS $klasse[$datum["wday"]][$vzeit] = "$t_klasse";
540
541			if ($row["private"] == 1 && $_SESSION['calendarid'] != $_SESSION["MGW"]->userid){
542				// private, not owner
543				if (!isset($week[$datum["wday"]][$vzeit])) $week[$datum["wday"]][$vzeit] = Lang::getLanguageString("private");
544				else if ( $week[$datum["wday"]][$vzeit] == "...")  $week[$datum["wday"]][$vzeit] = Lang::getLanguageString("private");
545				else $week[$datum["wday"]][$vzeit] = "<a class=\"edit\" href=\"index.php?action=sel&ind=2&date=$vmin&".SID."\">".Lang::getLanguageString("temp_row_label_1")."</a>";
546			}
547		    else if ($row["private"] == 0 || $_SESSION['calendarid'] == $_SESSION["MGW"]->userid){
548				// not private or owner
549				//// NATYS ////
550				//if (!isset($week[$datum["wday"]][$vzeit]))   $week[$datum["wday"]][$vzeit] = "<a href=\"details.php?id=$myid&".SID."\" class=\"edit\">".short_string($row["subject"],$max_subject_length)."</a>";
551				if (!isset($week[$datum["wday"]][$vzeit]))   $week[$datum["wday"]][$vzeit] = "<a href=\"details.php?id=$myid&".SID."\" class=\"edit\">".short_string(str_decode($row["subject_summ"]),$max_subject_length)."</a>";
552				//else if ( $week[$datum["wday"]][$vzeit] == "...") $week[$datum["wday"]][$vzeit] = "<a href=\"details.php?id=$myid&".SID."\" class=\"edit\">".$row["subject"]."</a>";
553				else if ( $week[$datum["wday"]][$vzeit] == "...") $week[$datum["wday"]][$vzeit] = "<a href=\"details.php?id=$myid&".SID."\" class=\"edit\">".str_decode($row["subject_summ"])."</a>";
554				//////////
555				else if (isset($week[$datum["wday"]][$vzeit]))    $week[$datum["wday"]][$vzeit] = "<a href=\"index.php?action=sel&ind=2&date=$vmin&".SID."\" class=\"edit\">".Lang::getLanguageString("temp_row_label_1")."</a>";
556		    }
557		}
558		else{
559		    $week[$datum["wday"]][$vzeit] = "...";
560		    //NATYS $klasse[$datum["wday"]][$vzeit] = "$t_klasse";
561		}
562	    } // end for
563
564	*/
565	}
566
567	// NATYS : classes for header (days)
568		$t=$app_start_time;
569	    $zeits = date("His", $t);
570	    for ($k=1;$k<=7;$k++){
571		$head_klasse_nam = "head_klasse$k";
572		if (!isset($klasse[$k]["$zeits"])){
573		    if (get_celebrate_days( mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$k-1,date("Y",$actual_week_start_date)), $holitemp) != "")
574			$$head_klasse_nam = "feiertag";
575		    else if ((date("w", mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$k-1,date("Y",$actual_week_start_date))) == 0)
576			     || (date("w", mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$k-1,date("Y",$actual_week_start_date))) == 6))
577			$$head_klasse_nam = "wochenende";
578
579		    else if (mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$k-1,date("Y",$actual_week_start_date)) ==
580			     mktime(0,0,0, date("m",time()),date("j",time()),date("Y",time())))
581			$$head_klasse_nam = "heute";
582		    else $$head_klasse_nam = "tab";
583		 }
584		}
585
586	$cw_header = array( "h_klass2"	=>	$head_klasse1,
587						"h_klass3"	=>	$head_klasse2,
588						"h_klass4"	=>	$head_klasse3,
589						"h_klass5"	=>	$head_klasse4,
590						"h_klass6"	=>	$head_klasse5,
591						"h_klass7"	=>	$head_klasse6,
592						"h_klass8"	=>	$head_klasse7
593						);
594	$smarty->assign("cw_header",$cw_header);
595	//////////
596
597
598
599	/// properties of each cell per line.
600	for($t=$app_start_time; $t<$app_end_time; $t+=$interval_sec){
601	    $zeits = date("His", $t);
602	    for ($k=1;$k<=7;$k++){
603		$nam = "klasse$k";
604		$bg_nam = "bg_klasse$k";
605		$$bg_nam = IsSet($bg_klasse[$k]["$zeits"]) ? $bg_klasse[$k]["$zeits"] : "";
606//echo "<br><br>$bg_nam::-> ".$bg_klasse[$k]["$zeits"];
607		if (!isset($klasse[$k]["$zeits"])){
608		    if (get_celebrate_days( mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$k-1,date("Y",$actual_week_start_date)), $holitemp) != "")
609			$$nam = "feiertag";
610		    else if ((date("w", mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$k-1,date("Y",$actual_week_start_date))) == 0)
611			     || (date("w", mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$k-1,date("Y",$actual_week_start_date))) == 6))
612			$$nam = "wochenende";
613
614		    else if (mktime(0,0,0, date("m",$actual_week_start_date),date("j",$actual_week_start_date)+$k-1,date("Y",$actual_week_start_date)) ==
615			     mktime(0,0,0, date("m",time()),date("j",time()),date("Y",time())))
616			$$nam = "heute";
617		    else {
618				$$nam = "tab";
619			}
620		}
621		else $$nam = $klasse[$k]["$zeits"];
622	    }
623
624	    if (!isset($klasse[0]["$zeits"])) $klasse7 = "wochenende";
625	    else $klasse7 = $klasse[0]["$zeits"];
626
627		// add some checking for content here KFISH
628	    if (($t >= $start_time && $t < $end_time) || (isset($week[1][$zeits]) && $week[1][$zeits] != "") || (isset($week[2][$zeits]) && $week[2][$zeits] != "") || (isset($week[3][$zeits]) && $week[3][$zeits] != "") || (isset($week[4][$zeits]) && $week[4][$zeits] != "") || (isset($week[5][$zeits]) && $week[5][$zeits] != "") || (isset($week[6][$zeits]) && $week[6][$zeits] != "") || (isset($week[0][$zeits]) && $week[0][$zeits] != "") ){
629		$zeile = array( "von" => date($timemask, $t)."&nbsp;-&nbsp;".date($timemask, $t+$interval_sec),
630				"mon" => isset($week[1][$zeits]) ? $week[1][$zeits] : "",
631				"tue" => isset($week[2][$zeits]) ? $week[2][$zeits] : "",
632				"wed" => isset($week[3][$zeits]) ? $week[3][$zeits] : "",
633				"thu" => isset($week[4][$zeits]) ? $week[4][$zeits] : "",
634				"fri" => isset($week[5][$zeits]) ? $week[5][$zeits] : "",
635				"sat" => isset($week[6][$zeits]) ? $week[6][$zeits] : "",
636				"sun" => isset($week[0][$zeits]) ? $week[0][$zeits] : "",
637				"klass2" => $klasse1,
638				"klass3" => $klasse2,
639				"klass4" => $klasse3,
640				"klass5" => $klasse4,
641				"klass6" => $klasse5,
642				"klass7" => $klasse6,
643				"klass8" => $klasse7,
644				/// NATYS ///
645				"bg_klass2"	=>	$bg_klasse1,
646				"bg_klass3"	=>	$bg_klasse2,
647				"bg_klass4"	=>	$bg_klasse3,
648				"bg_klass5"	=>	$bg_klasse4,
649				"bg_klass6"	=>	$bg_klasse5,
650				"bg_klass7"	=>	$bg_klasse6,
651				"bg_klass8"	=>	$bg_klasse7
652				);
653				/////////////
654		$smarty -> append("cw", $zeile);
655		//print_r($zeile);
656		//echo "<BR>---<BR>";
657	}
658	}
659
660
661
662    $kalender  = get_monthview_static( $date, $_SESSION['calendar_year'], $_SESSION['calendar_month']);
663    $feiertag  = "(" . get_celebrate_days($date, $holitemp) .	")";
664    if ($feiertag == "()") $feiertag = "";
665    $gestern  = $date - 3600*168;
666    $morgen   = $date + 3600*168;
667
668    // wml-stuff -----------------------
669    if($myEnv["output"]=="wml"){
670	for($w=-5;$w<5;$w++)  {
671	    $d=$date +($w*3600*168);
672	    $skw["date"]=$d;
673	    $skw["kw"]=get_weeknumber($d);
674	    $smarty->append('skw', $skw);
675	}
676    }
677    //----------------------------------
678
679//// NATYS ////
680/*
681* calweek : texte "semaine n�"
682* cur_week : N� de semaine actuelle
683*
684*/
685///////////////
686
687    $weiter = "<a class=\"navlink\" href=\"view_avail.php?action=view&date=$morgen&parties=$parties&appointment_duration=".(mktime(0,0,0,1,1,1971)+$duration)."&".SID."\" style=\"text-decoration:none;\">" . Lang::getLanguageString("forward"). " &gt;&gt;"  . "</a>";
688	$zurueck= "<a class=\"navlink\" href=\"view_avail.php?action=view&date=$gestern&parties=$parties&appointment_duration=".(mktime(0,0,0,1,1,1971)+$duration)."&".SID."\" style=\"text-decoration:none;\">" . "&lt;&lt; " . Lang::getLanguageString("back"). "</a>";
689    $text     = Lang::getLanguageString("calweek")." " . get_weeknumber($date) . "&nbsp;:&nbsp;&nbsp; $wst_d - $wen_d";
690
691	$smarty->assign('duration_label',date("H:i",($duration+mktime(0,0,0, 1, 1,1971))));
692    if ($duration>0) $show_duration = TRUE;
693	else $show_duration = FALSE;
694    $smarty->assign("show_duration",$show_duration);
695
696	$smarty->assign('SID', SID);
697    $smarty->assign('cur_week', "$wst_d-$wen_d");
698    $smarty->assign('header_date', $text);
699    $smarty->assign('first_header',Lang::getLanguageString("gentemp_view_avail"));
700	$smarty->assign('kalender', $kalender);
701    $smarty->assign('gestern', $gestern);
702    $smarty->assign('morgen', $morgen);
703    $smarty->assign('nav_links', $zurueck);
704    $smarty->assign('nav_rechts', $weiter);
705    $smarty->assign('calendar_owner', $_SESSION['calendarname']);
706    $smarty->assign('date', $date);
707    $smarty->assign('back', "view_avail.php?date=$gestern&".SID);
708    $smarty->assign('weiter', "view_avail.php?date=$morgen&".SID);
709    $smarty->assign('inh', "view_avail.php?action=inh&date=$date&".SID);
710	$smarty->assign("submenu", 5);
711
712    if ($_SESSION["MGW"]->userid == $_SESSION['calendarid']){
713	$smarty->assign('ntext', " Neuer Termin ");
714	$smarty->assign('new', "view_avail.php?action=new&date=$date&".SID);
715    }
716
717    $smarty->assign("timefmt", $_SESSION["MGW"]->settings["timefmt"]);
718    $smarty->display('calendar_view_avail.tpl');
719    $smarty->clear_assign('action');
720
721}
722
723}
724
725
726
727
728
729
730
731
732
733
734
735?>