CodeIgniter User Guide Version 1.6.1


Clase de Vínculos de referencia (Trackback)

La Clase de Vínculos de referencia (trackback) provee funciones que le permiten enviar y recibir datos de vínculos de referencia.

Si no está familiarizado con los Vínculos de referencias encontrará más informaciónaquí.

Inicializando la Clase

Como la mayoría de las otras clases en CodeIgniter, la clase de Vínculos de referencia es inicializada en su controlador usando la función $this->load->library:

$this->load->library('trackback');

Una vez cargada, el objeto de la librería de Vínculos de referencia estará disponible usando: $this->trackback

Enviando Vínculos de Referencias

Un vínculo de referencia puede ser enviado desde cualquiera de sus funciones de sus controladores usando un código similar a este ejemplo:

$this->load->library('trackback');

$tb_data = array(
                'ping_url'  => 'http://ejemplo.com/trackback/456',
                'url'       => 'http://www.mi-ejemplo.com/blog/entrada/123',
                'title'     => 'El Título de Mi Entrada',
                'excerpt'   => 'El contenido de la entrada.',
                'blog_name' => 'El Nombre de mi Blog',
                'charset'   => 'utf-8'
                );

if ( ! $this->trackback->send($tb_data))
{
     echo $this->trackback->display_errors();
}
else
{
     echo 'Vínculo de referencia enviado!';
}

Descripción del arreglo de datos:

La función de envío de vínculos de referencia devolverá TRUE/FALSE (buleano) en éxito o fallo. Si falla, puede recuperar el mensaje de error usando:

$this->trackback->display_errors();

Recibiendo Vínculos de Referencias

Antes de que pueda recibir vínculos de referencias debe crear un weblog. Si no tiene una bitácora aún no tiene sentido continuar.

Recibir vínculos de referencias es un poco más complicado que enviarlos, sólo porque necesitará una tabla de base de datos dónde almacenarlos, y necesitará validar los datos entrantes del vínculo de referencia. Se alienta a implementar un minucioso proceso de validación para resguardarse en contra del spam y los datos duplicados. Puede también querer limitar el número de vínculos de referencias que permite desde una dirección IP particular dentro de un rango de tiempo para resguardarse del spam. El proceso de recepción de vínculos de referencia es bastante simple; la validación es lo que toma la mayoría del esfuerzo.

Su URL de Ping

Para aceptar vínculos de referencias debe mostrar una URL de vínculos de referencia próxima a cada una de sus entradas weblog. Esta será la URL que la gente usará para enviar sus vínculos de referencias (nos referiremos a ella como su "URL de Ping").

Su URL de Ping debe aputar a un controlador donde su código de recepción de vínculos de referencia es ubicado, y la URL debe contener el número de ID para cada entrada en particular, así cuando el vínculos de referencia es recibido será capaz de asociarlo con una entrada en particular.

Por ejemplo, si su clase controlador es llamada Trackback, y la función de recepción es llamada recibir, su URL de Ping será algo así:

http://www.su-sitio.com/index.php/trackback/receive/entrada_id

Donde entrada_id representa el número de ID individual para cada una de sus entradas.

Creando una Tabla de Vínculos de Referencia

Antes de poder recibir sus vínculos de referencias debe crear una tabla donde guardarlos. Aquí hay un prototipo de tal tabla:

La especificación de vínculos de referencia sólo requiere cuatro piezas de información para enviar en un vínculo de referencia (url, título, contenido, nombre_blog), pero para hacer los datos más utiles hemos agregado unos campos más en la tabla anterior (fecha, dirección IP, etc.).

Procesando un Vínculo de Referencia

Aquí hay un ejemplo mostrando como recibirá y procesará un vínculo de referencia. El siguiente código está hecho para usar dentro de la función controlador donde espera recibir vínculos de referencias.

$this->load->library('trackback');
$this->load->database();

if ($this->uri->segment(3) == FALSE)
{
    $this->trackback->send_error("No se pudo determinar el ID de la entrada");
}

if ( ! $this->trackback->receive())
{
    $this->trackback->send_error("El Vínculo de Referencia no contenía datos válidos");
}

$data = array(
                'tb_id'      => '',
                'entrada_id'   => $this->uri->segment(3),
                'url'        => $this->trackback->data('url'),
                'titulo'      => $this->trackback->data('title'),
                'texto'    => $this->trackback->data('excerpt'),
                'nombre_blog'  => $this->trackback->data('blog_name'),
                'tb_fecha'    => time(),
                'direccion_ip' => $this->input->ip_address()
                );

$sql = $this->db->insert_string('trackbacks', $data);
$this->db->query($sql);

$this->trackback->send_success();

Notas:

El número de ID de la entrada es esperado como el tercer segmento de su URL. Esto se basa en la URI de ejemplo que dimos anteriormente:

http://www.su-sitio.com/index.php/trackback/receive/entrada_id

Note que entrada_id está en el tercer segmento de la URI, el cual puede ser recuperado usando:

$this->uri->segment(3);

En sus el código de recepción de vínculos de referencia previo, si el tercer segmento no se encuentra, responderemos un error. Sin un ID de entrada válido no hay razón para continuar.

La función $this->trackback->receive() es simplemente una función de validación que verifica los datos entrantes y se asegura que contiene las cuatros piezas de datos que son requeridas (url, titulo, texto, nombre_blog). Devuelve TRUE en éxito y FALSE si falla. Si falla, devolveremos un mensaje de error.

Los datos de vínculos de referencia entrantes pueden ser recuperados usando esta función:

$this->trackback->data('item')

Donde item representa uno de estas cuatro piezas de información: url, title (título), excerpt (texto), o blog_name (nombre del blog)

Si los datos de vínculos de referencia son recibidos correctamente, devolverá un mensaje de éxito usando:

$this->trackback->send_success();

Nota: El código anterior no contiene validación de datos, la cual está alentado a agregar.