📄 plugin.inc.php
字号:
if (!is_a($oEntity, 'KTPluginEntity')) {
print "isRegistered\n";
var_dump($oEntity);
exit(0);
}
if ($oEntity->getDisabled()) {
return false;
}
return true;
}
/**
* Load the actions, portlets, etc as part of the parent plugin
*
*/
function load() {
// Include any required resources, javascript files, etc
$res = $this->run_setup();
if(!$res){
return false;
}
// Get actions, portlets, etc, create arrays as part of plugin
$query = "SELECT * FROM plugin_helper h WHERE plugin = '{$this->sNamespace}'";
$aPluginHelpers = DBUtil::getResultArray($query);
if(!empty($aPluginHelpers)){
foreach ($aPluginHelpers as $plugin) {
$sName = $plugin['namespace'];
$sParams = $plugin['object'];
$aParams = explode('|', $sParams);
$sClassType = $plugin['classtype'];
switch ($sClassType) {
case 'portlet':
$aLocation = unserialize($aParams[0]);
if($aLocation != false){
$aParams[0] = $aLocation;
}
$this->_aPortlets[$sName] = $aParams;
break;
case 'trigger':
$this->_aTriggers[$sName] = $aParams;
break;
case 'action':
$this->_aActions[$sName] = $aParams;
break;
case 'page':
$this->_aPages[$sName] = $aParams;
break;
case 'authentication_provider':
$this->_aAuthenticationProviders[$sName] = $aParams;
break;
case 'admin_category':
$this->_aAdminCategories[$sName] = $aParams;
break;
case 'admin_page':
$this->_aAdminPages[$sName] = $aParams;
break;
case 'dashlet':
$this->_aDashlets[$sName] = $aParams;
break;
case 'i18n':
$this->_ai18n[$sName] = $aParams;
break;
case 'i18nlang':
$this->_ai18nLang[$sName] = $aParams;
break;
case 'language':
$this->_aLanguage[$sName] = $aParams;
break;
case 'help_language':
$this->_aHelpLanguage[$sName] = $aParams;
break;
case 'workflow_trigger':
$this->_aWFTriggers[$sName] = $aParams;
break;
case 'column':
$this->_aColumns[$sName] = $aParams;
break;
case 'view':
$this->_aViews[$sName] = $aParams;
break;
case 'notification_handler':
$this->_aNotificationHandlers[$sName] = $aParams;
break;
case 'template_location':
$this->_aTemplateLocations[$sName] = $aParams;
break;
case 'criterion':
$aInit = unserialize($aParams[3]);
if($aInit != false){
$aParams[3] = $aInit;
}
$this->_aCriteria[$sName] = $aParams;
break;
case 'widget':
$this->_aWidgets[$sName] = $aParams;
break;
case 'validator':
$this->_aValidators[$sName] = $aParams;
break;
case 'interceptor':
$this->_aInterceptors[$sName] = $aParams;
break;
}
}
}
return true;
}
/**
* Original load function for the plugins
* @deprecated
*/
function load2() {
if (!$this->isRegistered()) {
return;
}
$this->setup();
require_once(KT_LIB_DIR . '/actions/actionregistry.inc.php');
require_once(KT_LIB_DIR . '/actions/portletregistry.inc.php');
require_once(KT_LIB_DIR . '/triggers/triggerregistry.inc.php');
require_once(KT_LIB_DIR . '/plugins/pageregistry.inc.php');
require_once(KT_LIB_DIR . '/authentication/authenticationproviderregistry.inc.php');
require_once(KT_LIB_DIR . "/plugins/KTAdminNavigation.php");
require_once(KT_LIB_DIR . "/dashboard/dashletregistry.inc.php");
require_once(KT_LIB_DIR . "/i18n/i18nregistry.inc.php");
require_once(KT_LIB_DIR . "/help/help.inc.php");
require_once(KT_LIB_DIR . "/workflow/workflowutil.inc.php");
require_once(KT_LIB_DIR . "/widgets/widgetfactory.inc.php");
require_once(KT_LIB_DIR . "/validation/validatorfactory.inc.php");
require_once(KT_LIB_DIR . "/browse/columnregistry.inc.php");
require_once(KT_LIB_DIR . "/browse/criteriaregistry.php");
require_once(KT_LIB_DIR . "/authentication/interceptorregistry.inc.php");
$oPRegistry =& KTPortletRegistry::getSingleton();
$oTRegistry =& KTTriggerRegistry::getSingleton();
$oARegistry =& KTActionRegistry::getSingleton();
$oPageRegistry =& KTPageRegistry::getSingleton();
$oAPRegistry =& KTAuthenticationProviderRegistry::getSingleton();
$oAdminRegistry =& KTAdminNavigationRegistry::getSingleton();
$oDashletRegistry =& KTDashletRegistry::getSingleton();
$oi18nRegistry =& KTi18nRegistry::getSingleton();
$oKTHelpRegistry =& KTHelpRegistry::getSingleton();
$oWFTriggerRegistry =& KTWorkflowTriggerRegistry::getSingleton();
$oColumnRegistry =& KTColumnRegistry::getSingleton();
$oNotificationHandlerRegistry =& KTNotificationRegistry::getSingleton();
$oTemplating =& KTTemplating::getSingleton();
$oWidgetFactory =& KTWidgetFactory::getSingleton();
$oValidatorFactory =& KTValidatorFactory::getSingleton();
$oCriteriaRegistry =& KTCriteriaRegistry::getSingleton();
$oInterceptorRegistry =& KTInterceptorRegistry::getSingleton();
foreach ($this->_aPortlets as $k => $v) {
call_user_func_array(array(&$oPRegistry, 'registerPortlet'), $v);
}
foreach ($this->_aTriggers as $k => $v) {
call_user_func_array(array(&$oTRegistry, 'registerTrigger'), $v);
}
foreach ($this->_aActions as $k => $v) {
call_user_func_array(array(&$oARegistry, 'registerAction'), $v);
}
foreach ($this->_aPages as $k => $v) {
call_user_func_array(array(&$oPageRegistry, 'registerPage'), $v);
}
foreach ($this->_aAuthenticationProviders as $k => $v) {
call_user_func_array(array(&$oAPRegistry, 'registerAuthenticationProvider'), $v);
}
foreach ($this->_aAdminCategories as $k => $v) {
call_user_func_array(array(&$oAdminRegistry, 'registerCategory'), $v);
}
foreach ($this->_aAdminPages as $k => $v) {
call_user_func_array(array(&$oAdminRegistry, 'registerLocation'), $v);
}
foreach ($this->_aDashlets as $k => $v) {
call_user_func_array(array(&$oDashletRegistry, 'registerDashlet'), $v);
}
foreach ($this->_ai18n as $k => $v) {
call_user_func_array(array(&$oi18nRegistry, 'registeri18n'), $v);
}
foreach ($this->_ai18nLang as $k => $v) {
call_user_func_array(array(&$oi18nRegistry, 'registeri18nLang'), $v);
}
foreach ($this->_aLanguage as $k => $v) {
call_user_func_array(array(&$oi18nRegistry, 'registerLanguage'), $v);
}
foreach ($this->_aHelpLanguage as $k => $v) {
call_user_func_array(array(&$oKTHelpRegistry, 'registerHelp'), $v);
}
foreach ($this->_aWFTriggers as $k => $v) {
call_user_func_array(array(&$oWFTriggerRegistry, 'registerWorkflowTrigger'), $v);
}
foreach ($this->_aColumns as $k => $v) {
call_user_func_array(array(&$oColumnRegistry, 'registerColumn'), $v);
}
foreach ($this->_aViews as $k => $v) {
call_user_func_array(array(&$oColumnRegistry, 'registerView'), $v);
}
foreach ($this->_aNotificationHandlers as $k => $v) {
call_user_func_array(array(&$oNotificationHandlerRegistry, 'registerNotificationHandler'), $v);
}
foreach ($this->_aTemplateLocations as $k => $v) {
call_user_func_array(array(&$oTemplating, 'addLocation'), $v);
}
foreach ($this->_aCriteria as $k => $v) {
call_user_func_array(array(&$oCriteriaRegistry, 'registerCriterion'), $v);
}
foreach ($this->_aWidgets as $k => $v) {
call_user_func_array(array(&$oWidgetFactory, 'registerWidget'), $v);
}
foreach ($this->_aValidators as $k => $v) {
call_user_func_array(array(&$oValidatorFactory, 'registerValidator'), $v);
}
foreach ($this->_aInterceptors as $k => $v) {
call_user_func_array(array(&$oInterceptorRegistry, 'registerInterceptor'), $v);
}
}
function setup() {
return;
}
function run_setup() {
return true;
}
function setAvailability($sNamespace, $bAvailable = true){
$aValues = array('unavailable' => $bAvailable);
$aWhere = array('namespace' => $sNamespace);
$res = DBUtil::whereUpdate('plugins', $aValues, $aWhere);
return $res;
}
function stripKtDir($sFilename) {
if (strpos($sFilename, KT_DIR) === 0 ||strpos($sFilename, realpath(KT_DIR)) === 0) {
return substr($sFilename, strlen(KT_DIR) + 1);
}
return $sFilename;
}
function upgradePlugin($iStart, $iEnd) {
if (is_null($this->sSQLDir)) {
return $iEnd; // no db changes, must reach the "end".
}
global $default;
DBUtil::setupAdminDatabase();
for ($i = $iStart; $i <= $iEnd; $i++) {
$sqlfile = sprintf("%s/upgradeto%d.sql", $this->sSQLDir, $i);
if (!file_exists($sqlfile)) {
continue; // skip it.
}
$queries = SQLFile::sqlFromFile($sqlfile);
$res = DBUtil::runQueries($queries, $default->_admindb);
if (PEAR::isError($res)) {
return $i; // break out completely, indicating how far we got pre-error.
}
}
return $iEnd;
}
function register() {
$oEntity = KTPluginEntity::getByNamespace($this->sNamespace);
$friendly_name = '';
$iOrder = $this->iOrder;
if (!empty($this->sFriendlyName)) { $friendly_name = $this->sFriendlyName; }
if (!PEAR::isError($oEntity)) {
// check for upgrade.
$iEndVersion = 0; // dest.
if ($this->iVersion != $oEntity->getVersion()) {
// capture the filname version.
// remember to -start- the upgrade from the "next" version
$iEndVersion = $this->upgradePlugin($oEntity->getVersion()+1, $this->iVersion);
if ($iEndVersion != $this->iVersion) {
// we obviously failed.
$oEntity->updateFromArray(array(
'path' => $this->stripKtDir($this->sFilename),
'version' => $iEndVersion, // as far as we got.
'disabled' => true,
'unavailable' => false,
'friendlyname' => $friendly_name,
));
// FIXME we -really- need to raise an error here, somehow.
} else {
$oEntity->updateFromArray(array(
'path' => $this->stripKtDir($this->sFilename),
'version' => $this->iVersion,
'unavailable' => false,
'friendlyname' => $friendly_name,
'orderby' => $iOrder,
));
}
}
/* ** Quick fix for optimisation. Reread must run plugin setup. ** */
$this->setup();
return $oEntity;
}
if(PEAR::isError($oEntity) && !is_a($oEntity, 'KTEntityNoObjects')){
return $oEntity;
}
$disabled = 1;
if ($this->bAlwaysInclude || $this->autoRegister) {
$disabled = 0;
}
$iEndVersion = $this->upgradePlugin(0, $this->iVersion);
$oEntity = KTPluginEntity::createFromArray(array(
'namespace' => $this->sNamespace,
'path' => $this->stripKtDir($this->sFilename),
'version' => $iEndVersion,
'disabled' => $disabled,
'unavailable' => false,
'friendlyname' => $friendly_name,
'orderby' => $iOrder,
));
if (PEAR::isError($oEntity)) {
return $oEntity;
}
/* ** Quick fix for optimisation. Reread must run plugin setup. ** */
$this->setup();
return true;
}
function getURLPath($filename = null)
{
$config = KTConfig::getSingleton();
$dir = $config->get('KnowledgeTree/fileSystemRoot');
$path = substr(dirname($this->sFilename), strlen($dir));
if (!is_null($filename))
{
$path .= '/' . $filename;
}
return $path;
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -