1<?php
2/*
3 * Copyright 2005-2016 OCSInventory-NG/OCSInventory-ocsreports contributors.
4 * See the Contributors file for more details about them.
5 *
6 * This file is part of OCSInventory-NG/OCSInventory-ocsreports.
7 *
8 * OCSInventory-NG/OCSInventory-ocsreports is free software: you can redistribute
9 * it and/or modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation, either version 2 of the License,
11 * or (at your option) any later version.
12 *
13 * OCSInventory-NG/OCSInventory-ocsreports is distributed in the hope that it
14 * will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with OCSInventory-NG/OCSInventory-ocsreports. if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21 * MA 02110-1301, USA.
22 */
23
24$data_limit = find_limit_values();
25require_once('require/function_ipdiscover.php');
26if ($_SESSION['OCS']["TAGS"]) {
27    $sql_tag = mysql2_prepare('select id from hardware h, accountinfo a where a.hardware_id=h.id and a.tag in ', array(), $_SESSION['OCS']["TAGS"]);
28    $result = mysql2_query_secure($sql_tag['SQL'], $_SESSION['OCS']["readServer"], $sql_tag['ARG']);
29    while ($val = mysqli_fetch_object($result)) {
30        $my_id[] = $val->id;
31    }
32    $myids = mysql2_prepare('', array(), $my_id);
33}
34
35if (isset($_SESSION['OCS']['ADMIN_CONSOLE'])) {
36    $edit = 0;
37} else {
38    $edit = 3;
39}
40
41$no_restrict = array("OCS_REPORT_NB_ALL_COMPUTOR");
42
43$_SESSION['DATE']['HARDWARE-LASTCOME-TALL'] = date($l->g(1242));
44$_SESSION['DATE']['HARDWARE-LASTDATE-TALL'] = date($l->g(1242));
45$_SESSION['DATE']['HARDWARE-LASTCOME-SMALL'] = date($l->g(1242), mktime(0, 0, 0, date("m"), date("d") - $data_limit['GUI_REPORT_AGIN_MACH'], date("Y")));
46
47$multi_search = array("OCS_REPORT_NB_NOTIFIED" => array("FIELD" => '', "COMP" => '', "VALUE" => ''),
48    "OCS_REPORT_NB_ERR" => array("FIELD" => '', "COMP" => '', "VALUE" => ''),
49    "OCS_REPORT_NB_CONTACT" => array("FIELD" => 'HARDWARE-LASTCOME', "COMP" => 'tall', "VALUE" => $_SESSION['DATE']['HARDWARE-LASTCOME-TALL']),
50    "OCS_REPORT_NB_INV" => array("FIELD" => 'HARDWARE-LASTDATE', "COMP" => 'tall', "VALUE" => $_SESSION['DATE']['HARDWARE-LASTDATE-TALL']),
51    "OCS_REPORT_NB_4_MOMENT" => array("FIELD" => 'HARDWARE-LASTCOME', "COMP" => 'small', "VALUE" => $_SESSION['DATE']['HARDWARE-LASTCOME-SMALL']),
52    "OCS_REPORT_NB_HARD_DISK_H" => array("FIELD" => '', "COMP" => '', "VALUE" => ''),
53    "OCS_REPORT_OSNAME" => array("FIELD" => 'HARDWARE-OSNAME', "COMP" => '', "VALUE" => ''),
54    "OCS_REPORT_USERAGENT" => array("FIELD" => 'HARDWARE-USERAGENT', "COMP" => 'exact', "VALUE" => ''),
55    "OCS_REPORT_PROCESSORT" => array("FIELD" => 'HARDWARE-PROCESSORT', "COMP" => 'exact', "VALUE" => ''),
56    "OCS_REPORT_RESOLUTION" => array("FIELD" => 'VIDEOS-RESOLUTION', "COMP" => '', "VALUE" => ''),
57    "OCS_REPORT_WORKGROUP" => array("FIELD" => 'HARDWARE-WORKGROUP', "COMP" => 'exact', "VALUE" => ''),
58    "OCS_REPORT_TAG" => array("FIELD" => 'ACCOUNTINFO-TAG', "COMP" => 'exact', "VALUE" => ''),
59    "OCS_REPORT_IPSUBNET" => array("FIELD" => 'NETWORKS-IPSUBNET', "COMP" => 'exact', "VALUE" => ''),
60    "OCS_REPORT_NB_LIMIT_FREQ_H" => array("FIELD" => 'HARDWARE-PROCESSORS', "COMP" => 'tall', "VALUE" => $data_limit['GUI_REPORT_PROC_MAX']),
61    "OCS_REPORT_NB_LIMIT_FREQ_M" => array("FIELD" => 'HARDWARE-PROCESSORS', "COMP" => 'small', "VALUE" => $data_limit['GUI_REPORT_PROC_MINI']),
62    "OCS_REPORT_NB_LIMIT_FREQ_B" => array("FIELD" => 'HARDWARE-PROCESSORS,HARDWARE-PROCESSORS', "COMP" => 'tall,small', "VALUE" => $data_limit['GUI_REPORT_PROC_MINI'] . ',' . $data_limit['GUI_REPORT_PROC_MAX']),
63    "OCS_REPORT_NB_LIMIT_MEM_H" => array("FIELD" => 'HARDWARE-MEMORY', "COMP" => 'tall', "VALUE" => $data_limit['GUI_REPORT_RAM_MAX']),
64    "OCS_REPORT_NB_LIMIT_MEM_M" => array("FIELD" => 'HARDWARE-MEMORY', "COMP" => 'small', "VALUE" => $data_limit['GUI_REPORT_RAM_MINI']),
65    "OCS_REPORT_NB_LIMIT_MEM_B" => array("FIELD" => 'HARDWARE-MEMORY,HARDWARE-MEMORY', "COMP" => 'tall,small', "VALUE" => $data_limit['GUI_REPORT_RAM_MINI'] . ',' . $data_limit['GUI_REPORT_RAM_MAX']),
66    "OCS_REPORT_NB_NOTIFIED" => array("FIELD" => 'DEVICES-DOWNLOAD', "COMP" => 'exact', "VALUE" => 'NULL', 'VALUE2' => $l->g(482), 'TYPE_FIELD' => "SelFieldValue"),
67    "OCS_REPORT_NB_ERR" => array("FIELD" => 'DEVICES-DOWNLOAD', "COMP" => 'exact', "VALUE" => 'NULL', 'VALUE2' => "***" . $l->g(956) . "***", 'TYPE_FIELD' => "SelFieldValue"));
68$table = array("OCS_REPORT_WORKGROUP" => "hardware",
69    "OCS_REPORT_TAG" => "accountinfo",
70    "OCS_REPORT_IPSUBNET" => "networks",
71    "OCS_REPORT_NB_NOTIFIED" => "devices",
72    "OCS_REPORT_NB_ERR" => "devices",
73    "OCS_REPORT_OSNAME" => "hardware",
74    "OCS_REPORT_USERAGENT" => "hardware",
75    "OCS_REPORT_PROCESSORT" => "hardware",
76    "OCS_REPORT_RESOLUTION" => "videos",
77    "OCS_REPORT_NB_LIMIT_FREQ_H" => "hardware",
78    "OCS_REPORT_NB_LIMIT_FREQ_M" => "hardware",
79    "OCS_REPORT_NB_LIMIT_FREQ_B" => "hardware",
80    "OCS_REPORT_NB_LIMIT_MEM_H" => "hardware",
81    "OCS_REPORT_NB_LIMIT_MEM_M" => "hardware",
82    "OCS_REPORT_NB_LIMIT_MEM_B" => "hardware",
83    "OCS_REPORT_NB_ALL_COMPUTOR" => "hardware",
84    "OCS_REPORT_NB_COMPUTOR" => "hardware",
85    "OCS_REPORT_NB_CONTACT" => "hardware",
86    "OCS_REPORT_NB_INV" => "hardware",
87    "OCS_REPORT_NB_4_MOMENT" => "hardware",
88    "OCS_REPORT_NB_SNMP" => "snmp",
89    "OCS_REPORT_NB_HARD_DISK_H" => "drives",
90    "OCS_REPORT_NB_HARD_DISK_M" => "drives",
91    "OCS_REPORT_NB_HARD_DISK_B" => "drives"
92    , "OCS_REPORT_NB_IPDISCOVER" => "nk"
93    , "OCS_REPORT_NB_LAST_INV" => "hardware");
94
95$table_field = array("OCS_REPORT_WORKGROUP" => array($l->g(33) => "workgroup"),
96    "OCS_REPORT_TAG" => array($_SESSION['OCS']['TAG_LBL']['TAG'] => "tag"),
97    "OCS_REPORT_IPSUBNET" => array($l->g(316) => "ipsubnet"),
98    "OCS_REPORT_NB_NOTIFIED" => "devices",
99    "OCS_REPORT_NB_ERR" => "devices",
100    "OCS_REPORT_OSNAME" => array($l->g(25) => "osname"),
101    "OCS_REPORT_USERAGENT" => array($l->g(218) => "useragent"),
102    "OCS_REPORT_PROCESSORT" => array($l->g(350) => "processort"),
103    "OCS_REPORT_RESOLUTION" => array($l->g(62) => "resolution"),
104    "OCS_REPORT_NB_LIMIT_FREQ_H" => "hardware",
105    "OCS_REPORT_NB_LIMIT_FREQ_M" => "hardware",
106    "OCS_REPORT_NB_LIMIT_FREQ_B" => "hardware",
107    "OCS_REPORT_NB_LIMIT_MEM_H" => "hardware",
108    "OCS_REPORT_NB_LIMIT_MEM_M" => "hardware",
109    "OCS_REPORT_NB_LIMIT_MEM_B" => "hardware",
110    "OCS_REPORT_NB_ALL_COMPUTOR" => "hardware",
111    "OCS_REPORT_NB_COMPUTOR" => "hardware",
112    "OCS_REPORT_NB_CONTACT" => "hardware",
113    "OCS_REPORT_NB_INV" => "hardware",
114    "OCS_REPORT_NB_4_MOMENT" => "hardware",
115    "OCS_REPORT_NB_SNMP" => "snmp",
116    "OCS_REPORT_NB_HARD_DISK_H" => "drives",
117    "OCS_REPORT_NB_HARD_DISK_M" => "drives",
118    "OCS_REPORT_NB_HARD_DISK_B" => "drives"
119    , "OCS_REPORT_NB_IPDISCOVER" => "networks"
120    , "OCS_REPORT_NB_LAST_INV" => array("NAME" => "NAME", "ID" => "ID", $l->g(25) => "osname", $l->g(218) => "useragent"));
121
122
123$link = array("OCS_REPORT_WORKGROUP" => array("RELOAD" => 'OCS_REPORT_WORKGROUP'),
124    "OCS_REPORT_TAG" => array("RELOAD" => 'OCS_REPORT_TAG'),
125    "OCS_REPORT_IPSUBNET" => array("RELOAD" => 'OCS_REPORT_IPSUBNET'),
126    "OCS_REPORT_NB_NOTIFIED" => array("PAGE" => 'ms_multi_search'),
127    "OCS_REPORT_NB_ERR" => array("PAGE" => 'ms_multi_search'),
128    "OCS_REPORT_OSNAME" => array("RELOAD" => 'OCS_REPORT_OSNAME'),
129    "OCS_REPORT_USERAGENT" => array("RELOAD" => 'OCS_REPORT_USERAGENT'),
130    "OCS_REPORT_PROCESSORT" => array("RELOAD" => 'OCS_REPORT_PROCESSORT'),
131    "OCS_REPORT_RESOLUTION" => array("RELOAD" => 'OCS_REPORT_RESOLUTION'),
132    "OCS_REPORT_NB_LIMIT_FREQ_H" => array("PAGE" => 'ms_multi_search'),
133    "OCS_REPORT_NB_LIMIT_FREQ_M" => array("PAGE" => 'ms_multi_search'),
134    "OCS_REPORT_NB_LIMIT_FREQ_B" => array("PAGE" => 'ms_multi_search'),
135    "OCS_REPORT_NB_LIMIT_MEM_H" => array("PAGE" => 'ms_multi_search'),
136    "OCS_REPORT_NB_LIMIT_MEM_M" => array("PAGE" => 'ms_multi_search'),
137    "OCS_REPORT_NB_LIMIT_MEM_B" => array("PAGE" => 'ms_multi_search'),
138    "OCS_REPORT_NB_ALL_COMPUTOR" => '',
139    "OCS_REPORT_NB_COMPUTOR" => array("PAGE" => 'ms_all_computers'),
140    "OCS_REPORT_NB_CONTACT" => array("PAGE" => 'ms_multi_search'),
141    "OCS_REPORT_NB_INV" => array("PAGE" => 'ms_multi_search'),
142    "OCS_REPORT_NB_4_MOMENT" => array("PAGE" => 'ms_multi_search'),
143    "OCS_REPORT_NB_SNMP" => array("PAGE" => 'ms_snmp'),
144    "OCS_REPORT_NB_IPDISCOVER" => array("PAGE" => 'ms_ipdiscover'),
145    "OCS_REPORT_NB_LAST_INV" => array("RELOAD" => 'OCS_REPORT_NB_LAST_INV'));
146
147
148//all fields repart on categories
149$repart = array("OCS_REPORT_WORKGROUP" => "ELSE",
150    "OCS_REPORT_TAG" => "ELSE",
151    "OCS_REPORT_IPSUBNET" => "ELSE",
152    "OCS_REPORT_NB_NOTIFIED" => "ELSE",
153    "OCS_REPORT_NB_ERR" => "ELSE",
154    "OCS_REPORT_OSNAME" => "SOFT",
155    "OCS_REPORT_USERAGENT" => "SOFT",
156    "OCS_REPORT_PROCESSORT" => "HARD",
157    "OCS_REPORT_RESOLUTION" => "HARD",
158    "OCS_REPORT_NB_LIMIT_FREQ_H" => "HARD",
159    "OCS_REPORT_NB_LIMIT_FREQ_M" => "HARD",
160    "OCS_REPORT_NB_LIMIT_FREQ_B" => "HARD",
161    "OCS_REPORT_NB_LIMIT_MEM_H" => "HARD",
162    "OCS_REPORT_NB_LIMIT_MEM_M" => "HARD",
163    "OCS_REPORT_NB_LIMIT_MEM_B" => "HARD",
164    "OCS_REPORT_NB_ALL_COMPUTOR" => "ACTIVITY",
165    "OCS_REPORT_NB_COMPUTOR" => "ACTIVITY",
166    "OCS_REPORT_NB_CONTACT" => "ACTIVITY",
167    "OCS_REPORT_NB_INV" => "ACTIVITY",
168    "OCS_REPORT_NB_4_MOMENT" => "ACTIVITY",
169    "OCS_REPORT_NB_SNMP" => "ACTIVITY",
170    "OCS_REPORT_NB_HARD_DISK_H" => "HARD",
171    "OCS_REPORT_NB_HARD_DISK_M" => "HARD",
172    "OCS_REPORT_NB_HARD_DISK_B" => "HARD"
173    , "OCS_REPORT_NB_IPDISCOVER" => "ACTIVITY"
174    , "OCS_REPORT_NB_LAST_INV" => "ACTIVITY");
175
176//all lbl fields
177$lbl_field = array("OCS_REPORT_WORKGROUP" => $l->g(778),
178    "OCS_REPORT_TAG" => $l->g(779),
179    "OCS_REPORT_IPSUBNET" => $l->g(780),
180    "OCS_REPORT_NB_NOTIFIED" => $l->g(781),
181    "OCS_REPORT_NB_ERR" => $l->g(782),
182    "OCS_REPORT_OSNAME" => $l->g(783),
183    "OCS_REPORT_USERAGENT" => $l->g(784),
184    "OCS_REPORT_PROCESSORT" => $l->g(785),
185    "OCS_REPORT_RESOLUTION" => $l->g(786),
186    "OCS_REPORT_NB_LIMIT_FREQ_H" => $l->g(787) . " <b>" . show_modif($data_limit['GUI_REPORT_PROC_MAX'], "GUI_REPORT_PROC_MAX", $edit, '', array('JAVASCRIPT' => valid_modif("GUI_REPORT_PROC_MAX"))) . "</b> " . $l->g(1239),
187    "OCS_REPORT_NB_LIMIT_FREQ_M" => $l->g(788) . " <b>" . show_modif($data_limit['GUI_REPORT_PROC_MINI'], "GUI_REPORT_PROC_MINI", $edit, '', array('JAVASCRIPT' => valid_modif("GUI_REPORT_PROC_MINI"))) . "</b> " . $l->g(1239),
188    "OCS_REPORT_NB_LIMIT_FREQ_B" => $l->g(789) . " <b>" . $data_limit['GUI_REPORT_PROC_MINI'] . "</b> " . $l->g(1239) . " " . $l->g(582) . " <b>" . $data_limit['GUI_REPORT_PROC_MAX'] . "</b> " . $l->g(1239),
189    "OCS_REPORT_NB_LIMIT_MEM_H" => $l->g(790) . " <b>" . show_modif($data_limit['GUI_REPORT_RAM_MAX'], "GUI_REPORT_RAM_MAX", $edit, '', array('JAVASCRIPT' => valid_modif("GUI_REPORT_RAM_MAX"))) . "</b> " . $l->g(1240),
190    "OCS_REPORT_NB_LIMIT_MEM_M" => $l->g(791) . " <b>" . show_modif($data_limit['GUI_REPORT_RAM_MINI'], "GUI_REPORT_RAM_MINI", $edit, '', array('JAVASCRIPT' => valid_modif("GUI_REPORT_RAM_MINI"))) . "</b> " . $l->g(1240),
191    "OCS_REPORT_NB_LIMIT_MEM_B" => $l->g(792) . " <b>" . $data_limit['GUI_REPORT_RAM_MINI'] . "</b> " . $l->g(1240) . " " . $l->g(582) . " <b>" . $data_limit['GUI_REPORT_RAM_MAX'] . "</b> " . $l->g(1240),
192    "OCS_REPORT_NB_ALL_COMPUTOR" => $l->g(793),
193    "OCS_REPORT_NB_COMPUTOR" => $l->g(794),
194    "OCS_REPORT_NB_CONTACT" => $l->g(795),
195    "OCS_REPORT_NB_INV" => $l->g(796),
196    "OCS_REPORT_NB_4_MOMENT" => $l->g(797) . " <b>" . show_modif($data_limit['GUI_REPORT_AGIN_MACH'], "GUI_REPORT_AGIN_MACH", $edit, '', array('JAVASCRIPT' => valid_modif("GUI_REPORT_AGIN_MACH"))) . "</b> " . $l->g(496),
197    "OCS_REPORT_NB_HARD_DISK_H" => $l->g(813) . " <b>" . show_modif($data_limit['GUI_REPORT_DD_MAX'], "GUI_REPORT_DD_MAX", $edit, '', array('JAVASCRIPT' => valid_modif("GUI_REPORT_DD_MAX"))) . "</b> " . $l->g(1240),
198    "OCS_REPORT_NB_HARD_DISK_M" => $l->g(814) . " <b>" . show_modif($data_limit['GUI_REPORT_DD_MINI'], "GUI_REPORT_DD_MINI", $edit, '', array('JAVASCRIPT' => valid_modif("GUI_REPORT_DD_MINI"))) . "</b> " . $l->g(1240),
199    "OCS_REPORT_NB_HARD_DISK_B" => $l->g(815) . " <b>" . $data_limit['GUI_REPORT_DD_MINI'] . "</b> " . $l->g(1240) . " " . $l->g(582) . " <b>" . $data_limit['GUI_REPORT_DD_MAX'] . "</b> " . $l->g(1240),
200    "OCS_REPORT_NB_IPDISCOVER" => $l->g(913),
201    "OCS_REPORT_NB_SNMP" => $l->g(1241));
202
203
204$sql_field = array("OCS_REPORT_WORKGROUP" => array('ARG' => array('count(distinct workgroup) c', $table["OCS_REPORT_WORKGROUP"], '')),
205    "OCS_REPORT_TAG" => array('ARG' => array('count(distinct tag)  c', $table["OCS_REPORT_TAG"], '')),
206    "OCS_REPORT_IPSUBNET" => array('ARG' => array('count(distinct ipsubnet) c', $table["OCS_REPORT_IPSUBNET"], '')),
207    "OCS_REPORT_NB_NOTIFIED" => array('SQL' => "select %s from %s where NAME='%s' and TVALUE is null",
208        'ARG' => array('count(distinct hardware_id) c', $table["OCS_REPORT_NB_NOTIFIED"], 'DOWNLOAD')),
209    "OCS_REPORT_NB_ERR" => array('SQL' => "select %s from %s where NAME='%s' and TVALUE like '%s'",
210        'ARG' => array('count(distinct hardware_id) c', $table["OCS_REPORT_NB_ERR"], "DOWNLOAD", "ERR_%")),
211    "OCS_REPORT_OSNAME" => array('ARG' => array('count(distinct osname) c', $table["OCS_REPORT_OSNAME"], '')),
212    "OCS_REPORT_USERAGENT" => array('ARG' => array('count(distinct useragent) c', $table["OCS_REPORT_USERAGENT"], '')),
213    "OCS_REPORT_PROCESSORT" => array('ARG' => array('count(distinct processort) c', $table["OCS_REPORT_PROCESSORT"], '')),
214    "OCS_REPORT_RESOLUTION" => array('ARG' => array('count(distinct resolution) c', $table["OCS_REPORT_RESOLUTION"], '')),
215    "OCS_REPORT_NB_LIMIT_FREQ_H" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_LIMIT_FREQ_H"], "where processors >= " . $data_limit['GUI_REPORT_PROC_MAX'])),
216    "OCS_REPORT_NB_LIMIT_FREQ_M" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_LIMIT_FREQ_M"], "where processors <= " . $data_limit['GUI_REPORT_PROC_MINI'])),
217    "OCS_REPORT_NB_LIMIT_FREQ_B" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_LIMIT_FREQ_B"], "where processors <= " . $data_limit['GUI_REPORT_PROC_MAX'] . " and processors >= " . $data_limit['GUI_REPORT_PROC_MINI'])),
218    "OCS_REPORT_NB_LIMIT_MEM_H" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_LIMIT_MEM_H"], "where memory >= " . $data_limit['GUI_REPORT_RAM_MAX'])),
219    "OCS_REPORT_NB_LIMIT_MEM_M" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_LIMIT_MEM_M"], "where memory <= " . $data_limit['GUI_REPORT_RAM_MINI'])),
220    "OCS_REPORT_NB_LIMIT_MEM_B" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_LIMIT_MEM_B"], "where memory <= " . $data_limit['GUI_REPORT_RAM_MAX'] . " and memory >= " . $data_limit['GUI_REPORT_RAM_MINI'])),
221    "OCS_REPORT_NB_ALL_COMPUTOR" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_ALL_COMPUTOR"], '')),
222    "OCS_REPORT_NB_COMPUTOR" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_COMPUTOR"], '')),
223    "OCS_REPORT_NB_CONTACT" => array('SQL' => "select %s from %s where lastcome >= date_format(sysdate(),'%s')",
224        'ARG' => array('count(id) c', $table["OCS_REPORT_NB_CONTACT"], "%Y-%m-%d 00:00:00")),
225    "OCS_REPORT_NB_INV" => array('SQL' => "select %s from %s where lastdate > date_format(sysdate(),'%s')",
226        'ARG' => array('count(id) c', $table["OCS_REPORT_NB_INV"], "%Y-%m-%d 00:00:00")),
227    "OCS_REPORT_NB_4_MOMENT" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_4_MOMENT"], "where unix_timestamp(lastcome) < unix_timestamp(sysdate())-(" . $data_limit['GUI_REPORT_AGIN_MACH'] . "*86400)")),
228    "OCS_REPORT_NB_HARD_DISK_H" => array('SQL' => "select %s from %s where type='%s' and free>%s",
229        'ARG' => array('count(distinct(hardware_id)) c', $table["OCS_REPORT_NB_HARD_DISK_H"], "Hard Drive", $data_limit['GUI_REPORT_DD_MAX'])),
230    "OCS_REPORT_NB_HARD_DISK_M" => array('SQL' => "select %s from %s where type='%s' and free<%s",
231        'ARG' => array('count(distinct(hardware_id)) c', $table["OCS_REPORT_NB_HARD_DISK_M"], "Hard Drive", $data_limit['GUI_REPORT_DD_MINI'])),
232    "OCS_REPORT_NB_HARD_DISK_B" => array('SQL' => "select %s from %s where type='%s' and free<%s and free>=%s",
233        'ARG' => array('count(distinct(hardware_id)) c', $table["OCS_REPORT_NB_HARD_DISK_B"], "Hard Drive", $data_limit['GUI_REPORT_DD_MAX'], $data_limit['GUI_REPORT_DD_MINI'])),
234    "OCS_REPORT_NB_IPDISCOVER" => array('SQL' => "select %s c from netmap ",
235        'ARG' => array(count_noinv_network_devices())),
236    "OCS_REPORT_NB_SNMP" => array('ARG' => array('count(id) c', $table["OCS_REPORT_NB_SNMP"], '')));
237
238function define_tab($data_on = array()) {
239    global $l;
240    $data_on['ACTIVITY'] = mb_strtoupper($l->g(798), 'UTF-8');
241    $data_on['SOFT'] = mb_strtoupper($l->g(20), 'UTF-8');
242    $data_on['HARD'] = mb_strtoupper($l->g(799), 'UTF-8');
243    $data_on['ELSE'] = mb_strtoupper($l->g(800), 'UTF-8');
244    if ($_SESSION['OCS']['profile']->getConfigValue('CONSOLE') == "YES") {
245        $data_on['ADMIN']['MSG'] = mb_strtoupper($l->g(915), 'UTF-8');
246
247        if (!isset($default)) {
248            $default = 'MSG';
249        }
250    }
251    return array('DATA' => $data_on, 'DEFAULT' => $default);
252}
253
254function show_active_tab($data_on) {
255    global $repart;
256    //witch fields not show
257    $no_show = look_config_default_values('OCS_REPORT_%', 1);
258    if (is_array($no_show)) {
259        foreach ($no_show['name'] as $key => $value) {
260            if (!isset($_SESSION['OCS']['ADMIN_CONSOLE'])) {
261                unset($repart[$key]);
262            }
263        }
264    }
265    foreach ($repart as $key => $value) {
266        $data[$value] = $value;
267    }
268
269    foreach ($data_on['DATA'] as $key => $value) {
270        if (!isset($data[$key])) {
271            if (!isset($_SESSION['OCS']['ADMIN_CONSOLE'])) {
272                unset($data_on['DATA'][$key]);
273            }
274        }
275        if (is_array($value)) {
276            foreach ($value as $key1 => $value1) {
277                $data_on['DATA'][$key1] = $value1;
278            }
279            unset($data_on['DATA'][$key]);
280        }
281    }
282
283    return $data_on;
284}
285
286function list_field($tab) {
287    global $repart, $lbl_field;
288    foreach ($repart as $key => $value) {
289        if ($value == $tab) {
290            $result[$key] = $lbl_field[$key];
291        }
292    }
293    return $result;
294}
295
296function show_console_field($fields, $form_name) {
297    global $sql_field, $myids, $no_restrict, $table, $link, $pages_refs, $multi_search;
298    $no_groups_sql = " deviceid != '_SYSTEMGROUP_' and deviceid != '_DOWNLOADGROUP_' ";
299    $no_show = look_config_default_values('OCS_REPORT_%', 1);
300
301    echo "<table ALIGN = 'Center' cellspacing='5' CELLPADDING='4'><tr ><td align =center><font size=2>";
302    foreach ($fields as $key => $value) {
303      if($sql_field[$key]['ARG'] != null){
304            if (isset($_SESSION['OCS']['ADMIN_CONSOLE'])) {
305                if (isset($no_show['name'][$key])) {
306                    $icon = "<td align=center><a href=# OnClick='pag(\"" . $key . "\",\"NO_VISIBLE\",\"" . $form_name . "\");'><img src='image/red.png'></a></td>";
307                } else {
308                    $icon = "<td align=center><a href=# OnClick='pag(\"" . $key . "\",\"VISIBLE\",\"" . $form_name . "\");'><img src='image/green.png'></a></td>";
309                }
310            } else {
311                $icon = "";
312            }
313
314            $arg_result = $sql_field[$key]['ARG'];
315
316            if (isset($sql_field[$key]['SQL'])) {
317                $sql_result = $sql_field[$key]['SQL'];
318            } else {
319                $sql_result = "select %s from %s %s";
320            }
321
322            if ($table[$key] == 'hardware') {
323                if (is_defined($arg_result[2])) {
324                    $sql_result .= " and " . $no_groups_sql;
325                } else {
326                    $sql_result .= " where " . $no_groups_sql;
327                }
328            }
329
330
331            if ($myids) {
332                if (!in_array($key, $no_restrict)) {
333                    if (is_defined($arg_result[2]) || $table[$key] == 'hardware' || is_defined($sql_field[$key]['SQL'])) {
334                        $sql_result .= " and ";
335                    } else {
336                        $sql_result .= " where ";
337                    }
338
339                    if ($table[$key] != 'hardware' && $table[$key] != 'snmp' && $table[$key] != 'nk') {
340                        $sql_result .= $table[$key] . ".hardware_id in " . $myids['SQL'];
341                    } elseif ($table[$key] == 'hardware') {
342                        $sql_result .= " id in " . $myids['SQL'];
343                    } elseif ($table[$key] == 'snmp') {
344
345                    } elseif ($table[$key] == 'nk') {
346                        $sql_result = substr($sql_result, 0, -4);
347                    }
348
349                    if (is_array($sql_field[$key]['ARG'])) {
350                        $arg_result = array_merge($arg_result, $myids['ARG']);
351                    } else {
352                        $arg_result = $myids['ARG'];
353                    }
354                }
355            }
356            if (!isset($_SESSION['OCS']['COUNT_CONSOLE'][$key])) {
357                $res = mysql2_query_secure($sql_result, $_SESSION['OCS']["readServer"], $arg_result);
358                if ($res) {
359                    $count = mysqli_fetch_object($res);
360                    $_SESSION['OCS']['COUNT_CONSOLE'][$key] = $count->c;
361                }
362            }
363            if (isset($_SESSION['OCS']['COUNT_CONSOLE'][$key]) && is_numeric($_SESSION['OCS']['COUNT_CONSOLE'][$key])) {
364                $id_count = $_SESSION['OCS']['COUNT_CONSOLE'][$key];
365                if (is_array($link[$key]) && $id_count != 0) {
366                    if (isset($link[$key]['PAGE'])) {
367                        $link_me_begin = "<a href='index.php?" . PAG_INDEX . "=" . $pages_refs[$link[$key]['PAGE']];
368                        if (isset($multi_search[$key]['FIELD'])) {
369                            $link_me_begin .= "&fields=" . $multi_search[$key]['FIELD'] . "&comp=" . $multi_search[$key]['COMP'] . "&values=" . $multi_search[$key]['VALUE'] . "&values2=" . $multi_search[$key]['VALUE2'] . "&type_field=" . $multi_search[$key]['TYPE_FIELD'];
370                        }
371                        $link_me_begin .= "'>";
372                        $link_me_end = "</a>";
373                    } elseif (isset($link[$key]['RELOAD'])) {
374                        $link_me_begin = "<a href=# OnClick='pag(\"" . $link[$key]['RELOAD'] . "\",\"SHOW_ME\",\"" . $form_name . "\");'>";
375                        $link_me_end = "</a>";
376                    }
377                } else {
378                    $link_me_begin = "";
379                    $link_me_end = "";
380                }
381
382                echo $value . "</font></td><td>&nbsp;</td><td align=center><font size=2><B>" . $link_me_begin . $id_count . $link_me_end . "</B></font></td>" . $icon . "</tr><tr><td align =center><font size=2>";
383            }
384        }
385      }
386      echo "</table>";
387
388}
389
390function find_limit_values() {
391    $arg = look_config_default_values('GUI_REPORT_%', 1);
392    return $arg['ivalue'];
393}
394
395function valid_modif($name) {
396    global $form_name;
397    return "onKeyPress=\"return scanTouche(event,/[0-9]/)\" onkeydown='convertToUpper(this)'
398		  onkeyup='convertToUpper(this)'
399		  onblur='pag(\"" . $name . "\",\"UPDATE_VALUE\",\"" . $form_name . "\");'
400		  onclick='convertToUpper(this)'";
401}
402
403?>
404