KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.62
System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64
User : www ( 80)
PHP Version : 8.3.8
Disable Function : NONE
Directory :  /domains/logicswapweb/aplicaciones/admon/generales/calendario/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/logicswapweb/aplicaciones/admon/generales/calendario/met_calendario.php
<?
/************************************************************
M�TODO: 		dibuja_diasmes
DESCRIPCION: 	dibuja los dias del mes en el calendario
PARAMETROS:		$mes, $ano 	-- mes y a�o seleccionados
				$aplicacion	-- nombre de la aplicaci�n que llama la funci�n 
RETORNA:		
*************************************************************/
function dibuja_diasmes($mes,$ano, $aplicacion){
	$dia_actual = 1; //Variable para llevar la cuenta del dia actual
	$numero_dia = calcula_numero_dia_semana(1,$mes,$ano);//obtiene el numero del dia de la semana del primer dia
	$ultimo_dia = ultimoDia($mes,$ano);//obtiene el �ltimo dia del mes
	//calcula las noticias activas para el mes seleccionado
	$fechaini = $ano.'-'.$mes.'-1';
	$fechafin = $ano.'-'.$mes.'-'.$ultimo_dia;
	$dias=chkmaxnotactC($fechaini, $fechafin,$aplicacion);
	$maxnotact= retmaxacti($aplicacion); //obtiene el parametro de maximo de noticias o eventos
	//escribe la primera fila de la semana
	echo '<tr align="center" valign="middle" class="dia">';
	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 pone nada en la celda
			echo '<td height="14">&nbsp;</td>';
		} else {
			if($dias[$dia_actual]>0 && $dias[$dia_actual] < $maxnotact)
				if($dias[$dia_actual] >= $maxnotact-3 && $dias[$dia_actual] < $maxnotact)	
					echo '<td height="14" class="diaEvento" bgcolor="#003399">
							<a style="cursor:hand " onClick="llama_paginaC('.$mes.','.$ano.','.$dia_actual.','.$aplicacion.') ">'.$dia_actual.'</a></td>';
				else									
					echo '<td height="14" class="diaEvento" >
							<a style="cursor:hand " onClick="llama_paginaC('.$mes.','.$ano.','.$dia_actual.','.$aplicacion.') ">'.$dia_actual.'</a></td>';
			elseif ($dias[$dia_actual] >= $maxnotact)
				echo '<td height="14" bgcolor="#FF9900" class="topeEvento">
						<a style="cursor:hand " onClick="llama_paginaC('.$mes.','.$ano.','.$dia_actual.','.$aplicacion.')">'.$dia_actual.'</a></td>';
			else
				echo '<td height="14">'.$dia_actual.'</td>';
			$dia_actual++;
		}
	}
	echo "</tr>";
	//recorro todos los dem�s d�as hasta el final del mes
	$numero_dia = 0;
	while ($dia_actual <= $ultimo_dia){
		if ($numero_dia == 0) //si estamos a principio de la semana escribo el <TR>
			echo '<tr align="center" valign="middle" class="dia">';
		if($dias[$dia_actual]>0 && $dias[$dia_actual] < $maxnotact)
			if($dias[$dia_actual] >= $maxnotact-3 && $dias[$dia_actual] < $maxnotact)	
				echo '<td height="14" class="diaEvento" bgcolor="#003399">
						<a style="cursor:hand " onClick="llama_paginaC('.$mes.','.$ano.','.$dia_actual.','.$aplicacion.') ">'.$dia_actual.'</a></td>';
			else									
				echo '<td height="14" class="diaEvento" >
						<a style="cursor:hand " onClick="llama_paginaC('.$mes.','.$ano.','.$dia_actual.','.$aplicacion.') ">'.$dia_actual.'</a></td>';
		elseif ($dias[$dia_actual] >= $maxnotact)
			echo '<td height="14" bgcolor="#FF9900" class="topeEvento">
					<a style="cursor:hand " onClick="llama_paginaC('.$mes.','.$ano.','.$dia_actual.','.$aplicacion.') ">'.$dia_actual.'</a></td>';
		else
			echo '<td height="14">'.$dia_actual.'</td>';
		$dia_actual++;
		$numero_dia++;
		if ($numero_dia == 7){ 
			$numero_dia = 0;
			echo "</tr>";
		}
	}
	//compruebo que celdas me faltan por escribir vacias de la �ltima semana del mes
	for ($i=$numero_dia;$i<7;$i++){
		echo '<td height="14">&nbsp;</td>';
	}
	echo "</tr>";
	echo "</table>";
}
/************************************************************
M�TODO: 		dibuja_calendario
DESCRIPCION: 	dibuja el calendario para eventos y noticias
				tiene en cuenta la informaci�n depositada en la base de datos
PARAMETROS:		$mes, $ano 	-- mes y a�o seleccionados
				$aplicacion	-- nombre de la aplicaci�n que llama la funci�n 
RETORNA:		
*************************************************************/
function dibuja_calendario($mes, $ano, $aplicacion, $url){
	//inicio tabla general que contendr� el calendario
	echo '<table width="217" height="169" border="0" cellpadding="0" cellspacing="0">
			<tr><td width="217" height="169" valign="top">';
	//dibuja encabezado
	echo '<table width="192" border="0" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF">
			<tr><td><img src="img/calendario/top.gif" width="210" height="23"></td></tr></table>';
	//dibuja linea de mes y a�o seleccionado
	$mes_anterior = $mes - 1;
	$ano_anterior = $ano;
	if ($mes_anterior==0){
		$ano_anterior--;
		$mes_anterior=12;
	}
	$mes_siguiente = $mes + 1;
	$ano_siguiente = $ano;
	if ($mes_siguiente==13){
		$ano_siguiente++;
		$mes_siguiente=1;
	}
	$nombremes=fncNombreMes($mes);
	echo '	  <table width="210" border="0" cellspacing="0" cellpadding="0">
			<tr>
			  <td width="15"><img src="img/calendario/anoLeftCorner.gif" width="15" height="20"></td>
			  <td width="22"><a onClick="envia_datos('.$mes_anterior .','.$ano_anterior.')">
			  <img src="img/calendario/prevMonth.gif" width="22" height="20" style="cursor:hand "></a></td>
			  <td width="136" background="img/calendario/mes_bg.gif"><div align="center" class="anioMes">';
	echo $nombremes.' de '.$ano;	
	echo '	</div></td>
			  <td width="22" align="right"><a onClick="envia_datos('.$mes_siguiente .','.$ano_siguiente.')">
			  <img src="img/calendario/nextMonth.gif" width="22" height="20" style="cursor:hand "></a></td>
			  <td width="15" align="right"><img src="img/calendario/anoRightCorner.gif" width="15" height="20"></td>
			</tr>
		  </table>';
	//dibuja linea de selects de mes y a�o
	echo'<table width="215" border="0" cellpadding="0" cellspacing="0" >
			<tr ><td width="7" align="right"><img src="img/calendario/leftCorner2.gif" width="5" height="27"></td>
				  <td width="89"  background="img/calendario/listAnioRight.gif">';
	fncMuestraNombreMes($mes, 'mes_calendario'); //muestra el select del mes
	echo '		</td>
				  <td width="34" align="center" background="img/calendario/listAnioRight.gif"></td>
				  <td width="73" align="left" background="img/calendario/listAnioRight.gif">';
	fncMuestraAno($ano, 'ano_calendario');
	echo'			  </td>
				  <td width="12"><img src="img/calendario/rightCorner.gif" width="5" height="27"></td>
				</tr>
			  </table>';		
	//dibuja la linea con la inicial del dia
	echo '
		  <table width="192" border="0" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF">
			<tr>
			  <td width="30"><img src="img/calendario/01lunes.gif" width="30" height="20"></td>
			  <td width="30"><img src="img/calendario/01martes.gif" width="30" height="20"></td>
			  <td width="30"><img src="img/calendario/01miercoles.gif" width="30" height="20"></td>
			  <td width="30"><img src="img/calendario/01Jueves.gif" width="30" height="20"></td>
			  <td width="30"><img src="img/calendario/01viernes.gif" width="30" height="20"></td>
			  <td width="12"><img src="img/calendario/01sabado.gif" width="30" height="20"></td>
			  <td width="30"><img src="img/calendario/01domingo.gif" width="30" height="20"></td>
			</tr>
		  </table>';		
	//dibuja los dia del mes
	echo '<table width="209" border="1" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC" bgcolor="#E8E8E8">';
	dibuja_diasmes($mes,$ano, $aplicacion);	    
	echo '</table>';
	//fin tabla general que contendr� el calendario
	echo '</td></tr></table>';

}
/************************************************************
M�TODO: 		retmaxacti
DESCRIPCION: 	retorna el parametro de maximo de noticias o eventos 	
PARAMETROS:		
	$aplicacion		nombre de la aplicaci�n que llama la funci�n
					los valores posibles son 0 (noticias), 1 (eventos )
RETORNA:	$maxacti
*************************************************************/
function retmaxacti($aplicacion){
//plantea la consulta de acuerdo a la aplicaci�n que llama
	if($aplicacion== 0)
		$consulta = "	select  parametrica_id as id, parametrica_valor as valor
						from 	parametrica
						where 	parametrica_grupo='nt_maxnot'
						and     parametrica_id='activas' 
						order by id desc";
	if($aplicacion== 1)
		$consulta = "	select  parametrica_id as id, parametrica_valor as valor
						from 	parametrica
						where 	parametrica_grupo='ev_maxeve'
						and     parametrica_id='activos' 
						order by id desc";
	$resultado = consultar($consulta); 
	$filas = mysql_fetch_assoc($resultado);
	return $filas['valor'];
}
/************************************************************
M�TODO: 		chkmaxnotactC
DESCRIPCION: 	chequea que el n�mero de noticias activas en un periodo 	
PARAMETROS:		rango de fechas en que la noticia estar� activa
	$fechapublic: 	fecha inicial del rango
	$fechafin:    	fecha final del rango -- corresponde a un mes
	$aplicacion		nombre de la aplicaci�n que llama la funci�n
					los valores posibles son noticias, eventos 
RETORNA:	
*************************************************************/
function chkmaxnotactC($fechapublic, $fechafin, $aplicacion){
	$maxnotact= retmaxacti($aplicacion); //obtiene el parametro de maximo de noticias o eventos
	$indmaxnotactexc='FALSE';//asume que ning�n dia se pasa del n�mero de noticias activas
//selecciona todas las noticias que se traslapan con el periodo dado
//condiciones:	1. fechapublic esta en  [bdfechapublic, bdfechafin] --> fechapublic  >= bdfechapublic  && fechapublic   <= bdfechafin
//				2. fechafin    esta en  [bdfechapublic, bdfechafin] --> fechafin     >= bdfechapublic  && fechafin      <= bdfechafin
//				3. bdfechapublic esta en  [fechapublic, fechafin]   --> bdfechapublic >= fechapublic   && bdfechapublic <= fechafin
//				4. bdfechafin    esta en  [fechapublic, fechafin]   --> bdfechafin    >= fechapublic   && bdfechafin    <= fechafin
//plantea la consulta de acuerdo a la aplicaci�n que llama
	if($aplicacion== 0)
		$consulta = "select noticia_id, noticia_fechapublic as fechapublic, noticia_fechafin as fechafin
					from   noticias
					where   ('$fechapublic'      >= noticia_fechapublic and '$fechapublic' <= noticia_fechafin)
					or		('$fechafin'         >= noticia_fechapublic and '$fechafin'    <= noticia_fechafin)
					or		(noticia_fechafin    >= '$fechapublic' and noticia_fechafin    <= '$fechafin')
					or     	(noticia_fechapublic >= '$fechapublic' and noticia_fechapublic <= '$fechafin')";
	if($aplicacion== 1)
		$consulta = "select evento_id, evento_fechapubinic as fechapublic, evento_fechapubfin as fechafin
					from   eventos
					where   ('$fechapublic'      >= evento_fechapubinic and '$fechapublic' <= evento_fechapubfin)
					or		('$fechafin'         >= evento_fechapubinic and '$fechafin'    <= evento_fechapubfin)
					or		(evento_fechapubfin    >= '$fechapublic' and evento_fechapubfin    <= '$fechafin')
					or     	(evento_fechapubinic >= '$fechapublic' and evento_fechapubinic <= '$fechafin')";
	$resultado = consultar($consulta); 
//para cada dia del periodo se cuenta el n�mero de noticias activas
	//carga matriz con:cada fila corresponder� a las fechas de una noticia
	//                 cada columna corresponde a cada dia 
	//                 cada celda contendr� (1)activo o (0) no dentro del rango
	if($resultado)  $cantidad_registros = mysql_num_rows($resultado);
	//convierte fechas a dias para facilitar la comparaci�n
		list($ano, $mes, $dia) = explode('-',$fechapublic);
		$fechap = $ano*365+$mes*30+$dia;
		list($ano, $mes, $dia) = explode('-',$fechafin);
		$fechaf = $ano*365+$mes*30+$dia;
	if($cantidad_registros>0){
		//carga matriz
		$fnoticia=0;//iniciliza apuntador de filas 
		while($filas = mysql_fetch_assoc($resultado)){//para cada una de las noticias
			//convierte fechas de la base de datos a dias para facilitar la comparaci�n
				list($ano, $mes, $dia) = explode('-',$filas['fechapublic']);
				$bdfechap = $ano*365+$mes*30+$dia;
				list($ano, $mes, $dia) = explode('-',$filas['fechafin']);
				$bdfechaf = $ano*365+$mes*30+$dia;
			$fecha =  $fechap;//inicializa apuntador de fechas
			$cdiactivo=0;//iniciliza apuntador de columnas
			//carga la fila de la notica activa con 1 � 0
			while($fecha <= $fechaf){
				if($fecha >= $bdfechap && $fecha <= $bdfechaf) 	//si la fecha es activa
						$matnotact[$fnoticia][$cdiactivo]=1;
				else	$matnotact[$fnoticia][$cdiactivo]=0;
				$cdiactivo++;//incrementa el apuntador de las columnas
				$fecha++;//incrementa el apuntador de fechas
			}
			$fnoticia++; //incrementa el apuntador de las filas
		}//fin while($filas = mysql_fetch_assoc($resultado))
		////para cada dia calcula el n�mero de noticias activas
			$filas=$cantidad_registros; $columnas=$fechaf-$fechap;//calcula filas y columnas de la matriz
			$ptrdias=1;//apuntador para arreglo d dias  exceden noticias activas
			for($i=0;$i<=$columnas;$i++){
				$suma=0; 
				for($j=0;$j<$filas;$j++)
					$suma+=$matnotact[$j][$i]; //calcula el n�mero de noticias activas para un dia
				$dias[$ptrdias]=$suma; //guarda el n�mero de noticias activas cada dia
				$ptrdias++;
			}//fin  for($i=0;$i<=$columnas;$i++)
	}//fin if($cantidad_registros>0)
	else{//llena de ceros la matriz 
		$ptrdias=$fechaf-$fechap;//calcula el numero de dias del mes
		for($i=1;$i<=$ptrdias+1;$i++)
			 $dias[$i]=0;
	}
	
	return $dias;
}
function fncNombreMes($mes){
	switch($mes){
		case '1': 	$nmes='Enero'	;break;
		case '2': 	$nmes='Febrero'	;break;
		case '3': 	$nmes='Marzo'	;break;
		case '4': 	$nmes='Abril'	;break;
		case '5': 	$nmes='Mayo'	;break;
		case '6': 	$nmes='Junio'	;break;
		case '7': 	$nmes='Julio'	;break;
		case '8': 	$nmes='Agosto'	;break;
		case '9': 	$nmes='Septiembre'	;break;
		case '10': 	$nmes='Octubre'		;break;
		case '11': 	$nmes='Noviembre'	;break;
		case '12': 	$nmes='Diciembre'	;break;
	}
	return $nmes;
}

