require_once dirname(__FILE__).'/include/config.inc.php';
require_once dirname(__FILE__).'/include/hosts.inc.php';
require_once dirname(__FILE__).'/include/graphs.inc.php';
require_once dirname(__FILE__).'/include/forms.inc.php';
$page['title'] = hasRequest('parent_discoveryid') ? _('Configuration of graph prototypes') : _('Configuration of graphs');
$page['file'] = 'graphs.php';
$page['scripts'] = ['colorpicker.js', 'multiselect.js', 'items.js', 'multilineinput.js'];
require_once dirname(__FILE__).'/include/page_header.php';
'parent_discoveryid' => [T_ZBX_INT, O_OPT, P_SYS, DB_ID, null],
'hostid' => [T_ZBX_INT, O_OPT, P_SYS, DB_ID, null],
'graphid' => [T_ZBX_INT, O_OPT, P_SYS, DB_ID, 'isset({form}) && {form} == "update"'],
'name' => [T_ZBX_STR, O_OPT, null, NOT_EMPTY, 'isset({add}) || isset({update})', _('Name')],
'width' => [T_ZBX_INT, O_OPT, null, BETWEEN(20, 65535), 'isset({add}) || isset({update})', _('Width')],
'height' => [T_ZBX_INT, O_OPT, null, BETWEEN(20, 65535), 'isset({add}) || isset({update})', _('Height')],
'graphtype' => [T_ZBX_INT, O_OPT, P_SYS, IN('0,1,2,3'), 'isset({add}) || isset({update})'],
'show_3d' => [T_ZBX_INT, O_OPT, P_NZERO, IN('0,1'), null],
'show_legend' => [T_ZBX_INT, O_OPT, P_NZERO, IN('0,1'), null],
'ymin_type' => [T_ZBX_INT, O_OPT, null, IN('0,1,2'), null],
'ymax_type' => [T_ZBX_INT, O_OPT, null, IN('0,1,2'), null],
'yaxismin' => [T_ZBX_DBL, O_OPT, null, null, '(isset({add}) || isset({update})) && isset({graphtype}) && ({graphtype} == '.GRAPH_TYPE_NORMAL.' || {graphtype} == '.GRAPH_TYPE_STACKED.')'],
'yaxismax' => [T_ZBX_DBL, O_OPT, null, null, '(isset({add}) || isset({update})) && isset({graphtype}) && ({graphtype} == '.GRAPH_TYPE_NORMAL.' || {graphtype} == '.GRAPH_TYPE_STACKED.')'],
'ymin_itemid' => [T_ZBX_INT, O_OPT, null, DB_ID, '(isset({add}) || isset({update})) && isset({ymin_type}) && {ymin_type} == '.GRAPH_YAXIS_TYPE_ITEM_VALUE],
'ymax_itemid' => [T_ZBX_INT, O_OPT, null, DB_ID, '(isset({add}) || isset({update})) && isset({ymax_type}) && {ymax_type} == '.GRAPH_YAXIS_TYPE_ITEM_VALUE],
'percent_left' => [T_ZBX_DBL, O_OPT, null, BETWEEN_DBL(0, 100, 4), null, _('Percentile line (left)')],
'percent_right' => [T_ZBX_DBL, O_OPT, null, BETWEEN_DBL(0, 100, 4), null, _('Percentile line (right)')],
'visible' => [T_ZBX_INT, O_OPT, P_ONLY_ARRAY, BETWEEN(0, 1), null],
'items' => [T_ZBX_STR, O_OPT, P_ONLY_TD_ARRAY, null, null],
'discover' => [T_ZBX_INT, O_OPT, null, IN([ZBX_PROTOTYPE_DISCOVER, ZBX_PROTOTYPE_NO_DISCOVER]), null],
'show_work_period' => [T_ZBX_INT, O_OPT, null, IN('1'), null],
'show_triggers' => [T_ZBX_INT, O_OPT, null, IN('1'), null],
'group_graphid' => [T_ZBX_INT, O_OPT, P_ONLY_ARRAY, DB_ID, null],
'context' => [T_ZBX_STR, O_MAND, P_SYS, IN('"host", "template"'), null],
'readonly' => [T_ZBX_INT, O_OPT, null, IN('1'), null],
'checkbox_hash' => [T_ZBX_STR, O_OPT, null, null, null],
'action' => [T_ZBX_STR, O_OPT, P_SYS|P_ACT, IN('"graph.massdelete","graph.updatediscover"'), null],
'add' => [T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null],
'update' => [T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null],
'clone' => [T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null],
'delete' => [T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null],
'cancel' => [T_ZBX_STR, O_OPT, P_SYS, null, null],
'form' => [T_ZBX_STR, O_OPT, P_SYS, null, null],
'form_refresh' => [T_ZBX_INT, O_OPT, P_SYS, null, null],
'backurl' => [T_ZBX_STR, O_OPT, null, null, null],
'filter_set' => [T_ZBX_STR, O_OPT, P_SYS, null, null],
'filter_rst' => [T_ZBX_STR, O_OPT, P_SYS, null, null],
'filter_groupids' => [T_ZBX_INT, O_OPT, P_ONLY_ARRAY, DB_ID, null],
'filter_hostids' => [T_ZBX_INT, O_OPT, P_ONLY_ARRAY, DB_ID, null],
'sort' => [T_ZBX_STR, O_OPT, P_SYS, IN('"graphtype","name","discover"'), null],
'sortorder' => [T_ZBX_STR, O_OPT, P_SYS, IN('"'.ZBX_SORT_DOWN.'","'.ZBX_SORT_UP.'"'), null]
$percentVisible = getRequest('visible', []);
if (!isset($percentVisible['percent_left'])) {
unset($_REQUEST['percent_left']);
if (!isset($percentVisible['percent_right'])) {
unset($_REQUEST['percent_right']);
if (isset($_REQUEST['yaxismin']) && zbx_empty($_REQUEST['yaxismin'])) {
unset($_REQUEST['yaxismin']);
if (isset($_REQUEST['yaxismax']) && zbx_empty($_REQUEST['yaxismax'])) {
unset($_REQUEST['yaxismax']);
foreach (getRequest('items', []) as $gitem) {