<?php 
 
/** 
 * Calendário com TTs agendados. 
 *  
 * Este script, gera o calendário, destacando os dias com TTs agendados. 
 *  
 * @author José Filipe Lopes Santos <[email protected]> 
 * @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"); 
} 
 
?> 
 
 |