示例#1
0
 public static function load($name, Module $module = null)
 {
     if ($module === null) {
         $basedir = Icinga::app()->getApplicationDir('forms');
         $ns = '\\Icinga\\Web\\Forms\\';
     } else {
         $basedir = $module->getFormDir();
         $ns = '\\Icinga\\Module\\' . ucfirst($module->getName()) . '\\Forms\\';
     }
     if (preg_match('~^[a-z0-9/]+$~i', $name)) {
         $parts = preg_split('~/~', $name);
         $class = ucfirst(array_pop($parts)) . 'Form';
         $file = sprintf('%s/%s/%s.php', rtrim($basedir, '/'), implode('/', $parts), $class);
         if (file_exists($file)) {
             require_once $file;
             $class = $ns . $class;
             $options = array();
             if ($module !== null) {
                 $options['icingaModule'] = $module;
             }
             return new $class($options);
         }
     }
     throw new ProgrammingError(sprintf('Cannot load %s (%s), no such form', $name, $file));
 }
 /**
  * Collects the tabs from the createProvidedTabs() method in the configuration controller
  *
  * If the module doesn't have the given controller or createProvidedTabs method in the controller
  * an empty array will be returned
  *
  * @param string $controller            The name of the controller that provides tabs via createProvidedTabs
  * @param Module $module                The module instance that provides the controller
  *
  * @return array
  */
 private static function createModuleConfigurationTabs($controller, Module $module)
 {
     $controllerDir = $module->getControllerDir();
     $name = $module->getName();
     $controllerDir = $controllerDir . '/' . $controller . '.php';
     $controllerName = ucfirst($name) . '_' . $controller;
     if (is_readable($controllerDir)) {
         require_once realpath($controllerDir);
         if (!method_exists($controllerName, "createProvidedTabs")) {
             return array();
         }
         $tab = $controllerName::createProvidedTabs();
         if (!is_array($tab)) {
             $tab = array($name => $tab);
         }
         return $tab;
     }
     return array();
 }
 /**
  * Collects the tabs from the createProvidedTabs() method in the configuration controller
  *
  * If the module doesn't have the given controller or createProvidedTabs method in the controller an empty array
  * will be returned
  *
  * @param   string  $controllerName The name of the controller that provides tabs via createProvidedTabs
  * @param   Module  $module         The module instance that provides the controller
  *
  * @return  array
  */
 private static function createModuleConfigurationTabs($controllerName, Module $module)
 {
     // TODO(el): Only works for controllers w/o namepsace: https://dev.icinga.org/issues/4149
     $controllerDir = $module->getControllerDir();
     $name = $module->getName();
     $controllerDir = $controllerDir . '/' . $controllerName . '.php';
     $controllerName = ucfirst($name) . '_' . $controllerName;
     if (is_readable($controllerDir)) {
         require_once realpath($controllerDir);
         if (!method_exists($controllerName, 'createProvidedTabs')) {
             return array();
         }
         $tab = $controllerName::createProvidedTabs();
         if (!is_array($tab)) {
             $tab = array($name => $tab);
         }
         return $tab;
     }
     return array();
 }