public static function load($name, Module $module = null) { if ($module === null) { $basedir = Icinga::app()->getApplicationDir('tables'); $ns = '\\Icinga\\Web\\Tables\\'; } else { $basedir = $module->getBaseDir() . '/application/tables'; $ns = '\\Icinga\\Module\\' . ucfirst($module->getName()) . '\\Tables\\'; } if (preg_match('~^[a-z0-9/]+$~i', $name)) { $parts = preg_split('~/~', $name); $class = ucfirst(array_pop($parts)) . 'Table'; $file = sprintf('%s/%s/%s.php', rtrim($basedir, '/'), implode('/', $parts), $class); if (file_exists($file)) { require_once $file; $class = $ns . $class; return new $class(); } } throw new ProgrammingError(sprintf('Cannot load %s (%s), no such table', $name, $file)); }
public function moduleAction() { $this->assertPermission('config/modules'); $app = Icinga::app(); $manager = $app->getModuleManager(); $name = $this->getParam('name'); if ($manager->hasInstalled($name)) { $this->view->moduleData = $manager->select()->from('modules')->where('name', $name)->fetchRow(); if ($manager->hasLoaded($name)) { $module = $manager->getModule($name); } else { $module = new Module($app, $name, $manager->getModuleDir($name)); } $this->view->module = $module; $this->view->tabs = $module->getConfigTabs()->activate('info'); $this->view->moduleGitCommitId = Version::getGitHead($module->getBaseDir()); } else { $this->view->module = false; $this->view->tabs = null; } }