Index: include/blocks.inc.php =================================================================== --- include/blocks.inc.php (revision 55408) +++ include/blocks.inc.php (working copy) @@ -1,7 +1,7 @@ get(array( + 'groupids' => zbx_objectValues($groups, 'groupid'), + 'hostids' => isset($filter['hostids']) ? $filter['hostids'] : null, + 'monitored_hosts' => true, + 'filter' => array('maintenance_status' => $filter['maintenance']), + 'output' => array('hostid', 'name'), + 'selectGroups' => array('groupid') + )); + $hosts = zbx_toHash($hosts, 'hostid'); + // get triggers $triggers = API::Trigger()->get(array( - 'groupids' => $groupIds, - 'hostids' => isset($filter['hostids']) ? $filter['hostids'] : null, 'monitored' => true, - 'maintenance' => $filter['maintenance'], 'skipDependent' => true, - 'withLastEventUnacknowledged' => ($filter['extAck'] == EXTACK_OPTION_UNACK) ? true : null, - 'selectLastEvent' => array('eventid', 'acknowledged', 'objectid'), - 'expandDescription' => true, + 'withLastEventUnacknowledged' => ($filter['extAck'] == EXTACK_OPTION_UNACK) ? true : null, + 'selectLastEvent' => array('eventid', 'acknowledged', 'objectid'), 'filter' => array( 'priority' => $filter['severity'], 'value' => TRIGGER_VALUE_TRUE ), - 'sortfield' => 'lastchange', - 'sortorder' => ZBX_SORT_DOWN, - 'output' => array('triggerid', 'priority', 'state', 'description', 'error', 'value', 'lastchange'), - 'selectHosts' => array('name'), - 'selectGroups' => array('groupid'), + 'output' => array('triggerid', 'priority', 'state', 'description', 'error', 'value', 'lastchange', + 'expression'), + 'selectHosts' => array('hostid', 'name'), 'preservekeys' => true )); @@ -343,6 +348,8 @@ unset($triggers[$triggerId]['lastEvent']); } + $eventIds = array(); + // get acknowledges if ($eventIds) { $eventAcknowledges = API::Event()->get(array( @@ -372,31 +379,38 @@ ); } - // groups - foreach ($trigger['groups'] as $group) { - if (!isset($groups[$group['groupid']])) { - continue; - } + foreach ($trigger['hosts'] as $id => $hostid) { + if (!isset($hosts[$hostid['hostid']])) { + continue; + } - if (in_array($filter['extAck'], array(EXTACK_OPTION_ALL, EXTACK_OPTION_BOTH))) { - $groups[$group['groupid']]['tab_priority'][$trigger['priority']]['count']++; + // groups + foreach ($hosts[$hostid['hostid']]['groups'] as $group) { + if (!isset($groups[$group['groupid']])) { + continue; + } - if ($groups[$group['groupid']]['tab_priority'][$trigger['priority']]['count'] < 30) { - $groups[$group['groupid']]['tab_priority'][$trigger['priority']]['triggers'][] = $trigger; + if (in_array($filter['extAck'], array(EXTACK_OPTION_ALL, EXTACK_OPTION_BOTH))) { + $groups[$group['groupid']]['tab_priority'][$trigger['priority']]['count']++; + + if ($groups[$group['groupid']]['tab_priority'][$trigger['priority']]['count'] < 30) { + $groups[$group['groupid']]['tab_priority'][$trigger['priority']]['triggers'][] = $trigger; + } } - } - if (in_array($filter['extAck'], array(EXTACK_OPTION_UNACK, EXTACK_OPTION_BOTH)) - && isset($trigger['event']) && !$trigger['event']['acknowledged']) { - $groups[$group['groupid']]['tab_priority'][$trigger['priority']]['count_unack']++; + if (in_array($filter['extAck'], array(EXTACK_OPTION_UNACK, EXTACK_OPTION_BOTH)) + && isset($trigger['event']) && !$trigger['event']['acknowledged']) { + $groups[$group['groupid']]['tab_priority'][$trigger['priority']]['count_unack']++; - if ($groups[$group['groupid']]['tab_priority'][$trigger['priority']]['count_unack'] < 30) { - $groups[$group['groupid']]['tab_priority'][$trigger['priority']]['triggers_unack'][] = $trigger; + if ($groups[$group['groupid']]['tab_priority'][$trigger['priority']]['count_unack'] < 30) { + $groups[$group['groupid']]['tab_priority'][$trigger['priority']]['triggers_unack'][] = $trigger; + } } } } } unset($triggers); + unset($hosts); $config = select_config(); @@ -1302,6 +1316,8 @@ CArrayHelper::sort($triggers, array(array('field' => 'lastchange', 'order' => ZBX_SORT_DOWN))); + $triggers = CMacrosResolverHelper::resolveTriggerNames($triggers); + foreach ($triggers as $trigger) { // unknown triggers $unknown = SPACE;