class CControllerPopupAcknowledgeEdit extends CController {
protected function init() {
$this->disableCsrfValidation();
protected function checkInput() {
'eventids' => 'required|array_db acknowledges.eventid',
'message' => 'db acknowledges.message|flags '.P_CRLF,
'scope' => 'in '.ZBX_ACKNOWLEDGE_SELECTED.','.ZBX_ACKNOWLEDGE_PROBLEM,
'change_severity' => 'db acknowledges.action|in '.ZBX_PROBLEM_UPDATE_NONE.','.ZBX_PROBLEM_UPDATE_SEVERITY,
'severity' => 'ge '.TRIGGER_SEVERITY_NOT_CLASSIFIED.'|le '.TRIGGER_SEVERITY_COUNT,
'acknowledge_problem' => 'db acknowledges.action|in '.ZBX_PROBLEM_UPDATE_NONE.','.ZBX_PROBLEM_UPDATE_ACKNOWLEDGE,
'unacknowledge_problem' => 'db acknowledges.action|in '.ZBX_PROBLEM_UPDATE_NONE.','.ZBX_PROBLEM_UPDATE_UNACKNOWLEDGE,
'close_problem' => 'db acknowledges.action|in '.ZBX_PROBLEM_UPDATE_NONE.','.ZBX_PROBLEM_UPDATE_CLOSE,
'suppress_problem' => 'db acknowledges.action|in '.ZBX_PROBLEM_UPDATE_NONE.','.ZBX_PROBLEM_UPDATE_SUPPRESS,
'unsuppress_problem' => 'db acknowledges.action|in '.ZBX_PROBLEM_UPDATE_NONE.','.ZBX_PROBLEM_UPDATE_UNSUPPRESS,
'change_rank' => 'db acknowledges.action|in '.ZBX_PROBLEM_UPDATE_NONE.','.ZBX_PROBLEM_UPDATE_RANK_TO_CAUSE.','.ZBX_PROBLEM_UPDATE_RANK_TO_SYMPTOM
$ret = $this->validateInput($fields);
(new CControllerResponseData(['main_block' => json_encode([
'messages' => array_column(get_and_clear_messages(), 'message')
protected function checkPermissions() {
if (!$this->checkAccess(CRoleHelper::ACTIONS_ACKNOWLEDGE_PROBLEMS)
&& !$this->checkAccess(CRoleHelper::ACTIONS_CLOSE_PROBLEMS)
&& !$this->checkAccess(CRoleHelper::ACTIONS_CHANGE_SEVERITY)
&& !$this->checkAccess(CRoleHelper::ACTIONS_ADD_PROBLEM_COMMENTS)
&& !$this->checkAccess(CRoleHelper::ACTIONS_SUPPRESS_PROBLEMS)
&& !$this->checkAccess(CRoleHelper::ACTIONS_CHANGE_PROBLEM_RANKING)) {
$events = API::Event()->get([
'eventids' => $this->getInput('eventids'),
'source' => EVENT_SOURCE_TRIGGERS,
'object' => EVENT_OBJECT_TRIGGER
return $events == count($this->getInput('eventids'));
protected function doAction() {
'eventids' => $this->getInput('eventids'),
'message' => $this->getInput('message', ''),
'scope' => (int) $this->getInput('scope', ZBX_ACKNOWLEDGE_SELECTED),
'change_severity' => $this->getInput('change_severity', ZBX_PROBLEM_UPDATE_NONE),
'severity' => $this->hasInput('severity') ? (int) $this->getInput('severity') : null,
'acknowledge_problem' => $this->getInput('acknowledge_problem', ZBX_PROBLEM_UPDATE_NONE),
'unacknowledge_problem' => $this->getInput('unacknowledge_problem', ZBX_PROBLEM_UPDATE_NONE),
'close_problem' => $this->getInput('close_problem', ZBX_PROBLEM_UPDATE_NONE),
'suppress_problem' => $this->getInput('suppress_problem', ZBX_PROBLEM_UPDATE_NONE),
'unsuppress_problem' => $this->getInput('unsuppress_problem', ZBX_PROBLEM_UPDATE_NONE),
'related_problems_count' => 0,
'problem_can_be_closed' => false,
'problem_can_be_suppressed' => false,
'problem_can_be_unsuppressed' => false,
'problem_severity_can_be_changed' => false,
'problem_can_change_rank' => false,
'allowed_acknowledge' => $this->checkAccess(CRoleHelper::ACTIONS_ACKNOWLEDGE_PROBLEMS),