X-Git-Url: http://git.auf.org/?p=auf-serveur.git;a=blobdiff_plain;f=glpi-plugin-auf%2Fplugin%2Frapport.migrationubuntu.php;h=f4100471e9228cb88406aea1f67db7786d29a577;hp=e2118a8b056c9984a641450bb564044e1804c96b;hb=d3e48eccb4986496395822f8d813e9d6d27be38b;hpb=67d402c657c9d1cc4554bacb7d87f7de0f6b5d8e
diff --git a/glpi-plugin-auf/plugin/rapport.migrationubuntu.php b/glpi-plugin-auf/plugin/rapport.migrationubuntu.php
index e2118a8..f410047 100644
--- a/glpi-plugin-auf/plugin/rapport.migrationubuntu.php
+++ b/glpi-plugin-auf/plugin/rapport.migrationubuntu.php
@@ -5,6 +5,9 @@ $DBCONNECTION_REQUIRED=0;
include ("../../inc/includes.php");
+$svg_bar_width = 28;
+$svg_bar_height = 10;
+
Session::checkRight("reports", "r");
Session::checkRight("computer", "r");
@@ -12,9 +15,262 @@ Session::checkRight("computer", "r");
Html::header("Suivi de la migration vers Ubuntu 12.04.", $_SERVER['PHP_SELF'], "utils", "report");
Report::title();
-echo "\n
Suivi de la migration vers Ubuntu 12.04
";
+#echo "\nSuivi de la migration vers Ubuntu 12.04
";
+#echo "Les données du rapport de migration Ubuntu seront disponibles à partir du jeudi 24 avril 2014.
En attendant vous pouvez déjà consulter les rapports sur le parc machine et sur les systèmes d'exploitation.
";
+
+$computer = new Computer();
+
+$itemtype = 'Computer';
+$table_item = getTableForItemType($itemtype);
+
+$svg_colors = Array('red'=>'#ffa0a0', 'green'=>'#a0ffa0', 'yellow'=>'#ffdd80', 'blue'=>'#a0a0ff');
+
+function svg_circle($color, $size=4) {
+ global $svg_colors;
+ if (array_key_exists($color, $svg_colors)) { $color = $svg_colors[$color]; }
+ $r = (int)$size; $cx = $r+1; $cy = $r+1;
+ $svg = '';
+ return $svg;
+}
+
+function svg_pie_chart($values, $size=16) {
+ global $svg_colors;
+ $color_names = Array('blue', 'red', 'green', 'yellow'); $color_idx = 0;
+ $total = 0.0; foreach ($values as $v) { $total += $v; }
+ $r = (int)$size; $cx = $r+1; $cy = $r+1; $rad = 2*pi()/$total; $old_a = 0;
+ $svg = '';
+ return $svg;
+}
+
+function svg_bar($values, $width=100, $height=5) {
+ global $svg_colors;
+ $color_names = Array('blue', 'red', 'green', 'yellow'); $color_idx = 0;
+ $total = 0.0; foreach ($values as $v) { $total += $v; }
+ $svg = "';
+ return $svg;
+}
+
+// echo "\nATTENTION : ce rapport est en cours de refonte, merci de ne pas tenir compte des données affichées ci-dessous.
";
+
+//echo "\nOrdinateurs par implantation
";
+echo "";
+echo "Implantation | ";
+echo "Parc interne | ";
+echo "Parc public | ";
+echo "
";
+echo "";
+echo "Autres ".svg_circle('blue', 3)." | Ubuntu 10.04 ".svg_circle('red', 3)." | Ubuntu 12.04 ".svg_circle('green', 3)." | Progression | ";
+echo "Autres ".svg_circle('blue', 3)." | Ubuntu 10.04 ".svg_circle('red', 3)." | Ubuntu 12.04 ".svg_circle('green', 3)." | Progression | ";
+echo "
\n";
+
+$grand_internes_1204 = 0; $grand_internes_1004 = 0; $grand_internes_autres = 0;
+$grand_publics_1204 = 0; $grand_publics_1004 = 0; $grand_publics_autres = 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";
+$region_result = $DB->query($query);
+// parcours des régions
+while ($region_data = $DB->fetch_assoc($region_result)) {
+ $region_id = $region_data['id'];
+ if ($region_id != 0) {
+ $region_name = getTreeLeafValueName("glpi_entities", $region_id);
+ } else {
+ $region_name = "AUF";
+ }
+ $table_lines = Array();
+ $region_internes_1204 = 0; $region_internes_1004 = 0; $region_internes_autres = 0;
+ $region_publics_1204 = 0; $region_publics_1004 = 0; $region_publics_autres = 0;
+
+ // récupération de la liste des implantations
+ $query = "SELECT id,level FROM glpi_entities WHERE ";
+ if ($region_id != 0) {
+ $query .= getRealQueryForTreeItem("glpi_entities", $region_id, "id");
+ } else {
+ $query .= "id=0";
+ }
+ $query .= " ".getEntitiesRestrictRequest("AND", "glpi_entities")." ORDER BY name";
+ $implant_result = $DB->query($query);
+ // parcours des implantations
+ while ($implant_data = $DB->fetch_assoc($implant_result)) {
+ $implant_id = $implant_data['id'];
+ if ($implant_id != 0) {
+ $implant_name = getTreeLeafValueName("glpi_entities", $implant_id);
+ } else {
+ $implant_name = "(non classé)";
+ }
+
+ // récupération de la liste des systèmes de l'implantation
+ $nb_internes_1204 = 0; $nb_internes_1004 = 0; $nb_internes_autres = 0;
+ $nb_publics_1204 = 0; $nb_publics_1004 = 0; $nb_publics_autres = 0;
+ $query = "SELECT s.completename AS sname, o.name AS oname,
+ acc.name AS categorie, acu.name AS utilisation
+ FROM `$table_item` c
+ 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)
+ LEFT JOIN glpi_operatingsystems o ON (c.operatingsystems_id = o.id)
+ WHERE c.is_deleted = '0' AND c.is_template = '0' AND ac.est_virtuel IS FALSE
+ AND c.entities_id = '".$implant_id."'";
+ $result = $DB->query($query);
+ while ($data=$DB->fetch_assoc($result)) {
+ // on ne compte pas les sorties d'inventaire
+ if (preg_match("/^sortie/i", $data['sname'])) {
+ continue;
+ }
+ // postes internes
+ if (preg_match("/^poste.*interne/i", $data['categorie'])) {
+ if (preg_match("/^production/i", $data['utilisation']) &&
+ !preg_match("/panne/i", $data['sname']) ) {
+ if (preg_match("/^Ubuntu 12\.04/", $data['oname'])) {
+ $nb_internes_1204++;
+ } elseif (preg_match("/^Ubuntu 10\.04/", $data['oname'])) {
+ $nb_internes_1004++;
+ } else {
+ $nb_internes_autres++;
+ }
+ }
+ }
+ // postes publics
+ elseif (preg_match("/^poste.*public/i", $data['categorie'])) {
+ if (preg_match("/^production/i", $data['utilisation']) &&
+ !preg_match("/panne/i", $data['sname']) ) {
+ if (preg_match("/^Ubuntu 12\.04/", $data['oname'])) {
+ $nb_publics_1204++;
+ } elseif (preg_match("/^Ubuntu 10\.04/", $data['oname'])) {
+ $nb_publics_1004++;
+ } else {
+ $nb_publics_autres++;
+ }
+ }
+ }
+ // autres
+ else {
+ // on ne compte que les postes clients, pas les serveurs
+ }
+ } // systèmes dans l'implantation
+
+ $total_internes = $nb_internes_1204 + $nb_internes_1004 + $nb_internes_autres;
+ $total_publics = $nb_publics_1204 + $nb_publics_1004 + $nb_publics_autres;
+ if (($total_internes + $total_publics) > 0) {
+ $spaces = "";
+ for ($i=1;$i<$implant_data['level'];$i++) { $spaces .= " "; }
+ $line = "$spaces$implant_name | ";
+ $line .= "$nb_internes_autres | ";
+ $line .= "$nb_internes_1004 | ";
+ $line .= "$nb_internes_1204 | ";
+ $line .= "";
+ $line .= svg_bar(Array($nb_internes_autres, $nb_internes_1004, $nb_internes_1204), $svg_bar_width, $svg_bar_height);
+ $line .= round((100*$nb_internes_1204)/$total_internes)."% | ";
+ $line .= "$nb_publics_autres | ";
+ $line .= "$nb_publics_1004 | ";
+ $line .= "$nb_publics_1204 | ";
+ $line .= "";
+ $line .= svg_bar(Array($nb_publics_autres, $nb_publics_1004, $nb_publics_1204), $svg_bar_width, $svg_bar_height);
+ $line .= round((100*$nb_publics_1204)/$total_publics)."% | ";
+ $line .= "
\n";
+ $table_lines[] = $line;
+ }
+ // total régional
+ $region_internes_autres += $nb_internes_autres;
+ $region_internes_1004 += $nb_internes_1004;
+ $region_internes_1204 += $nb_internes_1204;
+ $region_publics_autres += $nb_publics_autres;
+ $region_publics_1004 += $nb_publics_1004;
+ $region_publics_1204 += $nb_publics_1204;
+ #$table_lines[] = "".$implant_name." |
";
+ } // fin des implantations de la région
+
+ $total_internes = $region_internes_1204 + $region_internes_1004 + $region_internes_autres;
+ $total_publics += $region_publics_1204 + $region_publics_1004 + $region_publics_autres;
+ if (($total_internes + $total_publics) > 0) {
+ $line = "Sous-total | ";
+ $line .= "$region_internes_autres | ";
+ $line .= "$region_internes_1004 | ";
+ $line .= "$region_internes_1204 | ";
+ $line .= "";
+ $line .= svg_bar(Array($region_internes_autres, $region_internes_1004, $region_internes_1204), $svg_bar_width, $svg_bar_height);
+ $line .= round((100*$region_internes_1204)/$total_internes)."% | ";
+ $line .= "$region_publics_autres | ";
+ $line .= "$region_publics_1004 | ";
+ $line .= "$region_publics_1204 | ";
+ $line .= "";
+ $line .= svg_bar(Array($region_publics_autres, $region_publics_1004, $region_publics_1204), $svg_bar_width, $svg_bar_height);
+ $line .= round((100*$region_publics_1204)/$total_publics)."% | ";
+ $line .= "
\n";
+ $table_lines[] = $line;
+ }
+
+ # TODO: revoir ce pie-chart
+ $region_name = svg_pie_chart(Array(
+ $region_internes_autres + $region_publics_autres,
+ $region_internes_1004 + $region_publics_1004,
+ $region_internes_1204 + $region_publics_1204,
+ ), 16) . $region_name;
+ $table_lines[0] = str_replace("", "
$region_name | ", $table_lines[0]);
+ if ($region_id != 0) {
+ echo "
|
\n";
+ }
+ echo implode("\n", $table_lines);
+
+ // total général
+ $grand_internes_autres += $region_internes_autres;
+ $grand_internes_1004 += $region_internes_1004;
+ $grand_internes_1204 += $region_internes_1204;
+ $grand_publics_autres += $region_publics_autres;
+ $grand_publics_1004 += $region_publics_1004;
+ $grand_publics_1204 += $region_publics_1204;
+} // fin des régions
+
+#echo " |
";
+
+$total_internes = $grand_internes_1204 + $grand_internes_1004 + $grand_internes_autres;
+$total_publics += $grand_publics_1204 + $grand_publics_1004 + $grand_publics_autres;
+$line = "Total général | ";
+$line .= "$grand_internes_autres | ";
+$line .= "$grand_internes_1004 | ";
+$line .= "$grand_internes_1204 | ";
+$line .= "";
+$line .= svg_bar(Array($grand_internes_autres, $grand_internes_1004, $grand_internes_1204), $svg_bar_width, $svg_bar_height);
+$line .= round((100*$grand_internes_1204)/$total_internes)."% | ";
+$line .= "$grand_publics_autres | ";
+$line .= "$grand_publics_1004 | ";
+$line .= "$grand_publics_1204 | ";
+$line .= "";
+$line .= svg_bar(Array($grand_publics_autres, $grand_publics_1004, $grand_publics_1204), $svg_bar_width, $svg_bar_height);
+$line .= round((100*$grand_publics_1204)/$total_publics)."% | ";
+$line .= "
";
+echo " |
\n";
+echo $line;
-echo "Les données du rapport de migration Ubuntu seront disponibles à partir du lundi 21 avril 2014.
En attendant vous pouvez déjà consulter les rapports sur le parc machine et sur les systèmes d'exploitation.
";
+echo "
";
Html::footer();
?>