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 */ /* Está previsto para ubicarse en el mismo directorio del archivo wp-config.php (En principio, el de tu blog) Si tienes wp-config.php en otro directorio, indica la ruta en este require: */ require 'wp-config.php'; Imagen(); function Imagen(){ global $table_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-------------------------------------------- $Conexion = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD); mysql_select_db (DB_NAME, $Conexion) OR die ("No se puede conectar"); // Fecha más antigua // (Extraigo de la BD la del post más antiguo) $sql="SELECT post_date FROM " . $table_prefix . "posts WHERE post_status='publish' ORDER BY post_date ASC LIMIT 1;"; $result=mysql_query($sql,$Conexion); while($row = mysql_fetch_array($result)) { ereg( "([0-9]{4})-([0-9]{2})-([0-9]{2}) [0-9]{2}:[0-9]{2}:[0-9]{2}", $row["post_date"], $regs); $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 post_date, ID FROM " . $table_prefix . "posts WHERE post_status='publish' ORDER BY post_date DESC;"; $result=mysql_query($sql,$Conexion); while($row = mysql_fetch_array($result)) { ereg( "([0-9]{4})-([0-9]{2})-([0-9]{2}) [0-9]{2}:[0-9]{2}:[0-9]{2}", $row["post_date"], $regs); $Publicados[$row["ID"]] = (mktime( 0,0,0,$regs[2], $regs[3], $regs[1])- $sAnt)/43200; } $numposts=mysql_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 comment_date FROM " . $table_prefix . "comments WHERE comment_post_ID='". $cod ."' AND comment_approved='1';"; $result=mysql_query($sql,$Conexion); while($row = mysql_fetch_array($result)) { ereg( "([0-9]{4})-([0-9]{2})-([0-9]{2}) [0-9]{2}:[0-9]{2}:[0-9]{2}", $row["comment_date"], $regs); $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); } ?>