<?php declare(strict_types=0);
abstract class CControllerItem extends CController {
protected function checkPermissions(): bool {
if (!$this->hasInput('context')) {
return $this->getInput('context') === 'host'
? $this->checkAccess(CRoleHelper::UI_CONFIGURATION_HOSTS)
: $this->checkAccess(CRoleHelper::UI_CONFIGURATION_TEMPLATES);
protected static function getValidationFields(): array {
'name' => 'db items.name',
'type' => 'in '.implode(',', array_keys(item_type2str())),
'key' => 'db items.key_',
'value_type' => 'in '.implode(',', [ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_LOG, ITEM_VALUE_TYPE_TEXT, ITEM_VALUE_TYPE_BINARY]),
'query_fields' => 'array',
'script' => 'db items.params',
'browser_script' => 'db items.params',
'request_method' => 'in '.implode(',', [HTTPCHECK_REQUEST_GET, HTTPCHECK_REQUEST_POST, HTTPCHECK_REQUEST_PUT, HTTPCHECK_REQUEST_HEAD]),
'custom_timeout' => 'in '.implode(',', [ZBX_ITEM_CUSTOM_TIMEOUT_DISABLED, ZBX_ITEM_CUSTOM_TIMEOUT_ENABLED]),
'timeout' => 'db items.timeout',
'post_type' => 'in '.implode(',', [ZBX_POSTTYPE_RAW, ZBX_POSTTYPE_JSON, ZBX_POSTTYPE_XML]),
'posts' => 'db items.posts',
'status_codes' => 'db items.status_codes',
'follow_redirects' => 'in '.implode(',', [HTTPTEST_STEP_FOLLOW_REDIRECTS_OFF, HTTPTEST_STEP_FOLLOW_REDIRECTS_ON]),
'retrieve_mode' => 'in '.implode(',', [HTTPTEST_STEP_RETRIEVE_MODE_CONTENT, HTTPTEST_STEP_RETRIEVE_MODE_HEADERS, HTTPTEST_STEP_RETRIEVE_MODE_BOTH]),
'output_format' => 'in '.implode(',', [HTTPCHECK_STORE_RAW, HTTPCHECK_STORE_JSON]),
'http_proxy' => 'db items.http_proxy',
'http_authtype' => 'in '.implode(',', array_keys(httptest_authentications())),
'http_username' => 'db items.username',
'http_password' => 'db items.password',
'verify_peer' => 'in '.implode(',', [ZBX_HTTP_VERIFY_PEER_OFF, ZBX_HTTP_VERIFY_PEER_ON]),
'verify_host' => 'in '.implode(',', [ZBX_HTTP_VERIFY_HOST_OFF, ZBX_HTTP_VERIFY_HOST_ON]),
'ssl_cert_file' => 'db items.ssl_cert_file',
'ssl_key_file' => 'db items.ssl_key_file',
'ssl_key_password' => 'db items.ssl_key_password',
'snmp_oid' => 'db items.snmp_oid',
'ipmi_sensor' => 'db items.ipmi_sensor',
'authtype' => 'in '.implode(',', [ITEM_AUTHTYPE_PASSWORD, ITEM_AUTHTYPE_PUBLICKEY]),
'jmx_endpoint' => 'db items.jmx_endpoint',
'username' => 'db items.username',
'publickey' => 'db items.publickey',
'privatekey' => 'db items.privatekey',
'passphrase' => 'db items.password',
'password' => 'db items.password',
'params_es' => 'db items.params',
'params_ap' => 'db items.params',
'params_f' => 'db items.params',
'units' => 'db items.units',
'delay' => 'db items.delay',
'history_mode' => 'in '.implode(',', [ITEM_STORAGE_OFF, ITEM_STORAGE_CUSTOM]),
'history' => 'db items.history',
'trends_mode' => 'in '.implode(',', [ITEM_STORAGE_OFF, ITEM_STORAGE_CUSTOM]),
'trends' => 'db items.trends',
'logtimefmt' => 'db items.logtimefmt',
'allow_traps' => 'in '.implode(',', [HTTPCHECK_ALLOW_TRAPS_OFF, HTTPCHECK_ALLOW_TRAPS_ON]),
'trapper_hosts' => 'db items.trapper_hosts',
'inventory_link' => 'db items.inventory_link',
'description' => 'db items.description',
'status' => 'in '.implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED]),