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:
- ping_url - A URL do site para o qual você está enviando o Trackback. Você pode enviar Trackbacks para múltiplas URLs separando-as por vírgula..
- url - A URL para o SEU site, onde o post do blog poderá ser visto.
- title - O nome do título do seu post.
- excerpt - O conteúdo de seu post. Nota: a classe Trackback irá automaticamente enviar apenas os primeiros 500 caracteres do post. E também irá retirar todo o HTML.
- blog_name - O nome do seu Blog.
- charset - A codificação de caracteres na qual seu post foi escrito. Se omitida, a UTF-8 será usada.
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.