glpi-plugin-auf : ajustement des rapports
[auf-serveur.git] / glpi-plugin-auf / plugin / report.computers.php
index 39192dc..4f887a2 100644 (file)
@@ -49,22 +49,25 @@ function svg_pie_chart($values, $size=16) {
   return $svg;
 }
 
+// echo "\n<span class='big b' style='color: red;'>ATTENTION : ce rapport est en cours de refonte, merci de ne pas tenir compte des données affichées ci-dessous.</span><br><br>";
+
 //echo "\n<span class='big b'>Ordinateurs par implantation</span><br><br>";
 echo "<table class='tab_cadrehov'>";
 echo "<tr class='tab_bg_1'><th rowspan='2' colspan='2'>Implantation</th>";
 echo "<th colspan='2'>".svg_circle('red')." Serveurs</th>";
-echo "<th colspan='2'>".svg_circle('green')." Clients internes</th>";
-echo "<th colspan='2'>".svg_circle('yellow')." Clients publics</th>";
-echo "<th rowspan='2'>Total<br /><span style='font-size: 75%'>(+ sans statut)</span></th>";
-echo "<th rowspan='2'>".svg_circle('blue')." Virtuels</th></tr>";
+echo "<th colspan='2'>".svg_circle('green')." Postes internes</th>";
+echo "<th colspan='2'>".svg_circle('yellow')." Postes publics</th>";
+echo "<th rowspan='2'>Total</th>";
+echo "<th rowspan='2'>".svg_circle('blue')." Virtuels</th>";
+echo "<th rowspan='2'>Autres<br /><span style='font-size: 75%'>(sans statut)</span></th></tr>";
 echo "<tr class='tab_bg_1'><th>Total</th><th>Production</th>";
 echo "<th>Total</th><th>Attribué</th><th>Total</th><th>Attribué</th></tr>\n";
 
 $grand_serveurs_total = 0; $grand_serveurs_prod = 0;
 $grand_internes_total = 0; $grand_internes_prod = 0;
 $grand_publics_total = 0; $grand_publics_prod = 0;
-$grand_total = 0; $grand_virtuels_total = 0;
-$grand_autres_total = 0;
+$grand_total = 0;
+$grand_virtuels_total = 0; $grand_autres_total = 0;
 # récupération de la liste des régions
 $query = "SELECT id FROM glpi_entities WHERE (id=0 OR entities_id=0)";
 $query .= " ".getEntitiesRestrictRequest("AND", "glpi_entities")." ORDER BY name";
