示例#1
0
 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));
 }
示例#2
0
 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;
     }
 }