function get_row_for_nofalseforb($row, $sql) { $res_events = DBSelect($sql, 1); if (!($e_row = DBfetch($res_events))) { return false; } else { $row = array_merge($row, $e_row); } if ($row['value'] != TRIGGER_VALUE_TRUE && !event_initial_time($row)) { if (!($eventid = first_initial_eventid($row, 0))) { return false; } $sql = 'SELECT e.eventid, e.value' . ' FROM events e ' . ' WHERE e.eventid=' . $eventid . ' AND e.acknowledged=0'; $res_events = DBSelect($sql, 1); if (!($e_row = DBfetch($res_events))) { return false; } else { $row = array_merge($row, $e_row); } } return $row; }
$item['action'] = str_in_array($row['value_type'], array(ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64)) ? 'showgraph' : 'showvalues'; $item['description'] = item_description($row); $triggers[$row['triggerid']]['items'][$row['itemid']] = $item; } $sql_cond = $show_unknown == 0 ? ' AND e.value<>' . TRIGGER_VALUE_UNKNOWN . ' ' : ''; $sql_cond .= ' AND e.clock<' . $time_end; $table = new CTableInfo(S_NO_EVENTS_FOUND); $table->setHeader(array(make_sorting_link(S_TIME, 'clock'), is_show_all_nodes() ? S_NODE : null, $_REQUEST['hostid'] == 0 ? S_HOST : null, make_sorting_link(S_DESCRIPTION, 'desc'), make_sorting_link(S_STATUS, 'status'), make_sorting_link(S_SEVERITY, 'priority'), S_DURATION, $config['event_ack_enable'] ? S_ACK : NULL, S_ACTIONS)); if (!empty($triggers)) { $clock = array(); $events = array(); $sql = 'SELECT e.eventid, e.objectid as triggerid, e.clock, e.value, e.acknowledged ' . ' FROM events e ' . ' WHERE ' . DBcondition('e.objectid', $triggerids) . ' AND (e.object+0)=' . EVENT_OBJECT_TRIGGER . $sql_cond . ' ORDER BY e.clock DESC'; $result = DBselect($sql, 0 == $show_unknown ? $limit * 50 : $limit); while (($row = DBfetch($result)) && $col < $limit) { $row = array_merge($triggers[$row['triggerid']], $row); if (0 == $show_unknown && !event_initial_time($row, $show_unknown)) { continue; } $row['desc'] = expand_trigger_description_by_data($row, ZBX_FLAG_EVENT); $row['duration'] = zbx_date2age($row['clock']); if ($next_event = get_next_event($row, $show_unknown)) { $row['duration'] = zbx_date2age($row['clock'], $next_event['clock']); } $row['value'] = new CCol(trigger_value2str($row['value']), get_trigger_value_style($row['value'])); $col++; $clock[] = $row['clock']; $events[] = $row; } $last_clock = !empty($clock) ? min($clock) : null; order_page_result($events, 'clock', ZBX_SORT_DOWN); foreach ($events as $num => $row) {
$item['itemid'] = $row['itemid']; $item['action'] = str_in_array($row['value_type'], array(ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64)) ? 'showgraph' : 'showvalues'; $item['description'] = item_description($row); $triggers[$row['triggerid']]['items'][$row['itemid']] = $item; } $event_sql = 'SELECT e.eventid, e.value, e.clock, e.objectid as triggerid, e.acknowledged, t.type ' . ' FROM events e, triggers t ' . ' WHERE e.object=0 ' . ' AND ' . DBcondition('e.objectid', $triggerids) . ' AND t.triggerid=e.objectid ' . $event_cond . ' ORDER by e.object DESC, e.objectid DESC, e.eventid DESC'; $res_events = DBSelect($event_sql, $config['event_show_max'] * 100); while ($row_event = DBfetch($res_events)) { if ($show_events == EVENTS_OPTION_NOFALSEFORB) { if (EVENTS_NOFALSEFORB_STATUS_FALSE == $show_events_status && $row_event['value'] != TRIGGER_VALUE_FALSE) { continue; } if (EVENTS_NOFALSEFORB_STATUS_TRUE == $show_events_status && $row_event['value'] != TRIGGER_VALUE_TRUE) { continue; } if ($row_event['value'] == TRIGGER_VALUE_FALSE && !event_initial_time($row_event)) { continue; } } $triggers[$row_event['triggerid']]['events'][$row_event['eventid']] = $row_event; } foreach ($triggers as $triggerid => $row) { $elements = array(); $description = expand_trigger_description($row['triggerid']); if (!zbx_empty($_REQUEST['txt_select']) && (bool) zbx_stristr($description, $_REQUEST['txt_select']) == (bool) $_REQUEST['inverse_select']) { continue; } if (!zbx_empty($row['url'])) { $description = new CLink($description, $row['url'], null, null, true); } if ($_REQUEST['show_details']) {
function get_history_of_triggers_events($start, $num, $groupid = 0, $hostid = 0) { global $USER_DETAILS; $config = select_config(); $show_unknown = get_profile('web.events.filter.show_unknown', 0); $sql_from = $sql_cond = ''; $available_hosts = get_accessible_hosts_by_user($USER_DETAILS, PERM_READ_LIST); $available_triggers = get_accessible_triggers(PERM_READ_ONLY, array(), PERM_RES_DATA_ARRAY, get_current_nodeid()); if ($hostid > 0) { $sql_cond = ' AND h.hostid=' . $hostid; } else { if ($groupid > 0) { $sql_from = ', hosts_groups hg '; $sql_cond = ' AND h.hostid=hg.hostid AND hg.groupid=' . $groupid; } else { $sql_from = ''; $sql_cond = ' AND ' . DBcondition('h.hostid', $available_hosts); } } //--- $triggers = array(); $trigger_list = array(); $sql = 'SELECT DISTINCT t.triggerid,t.priority,t.description,t.expression,h.host,t.type ' . ' FROM triggers t, functions f, items i, hosts h ' . $sql_from . ' WHERE ' . DBcondition('t.triggerid', $available_triggers) . ' AND t.triggerid=f.triggerid ' . ' AND f.itemid=i.itemid ' . ' AND i.hostid=h.hostid ' . ' AND h.status=' . HOST_STATUS_MONITORED . $sql_cond; $rez = DBselect($sql); while ($rowz = DBfetch($rez)) { $triggers[$rowz['triggerid']] = $rowz; array_push($trigger_list, $rowz['triggerid']); } $sql_cond = $show_unknown == 0 ? ' AND e.value<>' . TRIGGER_VALUE_UNKNOWN . ' ' : ''; $table = new CTableInfo(S_NO_EVENTS_FOUND); $table->SetHeader(array(S_TIME, is_show_all_nodes() ? S_NODE : null, $hostid == 0 ? S_HOST : null, S_DESCRIPTION, S_VALUE, S_SEVERITY)); if (!empty($triggers)) { $sql = 'SELECT e.eventid, e.objectid as triggerid, e.clock, e.value, e.acknowledged ' . ' FROM events e ' . ' WHERE e.object=' . EVENT_OBJECT_TRIGGER . ' AND ' . DBcondition('e.objectid', $trigger_list) . $sql_cond . ' ORDER BY e.eventid DESC'; $result = DBselect($sql, 10 * ($start + $num)); } $col = 0; $skip = $start; while (!empty($triggers) && $col < $num && ($row = DBfetch($result))) { if ($skip > 0) { if ($show_unknown == 0 && $row['value'] == TRIGGER_VALUE_UNKNOWN) { continue; } $skip--; continue; } $value = new CCol(trigger_value2str($row['value']), get_trigger_value_style($row['value'])); $row = array_merge($triggers[$row['triggerid']], $row); if (0 == $show_unknown && !event_initial_time($row, $show_unknown)) { continue; } $table->AddRow(array(date("Y.M.d H:i:s", $row["clock"]), get_node_name_by_elid($row['triggerid']), $hostid == 0 ? $row['host'] : null, new CLink(expand_trigger_description_by_data($row, ZBX_FLAG_EVENT), 'tr_events.php?triggerid=' . $row['triggerid'] . '&eventid=' . $row['eventid'], 'action'), $value, new CCol(get_severity_description($row["priority"]), get_severity_style($row["priority"])))); $col++; } return $table; }