summaryrefslogtreecommitdiffstats
path: root/frontends/php/include/classes/chostsinfo.mod.php
blob: bb582c04b44e957b846d224fad35ab969daf9d07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
/* 
** ZABBIX
** Copyright (C) 2000-2005 SIA Zabbix
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**/
?>
<?php

	class CHostsInfo extends CTable
	{
		//var $style;
		function CHostsInfo($groupid=0, $style = STYLE_HORISONTAL)
		{
			$this->nodeid = id2nodeid($groupid);
			$this->groupid = $groupid;
			$this->style = null;
			
			parent::CTable(NULL,"hosts_info");
			$this->SetOrientation($style);
		}

		function SetOrientation($value)
		{
			if($value != STYLE_HORISONTAL && $value != STYLE_VERTICAL)
				return $this->error("Incorrect value for SetOrientation [$value]");

			$this->style = $value;
		}

		function BodyToString()
		{
			global $USER_DETAILS; 
			$this->CleanItems();

			$accessible_groups = get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY);

			$cond = (remove_nodes_from_id($this->groupid)>0)?(' AND hg.groupid='.zbx_dbstr($this->groupid)):(' AND '.DBin_node('hg.groupid', $this->nodeid));

			$db_host_cnt = DBselect('SELECT COUNT(*) as cnt '.
									' FROM hosts h, hosts_groups hg'.
									' WHERE h.available='.HOST_AVAILABLE_TRUE.
										' AND hg.groupid IN ('.$accessible_groups.') '.$cond);
										
			$host_cnt = DBfetch($db_host_cnt);
			$avail = $host_cnt['cnt'];

			$db_host_cnt = DBselect('SELECT COUNT(*) as cnt '.
									' FROM hosts h, hosts_groups hg'.
									' WHERE h.available='.HOST_AVAILABLE_FALSE.
										' AND hg.groupid IN ('.$accessible_groups.') '.$cond);

			$host_cnt = DBfetch($db_host_cnt);
			$notav = $host_cnt['cnt'];

			$db_host_cnt = DBselect('SELECT COUNT(*) as cnt '.
									' FROM hosts h, hosts_groups hg'.
									' WHERE h.available='.HOST_AVAILABLE_UNKNOWN.
										' AND hg.groupid IN ('.$accessible_groups.') '.$cond);
										

			$host_cnt = DBfetch($db_host_cnt);
			$uncn = $host_cnt['cnt'];

			$node = get_node_by_nodeid($this->nodeid);
			$header_str = S_HOSTS_INFO.SPACE;
			
			if(remove_nodes_from_id($this->groupid)>0){
				$group = get_hostgroup_by_groupid($this->groupid);
				$header_str.= S_FOR_GROUP_SMALL.SPACE.'&quot;('.$node['name'].')'.SPACE.$group['name'].'&quot;';
			}
			else{
				$header_str.= S_FOR_NODE_SMALL.SPACE.'&quot;('.$node['name'].')&quot;';
			}
			
			
			$header = new CCol($header_str,"header");			
			if($this->style == STYLE_HORISONTAL)
				$header->SetColspan(3);

			$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");

			if($this->style == STYLE_HORISONTAL)
			{
				$this->AddRow(array($avail, $notav, $uncn));
			}
			else
			{			
				$this->AddRow($avail);
				$this->AddRow($notav);
				$this->AddRow($uncn);
			}
			return parent::BodyToString();
		}
	}
?>