Index: events.php =================================================================== --- events.php (revision 48954) +++ events.php (revision 49356) @@ -317,7 +317,6 @@ $events_wdgt->addHeader(_('Events'), $r_form); $events_wdgt->addHeaderRowNumber(); -// FILTER {{{ $filterForm = null; if (EVENT_SOURCE_TRIGGERS == $source) { @@ -380,34 +379,47 @@ $scroll_div = new CDiv(); $scroll_div->setAttribute('id', 'scrollbar_cntr'); $events_wdgt->addFlicker($scroll_div, CProfile::get('web.events.filter.state', 0)); -// }}} FILTER - $table = new CTableInfo(_('No events defined.')); -// CHECK IF EVENTS EXISTS {{{ -$options = array( - 'output' => API_OUTPUT_EXTEND, - 'sortfield' => 'eventid', - 'sortorder' => ZBX_SORT_UP, - 'nopermissions' => 1, - 'limit' => 1 -); +// get all available triggers +$availableTriggers = array(); +if ($source != EVENT_SOURCE_DISCOVERY) { + $availableTriggers = API::Trigger()->get(array( + 'output' => array('triggerid'), + 'nodeids' => get_current_nodeid(), + 'triggerids' => (get_request('triggerid', 0) != 0) ? get_request('triggerid') : null, + 'hostids' => ($pageFilter->hostid != 0) ? $pageFilter->hostid : null, + 'groupids' => ($pageFilter->groupid != 0) ? $pageFilter->groupid : null, + 'monitored' => true, + 'preservekeys' => true + )); +} +if ($source == EVENT_SOURCE_DISCOVERY || $availableTriggers) { + $options = array( + 'output' => API_OUTPUT_EXTEND, + 'sortfield' => 'eventid', + 'sortorder' => ZBX_SORT_UP, + 'nopermissions' => true, + 'limit' => 1 + ); +} + if ($source == EVENT_SOURCE_DISCOVERY) { $options['source'] = EVENT_SOURCE_DISCOVERY; } -else { - if (isset($_REQUEST['triggerid']) && ($_REQUEST['triggerid'] > 0)) { - $options['triggerids'] = $_REQUEST['triggerid']; - } +elseif ($availableTriggers) { + $options['triggerids'] = array_keys($availableTriggers); $options['object'] = EVENT_OBJECT_TRIGGER; $options['filter'] = array('value_changed' => ($_REQUEST['showUnknown'] ? null : TRIGGER_VALUE_CHANGED_YES)); $options['nodeids'] = get_current_nodeid(); } -$firstEvent = API::Event()->get($options); -// }}} CHECK IF EVENTS EXISTS +$firstEvent = array(); +if ($source == EVENT_SOURCE_DISCOVERY || $availableTriggers) { + $firstEvent = API::Event()->get($options); +} $_REQUEST['period'] = get_request('period', SEC_PER_WEEK); $effectiveperiod = navigation_bar_calc(); @@ -599,25 +611,10 @@ $options['filter']['value_changed'] = null; } - // trigger options - $trigOpt = array( - 'nodeids' => get_current_nodeid(), - 'output' => API_OUTPUT_SHORTEN - ); - - if (isset($_REQUEST['triggerid']) && ($_REQUEST['triggerid'] > 0)) { - $trigOpt['triggerids'] = $_REQUEST['triggerid']; - } - else if ($pageFilter->hostid > 0) { - $trigOpt['hostids'] = $pageFilter->hostid; - } - else if ($pageFilter->groupid > 0) { - $trigOpt['groupids'] = $pageFilter->groupid; - } - - $trigOpt['monitored'] = true; - - $triggers = API::Trigger()->get($trigOpt); + $triggers = API::Trigger()->get(array( + 'output' => API_OUTPUT_SHORTEN, + 'triggerids' => array_keys($availableTriggers), + )); $options['triggerids'] = zbx_objectValues($triggers, 'triggerid'); // query event with short data @@ -634,7 +631,7 @@ 'select_acknowledges' => API_OUTPUT_COUNT, 'sortfield' => 'eventid', 'sortorder' => ZBX_SORT_DOWN, - 'nopermissions' => 1 + 'nopermissions' => true ); $events = API::Event()->get($options);