Usando el API de Blogger en CodeIgniter

Éste howto explica cómo incluir el API de Blogger implementado en el framework Zend a través del componente GData para PHP5, en mi framework favorito CodeIgniter. Hago la aclaración que éste howto no es 100% creación mía, la base del mismo la he tomado del howto en inglés de Daniel Vecchiato titulado "Using Zend Framework components in CodeIgniter", pero la he ajustado a nuestro caso en particular de incluir el API de Blogger.

En primer lugar para poder seguir éste tutorial necesitamos un equipo LAMP (Linux, Apache, MySQL y PHP), aunque CodeIgniter puede correr sobre WAMP (Windows, Apache, MySQL y PHP), no es la intención de éste tutorial cubrir esa opción por decisión personal, invito aquellos fanáticos de Windows ha agregar dichas modificaciones a éste tutorial.

Para éste tutorial usaremos la distribución Debian, aunque con leves cambios puede implementarse de igual forma en cualquier otra distribución Linux. Primero debemos descargar tanto CodeIgniter como GData, lo cuál haremos con los siguientes comandos (como usuario "root"):

# cd /tmp
# wget http://codeigniter.com/download.php
# wget http://framework.zend.com/releases/ZendGdata-1.5.2/ZendGdata-1.5.2.tar.gz

Luego procedemos a descompactar CodeIgniter en el directorio raíz de nuestro servidor web, para ello debemos de usar los siguientes comandos:

# cd /var/www/
# unzip /tmp/CodeIgniter_1.6.2.zip
# mv CodeIgniter_1.6.2 blogger

Ahora debemos proceder a descompactar el componente GData en el directorio temporal para luego mover la librería dentro de CodeIgniter y acoplarlo a CodeIgniter usando los hooks (ganchos). Aquí los comandos que debemos ejecutar:

# cd /tmp
# tar -zxvf  ZendGdata-1.5.2.tar.gz
# cd /var/www/blogger/system/application
# mkdir Gdata
# cd Gdata
# cp -R /tmp/ZendGdata-1.5.2/library/* ./

Expliquemos brevemente que hemos hecho hasta éste punto. Pues bien hemos movido todas las clases que usaremos para manipular el API de Blogger dentro de un directorio en CodeIgniter, ahora debemos de efectuar la integración haciendo uso de los hooks, para ello debemos de habilitar ésta característica en el framework editando el archivo de configuración eso lo haremos usando nuestro editor de texto favorito ya sea éste pico o vi, no interesa. El archivo de configuración es éste: /var/www/blogger/system/application/config/config.php

Debemos buscar la clausula que habilita el uso de hooks y cambiarla de FALSE, que es el valor por defecto a TRUE, al final debemos de tener estos valores:

$config[‘enable_hooks’] = TRUE;

Ahora en el archivo /var/www/blogger/system/application/config/hooks.php debemos de agregar éstas líneas:

$hook[‘pre_controller’][] = array(
'class' => 'Gdata',
'function' => 'index',
'filename' => 'Gdata.php',
'filepath' => 'hooks'
);

Luego de grabado debemos de crear un archivo llamado Gdata.php que hara el trabajo de integrar las clases que implementan el API de Blogger en CodeIgniter. El archivo debemos colocarlo en el directorio: /var/www/blogger/system/application/hooks

El contenido del archivo Gdata.php debe ser el siguiente:

<?php

if (!defined('BASEPATH')) exit('No direct script access allowed');

class Gdata
{

    function index()
    {
       ini_set('include_path',ini_get('include_path').':'.BASEPATH.'application/my_classes/');
    }

}

?>

Listo ya tenemos hecha la integración de las API de Blogger en CodeIgniter, ahora un pequeño programita para comprobar que todo esta funcionando bien.

Pare ello en directorio de los controladores en nuestro caso /var/www/blogger/system/application/controller crearemos un archivo llamado prueba.php, el cuál contendrá el siguiente código:

<?php

class Prueba extends Controller {

        function Prueba()
        {
                parent::Controller();
                require_once('Zend/Loader.php');
                Zend_Loader::loadClass('Zend_Gdata');
                Zend_Loader::loadClass('Zend_Gdata_Query');
                Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
        }

        function printPost($feed)
        {
                foreach($feed->entries as $entry) {
                    echo "<h1>" . $entry->title->text . "</h1><br>n";
                    echo "<p>" . $entry->content->text . "</p><hr>n";
                }
        }

        function printAllPosts($gdClient, $BlogID)
        {
                $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/' . $BlogID . '/posts/default');
                $feed = $gdClient->getFeed($query);
                $this->printPost($feed);
        }

        function index()
        {
                $user = 'pon aquí tu usuario';
                $pass = 'pon aquí tu password';
                $service = 'blogger';
                $BlogID = 'pon aquí tu Blog ID';

                $client = Zend_GData_ClientLogin::getHttpClient($user, $pass, $service);
                $gdClient = new Zend_Gdata($client);
                $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/default/blogs');
                $feed = $gdClient->getFeed($query);

                $this->printAllPosts($gdClient, $BlogID);

        }
}

?>

Reemplaze por los valores apropiados las variables $user, $pass y $BlogID, obviamente $user y $pass son el usuario y password que usa para loguear en Blogger, y $BlogID es el número de identificación de tu blog, éste lo puedes obtener revisando los meta-tag de tu blog, busca una línea cómo ésta:

<link rel="EditURI" type="application/rsd+xml"
title="RSD" href="http://www.blogger.com/rsd.g?blogID=999999999" />

Esa línea contiene el ID de tu Blog, ese valor es el que debes de reemplazar, en el ejemplo anterior 999999999.

Para probar si todo ésta funcionando sólo debes de apuntar tu navegador a ésta URL y deberías de poder ver los posts que contiene tu blog:

http://192.168.1.101/blogger/index.php/test

Debes reemplazar el IP que aprece en el ejemplo anterior (192.168.1.101), por el IP de tu servidor.

Un ejemplo del resultado puede ser visto aquí:

http://volkanrivera.com/blogger/

Aquellos que deseen descargar un archivo que contenga el CodeIgniter 1.6.2 y el API de Blogger ya integrado y listo para experimentar con él lo puede hacer desde aquí:

Espero que éste howto les haya sido de utilidad.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.