2 //Options for GLPI 0.71 and newer : need slave db to access the report
4 $DBCONNECTION_REQUIRED=0;
6 include ("../../inc/includes.php");
8 Session
::checkRight("reports", "r");
9 Session
::checkRight("computer", "r");
11 #Html::header(Report::getTypeName(2), $_SERVER['PHP_SELF'], "utils", "report");
12 Html
::header("Systèmes d'exploitation par implantation", $_SERVER['PHP_SELF'], "utils", "report");
15 $computer = new Computer();
18 if (($state != "") AND ($state != "0")) {
19 $state_sql = " AND `states_id` = '".$state."' ";
22 $itemtype = 'Computer';
23 $table_item = getTableForItemType($itemtype);
25 echo "<span class='big b'>Systèmes d'exploitation par implantation</span><br><br>";
26 echo "<table class='tab_cadrehov'>";
27 echo "<tr class='tab_bg_1'><th>Implantation</th><th>Système d'exploitation</th><th>Quantité</th></tr>";
28 $green_grand_total = 0;
29 $yellow_grand_total = 0;
31 $blue_grand_total = 0;
34 # parcours des régions
35 $query = "SELECT id,name,completename FROM glpi_entities WHERE (id=0 OR entities_id=0)";
36 $query .= " ".getEntitiesRestrictRequest("AND", "glpi_entities");
37 $region_result = $DB->query($query);
38 while ($region_data = $DB->fetch_assoc($region_result)) {
39 $region_id = $region_data['id'];
40 if ($region_id != 0) {
41 $region_name = getTreeLeafValueName("glpi_entities", $region_id);
43 $region_name = "AUF (non classé)";
45 echo "<tr class='tab_bg_1'><td colspan='3' class='b'>$region_name</td></tr>";
53 # operating systems per computer
54 $query = "SELECT COUNT(c.id) AS count, e.name AS ename,
55 (CASE WHEN o.name REGEXP '^Debian ' THEN SUBSTRING_INDEX(REPLACE(o.name,' GNU/Linux',''),'.',1)
56 WHEN o.name REGEXP '^Ubuntu ' THEN SUBSTRING_INDEX(REPLACE(o.name,' LTS',''),'.',2)
57 WHEN o.name REGEXP '^Microsoft ' THEN REPLACE(o.name,'Microsoft ','')
58 WHEN o.name REGEXP '^Mac ' THEN REPLACE(o.name,'Mac ','')
59 ELSE o.name END) AS oname
61 LEFT JOIN glpi_computers_items i ON (i.itemtype = 'Computer' AND i.items_id = c.id)
62 LEFT JOIN glpi_entities e ON (c.entities_id = e.id)
63 LEFT JOIN glpi_operatingsystems o ON (c.operatingsystems_id = o.id)
64 WHERE c.is_deleted = '0' AND c.is_template = '0'
65 ".getEntitiesRestrictRequest("AND", "c");
66 if ($region_id != 0) {
67 $query .= " AND ".getRealQueryForTreeItem("glpi_entities", $region_id, "e.id");
69 $query .= " AND e.id = '0'";
71 $query .= " GROUP BY 2,3 ORDER BY 2,3";
72 $result = $DB->query($query);
73 while ($data=$DB->fetch_assoc($result)) {
74 if (empty($data['ename'])) {
75 $data['ename'] = "<i>(indéterminé)</i>";
77 if (empty($data['oname'])) {
78 $data['oname'] = "<i>(indéterminé)</i>";
80 if (($data['oname'] == 'Debian 7') ||
($data['oname'] == 'Ubuntu 12.04')) {
81 $oname_plus = '<svg width="5" height="5" style="background-color: #00ff00; margin: 1px;"/>';
82 $green_total +
= $data['count'];
83 } elseif (($data['oname'] == 'Debian 6') ||
($data['oname'] == 'Ubuntu 10.04')) {
84 $oname_plus = '<svg width="5" height="5" style="background-color: #ffff00; margin: 1px;"/>';
85 $yellow_total +
= $data['count'];
86 } elseif ((substr($data['oname'],0,7) == 'Windows') ||
(substr($data['oname'],strlen($data['oname'])-4,4) == 'OS X')) {
87 $oname_plus = '<svg width="5" height="5" style="background-color: #0000ff; margin: 1px;"/>';
88 $blue_total +
= $data['count'];
90 $oname_plus = '<svg width="5" height="5" style="background-color: #ff0000; margin: 1px;"/>';
91 $red_total +
= $data['count'];
93 echo "<tr class='tab_bg_2 auf_show_details'>";
94 echo "<td> ".$data['ename']."</td>";
95 echo "<td>".$oname_plus." ".$data['oname']."</td>";
96 echo "<td class='numeric'>".$data['count']."</td></tr>";
97 $region_total +
= $data['count'];
100 $green_svg = '<svg width="'.(400*$green_total/$region_total).'" height="5" style="background-color: #00ff00; margin: 1px 0;"/>';
101 $yellow_svg = '<svg width="'.(400*$yellow_total/$region_total).'" height="5" style="background-color: #ffff00; margin: 1px 0;"/>';
102 $red_svg = '<svg width="'.(400*$red_total/$region_total).'" height="5" style="background-color: #ff0000; margin: 1px 0;"/>';
103 $blue_svg = '<svg width="'.(400*$blue_total/$region_total).'" height="5" style="background-color: #0000ff; margin: 1px 0;"/>';
104 echo "<tr class='tab_bg_2'><td class='b'> Sous-total</td>";
105 echo "<td>".$green_svg.$yellow_svg.$red_svg.$blue_svg."</td>";
106 echo "<td class='numeric b'>$region_total</td></tr>";
108 $green_grand_total +
= $green_total;
109 $yellow_grand_total +
= $yellow_total;
110 $red_grand_total +
= $red_total;
111 $blue_grand_total +
= $blue_total;
112 $grand_total +
= $region_total;
115 echo "<tr class='tab_bg_1'><td colspan='3'> </td></tr>";
117 # total operating systems
118 $query = "SELECT COUNT(*) FROM `".$table_item."`
119 LEFT JOIN `glpi_computers_items`
120 ON (`glpi_computers_items`.`itemtype` = '".$itemtype."'
121 AND `glpi_computers_items`.`items_id` = `".$table_item."`.`id`)
122 WHERE `".$table_item."`.`is_deleted` = '0'
123 AND `".$table_item."`.`is_template` = '0' ".
124 getEntitiesRestrictRequest("AND", $table_item);
125 $result = $DB->query($query);
126 $total = $DB->result($result, 0, 0);
128 $green_svg = '<svg width="'.(400*$green_grand_total/$grand_total).'" height="5" style="background-color: #00ff00; margin: 1px 0;"/>';
129 $yellow_svg = '<svg width="'.(400*$yellow_grand_total/$grand_total).'" height="5" style="background-color: #ffff00; margin: 1px 0;"/>';
130 $red_svg = '<svg width="'.(400*$red_grand_total/$grand_total).'" height="5" style="background-color: #ff0000; margin: 1px 0;"/>';
131 $blue_svg = '<svg width="'.(400*$blue_grand_total/$grand_total).'" height="5" style="background-color: #0000ff; margin: 1px 0;"/>';
132 echo "<tr class='tab_bg_1'><td class='b'>Total général</td>";
133 echo "<td>".$green_svg.$yellow_svg.$red_svg.$blue_svg."</td>";
134 echo "<td class='numeric b'>$total</td></tr>";