" function cmp3($a, $b) { if ($a < $b) return "< "; if ($a == $b) return "= "; return "> "; } #Affiche les informations dans l'header print_header($day, $month, $year, $area, $type_session); #Heure de dénut du mois, cela ne sert à rien de reprndre les valeur morningstarts/eveningends $month_start = mktime(0, 0, 0, $month, 1, $year); #Dans quel colonne l'affichage commence: 0 veut dire $weekstarts $weekday_start = (date("w", $month_start) - $weekstarts + 7) % 7; $days_in_month = date("t", $month_start); $month_end = mktime(23, 59, 59, $month, $days_in_month, $year); // Si format imprimable ($_GET['pview'] = 1), on n'affiche pas cette partie if ($_GET['pview'] != 1) { #Table avec areas, rooms, minicals. echo "\n"; #Affiche le calendrier des 3 mois minicals($year, $month, $day, $area, $room, 'month'); echo "
"; $this_area_name = ""; $this_room_name = ""; if (isset($_SESSION['default_list_type']) or ($authentification_obli==1)) $area_list_format = $_SESSION['default_list_type']; else $area_list_format = getSettingValue("area_list_format"); #Affiche une liste déroulante ou bien un liste HTML if ($area_list_format != "list") { echo make_area_select_html('month.php', $area, $year, $month, $day, $session_login); # from functions.inc.php echo make_room_select_html('month.php', $area, $room, $year, $month, $day); } else { echo "
"; echo make_area_list_html('month.php', $area, $year, $month, $day, $session_login); # from functions.inc.php #Montre toutes les rooms du domaine affiché echo ""; make_room_list_html('month.php', $area, $room, $year, $month, $day); echo "
"; } echo "
\n"; } $this_area_name = sql_query1("select area_name from grr_area where id=$area"); $this_room_name = sql_query1("select room_name from grr_room where id=$room"); $this_room_name_des = sql_query1("select description from grr_room where id=$room"); #O,n arrête si il n'y a pas de room dans cet area if ($room <= 0) { echo "

$vocab[no_rooms_for_area]

"; include "trailer.inc.php"; exit; } #Affiche le mois, l'année, la room et l'area if (($this_room_name_des) and ($this_room_name_des!="-1")) $this_room_name_des = " (".$this_room_name_des.")"; else $this_room_name_des = ""; echo "

" . ucfirst(strftime("%B %Y", $month_start)) . " - ".ucfirst($this_area_name)." - $this_room_name $this_room_name_des

\n"; # Show Go to month before and after links #y? are year and month of the previous month. #t? are year and month of the next month. $i= mktime(0,0,0,$month-1,1,$year); $yy = date("Y",$i); $ym = date("n",$i); $i= mktime(0,0,0,$month+1,1,$year); $ty = date("Y",$i); $tm = date("n",$i); // Si format imprimable ($_GET['pview'] = 1), on n'affiche pas cette partie if ($_GET['pview'] != 1) { echo "
<< $vocab[monthbefore]   $vocab[monthafter] >>
"; } if ($debug_flag) echo "

