Commit 66b692f759fd718af68a172df5f9586e00459f6f

Authored by nbm
1 parent c2b00048

KTPlugin is the base class for plugins - actions, portlets, triggers,

and pages should be registered via a plugin.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4132 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 84 additions and 0 deletions
lib/plugins/plugin.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +class KTPlugin {
  4 + var $sNamespace;
  5 + var $sFilename = null;
  6 +
  7 + var $_aPortlets = array();
  8 + var $_aTriggers = array();
  9 + var $_aActions = array();
  10 +
  11 + function KTPlugin($sFilename = null) {
  12 + $this->sFilename = $sFilename;
  13 + }
  14 +
  15 + function setFilename($sFilename) {
  16 + $this->sFilename = $sFilename;
  17 + }
  18 +
  19 + function registerPortlet($aLocation, $sPortletClassName, $sPortletNamespace, $sFilename = null) {
  20 + $sFilename = $this->_fixFilename($sFilename);
  21 + $this->_aPortlets[$sPortletNamespace] = array($aLocation, $sPortletClassName, $sPortletNamespace, $sFilename, &$this);
  22 + }
  23 +
  24 + function registerTrigger($sAction, $sStage, $sTriggerClassName, $sTriggerNamespace, $sFilename = null) {
  25 + $sFilename = $this->_fixFilename($sFilename);
  26 + $this->_aTriggers[$sTriggerNamespace] = array($sAction, $sStage, $sTriggerClassName, $sTriggerNamespace, $sFilename, &$this);
  27 + }
  28 +
  29 + function registerAction($sActionType, $sActionClassName, $sActionNamespace, $sFilename = null) {
  30 + $sFilename = $this->_fixFilename($sFilename);
  31 + $this->_aActions[$sActionNamespace] = array($sActionType, $sActionClassName, $sActionNamespace, $sFilename, &$this);
  32 + }
  33 +
  34 + function registerPage($sWebPath, $sPageClassName, $sFilename = null) {
  35 + $sFilename = $this->_fixFilename($sFilename);
  36 + $sWebPath = sprintf("%s/%s", $this->sNamespace, $sWebPath);
  37 + $this->_aPages[$sWebPath] = array($sWebPath, $sPageClassName, $sFilename, &$this);
  38 + }
  39 +
  40 + function getPagePath($sPath) {
  41 + return sprintf('/plugin.php/%s/%s', $this->sNamespace, $sPath);
  42 + }
  43 +
  44 + function _fixFilename($sFilename) {
  45 + if (empty($sFilename)) {
  46 + $sFilename = $this->sFilename;
  47 + } else if (substr($sFilename, 0, 1) != '/') {
  48 + if ($this->sFilename) {
  49 + $sDirPath = dirname($this->sFilename);
  50 + $sFilename = sprintf("%s/%s", $sDirPath, $sFilename);
  51 + }
  52 + }
  53 + return $sFilename;
  54 + }
  55 +
  56 + function register() {
  57 + require_once(KT_LIB_DIR . '/actions/actionregistry.inc.php');
  58 + require_once(KT_LIB_DIR . '/actions/portletregistry.inc.php');
  59 + require_once(KT_LIB_DIR . '/triggers/triggerregistry.inc.php');
  60 + require_once(KT_LIB_DIR . '/plugins/pageregistry.inc.php');
  61 +
  62 + $oPRegistry =& KTPortletRegistry::getSingleton();
  63 + $oTRegistry =& KTTriggerRegistry::getSingleton();
  64 + $oARegistry =& KTActionRegistry::getSingleton();
  65 + $oPageRegistry =& KTPageRegistry::getSingleton();
  66 +
  67 + foreach ($this->_aPortlets as $k => $v) {
  68 + call_user_func_array(array(&$oPRegistry, 'registerPortlet'), $v);
  69 + }
  70 +
  71 + foreach ($this->_aTriggers as $k => $v) {
  72 + call_user_func_array(array(&$oTRegistry, 'registerTrigger'), $v);
  73 + }
  74 +
  75 + foreach ($this->_aActions as $k => $v) {
  76 + call_user_func_array(array(&$oARegistry, 'registerAction'), $v);
  77 + }
  78 +
  79 + foreach ($this->_aPages as $k => $v) {
  80 + call_user_func_array(array(&$oPageRegistry, 'registerPage'), $v);
  81 + }
  82 + }
  83 +}
  84 +