countForVersion() static public method

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
Ejemplo n.º 1
0
 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>&nbsp;" . $LANG['software'][5] . "&nbsp;</th>";
             echo "<th>&nbsp;" . $LANG['state'][0] . "&nbsp;</th>";
             echo "<th>&nbsp;" . $LANG['setup'][5] . "&nbsp;</th>";
             echo "<th>&nbsp;" . $LANG['software'][19] . "&nbsp;</th>";
             echo "<th>&nbsp;" . $LANG['common'][25] . "&nbsp;</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}&nbsp;&nbsp;</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}&nbsp;&nbsp;</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>";
 }
Ejemplo n.º 5
0
 /**
  * @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');
 }