En este caso lo he limitado a un evento por día pero usando un array se puede modificar para recoger varios eventos por día.
/* Clase Dia */
class Dia
{
/* Miembros */
private $perteneceAlMes; //Indica si pertenece al mes que muestra en el calendario
private $numDia; //Número del día en el mes
private $diaSemana; //Número del día de la semana
private $evento; //Objeto de la clase evento que contiene los datos asociados a un evento
private $hayEvento;
/* Constructor */
public function __construct($diaSemana, $diaActual, $perteneceAlMes)
{
//Pertenece al mes
$this->setPerteneceAlMes($perteneceAlMes);
//Día del mes
if(!$perteneceAlMes)
{
$this->setNumDia(-1);
}
else
{
$this->setNumDia($diaActual);
}
//Día de la semana
$this->setDiaSemana($diaSemana);
//En principio no hay ningún evento
$this->setHayEvento(false);
}
/* Métodos de acceso */
public function setHayEvento($hayEvento)
{
$this->hayEvento = $hayEvento;
}
public function getHayEvento()
{
return $this->hayEvento;
}
public function setPerteneceAlMes($perteneceAlMes)
{
$this->perteneceAlMes = $perteneceAlMes;
}
public function getPerteneceAlMes()
{
return $this->perteneceAlMes;
}
public function setNumDia($numDia)
{
$this->numDia = $numDia;
}
public function getNumDia()
{
return $this->numDia;
}
public function setDiaSemana($diaSemana)
{
$this->diaSemana = $diaSemana;
}
public function setEvento($evento)
{
$this->evento = $evento;
$this->setHayEvento(true);
}
public function getEvento()
{
return $this->evento;
}
public function muestraEvento()
{
$this->evento->muestraEvento();
}
/* Métodos */
/* Muestra el HTML correspondiente a un día */
public function muestraDia()
{
//Si el día pertenece al mes
if($this->getPerteneceAlMes())
{
//Si hay un evento en el día
if($this->getHayEvento())
{
$numDia = $this->getNumDia();
printf( "<td class =\"hayEvento\"<a href=\"#\" onClick=\"verEvento(%d)\">
%d</a></td>\n",
$numDia, $numDia );
}
//Si no lo hay
else
{
printf( "<td class=\"noHayEvento\">%d</td>\n", $this->getNumDia() );
}
}
//Si el día no pertenece al mes
else
{
printf("<td></td>\n");
}
}
}
No comments:
Post a Comment