<?php declare(strict_types = 0);
class CControllerDiscoveryCreate extends CController {
protected function init(): void {
$this->setPostContentType(self::POST_CONTENT_TYPE_JSON);
protected function checkInput(): bool {
'name' => 'required|db drules.name|not_empty',
'discovery_by' => 'int32|in '.implode(',', [ZBX_DISCOVERY_BY_SERVER, ZBX_DISCOVERY_BY_PROXY]),
'proxyid' => 'db drules.proxyid',
'iprange' => 'required|db drules.iprange|not_empty|flags '.P_CRLF,
'delay' => 'required|db drules.delay|not_empty',
'status' => 'db drules.status|in '.implode(',', [DRULE_STATUS_ACTIVE, DRULE_STATUS_DISABLED]),
'concurrency_max_type' => 'in '.implode(',', [ZBX_DISCOVERY_CHECKS_ONE, ZBX_DISCOVERY_CHECKS_UNLIMITED, ZBX_DISCOVERY_CHECKS_CUSTOM]),
'concurrency_max' => 'db drules.concurrency_max|ge '.ZBX_DISCOVERY_CHECKS_UNLIMITED.'|le '.ZBX_DISCOVERY_CHECKS_MAX,
'uniqueness_criteria' => 'string',
'dchecks' => 'required|array'
$ret = $this->validateInput($fields);
if ($ret && $this->getInput('discovery_by', ZBX_DISCOVERY_BY_SERVER) == ZBX_DISCOVERY_BY_PROXY) {
$validator = new CNewValidator(array_intersect_key($this->getInputAll(), $fields), $fields);
foreach ($validator->getAllErrors() as $error) {
$ret = !$validator->isErrorFatal() && !$validator->isError();
new CControllerResponseData(['main_block' => json_encode([
'title' => _('Cannot create discovery rule'),
'messages' => array_column(get_and_clear_messages(), 'message')
], JSON_THROW_ON_ERROR)])