. **/ /** * Class manages popup forwarding when popup is opened with 'popup' action. */ class CControllerPopup extends CController { /** * List of supported popups. */ protected array $supported_popups; /** * Controller instance of the popup. */ protected CController $popup_controller; /** * Current action name. */ private string $action; protected function init() { $this->disableCsrfValidation(); $this->supported_popups = [ 'acknowledge.edit' => _('Update problem'), 'action.edit' => _('Action edit'), 'connector.edit' => _('Connector edit'), 'correlation.edit' => _('Correlation edit'), 'discovery.edit' => _('Discovery rule edit'), 'graph.edit' => _('Graph edit'), 'graph.prototype.edit' => _('Graph prototype edit'), 'host.edit' => _('Host edit'), 'host.prototype.edit' => _('Host prototype edit'), 'host.wizard.edit' => _('Host Wizard'), 'hostgroup.edit' => _('Host group edit'), 'item.edit' => _('Item edit'), 'item.prototype.edit' => _('Item prototype edit'), 'maintenance.edit' => _('Maintenance edit'), 'mediatype.edit' => _('Media type edit'), 'module.edit' => _('Module edit'), 'proxy.edit' => _('Proxy edit'), 'proxygroup.edit' => _('Proxy group edit'), 'templategroup.edit' => _('Template group edit'), 'script.edit' => _('Script edit'), 'service.edit' => _('Service edit'), 'sla.edit' => _('SLA edit'), 'template.edit' => _('Template edit'), 'token.edit' => _('Token edit'), 'trigger.edit' => _('Trigger edit'), 'trigger.prototype.edit' => _('Trigger prototype edit') ]; } protected function checkInput() { $fields = [ 'popup' => 'required|in '.implode(',', array_keys($this->supported_popups)) ]; $ret = $this->validateInput($fields); if ($ret) { /** @var CRouter $router */ $router = clone APP::Component()->get('router'); $this->action = $this->getInput('popup'); $router->setAction($this->action); $popup_controller_class = $router->getController(); $this->popup_controller = new $popup_controller_class; $ret = $this->popup_controller->checkInput(); } if (!$ret) { $this->setResponse(new CControllerResponseFatal()); } return $ret; } protected function checkPermissions() { return $this->popup_controller->checkPermissions(); } protected function doAction() { $data = [ 'popup' => [ 'action' => $this->action, 'action_parameters' => $this->popup_controller->getInputAll() ] ]; $response = (new CControllerResponseData($data)); $response->setTitle($this->supported_popups[$this->getInput('popup')]); $this->setResponse($response); } }