[T_ZBX_INT, O_MAND, P_SYS, DB_ID, null], 'from' => [T_ZBX_RANGE_TIME, O_OPT, P_SYS, null, null], 'to' => [T_ZBX_RANGE_TIME, O_OPT, P_SYS, null, null], 'profileIdx' => [T_ZBX_STR, O_OPT, null, null, null], 'profileIdx2' => [T_ZBX_STR, O_OPT, null, null, null], 'width' => [T_ZBX_INT, O_OPT, P_NZERO, BETWEEN(20, 65535), null], 'height' => [T_ZBX_INT, O_OPT, P_NZERO, '{} > 0', null], 'graph3d' => [T_ZBX_INT, O_OPT, P_NZERO, IN('0,1'), null], 'legend' => [T_ZBX_INT, O_OPT, null, IN('0,1'), null], 'widget_view' => [T_ZBX_INT, O_OPT, null, IN('0,1'), null] ]; if (!check_fields($fields)) { exit(); } validateTimeSelectorPeriod(getRequest('from'), getRequest('to')); /* * Permissions */ $dbGraph = API::Graph()->get([ 'output' => API_OUTPUT_EXTEND, 'selectGraphItems' => ['itemid', 'sortorder', 'color', 'calc_fnc', 'type'], 'selectHosts' => ['name'], 'graphids' => $_REQUEST['graphid'] ]); if (!$dbGraph) { access_deny(); } else { $dbGraph = reset($dbGraph); } /* * Display */ $timeline = getTimeSelectorPeriod([ 'profileIdx' => getRequest('profileIdx'), 'profileIdx2' => getRequest('profileIdx2'), 'from' => getRequest('from'), 'to' => getRequest('to') ]); $graph = new CPieGraphDraw($dbGraph['graphtype']); $graph->setPeriod($timeline['to_ts'] - $timeline['from_ts']); $graph->setSTime($timeline['from_ts']); $width = getRequest('width', 0); if ($width <= 0) { $width = $dbGraph['width']; } $height = getRequest('height', 0); if ($height <= 0) { $height = $dbGraph['height']; } if (getRequest('widget_view') === '1') { $graph->draw_header = false; $graph->with_vertical_padding = false; } $graph->setWidth($width); $graph->setHeight($height); // array sorting CArrayHelper::sort($dbGraph['gitems'], [ ['field' => 'sortorder', 'order' => ZBX_SORT_UP] ]); // get graph items foreach ($dbGraph['gitems'] as $gItem) { $graph->addItem( $gItem['itemid'], $gItem['calc_fnc'], $gItem['color'], $gItem['type'] ); } $hostName = ''; foreach ($dbGraph['hosts'] as $gItemHost) { if ($hostName === '') { $hostName = $gItemHost['name']; } elseif ($hostName !== $gItemHost['name']) { $hostName = ''; break; } } $graph->setHeader(($hostName === '') ? $dbGraph['name'] : $hostName.NAME_DELIMITER.$dbGraph['name']); if ($dbGraph['show_3d']) { $graph->switchPie3D(); } $graph->showLegend(getRequest('legend', $dbGraph['show_legend'])); $graph->draw(); require_once dirname(__FILE__).'/include/page_footer.php';