Get number of installed licenses of a version
static public countForVersion ( $softwareversions_id, $entity = '' ) : number | ||
$softwareversions_id | version ID | |
$entity | to search for computer in (default '' = all active entities) (default '') | |
return | number | of installations |
static function pdfForSoftware(PluginPdfSimplePDF $pdf, Software $item) { global $DB; $sID = $item->getField('id'); $query = "SELECT `glpi_softwareversions`.*,\n `glpi_states`.`name` AS sname,\n `glpi_operatingsystems`.`name` AS osname\n FROM `glpi_softwareversions`\n LEFT JOIN `glpi_states`\n ON (`glpi_states`.`id` = `glpi_softwareversions`.`states_id`)\n LEFT JOIN `glpi_operatingsystems`\n ON (`glpi_operatingsystems`.`id` = `glpi_softwareversions`.`operatingsystems_id`)\n WHERE (`softwares_id` = '" . $sID . "')\n ORDER BY `name`"; $pdf->setColumnsSize(100); $pdf->displayTitle('<b>' . SoftwareVersion::getTypeName(2) . '</b>'); if ($result = $DB->query($query)) { if ($DB->numrows($result) > 0) { $pdf->setColumnsSize(13, 13, 30, 14, 30); $pdf->displayTitle('<b><i>' . SoftwareVersion::getTypeName(2) . '</i></b>', '<b><i>' . __('Status') . '</i></b>', '<b><i>' . __('Operating system') . '</i></b>', '<b><i>' . _n('Installation', 'Installations', 2) . '</i></b>', '<b><i>' . __('Comments') . '</i></b>'); $pdf->setColumnsAlign('left', 'left', 'left', 'right', 'left'); for ($tot = $nb = 0; $data = $DB->fetch_assoc($result); $tot += $nb) { $nb = Computer_SoftwareVersion::countForVersion($data['id']); $pdf->displayLine(empty($data['name']) ? "(" . $data['id'] . ")" : $data['name'], $data['sname'], $data['osname'], $nb, str_replace(array("\r", "\n"), " ", $data['comment'])); } $pdf->setColumnsAlign('left', 'right', 'left', 'right', 'left'); $pdf->displayTitle('', '', "<b>" . sprintf(__('%1$s: %2$s'), __('Total') . "</b>", ''), $tot, ''); } else { $pdf->displayLine(__('No item found')); } } else { $pdf->displayLine(__('No item found')); } $pdf->displaySpace(); }
/** * Show Versions of a software * * @param $soft Software object * @return nothing **/ static function showForSoftware($soft) { global $DB, $CFG_GLPI, $LANG; $softwares_id = $soft->getField('id'); if (!$soft->can($softwares_id, 'r')) { return false; } $canedit = $soft->can($softwares_id, "w"); echo "<div class='spaced'>"; $query = "SELECT `glpi_softwareversions`.*,\n `glpi_states`.`name` AS sname\n FROM `glpi_softwareversions`\n LEFT JOIN `glpi_states` ON (`glpi_states`.`id` = `glpi_softwareversions`.`states_id`)\n WHERE `softwares_id` = '{$softwares_id}'\n ORDER BY `name`"; initNavigateListItems('SoftwareVersion', $LANG['help'][31] . " = " . $soft->fields["name"]); if ($result = $DB->query($query)) { if ($DB->numrows($result)) { echo "<table class='tab_cadre'><tr>"; echo "<th> " . $LANG['software'][5] . " </th>"; echo "<th> " . $LANG['state'][0] . " </th>"; echo "<th> " . $LANG['setup'][5] . " </th>"; echo "<th> " . $LANG['software'][19] . " </th>"; echo "<th> " . $LANG['common'][25] . " </th>"; echo "</tr>\n"; for ($tot = $nb = 0; $data = $DB->fetch_assoc($result); $tot += $nb) { addToNavigateListItems('SoftwareVersion', $data['id']); $nb = Computer_SoftwareVersion::countForVersion($data['id']); echo "<tr class='tab_bg_2'>"; echo "<td><a href='softwareversion.form.php?id=" . $data['id'] . "'>"; echo $data['name'] . (empty($data['name']) ? $data['id'] : "") . "</a></td>"; echo "<td>" . $data['sname'] . "</td>"; echo "<td class='right'>" . Dropdown::getDropdownName('glpi_operatingsystems', $data['operatingsystems_id']); echo "</td>"; echo "<td class='right'>{$nb} </td>"; echo "<td>" . $data['comment'] . "</td></tr>\n"; } echo "<tr class='tab_bg_1'><td class='right b' colspan='3'>" . $LANG['common'][33] . "</td>"; echo "<td class='right b'>{$tot} </td><td>"; if ($canedit) { echo "<a href='softwareversion.form.php?softwares_id={$softwares_id}'>" . $LANG['software'][7] . "</a>"; } echo "</td></tr>"; echo "</table>\n"; } else { echo "<table class='tab_cadre_fixe'>"; echo "<tr><th>" . $LANG['search'][15] . "</th></tr>"; if ($canedit) { echo "<tr class='tab_bg_2'><td class='center'>"; echo "<a href='softwareversion.form.php?softwares_id={$softwares_id}'>" . $LANG['software'][7] . "</a></td></tr>"; } echo "</table>\n"; } } echo "</div>"; }
static function pdfForVersionByEntity(PluginPdfSimplePDF $pdf, SoftwareVersion $version) { global $DB, $CFG_GLPI; $softwareversions_id = $version->getField('id'); $pdf->setColumnsSize(75, 25); $pdf->setColumnsAlign('left', 'right'); $pdf->displayTitle('<b>' . __('Entity'), _n('Installation', 'Installations', 2) . '</b>'); $lig = $tot = 0; if (in_array(0, $_SESSION["glpiactiveentities"])) { $nb = Computer_SoftwareVersion::countForVersion($softwareversions_id, 0); if ($nb > 0) { $pdf->displayLine(__('Root entity'), $nb); $tot += $nb; $lig++; } } $sql = "SELECT `id`, `completename`\n FROM `glpi_entities` " . getEntitiesRestrictRequest('WHERE', 'glpi_entities') . "\n ORDER BY `completename`"; foreach ($DB->request($sql) as $ID => $data) { $nb = Computer_SoftwareVersion::countForVersion($softwareversions_id, $ID); if ($nb > 0) { $pdf->displayLine($data["completename"], $nb); $tot += $nb; $lig++; } } if ($tot > 0) { if ($lig > 1) { $pdf->displayLine(__('Total'), $tot); } } else { $pdf->setColumnsSize(100); $pdf->displayLine(__('No item found')); } $pdf->displaySpace(); }
/** * Show Versions of a software * * @param $soft Software object * * @return nothing **/ static function showForSoftware(Software $soft) { global $DB, $CFG_GLPI; $softwares_id = $soft->getField('id'); if (!$soft->can($softwares_id, READ)) { return false; } $canedit = $soft->canEdit($softwares_id); echo "<div class='spaced'>"; if ($canedit) { echo "<div class='center firstbloc'>"; echo "<a class='vsubmit' href='softwareversion.form.php?softwares_id={$softwares_id}'>" . _x('button', 'Add a version') . "</a>"; echo "</div>"; } $query = "SELECT `glpi_softwareversions`.*,\n `glpi_states`.`name` AS sname\n FROM `glpi_softwareversions`\n LEFT JOIN `glpi_states` ON (`glpi_states`.`id` = `glpi_softwareversions`.`states_id`)\n WHERE `softwares_id` = '{$softwares_id}'\n ORDER BY `name`"; Session::initNavigateListItems('SoftwareVersion', sprintf(__('%1$s = %2$s'), Software::getTypeName(1), $soft->getName())); if ($result = $DB->query($query)) { if ($DB->numrows($result)) { echo "<table class='tab_cadre_fixehov'><tr>"; echo "<th>" . self::getTypeName(Session::getPluralNumber()) . "</th>"; echo "<th>" . __('Status') . "</th>"; echo "<th>" . __('Operating system') . "</th>"; echo "<th>" . _n('Installation', 'Installations', Session::getPluralNumber()) . "</th>"; echo "<th>" . __('Comments') . "</th>"; echo "</tr>\n"; for ($tot = $nb = 0; $data = $DB->fetch_assoc($result); $tot += $nb) { Session::addToNavigateListItems('SoftwareVersion', $data['id']); $nb = Computer_SoftwareVersion::countForVersion($data['id']); echo "<tr class='tab_bg_2'>"; echo "<td><a href='softwareversion.form.php?id=" . $data['id'] . "'>"; echo $data['name'] . (empty($data['name']) ? "(" . $data['id'] . ")" : "") . "</a></td>"; echo "<td>" . $data['sname'] . "</td>"; echo "<td class='right'>" . Dropdown::getDropdownName('glpi_operatingsystems', $data['operatingsystems_id']); echo "</td>"; echo "<td class='numeric'>{$nb}</td>"; echo "<td>" . $data['comment'] . "</td></tr>\n"; } echo "<tr class='tab_bg_1 noHover'><td class='right b' colspan='3'>" . __('Total') . "</td>"; echo "<td class='numeric b'>{$tot}</td><td></td></tr>"; echo "</table>\n"; } else { echo "<table class='tab_cadre_fixe'>"; echo "<tr><th>" . __('No item found') . "</th></tr>"; echo "</table>\n"; } } echo "</div>"; }
/** * @covers Computer_SoftwareVersion::countForVersion */ public function testCountInstall() { $this->Login(); $computer1 = getItemByTypeName('Computer', '_test_pc01', true); $computer11 = getItemByTypeName('Computer', '_test_pc11', true); $computer12 = getItemByTypeName('Computer', '_test_pc12', true); $ver = getItemByTypeName('SoftwareVersion', '_test_softver_1', true); // Do some installations $ins = new Computer_SoftwareVersion(); $this->assertGreaterThan(0, $ins->add(['computers_id' => $computer1, 'softwareversions_id' => $ver])); $this->assertGreaterThan(0, $ins->add(['computers_id' => $computer11, 'softwareversions_id' => $ver])); $this->assertGreaterThan(0, $ins->add(['computers_id' => $computer12, 'softwareversions_id' => $ver])); // Count installations $this->setEntity('_test_root_entity', true); $this->assertEquals(3, Computer_SoftwareVersion::countForVersion($ver), 'count in all tree'); $this->setEntity('_test_root_entity', false); $this->assertEquals(1, Computer_SoftwareVersion::countForVersion($ver), 'count in root'); $this->setEntity('_test_child_1', false); $this->assertEquals(2, Computer_SoftwareVersion::countForVersion($ver), 'count in child'); }