From f66ab8dae2f3d0418759f81a3a64dc9517a62449 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 15:17:31 +0200 Subject: Adding upstream version 1.10.2. Signed-off-by: Daniel Baumann --- application/forms/IcingaAddServiceSetForm.php | 123 ++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 application/forms/IcingaAddServiceSetForm.php (limited to 'application/forms/IcingaAddServiceSetForm.php') diff --git a/application/forms/IcingaAddServiceSetForm.php b/application/forms/IcingaAddServiceSetForm.php new file mode 100644 index 0000000..b889110 --- /dev/null +++ b/application/forms/IcingaAddServiceSetForm.php @@ -0,0 +1,123 @@ +object === null) { + $this->object = IcingaServiceSet::create( + ['object_type' => 'object'], + $this->db + ); + } + + $object = $this->object(); + if ($this->hasBeenSent()) { + $object->set('object_name', $this->getSentValue('imports')); + $object->set('imports', $object->getObjectName()); + } + + if (! $object->hasBeenLoadedFromDb()) { + $this->addSingleImportsElement(); + } + + if (count($object->get('imports'))) { + $description = $object->getResolvedProperty('description'); + if ($description) { + $this->addHtmlHint($description); + } + } + + $this->addHidden('object_type', 'object'); + $this->setButtons(); + } + + protected function setObjectSuccessUrl() + { + if ($this->host) { + $this->setSuccessUrl( + 'director/host/services', + array('name' => $this->host->getObjectName()) + ); + } else { + parent::setObjectSuccessUrl(); + } + } + + public function setHost(IcingaHost $host) + { + $this->host = $host; + return $this; + } + /** + * @param IcingaHost[] $hosts + * @return $this + */ + public function setHosts(array $hosts) + { + $this->hosts = $hosts; + return $this; + } + + protected function addSingleImportsElement() + { + $enum = $this->enumAllowedTemplates(); + + $this->addElement('select', 'imports', array( + 'label' => $this->translate('Service set'), + 'description' => $this->translate( + 'The service Set that should be assigned' + ), + 'required' => true, + 'multiOptions' => $this->optionallyAddFromEnum($enum), + 'class' => 'autosubmit' + )); + + return $this; + } + + public function onSuccess() + { + if ($this->host !== null) { + $this->object->set('host_id', $this->host->get('id')); + parent::onSuccess(); + return; + } + + $plain = $this->object->toPlainObject(); + $db = $this->object->getConnection(); + + foreach ($this->hosts as $host) { + IcingaServiceSet::fromPlainObject($plain, $db) + ->set('host_id', $host->get('id')) + ->store(); + } + + $msg = sprintf( + $this->translate('The Service Set "%s" has been added to %d hosts'), + $this->object->getObjectName(), + count($this->hosts) + ); + + $this->redirectOnSuccess($msg); + } +} -- cgit v1.2.3