<?php
/** * Calendário com TTs agendados. * * Este script, gera o calendário, destacando os dias com TTs agendados. * * @author José Filipe Lopes Santos <jfilipe@med.up.pt> * @since 06-03-2012 * @version 1.0 - data da últ. actualização: 09-03-2012 * @package tts * @subpackage calendar */
require_once './conf/core.inc'; require_once './lib/calendar.inc'; require_once './lib/cal_tickets.inc'; require_once './lib/functions.inc';
/* ------------------------ oOo ----------------------------- Inicialização de variáveis ------------------------ oOo ----------------------------- */
// parâmetros if (empty($user)) $user = ""; // username / login if (empty($mes)) $mes = date("m"); // mês if (empty($ano)) $ano = date("Y"); // ano
// outras variáveis if (empty($error_msg)) $error_msg = ""; // mensagem de erro if (empty($first_day_of_week)) $first_day_of_week = ""; // 1º dia da semana do mês if (empty($number_of_days)) $number_of_days = ""; // nº de dias do mês if (empty($number_of_weeks)) $number_of_weeks = ""; // nº de semanas do mês if (empty($prev_month)) $prev_month = ""; // mês anterior if (empty($prev_year)) $prev_year = ""; // ano do mês anterior if (empty($next_month)) $next_month = ""; // mês posterior if (empty($next_year)) $next_year= ""; // ano do mês posterior $first_day = 1; // 1ª dia do mês $mes_actual = date("m"); // mês actual $ano_actual = date("Y"); // ano actual $data_actual = date("d-m-Y"); // data actual $ntickets = array(); // array com o número de tickets por dia desse mês
/* ------------------------ oOo ----------------------------- Mensagem de erro ------------------------ oOo ----------------------------- */
if ($ano < 1970) $error_msg = "Essa data não é reconhecida pelo sistema, por ser demasiado antiga"; if ($user == "" && $error_msg == "") $error_msg = "Utilizador não especificado";
/* ------------------------ oOo ----------------------------- Cálculos ------------------------ oOo ----------------------------- */
$calendar = new calendar($mes,$ano);
// obter o dia da semana em que calha o 1ª dia $first_day_of_week = $calendar->getFirstDayWeek();
// obter o nº de dias desse mês $number_of_days = $calendar->getNumberDays();
// obter o nº de semanas do mês $number_of_weeks = $calendar->getNumberofWeeks($first_day,$number_of_days);
// obter o mês anterior list($prev_month,$prev_year) = $calendar->getPreviowsMonth();
// obter o mês posterior list($next_month,$next_year) = $calendar->getNextMonth();
/* ------------------------ oOo ----------------------------- Extrair dados ------------------------ oOo ----------------------------- */
if ($error_msg == ""){ // não ocorreu erro // obter a data formada apenas pelo mês e pelo ano list($error_msg,$date,$format) = getTo_dateParams(array("",$mes,$ano),FORMAT_DATE); if ($error_msg == ""){ // criar uma nova instância da classe para o agendamento de tickets no calendário $calt = new cal_tickets(DSN_CI, $date, $format, $user); // obter o n.º de tickets por dia desse mês-ano $ntickets = $calt->getNumberOfTicketsByDayOfMonth(); // mensagem de erro if ($calt->error_msg != "") $error_msg = $calt->error_msg; } }
/* ------------------------ oOo ----------------------------- Output ------------------------ oOo ----------------------------- */
$t =& new Template_PHPLIB(TEMPLATES_PATH);
$t->setFile(array("note" => "note_with_table.html", "calendar" => "calendar2.html", "row" => "row_calendar.html", "text_link" => "text_link.html"));
if ($error_msg != ""){ //************ mensagem de erro ************ $t->setVar(array("msg" => $error_msg, "rooturl" => ROOT_URL)); $t->pparse("output","note"); } else { // calendário
//************ calendário *********** ///////// mês e ano do calendário ////////// $t->setVar(array("mes2" => $meses_extenso[$mes], "ano2" => $ano, "rooturl" => ROOT_URL)); /////////// dias da semana ///////////// foreach ($dias_semana as $dia_semana => $simbolo) // para cada dia da semana 'S','T',... $t->setVar(array("class".$dia_semana => "cal_semana", "text".$dia_semana => $simbolo)); $t->parse("rows_calendar","row",true); ////////// dias do mês /////////////// $write_day = 1; for ($i=0;$i<$number_of_weeks;$i++){ // para cada semana foreach ($dias_semana as $dia_semana => $simbolo){ // para cada dia da semana // ainda não chegou ao 1ª dia do mês, ou já passou o último dia do mês if (($dia_semana < $first_day_of_week && $i == 0) || $write_day > $number_of_days){ // preenche com espaços em branco $t->setVar(array("class".$dia_semana => "cal_vazio", "text".$dia_semana => " ")); $write_day--; } else { // é para escrecer o dia // preencher com zeros à esquerda $day = str_pad($write_day,2,"0",STR_PAD_LEFT); ///// determinar a classe a usar //// $cls = ""; if (strcmp("$day-$mes-$ano",$data_actual) == 0){ // dia actual if (!empty($ntickets[$day])) $cls = "cal_marked_hoje"; // tem tickets marcados else $cls = "cal_hoje"; } elseif ($dia_semana == 0 || $dia_semana == 6) // sábado e domingo $cls = "cal_dias_extra"; else { // dia normal if (!empty($ntickets[$day])) $cls = "cal_marked"; else $cls = "cal_dias"; } $t->setVar("class".$dia_semana,$cls); ///// Link ////// // depurar link & onclick $link2 = "#"; $onclick2 = "LoadTaskList('user=$user&data=$day-$mes-$ano')"; // template $t->setVar(array("link" => $link2, "class" => "dias", "text" => $day, "onclick" => $onclick2)); $t->parse("text".$dia_semana,"text_link"); } $write_day++; } // linha do calendário $t->parse("rows_calendar","row",true); // se já passou o último dia e já completou a semana, sai fora if ($write_day > $number_of_days) break; } // ************** Navegação (3ª parte do calendário) ************** // depurar links & títulos $onclick_previows = "LoadCalendar('user=$user&mes=$prev_month&ano=$prev_year')"; $onclick_this_month = "LoadCalendar('user=$user&mes=$mes_actual&ano=$ano_actual')"; $onclick_next2 = "LoadCalendar('user=$user&mes=$next_month&ano=$next_year')"; $title_previows = $meses_extenso[$prev_month]." - ".$prev_year; $title_next2 = $meses_extenso[$next_month]." - ".$next_year; // template $t->setVar(array("onclick_prev" => $onclick_previows, "title_prev" => $title_previows, "onclick_mes_actual" => $onclick_this_month, "onclick_next" => $onclick_next2, "title_next" => $title_next2)); // imprimir o output $t->pparse("output","calendar"); }
?>
|