ブログトップ
Twitter投稿プラグイン開発について4
2009年08月10日
前回はエントリーを新規作成したら、Twitterにaaaというメッセージが投稿されるというところまで記載しました。
今回はそこに新規作成しても公開設定が下書きのままだったら投稿されない。
下書きから公開設定を公開にし、更新したときにTwitterに投稿される。
という設定を追加するところを記載したいと思います。
まずはエントリーを更新したときにもTwitterに投稿されるように設定します。
initメソッドのCMSPlugin::activeCheck後にCMSPlugin::setEventを追加します。
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"));
        CMSPlugin::setEvent("onEntryUpdate",$this->getId(),array($this,"doPost"));
    }
}
これで記事(エントリー)の更新時もTwitterに投稿されるようになりました。
あとは下書きで新規作成時と公開で更新したときの動作を加えればいいので
(投稿時の文章に記事URLを入れたいので、BlogPageに関することも設定しておく必要がある)
function getBlogPage($pageId){
    $dao = SOY2DAOFactory::create("cms.BlogPageDAO");
    try{
    	$page = $dao->getById($pageId);
    }catch(Exception $e){
    	return null;
    }
    return $page;
}
	
function doPost($arg1){
    
    $isPublished = $arg1["entry"]->getIsPublished();
    $openPeriodStart = $arg1["entry"]->getopenPeriodStart();
		
    //公開設定が下書きの場合は無効にする
    if($isPublished == 0){
		
        return false;
		
    }else{
			
    //公開期限の始まりを設定したときは無効にする
    if($openPeriodStart != 0){
				
        return false;
			
    }else{
				
        $arg2 = SOY2PageController::getArguments();
        $pageId = @$arg2[0];
		
        $page = $this->getBlogPage($pageId);
        $alias = $arg1["entry"]->getAlias();
			
        //記事からの投稿を無効にする		
        if($page == NULL){
				
            return false;
			
        }else{
				
            $mes = $arg1["entry"]->getTitle() . UserInfoUtil::getSiteUrl() . $page->getUri() ."/". $page->getEntryPageUri(). "/" .rawurlencode($alias);
			
            include(dirname(__FILE__) . "/twitterAPI.php");
		
            if(!$this->twitter_username || !$this->twitter_psw){
						
                return false;
						
            }elseif(!$this->twitter_username && !$this->twitter_psw){
						
                return false;
						
            }else{
						
                $twitter_status=postToTwitter($this->twitter_username, $this->twitter_psw, $mes);
                                                                                                                                                                                                                                        return $twitter_status;
						
            }
        }
    }
}
これでTwitter投稿プラグインの完成です。
お疲れ様でした。
追記
CMSPlugin::addBlock()メソッドに関してはプラグイン開発1~4を参考にしてください。

