Gráfico Estadístico Esto muestra un cuadro de 100 X 100 pixels con los últimos movimientos, y permite hacer clic sobre él para acceder a la imagen completa Gracias a la inestimable ayuda prestada por Arkangel (http://blog.arkangel.info) y Campanilla (http://www.campanilla.info/) con las versiones para WP y B2 respectivamente. Huelga decir que esto tiene una licencia Creative Commons: http://creativecommons.org/licenses/by-sa/2.0/ Allan Psicobyte: http://www.psicobyte.com */ include_once './includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); Imagen(); function Imagen(){ global $db_prefix; // Muestra el cuadro de información (con la leyenda, los colores y eso) $ver_info='si'; // Muestra los meses y las lineas de separación entre ellos $ver_fechas='si'; // Ancho en pixels de la imagen cuando se muestra en pequeño, para la opción "mini" $ancho_mini= 100; // Ancho en pixels de la imagen para la opción "cacho" $ancho_cacho= 100; // Alto en pixels de la imagen para la opción "cacho" $alto_cacho= 100; //EMPIEZA-------------------------------------------- // Fecha más antigua // (Extraigo de la BD la del post más antiguo) $sql="SELECT created FROM " . $db_prefix . "node WHERE status='1' ORDER BY created ASC LIMIT 1;"; $result=db_query($sql); while($row = db_fetch_array($result)) { $regs[1] = date("Y", $row["created"]); //año $regs[2] = date("m", $row["created"]); //mes $regs[3] = date("d", $row["created"]); //día $sAnt = mktime( 0,0,0,$regs[2], $regs[3], $regs[1]); $anoMenor= $regs[1]; } mysql_free_result($result); // fecha actual $sMax = mktime( 0,0,0,date("m"), date("d"), date("Y")); $anoMayor= date("Y"); $ancho =($sMax - $sAnt)/43200; $sql="SELECT created, nid FROM " . $db_prefix . "node WHERE status='1' ORDER BY created DESC;"; $result=db_query($sql); while($row = db_fetch_array($result)) { $regs[1] = date("Y", $row["created"]); // año $regs[2] = date("m", $row["created"]); // mes $regs[3] = date("d", $row["created"]); // día $Publicados[$row["nid"]] = (mktime(0,0,0,$regs[2], $regs[3], $regs[1]) - $sAnt)/43200; } $numposts=db_num_rows($result); mysql_free_result($result); $alto= 2 * $numposts; $Imagen= imagecreate($ancho,$alto); $blanco = ImageColorAllocate($Imagen, 255,255,255); $negro = ImageColorAllocate($Imagen, 0,0,0); $rojo = ImageColorAllocate($Imagen, 255,0,0); $azul = ImageColorAllocate($Imagen, 0,0,255); $verde = ImageColorAllocate($Imagen, 0,255,0); imagefilledrectangle ($Imagen,0,0,$ancho,$alto,$negro); if ($_GET["modo"]!="mini" && $ver_fechas=='si'){ $mes[1]='Ene'; $mes[2]='Feb'; $mes[3]='Mar'; $mes[4]='Abr'; $mes[5]='May'; $mes[6]='Jun'; $mes[7]='Jul'; $mes[8]='Ago'; $mes[9]='Sep'; $mes[10]='Oct'; $mes[11]='Nov'; $mes[12]='Dic'; for ($an=$anoMenor;$an<=$anoMayor;$an++){ if ($colormes== $verde){$colormes= $azul;} else {$colormes= $verde;} for ($i=1;$i<13;$i++){ $coX = (mktime( 0,0,0,$i,1,$an) - $sAnt)/43200; imagefilledrectangle ($Imagen,$coX,0,$coX,$alto,$colormes); imagestring ($Imagen, 1, $coX+10, 5, $mes[$i], $blanco); if ($i==1){ imagestring ($Imagen, 1, $coX+10, 15, $an, $blanco); } } } } for ($i=1;$i<11;$i++){ $tonorojo= 25 * $i; $tonoverde= 275 -(25 * $i); $comm[$i]= ImageColorAllocate($Imagen,$tonoverde,$tonorojo,0); if ($_GET["modo"]!="mini" && $ver_info=='si'){ imagefilledrectangle ($Imagen,$i*10,40,$i*10+10,50,$comm[$i]); imagestring ($Imagen, 1, ($i*10)+3, 55, $i, $blanco); } } if ($_GET["modo"]!="mini" && $ver_info=='si'){ imagefilledrectangle ($Imagen,10,25,20,35,$blanco); imagestring ($Imagen, 1, 25, 28, '(Posts)', $blanco); imagestring ($Imagen, 1, 115, 43, '(Comentarios)', $blanco); imagestring ($Imagen, 1, 113, 55, '+', $blanco); imagestring ($Imagen, 1, 13, 65, '(Años '. $anoMenor . ' a ' . $anoMayor . ')', $blanco); } foreach ($Publicados as $cod => $publicacion){ $sql="SELECT timestamp FROM " . $db_prefix . "comments WHERE nid='". $cod ."' AND status='0';"; $result=db_query($sql); while($row = db_fetch_array($result)) { $regs[1] = date("Y", $row["timestamp"]); //año $regs[2] = date("m", $row["timestamp"]); //mes $regs[3] = date("d", $row["timestamp"]); //día $sAct = mktime( 0,0,0,$regs[2], $regs[3], $regs[1]); $coordX =($sAct - $sAnt)/43200; $Comentados[$cod][$coordX]++; } mysql_free_result($result); } $coordY=0; foreach ($Publicados as $cod => $publicacion){ if ($Comentados[$cod]){ $comentarios= $Comentados[$cod]; foreach ($comentarios as $key => $val){ if ($val < 10){ $tono= $val; } else { $tono= 10; } imagefilledrectangle ($Imagen,$key,$coordY,$key+1,$coordY+1,$comm[$tono]); } } // Lo coloco un día antes de lo que corresponde, para que no pise comentarios imagefilledrectangle ($Imagen,$Publicados[$cod]-1,$coordY,$Publicados[$cod],$coordY+1,$blanco); //incremento la coordenada Y (doble, que son dos pixels) $coordY++; $coordY++; } if ($_GET["modo"]=="mini"){ $alto_mini= $ancho_mini * $alto / $ancho; $peque = ImageCreate($ancho_mini, $alto_mini); imagecopyresampled ( $peque, $Imagen, 0, 0, 0, 0, $ancho_mini, $alto_mini, $ancho, $alto); $Definitiva= $peque; } elseif ($_GET["modo"]=="cacho"){ $peque = ImageCreate($ancho_cacho, $alto_cacho); imagecopy ($peque, $Imagen, 0, 0, $ancho-$ancho_cacho, 0, $ancho, $alto); $Definitiva= $peque; } else { $Definitiva= $Imagen; } header("Content-type: image/png"); imagepng($Definitiva); } ?>