function make_hoststat_summary($filter) { $table = new CTableInfo(_('No host groups found.')); $table->setHeader(array(is_show_all_nodes() ? _('Node') : null, _('Host group'), _('Without problems'), _('With problems'), _('Total'))); // get host groups $groups = API::HostGroup()->get(array('nodeids' => get_current_nodeid(), 'groupids' => $filter['groupids'], 'monitored_hosts' => 1, 'output' => array('groupid', 'name'))); $groups = zbx_toHash($groups, 'groupid'); foreach ($groups as &$group) { $group['nodename'] = get_node_name_by_elid($group['groupid']); } unset($group); CArrayHelper::sort($groups, array(array('field' => 'nodename', 'order' => ZBX_SORT_UP), array('field' => 'name', 'order' => ZBX_SORT_UP))); // get hosts $hosts = API::Host()->get(array('nodeids' => get_current_nodeid(), 'groupids' => zbx_objectValues($groups, 'groupid'), 'hostids' => !empty($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'); CArrayHelper::sort($hosts, array('name')); // get triggers $triggers = API::Trigger()->get(array('nodeids' => get_current_nodeid(), 'monitored' => true, 'maintenance' => $filter['maintenance'], 'expandData' => true, 'filter' => array('priority' => $filter['severity'], 'value' => TRIGGER_VALUE_TRUE), 'output' => array('triggerid', 'priority'), 'selectHosts' => array('hostid'))); if ($filter['extAck']) { $triggers_unack = API::Trigger()->get(array('nodeids' => get_current_nodeid(), 'monitored' => true, 'maintenance' => $filter['maintenance'], 'withLastEventUnacknowledged' => true, 'selectHosts' => API_OUTPUT_REFER, 'filter' => array('priority' => $filter['severity'], 'value' => TRIGGER_VALUE_TRUE), 'output' => API_OUTPUT_REFER)); $triggers_unack = zbx_toHash($triggers_unack, 'triggerid'); foreach ($triggers_unack as $tunack) { foreach ($tunack['hosts'] as $unack_host) { $hosts_with_unack_triggers[$unack_host['hostid']] = $unack_host['hostid']; } } } $hosts_data = array(); $problematic_host_list = array(); $lastUnack_host_list = array(); $highest_severity = array(); $highest_severity2 = array(); foreach ($triggers as $trigger) { foreach ($trigger['hosts'] as $trigger_host) { if (!isset($hosts[$trigger_host['hostid']])) { continue; } else { $host = $hosts[$trigger_host['hostid']]; } if ($filter['extAck'] && isset($hosts_with_unack_triggers[$host['hostid']])) { if (!isset($lastUnack_host_list[$host['hostid']])) { $lastUnack_host_list[$host['hostid']] = array(); $lastUnack_host_list[$host['hostid']]['host'] = $host['name']; $lastUnack_host_list[$host['hostid']]['hostid'] = $host['hostid']; $lastUnack_host_list[$host['hostid']]['severities'] = array(); $lastUnack_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_DISASTER] = 0; $lastUnack_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_HIGH] = 0; $lastUnack_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_AVERAGE] = 0; $lastUnack_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_WARNING] = 0; $lastUnack_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_INFORMATION] = 0; $lastUnack_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_NOT_CLASSIFIED] = 0; } if (isset($triggers_unack[$trigger['triggerid']])) { $lastUnack_host_list[$host['hostid']]['severities'][$trigger['priority']]++; } foreach ($host['groups'] as $gnum => $group) { if (!isset($highest_severity2[$group['groupid']])) { $highest_severity2[$group['groupid']] = 0; } if ($trigger['priority'] > $highest_severity2[$group['groupid']]) { $highest_severity2[$group['groupid']] = $trigger['priority']; } if (!isset($hosts_data[$group['groupid']])) { $hosts_data[$group['groupid']] = array('problematic' => 0, 'ok' => 0, 'lastUnack' => 0, 'hostids_all' => array(), 'hostids_unack' => array()); } if (!isset($hosts_data[$group['groupid']]['hostids_unack'][$host['hostid']])) { $hosts_data[$group['groupid']]['hostids_unack'][$host['hostid']] = $host['hostid']; $hosts_data[$group['groupid']]['lastUnack']++; } } } if (!isset($problematic_host_list[$host['hostid']])) { $problematic_host_list[$host['hostid']] = array(); $problematic_host_list[$host['hostid']]['host'] = $host['name']; $problematic_host_list[$host['hostid']]['hostid'] = $host['hostid']; $problematic_host_list[$host['hostid']]['severities'] = array(); $problematic_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_DISASTER] = 0; $problematic_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_HIGH] = 0; $problematic_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_AVERAGE] = 0; $problematic_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_WARNING] = 0; $problematic_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_INFORMATION] = 0; $problematic_host_list[$host['hostid']]['severities'][TRIGGER_SEVERITY_NOT_CLASSIFIED] = 0; } $problematic_host_list[$host['hostid']]['severities'][$trigger['priority']]++; foreach ($host['groups'] as $gnum => $group) { if (!isset($highest_severity[$group['groupid']])) { $highest_severity[$group['groupid']] = 0; } if ($trigger['priority'] > $highest_severity[$group['groupid']]) { $highest_severity[$group['groupid']] = $trigger['priority']; } if (!isset($hosts_data[$group['groupid']])) { $hosts_data[$group['groupid']] = array('problematic' => 0, 'ok' => 0, 'lastUnack' => 0, 'hostids_all' => array(), 'hostids_unack' => array()); } if (!isset($hosts_data[$group['groupid']]['hostids_all'][$host['hostid']])) { $hosts_data[$group['groupid']]['hostids_all'][$host['hostid']] = $host['hostid']; $hosts_data[$group['groupid']]['problematic']++; } } } } foreach ($hosts as $host) { foreach ($host['groups'] as $group) { if (!isset($groups[$group['groupid']])) { continue; } if (!isset($groups[$group['groupid']]['hosts'])) { $groups[$group['groupid']]['hosts'] = array(); } $groups[$group['groupid']]['hosts'][$host['hostid']] = array('hostid' => $host['hostid']); if (!isset($highest_severity[$group['groupid']])) { $highest_severity[$group['groupid']] = 0; } if (!isset($hosts_data[$group['groupid']])) { $hosts_data[$group['groupid']] = array('problematic' => 0, 'ok' => 0, 'lastUnack' => 0); } if (!isset($problematic_host_list[$host['hostid']])) { $hosts_data[$group['groupid']]['ok']++; } } } foreach ($groups as $group) { if (!isset($hosts_data[$group['groupid']])) { continue; } $group_row = new CRow(); if (is_show_all_nodes()) { $group_row->addItem($group['nodename']); } $name = new CLink($group['name'], 'tr_status.php?groupid=' . $group['groupid'] . '&hostid=0&show_triggers=' . TRIGGERS_OPTION_ONLYTRUE); $group_row->addItem($name); $group_row->addItem(new CCol($hosts_data[$group['groupid']]['ok'], 'normal')); if ($filter['extAck']) { if ($hosts_data[$group['groupid']]['lastUnack']) { $table_inf = new CTableInfo(); $table_inf->setAttribute('style', 'width: 400px;'); $table_inf->setHeader(array(_('Host'), is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_DISASTER]) ? getSeverityCaption(TRIGGER_SEVERITY_DISASTER) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_HIGH]) ? getSeverityCaption(TRIGGER_SEVERITY_HIGH) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_AVERAGE]) ? getSeverityCaption(TRIGGER_SEVERITY_AVERAGE) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_WARNING]) ? getSeverityCaption(TRIGGER_SEVERITY_WARNING) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_INFORMATION]) ? getSeverityCaption(TRIGGER_SEVERITY_INFORMATION) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_NOT_CLASSIFIED]) ? getSeverityCaption(TRIGGER_SEVERITY_NOT_CLASSIFIED) : null)); $popup_rows = 0; foreach ($group['hosts'] as $host) { $hostid = $host['hostid']; if (!isset($lastUnack_host_list[$hostid])) { continue; } if ($popup_rows >= ZBX_WIDGET_ROWS) { break; } $popup_rows++; $host_data = $lastUnack_host_list[$hostid]; $r = new CRow(); $r->addItem(new CLink($host_data['host'], 'tr_status.php?groupid=' . $group['groupid'] . '&hostid=' . $hostid . '&show_triggers=' . TRIGGERS_OPTION_ONLYTRUE)); foreach ($lastUnack_host_list[$host['hostid']]['severities'] as $severity => $trigger_count) { if (!is_null($filter['severity']) && !isset($filter['severity'][$severity])) { continue; } $r->addItem(new CCol($trigger_count, getSeverityStyle($severity, $trigger_count))); } $table_inf->addRow($r); } $lastUnack_count = new CSpan($hosts_data[$group['groupid']]['lastUnack'], 'pointer red bold'); $lastUnack_count->setHint($table_inf); } else { $lastUnack_count = 0; } } // if hostgroup contains problematic hosts, hint should be built if ($hosts_data[$group['groupid']]['problematic']) { $table_inf = new CTableInfo(); $table_inf->setAttribute('style', 'width: 400px;'); $table_inf->setHeader(array(_('Host'), is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_DISASTER]) ? getSeverityCaption(TRIGGER_SEVERITY_DISASTER) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_HIGH]) ? getSeverityCaption(TRIGGER_SEVERITY_HIGH) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_AVERAGE]) ? getSeverityCaption(TRIGGER_SEVERITY_AVERAGE) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_WARNING]) ? getSeverityCaption(TRIGGER_SEVERITY_WARNING) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_INFORMATION]) ? getSeverityCaption(TRIGGER_SEVERITY_INFORMATION) : null, is_null($filter['severity']) || isset($filter['severity'][TRIGGER_SEVERITY_NOT_CLASSIFIED]) ? getSeverityCaption(TRIGGER_SEVERITY_NOT_CLASSIFIED) : null)); $popup_rows = 0; foreach ($group['hosts'] as $host) { $hostid = $host['hostid']; if (!isset($problematic_host_list[$hostid])) { continue; } if ($popup_rows >= ZBX_WIDGET_ROWS) { break; } $popup_rows++; $host_data = $problematic_host_list[$hostid]; $r = new CRow(); $r->addItem(new CLink($host_data['host'], 'tr_status.php?groupid=' . $group['groupid'] . '&hostid=' . $hostid . '&show_triggers=' . TRIGGERS_OPTION_ONLYTRUE)); foreach ($problematic_host_list[$host['hostid']]['severities'] as $severity => $trigger_count) { if (!is_null($filter['severity']) && !isset($filter['severity'][$severity])) { continue; } $r->addItem(new CCol($trigger_count, getSeverityStyle($severity, $trigger_count))); } $table_inf->addRow($r); } $problematic_count = new CSpan($hosts_data[$group['groupid']]['problematic'], 'pointer'); $problematic_count->setHint($table_inf); } else { $problematic_count = 0; } switch ($filter['extAck']) { case EXTACK_OPTION_ALL: $group_row->addItem(new CCol($problematic_count, getSeverityStyle($highest_severity[$group['groupid']], $hosts_data[$group['groupid']]['problematic']))); $group_row->addItem($hosts_data[$group['groupid']]['problematic'] + $hosts_data[$group['groupid']]['ok']); break; case EXTACK_OPTION_UNACK: $group_row->addItem(new CCol($lastUnack_count, getSeverityStyle(isset($highest_severity2[$group['groupid']]) ? $highest_severity2[$group['groupid']] : 0, $hosts_data[$group['groupid']]['lastUnack']))); $group_row->addItem($hosts_data[$group['groupid']]['lastUnack'] + $hosts_data[$group['groupid']]['ok']); break; case EXTACK_OPTION_BOTH: $unackspan = $lastUnack_count ? new CSpan(array($lastUnack_count, SPACE . _('of') . SPACE)) : null; $group_row->addItem(new CCol(array($unackspan, $problematic_count), getSeverityStyle($highest_severity[$group['groupid']], $hosts_data[$group['groupid']]['problematic']))); $group_row->addItem($hosts_data[$group['groupid']]['problematic'] + $hosts_data[$group['groupid']]['ok']); break; } $table->addRow($group_row); } $script = new CJSScript(get_js("jQuery('#hat_hoststat_footer').html('" . _s('Updated: %s', zbx_date2str(_('H:i:s'))) . "')")); return new CDiv(array($table, $script)); }
$menus = "[" . zbx_jsvalue(S_TOOLS) . ",null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]," . $menus; } $menus .= "[" . zbx_jsvalue(S_LINKS) . ",null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}],"; $menus .= "['" . S_LATEST_DATA . "',\"javascript: redirect('latest.php?hostid=" . $trigger_host['hostid'] . "')\", null,{'outer' : ['pum_o_item'],'inner' : ['pum_i_item']}],"; $menus = rtrim($menus, ','); $menus = 'show_popup_menu(event,[' . $menus . '],180);'; $maint_span = null; if ($trigger_host['maintenance_status']) { $text = $trigger_host['maintenance_type'] ? S_NO_DATA_MAINTENANCE : S_NORMAL_MAINTENANCE; $text = ' [' . $text . ']'; $maint_span = new CSpan($text, 'orange pointer'); $maintenanceOptions = array('maintenanceids' => $trigger_host['maintenanceid'], 'output' => API_OUTPUT_EXTEND); $maintenances = CMaintenance::get($maintenanceOptions); $maintenance = reset($maintenances); $maint_hint = new CSpan($maintenance['name'] . ($maintenance['description'] == '' ? '' : ': ' . $maintenance['description'])); $maint_span->setHint($maint_hint); } $hosts_span = new CSpan($trigger_host['host'], 'link_menu'); $hosts_span->setAttribute('onclick', 'javascript: ' . $menus); $hosts_list[] = $hosts_span; $hosts_list[] = $maint_span; $hosts_list[] = ', '; } array_pop($hosts_list); $host = new CCol($hosts_list); $host->addStyle('white-space: normal;'); // }}} host JS menu $status = new CSpan(trigger_value2str($trigger['value']), get_trigger_value_style($trigger['value'])); if (time() - $trigger['lastchange'] < TRIGGER_BLINK_PERIOD) { $status->setAttribute('name', 'blink'); }
function make_system_summary($args = array()) { global $USER_DETAILS; $config = select_config(); $available_hosts = get_accessible_hosts_by_user($USER_DETAILS, PERM_READ_ONLY, PERM_RES_IDS_ARRAY); $available_groups = get_accessible_groups_by_user($USER_DETAILS, PERM_READ_ONLY, PERM_RES_IDS_ARRAY); $available_triggers = get_accessible_triggers(PERM_READ_ONLY, array(), PERM_RES_IDS_ARRAY); if (isset($args['hosts']) && !empty($args['hosts'])) { $available_hosts = zbx_uint_array_intersect($args['hosts'], $available_hosts); } if (isset($args['groups']) && !empty($args['groups'])) { $available_groups = zbx_uint_array_intersect($args['groups'], $available_groups); } $sql_where = ''; if (isset($args['severity']) && ctype_digit($args['severity'])) { $sql_where = ' AND t.priority>=' . $args['severity']; } $table = new CTableInfo(); $table->setHeader(array(is_show_all_nodes() ? S_NODE : null, S_HOST_GROUP, S_DISASTER, S_HIGH, S_AVERAGE, S_WARNING, S_INFORMATION, S_NOT_CLASSIFIED)); $sql = 'SELECT DISTINCT g.groupid,g.name ' . ' FROM groups g, hosts_groups hg, hosts h, items i, functions f, triggers t ' . ' WHERE ' . DBcondition('h.hostid', $available_hosts) . ' AND ' . DBcondition('g.groupid', $available_groups) . ' AND hg.groupid=g.groupid ' . ' AND h.status=' . HOST_STATUS_MONITORED . ' AND h.hostid=i.hostid ' . ' AND hg.hostid=h.hostid ' . ' AND i.status=' . ITEM_STATUS_ACTIVE . ' AND i.itemid=f.itemid ' . ' AND t.triggerid=f.triggerid ' . ' AND t.status=' . TRIGGER_STATUS_ENABLED . ' ORDER BY g.name'; $gr_result = DBselect($sql); while ($group = DBFetch($gr_result)) { $group_row = new CRow(); if (is_show_all_nodes()) { $group_row->addItem(get_node_name_by_elid($group['groupid'])); } $name = new CLink($group['name'], 'tr_status.php?groupid=' . $group['groupid'] . '&show_triggers=' . TRIGGERS_OPTION_ONLYTRUE); $name->setTarget('blank'); $group_row->addItem($name); $tab_priority[TRIGGER_SEVERITY_DISASTER] = 0; $tab_priority[TRIGGER_SEVERITY_HIGH] = 0; $tab_priority[TRIGGER_SEVERITY_AVERAGE] = 0; $tab_priority[TRIGGER_SEVERITY_WARNING] = 0; $tab_priority[TRIGGER_SEVERITY_INFORMATION] = 0; $tab_priority[TRIGGER_SEVERITY_NOT_CLASSIFIED] = 0; $sql = 'SELECT count(DISTINCT t.triggerid) as tr_cnt,t.priority ' . ' FROM hosts h,items i,hosts_groups hg, functions f, triggers t ' . ' WHERE h.status=' . HOST_STATUS_MONITORED . ' AND h.hostid=i.hostid ' . ' AND hg.groupid=' . $group['groupid'] . ' AND hg.hostid=h.hostid' . ' AND i.status=' . ITEM_STATUS_ACTIVE . ' AND i.itemid=f.itemid ' . ' AND t.triggerid=f.triggerid ' . ' AND t.value=' . TRIGGER_VALUE_TRUE . ' AND t.status=' . TRIGGER_STATUS_ENABLED . ' AND ' . DBcondition('h.hostid', $available_hosts) . ' GROUP BY t.priority'; //SDI($sql); $tr_result = DBSelect($sql); while ($group_stat = DBFetch($tr_result)) { $tab_priority[$group_stat['priority']] = $group_stat['tr_cnt']; } foreach ($tab_priority as $key => $value) { $tr_count = 0; if ($value) { //* trigger list $table_inf = new CTableInfo(); $table_inf->setAttribute('style', 'width: 400px;'); $table_inf->setHeader(array(is_show_all_nodes() ? S_NODE : null, S_HOST, S_ISSUE, S_AGE, $config['event_ack_enable'] ? S_ACK : NULL, S_ACTIONS)); $sql = 'SELECT DISTINCT t.triggerid,t.status,t.description,t.expression,t.priority,t.lastchange,t.value,h.host,h.hostid ' . ' FROM triggers t,hosts h,items i,functions f, hosts_groups hg ' . ' WHERE f.itemid=i.itemid ' . ' AND hg.groupid=' . $group['groupid'] . ' AND h.hostid=i.hostid ' . ' AND hg.hostid=h.hostid ' . ' AND t.triggerid=f.triggerid ' . ' AND t.status=' . TRIGGER_STATUS_ENABLED . ' AND i.status=' . ITEM_STATUS_ACTIVE . ' AND ' . DBcondition('t.triggerid', $available_triggers) . ' AND h.status=' . HOST_STATUS_MONITORED . ' AND t.value=' . TRIGGER_VALUE_TRUE . ' AND t.priority=' . $key . ' ORDER BY t.lastchange DESC'; $result = DBselect($sql); while ($row_inf = DBfetch($result)) { // Check for dependencies if (trigger_dependent($row_inf["triggerid"])) { continue; } $tr_count++; if ($tr_count > 30) { continue; } $host = new CSpan($row_inf['host']); $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=' . EVENT_SOURCE_TRIGGERS . ' AND e.objectid=' . $row_inf['triggerid'] . ' AND t.triggerid=e.objectid ' . ' AND e.value=' . TRIGGER_VALUE_TRUE . ' ORDER by e.object DESC, e.objectid DESC, e.eventid DESC'; if ($row_inf_event = DBfetch(DBselect($event_sql, 1))) { if ($config['event_ack_enable']) { if ($row_inf_event['acknowledged'] == 1) { $ack = new CLink(S_YES, 'acknow.php?eventid=' . $row_inf_event['eventid'], 'action'); } else { $ack = new CLink(S_NO, 'acknow.php?eventid=' . $row_inf_event['eventid'], 'on'); } } $description = expand_trigger_description_by_data(array_merge($row_inf, array('clock' => $row_inf_event['clock'])), ZBX_FLAG_EVENT); //actions $actions = get_event_actions_status($row_inf_event['eventid']); //-------- } else { $description = expand_trigger_description_by_data($row_inf, ZBX_FLAG_EVENT); $ack = '-'; $actions = S_NO_DATA_SMALL; $row_inf_event['clock'] = $row_inf['clock']; } $table_inf->addRow(array(get_node_name_by_elid($row_inf['triggerid']), $host, new CCol($description, get_severity_style($row_inf['priority'])), zbx_date2age($row_inf_event['clock']), $config['event_ack_enable'] ? new CCol($ack, 'center') : NULL, $actions)); unset($row_inf, $description, $actions); } $value = new CSpan($tr_count, 'pointer'); $value->setHint($table_inf); //-------------*/ } $group_row->AddItem(new CCol($value, get_severity_style($key, $tr_count))); unset($table_inf); } $table->addRow($group_row); } $table->setFooter(new CCol(S_UPDATED . ': ' . date("H:i:s", time()))); return $table; }
$delay = count_operations_delay($this->data['action']['operations'], $this->data['action']['esc_period']); } else { $operationsTable->setHeader(array(_('Details'), _('Action'))); } foreach ($this->data['action']['operations'] as $operationid => $operation) { if (!str_in_array($operation['operationtype'], $this->data['allowedOperations'])) { continue; } if (!isset($operation['opconditions'])) { $operation['opconditions'] = array(); } if (!isset($operation['mediatypeid'])) { $operation['mediatypeid'] = 0; } $details = new CSpan(get_operation_descr(SHORT_DESCRIPTION, $operation)); $details->setHint(get_operation_descr(LONG_DESCRIPTION, $operation)); if ($this->data['eventsource'] == EVENT_SOURCE_TRIGGERS || $this->data['eventsource'] == EVENT_SOURCE_INTERNAL) { $esc_steps_txt = null; $esc_period_txt = null; $esc_delay_txt = null; if ($operation['esc_step_from'] < 1) { $operation['esc_step_from'] = 1; } $esc_steps_txt = $operation['esc_step_from'] . ' - ' . $operation['esc_step_to']; // display N-N as N $esc_steps_txt = $operation['esc_step_from'] == $operation['esc_step_to'] ? $operation['esc_step_from'] : $operation['esc_step_from'] . ' - ' . $operation['esc_step_to']; $esc_period_txt = $operation['esc_period'] ? $operation['esc_period'] : _('Default'); $esc_delay_txt = $delay[$operation['esc_step_from']] ? convert_units(array('value' => $delay[$operation['esc_step_from']], 'units' => 'uptime')) : _('Immediately'); $operationRow = array($esc_steps_txt, $details, $esc_delay_txt, $esc_period_txt, array(new CSubmit('edit_operationid[' . $operationid . ']', _('Edit'), null, 'link_menu'), SPACE, SPACE, SPACE, array(new CButton('remove', _('Remove'), 'javascript: removeOperation(' . $operationid . ');', 'link_menu'), new CVar('operations[' . $operationid . ']', $operation)))); } else { $operationRow = array($details, array(new CSubmit('edit_operationid[' . $operationid . ']', _('Edit'), null, 'link_menu'), SPACE, SPACE, SPACE, array(new CButton('remove', _('Remove'), 'javascript: removeOperation(' . $operationid . ');', 'link_menu'), new CVar('operations[' . $operationid . ']', $operation))));
function stage2() { $table = new CTable(null, 'requirements'); $table->setAlign('center'); $finalResult = FrontendSetup::CHECK_OK; $table->addRow(array(SPACE, new CCol(_('Current value'), 'header'), new CCol(_('Required'), 'header'))); $frontendSetup = new FrontendSetup(); $reqs = $frontendSetup->checkRequirements(); foreach ($reqs as $req) { $result = null; // OK if ($req['result'] == FrontendSetup::CHECK_OK) { $rowClass = ''; $result = new CSpan(_('OK'), 'ok'); } elseif ($req['result'] == FrontendSetup::CHECK_WARNING) { $rowClass = 'notice'; $result = new CSpan(_x('Warning', 'setup'), 'link_menu notice'); $result->setHint($req['error']); } else { $rowClass = 'fail'; $result = new CSpan(_('Fail'), 'link_menu fail'); $result->setHint($req['error']); } $table->addRow(array(new CCol($req['name'], 'header'), $req['current'], $req['required'] ? $req['required'] : SPACE, $result), $rowClass); $finalResult = max($finalResult, $req['result']); } // fatal error if ($finalResult == FrontendSetup::CHECK_FATAL) { $this->DISABLE_NEXT_BUTTON = true; $message = array(_('Please correct all issues and press "Retry" button'), BR(), new CSubmit('retry', _('Retry'))); } else { $this->DISABLE_NEXT_BUTTON = false; $message = array(new CSpan(_('OK'), 'ok')); // add a warning message if ($finalResult == FrontendSetup::CHECK_WARNING) { $message[] = BR(); $message[] = _('(with warnings)'); } } return array(new CDiv(array(BR(), $table, BR()), 'table_wraper'), new CDiv($message, 'info_bar')); }
function getEventActionsStatHints($eventIds) { if (empty($eventIds)) { return array(); } $actions = array(); $alerts = DBselect('SELECT a.eventid,a.status,COUNT(a.alertid) AS cnt' . ' FROM alerts a' . ' WHERE a.alerttype IN (' . ALERT_TYPE_MESSAGE . ',' . ALERT_TYPE_COMMAND . ')' . ' AND ' . dbConditionInt('a.eventid', $eventIds) . ' GROUP BY eventid,status'); while ($alert = DBfetch($alerts)) { if ($alert['cnt'] > 0) { if ($alert['status'] == ALERT_STATUS_SENT) { $color = 'green'; } elseif ($alert['status'] == ALERT_STATUS_NOT_SENT) { $color = 'orange'; } else { $color = 'red'; } $hint = new CSpan($alert['cnt'], $color); $hint->setHint(get_actions_hint_by_eventid($alert['eventid'], $alert['status'])); $actions[$alert['eventid']][$alert['status']] = $hint; } } foreach ($actions as $eventId => $action) { $actions[$eventId] = new CDiv(null, 'event-action-cont'); $actions[$eventId]->addItem(array(new CDiv(isset($action[ALERT_STATUS_SENT]) ? $action[ALERT_STATUS_SENT] : SPACE), new CDiv(isset($action[ALERT_STATUS_NOT_SENT]) ? $action[ALERT_STATUS_NOT_SENT] : SPACE), new CDiv(isset($action[ALERT_STATUS_FAILED]) ? $action[ALERT_STATUS_FAILED] : SPACE))); } return $actions; }
function get_event_actions_stat_hints($eventid) { $actions = new CTable(' - '); $sql = 'SELECT COUNT(a.alertid) as cnt ' . ' FROM alerts a ' . ' WHERE a.eventid=' . $eventid . ' AND a.alerttype in (' . ALERT_TYPE_MESSAGE . ',' . ALERT_TYPE_COMMAND . ')'; $alerts = DBfetch(DBselect($sql)); if (isset($alerts['cnt']) && $alerts['cnt'] > 0) { $sql = 'SELECT COUNT(a.alertid) as sent ' . ' FROM alerts a ' . ' WHERE a.eventid=' . $eventid . ' AND a.alerttype in (' . ALERT_TYPE_MESSAGE . ',' . ALERT_TYPE_COMMAND . ')' . ' AND a.status=' . ALERT_STATUS_SENT; $alerts = DBfetch(DBselect($sql)); $alert_cnt = new CSpan($alerts['sent'], 'green'); if ($alerts['sent']) { $hint = get_actions_hint_by_eventid($eventid, ALERT_STATUS_SENT); $alert_cnt->SetHint($hint); } $tdl = new CCol($alerts['sent'] ? $alert_cnt : SPACE); $tdl->addOption('width', '10'); $sql = 'SELECT COUNT(a.alertid) as inprogress ' . ' FROM alerts a ' . ' WHERE a.eventid=' . $eventid . ' AND a.alerttype in (' . ALERT_TYPE_MESSAGE . ',' . ALERT_TYPE_COMMAND . ')' . ' AND a.status=' . ALERT_STATUS_NOT_SENT; $alerts = DBfetch(DBselect($sql)); $alert_cnt = new CSpan($alerts['inprogress'], 'orange'); if ($alerts['inprogress']) { $hint = get_actions_hint_by_eventid($eventid, ALERT_STATUS_NOT_SENT); $alert_cnt->setHint($hint); } $tdc = new CCol($alerts['inprogress'] ? $alert_cnt : SPACE); $tdc->addOption('width', '10'); $sql = 'SELECT COUNT(a.alertid) as failed ' . ' FROM alerts a ' . ' WHERE a.eventid=' . $eventid . ' AND a.alerttype in (' . ALERT_TYPE_MESSAGE . ',' . ALERT_TYPE_COMMAND . ')' . ' AND a.status=' . ALERT_STATUS_FAILED; $alerts = DBfetch(DBselect($sql)); $alert_cnt = new CSpan($alerts['failed'], 'red'); if ($alerts['failed']) { $hint = get_actions_hint_by_eventid($eventid, ALERT_STATUS_FAILED); $alert_cnt->setHint($hint); } $tdr = new CCol($alerts['failed'] ? $alert_cnt : SPACE); $tdr->addOption('width', '10'); $actions->addRow(array($tdl, $tdc, $tdr)); } return $actions; }
$step['url'] = ''; } if (!isset($step['posts'])) { $step['posts'] = ''; } if (!isset($step['required'])) { $step['required'] = ''; } $numSpan = new CSpan($i++ . ':'); $numSpan->addClass('rowNum'); $numSpan->setAttribute('id', 'current_step_' . $stepid); $name = new CSpan($step['name'], 'link'); $name->setAttributes(array('id' => 'name_' . $stepid, 'name_step' => $stepid)); if (zbx_strlen($step['url']) > 70) { $url = new CSpan(substr($step['url'], 0, 35) . SPACE . '...' . SPACE . substr($step['url'], zbx_strlen($step['url']) - 25, 25)); $url->setHint($step['url']); } else { $url = $step['url']; } if ($this->data['templated']) { $removeButton = SPACE; $dragHandler = SPACE; } else { $removeButton = new CButton('remove_' . $stepid, _('Remove'), 'javascript: removeStep(this);', 'link_menu'); $removeButton->setAttribute('remove_step', $stepid); $dragHandler = new CSpan(null, 'ui-icon ui-icon-arrowthick-2-n-s move'); } $row = new CRow(array($dragHandler, $numSpan, $name, $step['timeout'] . SPACE . _('sec'), $url, htmlspecialchars($step['required']), $step['status_codes'], $removeButton), 'sortable', 'steps_' . $stepid); $stepsTable->addRow($row); } if (!$this->data['templated']) {
$triggerDescription[] = new CSpan(CHtml::encode($trigger['description'])); } else { $triggerDescription[] = new CLink(CHtml::encode($trigger['description']), 'triggers.php?form=update&hostid=' . key($trigger['hosts']) . '&triggerid=' . $trigger['triggerid']); } if ($trigger['state'] == TRIGGER_STATE_UNKNOWN) { $trigger['error'] = ''; } $trigger['items'] = zbx_toHash($trigger['items'], 'itemid'); $trigger['functions'] = zbx_toHash($trigger['functions'], 'functionid'); $triggerHintTable->addRow(array(getSeverityCell($trigger['priority']), $triggerDescription, triggerExpression($trigger, true), new CSpan(triggerIndicator($trigger['status'], $trigger['state']), triggerIndicatorStyle($trigger['status'], $trigger['state'])))); $item['triggers'][$num] = $trigger; } unset($trigger); if (!empty($item['triggers'])) { $triggerInfo = new CSpan(_('Triggers'), 'link_menu'); $triggerInfo->setHint($triggerHintTable); $triggerInfo = array($triggerInfo); $triggerInfo[] = ' (' . count($item['triggers']) . ')'; $triggerHintTable = array(); } else { $triggerInfo = SPACE; } // if item type is 'Log' we must show log menu if (in_array($item['value_type'], array(ITEM_VALUE_TYPE_LOG, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_TEXT))) { $triggers = array(); foreach ($item['triggers'] as $trigger) { foreach ($trigger['functions'] as $function) { if (!str_in_array($function['function'], array('regexp', 'iregexp'))) { continue 2; } }
function make_hint_row($type, $instance) { $state = $instance['state']; if ($type == "other" && $instance["stuck_state"] == 1) { $state = "stuck"; } $r = new CRow(); if (in_array($type, array("poweron", "poweroff", "suspend"))) { $r->addItem(new CCheckBox("hostids[]", null, null, $instance['hostid'])); } $hostScripts = API::Script()->getScriptsByHosts(zbx_objectValues(array($instance['host']), 'hostid')); $hostSpan = new CSpan(nbsp($instance['name']), 'link_menu menu-host'); $hostSpan->setAttribute('data-menu', hostMenuData($instance['host'], $hostScripts[$instance['hostid']])); $r->addItem($hostSpan); $r->addItem(new CCol($state, get_item_level($state))); $r->addItem($instance['cpu']); $r->addItem($instance['memory']); $r->addItem($instance['main_interface']); if ($type == "other" && $instance["stuck_state"] == 1) { $question = $instance['stuck_question']; $json = new CJSON(); $choiceinfos = $json->decode($instance['stuck_choices'], true); $answer_form = new CForm(); $answer_form->setAction('#'); $answer_form->setAttribute('id', "answer"); $answer_form->addVar("driver", "vsphere"); $answer_form->addVar("hostids[]", $instance['hostid']); $instancename = $instance['host']['host']; $answer_button = new CButton('answer', _('Answer'), "return checkAnswer('answer', 'choice', '{$instancename}', 'Execute');"); $choice_table = new CTableInfo(); foreach ($choiceinfos as $choice) { $radio = new CRadioButton('choice', $choice['key']); $label = new CLabel($choice['label']); $choice_table->addRow(new CRow(array($radio, $label))); } $answer_form->addItem($choice_table); $answer_form->addItem($answer_button); $question_span = new CSpan($question); $question_span->setHint($answer_form); $question_col = new CCol($question_span, 'warning'); $r->addItem($question_col); } else { if ($type == "poweron") { $ssh_link = new CLink(_('connect'), "gateone.php?hostid={$instance['hostid']}"); $ssh_link->setTarget("_blank"); $r->addItem($ssh_link); } } return $r; }
function stage2() { $table = new CTable(null, 'requirements'); $table->setAlign('center'); $final_result = true; $table->addRow(array(SPACE, new CCol('Current value', 'header'), new CCol('Required', 'header'), new CCol('Recommended', 'header'), SPACE, SPACE)); $reqs = check_php_requirements(); foreach ($reqs as $req) { $result = null; if (!is_null($req['recommended']) && $req['result'] == 1) { $result = new CSpan(S_OK, 'orange'); } else { if (!is_null($req['recommended']) && $req['result'] == 2 || is_null($req['recommended']) && $req['result'] == 1) { $result = new CSpan(S_OK, 'green'); } else { if ($req['result'] == 0) { $result = new CSpan(S_FAIL, 'link_menu fail'); $result->setHint($req['error']); } } } $table->addRow(array(new CCol($req['name'], 'header'), $req['current'], $req['required'] ? $req['required'] : SPACE, $req['recommended'] ? $req['recommended'] : SPACE, $result), $req['result'] ? SPACE : 'fail'); $final_result &= (bool) $req['result']; } if (!$final_result) { $this->DISABLE_NEXT_BUTTON = true; $this->addVar('trouble', true); $final_result = array(new CSpan(S_FAIL, 'fail'), BR(), BR(), 'Please correct all issues and press "Retry" button', BR(), BR(), new CButton('retry', S_RETRY)); } else { $this->DISABLE_NEXT_BUTTON = false; $final_result = new CSpan(S_OK, 'ok'); } return array($table, BR(), $final_result); }
function make_awsstat_summary($preloading = false) { $table = new CTableInfo(); $table->setHeader(array(is_show_all_nodes() ? S_NODE : null, _('Account name'), _('PoweredOn'), _('PoweredOff'), _('Billing/Month'))); $script_itemkey = 'push_message.py[{$HYCLOPS_SERVER},{$HYCLOPS_PORT},ec2,{HOST.HOST}]'; $aws_accounts = get_aws_accounts(); if (empty($aws_accounts)) { return null; } foreach ($aws_accounts as $host) { if (!$preloading) { if (is_script_success($host['hostid'], $script_itemkey)) { $instances = get_instances($host['hostid']); $instances = filter_instances($instances); $r = new CRow(); // Account name $col = new CCol($host['host']); $r->addItem($col); // Poweron (running + pending) $poweron_vms = array_merge($instances["running"], $instances["pending"]); $poweron_count = new CSpan(count($poweron_vms), 'pointer'); if (!empty($poweron_vms)) { $poweron_count->setHint(make_ec2_table('ec2_poweron', $poweron_vms)); } $r->addItem(new CCol($poweron_count)); // Poweroff (stopped + terminated + stopping + shutting-down) $poweroff_vms = $instances["stopped"]; $poweroff_count = new CSpan(count($poweroff_vms), 'pointer'); if (!empty($poweroff_vms)) { $poweroff_count->setHint(make_ec2_table('ec2_poweroff', $poweroff_vms)); } $r->addItem(new CCol($poweroff_count)); // AWS Charges $item = get_item_by_key('get_aws_charges.py[{$KEY},{$SECRET}]', $host["host"]); if (array_key_exists('lastvalue', $item)) { $r->addItem(new CLink($item["lastvalue"], "history.php?action=showgraph&itemid={$item["itemid"]}")); } else { $r->addItem(new CCol(_('No data'))); } $table->addRow($r); zbx_add_post_js('chkbxRange.pageGoName = "vms";'); } else { $r = new CRow(); $r->addItem($host['host']); $r->addItem(new CCol(_('script failed'), "high")); $r->addItem(array("-")); $table->addRow($r); } } else { $r = new CRow(); $r->addItem($host['host']); $r->addItem(new CCol(_('loading...'))); $r->addItem(array("-")); $table->addRow($r); } } $script = new CJSScript(get_js("jQuery('#hat_awsstat_footer').html('" . _s('Updated: %s', zbx_date2str(_('H:i:s'))) . "')")); return new CDiv(array($table, $script)); }
function make_latest_issues($filter = array()) { global $page; $config = select_config(); $limit = isset($filter['limit']) ? $filter['limit'] : 20; $options = array('groupids' => $filter['groupids'], 'monitored' => 1, 'maintenance' => $filter['maintenance'], 'skipDependent' => 1, 'filter' => array('priority' => $filter['severity'], 'value' => TRIGGER_VALUE_TRUE), 'select_groups' => API_OUTPUT_EXTEND, 'select_hosts' => API_OUTPUT_EXTEND, 'output' => API_OUTPUT_EXTEND, 'sortfield' => 'lastchange', 'sortorder' => ZBX_SORT_DOWN, 'limit' => $limit); if (isset($filter['hostids'])) { $options['hostids'] = $filter['hostids']; } $triggers = CTrigger::get($options); // GATHER HOSTS FOR SELECTED TRIGGERS {{{ $triggers_hosts = array(); foreach ($triggers as $tnum => $trigger) { // if trigger is lost(broken expression) we skip it if (empty($trigger['hosts'])) { unset($triggers[$tnum]); continue; } $triggers_hosts = array_merge($triggers_hosts, $trigger['hosts']); } $triggers_hosts = zbx_toHash($triggers_hosts, 'hostid'); $triggers_hostids = array_keys($triggers_hosts); // }}} GATHER HOSTS FOR SELECTED TRIGGERS $scripts_by_hosts = CScript::getScriptsByHosts($triggers_hostids); $table = new CTableInfo(); $table->setHeader(array(is_show_all_nodes() ? S_NODE : null, S_HOST, S_ISSUE, S_LAST_CHANGE, S_AGE, $config['event_ack_enable'] ? S_ACK : NULL, S_ACTIONS)); $thosts_cache = array(); foreach ($triggers as $tnum => $trigger) { // Check for dependencies $group = reset($trigger['groups']); $host = reset($trigger['hosts']); $trigger['hostid'] = $host['hostid']; $trigger['host'] = $host['host']; $host = null; $menus = ''; $host_nodeid = id2nodeid($trigger['hostid']); foreach ($scripts_by_hosts[$trigger['hostid']] as $id => $script) { $script_nodeid = id2nodeid($script['scriptid']); if (bccomp($host_nodeid, $script_nodeid) == 0) { $menus .= "[" . zbx_jsvalue($script['name']) . ",\"javascript: openWinCentered('scripts_exec.php?execute=1&hostid=" . $trigger['hostid'] . "&scriptid=" . $script['scriptid'] . "','" . S_TOOLS . "',760,540,'titlebar=no, resizable=yes, scrollbars=yes, dialog=no');\", null,{'outer' : ['pum_o_item'],'inner' : ['pum_i_item']}],"; } } if (!empty($scripts_by_hosts)) { $menus = "['" . S_TOOLS . "',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]," . $menus; } if (isset($thosts_cache[$trigger['hostid']])) { $hprofile = $thosts_cache[$trigger['hostid']]; } else { $hprofile = CHost::get(array('hostids' => $trigger['hostid'], 'output' => API_OUTPUT_SHORTEN, 'select_profile' => API_OUTPUT_EXTEND)); $hprofile = reset($hprofile); $thosts_cache[$hprofile['hostid']] = $hprofile; } $menus .= "['" . S_LINKS . "',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}],"; $menus .= "['" . S_LATEST_DATA . "',\"javascript: redirect('latest.php?groupid=" . $group['groupid'] . '&hostid=' . $trigger['hostid'] . "')\", null,{'outer' : ['pum_o_item'],'inner' : ['pum_i_item']}],"; if (!empty($hprofile['profile'])) { $menus .= "['" . S_PROFILE . "',\"javascript: redirect('hostprofiles.php?hostid=" . $trigger['hostid'] . "&prof_type=0')\", null,{'outer' : ['pum_o_item'],'inner' : ['pum_i_item']}],"; } if (!empty($hprofile['profile_ext'])) { $menus .= "['" . S_EXTENDED_PROFILE . "',\"javascript: redirect('hostprofiles.php?hostid=" . $trigger['hostid'] . "&prof_type=1')\", null,{'outer' : ['pum_o_item'],'inner' : ['pum_i_item']}],"; } $menus = rtrim($menus, ','); $menus = 'show_popup_menu(event,[' . $menus . '],180);'; $host = new CSpan($trigger['host'], 'link_menu pointer'); $host->setAttribute('onclick', 'javascript: ' . $menus); //$host = new CSpan($trigger['host'],'link_menu pointer'); //$host->setAttribute('onclick','javascript: '.$menus); // Maintenance {{{ $trigger_host = $triggers_hosts[$trigger['hostid']]; $text = null; $style = 'link_menu'; if ($trigger_host['maintenance_status']) { $style .= ' orange'; $options = array('maintenanceids' => $trigger_host['maintenanceid'], 'output' => API_OUTPUT_EXTEND); $maintenances = CMaintenance::get($options); $maintenance = reset($maintenances); $text = $maintenance['name']; $text .= ' [' . ($trigger_host['maintenance_type'] ? S_NO_DATA_MAINTENANCE : S_NORMAL_MAINTENANCE) . ']'; } $host = new CSpan($trigger['host'], $style . ' pointer'); $host->setAttribute('onclick', 'javascript: ' . $menus); if (!is_null($text)) { $host->setHint($text, '', '', false); } // }}} Maintenance $event_sql = 'SELECT e.eventid, e.value, e.clock, e.objectid as triggerid, e.acknowledged' . ' FROM events e' . ' WHERE e.object=' . EVENT_OBJECT_TRIGGER . ' AND e.objectid=' . $trigger['triggerid'] . ' AND e.value=' . TRIGGER_VALUE_TRUE . ' ORDER by e.object DESC, e.objectid DESC, e.eventid DESC'; $res_events = DBSelect($event_sql, 1); while ($row_event = DBfetch($res_events)) { $ack = NULL; if ($config['event_ack_enable']) { if ($row_event['acknowledged'] == 1) { $ack_info = make_acktab_by_eventid($row_event['eventid']); $ack_info->setAttribute('style', 'width: auto;'); $ack = new CLink(S_YES, 'acknow.php?eventid=' . $row_event['eventid'] . '&backurl=' . $page['file'], 'off'); $ack->setHint($ack_info, '', '', false); } else { $ack = new CLink(S_NO, 'acknow.php?eventid=' . $row_event['eventid'] . '&backurl=' . $page['file'], 'on'); } } // $description = expand_trigger_description($row['triggerid']); $description = expand_trigger_description_by_data(zbx_array_merge($trigger, array('clock' => $row_event['clock'])), ZBX_FLAG_EVENT); //actions $actions = get_event_actions_stat_hints($row_event['eventid']); $clock = new CLink(zbx_date2str(S_BLOCKS_LATEST_ISSUES_DATE_FORMAT, $row_event['clock']), 'events.php?triggerid=' . $trigger['triggerid'] . '&source=0&show_unknown=1&nav_time=' . $row_event['clock']); if ($trigger['url']) { $description = new CLink($description, $trigger['url'], null, null, true); } else { $description = new CSpan($description, 'pointer'); } $description = new CCol($description, get_severity_style($trigger['priority'])); $description->setHint(make_popup_eventlist($row_event['eventid'], $trigger['type'], $trigger['triggerid']), '', '', false); $table->addRow(array(get_node_name_by_elid($trigger['triggerid']), $host, $description, $clock, zbx_date2age($row_event['clock']), $ack, $actions)); } unset($trigger, $description, $actions); } $table->setFooter(new CCol(S_UPDATED . ': ' . zbx_date2str(S_BLOCKS_LATEST_ISSUES_TIME_FORMAT))); return $table; }
function stage2() { $table = new CTable(null, 'requirements'); $table->setAlign('center'); $final_result = true; $table->addRow(array(SPACE, new CCol(_('Current value'), 'header'), new CCol(_('Required'), 'header'))); $reqs = FrontendSetup::i()->checkRequirements(); foreach ($reqs as $req) { $result = null; if ($req['result']) { $result = new CSpan(_('OK'), 'green'); } else { $result = new CSpan(_('Fail'), 'link_menu fail'); $result->setHint($req['error']); } $table->addRow(array(new CCol($req['name'], 'header'), $req['current'], $req['required'] ? $req['required'] : SPACE, $result), $req['result'] ? SPACE : 'fail'); $final_result &= (bool) $req['result']; } if (!$final_result) { $this->DISABLE_NEXT_BUTTON = true; $this->addVar('trouble', true); $final_result = array(_('Please correct all issues and press "Retry" button'), BR(), new CSubmit('retry', _('Retry'))); } else { $this->DISABLE_NEXT_BUTTON = false; $final_result = array(new CSpan(_('OK'), 'ok')); } return array(new CDiv(array(BR(), $table, BR()), 'table_wraper'), new CDiv($final_result, 'info_bar')); }
$priority = $trigger['priority']; } if ($trigger['status'] == TRIGGER_STATUS_DISABLED) { $tstatus = new CSpan(S_DISABLED, 'disabled'); } else { if ($trigger['status'] == TRIGGER_STATUS_ENABLED) { $tstatus = new CSpan(S_ENABLED, 'enabled'); } } $trigger_hint->addRow(array($priority, $tr_description, triggerExpression($trigger, 1), $tstatus)); $item['triggers'][$tnum] = $trigger; } unset($trigger); if (!empty($item['triggers'])) { $trigger_info = new CSpan(S_TRIGGERS, 'link_menu'); $trigger_info->setHint($trigger_hint); $trigger_info = array($trigger_info); $trigger_info[] = ' (' . count($item['triggers']) . ')'; $trigger_hint = array(); } else { $trigger_info = SPACE; } //------- // if item type is 'Log' we must show log menu if ($item['value_type'] == ITEM_VALUE_TYPE_LOG || $item['value_type'] == ITEM_VALUE_TYPE_STR || $item['value_type'] == ITEM_VALUE_TYPE_TEXT) { $triggers_flag = false; $triggers = "Array('" . S_EDIT_TRIGGER . "',null,null,{'outer' : 'pum_o_submenu','inner' : ['pum_i_submenu']}\n"; foreach ($item['triggers'] as $num => $trigger) { foreach ($trigger['functions'] as $fnum => $function) { if (!str_in_array($function['function'], array('regexp', 'iregexp'))) { continue 2;
$delay = count_operations_delay($operations, $esc_period); foreach ($operations as $id => $condition) { if (!str_in_array($condition['operationtype'], $allowed_operations)) { continue; } if (!isset($condition['default_msg'])) { $condition['default_msg'] = 0; } if (!isset($condition['opconditions'])) { $condition['opconditions'] = array(); } if (!isset($condition['mediatypeid'])) { $condition['mediatypeid'] = 0; } $oper_details = new CSpan(get_operation_desc(SHORT_DESCRITION, $condition)); $oper_details->setHint(nl2br(get_operation_desc(LONG_DESCRITION, $condition))); $esc_steps_txt = null; $esc_period_txt = null; $esc_delay_txt = null; if ($condition['esc_step_from'] < 1) { $condition['esc_step_from'] = 1; } if (isset($_REQUEST['escalation'])) { $esc_steps_txt = $condition['esc_step_from'] . ' - ' . $condition['esc_step_to']; /* Display N-N as N */ $esc_steps_txt = $condition['esc_step_from'] == $condition['esc_step_to'] ? $condition['esc_step_from'] : $condition['esc_step_from'] . ' - ' . $condition['esc_step_to']; $esc_period_txt = $condition['esc_period'] ? $condition['esc_period'] : S_DEFAULT; $esc_delay_txt = $delay[$condition['esc_step_from']] ? convert_units($delay[$condition['esc_step_from']], 'uptime') : S_IMMEDIATELY; } $tblOper->addRow(array(new CCheckBox("g_operationid[]", 'no', null, $id), $esc_steps_txt, $oper_details, $esc_period_txt, $esc_delay_txt, new CButton('edit_operationid[' . $id . ']', S_EDIT))); $tblOper->addItem(new CVar('operations[' . $id . '][operationtype]', $condition['operationtype']));