概要
プラグインクラス作成の簡略化が目的。
NucleusPluginクラスを継承。プラグインクラスで定義が必要なメソッドをこのクラスで定義してしまい、このクラスを継承することでプラグインの記述を簡略化することができる。はず。
ソース
<?php
/*
* <a class="plug_nkautolinkbyitemtitle" title="Read item : SHAREDLIBS_NKJG" href="http://niku.suku.name/item/326">SHAREDLIBS_NKJG</a>_PLUGINEXTRA ver.0.5
* プラグインでよく使うメソッドを分離
*
* ver.0.0 作成
* ver.0.1 hasAdminPage実装
* ver.0.2 デフォルトでgetVersionが返す値を"0.0"から"0.0.0"に変更
* ver.0.3 getShortNameを使用するように変更
* ver.0.4 hasAdminAreaのtypo修正
* ver.0.5 sql_table関数追加
*/
// plugin needs to work on Nucleus versions <=2.0 as well
if (!function_exists('sql_table')){
function sql_table($name) {
return 'nucleus_' . $name;
}
}
class <a class="plug_nkautolinkbyitemtitle" title="Read item : SHAREDLIBS_NKJG" href="http://niku.suku.name/item/326">SHAREDLIBS_NKJG</a>_PLUGINEXTRA extends NucleusPlugin {
// 言語ファイルのロード
function incLangFile() {
// include language file for this plugin
$language = ereg_replace( '[\\|/]', '', getLanguageName());
if (file_exists($this->getDirectory().$language.'.php')) {
include_once($this->getDirectory().$language.'.php');
} elseif (file_exists($this->getDirectory().'english.php')) {
include_once($this->getDirectory().'english.php');
}
}
// プラグインの名前(クラス名から自動取得)
function getName(){
return $this->getShortName();
}
// プラグインの説明(プラグインの名前から自動取得)
function getDescription(){
$pluginName = $this->getShortName();
$this->incLangFile();
if(defined('PLUG_' . strtoupper($pluginName) . '_DESCRIPTION')) {
return constant('PLUG_' . strtoupper($pluginName) . '_DESCRIPTION');
} else {
return ('A ' . $this->getName() . ' plugin.');
}
}
//////// この辺は決めうち
function getAuthor(){ return 'NKJG'; }
function getURL(){ return 'http://niku.suku.name/'; }
function supportsFeature($what) { return (int)($what == 'SqlTablePrefix'); }
function getVersion(){ return '0.0.0'; } // バージョンアップ時は継承。
// 管理ページの有無
function hasAdminArea() { return (int)(file_exists($this->getDirectory().'index.php')); }
}
?>