DEBUG: month=$month year=$year start=$weekday_start range=$month_start:$month_end\n"; #Remplace l'espace pour qu'il n'y ai pas de problèmes $all_day = ereg_replace(" ", " ", $vocab["all_day"]); #Récupérer toutes les réservations pour le mois de la room affichée # row[0] = Début de réservation # row[1] = Fin de réservation # row[2] = ID de la réservation # row[3] = Nom de la réservation # row[4] = Auteur de la réservation $sql = "SELECT start_time, end_time, id, name, create_by FROM grr_entry WHERE room_id=$room AND start_time <= $month_end AND end_time > $month_start ORDER by 1"; # Contruit un array des informations de chaques jours dans le mois # Ces informations sont sauvegardées: # d[monthday]["id"][] = ID de chaque réservation, pour le lien # d[monthday]["data"][] = Début et fin pour chaque réservation $res = sql_query($sql); if (! $res) echo sql_error(); else for ($i = 0; ($row = sql_row($res, $i)); $i++) { $sql_creator = "SELECT prenom, nom FROM grr_utilisateurs WHERE login = '$row[4]'"; $res_creator = sql_query($sql_creator); if ($res_creator) $row_user = sql_row($res_creator, 0); if ($debug_flag) echo "
DEBUG: result $i, id $row[2], starts $row[0], ends $row[1]\n"; #Remplir tous les jours ou cette réservation s'opère $t = max((int)$row[0], $month_start); $end_t = min((int)$row[1], $month_end); $day_num = date("j", $t); $midnight = mktime(0, 0, 0, $month, $day_num, $year); while ($t < $end_t) { if ($debug_flag) echo "
DEBUG: Entry $row[2] day $day_num\n"; $d[$day_num]["id"][] = $row[2]; $d[$day_num]["who"][] = $row[3]." - ".$vocab["created_by"].$row_user[0]." ".$row_user[1]; $d[$day_num]["who1"][] = $row[3]; $midnight_tonight = $midnight + 86400; #Début et fin pour tous les jours #9 cas: Début < = ou > minuit # Fin < = ou > minuit #Utiliser ~ (pas -) pour séparer l'heure de début et de fin (MSIE) switch (cmp3($row[0], $midnight) . cmp3($row[1], $midnight_tonight)) { case "> < ": #Début après minuit, fin avant minuit case "= < ": #Début à minuit, fin avant minuit $d[$day_num]["data"][] = date(hour_min_format(), $row[0]) . "~" . date(hour_min_format(), $row[1]); break; case "> = ": #Début après minuit, fin à minuit $d[$day_num]["data"][] = date(hour_min_format(), $row[0]) . "~24:00"; break; case "> > ": #Début après minuit, continue le lendemain $d[$day_num]["data"][] = date(hour_min_format(), $row[0]) . "~====>"; break; case "= = ": #Début à minuit, fin à minuit $d[$day_num]["data"][] = $all_day; break; case "= > ": #Début à minuit, continue le lendemain $d[$day_num]["data"][] = $all_day . "====>"; break; case "< < ": #Début avant aujourdhui, fin avant minuit $d[$day_num]["data"][] = "<====~" . date(hour_min_format(), $row[1]); break; case "< = ": #Début avant aujourd'hui', fin à minuit $d[$day_num]["data"][] = "<====" . $all_day; break; case "< > ": #Début avant aujourd'hui', continue le lendemain $d[$day_num]["data"][] = "<====" . $all_day . "====>"; break; } #Seulement si l'heure de fin est pares minuit, on continue le jour prochain. if ($row[1] <= $midnight_tonight) break; $day_num++; $t = $midnight = $midnight_tonight; } } if ($debug_flag) { echo "

DEBUG: Array of month day data:

\n";
    for ($i = 1; $i <= $days_in_month; $i++)
    {
        if (isset($d[$i]["id"]))
        {
            $n = count($d[$i]["id"]);
            echo "Day $i has $n entries:\n";
            for ($j = 0; $j < $n; $j++)
                echo "  ID: " . $d[$i]["id"][$j] .
                    " Data: " . $d[$i]["data"][$j] . "\n";
        }
    }
    echo "
\n"; } echo "\n"; #Affichage des jours en entête for ($weekcol = 0; $weekcol < 7; $weekcol++) { echo ""; } echo "\n"; #Ne pas tenir compte des jours avant le début du mois for ($weekcol = 0; $weekcol < $weekday_start; $weekcol++) { echo "\n"; } #Afficher le jour du mois for ($cday = 1; $cday <= $days_in_month; $cday++) { if ($weekcol == 0) echo "\n"; echo "\n"; if (++$weekcol == 7) $weekcol = 0; } #Ne tiens pas en compte les journées après le derbier jour du mois if ($weekcol > 0) for (; $weekcol < 7; $weekcol++) { echo "\n"; } echo "
" . day_name(($weekcol + $weekstarts)%7) . "
 
\n"; # Anything to display for this day? if (isset($d[$cday]["id"][0])) { echo ""; $n = count($d[$cday]["id"]); #Affiche l'heure de début et de fin, 2 par lignes avec lien pour voie la reservation #Si il y en a plus que 123, on affiche "..." après le 11ème for ($i = 0; $i < $n; $i++) { if ($i == 11 && $n > 12) { echo " ...\n"; break; } if ($i > 0) echo "
"; else echo " "; echo "". $d[$cday]["data"][$i] . "
" . "" . htmlspecialchars($d[$cday]["who1"][$i]) . "
"; } echo "
"; } echo "
 
\n"; include "trailer.inc.php"; ?>