Exemple #1
0
 /**
  * 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;
 }
Exemple #2
0
    /**
     * 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();
    }