diff options
Diffstat (limited to 'library/Director/Hook/DataTypeHook.php')
-rw-r--r-- | library/Director/Hook/DataTypeHook.php | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/library/Director/Hook/DataTypeHook.php b/library/Director/Hook/DataTypeHook.php new file mode 100644 index 0000000..1eb58d6 --- /dev/null +++ b/library/Director/Hook/DataTypeHook.php @@ -0,0 +1,59 @@ +<?php + +namespace Icinga\Module\Director\Hook; + +use Icinga\Module\Director\Web\Form\DirectorObjectForm; +use Icinga\Module\Director\Web\Form\QuickForm; + +abstract class DataTypeHook +{ + protected $settings = array(); + + public function getName() + { + $parts = explode('\\', get_class($this)); + $class = preg_replace('/DataType/', '', array_pop($parts)); + + if (array_shift($parts) === 'Icinga' && array_shift($parts) === 'Module') { + $module = array_shift($parts); + if ($module !== 'Director') { + return sprintf('%s (%s)', $class, $module); + } + } + + return $class; + } + + public static function getFormat() + { + return 'string'; + } + + /** + * @param $name + * @param QuickForm|DirectorObjectForm $form + * + * @return \Zend_Form_Element + */ + abstract public function getFormElement($name, QuickForm $form); + + public static function addSettingsFormFields(QuickForm $form) + { + return $form; + } + + public function setSettings($settings) + { + $this->settings = $settings; + return $this; + } + + public function getSetting($name, $default = null) + { + if (array_key_exists($name, $this->settings)) { + return $this->settings[$name]; + } else { + return $default; + } + } +} |