Index: api/classes/CTemplate.php =================================================================== --- api/classes/CTemplate.php (revision 28018) +++ api/classes/CTemplate.php (working copy) @@ -653,50 +653,55 @@ } } - // Adding Discoveries - if (!is_null($options['selectDiscoveries'])) { - $objParams = array( - 'nodeids' => $nodeids, - 'hostids' => $templateids, - 'filter' => array('flags' => ZBX_FLAG_DISCOVERY), - 'nopermissions' => 1, - 'preservekeys' => 1, - ); + // Adding Discoveries + if (!is_null($options['selectDiscoveries'])) { + $objParams = array( + 'nodeids' => $nodeids, + 'hostids' => $templateids, + 'nopermissions' => 1, + 'preservekeys' => 1, + ); - if (is_array($options['selectDiscoveries']) || str_in_array($options['selectDiscoveries'], $subselectsAllowedOutputs)) { - $objParams['output'] = $options['selectDiscoveries']; - $items = API::Item()->get($objParams); + if (is_array($options['selectDiscoveries']) || str_in_array($options['selectDiscoveries'], $subselectsAllowedOutputs)) { + $objParams['output'] = $options['selectDiscoveries']; + $items = API::DiscoveryRule()->get($objParams); - if (!is_null($options['limitSelects'])) order_result($items, 'name'); - foreach ($items as $itemid => $item) { - unset($items[$itemid]['hosts']); - foreach ($item['hosts'] as $hnum => $host) { - if (!is_null($options['limitSelects'])) { - if (!isset($count[$host['hostid']])) $count[$host['hostid']] = 0; - $count[$host['hostid']]++; + if (!is_null($options['limitSelects'])) order_result($items, 'name'); - if ($count[$host['hostid']] > $options['limitSelects']) continue; - } + $count = array(); + foreach ($items as $itemid => $item) { + unset($items[$itemid]['hosts']); + foreach ($item['hosts'] as $host) { + if (!is_null($options['limitSelects'])) { + if (!isset($count[$host['hostid']])) { + $count[$host['hostid']] = 0; + } + $count[$host['hostid']]++; - $result[$host['hostid']]['discoveries'][] = &$items[$itemid]; - } - } - } - elseif (API_OUTPUT_COUNT == $options['selectDiscoveries']) { - $objParams['countOutput'] = 1; - $objParams['groupCount'] = 1; + if ($count[$host['hostid']] > $options['limitSelects']) { + continue; + } + } - $items = API::Item()->get($objParams); - $items = zbx_toHash($items, 'hostid'); - foreach ($result as $hostid => $host) { - if (isset($items[$hostid])) - $result[$hostid]['discoveries'] = $items[$hostid]['rowscount']; - else - $result[$hostid]['discoveries'] = 0; - } - } - } + $result[$host['hostid']]['discoveries'][] = &$items[$itemid]; + } + } + } + elseif (API_OUTPUT_COUNT == $options['selectDiscoveries']) { + $objParams['countOutput'] = 1; + $objParams['groupCount'] = 1; + $items = API::DiscoveryRule()->get($objParams); + $items = zbx_toHash($items, 'hostid'); + foreach ($result as $hostid => $host) { + if (isset($items[$hostid])) + $result[$hostid]['discoveries'] = $items[$hostid]['rowscount']; + else + $result[$hostid]['discoveries'] = 0; + } + } + } + // Adding triggers if (!is_null($options['selectTriggers'])) { $objParams = array(