Login   Register  
PHP Classes
elePHPant
Icontem

File: calendario.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of José Filipe Lopes Santos  >  Ticket Calendar  >  calendario.php  >  Download  
File: calendario.php
Role: Example script
Content type: text/plain
Description: Generates the calendar with marked tickets
Class: Ticket Calendar
View the dates of scheduled tickets on a calendar
Author: By
Last change:
Date: 2013-11-26 10:15
Size: 6,704 bytes
 

Contents

Class file image Download
<?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 => "&nbsp;"));
                
$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 == || $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");
}

?>