diff options
Diffstat (limited to 'frontends/php')
| -rw-r--r-- | frontends/php/include/triggers.inc.php | 53 | ||||
| -rw-r--r-- | frontends/php/tr_status.php | 7 | ||||
| -rw-r--r-- | frontends/php/triggers.php | 4 |
3 files changed, 56 insertions, 8 deletions
diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php index 9ec4ae64..d9879044 100644 --- a/frontends/php/include/triggers.inc.php +++ b/frontends/php/include/triggers.inc.php @@ -1986,4 +1986,57 @@ return $ret; } + /* + * Function: trigger_depenent_rec + * + * Description: + * check if trigger depends on other triggers having status TRUE + * + * Author: + * Alexei Vladishev + * + * Comments: Recursive function + * + */ + function trigger_dependent_rec($triggerid,&$level) + { + $ret = FALSE; + + $level++; + + /* Check for recursive loop */ + if($level > 32) return $ret; + + $result = DBselect("select t.triggerid, t.value from trigger_depends d,triggers t where d.triggerid_down=$triggerid and d.triggerid_up=t.triggerid"); + while($row = DBfetch($result)) + { + $triggerid_tmp = $row["triggerid"]; + $value_tmp = $row["value"]; + if(TRIGGER_VALUE_TRUE == $value_tmp || trigger_dependent_rec($triggerid_tmp, $level)) + { + $ret = TRUE; + break; + } + } + + return $ret; + } + + /* + * Function: trigger_depenent + * + * Description: + * check if trigger depends on other triggers having status TRUE + * + * Author: + * Alexei Vladishev + * + * Comments: + * + */ + function trigger_dependent($triggerid) + { + $level = 0; + return trigger_dependent_rec($triggerid, $level); + } ?> diff --git a/frontends/php/tr_status.php b/frontends/php/tr_status.php index dbc26b65..ad0badf4 100644 --- a/frontends/php/tr_status.php +++ b/frontends/php/tr_status.php @@ -400,12 +400,7 @@ echo '<script type="text/javascript" src="js/blink.js"></script>'; while($row=DBfetch($result)){ // Check for dependencies - $deps = DBfetch(DBselect("select count(*) as cnt from trigger_depends d, triggers t ". - " where d.triggerid_down=".$row["triggerid"]." and d.triggerid_up=t.triggerid and t.value=1")); - - if($deps["cnt"]>0){ - continue; - } + if(trigger_dependent($row["triggerid"])) continue; $cond = ''; $ack_expire = ($config['ack_expire']*86400); diff --git a/frontends/php/triggers.php b/frontends/php/triggers.php index c6ce4195..8130e39e 100644 --- a/frontends/php/triggers.php +++ b/frontends/php/triggers.php @@ -438,9 +438,9 @@ include_once "include/page_header.php"; $deps = get_trigger_dependences_by_triggerid($row["triggerid"]); if(count($deps) > 0) { - $description[] = BR.BR."<strong>".S_DEPENDS_ON."</strong>".SPACE.BR; + $description[] = BR.BR."<strong>".S_DEPENDS_ON.":</strong>".SPACE.BR; foreach($deps as $val) - $description[] = '['.$val.']'.expand_trigger_description($val).BR; + $description[] = expand_trigger_description($val).BR; $description[] = BR; } |
