Document_Item::showListForItem PHP Méthode

showListForItem() static public méthode

static public showListForItem ( CommonDBTM $item, $withtemplate = '', $options = [] )
$item CommonDBTM
$withtemplate (default '')
$options array
    static function showListForItem(CommonDBTM $item, $withtemplate = '', $options = array())
    {
        global $DB, $CFG_GLPI;
        //default options
        $params['rand'] = mt_rand();
        if (is_array($options) && count($options)) {
            foreach ($options as $key => $val) {
                $params[$key] = $val;
            }
        }
        $canedit = $item->canAddItem('Document') && Document::canView();
        $columns = array('name' => __('Name'), 'entity' => __('Entity'), 'filename' => __('File'), 'link' => __('Web link'), 'headings' => __('Heading'), 'mime' => __('MIME type'));
        if ($CFG_GLPI['use_rich_text']) {
            $columns['tag'] = __('Tag');
        }
        $columns['assocdate'] = __('Date');
        if (isset($_GET["order"]) && $_GET["order"] == "ASC") {
            $order = "ASC";
        } else {
            $order = "DESC";
        }
        if (isset($_GET["sort"]) && !empty($_GET["sort"]) && isset($columns[$_GET["sort"]])) {
            $sort = "`" . $_GET["sort"] . "`";
        } else {
            $sort = "`assocdate`";
        }
        if (empty($withtemplate)) {
            $withtemplate = 0;
        }
        $linkparam = '';
        if (get_class($item) == 'Ticket') {
            $linkparam = "&tickets_id=" . $item->fields['id'];
        }
        $query = "SELECT `glpi_documents_items`.`id` AS assocID,\n                       `glpi_documents_items`.`date_mod` AS assocdate,\n                       `glpi_entities`.`id` AS entityID,\n                       `glpi_entities`.`completename` AS entity,\n                       `glpi_documentcategories`.`completename` AS headings,\n                       `glpi_documents`.*\n                FROM `glpi_documents_items`\n                LEFT JOIN `glpi_documents`\n                          ON (`glpi_documents_items`.`documents_id`=`glpi_documents`.`id`)\n                LEFT JOIN `glpi_entities` ON (`glpi_documents`.`entities_id`=`glpi_entities`.`id`)\n                LEFT JOIN `glpi_documentcategories`\n                        ON (`glpi_documents`.`documentcategories_id`=`glpi_documentcategories`.`id`)\n                WHERE `glpi_documents_items`.`items_id` = '" . $item->getID() . "'\n                      AND `glpi_documents_items`.`itemtype` = '" . $item->getType() . "' ";
        if (Session::getLoginUserID()) {
            $query .= getEntitiesRestrictRequest(" AND", "glpi_documents", '', '', true);
        } else {
            // Anonymous access from FAQ
            $query .= " AND `glpi_documents`.`entities_id`= '0' ";
        }
        // Document : search links in both order using union
        if ($item->getType() == 'Document') {
            $query .= "UNION\n                    SELECT `glpi_documents_items`.`id` AS assocID,\n                           `glpi_documents_items`.`date_mod` AS assocdate,\n                           `glpi_entities`.`id` AS entityID,\n                           `glpi_entities`.`completename` AS entity,\n                           `glpi_documentcategories`.`completename` AS headings,\n                           `glpi_documents`.*\n                    FROM `glpi_documents_items`\n                    LEFT JOIN `glpi_documents`\n                        ON (`glpi_documents_items`.`items_id`=`glpi_documents`.`id`)\n                    LEFT JOIN `glpi_entities`\n                        ON (`glpi_documents`.`entities_id`=`glpi_entities`.`id`)\n                    LEFT JOIN `glpi_documentcategories`\n                        ON (`glpi_documents`.`documentcategories_id`=`glpi_documentcategories`.`id`)\n                    WHERE `glpi_documents_items`.`documents_id` = '" . $item->getID() . "'\n                          AND `glpi_documents_items`.`itemtype` = '" . $item->getType() . "' ";
            if (Session::getLoginUserID()) {
                $query .= getEntitiesRestrictRequest(" AND", "glpi_documents", '', '', true);
            } else {
                // Anonymous access from FAQ
                $query .= " AND `glpi_documents`.`entities_id`='0' ";
            }
        }
        $query .= " ORDER BY {$sort} {$order}";
        $result = $DB->query($query);
        $number = $DB->numrows($result);
        $i = 0;
        $documents = array();
        $used = array();
        if ($numrows = $DB->numrows($result)) {
            while ($data = $DB->fetch_assoc($result)) {
                $documents[$data['assocID']] = $data;
                $used[$data['id']] = $data['id'];
            }
        }
        echo "<div class='spaced'>";
        if ($canedit && $number && $withtemplate < 2) {
            Html::openMassiveActionsForm('mass' . __CLASS__ . $params['rand']);
            $massiveactionparams = array('num_displayed' => $number, 'container' => 'mass' . __CLASS__ . $params['rand']);
            Html::showMassiveActions($massiveactionparams);
        }
        $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>";
        $header_top = '';
        $header_bottom = '';
        $header_end = '';
        if ($canedit && $number && $withtemplate < 2) {
            $header_top .= "<th width='11'>" . Html::getCheckAllAsCheckbox('mass' . __CLASS__ . $params['rand']);
            $header_top .= "</th>";
            $header_bottom .= "<th width='11'>" . Html::getCheckAllAsCheckbox('mass' . __CLASS__ . $params['rand']);
            $header_bottom .= "</th>";
        }
        foreach ($columns as $key => $val) {
            $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>";
        echo $header_begin . $header_top . $header_end;
        $used = array();
        if ($number) {
            // Don't use this for document associated to document
            // To not loose navigation list for current document
            if ($item->getType() != 'Document') {
                Session::initNavigateListItems('Document', sprintf(__('%1$s = %2$s'), $item->getTypeName(1), $item->getName()));
            }
            $document = new Document();
            foreach ($documents as $data) {
                $docID = $data["id"];
                $link = NOT_AVAILABLE;
                $downloadlink = NOT_AVAILABLE;
                if ($document->getFromDB($docID)) {
                    $link = $document->getLink();
                    $downloadlink = $document->getDownloadLink($linkparam);
                }
                if ($item->getType() != 'Document') {
                    Session::addToNavigateListItems('Document', $docID);
                }
                $used[$docID] = $docID;
                $assocID = $data["assocID"];
                echo "<tr class='tab_bg_1" . ($data["is_deleted"] ? "_2" : "") . "'>";
                if ($canedit && $withtemplate < 2) {
                    echo "<td width='10'>";
                    Html::showMassiveActionCheckBox(__CLASS__, $data["assocID"]);
                    echo "</td>";
                }
                echo "<td class='center'>{$link}</td>";
                echo "<td class='center'>" . $data['entity'] . "</td>";
                echo "<td class='center'>{$downloadlink}</td>";
                echo "<td class='center'>";
                if (!empty($data["link"])) {
                    echo "<a target=_blank href='" . formatOutputWebLink($data["link"]) . "'>" . $data["link"];
                    echo "</a>";
                } else {
                    echo "&nbsp;";
                }
                echo "</td>";
                echo "<td class='center'>" . Dropdown::getDropdownName("glpi_documentcategories", $data["documentcategories_id"]);
                echo "</td>";
                echo "<td class='center'>" . $data["mime"] . "</td>";
                if ($CFG_GLPI['use_rich_text']) {
                    echo "<td class='center'>";
                    echo !empty($data["tag"]) ? Document::getImageTag($data["tag"]) : '';
                    echo "</td>";
                }
                echo "<td class='center'>" . Html::convDateTime($data["assocdate"]) . "</td>";
                echo "</tr>";
                $i++;
            }
            echo $header_begin . $header_bottom . $header_end;
        }
        echo "</table>";
        if ($canedit && $number && $withtemplate < 2) {
            $massiveactionparams['ontop'] = false;
            Html::showMassiveActions($massiveactionparams);
            Html::closeForm();
        }
        echo "</div>";
    }