Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/10/2008, 14:49
samu22
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: [aporte]Clase para crear calendarios

Código PHP:

class EventCalendar extends Calendario {
    var 
$chek FALSE;
    
    function 
EventCalendar(){
        
parent::Calendario();
    }
    
    function 
createCalendarioEvent($mes,$anio){
        
$this->chek parent::checkMes($mes);
            if(
$this->chek == TRUE){
                    
$strMes parent::switchMes($mes);
                    
// Creamos todas las variables de control
                    
$diaMes 1;
                    
$numDiaSemana parent::numSemana(1,$mes,$anio);
                    
$ultimoDia parent::getLastDay($mes,$anio);
                    
$currentDay date('d');
                    
$classCalendar $this->classCalendar;
                    
                    
$estruct ='<div class="leftCalend">';
                    
                    
$estruct .= '            <table class="'.$classCalendar.'">
                                                <tr><th align="center" colspan="7" class="mesTit">'
.$strMes.' '.$anio.'</th></tr>
                                                <tr>
                                                    <th>Lun</th>
                                                    <th>Mar</th>
                                                    <th>Mie</th>
                                                    <th>Jue</th>
                                                    <th>Vie</th>
                                                    <th>Sab</th>
                                                    <th>Dom</th>
                                                </tr>
                                                <tr>'
;
                    
                
/*****************************************************************************************************************************
                    GENERAMOS LA PRIMER FILA YA QUE NECESITAMOS SABER EN QUE POSICION VA A EMPEZAR
******************************************************************************************************************************/                                             
                    
for($i=0;$i<7;$i++){
                        
$fechaCompleta $diaMes.'/'.$mes.'/'.$anio;
                            if(
$i<$numDiaSemana){
                                
//si el dia de la semana i es menor que el numero del primer dia de la semana
                                //no pongo nada en la celda  
                                
$estruct .= '
                                                        <td></td>'
;
                            }else{
                                
//ponemos el numero del dia
                                    
global $DbConn;
                                
// buscamos si hay algun evento registrado para la fecha a mostrar
                                
$sql "SELECT idEvento FROM eventos WHERE fecha='".$fechaCompleta."'";
                                
$res $DbConn->query($sql);
                                
$numRows $DbConn->numRows($res);
                                    if(
$numRows==1){
                                        
$idEvento mysql_result($res,0);
                                    }
                                    
        
/**********************************************************************************************
                            COMPROBAMOS SI EXISTE ALGUN EVENTO
                            **********************************
        EN CASO DE EXISTIR Y ES EN LA FECHA ACTUAL APLICA EL ESTILO PERTINENTE PARA ESA OPCION
        ***********************************************************************************************/
        
                                
if($diaMes == $currentDay){
                                    if(
$numRows==1){
                                        
$estruct .= '    
                                                            <td class="currentV"><a href="?ver='
.$idEvento.'">'.$diaMes.'</a></td>';
                                    }else{
                                        
$estruct .= '    
                                                            <td class="currentA"><a href="?addEvent='
.$fechaCompleta.'">'.$diaMes.'</a></td>';    
                                    }
                                }else{
                                    if(
$numRows==1){
                                        
$estruct .= '    
                                                            <td class="ver"><a href="?ver='
.$idEvento.'">'.$diaMes.'</a></td>';
                                    }else{
                                        
$estruct .= '    
                                                            <td class="add"><a href="?addEvent='
.$fechaCompleta.'">'.$diaMes.'</a></td>';    
                                    }                
                                } 
// END ELSE COMPROBACION DE DIA ACTUAL
                                
$diaMes++;
                            } 
//END ELSE COMPROBACION DE EXISTENCIA DE DIAS
                        
                        
// END FOR
                    
                    
$estruct .= '    
                                                </tr>'
;
/*****************************************************************************************************************************
                                        GENERAMOS LAS FILAS QUE FALTAN
******************************************************************************************************************************/                                                
                    
$setPos 0;
                    
//recorremos los demas dias
                    
while($diaMes <= $ultimoDia){
                    
$fechaCompleta $diaMes.'/'.$mes.'/'.$anio;
                        
//si empieza la semana escribimos una nueva linea
                        
if ($setPos == 0){
                            
$estruct .= '<tr>';
                        }
                        
// buscamos si hay algun evento registrado para la fecha a mostrar
                            
$sql "SELECT idEvento FROM eventos WHERE fecha='".$fechaCompleta."'";
                            
$res $DbConn->query($sql);
                            
$numRows $DbConn->numRows($res);
                                if(
$numRows==1){
                                    
$idEvento mysql_result($res,0);
                                }    
                        if(
$diaMes == $currentDay){
                                if(
$numRows==1){
                                    
$estruct .= '    
                                                        <td class="currentV"><a href="?ver='
.$idEvento.'">'.$diaMes.'</a></td>';
                                }else{
                                    
$estruct .= '    
                                                        <td class="currentA"><a href="?addEvent='
.$fechaCompleta.'">'.$diaMes.'</a></td>';    
                                }
                            }else{
                                if(
$numRows==1){
                                    
$estruct .= '    
                                                        <td class="ver"><a href="?ver='
.$idEvento.'">'.$fechaCompleta.'</a></td>';
                                }else{
                                    
$estruct .= '    
                                                        <td class="add"><a href="?addEvent='
.$fechaCompleta.'">'.$diaMes.'</a></td>';    
                                }                
                            }
                            
$diaMes++;
                            
$setPos++;
                        
//chequeamos que no si setPos llego al final de la fila
                        
if ($setPos == 7){
                            
$setPos 0;
                            
$estruct .= '</tr>';
                        }
                    
                    }
/*****************************************************************************************************************************
******************************************************************************************************************************/    
                    
$Prev $this->getPrevMont($mes,$anio);
                    
$Next $this->getNextMont($mes,$anio);
                    
$estruct .= '
                                </tr>
                                <tr>
                                    <td><a href="?newMont='
.$Prev[0].'&newYear='.$Prev[1].'"> <img src="'.ROOT_IMG.'calendario/prevBtn.jpg"></a></td>
                                    <td colspan="5"></td>
                                    <td><a href="?newMont='
.$Next[0].'&newYear='.$Next[1].'"> <img src="'.ROOT_IMG.'calendario/nextBtn.jpg"></a></td>
                                </tr>
                                    </table>
                                </div>    
                    '
;
                    echo 
$estruct;
                    
            }
    }

    function 
getPrevMont($mes,$anio){
        
$mesAnt $mes -1;
        
$anioAnt $anio;
        if(
$mesAnt == 0){
            
$mesAnt =12;
            
$anioAnt $anioAnt -1;
            }
        
$data_prev[0]=$mesAnt;
        
$data_prev[1]=$anioAnt;
        return 
$data_prev;
    }
    function 
getNextMont($mes,$anio){
        
$mesNext $mes +1;
        
$anioNext $anio;
        if (
$mesNext == 13){
            
$mesNext 1;
            
$anioNext++;
        }
        
$data_next[0] = $mesNext;
        
$data_next[1] = $anioNext;
        return 
$data_next;
    }
    
    function 
getDataEvent($idEventoE){
        global 
$DbConn;
        
        
$sql "SELECT * FROM eventos WHERE idEvento='".$idEventoE."'";
        
$res $DbConn->query($sql);
        
$data $DbConn->fetchArray($res);
                
        if (
ereg ("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})"$data['fecha'], $retFecha)) {
            
$data['dia']=$retFecha[1];
            
$data['mes']=$retFecha[2];
            
$data['anio']=$retFecha[3];
        }
        return 
$data;
    } 
                
    
}    
// end Class 
despues por ejemplo yo lo vizualice temporalmente asi

Código PHP:

$EventCalendar 
= new EventCalendar();
            
        
            
$mesAct =strftime('%m');
            
$anioAct =strftime('%Y');
        
        if(
$_GET['newMont'] || $_GET['newYear']){
            
$mesAct $_GET['newMont'];
            
$anioAct $_GET['newYear'];
        }    
        
            
        if(
$_GET['ver']){
            
$data $EventCalendar->getDataEvent($_GET['ver']);
            
$mesAct $data['mes'];
            
$anioAct $data['anio'];
            
        }    
                
        
$EventCalendar->createCalendarioEvent($mesAct,$anioAct);
        
        if(
$_GET['ver']){
            echo 
createEditEvent($data);
        }