/**
  * Check graph data
  *
  * @param array $graphs
  * @param boolean $update
  *
  * @return void
  */
 protected function checkInput($graphs, $update = false)
 {
     $itemids = array();
     foreach ($graphs as $graph) {
         // no items
         if (!isset($graph['gitems']) || !is_array($graph['gitems']) || empty($graph['gitems'])) {
             self::exception(ZBX_API_ERROR_PARAMETERS, _s('Missing items for graph "%1$s".', $graph['name']));
         }
         $fields = array('itemid' => null);
         foreach ($graph['gitems'] as $gitem) {
             if (!check_db_fields($fields, $gitem)) {
                 self::exception(ZBX_API_ERROR_PARAMETERS, _('Missing "itemid" field for item.'));
             }
             // assigning with key preserves unique itemids
             $itemids[$gitem['itemid']] = $gitem['itemid'];
         }
     }
     $allowedItems = API::Item()->get(array('nodeids' => get_current_nodeid(true), 'itemids' => $itemids, 'webitems' => true, 'editable' => true, 'output' => array('flags'), 'selectItemDiscovery' => array('parent_itemid'), 'preservekeys' => true, 'filter' => array('flags' => array(ZBX_FLAG_DISCOVERY_NORMAL, ZBX_FLAG_DISCOVERY_CHILD, ZBX_FLAG_DISCOVERY_CREATED))));
     foreach ($itemids as $itemid) {
         if (!isset($allowedItems[$itemid])) {
             self::exception(ZBX_API_ERROR_PARAMETERS, _('No permissions to referred object or it does not exist!'));
         }
     }
     parent::checkInput($graphs, $update);
     $this->checkDiscoveryRuleCount($graphs, $allowedItems);
 }
 /**
  * Check graph data
  *
  * @param array $graphs
  * @param boolean $update
  *
  * @return void
  */
 protected function checkInput($graphs, $update = false)
 {
     $itemids = array();
     foreach ($graphs as $graph) {
         // no items
         if (!isset($graph['gitems']) || !is_array($graph['gitems']) || empty($graph['gitems'])) {
             self::exception(ZBX_API_ERROR_PARAMETERS, _s('Missing items for graph "%1$s".', $graph['name']));
         }
         $fields = array('itemid' => null);
         foreach ($graph['gitems'] as $gitem) {
             if (!check_db_fields($fields, $gitem)) {
                 self::exception(ZBX_API_ERROR_PARAMETERS, _('Missing "itemid" field for item.'));
             }
             // assigning with key preserves unique itemids
             $itemids[$gitem['itemid']] = $gitem['itemid'];
         }
     }
     // check permissions only for non super admins
     if (CUser::$userData['type'] != USER_TYPE_SUPER_ADMIN) {
         $allowedItems = API::Item()->get(array('nodeids' => get_current_nodeid(true), 'itemids' => $itemids, 'webitems' => true, 'editable' => true, 'output' => API_OUTPUT_EXTEND, 'preservekeys' => true));
         foreach ($itemids as $itemid) {
             if (!isset($allowedItems[$itemid])) {
                 self::exception(ZBX_API_ERROR_PARAMETERS, _('No permissions to referred object or it does not exist!'));
             }
         }
     }
     parent::checkInput($graphs, $update);
 }