summaryrefslogtreecommitdiffstats
path: root/library/Director/Hook/JobHook.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--library/Director/Hook/JobHook.php86
1 files changed, 86 insertions, 0 deletions
diff --git a/library/Director/Hook/JobHook.php b/library/Director/Hook/JobHook.php
new file mode 100644
index 0000000..d9a81a9
--- /dev/null
+++ b/library/Director/Hook/JobHook.php
@@ -0,0 +1,86 @@
+<?php
+
+namespace Icinga\Module\Director\Hook;
+
+use Icinga\Module\Director\Db;
+use Icinga\Module\Director\Objects\DirectorJob;
+use Icinga\Module\Director\Web\Form\QuickForm;
+
+abstract class JobHook
+{
+ /** @var Db */
+ private $db;
+
+ /** @var DirectorJob */
+ private $jobDefinition;
+
+ public static function getDescription(QuickForm $form)
+ {
+ return false;
+ }
+
+ abstract public function run();
+
+ public function isPending()
+ {
+ // TODO: Can be overridden, double-check whether this is necessary
+ }
+
+ public function setDefinition(DirectorJob $definition)
+ {
+ $this->jobDefinition = $definition;
+ return $this;
+ }
+
+ protected function getSetting($key, $default = null)
+ {
+ return $this->jobDefinition->getSetting($key, $default);
+ }
+
+ public function getName()
+ {
+ $parts = explode('\\', get_class($this));
+ $class = preg_replace('/Job$/', '', 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 function exportSettings()
+ {
+ return $this->jobDefinition->getSettings();
+ }
+
+ public static function getSuggestedRunInterval(QuickForm $form)
+ {
+ return 900;
+ }
+
+ /**
+ * Override this method if you want to extend the settings form
+ *
+ * @param QuickForm $form QuickForm that should be extended
+ * @return QuickForm
+ */
+ public static function addSettingsFormFields(QuickForm $form)
+ {
+ return $form;
+ }
+
+ public function setDb(Db $db)
+ {
+ $this->db = $db;
+ return $this;
+ }
+
+ protected function db()
+ {
+ return $this->db;
+ }
+}