Example #1
0
 protected function applyQuerySortField($sortfield, $sortorder, $alias, array $sqlParts)
 {
     if ($sortfield === 'hostname') {
         $sqlParts['select']['hostname'] = 'h.name AS hostname';
         $sqlParts['from']['functions'] = 'functions f';
         $sqlParts['from']['items'] = 'items i';
         $sqlParts['from']['hosts'] = 'hosts h';
         $sqlParts['where'][] = 't.triggerid = f.triggerid';
         $sqlParts['where'][] = 'f.itemid = i.itemid';
         $sqlParts['where'][] = 'i.hostid = h.hostid';
         $sqlParts['order'][] = 'h.name ' . $sortorder;
     } else {
         $sqlParts = parent::applyQuerySortField($sortfield, $sortorder, $alias, $sqlParts);
     }
     return $sqlParts;
 }
 /**
  * Retrieves and adds additional requested data (options 'selectHosts', 'selectGroups', etc.) to result set.
  *
  * @param array		$options
  * @param array		$result
  *
  * @return array
  */
 protected function addRelatedObjects(array $options, array $result)
 {
     $result = parent::addRelatedObjects($options, $result);
     $triggerPrototypeIds = array_keys($result);
     if ($options['selectDependencies'] !== null && $options['selectDependencies'] != API_OUTPUT_COUNT) {
         // Add trigger prototype dependencies.
         $res = DBselect('SELECT td.triggerid_up,td.triggerid_down' . ' FROM trigger_depends td' . ' WHERE ' . dbConditionInt('td.triggerid_down', $triggerPrototypeIds));
         $relationMap = new CRelationMap();
         while ($relation = DBfetch($res)) {
             $relationMap->addRelation($relation['triggerid_down'], $relation['triggerid_up']);
         }
         $dependencies = API::getApiService()->select($this->tableName(), ['output' => $options['selectDependencies'], 'triggerids' => $relationMap->getRelatedIds(), 'preservekeys' => true]);
         $result = $relationMap->mapMany($result, $dependencies, 'dependencies');
     }
     // adding items
     if ($options['selectItems'] !== null && $options['selectItems'] != API_OUTPUT_COUNT) {
         $relationMap = $this->createRelationMap($result, 'triggerid', 'itemid', 'functions');
         $items = API::Item()->get(['output' => $options['selectItems'], 'itemids' => $relationMap->getRelatedIds(), 'webitems' => true, 'nopermissions' => true, 'preservekeys' => true, 'filter' => ['flags' => null]]);
         $result = $relationMap->mapMany($result, $items, 'items');
     }
     // adding discovery rule
     if ($options['selectDiscoveryRule'] !== null && $options['selectDiscoveryRule'] != API_OUTPUT_COUNT) {
         $dbRules = DBselect('SELECT id.parent_itemid,f.triggerid' . ' FROM item_discovery id,functions f' . ' WHERE ' . dbConditionInt('f.triggerid', $triggerPrototypeIds) . ' AND f.itemid=id.itemid');
         $relationMap = new CRelationMap();
         while ($rule = DBfetch($dbRules)) {
             $relationMap->addRelation($rule['triggerid'], $rule['parent_itemid']);
         }
         $discoveryRules = API::DiscoveryRule()->get(['output' => $options['selectDiscoveryRule'], 'itemids' => $relationMap->getRelatedIds(), 'nopermissions' => true, 'preservekeys' => true]);
         $result = $relationMap->mapOne($result, $discoveryRules, 'discoveryRule');
     }
     return $result;
 }
Example #3
0
 protected function addRelatedObjects(array $options, array $result)
 {
     $result = parent::addRelatedObjects($options, $result);
     $triggerids = array_keys($result);
     // adding items
     if ($options['selectItems'] !== null && $options['selectItems'] != API_OUTPUT_COUNT) {
         $relationMap = $this->createRelationMap($result, 'triggerid', 'itemid', 'functions');
         $items = API::Item()->get(array('nodeids' => $options['nodeids'], 'output' => $options['selectItems'], 'itemids' => $relationMap->getRelatedIds(), 'webitems' => true, 'nopermissions' => true, 'preservekeys' => true, 'filter' => array('flags' => null)));
         $result = $relationMap->mapMany($result, $items, 'items');
     }
     // adding discoveryrule
     if ($options['selectDiscoveryRule'] !== null && $options['selectDiscoveryRule'] != API_OUTPUT_COUNT) {
         $dbRules = DBselect('SELECT id.parent_itemid,f.triggerid' . ' FROM item_discovery id,functions f' . ' WHERE ' . dbConditionInt('f.triggerid', $triggerids) . ' AND f.itemid=id.itemid');
         $relationMap = new CRelationMap();
         while ($rule = DBfetch($dbRules)) {
             $relationMap->addRelation($rule['triggerid'], $rule['parent_itemid']);
         }
         $discoveryRules = API::DiscoveryRule()->get(array('output' => $options['selectDiscoveryRule'], 'nodeids' => $options['nodeids'], 'itemids' => $relationMap->getRelatedIds(), 'nopermissions' => true, 'preservekeys' => true));
         $result = $relationMap->mapOne($result, $discoveryRules, 'discoveryRule');
     }
     return $result;
 }
 protected function applyQueryNodeOptions($tableName, $tableAlias, array $options, array $sqlParts)
 {
     // only apply the node option if no specific ids are given
     if ($options['groupids'] === null && $options['templateids'] === null && $options['hostids'] === null && $options['triggerids'] === null && $options['itemids'] === null && $options['applicationids'] === null) {
         $sqlParts = parent::applyQueryNodeOptions($tableName, $tableAlias, $options, $sqlParts);
     }
     return $sqlParts;
 }