/**
* Show software installed on a computer
*
* @param $comp Computer object
* @param $withtemplate template case of the view process
*
* @return nothing
**/
static function showForComputer(Computer $comp, $withtemplate = '')
{
global $DB, $CFG_GLPI, $LANG;
if (!haveRight("software", "r")) {
return false;
}
$computers_id = $comp->getField('id');
$rand = mt_rand();
$canedit = haveRight("software", "w");
$entities_id = $comp->fields["entities_id"];
$query = "SELECT `glpi_softwares`.`softwarecategories_id`,\n `glpi_softwares`.`name` AS softname,\n `glpi_computers_softwareversions`.`id`,\n `glpi_states`.`name` AS state,\n `glpi_softwareversions`.`id` AS verid,\n `glpi_softwareversions`.`softwares_id`,\n `glpi_softwareversions`.`name` AS version\n FROM `glpi_computers_softwareversions`\n LEFT JOIN `glpi_softwareversions`\n ON (`glpi_computers_softwareversions`.`softwareversions_id`\n = `glpi_softwareversions`.`id`)\n LEFT JOIN `glpi_states`\n ON (`glpi_states`.`id` = `glpi_softwareversions`.`states_id`)\n LEFT JOIN `glpi_softwares`\n ON (`glpi_softwareversions`.`softwares_id` = `glpi_softwares`.`id`)\n WHERE `glpi_computers_softwareversions`.`computers_id` = '{$computers_id}'\n ORDER BY `softwarecategories_id`, `softname`, `version`";
$result = $DB->query($query);
$i = 0;
echo "<div class='spaced'><table class='tab_cadre_fixe'>";
if ((empty($withtemplate) || $withtemplate != 2) && $canedit) {
echo "<tr class='tab_bg_1'><td class='center' colspan='3'>";
echo "<form method='post' action='" . $CFG_GLPI["root_doc"] . "/front/computer_softwareversion.form.php'>";
echo $LANG['Menu'][4] . " : ";
echo "<input type='hidden' name='computers_id' value='{$computers_id}'>";
Software::dropdownSoftwareToInstall("softwareversions_id", $entities_id);
echo "<input type='submit' name='install' value=\"" . $LANG['buttons'][4] . "\" class='submit'>";
echo "</form>";
echo "</td>";
echo "<td class='cneter' clospan='2'>";
echo "<form method='post' action='" . $CFG_GLPI["root_doc"] . "/front/computer_softwarelicense.form.php'>";
echo $LANG['software'][11] . " : ";
echo "<input type='hidden' name='computers_id' value='{$computers_id}'>";
Software::dropdownLicenseToInstall("softwarelicenses_id", $entities_id);
echo "<input type='submit' name='add' value=\"" . $LANG['buttons'][8] . "\" class='submit'>";
echo "</form>";
echo "</td></tr>\n";
}
echo "<tr><th colspan='5'>";
if ($DB->numrows($result) == 1) {
echo $LANG['software'][16];
} else {
echo $LANG['software'][17];
}
echo "</th></tr>";
$cat = -1;
initNavigateListItems('Software', $LANG['help'][25] . " = " . (empty($comp->fields["name"]) ? "(" . $comp->fields["id"] . ")" : $comp->fields["name"]));
initNavigateListItems('SoftwareLicense', $LANG['help'][25] . " = " . (empty($comp->fields["name"]) ? "(" . $comp->fields["id"] . ")" : $comp->fields["name"]));
$installed = array();
if ($DB->numrows($result)) {
while ($data = $DB->fetch_array($result)) {
if ($data["softwarecategories_id"] != $cat) {
self::displayCategoryFooter($cat, $rand, $canedit);
$cat = self::displayCategoryHeader($computers_id, $data, $rand, $canedit);
}
$licids = self::displaySoftsByCategory($data, $computers_id, $withtemplate, $canedit);
addToNavigateListItems('Software', $data["softwares_id"]);
foreach ($licids as $licid) {
addToNavigateListItems('SoftwareLicense', $licid);
$installed[] = $licid;
}
}
self::displayCategoryFooter($cat, $rand, $canedit);
}
// Affected licenses NOT installed
$query = "SELECT `glpi_softwarelicenses`.*,\n `glpi_softwares`.`name` AS softname,\n `glpi_softwareversions`.`name` AS version,\n `glpi_states`.`name` AS state\n FROM `glpi_softwarelicenses`\n LEFT JOIN `glpi_computers_softwarelicenses`\n ON (`glpi_computers_softwarelicenses`.softwarelicenses_id\n = `glpi_softwarelicenses`.`id`)\n INNER JOIN `glpi_softwares`\n ON (`glpi_softwarelicenses`.`softwares_id` = `glpi_softwares`.`id`)\n LEFT JOIN `glpi_softwareversions`\n ON (`glpi_softwarelicenses`.`softwareversions_id_use`\n = `glpi_softwareversions`.`id`\n OR (`glpi_softwarelicenses`.`softwareversions_id_use` = '0'\n AND `glpi_softwarelicenses`.`softwareversions_id_buy`\n = `glpi_softwareversions`.`id`))\n LEFT JOIN `glpi_states`\n ON (`glpi_states`.`id` = `glpi_softwareversions`.`states_id`)\n WHERE `glpi_computers_softwarelicenses`.`computers_id` = '{$computers_id}' ";
if (count($installed)) {
$query .= " AND `glpi_softwarelicenses`.`id` NOT IN (" . implode(',', $installed) . ")";
}
$req = $DB->request($query);
if ($req->numrows()) {
$cat = true;
foreach ($req as $data) {
if ($cat) {
self::displayCategoryHeader($computers_id, $data, $rand, $canedit);
$cat = false;
}
self::displaySoftsByLicense($data, $computers_id, $withtemplate, $canedit);
addToNavigateListItems('SoftwareLicense', $data["id"]);
}
self::displayCategoryFooter(NULL, $rand, $canedit);
}
echo "</table></div>\n";
}