SlimCMS\Modules\SModuleManager::loadModule PHP Method

loadModule() public method

Load module in container
public loadModule ( string $name, stdClass $config, stdClass $info ) : boolean
$name string
$config stdClass
$info stdClass
return boolean
    public function loadModule($name, $config, $info)
    {
        $ext = false;
        $baseClass = $this->moduleNamespace . '\\' . $name . '\\Module';
        $cl = $baseClass;
        if (!$config->params->installed || !$config->params->active || $config->params->only_auth && true) {
            return false;
        }
        if ($this->moduleContainer->offsetExists($this->moduleNamespace . '\\' . $name)) {
            return false;
        }
        if (isset($config->class_ext)) {
            $baseClass = $cl;
            $cl = $config->class_ext;
            $ext = true;
        }
        if (!class_exists($cl)) {
            throw new \Exception("Class \"{$cl}\" not found", 1);
        }
        if ($ext) {
            $p = trim(get_parent_class($cl), '\\');
            $b = trim($baseClass, '\\');
            if ($p != $b) {
                throw new \Exception("Class \"{$cl}\" not extend base class \"{$baseClass}\"", 1);
            }
        }
        if (isset($config->dependeny) && is_array($config->dependeny)) {
            $this->checkDependecies($config->dependeny);
        }
        $this->moduleContainer->singleton($this->moduleNamespace . '\\' . $name, function () use($info, $config, $cl) {
            $module = new $cl();
            $module->setInfo($info);
            $module->setConfig($config->params);
            return $module;
        });
        $this->moduleContainer->alias($this->moduleNamespace . '\\' . $name, $info->system_name);
        $this->modulesName[] = $info->system_name;
        if (isset($config->class_decorators) && is_array($config->class_decorators)) {
            $this->decoratorsInit($this->moduleNamespace . '\\' . $name, $config->class_decorators);
        }
        return true;
    }