Commit c04e1ea9e0c45a5be87fdb6544ab1ef79de3348a

Authored by nbm
1 parent 5b940558

Registry for plugins loaded on the system


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4138 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/plugins/pluginregistry.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +class KTPluginRegistry {
  4 + var $_aPluginDetails = array();
  5 + var $_aPlugins = array();
  6 +
  7 + function &getSingleton() {
  8 + if (!KTUtil::arrayGet($GLOBALS, 'oKTPluginRegistry')) {
  9 + $GLOBALS['oKTPluginRegistry'] = new KTPluginRegistry;
  10 + }
  11 + return $GLOBALS['oKTPluginRegistry'];
  12 + }
  13 +
  14 + function registerPlugin($sClassName, $sNamespace, $sFilename = null) {
  15 + $this->_aPluginDetails[$sNamespace] = array($sClassName, $sNamespace, $sFilename);
  16 + }
  17 +
  18 + function &getPlugin($sNamespace) {
  19 + $oPlugin =& KTUtil::arrayGet($this->_aPlugins, $sNamespace);
  20 + if (!empty($oPlugin)) {
  21 + return $oPlugin;
  22 + }
  23 + $aDetails = KTUtil::arrayGet($this->_aPluginDetails, $sNamespace);
  24 + if (empty($aDetails)) {
  25 + return null;
  26 + }
  27 + $sFilename = $aDetails[2];
  28 + if (!empty($sFilename)) {
  29 + require_once($sFilename);
  30 + }
  31 + $sClassName = $aDetails[0];
  32 + return new $sClassName($sFilename);
  33 + }
  34 +}
  35 +