Como Desenvolver Extensões para ExpressionEngine 2 – Parte 2
Vamos dar continuidade ao tutorial de como desenvolver extensões para o CMS ExpressionEngine 2. Se você ainda não leu a primeira parte do tutorial, leia para conseguir entender melhor esse post.
Como havia falado na primeira parte, agora só falta o método que enviará o título e o link do post para o Twitter.
Com a nova API do Twitter, é preciso fazer autenticação para atualizar a nossa timeline. Para faciltar, vamos baixar uma biblioteca de autenticação do Twitter nesse site. Essa biblioteca é para o CodeIgniter, o que servirá tranquilamente para essa extensão.
Após descompactar o zip, copie o arquivo Twitter.php, que está em CodeIgniter Twitter API/libraries para a pasta da extesão do Twitter que estamos criando. (system/expressionengine/third_party/twitter_post). Uma pergunta que pode ser feita neste ponto, é: por ser uma biblioteca feita para o CodeIgniter, podemos copiar o arquivo para system/codeigniter/system/libraries ou até mesmo para system/expressionengine/libraries? A reposta é sim! Mas é importante que sempre deixe os arquivos utilizados em uma extensão (plugins, módulos etc), em uma única pasta, no caso a pasta da própria extensão. Se a biblioteca ficasse em algum desses diretórios, seria só incluir a classe utilizando o método padrão do framework:
[php]$this->EE->load->library(‘twitter’);[/php]
Bom, voltando ao desenvolvimento da extensão, agora é só começar a escrever o método que irá atualizar o Twitter.
O método, que será nomeada como twitter_update, descrito nas configurações do método activate_extension, irá receber três parâmetros: $id, que é o id do post; $post, que é um array com algumas informações do post (channel_id, author_id, ip_address, title, url_title etc) e $opc, que também tem informações do post – essas informações são de campos adicionais e da revisão do post, que é praticamente igual ao parâmetro $post. Nessa extensão, não usaremos nem o $id, nem o $opc, o que não impede você usar futuramente.
O método twitter_update
Comentei linha por linha do código e explicarei melhor logo abaixo.
[php]function twitter_update( $id, $post, $opc )
{
// Verifica se o arquivo da classe existe
if ( !file_exists(PATH_THIRD . ‘twitter_post/Twitter.php’) )
return FALSE;
// Carrega o arquivo com a classe de autenticação do Twitter
include_once(PATH_THIRD . ‘twitter_post/Twitter.php’);
// Verifica se a classe existe
if ( !class_exists(‘Twitter’) )
return FALSE;
// Cria uma instância da classe ‘Twitter’
$this->twitter = new Twitter;
// Busca as configurações do banco de dados
$conf_consumer_key = $this->settings['consumer_key'];
$conf_consumer_secret = $this->settings['consumer_secret'];
$conf_consumer_keyacess_token = $this->settings['acess_token'];
$conf_acess_token_secret = $this->settings['acess_token_secret'];
// Envia a autenticação com as configurações
if ( $this->twitter->oauth( $conf_consumer_key, $conf_consumer_secret, $conf_consumer_keyacess_token, $conf_acess_token_secret ) )
{
/**
* Verifica qual é o status do post.
* O Twitter só deve ser atualizado se o post estiver aberto (open)
*/
if ( $post['status'] == “open” )
{
/*
* Preparando mensagem que será enviada para o Twitter
* Ex.: Novo Post: título do post – http://site.com.br/view/url_do_post
*/
$mensagemTwitter = $post['title'] . ” – ” . $this->EE->config->item(‘site_url’) . “view/” . $post['url_title'];
$this->twitter->call(‘statuses/update’, array(‘status’ => $mensagemTwitter));
}
}
}[/php]
As primeiras linhas são bem simples. Apenas verifica, adiciona e instância a classe que baixamos. Veja que foi usado uma constante para adicionar o arquivo (PATH_THIRD). Essa é uma das constantes que o ExpressionEngine disponibiliza para uso por todo o sistema. Caso queira saber outras constantes disponíveis, use a função get_defined_constants(), do php.
[php]print_r(get_defined_constants());[/php]
As quatro linhas seguintes recuperam as configurações salvas no banco de dados. Isso é feito só colocando o nome da configuração nas chaves de $this->settings.
Logo depois foi chamado o método oauth() para fazer a autenticação com o sistema do Twitter. Enviamos para o método as configurações que foram cadastradas no banco de dados. Essas configurações são disponibilizadas pelo Twitter (veja abaixo como pegar essas informações). Após a autenticação, é preciso verificar se o post foi publicado – o post pode ficar fechado/pendente.
A linha seguinte formata a mensagem que será publicada no Twitter.
[php]$mensagemTwitter = $post['title'] . ” – ” . $this->EE->config->item(‘site_url’) . “view/” . $post['url_title'];[/php]
Nesse linha usamos um dos parâmetros do método, o $post. Como foi dito no começo desse post, essa variável é um array e com ele é possível recuperar o título e a url do post. A url, nesse caso, não inclui o domínio do site, apenas a url referênte ao post. Para pegar o domínio todo é usado $this->EE->config->item(‘site_url’), que retorna o domínio e o caminho da instalação do ExpressionEngine. O “view” é o template criado para exibir o post (isso vai depender de como você nomeou o seu template).
Depois de formatar a mensagem, o sistema publica no Twitter chamando o método call().
Como obter o Consumer Key, Consumer Secret, Access Token e o Access Token Secret
Se você ainda não tem nenhuma aplicação no Twitter ou quer ter uma só para o uso da extensão, registre uma nova aplicação em http://dev.twitter.com/apps/new.
O cadastro é rápido e fácil. Atente-se, principalmente, aos itens “Application Type” e “Default Access type”. No primeiro, selecione “Browser” e no segundo, “Read & Write”. Na página após o cadastro, será mostrado o seu Consumer Key e o Consumer Secret. Para ver o Access Token e o Access Token Secret, clique no menu lateral “My Access Token”.
Feito todo esse processo, é só publicar alguma coisa e conferir o seu twitter.








[...] Não deixe de ler a segunda parte deste tutorial. [...]