From a2a645892d16c5048065521eecce460023ad706f Mon Sep 17 00:00:00 2001
From: Eric Lippmann <eric.lippmann@netways.de>
Date: Tue, 16 Sep 2014 18:46:58 +0200
Subject: [PATCH] monitoring: Add `HostController'

---
 .../controllers/HostController.php            | 69 +++++++++++++++++++
 1 file changed, 69 insertions(+)
 create mode 100644 modules/monitoring/application/controllers/HostController.php

diff --git a/modules/monitoring/application/controllers/HostController.php b/modules/monitoring/application/controllers/HostController.php
new file mode 100644
index 000000000..7799cb4ec
--- /dev/null
+++ b/modules/monitoring/application/controllers/HostController.php
@@ -0,0 +1,69 @@
+<?php
+// {{{ICINGA_LICENSE_HEADER}}}
+// {{{ICINGA_LICENSE_HEADER}}}
+
+use Icinga\Module\Monitoring\Form\Command\Object\AcknowledgeProblemCommandForm;
+use Icinga\Module\Monitoring\Form\Command\Object\AddCommentCommandForm;
+use Icinga\Module\Monitoring\Form\Command\Object\ScheduleHostCheckCommandForm;
+use Icinga\Module\Monitoring\Form\Command\Object\ScheduleHostDowntimeCommandForm;
+use Icinga\Module\Monitoring\Object\Host;
+use Icinga\Module\Monitoring\Web\Controller\MonitoredObjectController;
+
+class Monitoring_HostController extends MonitoredObjectController
+{
+    /**
+     * (non-PHPDoc)
+     * @see MonitoredObjectController::$commandRedirectUrl For the property documentation.
+     */
+    protected $commandRedirectUrl = 'monitoring/host/show';
+
+    /**
+     * Fetch the requested host from the monitoring backend
+     *
+     * @throws Zend_Controller_Action_Exception If the host was not found
+     */
+    public function init()
+    {
+        $host = new Host($this->backend, $this->params->get('host'));
+        if ($host->fetch() === false) {
+            throw new Zend_Controller_Action_Exception($this->translate('Host not found'));
+        }
+        $this->object = $host;
+    }
+
+    /**
+     * Acknowledge a host problem
+     */
+    public function acknowledgeProblemAction()
+    {
+        $this->view->title = $this->translate('Acknowledge Host Problem');
+        $this->handleCommandForm(new AcknowledgeProblemCommandForm());
+    }
+
+    /**
+     * Add a host comment
+     */
+    public function addCommentAction()
+    {
+        $this->view->title = $this->translate('Add Host Comment');
+        $this->handleCommandForm(new AddCommentCommandForm());
+    }
+
+    /**
+     * Reschedule a host check
+     */
+    public function rescheduleCheckAction()
+    {
+        $this->view->title = $this->translate('Reschedule Host Check');
+        $this->handleCommandForm(new ScheduleHostCheckCommandForm());
+    }
+
+    /**
+     * Schedule a host downtime
+     */
+    public function scheduleDowntimeAction()
+    {
+        $this->view->title = $this->translate('Schedule Host Downtime');
+        $this->handleCommandForm(new ScheduleHostDowntimeCommandForm());
+    }
+}