mes=$mes; $this->anio=$anio; $this->diasEspeciales=$diasEsp; if(strpos($back,"?")>0) $this->back=$back."&"; else $this->back=$back."?"; $this->locale=$locale; $this->usuario=$usuario; $this->hexadecimales = array(); //calculo el mes y ano del mes anterior $mes_anterior = $mes - 1; $ano_anterior = $anio; if ($mes_anterior==0) { $ano_anterior--; $mes_anterior=12; } $this->mesAnt=$mes_anterior; $this->anioAnt=$ano_anterior; //calculo el mes y ano del mes siguiente $mes_siguiente = $mes + 1; $ano_siguiente = $anio; if ($mes_siguiente==13) { $ano_siguiente++; $mes_siguiente=1; } $this->mesSig=$mes_siguiente; $this->anioSig=$ano_siguiente; } function getRellenable($parte){ $tabla=$this->htmlCabecera("500"); //Variable para llevar la cuenta del dia actual $dia_actual = 1; //calculo el numero del dia de la semana del primer dia $numero_dia = que_dia_de_semana(1,$this->mes,$this->anio); //calculo el ltimo dia del mes $ultimo_dia = verifica_long_mes($this->mes,$this->anio); /* * PRIMERA FILA */ $semana= ""; for ($i=0;$i<7;$i++) { $horasJob="0"; if(array_key_exists($dia_actual,$parte)){ $horasJob=$parte[$dia_actual]; } if($horasJob=="P"){ $textoDia=""; } else { $textoDia=""; } if ($i < $numero_dia) { //si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda $dia = ""; } else { $dia="diasEspeciales)){ //Si es dia antes de alta, no poner bgcolor if($this->diasEspeciales[$dia_actual]!="7") $dia.=" bgcolor=\"".$this->leyenda($this->diasEspeciales[$dia_actual])."\""; if(($this->diasEspeciales[$dia_actual]=="3") || ($this->diasEspeciales[$dia_actual]=="4") || ($this->diasEspeciales[$dia_actual]=="7") || ($this->diasEspeciales[$dia_actual]=="5")){ $textoDia=""; } } if($this->esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) $dia.=" bgcolor=\"".$this->leyenda("1")."\""; $dia.=" align=\"center\" valign=\"top\" style=\"padding:0px; margin:0px\">
".$dia_actual."
".$textoDia."
"; $dia_actual++; } $semana.=$dia; } $tabla.=$semana; /* * RESTO DE FILAS */ $numero_dia = 0; while ($dia_actual <= $ultimo_dia) { $horasJob="0"; if(array_key_exists($dia_actual,$parte)){ $horasJob=$parte[$dia_actual]; } if($horasJob=="P"){ $textoDia=""; } else { $textoDia=""; } //si estamos a principio de la semana escribo el if ($numero_dia == 0) $semana=""; //si es el ultimo de la semana, me pongo al principio de la semana y escribo el $dia="diasEspeciales)){ //Si es dia antes de alta, no poner bgcolor if($this->diasEspeciales[$dia_actual]!="7") $dia.=" bgcolor=\"".$this->leyenda($this->diasEspeciales[$dia_actual])."\""; if(($this->diasEspeciales[$dia_actual]=="3") || ($this->diasEspeciales[$dia_actual]=="4") || ($this->diasEspeciales[$dia_actual]=="7") || ($this->diasEspeciales[$dia_actual]=="5")){ $textoDia=""; } } if($this->esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) $dia.=" bgcolor=\"".$this->leyenda("1")."\""; $dia.=" align=\"center\" valign=\"top\" style=\"padding:0px; margin:0px\">
".$dia_actual."
".$textoDia."
"; $semana.=$dia; $dia_actual++; $numero_dia++; if ($numero_dia == 7) { $numero_dia = 0; $semana.=""; $tabla.=$semana; } } /* * FINAL niLTIMA FILA */ if($numero_dia>0){ for ($i=$numero_dia;$i<7;$i++) { $semana.= ""; } $tabla.=$semana; } $tabla.=""; return $tabla; } function getMostrable($parte){ $tabla=$this->htmlCabecera("500"); //Variable para llevar la cuenta del dia actual $dia_actual = 1; //calculo el numero del dia de la semana del primer dia $numero_dia = que_dia_de_semana(1,$this->mes,$this->anio); //calculo el ltimo dia del mes $ultimo_dia = verifica_long_mes($this->mes,$this->anio); //escribo la primera fila de la semana //
14
$semana= ""; for ($i=0;$i<7;$i++) { $horasJob="0"; if(array_key_exists($dia_actual,$parte)){ $horasJob=$parte[$dia_actual]; } $textoDia=$horasJob; if ($i < $numero_dia) { //si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda $dia = ""; } else { $dia="diasEspeciales)){ //Si es dia antes de alta, no poner bgcolor if($this->diasEspeciales[$dia_actual]!="7") $dia.=" bgcolor=\"".$this->leyenda($this->diasEspeciales[$dia_actual])."\""; if(($this->diasEspeciales[$dia_actual]=="3") || ($this->diasEspeciales[$dia_actual]=="4") || ($this->diasEspeciales[$dia_actual]=="7") || ($this->diasEspeciales[$dia_actual]=="5")){ $textoDia=""; } } if($this->esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) $dia.=" bgcolor=\"".$this->leyenda("1")."\""; $dia.=" align=\"center\" valign=\"top\" style=\"padding:0px; margin:0px\">
".$dia_actual."
".$textoDia."
"; $dia_actual++; } $semana.=$dia; } $tabla.=$semana; //recorro todos los dems das hasta el final del mes $numero_dia = 0; while ($dia_actual <= $ultimo_dia) { $horasJob="0"; if(array_key_exists($dia_actual,$parte)){ $horasJob=$parte[$dia_actual]; } $textoDia=$horasJob; if ($numero_dia == 0) $semana=""; $dia="diasEspeciales)){ //Si es dia antes de alta, no poner bgcolor if($this->diasEspeciales[$dia_actual]!="7") $dia.=" bgcolor=\"".$this->leyenda($this->diasEspeciales[$dia_actual])."\""; if(($this->diasEspeciales[$dia_actual]=="3") || ($this->diasEspeciales[$dia_actual]=="4") || ($this->diasEspeciales[$dia_actual]=="7") || ($this->diasEspeciales[$dia_actual]=="5")){ $textoDia=""; } } if($this->esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) $dia.=" bgcolor=\"".$this->leyenda("1")."\""; $dia.=" align=\"center\" valign=\"top\" style=\"padding:0px; margin:0px\">
".$dia_actual."
".$textoDia."
"; $semana.=$dia; $dia_actual++; $numero_dia++; if ($numero_dia == 7) { $numero_dia = 0; $semana.=""; $tabla.=$semana; } } //Comprobando terminar el calendario del mes if($numero_dia>0){ for ($i=$numero_dia;$i<7;$i++) { $semana.= ""; } $tabla.=$semana; } $tabla.=""; return $tabla; } function getSoliVacaciones($mes){ $tabla=$this->htmlCabecera("500"); //Variable para llevar la cuenta del dia actual $dia_actual = 1; //calculo el numero del dia de la semana del primer dia $numero_dia = que_dia_de_semana(1,$this->mes,$this->anio); //calculo el ltimo dia del mes $ultimo_dia = verifica_long_mes($this->mes,$this->anio); //escribo la primera fila de la semana $semana= ""; for ($i=0;$i<7;$i++) { // Comprobamos si ese dnia es puede marcar if($this->puedeSolicitarVacaciones($dia_actual)) $textoDia=""; elseif ($this->puedeSolicitarAnulacionVacaciones($dia_actual)) { // Puedo pedir anulacinin $textoDia=""; } elseif ($this->puedeSolicitarAnulacionSolicitud($dia_actual)) { $textoDia=""; } else{ $textoDia=""; } if ($i < $numero_dia) { //si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda $dia = ""; } else { $dia="diasEspeciales)){ //Si es dia antes de alta, no poner bgcolor if($this->diasEspeciales[$dia_actual]!="7") $dia.=" bgcolor=\"".$this->leyenda($this->diasEspeciales[$dia_actual])."\""; } if($this->esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) $dia.=" bgcolor=\"".$this->leyenda("1")."\""; $dia.=" align=\"center\" valign=\"top\" style=\"padding:0px; margin:0px\">
".$dia_actual."
".$textoDia."
"; $dia_actual++; } $semana.=$dia; } $tabla.=$semana; //recorro todos los dems das hasta el final del mes $numero_dia = 0; while ($dia_actual <= $ultimo_dia) { // Comprobamos si ese dnia es puede marcar if($this->puedeSolicitarVacaciones($dia_actual)) $textoDia=""; elseif ($this->puedeSolicitarAnulacionVacaciones($dia_actual)) { // Puedo pedir anulacinin $textoDia=""; } elseif ($this->puedeSolicitarAnulacionSolicitud($dia_actual)) { $textoDia=""; }else { $textoDia=""; } if ($numero_dia == 0) $semana=""; $dia="diasEspeciales)){ //Si es dia antes de alta, no poner bgcolor if($this->diasEspeciales[$dia_actual]!="7") $dia.=" bgcolor=\"".$this->leyenda($this->diasEspeciales[$dia_actual])."\""; } if($this->esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) $dia.=" bgcolor=\"".$this->leyenda("1")."\""; $dia.=" align=\"center\" valign=\"top\" style=\"padding:0px; margin:0px\">
".$dia_actual."
".$textoDia."
"; $semana.=$dia; $dia_actual++; $numero_dia++; if ($numero_dia == 7) { $numero_dia = 0; $semana.=""; $tabla.=$semana; } } //Comprobando terminar el calendario del mes if($numero_dia>0){ for ($i=$numero_dia;$i<7;$i++) { $semana.= ""; } $tabla.=$semana; } $tabla.=""; return $tabla; } function getMiniAgenda($diaVer){ $tabla=$this->htmlCabeceraMini($diaVer); //Variable para llevar la cuenta del dia actual $dia_actual = 1; //calculo el numero del dia de la semana del primer dia $numero_dia = que_dia_de_semana(1,$this->mes,$this->anio); //calculo el ltimo dia del mes $ultimo_dia = verifica_long_mes($this->mes,$this->anio); //escribo la primera fila de la semana $semana= ""; for ($i=0;$i<7;$i++) { $diaVista=mktime(0,0,0,$this->mes,$dia_actual,$this->anio); // Comprobamos si ese dnia es puede marcar if ($i < $numero_dia) { //si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda $dia = ""; } else { $dia="anio==date("Y",$diaVer)) && ($this->mes==date("m",$diaVer)) && ($dia_actual==date("j",$diaVer))) { // Es el dnia que estamos viendo $dia.=" class=\"vista\" "; } elseif (($this->anio==date("Y")) && ($this->mes==date("m")) && ($dia_actual==date("j"))) { // Es hoy $dia.=" class=\"hoy\" "; }elseif ($this->esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) { // Es finde $dia.=" bgcolor=\"".$this->leyenda("1")."\""; } $dia.=" align=\"center\" valign=\"top\">mes."&anio=".$this->anio."\">".$dia_actual.""; $dia_actual++; } $semana.=$dia; } $tabla.=$semana; //recorro todos los dems das hasta el final del mes $numero_dia = 0; while ($dia_actual <= $ultimo_dia) { $diaVista=mktime(0,0,0,$this->mes,$dia_actual,$this->anio); if ($numero_dia == 0) $semana=""; $dia="anio==date("Y",$diaVer)) && ($this->mes==date("m",$diaVer)) && ($dia_actual==date("j",$diaVer))) { // Es el dnia que estamos viendo $dia.=" class=\"vista\" "; } elseif (($this->anio==date("Y")) && ($this->mes==date("m")) && ($dia_actual==date("j"))) { // Es hoy $dia.=" class=\"hoy\" "; }elseif ($this->esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) { // Es finde $dia.=" bgcolor=\"".$this->leyenda("1")."\""; } $dia.=" align=\"center\" valign=\"top\">mes."&anio=".$this->anio."\">".$dia_actual.""; $semana.=$dia; $dia_actual++; $numero_dia++; if ($numero_dia == 7) { $numero_dia = 0; $semana.=""; $tabla.=$semana; } } //Comprobando terminar el calendario del mes if($numero_dia>0){ for ($i=$numero_dia;$i<7;$i++) { $semana.= ""; } $tabla.=$semana; } $tabla.=""; return $tabla; } private function htmlCabeceraMini($diaVer){ $nombre_mes = nombre_mes($this->mes); $tabla=""; // Flechas y nombre del mes $fila= ""; if($this->back!="?") $fila.=""; else $fila.=""; $fila.=""; if($this->back!="?") $fila.=""; else $fila.=""; $fila.=""; $tabla.=$fila; // Nombre de los dnias de la semana $diasSemana= "" . " " . " " . " " . " " . " " . " " . " " . ""; $tabla.=$diasSemana; return $tabla; } private function htmlCabecera($tamano){ $nombre_mes = nombre_mes($this->mes); if($tamano=="200") $classe="class=\"miniCalendario\""; else $classe=""; $tabla="
back."mesCal=".$this->mesAnt."&anioCal=".$this->anioAnt."&dia=".date("j",$diaVer)."&mes=".date("m",$diaVer)."&anio=".date("Y",$diaVer)."\">
".$nombre_mes." de ".$this->anio."
back."mesCal=".$this->mesSig."&anioCal=".$this->anioSig."&dia=".date("j",$diaVer)."&mes=".date("m",$diaVer)."&anio=".date("Y",$diaVer)."\">
LMXJVSD
"; // Flechas y nombre del mes $fila= ""; if($this->back!="?") $fila.=""; else $fila.=""; $fila.=""; if($this->back!="?") $fila.=""; else $fila.=""; $fila.=""; $tabla.=$fila; // Nombre de los dnias de la semana $diasSemana= "" . " " . " " . " " . " " . " " . " " . " " . ""; $tabla.=$diasSemana; return $tabla; } function puedeSolicitarVacaciones($dia){ // Comprobamos que el dnia sea posteior a dos desde hoy $diaComprobar = mktime(0,0,0,$this->mes,$dia,$this->anio); $frontera=mktime (0,0,0,date("m"),date("d")+2,date("Y")); if($frontera<$diaComprobar){ // Comprobamso que no sea fin de semana if(!($this->esFestivo($this->usuario->getValor("localidad_trabajo"),date("j",$diaComprobar)))){ //Si se solicita para este anio o para el prniximo dentro del plazo, todo ok: if(($this->anio == date("Y")) || (($this->anio == date("Y") + 1) && (fecha_valida(date("Y")."-12-15") <= 0))){ if(array_key_exists($dia,$this->diasEspeciales)){ if($this->diasEspeciales[$dia]=="2"){ return true; } else { return false; } } else return true; }else return false; }else return false; } else return false; } function puedeSolicitarAnulacionVacaciones($dia){ // Comprobamos que el dnia sea posteior a dos desde hoy $diaComprobar = mktime(0,0,0,$this->mes,$dia,$this->anio); $frontera=mktime (0,0,0,date("m"),date("d")+2,date("Y")); if($frontera<$diaComprobar){ // Comprobamso que no sea fin de semana if(!($this->esFestivo($this->usuario->getValor("localidad_trabajo"),date("j",$diaComprobar)))){ //Si se solicita para este anio o para el prniximo dentro del plazo, todo ok: if(($this->anio == date("Y")) || (($this->anio == date("Y") + 1) && (fecha_valida(date("Y")."-12-15") <= 0))){ if(array_key_exists($dia,$this->diasEspeciales)){ if($this->diasEspeciales[$dia]=="5"){ return true; } else { return false; } } else return false; }else return false; }else return false; } else return false; } function puedeSolicitarAnulacionSolicitud($dia){ // Comprobamos que el dnia sea posteior a 15 desde hoy $diaComprobar = mktime(0,0,0,$this->mes,$dia,$this->anio); $frontera=mktime (0,0,0,date("m"),date("d")+15,date("Y")); if($frontera<$diaComprobar){ // Comprobamos que no sea fin de semana if(!($this->esFestivo($this->usuario->getValor("localidad_trabajo"),date("j",$diaComprobar)))){ //Si se solicita para este anio o para el prniximo dentro del plazo, todo ok: if(($this->anio == date("Y")) || (($this->anio == date("Y") + 1) && (fecha_valida(date("Y")."-12-15") <= 0))){ if(array_key_exists($dia,$this->diasEspeciales)){ if($this->diasEspeciales[$dia]=="3"){ return true; } else { return false; } } else return false; }else return false; }else return false; } else return false; } /** * Asigna los festivos nacionales. * @param $dias - Array con los festivos nacionales. * @throws Lanza varias excepciones para casos no permitidos o de error. */ public function setFestivosNacional($dias){ if($this->usuario->tieneRol(4)){ $this->getFestivosNacional(); //Inserto los nuevos: foreach($dias as $dia){ //Si no estni, lo inserto. if(!in_array($dia, $this->festivosNacional)){ $this->addFestivoNacional($dia); } } //Borro los que ya no estnin: $this->festivosNacional = $this->quitaCeros($this->festivosNacional); $viejos = array_diff($this->festivosNacional, $dias); if(count($viejos) > 0){ $consulta = "DELETE FROM festivos_nacional WHERE id IN ("; foreach($viejos as $viejo){ $fecha = $this->anio."-".$this->mes."-".$viejo; $consulta .= "'".$fecha."',"; } //Quitamos la niltima coma if ($consulta{strlen($consulta) - 1} == ",") $consulta = substr($consulta,0,strlen($consulta) - 1); $consulta .= ")"; $bd = new BD(); if($bd->execQuery($consulta)){ $this->festivosNacional = $dias; }else{ $error = $this->locale['bd']; throw new Exception($error); return false; exit; } } }else{ $error = $this->locale['4043']; throw new Exception($error); return false; exit; } return true; } /** * Aniade un festivo nacional. * @param $dia - dnia a asignar * @return true si se asignni correctamente y false en caso contrario. * @throws Lanza excepcinin si el usuario no tiene permisos o el dnia no es vnilido. */ private function addFestivoNacional($dia){ if($this->usuario->tieneRol(4)){ if(($dia > 0) && ($dia <= 31)){ if($dia < 10){ $dia = $dia * 1; $dia = "0".$dia; } $fecha = $this->anio."-".$this->mes."-".$dia; $consulta = "INSERT INTO festivos_nacional VALUES ('".$fecha."')"; $bd = new BD(); if($bd->execQuery($consulta)){ $this->festivosNacional[] = $dia; }else{ $error = $this->locale['bd']; throw new Exception($error); return false; exit; } }else{ $error = $this->locale['4044']; throw new Exception($error); return false; exit; } }else{ $error = $this->locale['4043']; throw new Exception($error); return false; exit; } return true; } /* * Asigna los festivos locales. * @param $dias - Array con los festivos locales. * @param $localidad - Localidad donde asignar los festivos. * @throws Lanza varias excepciones para casos no permitidos o de error. */ public function setFestivosLocal($dias, $localidad){ if($this->usuario->tieneRol(4)){ $actuales = $this->getFestivosLocal($localidad); //Inserto los nuevos: foreach($dias as $dia){ //Si no estni, lo inserto. if(!in_array($dia, $actuales)){ $this->addFestivoLocal($dia, $localidad); } } //Borro los que ya no estnin: $actuales = $this->quitaCeros($actuales); $viejos = array_diff($actuales, $dias); /*echo "
Actualmente hay:
"; print_r($actuales); echo "
Y tengo que dejar:
"; print_r($dias); echo "
Con lo cual elimino:
"; print_r($viejos);*/ if(count($viejos) > 0){ $consulta = "DELETE FROM festivos_local WHERE localidad = '".$localidad."' AND fecha IN ("; foreach($viejos as $viejo){ $fecha = $this->anio."-".$this->mes."-".$viejo; $consulta .= "'".$fecha."',"; } //Quitamos la niltima coma if ($consulta{strlen($consulta) - 1} == ",") $consulta = substr($consulta,0,strlen($consulta) - 1); $consulta .= ")"; $bd = new BD(); if(!$bd->execQuery($consulta)){ $error = $this->locale['bd']; throw new Exception($error); return false; exit; } } }else{ $error = $this->locale['4043']; throw new Exception($error); return false; exit; } return true; } /** * Aniade un festivo local. * @param $dia - dnia a asignar * @param $localidad - localidad a la que asignar el dnia festivo. * @return true si se asignni correctamente y false en caso contrario. * @throws Lanza excepcinin si el usuario no tiene permisos o el dnia no es vnilido. */ private function addFestivoLocal($dia, $localidad){ if($this->usuario->tieneRol(4)){ if(($dia > 0) && ($dia <= 31)){ if($dia < 10){ $dia = $dia * 1; $dia = "0".$dia; } $fecha = $this->anio."-".$this->mes."-".$dia; $consulta = "INSERT INTO festivos_local (localidad, fecha) VALUES ('".$localidad."', '".$fecha."')"; $bd = new BD(); if(!$bd->execQuery($consulta)){ $error = $this->locale['bd']; throw new Exception($error); return false; exit; } }else{ $error = $this->locale['4044']; throw new Exception($error); return false; exit; } }else{ $error = $this->locale['4043']; throw new Exception($error); return false; exit; } return true; } function getFestivosNacional(){ if($this->festivosNacional == ""){ $this->festivosNacional = array(); $fecha = $this->anio."-".$this->mes; $consulta = "SELECT id FROM festivos_nacional WHERE id LIKE '".$fecha."-%'"; $bd = new BD(); $array = $bd->arrayQuery($consulta, "id"); foreach($array as $elem){ $dia = explode("-", $elem); $this->festivosNacional[] = $dia[2]+0; } } return $this->festivosNacional; } function getFestivosLocal($localidad){ if(!array_key_exists($localidad, $this->festivosLocales)){ $dias = array(); $fecha = $this->anio."-".$this->mes; $consulta = "SELECT fecha FROM festivos_local WHERE fecha LIKE '".$fecha."-%' AND localidad = '".$localidad."'"; $bd = new BD(); $array = $bd->arrayQuery($consulta, "fecha"); foreach($array as $elem){ $dia = explode("-", $elem); $dias[] = $dia[2]; } $this->festivosLocales[$localidad] = $dias; } return $this->festivosLocales[$localidad]; } function esFestivo($localidad, $dia){ $nacional = $this->esFestivoNacional($dia); /*$local = $this->esFestivoLocal($localidad, $dia); $finde = $this->esFinde($dia);*/ $local = false; $finde = false; if(!$nacional && $localidad != ""){ $local = $this->esFestivoLocal($localidad, $dia); if(!$local){ $finde = $this->esFinde($dia); } }else{ $finde = $this->esFinde($dia); } if($nacional || $local || $finde){ return true; }else{ return false; } } function esFestivoNacional($dia){ $festivos = $this->getFestivosNacional(); return in_array($dia, $festivos); } function esFestivoLocal($localidad, $dia){ $festivos = $this->getFestivosLocal($localidad); return in_array($dia, $festivos); } private function esFinde($dia){ $d = date('N', mktime(0,0,0,$this->mes,$dia,$this->anio)); if(($d != 6) && ($d != 7)){ return false; }else{ return true; } } function leyenda($cod){ if(!array_key_exists($cod, $this->hexadecimales)){ $consulta="SELECT hexadecimal FROM leyenda WHERE cod='".$cod."'"; $bd=new BD(); $valor= $bd->getCampo($consulta); $this->hexadecimales[$cod] = $valor; } return $this->hexadecimales[$cod]; } /** * Muestra un calendario configurable, mostrando los festivos nacionales y locales * del usuario. * Si el dnia estni dentro del array $diasEsp, se muestra el texto que hay, sino se deja en blanco * * @param $diasEsp : Array con los dnias, de la forma array("1" => array("color" => "codigo color","texto" => "texto interior")) * @param $tipo (g|p) : g = Grande | p = Pequenio */ function getCalendar($diasEsp,$tipo){ switch ($tipo) { case "p": // Pequenio $tabla = $this->htmlCabecera("200"); break; case "g": // Grande $tabla = $this->htmlCabecera("500"); break; default: // Otro valor = grande $tabla = $this->htmlCabecera("500"); break; } // Variable para llevar la cuenta del dia actual $dia_actual = 1; //calculo el numero del dia de la semana del primer dia $numero_dia = que_dia_de_semana(1,$this->mes,$this->anio); //calculo el ltimo dia del mes $ultimo_dia = verifica_long_mes($this->mes,$this->anio); /* * PRIMERA FILA */ $semana= ""; for ($i=0;$i<7;$i++) { if ($i < $numero_dia) { //si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda $dia = ""; } else { $texto=""; $bgcolor=""; if(array_key_exists($dia_actual,$diasEsp)){ $texto=$diasEsp[$dia_actual]["texto"]; if($diasEsp[$dia_actual]["color"]!="") $bgcolor=" bgcolor=\"".$diasEsp[$dia_actual]["color"]."\""; } $dia="esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) $bgcolor.=" bgcolor=\"".$this->leyenda("1")."\""; $dia.=$bgcolor; $dia.=" align=\"center\" valign=\"top\" style=\"padding:0px; margin:0px\">
".$dia_actual."
".$texto."
"; $dia_actual++; } $semana.=$dia; } $tabla.=$semana; /* * RESTO DE FILAS */ $numero_dia = 0; while ($dia_actual <= $ultimo_dia) { $texto=""; $bgcolor=""; //si estamos a principio de la semana escribo el
if ($numero_dia == 0) $semana=""; //si es el ultimo de la semana, me pongo al principio de la semana y escribo el $dia=""; $semana.=$dia; $dia_actual++; $numero_dia++; if ($numero_dia == 7) { $numero_dia = 0; $semana.=""; $tabla.=$semana; } } /* * FINAL niLTIMA FILA */ if($numero_dia>0){ for ($i=$numero_dia;$i<7;$i++) { $semana.= ""; } $tabla.=$semana; } $tabla.="
back."mes=".$this->mesAnt."&anio=".$this->anioAnt."\">
".$nombre_mes." de ".$this->anio."
back."mes=".$this->mesSig."&anio=".$this->anioSig."\">
".$this->locale['050']."".$this->locale['051']."".$this->locale['052']."".$this->locale['053']."".$this->locale['054']."".$this->locale['055']."".$this->locale['056']."
esFestivo($this->usuario->getValor("localidad_trabajo"),$dia_actual)) $bgcolor.=" bgcolor=\"".$this->leyenda("1")."\""; $dia.=$bgcolor; $dia.=" align=\"center\" valign=\"top\" style=\"padding:0px; margin:0px\">
".$dia_actual."
".$texto."
"; return $tabla; } private function quitaCeros($array){ $res = array(); foreach($array as $elem){ $res[] = $elem + 0; } return $res; } } ?>