mi script navideño [v2]

6 12 2010

El espíritu de las compras fiestas ya esta en casi todas partes, y no podía faltar el script que planifique en sueños y termine en unas horas. Esta vez en version actualizada que utiliza un metodo diferente.

El objetivo es mostrar una representación de la velas de la corona de adviento usando PHP, al final se encuentra el enlace para descarga de todos los archivos y una muestra funcional:

<?php 
/*
adventus reminder by FCR copyleft 2010
genera una imagen que representa el numero de velas ya encendiadas en la corona de aviento.
Si falta menos de una semana(es en el domingo de la semana actual) aparecen 4 velas apagadas
Si todavia no es tiempo de adviento, coloca un GIF transparente.
Mas en: https://incendialaciudad.wordpress.com/2009/12/03/mi-script-navideno
Usado http://www.online-image-editor.com/ para poner fondo transparente a algunas imagenes
*/
if(isset($_GET['getyours']) && $_GET['getyours']<>""){include('mostrarcodigo.html');exit;}
date_default_timezone_set("America/Lima");//La zona horaria, https://incendialaciudad.wordpress.com/2009/09/10/selectatimezone/

$mWidth = 60;
$mHeight = 33;
$year = date("Y");
$dia = date("j"); 
$mes = date("n");  
$bisiesto = date("L"); 
$numerodia = date("z");
$velas = array ("semana4.gif","semana3.gif","semana2.gif","semana1.gif","semana0_prontoinicia.gif");

$caso1 = date("N", mktime(0, 0, 0, 11, 27, $year));//27
$caso2 = date("N", mktime(0, 0, 0, 11, 28, $year));//28
$caso3 = date("N", mktime(0, 0, 0, 11, 29, $year));//29
$caso4 = date("N", mktime(0, 0, 0, 11, 30, $year));//30
$caso5 = date("N", mktime(0, 0, 0, 12, 1, $year));//31
$caso6 = date("N", mktime(0, 0, 0, 12, 2, $year));//32
$caso7 = date("N", mktime(0, 0, 0, 12, 3, $year));//33

$caso1fechas = array(14,21,28,35,42);
$caso2fechas = array(13,20,27,34,41);
$caso3fechas = array(12,19,26,33,40);
$caso4fechas = array(11,18,25,32,39);
$caso5fechas = array(10,17,24,31,38);
$caso6fechas = array(09,16,23,30,37);
$caso7fechas = array(08,15,22,29,36);

$casos = array();
$casos[] = (array($caso1,$caso1fechas));
$casos[] = (array($caso2,$caso2fechas));
$casos[] = (array($caso3,$caso3fechas));
$casos[] = (array($caso4,$caso4fechas));
$casos[] = (array($caso5,$caso5fechas));
$casos[] = (array($caso6,$caso6fechas));
$casos[] = (array($caso7,$caso7fechas));

$dibujando = 0;
if($mes==11 || $mes==12) {
	$numerodia_restantes = 365+$bisiesto-$numerodia;
	if($mes==12){$dia=$dia+30;}
	for($i = 0; $i <7; $i++){
		if($casos[$i][0]==7){
			for ($j = 0; $j <5; $j++) {
				//echo "<br>".$dia.",".$i.",".$j.','.$casos[$i][1][$j];
				if($numerodia_restantes<=$casos[$i][1][$j]){
					//$j=$j-1;
					if($dibujando == 0){$dibujando = 1;dibujarVelas(($j));break;}
				}
			}
		}
	}
	if($dibujando == 0){$dibujando = 1;sinVelas();}
}
else {
	sinVelas();
}

function setTransparency($new_image,$image_source,$r=256,$g=256,$b=256){
            if($r==256){$r=255;}
            if($g==256){$g=255;}
            if($b==256){$b=255;}
            $transparencyIndex = imagecolortransparent($image_source);
            $transparencyColor = array('red' => $r, 'green' => $g, 'blue' => $b); 
            if ($transparencyIndex >= 0) {
                $transparencyColor    = imagecolorsforindex($image_source, $transparencyIndex);   
            }
            $transparencyIndex    = imagecolorallocate($new_image, $transparencyColor['red'], $transparencyColor['green'], $transparencyColor['blue']);
            imagefill($new_image, 0, 0, $transparencyIndex);
             imagecolortransparent($new_image, $transparencyIndex);
}  
/*
$image_source = imagecreatefrompng('trans.png');
$new_image = imagecreatetruecolor($width, $height);
setTransparency($new_image,$image_source); 
imagegif($new_image);
*/

function sinVelas(){
	/*
	//si vas a usar una tamaño diferente, usar usar esta parte una vez para crear un gif trasnparente de la medida adecuada
		global $mWidth; global $mHeight;
		$image_source = imagecreatefrompng('white.png');
		$new_image = imagecreatetruecolor($mWidth, $mHeight);
		setTransparency($new_image,$image_source); 
		header('Content-type: image/gif');
		imagegif($new_image,'transparent.gif');
		imagedestroy($new_image);
	*/
	$transIMG = imagecreatefromgif('transparent.gif');
	header('Content-type: image/gif');
	imagegif($transIMG);
	imagedestroy($transIMG);
}
function dibujarVelas($semana=0){
	if($semana<0){$semana=0;}
	if($semana>4){$semana=4;}
	global $velas;
	$myIMG = imagecreatefromgif($velas[$semana]);
	header('Content-type: image/gif');
	imagegif($myIMG);
	imagedestroy($myIMG);
}
?>

Luego un poco de HTML en donde queramos ponerlo:

<a href="http://multiple.webcindario.com/works/ar/ar.php?getyours=1"><img src="http://multiple.webcindario.com/works/ar/ar.php" border="0" alt="Adventus Reminder" /></a>

(podríamos centrarlo con &nbsp;)

Resultado:
Adventus Reminder

Descarga:
http://multiple.webcindario.com/works/ar/ar.zip

(Nota: no es necesario quitarlo al finalizar el año, cuando detecta que no es la época de mostrar las velitas muestra un GIF transparente)

Puede que desees darle un vistazo a la version 1: Adventus Reminder v1.

Anuncios

Acciones

Information

2 responses

6 12 2010
Articulo Indexado en la Blogosfera de Sysmaya

[…] Actualizados : mi script navideño [v2] tinycorelinux que casi muere Verificar si una variable $_GET está […]

1 12 2011
AdventusReminder gadget 1.0 « Incendia la ciudad

[…] Mi script para navidad me sigue gustando, pero no se si a alguien mas le gustara. Pero se que poner cosas a disposición de otros no tiene como requisito que alguien las necesite(“voy a ayudarte lo necesites o no” XD) Pero me parece que tenerlo en una pagina no es suficiente, ni siquiera tenerlo para insertar en tus paginas, me di cuenta que lo necesitaba en mi escritorio. Por eso busque primero a un programador de calidad(por flojera) pero me dijo que había formas mas fáciles de mostrar una imagen en el escritorio, por lo que busque como hacer un gadget para windows, básicamente un manifiesto .xml, una pagina .html en la que podría luego poner JS y las imágenes estáticas necesarias en un archivo .gadget que no es mas que un .zip con otra extensión. […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: