/**
  * (non-PHPDoc)
  * @see \Icinga\Web\Form::onSuccess() For the method documentation.
  */
 public function onSuccess()
 {
     $this->assertPermission('monitoring/command/feature/object');
     $notifications = array(ToggleObjectFeatureCommand::FEATURE_ACTIVE_CHECKS => array($this->translate('Enabling active checks..'), $this->translate('Disabling active checks..')), ToggleObjectFeatureCommand::FEATURE_PASSIVE_CHECKS => array($this->translate('Enabling passive checks..'), $this->translate('Disabling passive checks..')), ToggleObjectFeatureCommand::FEATURE_OBSESSING => array($this->translate('Enabling obsessing..'), $this->translate('Disabling obsessing..')), ToggleObjectFeatureCommand::FEATURE_NOTIFICATIONS => array($this->translate('Enabling notifications..'), $this->translate('Disabling notifications..')), ToggleObjectFeatureCommand::FEATURE_EVENT_HANDLER => array($this->translate('Enabling event handler..'), $this->translate('Disabling event handler..')), ToggleObjectFeatureCommand::FEATURE_FLAP_DETECTION => array($this->translate('Enabling flap detection..'), $this->translate('Disabling flap detection..')));
     foreach ($this->objects as $object) {
         /** @var \Icinga\Module\Monitoring\Object\MonitoredObject $object */
         foreach ($this->getValues() as $feature => $enabled) {
             if ((bool) $object->{$feature} !== (bool) $enabled) {
                 $toggleFeature = new ToggleObjectFeatureCommand();
                 $toggleFeature->setFeature($feature)->setObject($object)->setEnabled($enabled);
                 $this->getTransport($this->request)->send($toggleFeature);
                 Notification::success($notifications[$feature][$enabled ? 0 : 1]);
             }
         }
     }
     return true;
 }
 public function renderToggleObjectFeature(ToggleObjectFeatureCommand $command)
 {
     if ($command->getEnabled() === true) {
         $commandPrefix = 'ENABLE';
     } else {
         $commandPrefix = 'DISABLE';
     }
     switch ($command->getFeature()) {
         case ToggleObjectFeatureCommand::FEATURE_ACTIVE_CHECKS:
             $commandFormat = sprintf('%s_%%s_CHECK', $commandPrefix);
             break;
         case ToggleObjectFeatureCommand::FEATURE_PASSIVE_CHECKS:
             $commandFormat = sprintf('%s_PASSIVE_%%s_CHECKS', $commandPrefix);
             break;
         case ToggleObjectFeatureCommand::FEATURE_OBSESSING:
             if ($command->getEnabled() === true) {
                 $commandPrefix = 'START';
             } else {
                 $commandPrefix = 'STOP';
             }
             $commandFormat = sprintf('%s_OBSESSING_OVER_%%s', $commandPrefix);
             break;
         case ToggleObjectFeatureCommand::FEATURE_NOTIFICATIONS:
             $commandFormat = sprintf('%s_%%s_NOTIFICATIONS', $commandPrefix);
             break;
         case ToggleObjectFeatureCommand::FEATURE_EVENT_HANDLER:
             $commandFormat = sprintf('%s_%%s_EVENT_HANDLER', $commandPrefix);
             break;
         case ToggleObjectFeatureCommand::FEATURE_FLAP_DETECTION:
             $commandFormat = sprintf('%s_%%s_FLAP_DETECTION', $commandPrefix);
             break;
         default:
             throw new InvalidArgumentException($command->getFeature());
     }
     $object = $command->getObject();
     if ($object->getType() === ToggleObjectFeatureCommand::TYPE_HOST) {
         /** @var \Icinga\Module\Monitoring\Object\Host $object */
         $commandString = sprintf($commandFormat . ';%s', 'HOST', $object->getName());
     } else {
         /** @var \Icinga\Module\Monitoring\Object\Service $object */
         $commandString = sprintf($commandFormat . ';%s;%s', 'SVC', $object->getHost()->getName(), $object->getName());
     }
     return $commandString;
 }
 public function renderToggleObjectFeature(ToggleObjectFeatureCommand $command)
 {
     if ($command->getEnabled() === true) {
         $enabled = true;
     } else {
         $enabled = false;
     }
     switch ($command->getFeature()) {
         case ToggleObjectFeatureCommand::FEATURE_ACTIVE_CHECKS:
             $attr = 'enable_active_checks';
             break;
         case ToggleObjectFeatureCommand::FEATURE_PASSIVE_CHECKS:
             $attr = 'enable_passive_checks';
             break;
         case ToggleObjectFeatureCommand::FEATURE_NOTIFICATIONS:
             $attr = 'enable_notifications';
             break;
         case ToggleObjectFeatureCommand::FEATURE_EVENT_HANDLER:
             $attr = 'enable_event_handler';
             break;
         case ToggleObjectFeatureCommand::FEATURE_FLAP_DETECTION:
             $attr = 'enable_flapping';
             break;
         default:
             throw new InvalidArgumentException($command->getFeature());
     }
     $endpoint = 'objects/';
     $object = $command->getObject();
     if ($object->getType() === ToggleObjectFeatureCommand::TYPE_HOST) {
         /** @var \Icinga\Module\Monitoring\Object\Host $object */
         $endpoint .= 'hosts';
     } else {
         /** @var \Icinga\Module\Monitoring\Object\Service $object */
         $endpoint .= 'services';
     }
     $data = array('attrs' => array($attr => $enabled));
     $this->applyFilter($data, $object);
     return IcingaApiCommand::create($endpoint, $data);
 }