diff -ru zabbix-1.6.4/frontends/php/include/defines.inc.php zabbix-1.6.4-patched/frontends/php/include/defines.inc.php --- zabbix-1.6.4/frontends/php/include/defines.inc.php 2009-04-03 16:44:06.000000000 +0200 +++ zabbix-1.6.4-patched/frontends/php/include/defines.inc.php 2009-05-06 10:21:02.000000000 +0200 @@ -40,6 +40,7 @@ define('EVENTS_OPTION_NOT_ACK', 3); // use 0 to disable define('EVENTS_OPTION_ONLYTRUE_NOTACK', 4); // use 0 to disable define('EVENTS_OPTION_NOFALSEFORB', 5); // reserved for TRIGGERS_OPTION_NOFALSEFORB, to disable set TRIGGERS_OPTION_NOFALSEFORB to 0 + define('EVENTS_OPTION_EVENT_LAST', 6); define('ZBX_MIN_PERIOD', 3600); // ~1 hour define('ZBX_MAX_PERIOD', 12*31*24*3600); // ~1 year diff -ru zabbix-1.6.4/frontends/php/include/locales/en_gb.inc.php zabbix-1.6.4-patched/frontends/php/include/locales/en_gb.inc.php --- zabbix-1.6.4/frontends/php/include/locales/en_gb.inc.php 2009-04-03 16:44:06.000000000 +0200 +++ zabbix-1.6.4-patched/frontends/php/include/locales/en_gb.inc.php 2009-05-06 10:23:43.000000000 +0200 @@ -1493,6 +1493,7 @@ 'S_SHOW_NOFALSEFORB'=> 'Show all(no FALSE for B)', 'S_SHOW_UNACKNOWLEDGED'=> 'Show unacknowledged', 'S_SHOW_PROBLEM_UNACKNOWLEDGED'=> 'Show problem-unacknowledged', + 'S_SHOW_PROBLEM_EVENT_LAST'=> 'Show Last', 'S_NOT_ACKNOWLEDGED'=> 'Not acknowledged', 'S_HIDE_DETAILS'=> 'Hide details', 'S_SHOW_DETAILS'=> 'Show details', diff -ru zabbix-1.6.4/frontends/php/tr_status.php zabbix-1.6.4-patched/frontends/php/tr_status.php --- zabbix-1.6.4/frontends/php/tr_status.php 2009-04-03 16:44:07.000000000 +0200 +++ zabbix-1.6.4-patched/frontends/php/tr_status.php 2009-05-06 14:41:31.000000000 +0200 @@ -308,6 +308,9 @@ if(EVENTS_OPTION_ONLYTRUE_NOTACK && $config['event_ack_enable']){ $ev_select->AddItem(EVENTS_OPTION_ONLYTRUE_NOTACK,S_SHOW_PROBLEM_UNACKNOWLEDGED.SPACE.'('.$config['event_expire'].SPACE.(($config['event_expire']>1)?S_DAYS:S_DAY).')'); } + if(EVENTS_OPTION_EVENT_LAST && $config['event_ack_enable']){ + $ev_select->addItem(EVENTS_OPTION_EVENT_LAST,S_SHOW_PROBLEM_EVENT_LAST.SPACE); + } //------- JP ------- if($show_triggers==TRIGGERS_OPTION_NOFALSEFORB){ @@ -406,6 +409,7 @@ $triggers_num = 0; $cond_event = ''; + $join_event = ''; $event_expire = ($config['event_expire']*86400); // days switch($show_events){ case EVENTS_OPTION_ALL: @@ -420,6 +424,10 @@ case EVENTS_OPTION_NOFALSEFORB: $cond_event.=' AND e.acknowledged=0 AND ((e.value='.TRIGGER_VALUE_TRUE.') OR ((e.value='.TRIGGER_VALUE_FALSE.') AND t.type='.TRIGGER_MULT_EVENT_DISABLED.'))'; break; + case EVENTS_OPTION_EVENT_LAST: + $join_event.=' LEFT JOIN events e2 ON e.objectid = e2.objectid AND e.clock < e2.clock '; + $cond_event.=' AND e2.objectid IS NULL '; + break; case EVENTS_OPTION_NOEVENT: default: $cond_event.=' AND 1=2 '; @@ -444,10 +452,10 @@ if(trigger_dependent($row["triggerid"])) continue; $event_sql = 'SELECT e.eventid, e.value, e.clock, e.objectid as triggerid, e.acknowledged, t.type '. - ' FROM events e, triggers t '. + ' FROM events e JOIN triggers t ON t.triggerid=e.objectid '. + $join_event. ' WHERE e.object='.EVENT_SOURCE_TRIGGERS. ' AND e.objectid='.$row['triggerid']. - ' AND t.triggerid=e.objectid '. $cond_event. ' ORDER by e.object DESC, e.objectid DESC, e.eventid DESC'; if($show_triggers == TRIGGERS_OPTION_NOFALSEFORB){