SoftwareLicense::showForSoftware PHP Method

showForSoftware() static public method

Show Licenses of a software
static public showForSoftware ( Software $software ) : nothing
$software Software Software object
return nothing
    static function showForSoftware(Software $software)
    {
        global $DB, $CFG_GLPI;
        $softwares_id = $software->getField('id');
        $license = new self();
        $computer = new Computer();
        if (!$software->can($softwares_id, READ)) {
            return false;
        }
        $columns = array('name' => __('Name'), 'entity' => __('Entity'), 'serial' => __('Serial number'), 'number' => _x('quantity', 'Number'), '_affected' => __('Affected computers'), 'typename' => __('Type'), 'buyname' => __('Purchase version'), 'usename' => __('Version in use'), 'expire' => __('Expiration'));
        if (!$software->isRecursive()) {
            unset($columns['entity']);
        }
        if (isset($_GET["start"])) {
            $start = $_GET["start"];
        } else {
            $start = 0;
        }
        if (isset($_GET["order"]) && $_GET["order"] == "DESC") {
            $order = "DESC";
        } else {
            $order = "ASC";
        }
        if (isset($_GET["sort"]) && !empty($_GET["sort"]) && isset($columns[$_GET["sort"]])) {
            $sort = "`" . $_GET["sort"] . "`";
        } else {
            $sort = "`entity` {$order}, `name`";
        }
        // Righ type is enough. Can add a License on a software we have Read access
        $canedit = Software::canUpdate();
        $showmassiveactions = $canedit;
        // Total Number of events
        $number = countElementsInTable("glpi_softwarelicenses", "glpi_softwarelicenses.softwares_id = {$softwares_id} " . getEntitiesRestrictRequest('AND', 'glpi_softwarelicenses', '', '', true));
        echo "<div class='spaced'>";
        Session::initNavigateListItems('SoftwareLicense', sprintf(__('%1$s = %2$s'), Software::getTypeName(1), $software->getName()));
        if ($canedit) {
            echo "<div class='center firstbloc'>";
            echo "<a class='vsubmit' href='softwarelicense.form.php?softwares_id={$softwares_id}'>" . _x('button', 'Add a license') . "</a>";
            echo "</div>";
        }
        $rand = mt_rand();
        $query = "SELECT `glpi_softwarelicenses`.*,\n                       `buyvers`.`name` AS buyname,\n                       `usevers`.`name` AS usename,\n                       `glpi_entities`.`completename` AS entity,\n                       `glpi_softwarelicensetypes`.`name` AS typename\n                FROM `glpi_softwarelicenses`\n                LEFT JOIN `glpi_softwareversions` AS buyvers\n                     ON (`buyvers`.`id` = `glpi_softwarelicenses`.`softwareversions_id_buy`)\n                LEFT JOIN `glpi_softwareversions` AS usevers\n                     ON (`usevers`.`id` = `glpi_softwarelicenses`.`softwareversions_id_use`)\n                LEFT JOIN `glpi_entities`\n                     ON (`glpi_entities`.`id` = `glpi_softwarelicenses`.`entities_id`)\n                LEFT JOIN `glpi_softwarelicensetypes`\n                     ON (`glpi_softwarelicensetypes`.`id`\n                          = `glpi_softwarelicenses`.`softwarelicensetypes_id`)\n                WHERE (`glpi_softwarelicenses`.`softwares_id` = '{$softwares_id}') " . getEntitiesRestrictRequest('AND', 'glpi_softwarelicenses', '', '', true) . "\n                ORDER BY {$sort} {$order}\n                LIMIT " . intval($start) . "," . intval($_SESSION['glpilist_limit']);
        if ($result = $DB->query($query)) {
            if ($num_displayed = $DB->numrows($result)) {
                // Display the pager
                Html::printAjaxPager(self::getTypeName(Session::getPluralNumber()), $start, $number);
                if ($showmassiveactions) {
                    Html::openMassiveActionsForm('mass' . __CLASS__ . $rand);
                    $massiveactionparams = array('num_displayed' => $num_displayed, 'container' => 'mass' . __CLASS__ . $rand, 'extraparams' => array('options' => array('glpi_softwareversions.name' => array('condition' => "`glpi_softwareversions`.`softwares_id`\n                                                                  = {$softwares_id}"), 'glpi_softwarelicenses.name' => array('itemlink_as_string' => true))));
                    Html::showMassiveActions($massiveactionparams);
                }
                $sort_img = "<img src=\"" . $CFG_GLPI["root_doc"] . "/pics/" . ($order == "DESC" ? "puce-down.png" : "puce-up.png") . "\" alt='' title=''>";
                $sort_img = "<img src=\"" . $CFG_GLPI["root_doc"] . "/pics/" . ($order == "DESC" ? "puce-down.png" : "puce-up.png") . "\" alt='' title=''>";
                echo "<table class='tab_cadre_fixehov'>";
                $header_begin = "<tr><th>";
                $header_top = Html::getCheckAllAsCheckbox('mass' . __CLASS__ . $rand);
                $header_bottom = Html::getCheckAllAsCheckbox('mass' . __CLASS__ . $rand);
                $header_end = '';
                foreach ($columns as $key => $val) {
                    // Non order column
                    if ($key[0] == '_') {
                        $header_end .= "<th>{$val}</th>";
                    } else {
                        $header_end .= "<th>" . ($sort == "`{$key}`" ? $sort_img : "") . "<a href='javascript:reloadTab(\"sort={$key}&amp;order=" . ($order == "ASC" ? "DESC" : "ASC") . "&amp;start=0\");'>{$val}</a></th>";
                    }
                }
                $header_end .= "</tr>\n";
                echo $header_begin . $header_top . $header_end;
                $tot_assoc = 0;
                for ($tot = 0; $data = $DB->fetch_assoc($result);) {
                    Session::addToNavigateListItems('SoftwareLicense', $data['id']);
                    $expired = true;
                    if (is_null($data['expire']) || $data['expire'] > date('Y-m-d')) {
                        $expired = false;
                    }
                    echo "<tr class='tab_bg_2" . ($expired ? '_2' : '') . "'>";
                    if ($license->canEdit($data['id'])) {
                        echo "<td>" . Html::getMassiveActionCheckBox(__CLASS__, $data["id"]) . "</td>";
                    } else {
                        echo "<td>&nbsp;</td>";
                    }
                    echo "<td><a href='softwarelicense.form.php?id=" . $data['id'] . "'>" . $data['name'] . (empty($data['name']) ? "(" . $data['id'] . ")" : "") . "</a></td>";
                    if (isset($columns['entity'])) {
                        echo "<td>";
                        echo $data['entity'];
                        echo "</td>";
                    }
                    echo "<td>" . $data['serial'] . "</td>";
                    echo "<td class='numeric'>" . ($data['number'] > 0 ? $data['number'] : __('Unlimited')) . "</td>";
                    $nb_assoc = Computer_SoftwareLicense::countForLicense($data['id']);
                    $tot_assoc += $nb_assoc;
                    $color = $data['is_valid'] ? 'green' : 'red';
                    echo "<td class='numeric {$color}'>" . $nb_assoc . "</td>";
                    echo "<td>" . $data['typename'] . "</td>";
                    echo "<td>" . $data['buyname'] . "</td>";
                    echo "<td>" . $data['usename'] . "</td>";
                    echo "<td class='center'>" . Html::convDate($data['expire']) . "</td>";
                    echo "</tr>";
                    if ($data['number'] < 0) {
                        // One illimited license, total is illimited
                        $tot = -1;
                    } else {
                        if ($tot >= 0) {
                            // Expire license not count
                            if (!$expired) {
                                // Not illimited, add the current number
                                $tot += $data['number'];
                            }
                        }
                    }
                }
                echo "<tr class='tab_bg_1 noHover'>";
                echo "<td colspan='" . ($software->isRecursive() ? 4 : 3) . "' class='right b'>" . __('Total') . "</td>";
                echo "<td class='numeric'>" . ($tot > 0 ? $tot . "" : __('Unlimited')) . "</td>";
                $color = $software->fields['is_valid'] ? 'green' : 'red';
                echo "<td class='numeric {$color}'>" . $tot_assoc . "</td><td></td><td></td><td></td><td></td>";
                echo "</tr>";
                echo "</table>\n";
                if ($showmassiveactions) {
                    $massiveactionparams['ontop'] = false;
                    Html::showMassiveActions($massiveactionparams);
                    Html::closeForm();
                }
                Html::printAjaxPager(self::getTypeName(Session::getPluralNumber()), $start, $number);
            } else {
                echo "<table class='tab_cadre_fixe'><tr><th>" . __('No item found') . "</th></tr></table>";
            }
        }
        echo "</div>";
    }

Usage Example

コード例 #1
0
                break;
            case 5:
                Document::showAssociated($soft);
                break;
            case 6:
                Ticket::showListForItem('Software', $_POST["id"]);
                break;
            case 7:
                Link::showForItem('Software', $_POST["id"]);
                break;
            case 10:
                showNotesForm($_POST['target'], 'Software', $_POST["id"]);
                break;
            case 11:
                Reservation::showForItem('Software', $_POST["id"]);
                break;
            case 12:
                Log::showForItem($soft);
                break;
            case 21:
                $soft->showMergeCandidates();
                break;
            default:
                if (!Plugin::displayAction($soft, $_REQUEST['glpi_tab'])) {
                    SoftwareVersion::showForSoftware($soft);
                    SoftwareLicense::showForSoftware($soft);
                }
        }
    }
}
ajaxFooter();