Thursday, March 25, 2010

Agenda mensual con calendario en PHP (III)

Esta es la clase para los días.

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