/** * Show KB categories * * @param $options $_GET * * @return nothing (display the form) **/ static function showFirstLevel($options) { global $DB, $CFG_GLPI; $faq = !Session::haveRight("knowbase", READ); // Default values of parameters $params["knowbaseitemcategories_id"] = "0"; $params["target"] = KnowbaseItem::getSearchURL(); if (is_array($options) && count($options)) { foreach ($options as $key => $val) { $params[$key] = $val; } } $faq_limit = ''; $parameters = ''; // Manage search solution if (isset($options['item_itemtype']) && isset($options['item_items_id'])) { $parameters = "&item_items_id=" . $options['item_items_id'] . "&item_itemtype=" . $options['item_itemtype']; } if ($faq) { if (!$CFG_GLPI["use_public_faq"] && !Session::haveRight('knowbase', KnowbaseItem::READFAQ)) { return false; } if (Session::getLoginUserID()) { $faq_limit = getEntitiesRestrictRequest("AND", "glpi_knowbaseitemcategories", "", "", true); } else { // Anonymous access if (Session::isMultiEntitiesMode()) { $faq_limit = " AND (`glpi_knowbaseitemcategories`.`entities_id` = '0'\n AND `glpi_knowbaseitemcategories`.`is_recursive` = '1')"; } } // Get All FAQ categories if (!isset($_SESSION['glpi_faqcategories'])) { $_SESSION['glpi_faqcategories'] = '(0)'; $tmp = array(); $query = "SELECT DISTINCT `glpi_knowbaseitems`.`knowbaseitemcategories_id`\n FROM `glpi_knowbaseitems`\n " . KnowbaseItem::addVisibilityJoins() . "\n LEFT JOIN `glpi_knowbaseitemcategories`\n ON (`glpi_knowbaseitemcategories`.`id`\n = `glpi_knowbaseitems`.`knowbaseitemcategories_id`)\n WHERE `glpi_knowbaseitems`.`is_faq` = '1'\n AND " . KnowbaseItem::addVisibilityRestrict() . "\n {$faq_limit}"; if ($result = $DB->query($query)) { if ($DB->numrows($result)) { while ($data = $DB->fetch_assoc($result)) { if (!in_array($data['knowbaseitemcategories_id'], $tmp)) { $tmp[] = $data['knowbaseitemcategories_id']; $tmp = array_merge($tmp, getAncestorsOf('glpi_knowbaseitemcategories', $data['knowbaseitemcategories_id'])); } } } if (count($tmp)) { $_SESSION['glpi_faqcategories'] = "('" . implode("','", $tmp) . "')"; } } } $query = "SELECT DISTINCT `glpi_knowbaseitemcategories`.*\n FROM `glpi_knowbaseitemcategories`\n WHERE `glpi_knowbaseitemcategories`.`id` IN " . $_SESSION['glpi_faqcategories'] . "\n AND (`glpi_knowbaseitemcategories`.`knowbaseitemcategories_id`\n = '" . $params["knowbaseitemcategories_id"] . "')\n {$faq_limit}\n ORDER BY `name` ASC"; } else { if (!Session::haveRight("knowbase", READ)) { return false; } $faq_limit = getEntitiesRestrictRequest("AND", "glpi_knowbaseitemcategories", "entities_id", $_SESSION['glpiactiveentities'], true); $query = "SELECT *\n FROM `glpi_knowbaseitemcategories`\n WHERE `glpi_knowbaseitemcategories`.`knowbaseitemcategories_id`\n = '" . $params["knowbaseitemcategories_id"] . "'\n {$faq_limit}\n ORDER BY `name` ASC"; } // Show category if ($result = $DB->query($query)) { echo "<table class='tab_cadre_central'>"; echo "<tr><td colspan='3'><a href='" . $params['target'] . "?knowbaseitemcategories_id=0{$parameters}'>"; echo "<img alt='' src='" . $CFG_GLPI["root_doc"] . "/pics/folder-open.png' class='bottom'></a>"; // Display Category if ($params["knowbaseitemcategories_id"] != 0) { $tmpID = $params["knowbaseitemcategories_id"]; $todisplay = ""; while ($tmpID != 0) { $query2 = "SELECT *\n FROM `glpi_knowbaseitemcategories`\n WHERE `glpi_knowbaseitemcategories`.`id` = '{$tmpID}'\n {$faq_limit}"; $result2 = $DB->query($query2); if ($DB->numrows($result2) == 1) { $data = $DB->fetch_assoc($result2); $tmpID = $data["knowbaseitemcategories_id"]; $todisplay = "<a href='" . $params['target'] . "?knowbaseitemcategories_id=" . $data["id"] . "{$parameters}'>" . $data["name"] . "</a>" . (empty($todisplay) ? "" : " > ") . $todisplay; } else { $tmpID = 0; } } echo " > " . $todisplay; } if ($DB->numrows($result) > 0) { $i = 0; while ($row = $DB->fetch_assoc($result)) { // on affiche les résultats sur trois colonnes if ($i % 3 == 0) { echo "<tr>"; } $ID = $row["id"]; echo "<td class='tdkb_result'>"; echo "<img alt='' src='" . $CFG_GLPI["root_doc"] . "/pics/folder.png' hspace='5'>"; echo "<span class='b'>" . "<a href='" . $params['target'] . "?knowbaseitemcategories_id=" . $row["id"] . "{$parameters}'>" . $row["name"] . "</a></span>"; echo "<div class='kb_resume'>" . Html::resume_text($row['comment'], 60) . "</div>"; if ($i % 3 == 2) { echo "</tr>"; } $i++; } } echo "<tr><td colspan='3'> </td></tr></table><br>"; } }