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:

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.

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.

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.

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.

Clique aqui para fazer o download da extensão.