rss
twitter
  •  

Lector RSS de Twitter ideal para Frameworks

| Posted in General |

4

Para un proyecto que estoy desarrollando debía mostrar los últimos X tweets de una cuenta en twitter sin usar JavaScript, sólo PHP; y además debía realizar las labores de “parsing” a las etiquetas # y @ para poder auto-enlazar a su correspondiente query de twitter y además, mostrar “hace cuánto fue escrita la entrada”, es decir: tiempo relativo.

Al no encontrar nada de esto en la web, me dí a la tarea de hacerlo yo mismo, uniendo varias piezas creadas por otros autores incluso en otro lenguajes de programación.

Debo decir que es perfectamente acoplable a cualquier framework en forma de un partial. Puedo decir que corre perfectamente con CodeIgniter.

A continuación, mi humilde aporte:


<?php
/**
 * Visualizar Twitter RSS
 * By: Alexander Garzon (www.php.com.ve)
 * @param string $rss_twitter URL completa del feed RSS
 * @style DIV class named rss_twitter
 * @return html
 */

class RSS_Twitter {

    //Determina si el número (en palabra) es plural si es mayor a 1
    public static function Pluralidad($val, $qty) {
        if ($val > 1) return $val.' '.$qty.'s';
        else return $val.' '.$qty;
    }
    //Calcula el tiempo relativo (diferencia) según una determinada y el presente.
    public static function TiempoRelativo($seconds) {
        if (($seconds / 604800) > 1) return 'Hace '.RSS_Twitter::Pluralidad(round($seconds / 604800), 'semana');
        elseif (($seconds / 86400) > 1) return 'Hace '.RSS_Twitter::Pluralidad(round($seconds / 86400), 'día');
        elseif (($seconds / 3600) > 1) return 'Hace '.RSS_Twitter::Pluralidad(round($seconds / 3600), 'hora');
        elseif (($seconds / 60 ) > 1) return 'Hace '.RSS_Twitter::Pluralidad(round($seconds / 60), 'minuto');
        else return 'Hace '.RSS_Twitter::Pluralidad($seconds, 'segundo');
    }

    public static function FormatoTiempo($tiempocadena) {
        $timestamp = strtotime($tiempocadena);
        $diferencia = time() - $timestamp;
        return RSS_Twitter::TiempoRelativo($diferencia);
    }

    public static function TweetFilter($tweet) {
        //Filtra contenidos del tweet (para links, #tags y @respuestas

        //Se elimina el nmombre del mismo autor en el mensaje (es redundante)
        $pos = strpos($tweet, ":");
        $salida = substr_replace($tweet, '', 0,$pos+2); // El +2 es refiere a el simbolo ':' y el espacio en blanco que le sigue.

        //Agregamos links a los http
        $salida = preg_replace('/(http:\/\/)(.*?)\/([\w\.\/\&amp;amp;\=\?\-\,\:\;\#\_\~\%\+]*)/', '<a href="$0" onclick="window.open(this.href); return false;">$0</a>', $salida);
        //Agregamos links a los @
        $salida = preg_replace('/\B@([_a-zA-Z0-9-]+)/','@<a href="http://twitter.com/$1" onclick="window.open(this.href); return false;">$1</a>',$salida);
        //Agregamos links a los #
        $salida = preg_replace('/\B#([_a-zA-Z0-9-]+)/','<a href="http://search.twitter.com/search?q=%23$1" onclick="window.open(this.href); return false;">#$1</a>',$salida);

        return $salida;

    }
    //Extrae y publica los tweets del RSS
    public static function TweetReader($url) {
        if (!@simplexml_load_file($url)) {
            echo "Error enlazando a Twitter, intente de nuevo";
        } else {
            $feed = simplexml_load_file($url);
            foreach ($feed->channel->item as $item) :
                echo "<div class=\"rss_twitter\">";
                echo $array['title'] = (RSS_Twitter::TweetFilter($item->title))."<br />".PHP_EOL;
                echo "<a href=\"$item->link\" onclick=\"window.open(this.href); return false;\">".RSS_Twitter::FormatoTiempo($item->pubDate)."</a><br />".PHP_EOL;
                echo "<br /></div>".PHP_EOL;
            endforeach;
        }

    }

}

RSS_Twitter::TweetReader($rss_twitter);

?>

Lo único que nos falta es proveer la variable $rss_twitter que corresponde a la ruta absoluta del canal RSS de la cuenta Twitter que deseamos mostrar y además la cantidad de “tweets” que mostraremos, esa ruta viene siendo algo como por ejemplo:

http://twitter.com/statuses/user_timeline/28505702.rss?count=3

Donde 28505702 es el ID de la cuenta de Twitter y 3 es la cantidad de Tweets que mostraremos.

Espero les sea de utilidad.

ACTUALIZACIÓN 12/07/2010: Le he agregado una validación simple para en caso de que por alguna razón Twitter esté caído.

Kohana y CodeIgnitier, los de mayor crecimiento este 2009

| Posted in General |

5

CodeIgnitier y su “fork” Kohana son los 2 frameworks PHP que presentaron el mayor crecimiento según Google trends; mientras los demás muestran un ligero descenso de popularidad.

Inclusive el archi-conocido hijo de Zend, se viene en baja este año.

Ambos son muy buenas opciones para quienes desean programar en PHP sacando partido a los modelos MVC

Integrar Netbeans y CodeIgniter

| Posted in General |

7

No es tan difícil después de todo.

Sólo pones este archivo con cualquier nombre en la raíz del proyecto (codeigniter) y listo.


<?php
/**
 * @property CI_Loader $load
 * @property CI_Form_validation $form_validation
 * @property CI_Input $input
 * @property CI_Email $email
 * @property CI_DB_active_record $db
 * @property CI_DB_forge $dbforge
 * @property CI_Table $table
 * @property CI_Session $session
 * @property CI_FTP $ftp
 * ....
 */
Class Controller {
}
?>

Así de fácil… con esto hemos logrado que el Netbean nos ofrezca en auto-completado, los métodos y variables propias del framework.

Esta técnica puede ser aplicada a otros frameworks, aunque Symfony ya viene integrada como parte de Netbeans.

Autocompletado Codeigniter

KohanaPHP Framework

| Posted in General |

0

KohanaPHP

Estoy sorprendido con la sencillez y poder que hay en este framework PHP, que ha venido creciendo vertiginosamente. De hecho según varios análisis de varios sitios especializados es la de mayor crecimiento en este último año.

KonahaPHP es un fork (derivado) del ya conocidamente famoso CodeIgniter (el favorito de Rasmus Lerdorf, el padre de PHP); pero… con dos diferencias sustanciales entre la más destacada: 100% PHP5 estricto y es 100% mantenido por la comunidad (no hay empresas involucradas)

Otra característica relevante es su manejo total del UTF-8 como norma.

Si sienten curiosidad por conocer una alternativa práctica, extensible y fácil para sus proyectos les invito a conocer: http://www.kohanaphp.es/home

PD: No se pretende evaluar cual es mejor o compararla con las demás; este mensaje es una invitación a conocer este interesante framework que merece ser observado con detenimiento.