diff options
Diffstat (limited to 'frontends/php/include/classes/chostsinfo.mod.php')
-rw-r--r-- | frontends/php/include/classes/chostsinfo.mod.php | 73 |
1 files changed, 47 insertions, 26 deletions
diff --git a/frontends/php/include/classes/chostsinfo.mod.php b/frontends/php/include/classes/chostsinfo.mod.php index c9e07fc0..c5265d37 100644 --- a/frontends/php/include/classes/chostsinfo.mod.php +++ b/frontends/php/include/classes/chostsinfo.mod.php @@ -42,69 +42,90 @@ global $USER_DETAILS; $this->CleanItems(); - $accessible_groups = get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY); + $total = 0; - $cond = (remove_nodes_from_id($this->groupid)>0)?(' AND hg.groupid='.zbx_dbstr($this->groupid)):(' AND '.DBin_node('hg.groupid', $this->nodeid)); + $accessible_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_RES_IDS_ARRAY); - $db_host_cnt = DBselect('SELECT COUNT(*) as cnt '. - ' FROM hosts h, hosts_groups hg'. + $cond_from = ''; + if(remove_nodes_from_id($this->groupid)>0){ + $cond_from = ', hosts_groups hg '; + $cond_where = 'AND hg.hostid=h.hostid AND hg.groupid='.$this->groupid; + } + else{ + $cond_where = ' AND '.DBin_node('h.hostid', $this->nodeid); + } + + $db_host_cnt = DBselect('SELECT COUNT(DISTINCT h.hostid) as cnt '. + ' FROM hosts h'.$cond_from. ' WHERE h.available='.HOST_AVAILABLE_TRUE. -// ' AND h.status IN ('.HOST_STATUS_MONITORED.','.HOST_STATUS_NOT_MONITORED.') '. - ' AND hg.groupid IN ('.$accessible_groups.') '.$cond); + ' AND h.status IN ('.HOST_STATUS_MONITORED.','.HOST_STATUS_NOT_MONITORED.') '. + ' AND '.DBcondition('h.hostid',$accessible_hosts). + $cond_where); $host_cnt = DBfetch($db_host_cnt); $avail = $host_cnt['cnt']; - - $db_host_cnt = DBselect('SELECT COUNT(*) as cnt '. - ' FROM hosts h, hosts_groups hg'. + $total += $host_cnt['cnt']; + + $db_host_cnt = DBselect('SELECT COUNT(DISTINCT h.hostid) as cnt '. + ' FROM hosts h'.$cond_from. ' WHERE h.available='.HOST_AVAILABLE_FALSE. -// ' AND h.status IN ('.HOST_STATUS_MONITORED.','.HOST_STATUS_NOT_MONITORED.') '. - ' AND hg.groupid IN ('.$accessible_groups.') '.$cond); + ' AND h.status IN ('.HOST_STATUS_MONITORED.','.HOST_STATUS_NOT_MONITORED.') '. + ' AND '.DBcondition('h.hostid',$accessible_hosts). + $cond_where); + $host_cnt = DBfetch($db_host_cnt); $notav = $host_cnt['cnt']; + $total += $host_cnt['cnt']; - $db_host_cnt = DBselect('SELECT COUNT(*) as cnt '. - ' FROM hosts h, hosts_groups hg'. + $db_host_cnt = DBselect('SELECT COUNT(DISTINCT h.hostid) as cnt '. + ' FROM hosts h'.$cond_from. ' WHERE h.available='.HOST_AVAILABLE_UNKNOWN. -// ' AND h.status IN ('.HOST_STATUS_MONITORED.','.HOST_STATUS_NOT_MONITORED.') '. - ' AND hg.groupid IN ('.$accessible_groups.') '.$cond); + ' AND h.status IN ('.HOST_STATUS_MONITORED.','.HOST_STATUS_NOT_MONITORED.') '. + ' AND '.DBcondition('h.hostid',$accessible_hosts). + $cond_where); $host_cnt = DBfetch($db_host_cnt); $uncn = $host_cnt['cnt']; - + $total += $host_cnt['cnt']; + $node = get_node_by_nodeid($this->nodeid); $header_str = S_HOSTS_INFO.SPACE; + $header_str.= S_FOR_GROUP_SMALL.SPACE.'"'; + if($node > 0) $header_str.= '('.$node['name'].')'.SPACE; + if(remove_nodes_from_id($this->groupid)>0){ $group = get_hostgroup_by_groupid($this->groupid); - $header_str.= S_FOR_GROUP_SMALL.SPACE.'"('.$node['name'].')'.SPACE.$group['name'].'"'; + $header_str.= $group['name'].'"'; } else{ - $header_str.= S_FOR_NODE_SMALL.SPACE.'"('.$node['name'].')"'; - } - + $header_str.= S_ALL.'"'; + } $header = new CCol($header_str,"header"); if($this->style == STYLE_HORISONTAL) - $header->SetColspan(3); + $header->SetColspan(4); $this->AddRow($header); - $avail = new CCol($avail." ".S_AVAILABLE, "avail"); - $notav = new CCol($notav." ".S_NOT_AVAILABLE, "notav"); - $uncn = new CCol($uncn." ".S_UNKNOWN, "uncn"); + $avail = new CCol($avail.' '.S_AVAILABLE, 'avail'); + $notav = new CCol($notav.' '.S_NOT_AVAILABLE, 'notav'); + $uncn = new CCol($uncn.' '.S_UNKNOWN, 'uncn'); + $total = new CCol($total.' '.S_TOTAL, 'total'); if($this->style == STYLE_HORISONTAL){ - $this->AddRow(array($avail, $notav, $uncn)); + $this->AddRow(array($avail, $notav, $uncn, $total)); } else{ $this->AddRow($avail); $this->AddRow($notav); $this->AddRow($uncn); + $this->AddRow($total); } - return parent::BodyToString(); + + return parent::BodyToString(); } } ?> |