Code Igniter User Guide Version 1.5.2


Classe Trackback

A Classe Trackback Class provê funções para enviar e receber dados Trackback.

Se você não está familiarizado com Trackbacks, achará mais informações aqui.

Inicializando a Classe

Como a maioria das classes no Code Igniter, a classe Trackback é inicializada, em seu controller, usando a função $this->load->library:

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

Uma vez carregada, seu objeto estará disponível usando: $this->trackback

Enviando Trackbacks

Um trackback pode ser enviado de qualquer função em seus controllers, usando um código similar a este exemplo: $this->load->library('trackback');

$tb_data = array(
                'ping_url'  => 'http://algum-site.com/trackback/456',
                'url'       => 'http://www.meu-site.com/blog/entry/123',
                'title'     => 'O Título do meu Post',
                'excerpt'   => 'O conteúdo do Post.',
                'blog_name' => 'O nome do Meu Blog',
                'charset'   => 'utf-8'
                );

if ( ! $this->trackback->send($tb_data))
{
     echo $this->trackback->display_errors();
}
else
{
     echo 'O Trackback foi enviado!';
}

Descrição dos dados da array:

A função de envio de Trackbacks retornará TRUE/FALSE (booleano) em sucesso ou falha, respectivamente. Se ela falhar, você pode recuperar a mensagem de erro usando:

$this->trackback->display_errors();

Recebendo Trackbacks

Antes que possa receber Trackbacks, você precisa criar um blog. Se não tem um ainda, não há razão em continuar lendo isto.

Receber Trackbacks é um pouco mais complexo que enviá-los, apenas porque você precisará de uma tabela no banco de dados para armazená-los e precisará validar os dados recebidos. Você é encorajado a implementar um processo de validação completo e consistente para evitar dados duplicados e se proteger de spam. Você pode querer também limitar o número de Trackbacks que deseja receber de um particular IP, dentro de um espaço de tempo, para diminuir a chance de spam. O processo de receber Trackbacks é bem simples; o processo da validação dos mesmos é que toma mais tempo e esforço.

Sua URL Permanente

Para aceitar Trackbacks você precisa mostrar a URL Trackback próxima a seus posts. Está será a URL que as pessoas usarão para enviar Trackbacks para você (iremos nos referenciar a ela como sua "URL Ping").

Sua URL Ping deve apontar para a função de um controller onde o seu código de recepção de Trackbacks está localizado e a URL deve conter o número ID de cada post em particular, para que quando um Trackback for recebido, você poderá associá-lo com o post.

Por exemplo, se sua classe controller chama-se Trackback, e a função de recepção chama-se receive, suas URLs Ping irão se parecer com algo assim:

http://www.seu-site.com/index.php/trackback/receive/entry_id

Onde entry_id representa o número ID individual ID para cada um de seus posts.

Criando uma Tabela Trackback

Para receber Trackbacks, você precisar criar uma tabela para armazená-las. Aqui vai um protótipo básico para tal tabela:

A especificação Trackback apenas requer quarto pedaços de informação para serem enviados (url, título, excerto, nome_blog), mas para tornar os dados mais úteis, adicionamos alguns campos a mais no esquema acima (data, endereço IP etc.).

Processando um Trackback

Aqui está um exemplo mostrando como você irá receber e processar um Trackback. O código abaixo tem a intenção de ser usado dentro da função controller onde você espera receber os Trackbacks.

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

if ($this->uri->segment(3) == FALSE)
{
    $this->trackback->send_error("Não foi possível determinar o ID do post");
}

if ( ! $this->trackback->receive())
{
    $this->trackback->send_error("O Trackback não contém dados válidos");
}

$dados = array(
                'tb_id'      => '',
                'entry_id'   => $this->uri->segment(3),
                'url'        => $this->trackback->data('url'),
                'title'      => $this->trackback->data('titulo'),
                'excerpt'    => $this->trackback->data('excerto'),
                'blog_name'  => $this->trackback->data('nome_blog'),
                'tb_date'    => time(),
                'ip_address' => $this->input->endereco_ip()
                );

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

$this->trackback->send_success();

Notas:

É esperado que o número ID do post esteja no terceiro segmento da URL. Isto baseia-se no exemplo de URI que mostramos anteriormente:

http://www.seu-site.com/index.php/trackback/receive/entry_id

Note a entry_id no terceiro URI, o qual você pode recuperar usando:

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

No código de recebimento do Trackback, acima, se o terceiro segmento estiver faltando, iremos disparar um erro. Sem uma ID válida, não há razão para continuar.

A função $this->trackback->receive() é simplesmente uma função de validação que pegará os dados recebidos e ter a certeza que eles contêm os quatro pedaços de dados obrigatórios (url, titulo, excerto, nome_blog). Ela retornará TRUE/FALSE em sucesso ou falha, respectivamente. Se ela falhar, você receberá uma mensagem de erro.

Os dados do Trackback recebido podem ser recuperados usando esta função:

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

Onde item representa um destes quatro pedaços de informação: url, título, excerto ou nome_blog.

Se os dados do Trackback forem recebidos com sucesso, você poderá enviar uma mensagem de sucesso usando:

$this->trackback->send_success();

Nota: O código acima não contém validação de dados. Você é encorajado a incluí-la.