From 1b837c72a3b310778703b1ff77319d8e216a8b13 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Thu, 3 Aug 2023 17:54:17 +0200 Subject: [PATCH] Drop class `EditNodeForm` --- application/controllers/ProcessController.php | 8 - application/forms/EditNodeForm.php | 400 ------------------ 2 files changed, 408 deletions(-) delete mode 100644 application/forms/EditNodeForm.php diff --git a/application/controllers/ProcessController.php b/application/controllers/ProcessController.php index f61fb89..f9dcf61 100644 --- a/application/controllers/ProcessController.php +++ b/application/controllers/ProcessController.php @@ -295,14 +295,6 @@ class ProcessController extends Controller ->setProcess($bp) ->setSession($this->session()) ->handleRequest(); - } elseif ($action === 'editmonitored' && $canEdit) { - $form = $this->loadForm('EditNode') - ->setSuccessUrl(Url::fromRequest()->without('action')) - ->setProcess($bp) - ->setNode($bp->getNode($this->params->get('editmonitorednode'))) - ->setParentNode($node) - ->setSession($this->session()) - ->handleRequest(); } elseif ($action === 'delete' && $canEdit) { $form = $this->loadForm('DeleteNode') ->setSuccessUrl(Url::fromRequest()->without('action')) diff --git a/application/forms/EditNodeForm.php b/application/forms/EditNodeForm.php deleted file mode 100644 index a4cd919..0000000 --- a/application/forms/EditNodeForm.php +++ /dev/null @@ -1,400 +0,0 @@ -host, $suffix] = BpConfig::splitNodeName($this->getNode()->getName()); - if ($suffix !== 'Hoststatus') { - $this->service = $suffix; - } - - $view = $this->getView(); - $nodeName = $this->getNode()->getAlias() ?? $this->getNode()->getName(); - $this->addHtml( - '

' . $view->escape( - sprintf($this->translate('Modify "%s"'), $nodeName) - ) . '

' - ); - - $monitoredNodeType = null; - if ($this->isService()) { - $monitoredNodeType = 'service'; - } else { - $monitoredNodeType = 'host'; - } - - $type = $this->selectNodeType($monitoredNodeType); - switch ($type) { - case 'host': - $this->selectHost(); - break; - case 'service': - $this->selectService(); - break; - case 'process': - $this->selectProcess(); - break; - case 'new-process': - $this->addNewProcess(); - break; - case null: - $this->setSubmitLabel($this->translate('Next')); - return; - } - } - - protected function isService() - { - if (strpos($this->getNode()->getName(), ';Hoststatus')) { - return false; - } - return true; - } - - protected function addNewProcess() - { - $this->addElement('text', 'name', array( - 'label' => $this->translate('ID'), - 'required' => true, - 'disabled' => true, - 'description' => $this->translate( - 'This is the unique identifier of this process' - ), - )); - - $this->addElement('text', 'alias', array( - 'label' => $this->translate('Display Name'), - 'description' => $this->translate( - 'Usually this name will be shown for this node. Equals ID' - . ' if not given' - ), - )); - - $this->addElement('select', 'operator', array( - 'label' => $this->translate('Operator'), - 'required' => true, - 'multiOptions' => Node::getOperators() - )); - - $display = $this->getNode()->getDisplay() ?: 1; - $this->addElement('select', 'display', array( - 'label' => $this->translate('Visualization'), - 'required' => true, - 'description' => $this->translate( - 'Where to show this process' - ), - 'value' => $display, - 'multiOptions' => array( - "$display" => $this->translate('Toplevel Process'), - '0' => $this->translate('Subprocess only'), - ) - )); - - $this->addElement('text', 'infoUrl', array( - 'label' => $this->translate('Info URL'), - 'description' => $this->translate( - 'URL pointing to more information about this node' - ) - )); - } - - /** - * @return string|null - */ - protected function selectNodeType($monitoredNodeType = null) - { - if ($this->hasParentNode()) { - $this->addElement('hidden', 'node_type', [ - 'disabled' => true, - 'decorators' => ['ViewHelper'], - 'value' => $monitoredNodeType - ]); - - return $monitoredNodeType; - } elseif (! $this->hasProcesses()) { - $this->addElement('hidden', 'node_type', array( - 'ignore' => true, - 'decorators' => array('ViewHelper'), - 'value' => 'new-process' - )); - - return 'new-process'; - } - } - - protected function selectHost() - { - $this->addElement('select', 'children', array( - 'required' => true, - 'value' => $this->getNode()->getName(), - 'multiOptions' => $this->enumHostList(), - 'label' => $this->translate('Host'), - 'description' => $this->translate('The host for this business process node'), - 'validators' => [[new NoDuplicateChildrenValidator($this, $this->bp, $this->parent), true]] - )); - - $this->addHostOverrideCheckbox(); - $hostOverrideSent = $this->getSentValue('host_override'); - if ($hostOverrideSent === '1' - || ($hostOverrideSent === null && $this->getElement('host_override')->isChecked()) - ) { - $this->addHostOverrideElement(); - } - } - - protected function selectService() - { - $this->addHostElement(); - - if ($this->getSentValue('hosts') === null) { - $this->addServicesElement($this->host); - $this->addServiceOverrideCheckbox(); - if ($this->getElement('service_override')->isChecked() || $this->getSentValue('service_override') === '1') { - $this->addServiceOverrideElement(); - } - } elseif ($host = $this->getSentValue('hosts')) { - $this->addServicesElement($host); - $this->addServiceOverrideCheckbox(); - if ($this->getSentValue('service_override') === '1') { - $this->addServiceOverrideElement(); - } - } else { - $this->setSubmitLabel($this->translate('Next')); - } - } - - protected function addHostElement() - { - $this->addElement('select', 'hosts', array( - 'label' => $this->translate('Host'), - 'required' => true, - 'ignore' => true, - 'class' => 'autosubmit', - 'multiOptions' => $this->optionalEnum($this->enumHostForServiceList()), - )); - - $this->getElement('hosts')->setValue($this->host); - } - - protected function addHostOverrideCheckbox() - { - $this->addElement('checkbox', 'host_override', [ - 'ignore' => true, - 'class' => 'autosubmit', - 'value' => ! empty($this->parent->getStateOverrides($this->node->getName())), - 'label' => $this->translate('Override Host State'), - 'description' => $this->translate('Enable host state overrides') - ]); - } - - protected function addHostOverrideElement() - { - $this->addElement('stateOverrides', 'stateOverrides', [ - 'required' => true, - 'states' => $this->enumHostStateList(), - 'value' => $this->parent->getStateOverrides($this->node->getName()), - 'label' => $this->translate('State Overrides') - ]); - } - - protected function addServicesElement($host) - { - $this->addElement('select', 'children', array( - 'required' => true, - 'value' => $this->getNode()->getName(), - 'multiOptions' => $this->enumServiceList($host), - 'label' => $this->translate('Service'), - 'description' => $this->translate('The service for this business process node'), - 'validators' => [[new NoDuplicateChildrenValidator($this, $this->bp, $this->parent), true]] - )); - } - - protected function addServiceOverrideCheckbox() - { - $this->addElement('checkbox', 'service_override', [ - 'ignore' => true, - 'class' => 'autosubmit', - 'value' => ! empty($this->parent->getStateOverrides($this->node->getName())), - 'label' => $this->translate('Override Service State'), - 'description' => $this->translate('Enable service state overrides') - ]); - } - - protected function addServiceOverrideElement() - { - $this->addElement('stateOverrides', 'stateOverrides', [ - 'required' => true, - 'states' => $this->enumServiceStateList(), - 'value' => $this->parent->getStateOverrides($this->node->getName()), - 'label' => $this->translate('State Overrides') - ]); - } - - protected function selectProcess() - { - $this->addElement('multiselect', 'children', array( - 'label' => $this->translate('Process nodes'), - 'required' => true, - 'size' => 8, - 'multiOptions' => $this->enumProcesses(), - 'description' => $this->translate( - 'Other processes that should be part of this business process node' - ) - )); - } - - /** - * @param BpNode|null $node - * @return $this - */ - public function setParentNode(BpNode $node = null) - { - $this->parent = $node; - return $this; - } - - /** - * @return bool - */ - public function hasParentNode() - { - return $this->parent !== null; - } - - protected function hasProcesses() - { - return count($this->enumProcesses()) > 0; - } - - protected function enumProcesses() - { - $list = array(); - - $parents = array(); - - if ($this->hasParentNode()) { - $this->collectAllParents($this->parent, $parents); - $parents[$this->parent->getName()] = $this->parent; - } - - foreach ($this->bp->getNodes() as $node) { - if ($node instanceof BpNode && ! isset($parents[$node->getName()])) { - $list[$node->getName()] = $node->getName(); // display name? - } - } - - return $list; - } - - /** - * Collect the given node's parents recursively into the given array by their names - * - * @param BpNode $node - * @param BpNode[] $parents - */ - protected function collectAllParents(BpNode $node, array &$parents) - { - foreach ($node->getParents() as $parent) { - $parents[$parent->getName()] = $parent; - $this->collectAllParents($parent, $parents); - } - } - - /** - * @param Node $node - * @return $this - */ - public function setNode(Node $node) - { - $this->node = $node; - return $this; - } - - public function getNode() - { - return $this->node; - } - - public function onSuccess() - { - $changes = ProcessChanges::construct($this->bp, $this->session); - - $changes->deleteNode($this->node, $this->parent->getName()); - - switch ($this->getValue('node_type')) { - case 'host': - case 'service': - $stateOverrides = $this->getValue('stateOverrides') ?: []; - if (! empty($stateOverrides)) { - $stateOverrides = array_merge( - $this->parent->getStateOverrides(), - [$this->getValue('children') => $stateOverrides] - ); - } else { - $stateOverrides = $this->parent->getStateOverrides(); - unset($stateOverrides[$this->getValue('children')]); - } - - $changes->modifyNode($this->parent, ['stateOverrides' => $stateOverrides]); - // Fallthrough - case 'process': - $changes->addChildrenToNode($this->getValue('children'), $this->parent); - break; - case 'new-process': - $properties = $this->getValues(); - unset($properties['name']); - if ($this->hasParentNode()) { - $properties['parentName'] = $this->parent->getName(); - } - $changes->createNode($this->getValue('name'), $properties); - break; - } - - // Trigger session destruction to make sure it get's stored. - // TODO: figure out why this is necessary, might be an unclean shutdown on redirect - unset($changes); - - parent::onSuccess(); - } - - public function isValid($data) - { - // Don't allow to override disabled elements. This is probably too harsh - // but also wouldn't be necessary if this would be a Icinga\Web\Form... - foreach ($this->getElements() as $element) { - /** @var \Zend_Form_Element $element */ - if ($element->getAttrib('disabled')) { - $data[$element->getName()] = $element->getValue(); - } - } - - return parent::isValid($data); - } -}