@@ -107,53 +110,71 @@ while ($region_data = $DB->fetch_assoc($region_result)) {
     $nb_internes_total = 0; $nb_internes_prod = 0;
     $nb_publics_total = 0;  $nb_publics_prod = 0;
     $nb_virtuels_total = 0; $nb_autres_total = 0;
-    $query = "SELECT COUNT(c.id) AS count, s.id AS sid, s.completename AS sname
+    $query = "SELECT s.completename AS sname, ac.est_virtuel AS virtuel,
+                acc.name AS categorie, acu.name AS utilisation
               FROM `$table_item` c
-              LEFT JOIN glpi_entities e ON (c.entities_id = e.id)
               LEFT JOIN glpi_states s ON (c.states_id = s.id)
+              LEFT JOIN glpi_plugin_auf_computers ac ON (c.id = ac.id)
+              LEFT JOIN glpi_plugin_auf_categories acc ON (ac.auf_categories_id = acc.id)
+              LEFT JOIN glpi_plugin_auf_utilisations acu ON (ac.auf_utilisations_id = acu.id)
               WHERE c.is_deleted = '0' AND c.is_template = '0'
-                AND c.entities_id = '".$implant_id."'
-              GROUP BY 2 ORDER BY 2";
+                AND c.entities_id = '".$implant_id."'";
     $result = $DB->query($query);
     while ($data=$DB->fetch_assoc($result)) {
-      if (preg_match("/^système.*virtu.l/i", $data['sname'])) {
-        $nb_virtuels_total += $data['count'];
-      } elseif (preg_match("/^réserv.*serveur.*test/i", $data['sname'])) {
-        $nb_serveurs_total += $data['count'];
-      } elseif (preg_match("/^attrib.*serveur.*production/i", $data['sname'])) {
-        $nb_serveurs_total += $data['count'];
-        $nb_serveurs_prod += $data['count'];
-      } elseif (preg_match("/^réserv.*poste.*mission/i", $data['sname'])) {
-        $nb_internes_total += $data['count'];
-      } elseif (preg_match("/^attrib.*poste.*interne/i", $data['sname'])) {
-        $nb_internes_total += $data['count'];
-        $nb_internes_prod += $data['count'];
-      } elseif (preg_match("/^réserv.*poste.*stock/i", $data['sname'])) {
-        $nb_publics_total += $data['count'];
-      } elseif (preg_match("/^attrib.*poste.*public/i", $data['sname'])) {
-        $nb_publics_total += $data['count'];
-        $nb_publics_prod += $data['count'];
-      } elseif (preg_match("/^sortie/i", $data['sname'])) {
-        // on ne compte pas les sorties d'inventaire
-      } else {
-        $nb_autres_total += $data['count'];
+      // on ne compte pas les sorties d'inventaire
+      if (preg_match("/^sortie/i", $data['sname'])) {
+        continue;
+      }
+      // serveurs
+      if (preg_match("/^infra/i", $data['categorie'])) {
+        $nb_serveurs_total++;
+        if (preg_match("/^production/i", $data['utilisation']) &&
+           !preg_match("/panne/i", $data['sname']) ) {
+          $nb_serveurs_prod++;
+        }
+      }
+      // postes internes
+      elseif (preg_match("/^poste.*interne/i", $data['categorie'])) {
+        $nb_internes_total++;
+        if (preg_match("/^production/i", $data['utilisation']) &&
+           !preg_match("/panne/i", $data['sname']) ) {
+           $nb_internes_prod++;
+        }
+      }
+      // postes publics
+      elseif (preg_match("/^poste.*public/i", $data['categorie'])) {
+        $nb_publics_total++;
+        if (preg_match("/^production/i", $data['utilisation']) &&
+           !preg_match("/panne/i", $data['sname']) ) {
+          $nb_publics_prod++;
+        }
+      }
+      // autres
+      else {
+        // machines virtuelles
+        if ($data['virtuel']) {
+          $nb_virtuels_total++;
+        // autres
+        } else {
+          $nb_autres_total++;
+        }
       }
     } // systèmes dans l'implantation
 
-    $total = $nb_serveurs_total + $nb_internes_total + $nb_publics_total + $nb_autres_total;
+    $total = $nb_serveurs_total + $nb_internes_total + $nb_publics_total;
     if ($total > 0) {
       $spaces = "";
       for ($i=1;$i<$implant_data['level'];$i++) { $spaces .= "&nbsp;&nbsp;"; }
-      $line = "<tr><td class='tab_bg_1'>".$spaces.$implant_name."</td>";
-      $line .= "<td class='numeric'>".$nb_serveurs_total."</td>";
-      $line .= "<td class='numeric'>".$nb_serveurs_prod."</td>";
-      $line .= "<td class='numeric'>".$nb_internes_total."</td>";
-      $line .= "<td class='numeric'>".$nb_internes_prod."</td>";
-      $line .= "<td class='numeric'>".$nb_publics_total."</td>";
-      $line .= "<td class='numeric'>".$nb_publics_prod."</td>";
-      $autres = ($nb_autres_total > 0) ? "(".$nb_autres_total." +) " : "";
-      $line .= "<td class='numeric tab_bg_1'>".$autres.$total."</td>";
-      $line .= "<td class='numeric'>".$nb_virtuels_total."</td></tr>";
+      $line = "<tr><td class='tab_bg_1'>$spaces$implant_name</td>";
+      $line .= "<td class='numeric'>$nb_serveurs_total</td>";
+      $line .= "<td class='numeric'>$nb_serveurs_prod</td>";
+      $line .= "<td class='numeric'>$nb_internes_total</td>";
+      $line .= "<td class='numeric'>$nb_internes_prod</td>";
+      $line .= "<td class='numeric'>$nb_publics_total</td>";
+      $line .= "<td class='numeric'>$nb_publics_prod</td>";
+      $line .= "<td class='numeric tab_bg_1'>$total</td>";
+      $line .= "<td class='numeric'>$nb_virtuels_total</td>";
+      $line .= "<td class='numeric'>$nb_autres_total</td></tr>";
       $table_lines[] = $line;
     }
     $region_serveurs_total += $nb_serveurs_total;
@@ -169,19 +190,22 @@ while ($region_data = $DB->fetch_assoc($region_result)) {
   } // fin des implantations de la région
 
   $line = "<tr class='tab_bg_1 b'><td>Sous-total</td>";
-  $line .= "<td class='numeric'>".$region_serveurs_total."</td>";
-  $line .= "<td class='numeric'>".$region_serveurs_prod."</td>";
-  $line .= "<td class='numeric'>".$region_internes_total."</td>";
-  $line .= "<td class='numeric'>".$region_internes_prod."</td>";
-  $line .= "<td class='numeric'>".$region_publics_total."</td>";
-  $line .= "<td class='numeric'>".$region_publics_prod."</td>";
-  $autres = ($region_autres_total > 0) ? "(".$region_autres_total." +) " : "";
-  $line .= "<td class='numeric tab_bg_1'>".$autres.$region_total."</td>";
-  $line .= "<td class='numeric'>".$region_virtuels_total."</td></tr>";
+  $line .= "<td class='numeric'>$region_serveurs_total</td>";
+  $line .= "<td class='numeric'>$region_serveurs_prod</td>";
+  $line .= "<td class='numeric'>$region_internes_total</td>";
+  $line .= "<td class='numeric'>$region_internes_prod</td>";
+  $line .= "<td class='numeric'>$region_publics_total</td>";
+  $line .= "<td class='numeric'>$region_publics_prod</td>";
+  $line .= "<td class='numeric tab_bg_1'>$region_total</td>";
+  $line .= "<td class='numeric'>$region_virtuels_total</td>";
+  $line .= "<td class='numeric'>$region_autres_total</td></tr>";
   $table_lines[] = $line;
 
   $region_name = svg_pie_chart(Array($region_serveurs_total, $region_internes_total, $region_publics_total, $region_virtuels_total), 16) . $region_name;
   $table_lines[0] = str_replace("<tr>", "<tr><td class='tab_bg_1 b' rowspan='".count($table_lines)."'>$region_name</td>", $table_lines[0]);
+  if ($region_id != 0) {
+    echo "<tr><th colspan='11'></th></tr>\n";
+  }
   echo implode("\n", $table_lines);
 
   $grand_serveurs_total += $region_serveurs_total;
@@ -212,15 +236,16 @@ $result = $DB->query($query);
 $grand_total = $DB->result($result, 0, 0);
 */
 $line = "<tr class='tab_bg_1'><td class='b' colspan='2'>Total général</td>";
-$line .= "<td class='numeric b'>".$grand_serveurs_total."</td>";
-$line .= "<td class='numeric b'>".$grand_serveurs_prod."</td>";
-$line .= "<td class='numeric b'>".$grand_internes_total."</td>";
-$line .= "<td class='numeric b'>".$grand_internes_prod."</td>";
-$line .= "<td class='numeric b'>".$grand_publics_total."</td>";
-$line .= "<td class='numeric b'>".$grand_publics_prod."</td>";
-$autres = ($grand_autres_total > 0) ? "(".$grand_autres_total." +) " : "";
-$line .= "<td class='numeric b'>".$autres.$grand_total."</td>";
-$line .= "<td class='numeric b'>$grand_virtuels_total</td></tr>";
+$line .= "<td class='numeric b'>$grand_serveurs_total</td>";
+$line .= "<td class='numeric b'>$grand_serveurs_prod</td>";
+$line .= "<td class='numeric b'>$grand_internes_total</td>";
+$line .= "<td class='numeric b'>$grand_internes_prod</td>";
+$line .= "<td class='numeric b'>$grand_publics_total</td>";
+$line .= "<td class='numeric b'>$grand_publics_prod</td>";
+$line .= "<td class='numeric b'>$grand_total</td>";
+$line .= "<td class='numeric b'>$grand_virtuels_total</td>";
+$line .= "<td class='numeric b'>$grand_autres_total</td></tr>";
+echo "<tr><th colspan='11'></th></tr>\n";
 echo $line;
 
 echo "</table>";