context = $context; $modulesRoot = $context->router->getModulesPath(); $modules = \Entity\Module::getActivated(); $ids = array(); foreach ($modules as $i) { $modulePath = "{$modulesRoot}{$i->directory}/main.php"; if (file_exists($modulePath) && $this->loadModule($modulePath, $i)) { $ids[] = $i->id; } else { $i->active = false; $i->save(); } } \Tools\Hooks::loadHooks(\Entity\ModuleHook::getModules($ids)); } private function loadModule($path, $module) { $this->modules[] = $module; return true; } public function listAvailableModules() { $modulesRoot = $context->router->getModulesPath(); $modules = scandir($modulesRoot, SCANDIR_SORT_NONE); foreach ($modules as $i) { $path = $modulesRoot.$i; if ($i == '.' || $i == '..' || !is_dir($path)) continue; $this->loadModule($path); } } public function __get($key) { switch ($key) { case "modules": return $this->modules; break; } throw new \Exception("Cannot access attribute {$key}"); } }