/** * Setup the current instance of the Zikula_View class and return it back to the module. * * @param string $moduleName Module name. * @param string $pluginName Plugin name. * @param integer|null $caching Whether or not to cache (Zikula_View::CACHE_*) or use config variable (null). * @param string $cache_id Cache Id. * * @return Zikula_View_Plugin instance. */ public static function getPluginInstance($moduleName, $pluginName, $caching = null, $cache_id = null) { $serviceManager = ServiceUtil::getManager(); $serviceId = strtolower(sprintf('zikula.renderplugin.%s.%s', $moduleName, $pluginName)); if (!$serviceManager->has($serviceId)) { $view = new self($serviceManager, $moduleName, $pluginName, $caching); $serviceManager->set($serviceId, $view); } else { return $serviceManager->get($serviceId); } if (!is_null($caching)) { $view->caching = $caching; } if (!is_null($cache_id)) { $view->cache_id = $cache_id; } if ($moduleName === null) { $moduleName = $view->toplevelmodule; } if (!array_key_exists($moduleName, $view->module)) { $view->module[$moduleName] = ModUtil::getInfoFromName($moduleName); //$instance->modinfo = ModUtil::getInfoFromName($module); $view->_addPluginsDir($moduleName); } // for {gt} template plugin to detect gettext domain if ($view->module[$moduleName]['type'] == ModUtil::TYPE_MODULE || $view->module[$moduleName]['type'] == ModUtil::TYPE_SYSTEM) { $view->domain = ZLanguage::getModulePluginDomain($view->module[$moduleName]['name'], $view->getPluginName()); } elseif ($view->module[$moduleName]['type'] == ModUtil::TYPE_CORE) { $view->domain = ZLanguage::getSystemPluginDomain($view->getPluginName()); } return $view; }
/** * Internal setup. * * @throws LogicException If plugin is not named correctly. * * @return void */ private function _setup() { $this->className = get_class($this); $this->serviceId = PluginUtil::getServiceId($this->className); $this->baseDir = dirname($this->getReflection()->getFileName()); // Split class name into parts - commented in if statement below. $p = explode('_', $this->className); if (strpos($this->serviceId, 'moduleplugin') === 0) { // ModulePlugin_{ModuleName}_{PluginName}_Plugin // $p[1] = ModuleName, $p[2] = PluginName $this->moduleName = $p[1]; $this->pluginName = $p[2]; $this->pluginType = self::TYPE_MODULE; $this->domain = ZLanguage::getModulePluginDomain($this->moduleName, $this->pluginName); ZLanguage::bindModulePluginDomain($this->moduleName, $this->pluginName); } elseif (strpos($this->serviceId, 'systemplugin') === 0) { // SystemPlugin_{PluginName}_Plugin // $p[1] = ModuleName $this->moduleName = 'zikula'; $this->pluginName = $p[1]; $this->pluginType = self::TYPE_SYSTEM; $this->domain = ZLanguage::getSystemPluginDomain($this->moduleName, $this->pluginName); ZLanguage::bindSystemPluginDomain($this->pluginName); } else { throw new LogicException(sprintf('This class %s does not appear to be named correctly. System plugins should be named {SystemPlugin}_{Name}_Plugin, module plugins should be named {ModulePlugin}_{ModuleName}_{PluginName}_Plugin.', $this->className)); } $this->meta = $this->getMeta(); }