function fncMuestraNombreMes($mes, $nombre){
	echo '<select name='.$nombre.' onChange="envia_datos1()" class="mesesAnio">';
	for($i=1;$i<=12;$i++){
		echo '<option value='.$i;
		if ($mes==$i) 	echo " selected>";
		else			echo " >";
		$nmes	= fncNombreMes($i);
		echo  $nmes;
	}
	echo '</select>';
}

function fncMuestraAno($ano, $nombre){
	$tiempo_actual = time();
	$anoA = date("Y", $tiempo_actual);
	echo '<select name='.$nombre.' onChange="envia_datos1()" class="mesesAnio">';
	for($i=$anoA-1;$i<=$ano+4;$i++){
		echo '<option value='.$i;
		if ($ano==$i) 	echo " selected>";
		else			echo " >";
		echo  $i;
	}
	echo '</select>';	
}

function ultimoDia($mes,$ano){ 
    $ultimo_dia=28; 
    while (checkdate($mes,$ultimo_dia + 1,$ano)){ 
       $ultimo_dia++; 
    } 
    return $ultimo_dia; 
} 

function fncMuestraDia($dia,$mes,$ano, $nombre){
	$ultimo_dia = ultimoDia($mes,$ano);
	echo '<select name='.$nombre.'>';
	for($i=1;$i<=$ultimo_dia;$i++){
		echo '<option value='.$i;
		if ($dia==$i) 	echo " selected>";
		else			echo " >";
		echo  $i;
	}
	echo '</select>';	
}

function calcula_numero_dia_semana($dia,$mes,$ano){
	$numerodiasemana = date('w', mktime(0,0,0,$mes,$dia,$ano));
	if ($numerodiasemana == 0) 
		$numerodiasemana = 6;
	else
		$numerodiasemana--;
	return $numerodiasemana;
}

?>

Anon7 - 2021