ブログトップ
Twitter投稿プラグイン開発について3
2009年08月10日
Twitter投稿プラグインも三回目
前回まででIDとパスワードをキャッシュに保存まではできました。
後は
ブログエントリー公開時にTwitterに通知メッセージを送るだけ!
あと、もう少しです
Twitterに投稿するタイミングを考えると、エントリーの公開設定を公開にし、新規作成、または新規保存の時になります。
始めは記事(エントリー)を新規作成するときに、動作するメソッドをinitメソッドに追加しておきます。
function init(){
CMSPlugin::addPluginMenu(self::PLUGIN_ID,array(
"name" => "ブログ更新つぶやきプラグイン",
"description" => "ブログからの記事投稿時に記事のタイトルとURLをTwitterでつぶやきます。",
"author" => "日本情報化農業研究所",
"url" => "http://www.n-i-agroinformatics.com",
"mail" => "soycms@soycms.net",
"version" => "1.0"
));
CMSPlugin::addPluginConfigPage(self::PLUGIN_ID,array(
$this,"config_page"
));
//ここに追加します。
if(CMSPlugin::activeCheck(self::PLUGIN_ID){
CMSPlugin::setEvent("onEntryCreate",$this->getId(),array($this,"doPost"));
}
}
onEntryCreate(エントリー新規作成時)にdoPostメソッドが動作するように追加しました。
続いて、doPostメソッドにTwitter投稿に関する動作を入れる。
(あらかじめ、PostEntryTwitter.phpと同じディレクトリにtwitterAPI.phpを設置しておく)
function doPost(){
$mes = "aaa"; //Twitter投稿のメッセージ
include(dirname(__FILE__) . "/twitterAPI.php");
if(!$this->twitter_username || !$this->twitter_psw){
return false;
}elseif(!$this->twitter_username && !$this->twitter_user_psw){
return false;
}else{
$twitter_status=postToTwitter($this->twitter_username, $this->twitter_psw, $mes);
return $twitter_status;
}
}
これで、記事(エントリー)を新規作成したら、必ずTwitterに投稿されるようになりました。
(テスト送信する場合は、PHPのCurlモジュールを必ず有効にしておいてください)
補足
[twitterAPI.php]
function postToTwitter($username,$password,$message){
$host = "http://twitter.com/statuses/update.xml?status=".urlencode(stripslashes(urldecode($message)));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);
// Look at the returned header
$resultArray = curl_getinfo($ch);
curl_close($ch);
}