setPostContentType(self::POST_CONTENT_TYPE_JSON); $this->disableCsrfValidation(); } protected function checkInput(): bool { $fields = [ 'conditiontype' => 'db corr_condition.type|in '.implode(',', [ZBX_CORR_CONDITION_OLD_EVENT_TAG, ZBX_CORR_CONDITION_NEW_EVENT_TAG, ZBX_CORR_CONDITION_NEW_EVENT_HOSTGROUP, ZBX_CORR_CONDITION_EVENT_TAG_PAIR, ZBX_CORR_CONDITION_OLD_EVENT_TAG_VALUE, ZBX_CORR_CONDITION_NEW_EVENT_TAG_VALUE ]) ]; $ret = $this->validateInput($fields); if (!$ret) { $this->setResponse( (new CControllerResponseData(['main_block' => json_encode([ 'error' => [ 'messages' => array_column(get_and_clear_messages(), 'message') ] ])]))->disableView() ); } return $ret; } protected function checkPermissions(): bool { return $this->checkAccess(CRoleHelper::UI_CONFIGURATION_EVENT_CORRELATION); } protected function doAction(): void { $output = [ 'title' => _('New condition'), 'conditiontype' => ZBX_CORR_CONDITION_OLD_EVENT_TAG, 'row_index' => $this->getInput('row_index', 0), 'last_type' => $this->getConditionLastType(), 'user' => [ 'debug_mode' => $this->getDebugMode() ] ]; $this->setResponse(new CControllerResponseData($output)); } /** * Remember the last selected condition. * * @return string */ protected function getConditionLastType(): string { $last_type = CProfile::get('popup.condition.events_last_type', ZBX_CORR_CONDITION_OLD_EVENT_TAG); if ($this->hasInput('conditiontype') && $this->getInput('conditiontype') != $last_type) { CProfile::update('popup.condition.events_last_type', $this->getInput('conditiontype'), PROFILE_TYPE_INT); $last_type = $this->getInput('conditiontype'); } return $last_type; } }