public function showResult($output_type, $limit = 0) { global $DB; $arrayRet = $this->execQuery($_POST); $result = $arrayRet['query_result']; $query = $arrayRet['query']; $nbtot = $result ? $DB->numrows($result) : 0; if ($limit) { $start = isset($_GET["start"]) ? $_GET["start"] : 0; if ($start >= $nbtot) { $start = 0; } if ($start > 0 || $start + $limit < $nbtot) { $result = $DB->query($query . " LIMIT {$start},{$limit}"); } } else { $start = 0; } $nbCols = $DB->num_fields($result); $nbrows = $DB->numrows($result); $groupByRackName = true; if (isset($_POST['groupByRackName']) && $_POST['groupByRackName'] == "on") { $groupByRackName = false; } $title = date("d/m/Y H:i"); if ($nbtot == 0) { echo "<div class='center'><font class='red b'>" . __("No item found") . "</font></div>"; Html::footer(); } else { if ($output_type == Search::PDF_OUTPUT_LANDSCAPE || $output_type == Search::PDF_OUTPUT_PORTRAIT) { include GLPI_ROOT . "/lib/ezpdf/class.ezpdf.php"; } else { if ($output_type == Search::HTML_OUTPUT) { echo "<div class='center'><table class='tab_cadre_fixe'>"; echo "<tr class='tab_bg_1'><th>{$title}</th></tr>\n"; echo "<tr class='tab_bg_2 center'><td class='center'>"; echo "<form method='POST' action='" . $_SERVER["PHP_SELF"] . "?start={$start}' target='_blank'>\n"; $param = ""; foreach ($_POST as $key => $val) { if (is_array($val)) { foreach ($val as $k => $v) { echo "<input type='hidden' name='" . $key . "[{$k}]' value='{$v}' >"; if (!empty($param)) { $param .= "&"; } $param .= $key . "[" . $k . "]=" . urlencode($v); } } else { echo "<input type='hidden' name='{$key}' value='{$val}' >"; if (!empty($param)) { $param .= "&"; } $param .= "{$key}=" . urlencode($val); } } echo "<input type='hidden' name='result_search_reports' value='searchdone' >"; $param .= "&result_search_reports=searchdone&target=_blank"; Dropdown::showOutputFormat(); Html::closeForm(); echo "</td></tr>"; echo "</table></div>"; Html::printPager($start, $nbtot, $_SERVER['PHP_SELF'], $param); } } } if ($nbtot > 0) { if ($output_type == Search::HTML_OUTPUT) { echo "<form method='POST' action='" . $_SERVER["PHP_SELF"] . "?start={$start}'>\n"; } echo Search::showHeader($output_type, $nbrows, $nbCols, true); $showAllFieds = true; $listFields = array(); $cptField = 0; $showAllFieds = (!isset($_POST['cb_object_name']) || $_POST['cb_object_name'] != "on") && (!isset($_POST['cb_object_location']) || $_POST['cb_object_location'] != "on") && (!isset($_POST['cb_group']) || $_POST['cb_group'] != "on") && (!isset($_POST['cb_manufacturer']) || $_POST['cb_manufacturer'] != "on") && (!isset($_POST['cb_model']) || $_POST['cb_model'] != "on") && (!isset($_POST['cb_serial_number']) || $_POST['cb_serial_number'] != "on"); $num = 1; $cptRow = 1; if (!$showAllFieds) { $this->showTitle($output_type, $num, __("Bay name", "racks"), 'name', false); $cptField++; $this->showTitle($output_type, $num, _n("Place", "Places", 1, "racks"), 'location', false); $cptField++; $this->showTitle($output_type, $num, _n("Location", "Locations", 1, "racks"), 'roomlocation', false); $cptField++; $this->showTitle($output_type, $num, __("U", "racks"), 'u', false); $cptField++; $this->showTitle($output_type, $num, __("Front", "racks") . " / " . __("Back", "racks"), 'front_rear', false); $cptField++; if (isset($_POST['cb_object_name']) && $_POST['cb_object_name'] == "on") { $listFields['object_name'] = $_POST['cb_object_name']; $this->showTitle($output_type, $num, __("Object name", "racks"), 'object_name', false); $cptField++; } // Lieu if (isset($_POST['cb_object_location']) && $_POST['cb_object_location'] == "on") { $listFields['object_location'] = $_POST['cb_object_location']; $this->showTitle($output_type, $num, __("Object location", "racks"), 'object_location', false); $cptField++; } // Groupe if (isset($_POST['cb_group']) && $_POST['cb_group'] == "on") { $listFields['group'] = $_POST['cb_group']; $this->showTitle($output_type, $num, __("Group"), 'roomlocation', false); $cptField++; } // Fabricant if (isset($_POST['cb_manufacturer']) && $_POST['cb_manufacturer'] == "on") { $listFields['manufacturer'] = $_POST['cb_manufacturer']; $this->showTitle($output_type, $num, __("Manufacturer"), 'manufacturer', false); $cptField++; } // Modèle if (isset($_POST['cb_model']) && $_POST['cb_model'] == "on") { $listFields['model'] = $_POST['cb_model']; $this->showTitle($output_type, $num, __("Model"), 'model', false); $cptField++; } // Numéro de série if (isset($_POST['cb_serial_number']) && $_POST['cb_serial_number'] == "on") { $listFields['serial_number'] = $_POST['cb_serial_number']; $this->showTitle($output_type, $num, __("Serial number", "racks"), 'group', false); $cptField++; } } else { $this->showTitle($output_type, $num, __("Bay name", "racks"), 'rack_name', false); $listFields['rack_name'] = true; $this->showTitle($output_type, $num, __("Place", "racks"), 'location', false); $listFields['location'] = true; $this->showTitle($output_type, $num, __("Location", "racks"), 'roomlocation', false); $listFields['roomlocation'] = true; $this->showTitle($output_type, $num, __("U", "racks"), 'u', false); $listFields['u'] = true; $this->showTitle($output_type, $num, __("Front", "racks") . " / " . __("Back", "racks"), 'front_rear', false); $listFields['front_rear'] = true; $this->showTitle($output_type, $num, __("Object name", "racks"), 'object_name', false); $listFields['object_name'] = true; $this->showTitle($output_type, $num, __("Object location", "racks"), 'object_location', false); $listFields['object_location'] = true; $this->showTitle($output_type, $num, __("Group"), false); $listFields['group'] = true; $this->showTitle($output_type, $num, __("Type"), 'type', false); $listFields['type'] = true; $this->showTitle($output_type, $num, __("Manufacturer"), 'manufacturer', false); $listFields['manufacturer'] = true; $this->showTitle($output_type, $num, __("Model"), 'model', false); $listFields['model'] = true; $this->showTitle($output_type, $num, __("Serial number", "racks"), 'serial_number', false); $listFields['serial_number'] = true; $this->showTitle($output_type, $num, __("Inventory number"), 'other_serial', false); $listFields['other_serial'] = true; $cptField = 13; } echo Search::showEndLine($output_type); $num = 1; $currentRack = -1; while ($row = $DB->fetch_array($result)) { // itemtype $itemtype = $row['itemtype']; $num = 1; $cptRow++; echo Search::showNewLine($output_type); if (isset($row['itemtype']) && $row['itemtype'] != "") { $class = substr($itemtype, 0, -5); $item = new $class(); $table = getTableForItemType($class); $r = $DB->query("SELECT * FROM `" . $table . "` WHERE `id` = '" . $row["items_id"] . "' "); $device = $DB->fetch_array($r); } // nom $link = Toolbox::getItemTypeFormURL("PluginRacksRack"); if ($groupByRackName || $currentRack != $row['id']) { if ($output_type == Search::HTML_OUTPUT) { echo Search::showItem($output_type, "<a href=\"" . $link . "?id=" . $row["id"] . "\">" . $row["name"] . "</a>", $num, $cptRow); } else { echo Search::showItem($output_type, $row["name"], $num, $cptRow); } } else { echo Search::showItem($output_type, " ", $num, $cptRow); } // lieu if ($groupByRackName || $currentRack != $row['id']) { $tmpId = $row['locations_id']; $tmpObj = new Location(); $tmpObj->getFromDB($tmpId); if (isset($tmpObj->fields['name'])) { echo Search::showItem($output_type, $tmpObj->fields['name'], $num, $cptRow); } else { echo Search::showItem($output_type, " ", $num, $cptRow); } } else { echo Search::showItem($output_type, " ", $num, $cptRow); } // Emplacement if ($groupByRackName || $currentRack != $row['id']) { $tmpId = $row['plugin_racks_roomlocations_id']; $tmpObj = new PluginRacksRoomLocation(); $tmpObj->getFromDB($tmpId); if (isset($tmpObj->fields['name'])) { echo Search::showItem($output_type, $tmpObj->fields['name'], $num, $cptRow); } else { echo Search::showItem($output_type, ' ', $num, $cptRow); } } else { echo Search::showItem($output_type, " ", $num, $cptRow); } if (isset($row['itemtype']) && $row['itemtype'] != "") { // U if (isset($row['position']) && $row['position'] != "") { echo Search::showItem($output_type, $row['position'], $num, $cptRow); } else { echo Search::showItem($output_type, " ", $num, $cptRow); } // avant / arrière if ($row['faces_id'] == 1) { echo Search::showItem($output_type, __("Front", "racks"), $num, $cptRow); } else { echo Search::showItem($output_type, __("Back", "racks"), $num, $cptRow); } // Nom de l'objet if (array_key_exists("object_name", $listFields)) { $link = Toolbox::getItemTypeFormURL(substr($itemtype, 0, -5)); if ($itemtype != 'PluginRacksOtherModel') { if ($output_type == Search::HTML_OUTPUT) { echo Search::showItem($output_type, "<a href=\"" . $link . "?id=" . $row["items_id"] . "\">" . $device["name"] . "</a>", $num, $cptRow); } else { echo Search::showItem($output_type, $device["name"], $num, $cptRow); } } else { echo Search::showItem($output_type, $device["name"], $num, $cptRow); } } // Lieu de l'objet if (array_key_exists("object_location", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_locations", $device["locations_id"]), $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // Groupe if (array_key_exists("group", $listFields)) { // Groupe if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_groups", $device["groups_id_tech"]), $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // type if (array_key_exists("type", $listFields)) { echo Search::showItem($output_type, $item->getTypeName(), $num, $cptRow); } // fabricant if (array_key_exists("manufacturer", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_manufacturers", $device["manufacturers_id"]), $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // modèle //TODO = model du rack => model des objets if (array_key_exists("model", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { $model_table = getTableForItemType($itemtype); $modelfield = getForeignKeyFieldForTable(getTableForItemType($itemtype)); echo Search::showItem($output_type, Dropdown::getDropdownName($model_table, $device[$modelfield]), $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // numéro de série if (array_key_exists("serial_number", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, $device['serial'], $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } // numéro d'inventaire if (array_key_exists("other_serial", $listFields)) { if ($itemtype != 'PluginRacksOtherModel') { echo Search::showItem($output_type, $device['otherserial'], $num, $cptRow); } else { echo Search::showItem($output_type, Dropdown::EMPTY_VALUE, $num, $cptRow); } } $currentRack = $row['id']; } else { for ($k = 0; $k < $cptField - 3; $k++) { echo Search::showItem($output_type, " ", $num, $cptRow, ""); } } echo Search::showEndLine($output_type); } if ($output_type == Search::HTML_OUTPUT) { Html::closeForm(); } echo Search::showFooter($output_type, $title); } }
function showMinimalList($params) { global $DB, $CFG_GLPI; // Instanciate an object to access method $item = NULL; $itemtype = $this->getType(); $itemtable = $this->getTable(); if (class_exists($itemtype)) { $item = new $itemtype(); } // Default values of parameters $p['link'] = array(); // $p['field'] = array(); // $p['contains'] = array(); // $p['searchtype'] = array(); // $p['sort'] = '1'; // $p['order'] = 'ASC'; // $p['start'] = 0; // $p['is_deleted'] = 0; $p['export_all'] = 0; $p['link2'] = ''; // $p['contains2'] = ''; // $p['field2'] = ''; // $p['itemtype2'] = ''; $p['searchtype2'] = ''; foreach ($params as $key => $val) { $p[$key] = $val; } if ($p['export_all']) { $p['start'] = 0; } // Manage defautlt seachtype value : for bookmark compatibility if (count($p['contains'])) { foreach ($p['contains'] as $key => $val) { if (!isset($p['searchtype'][$key])) { $p['searchtype'][$key] = 'contains'; } } } if (is_array($p['contains2']) && count($p['contains2'])) { foreach ($p['contains2'] as $key => $val) { if (!isset($p['searchtype2'][$key])) { $p['searchtype2'][$key] = 'contains'; } } } //$target = Toolbox::getItemTypeSearchURL($itemtype); $target = $CFG_GLPI["root_doc"] . "/plugins/resources/front/resourceresting.php"; $limitsearchopt = Search::getCleanedOptions("PluginResourcesResourceResting"); $LIST_LIMIT = $_SESSION['glpilist_limit']; // Set display type for export if define $output_type = Search::HTML_OUTPUT; if (isset($_GET['display_type'])) { $output_type = $_GET['display_type']; // Limit to 10 element if ($_GET['display_type'] == Search::GLOBAL_SEARCH) { $LIST_LIMIT = Search::GLOBAL_DISPLAY_COUNT; } } $PluginResourcesResource = new PluginResourcesResource(); $entity_restrict = $PluginResourcesResource->isEntityAssign(); // Get the items to display $toview = Search::addDefaultToView($itemtype); // Add items to display depending of personal prefs $displaypref = DisplayPreference::getForTypeUser("PluginResourcesResourceResting", Session::getLoginUserID()); if (count($displaypref)) { foreach ($displaypref as $val) { array_push($toview, $val); } } // Add searched items if (count($p['field']) > 0) { foreach ($p['field'] as $key => $val) { if (!in_array($val, $toview) && $val != 'all' && $val != 'view') { array_push($toview, $val); } } } // Add order item if (!in_array($p['sort'], $toview)) { array_push($toview, $p['sort']); } // Clean toview array $toview = array_unique($toview); foreach ($toview as $key => $val) { if (!isset($limitsearchopt[$val])) { unset($toview[$key]); } } $toview_count = count($toview); //// 1 - SELECT $query = "SELECT " . Search::addDefaultSelect($itemtype); // Add select for all toview item foreach ($toview as $key => $val) { $query .= Search::addSelect($itemtype, $val, $key, 0); } $query .= "`" . $itemtable . "`.`id` AS id "; //// 2 - FROM AND LEFT JOIN // Set reference table $query .= " FROM `" . $itemtable . "`"; // Init already linked tables array in order not to link a table several times $already_link_tables = array(); // Put reference table array_push($already_link_tables, $itemtable); // Add default join $COMMONLEFTJOIN = Search::addDefaultJoin($itemtype, $itemtable, $already_link_tables); $query .= $COMMONLEFTJOIN; $searchopt = array(); $searchopt[$itemtype] =& Search::getOptions($itemtype); // Add all table for toview items foreach ($toview as $key => $val) { $query .= Search::addLeftJoin($itemtype, $itemtable, $already_link_tables, $searchopt[$itemtype][$val]["table"], $searchopt[$itemtype][$val]["linkfield"]); } // Search all case : if (in_array("all", $p['field'])) { foreach ($searchopt[$itemtype] as $key => $val) { // Do not search on Group Name if (is_array($val)) { $query .= Search::addLeftJoin($itemtype, $itemtable, $already_link_tables, $searchopt[$itemtype][$key]["table"], $searchopt[$itemtype][$key]["linkfield"]); } } } //// 3 - WHERE // default string $COMMONWHERE = Search::addDefaultWhere($itemtype); $first = empty($COMMONWHERE); // Add deleted if item have it if ($item && $item->maybeDeleted()) { $LINK = " AND "; if ($first) { $LINK = " "; $first = false; } $COMMONWHERE .= $LINK . "`{$itemtable}`.`is_deleted` = '" . $p['is_deleted'] . "' "; } // Remove template items if ($item && $item->maybeTemplate()) { $LINK = " AND "; if ($first) { $LINK = " "; $first = false; } $COMMONWHERE .= $LINK . "`{$itemtable}`.`is_template` = '0' "; } // Add Restrict to current entities if ($entity_restrict) { $LINK = " AND "; if ($first) { $LINK = " "; $first = false; } if ($itemtype == 'Entity') { $COMMONWHERE .= getEntitiesRestrictRequest($LINK, $itemtable, 'id', '', true); } else { if (isset($CFG_GLPI["union_search_type"]["PluginResourcesResource"])) { // Will be replace below in Union/Recursivity Hack $COMMONWHERE .= $LINK . " ENTITYRESTRICT "; } else { $COMMONWHERE .= getEntitiesRestrictRequest($LINK, "glpi_plugin_resources_resources", '', '', $PluginResourcesResource->maybeRecursive()); } } } ///R�cup�ration des groupes de l'utilisateur connect� $who = Session::getLoginUserID(); if (!plugin_resources_haveRight("all", "r")) { $LINK = " AND "; if ($first) { $LINK = " "; $first = false; } $COMMONWHERE .= $LINK . "(`glpi_plugin_resources_resources`.`users_id_recipient` = '{$who}' OR `glpi_plugin_resources_resources`.`users_id` = '{$who}') "; } $WHERE = ""; $HAVING = ""; // Add search conditions // If there is search items if ($_SESSION["glpisearchcount"][$itemtype] > 0 && count($p['contains']) > 0) { for ($key = 0; $key < $_SESSION["glpisearchcount"][$itemtype]; $key++) { // if real search (strlen >0) and not all and view search if (isset($p['contains'][$key]) && strlen($p['contains'][$key]) > 0) { // common search if ($p['field'][$key] != "all" && $p['field'][$key] != "view") { $LINK = " "; $NOT = 0; $tmplink = ""; if (is_array($p['link']) && isset($p['link'][$key])) { if (strstr($p['link'][$key], "NOT")) { $tmplink = " " . str_replace(" NOT", "", $p['link'][$key]); $NOT = 1; } else { $tmplink = " " . $p['link'][$key]; } } else { $tmplink = " AND "; } if (isset($searchopt[$itemtype][$p['field'][$key]]["usehaving"])) { // Manage Link if not first item if (!empty($HAVING)) { $LINK = $tmplink; } // Find key $item_num = array_search($p['field'][$key], $toview); $HAVING .= Search::addHaving($LINK, $NOT, $itemtype, $p['field'][$key], $p['searchtype'][$key], $p['contains'][$key], 0, $item_num); } else { // Manage Link if not first item if (!empty($WHERE)) { $LINK = $tmplink; } $WHERE .= Search::addWhere($LINK, $NOT, $itemtype, $p['field'][$key], $p['searchtype'][$key], $p['contains'][$key]); } // view and all search } else { $LINK = " OR "; $NOT = 0; $globallink = " AND "; if (is_array($p['link']) && isset($p['link'][$key])) { switch ($p['link'][$key]) { case "AND": $LINK = " OR "; $globallink = " AND "; break; case "AND NOT": $LINK = " AND "; $NOT = 1; $globallink = " AND "; break; case "OR": $LINK = " OR "; $globallink = " OR "; break; case "OR NOT": $LINK = " AND "; $NOT = 1; $globallink = " OR "; break; } } else { $tmplink = " AND "; } // Manage Link if not first item if (!empty($WHERE)) { $WHERE .= $globallink; } $WHERE .= " ( "; $first2 = true; $items = array(); if ($p['field'][$key] == "all") { $items = $searchopt[$itemtype]; } else { // toview case : populate toview foreach ($toview as $key2 => $val2) { $items[$val2] = $searchopt[$itemtype][$val2]; } } foreach ($items as $key2 => $val2) { if (is_array($val2)) { // Add Where clause if not to be done in HAVING CLAUSE if (!isset($val2["usehaving"])) { $tmplink = $LINK; if ($first2) { $tmplink = " "; $first2 = false; } $WHERE .= Search::addWhere($tmplink, $NOT, $itemtype, $key2, $p['searchtype'][$key], $p['contains'][$key]); } } } $WHERE .= " ) "; } } } } if (!empty($WHERE) || !empty($COMMONWHERE)) { if (!empty($COMMONWHERE)) { $WHERE = ' WHERE ' . $COMMONWHERE . (!empty($WHERE) ? ' AND ( ' . $WHERE . ' )' : ''); } else { $WHERE = ' WHERE ' . $WHERE . ' '; } $first = false; } $query .= $WHERE; //// 7 - Manage GROUP BY $GROUPBY = ""; // Meta Search / Search All / Count tickets if (in_array('all', $p['field'])) { $GROUPBY = " GROUP BY `" . $itemtable . "`.`id`"; } if (empty($GROUPBY)) { foreach ($toview as $key2 => $val2) { if (!empty($GROUPBY)) { break; } if (isset($searchopt[$itemtype][$val2]["forcegroupby"])) { $GROUPBY = " GROUP BY `" . $itemtable . "`.`id`"; } } } $query .= $GROUPBY; //// 4 - ORDER $ORDER = " ORDER BY `id` "; foreach ($toview as $key => $val) { if ($p['sort'] == $val) { $ORDER = Search::addOrderBy($itemtype, $p['sort'], $p['order'], $key); } } $query .= $ORDER; // Get it from database if ($result = $DB->query($query)) { $numrows = $DB->numrows($result); $globallinkto = Search::getArrayUrlLink("field", $p['field']) . Search::getArrayUrlLink("link", $p['link']) . Search::getArrayUrlLink("contains", $p['contains']) . Search::getArrayUrlLink("field2", $p['field2']) . Search::getArrayUrlLink("contains2", $p['contains2']) . Search::getArrayUrlLink("itemtype2", $p['itemtype2']) . Search::getArrayUrlLink("link2", $p['link2']); $parameters = "sort=" . $p['sort'] . "&order=" . $p['order'] . $globallinkto; if ($output_type == Search::GLOBAL_SEARCH) { if (class_exists($itemtype)) { echo "<div class='center'><h2>" . $this->getTypeName(); // More items if ($numrows > $p['start'] + Search::GLOBAL_DISPLAY_COUNT) { echo " <a href='{$target}?{$parameters}'>" . __('All') . "</a>"; } echo "</h2></div>\n"; } else { return false; } } if ($p['start'] < $numrows) { // Pager if ($output_type == Search::HTML_OUTPUT) { Html::printPager($p['start'], $numrows, $target, $parameters, $itemtype); } //massive action $sel = ""; if (isset($_GET["select"]) && $_GET["select"] == "all") { $sel = "checked"; } // Add toview elements $nbcols = $toview_count; if ($output_type == Search::HTML_OUTPUT) { // HTML display - massive modif $nbcols++; } // Define begin and end var for loop // Search case $begin_display = $p['start']; $end_display = $p['start'] + $LIST_LIMIT; // Export All case if ($p['export_all']) { $begin_display = 0; $end_display = $numrows; } // Display List Header echo Search::showHeader($output_type, $end_display - $begin_display + 1, $nbcols); $header_num = 1; // Display column Headers for toview items echo Search::showNewLine($output_type); // Display column Headers for toview items foreach ($toview as $key => $val) { $linkto = ''; if (!isset($searchopt[$itemtype][$val]['nosort']) || !$searchopt[$itemtype][$val]['nosort']) { $linkto = "{$target}?itemtype={$itemtype}&sort=" . $val . "&order=" . ($p['order'] == "ASC" ? "DESC" : "ASC") . "&start=" . $p['start'] . $globallinkto; } echo Search::showHeaderItem($output_type, $searchopt[$itemtype][$val]["name"], $header_num, $linkto, $p['sort'] == $val, $p['order']); } // End Line for column headers echo Search::showEndLine($output_type); $DB->data_seek($result, $p['start']); // Define begin and end var for loop // Search case $i = $begin_display; // Init list of items displayed if ($output_type == Search::HTML_OUTPUT) { Session::initNavigateListItems($itemtype); } // Num of the row (1=header_line) $row_num = 1; // Display Loop while ($i < $numrows && $i < $end_display) { $item_num = 1; $data = $DB->fetch_array($result); $i++; $row_num++; echo Search::showNewLine($output_type, $i % 2); Session::addToNavigateListItems($itemtype, $data['id']); foreach ($toview as $key => $val) { echo Search::showItem($output_type, Search::giveItem($itemtype, $val, $data, $key), $item_num, $row_num, Search::displayConfigItem($itemtype, $val, $data, $key)); } echo Search::showEndLine($output_type); } // Close Table $title = ""; // Create title if ($output_type == Search::PDF_OUTPUT_PORTRAIT || $output_type == Search::PDF_OUTPUT_LANDSCAPE) { $title .= __('List of non contract periods', 'resources'); } // Display footer echo Search::showFooter($output_type, $title); // Pager if ($output_type == Search::HTML_OUTPUT) { echo "<br>"; Html::printPager($p['start'], $numrows, $target, $parameters); } } else { echo Search::showError($output_type); } } }
function showDocItem($output_type, $item_num, $row_num, $documents_id = null) { $doc = new document(); if ($doc->getFromDB($documents_id)) { return Search::showItem($output_type, $doc->getDownloadLink(), $item_num, $row_num); } return Search::showItem($output_type, "", $item_num, $row_num); }
function showItem($output_type, $otherSerial, $item_num, $row_num) { return Search::showItem($output_type, $otherSerial, $item_num, $row_num); }
/** * Print out list kb item * * @param $options $_GET * @param $type string search type : browse / search (default search) **/ static function showList($options, $type = 'search') { global $DB, $CFG_GLPI; // Default values of parameters $params['faq'] = !Session::haveRight("knowbase", "r"); $params["start"] = "0"; $params["knowbaseitemcategories_id"] = "0"; $params["contains"] = ""; $params["target"] = $_SERVER['PHP_SELF']; if (is_array($options) && count($options)) { foreach ($options as $key => $val) { $params[$key] = $val; } } $ki = new self(); switch ($type) { case 'myunpublished': if (!Session::haveRight('knowbase', 'w') && !Session::haveRight('faq', 'w')) { return false; } break; case 'allunpublished': if (!Session::haveRight('knowbase_admin', 1)) { return false; } break; default: break; } if (!$params["start"]) { $params["start"] = 0; } $query = self::getListRequest($params, $type); // Get it from database if ($result = $DB->query($query)) { $KbCategory = new KnowbaseItemCategory(); $title = ""; if ($KbCategory->getFromDB($params["knowbaseitemcategories_id"])) { $title = empty($KbCategory->fields['name']) ? "(" . $params['knowbaseitemcategories_id'] . ")" : $KbCategory->fields['name']; $title = sprintf(__('%1$s: %2$s'), __('Category'), $title); } Session::initNavigateListItems('KnowbaseItem', $title); $numrows = $DB->numrows($result); $list_limit = $_SESSION['glpilist_limit']; $showwriter = in_array($type, array('myunpublished', 'allunpublished', 'allmy')); // Limit the result, if no limit applies, use prior result if ($numrows > $list_limit && !isset($_GET['export_all'])) { $query_limit = $query . " LIMIT " . intval($params["start"]) . ", " . intval($list_limit) . " "; $result_limit = $DB->query($query_limit); $numrows_limit = $DB->numrows($result_limit); } else { $numrows_limit = $numrows; $result_limit = $result; } if ($numrows_limit > 0) { // Set display type for export if define $output_type = Search::HTML_OUTPUT; if (isset($_GET["display_type"])) { $output_type = $_GET["display_type"]; } // Pager $parameters = "start=" . $params["start"] . "&knowbaseitemcategories_id=" . $params['knowbaseitemcategories_id'] . "&contains=" . $params["contains"] . "&is_faq=" . $params['faq']; if (isset($options['item_itemtype']) && isset($options['item_items_id'])) { $parameters .= "&item_items_id=" . $options['item_items_id'] . "&item_itemtype=" . $options['item_itemtype']; } if ($output_type == Search::HTML_OUTPUT) { Html::printPager($params['start'], $numrows, Toolbox::getItemTypeSearchURL('KnowbaseItem'), $parameters, 'KnowbaseItem'); } $nbcols = 1; // Display List Header echo Search::showHeader($output_type, $numrows_limit + 1, $nbcols); $header_num = 1; echo Search::showHeaderItem($output_type, __('Subject'), $header_num); if ($output_type != Search::HTML_OUTPUT) { echo Search::showHeaderItem($output_type, __('Content'), $header_num); } if ($showwriter) { echo Search::showHeaderItem($output_type, __('Writer'), $header_num); } echo Search::showHeaderItem($output_type, __('Category'), $header_num); if (isset($options['item_itemtype']) && isset($options['item_items_id']) && $output_type == Search::HTML_OUTPUT) { echo Search::showHeaderItem($output_type, ' ', $header_num); } // Num of the row (1=header_line) $row_num = 1; for ($i = 0; $i < $numrows_limit; $i++) { $data = $DB->fetch_assoc($result_limit); Session::addToNavigateListItems('KnowbaseItem', $data["id"]); // Column num $item_num = 1; $row_num++; echo Search::showNewLine($output_type, $i % 2); if ($output_type == Search::HTML_OUTPUT) { if (isset($options['item_itemtype']) && isset($options['item_items_id'])) { $href = " href='#' onClick=\"var w = window.open('" . $CFG_GLPI["root_doc"] . "/front/popup.php?popup=show_kb&id=" . $data['id'] . "' ,'glpipopup', " . "'height=400, width=1000, top=100, left=100, scrollbars=yes' );" . "w.focus();\""; } else { $href = " href=\"" . $CFG_GLPI['root_doc'] . "/front/knowbaseitem.form.php?id=" . $data["id"] . "\" "; } echo Search::showItem($output_type, "<div class='kb'><a " . ($data['is_faq'] ? " class='pubfaq' " : " class='knowbase' ") . " {$href}>" . Html::resume_text($data["name"], 80) . "</a></div>\n <div class='kb_resume'>" . Html::resume_text(Html::clean(Toolbox::unclean_cross_side_scripting_deep($data["answer"])), 600) . "</div>", $item_num, $row_num); } else { echo Search::showItem($output_type, $data["name"], $item_num, $row_num); echo Search::showItem($output_type, Html::clean(Toolbox::unclean_cross_side_scripting_deep(html_entity_decode($data["answer"], ENT_QUOTES, "UTF-8"))), $item_num, $row_num); } if ($showwriter) { echo Search::showItem($output_type, getUserName($data["users_id"], 1), $item_num, $row_num); } $categ = $data["category"]; if ($output_type == Search::HTML_OUTPUT) { $cathref = $ki->getSearchURL() . "?knowbaseitemcategories_id=" . $data["knowbaseitemcategories_id"] . '&forcetab=Knowbase$2'; $categ = "<a href='{$cathref}'>" . $categ . '</a>'; } echo Search::showItem($output_type, $categ, $item_num, $row_num); if (isset($options['item_itemtype']) && isset($options['item_items_id']) && $output_type == Search::HTML_OUTPUT) { $content = "<a href='" . Toolbox::getItemTypeFormURL($options['item_itemtype']) . "?load_kb_sol=" . $data['id'] . "&id=" . $options['item_items_id'] . "&forcetab=" . $options['item_itemtype'] . "\$2'>" . __('Use as a solution') . "</a>"; echo Search::showItem($output_type, $content, $item_num, $row_num); } // End Line echo Search::showEndLine($output_type); } // Display footer if ($output_type == Search::PDF_OUTPUT_LANDSCAPE || $output_type == Search::PDF_OUTPUT_PORTRAIT) { echo Search::showFooter($output_type, Dropdown::getDropdownName("glpi_knowbaseitemcategories", $params['knowbaseitemcategories_id'])); } else { echo Search::showFooter($output_type); } echo "<br>"; if ($output_type == Search::HTML_OUTPUT) { Html::printPager($params['start'], $numrows, Toolbox::getItemTypeSearchURL('KnowbaseItem'), $parameters, 'KnowbaseItem'); } } else { echo "<div class='center b'>" . __('No item found') . "</div>"; } } }
/** * Print out list kb item * * @param $options $_GET * @param $type string search type : browse / search (default search) **/ static function showList($options, $type = 'search') { global $DB, $CFG_GLPI; // Default values of parameters $params['faq'] = !Session::haveRight(self::$rightname, READ); $params["start"] = "0"; $params["knowbaseitemcategories_id"] = "0"; $params["contains"] = ""; $params["target"] = $_SERVER['PHP_SELF']; if (is_array($options) && count($options)) { foreach ($options as $key => $val) { $params[$key] = $val; } } $ki = new self(); switch ($type) { case 'myunpublished': if (!Session::haveRightsOr(self::$rightname, array(UPDATE, self::PUBLISHFAQ))) { return false; } break; case 'allunpublished': if (!Session::haveRight(self::$rightname, self::KNOWBASEADMIN)) { return false; } break; default: break; } if (!$params["start"]) { $params["start"] = 0; } $query = self::getListRequest($params, $type); // Get it from database if ($result = $DB->query($query)) { $KbCategory = new KnowbaseItemCategory(); $title = ""; if ($KbCategory->getFromDB($params["knowbaseitemcategories_id"])) { $title = empty($KbCategory->fields['name']) ? "(" . $params['knowbaseitemcategories_id'] . ")" : $KbCategory->fields['name']; $title = sprintf(__('%1$s: %2$s'), __('Category'), $title); } Session::initNavigateListItems('KnowbaseItem', $title); $numrows = $DB->numrows($result); $list_limit = $_SESSION['glpilist_limit']; $showwriter = in_array($type, array('myunpublished', 'allunpublished', 'allmy')); // Limit the result, if no limit applies, use prior result if ($numrows > $list_limit && !isset($_GET['export_all'])) { $query_limit = $query . " LIMIT " . intval($params["start"]) . ", " . intval($list_limit) . " "; $result_limit = $DB->query($query_limit); $numrows_limit = $DB->numrows($result_limit); } else { $numrows_limit = $numrows; $result_limit = $result; } if ($numrows_limit > 0) { // Set display type for export if define $output_type = Search::HTML_OUTPUT; if (isset($_GET["display_type"])) { $output_type = $_GET["display_type"]; } // Pager $parameters = "start=" . $params["start"] . "&knowbaseitemcategories_id=" . $params['knowbaseitemcategories_id'] . "&contains=" . $params["contains"] . "&is_faq=" . $params['faq']; if (isset($options['item_itemtype']) && isset($options['item_items_id'])) { $parameters .= "&item_items_id=" . $options['item_items_id'] . "&item_itemtype=" . $options['item_itemtype']; } if ($output_type == Search::HTML_OUTPUT) { Html::printPager($params['start'], $numrows, Toolbox::getItemTypeSearchURL('KnowbaseItem'), $parameters, 'KnowbaseItem'); } $nbcols = 1; // Display List Header echo Search::showHeader($output_type, $numrows_limit + 1, $nbcols); echo Search::showNewLine($output_type); $header_num = 1; echo Search::showHeaderItem($output_type, __('Subject'), $header_num); if ($output_type != Search::HTML_OUTPUT) { echo Search::showHeaderItem($output_type, __('Content'), $header_num); } if ($showwriter) { echo Search::showHeaderItem($output_type, __('Writer'), $header_num); } echo Search::showHeaderItem($output_type, __('Category'), $header_num); if (isset($options['item_itemtype']) && isset($options['item_items_id']) && $output_type == Search::HTML_OUTPUT) { echo Search::showHeaderItem($output_type, ' ', $header_num); } // Num of the row (1=header_line) $row_num = 1; for ($i = 0; $i < $numrows_limit; $i++) { $data = $DB->fetch_assoc($result_limit); Session::addToNavigateListItems('KnowbaseItem', $data["id"]); // Column num $item_num = 1; $row_num++; echo Search::showNewLine($output_type, $i % 2); $item = new self(); $item->getFromDB($data["id"]); $name = $data["name"]; $answer = $data["answer"]; // Manage translations if (isset($data['transname']) && !empty($data['transname'])) { $name = $data["transname"]; } if (isset($data['transanswer']) && !empty($data['transanswer'])) { $answer = $data["transanswer"]; } if ($output_type == Search::HTML_OUTPUT) { $toadd = ''; if (isset($options['item_itemtype']) && isset($options['item_items_id'])) { $href = " href='#' onClick=\"" . Html::jsGetElementbyID('kbshow' . $data["id"]) . ".dialog('open');\""; $toadd = Ajax::createIframeModalWindow('kbshow' . $data["id"], $CFG_GLPI["root_doc"] . "/front/knowbaseitem.form.php?id=" . $data["id"], array('display' => false)); } else { $href = " href=\"" . $CFG_GLPI['root_doc'] . "/front/knowbaseitem.form.php?id=" . $data["id"] . "\" "; } echo Search::showItem($output_type, "<div class='kb'>{$toadd}<a " . ($data['is_faq'] ? " class='pubfaq' title='" . __("This item is part of the FAQ") . "' " : " class='knowbase' ") . " {$href}>" . Html::resume_text($name, 80) . "</a></div>\n <div class='kb_resume'>" . Html::resume_text(Html::clean(Toolbox::unclean_cross_side_scripting_deep($answer)), 600) . "</div>", $item_num, $row_num); } else { echo Search::showItem($output_type, $name, $item_num, $row_num); echo Search::showItem($output_type, Html::clean(Toolbox::unclean_cross_side_scripting_deep(html_entity_decode($answer, ENT_QUOTES, "UTF-8"))), $item_num, $row_num); } $showuserlink = 0; if (Session::haveRight('user', READ)) { $showuserlink = 1; } if ($showwriter) { echo Search::showItem($output_type, getUserName($data["users_id"], $showuserlink), $item_num, $row_num); } $categ = $data["category"]; if ($output_type == Search::HTML_OUTPUT) { $cathref = $ki->getSearchURL() . "?knowbaseitemcategories_id=" . $data["knowbaseitemcategories_id"] . '&forcetab=Knowbase$2'; $categ = "<a href='{$cathref}'>" . $categ . '</a>'; } echo Search::showItem($output_type, $categ, $item_num, $row_num); if (isset($options['item_itemtype']) && isset($options['item_items_id']) && $output_type == Search::HTML_OUTPUT) { $forcetab = $options['item_itemtype']; if (!$_SESSION['glpiticket_timeline'] || $_SESSION['glpiticket_timeline_keep_replaced_tabs']) { $forcetab .= '$2'; //Solution tab } else { $forcetab .= '$1'; //Timeline tab } $content = "<a href='" . Toolbox::getItemTypeFormURL($options['item_itemtype']) . "?load_kb_sol=" . $data['id'] . "&id=" . $options['item_items_id'] . "&forcetab=" . $forcetab . "'>" . __('Use as a solution') . "</a>"; echo Search::showItem($output_type, $content, $item_num, $row_num); } // End Line echo Search::showEndLine($output_type); } // Display footer if ($output_type == Search::PDF_OUTPUT_LANDSCAPE || $output_type == Search::PDF_OUTPUT_PORTRAIT) { echo Search::showFooter($output_type, Dropdown::getDropdownName("glpi_knowbaseitemcategories", $params['knowbaseitemcategories_id'])); } else { echo Search::showFooter($output_type); } echo "<br>"; if ($output_type == Search::HTML_OUTPUT) { Html::printPager($params['start'], $numrows, Toolbox::getItemTypeSearchURL('KnowbaseItem'), $parameters, 'KnowbaseItem'); } } else { echo "<div class='center b'>" . __('No item found') . "</div>"; } } }
public static function showAccountsList($values, $list) { global $CFG_GLPI; $ID = $values["id"]; $aeskey = $values["aeskey"]; $PluginAccountsHash = new PluginAccountsHash(); $PluginAccountsHash->getFromDB($ID); $hash = $PluginAccountsHash->fields["hash"]; $default_values["start"] = $start = 0; $default_values["id"] = $id = 0; $default_values["export"] = $export = false; foreach ($default_values as $key => $val) { if (isset($values[$key])) { ${$key} = $values[$key]; } } // Set display type for export if define $output_type = Search::HTML_OUTPUT; if (isset($values["display_type"])) { $output_type = $values["display_type"]; } $header_num = 1; $nbcols = 4; $row_num = 1; $numrows = 1; $parameters = "id=" . $ID . "&aeskey=" . $aeskey; if ($output_type == Search::HTML_OUTPUT && !empty($list)) { self::printPager($start, $numrows, $_SERVER['PHP_SELF'], $parameters, "PluginAccountsReport"); } echo Search::showHeader($output_type, 1, $nbcols, 1); echo Search::showNewLine($output_type); echo Search::showHeaderItem($output_type, __('Name'), $header_num); if (Session::isMultiEntitiesMode()) { echo Search::showHeaderItem($output_type, __('Entity'), $header_num); } echo Search::showHeaderItem($output_type, __('Type'), $header_num); echo Search::showHeaderItem($output_type, __('Login'), $header_num); echo Search::showHeaderItem($output_type, __('Uncrypted password', 'accounts'), $header_num); echo Search::showEndLine($output_type); if (!empty($list)) { foreach ($list as $user => $field) { $row_num++; $item_num = 1; echo Search::showNewLine($output_type); $IDc = $field["id"]; if ($output_type == Search::HTML_OUTPUT) { echo "<input type='hidden' name='hash_id' value='" . $ID . "'>"; echo "<input type='hidden' name='id[{$IDc}]' value='" . $IDc . "'>"; } $name = "<a href='" . $CFG_GLPI["root_doc"] . "/plugins/accounts/front/account.form.php?id=" . $IDc . "'>" . $field["name"]; if ($_SESSION["glpiis_ids_visible"]) { $name .= " (" . $IDc . ")"; } $name .= "</a>"; echo Search::showItem($output_type, $name, $item_num, $row_num); if ($output_type == Search::HTML_OUTPUT) { echo "<input type='hidden' name='name[{$IDc}]' value='" . $field["name"] . "'>"; } if (Session::isMultiEntitiesMode()) { echo Search::showItem($output_type, $field['entities_id'], $item_num, $row_num); if ($output_type == Search::HTML_OUTPUT) { echo "<input type='hidden' name='entities_id[{$IDc}]' value='" . $field["entities_id"] . "'>"; } } echo Search::showItem($output_type, $field["type"], $item_num, $row_num); if ($output_type == Search::HTML_OUTPUT) { echo "<input type='hidden' name='type[{$IDc}]' value='" . $field["type"] . "'>"; } echo Search::showItem($output_type, $field["login"], $item_num, $row_num); if ($output_type == Search::HTML_OUTPUT) { echo "<input type='hidden' name='login[{$IDc}]' value='" . $field["login"] . "'>"; } if ($output_type == Search::HTML_OUTPUT) { $encrypted = $field["password"]; echo "<input type='hidden' name='password[{$IDc}]'>"; $pass = "******"; $pass .= "<script language='javascript'>\n var good_hash=\"{$hash}\";\n var hash=SHA256(SHA256(\"{$aeskey}\"));\n if (hash != good_hash) {\n pass = \"" . __('Wrong encryption key', 'accounts') . "\";\n } else {\n pass = AESDecryptCtr(\"{$encrypted}\",SHA256(\"{$aeskey}\"), 256);\n };\n\n document.getElementsByName(\"password[{$IDc}]\").item(0).value = pass;\n\n document.getElementById(\"show_password\${$IDc}\").innerHTML = pass;\n </script>"; echo Search::showItem($output_type, $pass, $item_num, $row_num); } else { echo Search::showItem($output_type, $field["password"], $item_num, $row_num); } echo Search::showEndLine($output_type); } } if ($output_type == Search::HTML_OUTPUT) { Html::closeForm(); } // Display footer echo Search::showFooter($output_type, __('Linked accounts list', 'accounts')); }
echo Search::showNewLine($output_type); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, __('Total'), $num, $row_num); echo Search::showItem($output_type, $message, $num, $row_num); echo Search::showEndLine($output_type); $row_num++; $num = 1; echo Search::showNewLine($output_type); if ($output_type == Search::HTML_OUTPUT) { echo Search::showItem($output_type, '', $num, $row_num, "colspan = '4' style='{$styleItemTitle}'"); } else { echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); } echo Search::showEndLine($output_type); } echo Search::showFooter($output_type, $title); } if ($output_type == Search::HTML_OUTPUT) { Html::footer(); } /** * Display the column title and allow the sort * * @param $output_type * @param $num * @param $title * @param $columnname
/** * Display a line for a ticket * * @param $id Integer ID of the ticket * @param $followups Boolean show followup columns * @param $output_type Integer type of output (default Search::HTML_OUTPUT) * @param $row_num Integer row number (default 0) * @param $id_for_massaction Integer default 0 means no massive action (default 0) * */ static function showShort($id, $followups, $output_type = Search::HTML_OUTPUT, $row_num = 0, $id_for_massaction = 0) { global $CFG_GLPI; $rand = mt_rand(); /// TODO to be cleaned. Get datas and clean display links // Prints a job in short form // Should be called in a <table>-segment // Print links or not in case of user view // Make new job object and fill it from database, if success, print it $job = new self(); $candelete = Session::haveRight("delete_ticket", "1"); $canupdate = Session::haveRight("update_ticket", "1"); $showprivate = Session::haveRight("show_full_ticket", "1"); $align = "class='center"; $align_desc = "class='left"; if ($followups) { $align .= " top'"; $align_desc .= " top'"; } else { $align .= "'"; $align_desc .= "'"; } if ($job->getFromDB($id)) { $item_num = 1; $bgcolor = $_SESSION["glpipriority_" . $job->fields["priority"]]; echo Search::showNewLine($output_type, $row_num % 2); $check_col = ''; if (($candelete || $canupdate) && $output_type == Search::HTML_OUTPUT && $id_for_massaction) { $check_col = Html::getMassiveActionCheckBox(__CLASS__, $id_for_massaction); } echo Search::showItem($output_type, $check_col, $item_num, $row_num, $align); // First column $first_col = sprintf(__('%1$s: %2$s'), __('ID'), $job->fields["id"]); if ($output_type == Search::HTML_OUTPUT) { $first_col .= "<br><img src='" . self::getStatusIconURL($job->fields["status"]) . "'\n alt=\"" . self::getStatus($job->fields["status"]) . "\" title=\"" . self::getStatus($job->fields["status"]) . "\">"; } else { $first_col = sprintf(__('%1$s - %2$s'), $first_col, self::getStatus($job->fields["status"])); } echo Search::showItem($output_type, $first_col, $item_num, $row_num, $align); // Second column if ($job->fields['status'] == self::CLOSED) { $second_col = sprintf(__('Closed on %s'), ($output_type == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($job->fields['closedate'])); } else { if ($job->fields['status'] == self::SOLVED) { $second_col = sprintf(__('Solved on %s'), ($output_type == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($job->fields['solvedate'])); } else { if ($job->fields['begin_waiting_date']) { $second_col = sprintf(__('Put on hold on %s'), ($output_type == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($job->fields['begin_waiting_date'])); } else { if ($job->fields['due_date']) { $second_col = sprintf(__('%1$s: %2$s'), __('Due date'), ($output_type == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($job->fields['due_date'])); } else { $second_col = sprintf(__('Opened on %s'), ($output_type == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($job->fields['date'])); } } } } echo Search::showItem($output_type, $second_col, $item_num, $row_num, $align . " width=130"); // Second BIS column $second_col = Html::convDateTime($job->fields["date_mod"]); echo Search::showItem($output_type, $second_col, $item_num, $row_num, $align . " width=90"); // Second TER column if (count($_SESSION["glpiactiveentities"]) > 1) { $second_col = Dropdown::getDropdownName('glpi_entities', $job->fields['entities_id']); echo Search::showItem($output_type, $second_col, $item_num, $row_num, $align . " width=100"); } // Third Column echo Search::showItem($output_type, "<span class='b'>" . parent::getPriorityName($job->fields["priority"]) . "</span>", $item_num, $row_num, "{$align} bgcolor='{$bgcolor}'"); // Fourth Column $fourth_col = ""; if (isset($job->users[CommonITILActor::REQUESTER]) && count($job->users[CommonITILActor::REQUESTER])) { foreach ($job->users[CommonITILActor::REQUESTER] as $d) { $userdata = getUserName($d["users_id"], 2); $fourth_col .= sprintf(__('%1$s %2$s'), "<span class='b'>" . $userdata['name'] . "</span>", Html::showToolTip($userdata["comment"], array('link' => $userdata["link"], 'display' => false))); $fourth_col .= "<br>"; } } if (isset($job->groups[CommonITILActor::REQUESTER]) && count($job->groups[CommonITILActor::REQUESTER])) { foreach ($job->groups[CommonITILActor::REQUESTER] as $d) { $fourth_col .= Dropdown::getDropdownName("glpi_groups", $d["groups_id"]); $fourth_col .= "<br>"; } } echo Search::showItem($output_type, $fourth_col, $item_num, $row_num, $align); // Fifth column $fifth_col = ""; if (isset($job->users[CommonITILActor::ASSIGN]) && count($job->users[CommonITILActor::ASSIGN])) { foreach ($job->users[CommonITILActor::ASSIGN] as $d) { $userdata = getUserName($d["users_id"], 2); $fifth_col .= sprintf(__('%1$s %2$s'), "<span class='b'>" . $userdata['name'] . "</span>", Html::showToolTip($userdata["comment"], array('link' => $userdata["link"], 'display' => false))); $fifth_col .= "<br>"; } } if (isset($job->groups[CommonITILActor::ASSIGN]) && count($job->groups[CommonITILActor::ASSIGN])) { foreach ($job->groups[CommonITILActor::ASSIGN] as $d) { $fifth_col .= Dropdown::getDropdownName("glpi_groups", $d["groups_id"]); $fifth_col .= "<br>"; } } if (isset($job->suppliers[CommonITILActor::ASSIGN]) && count($job->suppliers[CommonITILActor::ASSIGN])) { foreach ($job->suppliers[CommonITILActor::ASSIGN] as $d) { $fifth_col .= Dropdown::getDropdownName("glpi_suppliers", $d["suppliers_id"]); $fifth_col .= "<br>"; } } echo Search::showItem($output_type, $fifth_col, $item_num, $row_num, $align); // Sixth Colum $sixth_col = ""; $is_deleted = false; if (!empty($job->fields["itemtype"]) && $job->fields["items_id"] > 0) { if ($item = getItemForItemtype($job->fields["itemtype"])) { if ($item->getFromDB($job->fields["items_id"])) { $is_deleted = $item->isDeleted(); $sixth_col .= $item->getTypeName(); $sixth_col .= "<br><span class='b'>"; if ($item->canView()) { $sixth_col .= $item->getLink(array('linkoption' => $output_type == Search::HTML_OUTPUT)); } else { $sixth_col .= $item->getNameID(); } $sixth_col .= "</span>"; } } } else { if (empty($job->fields["itemtype"])) { $sixth_col = __('General'); } } echo Search::showItem($output_type, $sixth_col, $item_num, $row_num, $is_deleted ? " class='center deleted' " : $align); // Seventh column echo Search::showItem($output_type, "<span class='b'>" . Dropdown::getDropdownName('glpi_itilcategories', $job->fields["itilcategories_id"]) . "</span>", $item_num, $row_num, $align); // Eigth column $eigth_column = "<span class='b'>" . $job->fields["name"] . "</span> "; // Add link if ($job->canViewItem()) { $eigth_column = "<a id='ticket" . $job->fields["id"] . "{$rand}' href=\"" . $CFG_GLPI["root_doc"] . "/front/ticket.form.php?id=" . $job->fields["id"] . "\">{$eigth_column}</a>"; if ($followups && $output_type == Search::HTML_OUTPUT) { $eigth_column .= TicketFollowup::showShortForTicket($job->fields["id"]); } else { $eigth_column = sprintf(__('%1$s (%2$s)'), $eigth_column, sprintf(__('%1$s - %2$s'), $job->numberOfFollowups($showprivate), $job->numberOfTasks($showprivate))); } } if ($output_type == Search::HTML_OUTPUT) { $eigth_column = sprintf(__('%1$s %2$s'), $eigth_column, Html::showToolTip($job->fields['content'], array('display' => false, 'applyto' => "ticket" . $job->fields["id"] . $rand))); } echo Search::showItem($output_type, $eigth_column, $item_num, $row_num, $align_desc . "width='300'"); // Finish Line echo Search::showEndLine($output_type); } else { echo "<tr class='tab_bg_2'>"; echo "<td colspan='6' ><i>" . __('No ticket in progress.') . "</i></td></tr>"; } }
echo Search::showItem($output_type, Html::timestampToString($timetask), $num, $row_num); } else { echo Search::showItem($output_type, Html::formatNumber($timetask / 3600, false, 5), $num, $row_num); } if ($output_type == Search::HTML_OUTPUT || $output_type == Search::PDF_OUTPUT_PORTRAIT || $output_type == Search::PDF_OUTPUT_LANDSCAPE) { echo Search::showItem($output_type, Html::timestampToString($time), $num, $row_num); } else { echo Search::showItem($output_type, Html::formatNumber($time / 3600, false, 5), $num, $row_num); } } } $total = $ticket->fields["close_delay_stat"]; if ($output_type == Search::HTML_OUTPUT || $output_type == Search::PDF_OUTPUT_PORTRAIT || $output_type == Search::PDF_OUTPUT_LANDSCAPE) { echo Search::showItem($output_type, Html::timestampToString($total), $num, $row_num); } else { echo Search::showItem($output_type, Html::formatNumber($total / 3600, false, 5), $num, $row_num); } echo Search::showEndLine($output_type); } echo Search::showFooter($output_type, $title); } if ($output_type == Search::HTML_OUTPUT) { Html::footer(); } /** * Display the column title and allow the sort * * @param $output_type * @param $num * @param $title * @param $columnname
} } echo Search::showEndLine($display_type); $row_num++; $numcol = 1; echo Search::showNewLine($display_type); echo Search::showItem($display_type, '', $numcol, $row_num); foreach ($row as $ref => $val) { $val = $result[$itemtype][$ref]; $buy = $result[$itemtype]['buy']; if ($ref == 'buy' || $buy == 0 || $val == 0) { $tmp = ''; } else { $tmp = round($val * 100 / $buy, 0) . "%"; } echo Search::showItem($display_type, $tmp, $numcol, $row_num, "class='right'"); } echo Search::showEndLine($display_type); $row_num++; } if ($display_type == Search::HTML_OUTPUT) { $row = array_pop($result); // Last line : total or single type unset($row['buy']); Stat::showGraph(array($title => $row), array('type' => 'pie')); } } else { $nbrows = 1; $nbcols = 1; echo Search::showHeader($display_type, $nbrows, $nbcols, true); echo Search::showNewLine($display_type);
if ($data["name"] == NULL) { $name .= "(" . $data["ID"] . ")"; } else { $name .= $data["name"]; } $name .= "</a>"; echo Search::showItem($output_type, $name, $num, $key); echo Search::showItem($output_type, $data['firstname'], $num, $key); echo Search::showItem($output_type, $data['registration_number'], $num, $key); $link1 = Toolbox::getItemTypeFormURL("PluginResourcesProfession"); $profName = "<a href='" . $link1 . "?id=" . $data["profID"] . "' target='_blank'>" . $data["profession"] . "</a>"; echo Search::showItem($output_type, $profName, $num, $key); echo Search::showItem($output_type, Html::convDate($data['date_begin']), $num, $key); echo Search::showItem($output_type, Html::convDate($data['date_end']), $num, $key); echo Search::showItem($output_type, Html::convDate($data['begin_date']), $num, $key); echo Search::showItem($output_type, Html::convDate($data['end_date']), $num, $key); echo Search::showEndLine($output_type); } echo Search::showFooter($output_type, $title); } if ($output_type == Search::HTML_OUTPUT) { Html::footer(); } /** * Display the column title and allow the sort * * @param $output_type * @param $num * @param $title * @param $columnname * @param bool $sort
function displayReport(&$result, $PluginAddressingAddressing) { global $DB, $CFG_GLPI; $network = $PluginAddressingAddressing->fields["networks_id"]; $ping = $PluginAddressingAddressing->fields["use_ping"]; $PluginAddressingConfig = new PluginAddressingConfig(); $PluginAddressingConfig->getFromDB('1'); $system = $PluginAddressingConfig->fields["used_system"]; // Set display type for export if define $output_type = Search::HTML_OUTPUT; if (isset($_GET["display_type"])) { $output_type = $_GET["display_type"]; } $header_num = 1; $nbcols = 6; $ping_response = 0; $parameters = "id="; $row_num = 1; echo Search::showHeader($output_type, 1, $nbcols, 1); echo $this->displaySearchNewLine($output_type); echo Search::showHeaderItem($output_type, __('IP'), $header_num); echo Search::showHeaderItem($output_type, __('Connected to'), $header_num); echo Search::showHeaderItem($output_type, _n('User', 'Users', 1), $header_num); echo Search::showHeaderItem($output_type, __('MAC address'), $header_num); echo Search::showHeaderItem($output_type, __('Item type'), $header_num); echo Search::showHeaderItem($output_type, __('Free Ip', 'addressing'), $header_num); // End Line for column headers echo Search::showEndLine($output_type); $user = new User(); foreach ($result as $num => $lines) { $ip = long2ip(substr($num, 2)); if (count($lines)) { if (count($lines) > 1) { $disp = $PluginAddressingAddressing->fields["double_ip"]; } else { $disp = $PluginAddressingAddressing->fields["alloted_ip"]; } if ($disp) { foreach ($lines as $line) { $row_num++; $item_num = 1; $name = $line["dname"]; $namep = $line["pname"]; // IP echo $this->displaySearchNewLine($output_type, count($lines) > 1 ? "double" : $row_num % 2); echo Search::showItem($output_type, $ip, $item_num, $row_num); // Device $item = new $line["itemtype"](); $link = Toolbox::getItemTypeFormURL($line["itemtype"]); if ($line["itemtype"] != 'NetworkEquipment') { if ($item->canView()) { $output_iddev = "<a href='" . $link . "?id=" . $line["on_device"] . "'>" . $name . (empty($name) || $_SESSION["glpiis_ids_visible"] ? " (" . $line["on_device"] . ")" : "") . "</a>"; } else { $output_iddev = $name . (empty($name) || $_SESSION["glpiis_ids_visible"] ? " (" . $line["on_device"] . ")" : ""); } } else { if ($item->canView()) { if (empty($namep)) { $linkp = ''; } else { $linkp = $namep . " - "; } $output_iddev = "<a href='" . $link . "?id=" . $line["on_device"] . "'>" . $linkp . $name . (empty($name) || $_SESSION["glpiis_ids_visible"] ? " (" . $line["on_device"] . ")" : "") . "</a>"; } else { $output_iddev = $namep . " - " . $name . (empty($name) || $_SESSION["glpiis_ids_visible"] ? " (" . $line["on_device"] . ")" : ""); } } echo Search::showItem($output_type, $output_iddev, $item_num, $row_num); // User if ($line["users_id"] && $user->getFromDB($line["users_id"])) { $username = formatUserName($user->fields["id"], $user->fields["name"], $user->fields["realname"], $user->fields["firstname"]); if ($user->canView()) { $output_iduser = "******" . $CFG_GLPI["root_doc"] . "/front/user.form.php?id=" . $line["users_id"] . "'>" . $username . "</a>"; } else { $output_iduser = $username; } echo Search::showItem($output_type, $output_iduser, $item_num, $row_num); } else { echo Search::showItem($output_type, " ", $item_num, $row_num); } // Mac if ($line["id"]) { if ($item->canView()) { $output_mac = "<a href='" . $CFG_GLPI["root_doc"] . "/front/networkport.form.php?id=" . $line["id"] . "'>" . $line["mac"] . "</a>"; } else { $output_mac = $line["mac"]; } echo Search::showItem($output_type, $output_mac, $item_num, $row_num); } else { echo Search::showItem($output_type, " ", $item_num, $row_num); } // Type echo Search::showItem($output_type, $item::getTypeName(), $item_num, $row_num); // Reserved if ($PluginAddressingAddressing->fields["reserved_ip"] && strstr($line["pname"], "reserv")) { echo Search::showItem($output_type, __('Reserved Address', 'addressing'), $item_num, $row_num); } else { echo Search::showItem($output_type, " ", $item_num, $row_num); } // End echo Search::showEndLine($output_type); } } } else { if ($PluginAddressingAddressing->fields["free_ip"]) { $row_num++; $item_num = 1; if (!$ping) { echo $this->displaySearchNewLine($output_type, "free"); echo Search::showItem($output_type, $ip, $item_num, $row_num); echo Search::showItem($output_type, " ", $item_num, $row_num); } else { if ($output_type == Search::HTML_OUTPUT) { Html::glpi_flush(); } if ($this->ping($system, $ip)) { $ping_response++; echo $this->displaySearchNewLine($output_type, "ping_off"); echo Search::showItem($output_type, $ip, $item_num, $row_num); echo Search::showItem($output_type, __('Ping: got a response - used Ip', 'addressing'), $item_num, $row_num); } else { echo $this->displaySearchNewLine($output_type, "ping_on"); echo Search::showItem($output_type, $ip, $item_num, $row_num); echo Search::showItem($output_type, __('Ping: no response - free Ip', 'addressing'), $item_num, $row_num); } } echo Search::showItem($output_type, " ", $item_num, $row_num); echo Search::showItem($output_type, " ", $item_num, $row_num); echo Search::showItem($output_type, " ", $item_num, $row_num); echo Search::showItem($output_type, " ", $item_num, $row_num); echo Search::showEndLine($output_type); } } } // Display footer echo Search::showFooter($output_type, $PluginAddressingAddressing->getTitle()); return $ping_response; }
/** * @param $params */ static function showSnmpDeviceToAdd($params) { global $DB, $CFG_GLPI; // Default values of parameters $p['link'] = array(); $p['field'] = array(); $p['contains'] = array(); $p['searchtype'] = array(); $p['sort'] = '1'; $p['order'] = 'ASC'; $p['start'] = 0; $p['export_all'] = 0; $p['link2'] = ''; $p['contains2'] = ''; $p['field2'] = ''; $p['itemtype2'] = ''; $p['searchtype2'] = ''; $p['itemtype'] = ''; $p['ip'] = ''; $p['tolinked'] = 0; $p['check'] = 'all'; $p['plugin_ocsinventoryng_ocsservers_id'] = 0; foreach ($params as $key => $val) { $p[$key] = $val; } $tolinked = $p['tolinked']; $start = $p['start']; $plugin_ocsinventoryng_ocsservers_id = $p['plugin_ocsinventoryng_ocsservers_id']; $title = __('Import new SNMP devices', 'ocsinventoryng'); if ($tolinked) { $title = __('Import new SNMP devices into glpi', 'ocsinventoryng'); } $target = $CFG_GLPI['root_doc'] . '/plugins/ocsinventoryng/front/ocsngsnmp.import.php'; if ($tolinked) { $target = $CFG_GLPI['root_doc'] . '/plugins/ocsinventoryng/front/ocsngsnmp.link.php'; } if (!$start) { $start = 0; } // Get all links between glpi and OCS $query_glpi = "SELECT ocs_id\n FROM `glpi_plugin_ocsinventoryng_snmpocslinks`\n WHERE `plugin_ocsinventoryng_ocsservers_id` = '" . $plugin_ocsinventoryng_ocsservers_id . "'"; $result_glpi = $DB->query($query_glpi); $already_linked = array(); if ($DB->numrows($result_glpi) > 0) { while ($data = $DB->fetch_array($result_glpi)) { $already_linked[] = $data["ocs_id"]; } } $snmpOptions = array('ORDER' => 'LASTDATE', 'FILTER' => array('EXCLUDE_IDS' => $already_linked), 'DISPLAY' => array('CHECKSUM' => PluginOcsinventoryngOcsClient::CHECKSUM_BIOS), 'ORDER' => 'NAME'); //if ($cfg_ocs["tag_limit"] and $tag_limit = explode("$", trim($cfg_ocs["tag_limit"]))) { // $snmpOptions['FILTER']['TAGS'] = $tag_limit; //} //if ($cfg_ocs["tag_exclude"] and $tag_exclude = explode("$", trim($cfg_ocs["tag_exclude"]))) { // $snmpOptions['FILTER']['EXCLUDE_TAGS'] = $tag_exclude; //} $ocsClient = PluginOcsinventoryngOcsServer::getDBocs($plugin_ocsinventoryng_ocsservers_id); $ocsResult = $ocsClient->getSnmp($snmpOptions); if (isset($ocsResult['SNMP'])) { if (count($ocsResult['SNMP'])) { // Get all hardware from OCS DB $hardware = array(); $snmp = array_slice($ocsResult['SNMP'], $start, $_SESSION['glpilist_limit']); foreach ($snmp as $data) { $data = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($data)); $id = $data['META']['ID']; $hardware[$id]["id"] = $data['META']["ID"]; $hardware[$id]["date"] = $data['META']["LASTDATE"]; $hardware[$id]["name"] = $data['META']["NAME"]; $hardware[$id]["ipaddr"] = $data['META']["IPADDR"]; $hardware[$id]["snmpdeviceid"] = $data['META']["SNMPDEVICEID"]; $hardware[$id]["description"] = $data['META']["DESCRIPTION"]; $hardware[$id]["type"] = $data['META']["TYPE"]; $hardware[$id]["contact"] = $data['META']["CONTACT"]; $hardware[$id]["location"] = $data['META']["LOCATION"]; } foreach ($hardware as $id => $field) { if ($field["type"] == "Network") { $field["type"] = "NetworkEquipment"; } if (!empty($p['itemtype']) && $field['type'] != $p['itemtype']) { unset($hardware[$id]); } if (!empty($p['ip']) && !preg_match("/" . $p['ip'] . "/", $field['ipaddr'])) { unset($hardware[$id]); } } $output_type = Search::HTML_OUTPUT; if (isset($_GET["display_type"])) { $output_type = $_GET["display_type"]; } $parameters = "itemtype=" . $p['itemtype'] . "&ip=" . $p['ip']; // Define begin and end var for loop // Search case $begin_display = $start; $end_display = $start + $_SESSION["glpilist_limit"]; $numrows = $ocsResult['TOTAL_COUNT']; // Export All case if (isset($_GET['export_all'])) { $begin_display = 0; $end_display = $numrows; } $nbcols = 10; if ($output_type == Search::HTML_OUTPUT && $tolinked && count($hardware)) { echo "<div class='center b'>" . __('Caution! The imported data (see your configuration) will overwrite the existing one', 'ocsinventoryng') . "</div>"; } if ($numrows) { $parameters = ""; Html::printPager($start, $numrows, $target, $parameters); //Show preview form only in import even in multi-entity mode because computer import //can be refused by a rule /*if (!$tolinked) { echo "<div class='firstbloc'>"; echo "<form method='post' name='ocsng_import_mode' id='ocsng_import_mode' action='$target'>\n"; echo "<table class='tab_cadre_fixe'>"; echo "<tr><th>" . __('Manual import mode', 'ocsinventoryng') . "</th></tr>\n"; echo "<tr class='tab_bg_1'><td class='center'>"; echo "</td></tr>"; echo "</table>"; Html::closeForm(); echo "</div>"; }*/ if ($output_type == Search::HTML_OUTPUT) { echo "<form method='post' name='ocsng_form' id='ocsng_form' action='{$target}'>"; } if ($output_type == Search::HTML_OUTPUT && !$tolinked) { echo "<div class='center'>"; PluginOcsinventoryngOcsServer::checkBox($target); echo "</div>"; } if ($output_type == Search::HTML_OUTPUT) { echo "<table class='tab_cadrehov'>"; echo "<tr class='tab_bg_1'><td colspan='10' class='center'>"; if (!$tolinked) { echo "<input class='submit' type='submit' name='import_ok' value=\"" . _sx('button', 'Import', 'ocsinventoryng') . "\">"; } else { echo "<input class='submit' type='submit' name='import_ok' value=\"" . _sx('button', 'Link', 'ocsinventoryng') . "\">"; } echo "</td></tr>\n"; } echo Search::showHeader($output_type, $end_display - $begin_display + 1, $nbcols); echo Search::showNewLine($output_type); $header_num = 1; echo Search::showHeaderItem($output_type, __('Name'), $header_num); //, $linkto, $p['sort']==$val, $p['order'] echo Search::showHeaderItem($output_type, __('Description'), $header_num); echo Search::showHeaderItem($output_type, __('IP address'), $header_num); echo Search::showHeaderItem($output_type, __('Date'), $header_num); echo Search::showHeaderItem($output_type, __('Contact SNMP', 'ocsinventoryng'), $header_num); echo Search::showHeaderItem($output_type, __('Location SNMP', 'ocsinventoryng'), $header_num); echo Search::showHeaderItem($output_type, __('Type SNMP', 'ocsinventoryng'), $header_num); if (!$tolinked) { echo Search::showHeaderItem($output_type, __('Item type to create', 'ocsinventoryng'), $header_num, "", 0, "", 'width=15%'); echo Search::showHeaderItem($output_type, "", $header_num); } else { echo Search::showHeaderItem($output_type, __('Item to link', 'ocsinventoryng'), $header_num, "", 0, "", 'width=15%'); } // End Line for column headers echo Search::showEndLine($output_type); $row_num = 1; foreach ($hardware as $ID => $tab) { $row_num++; $item_num = 1; if ($tab["type"] == "Network") { $tab["type"] = "NetworkEquipment"; } echo Search::showNewLine($output_type, $row_num % 2); echo Search::showItem($output_type, $tab["name"], $item_num, $row_num); echo Search::showItem($output_type, $tab["description"], $item_num, $row_num, 'width=15%'); echo Search::showItem($output_type, $tab["ipaddr"], $item_num, $row_num, 'width=5%'); echo Search::showItem($output_type, Html::convDateTime($tab["date"]), $item_num, $row_num, 'width=15%'); echo Search::showItem($output_type, $tab["contact"], $item_num, $row_num, 'width=5%'); echo Search::showItem($output_type, $tab["location"], $item_num, $row_num, 'width=15%'); echo Search::showItem($output_type, $tab["type"], $item_num, $row_num); if (!$tolinked) { echo "<td width='15%'>"; $value = false; if (getItemForItemtype($tab["type"])) { $value = $tab["type"]; } $type = "toimport_itemtype[" . $tab["id"] . "]"; Dropdown::showItemTypes($type, self::$snmptypes, array('value' => $value)); echo "</td>\n"; } /* if ($p['change_import_mode'] && !$tolinked){ if (!isset ($data['entities_id']) || $data['entities_id'] == -1){ echo "<td class='center'><img src=\"".$CFG_GLPI['root_doc']. "/pics/redbutton.png\"></td>\n"; $data['entities_id'] = -1; } else{ echo "<td class='center'>"; $tmprule = new RuleImportEntity(); if ($tmprule->can($data['_ruleid'],READ)){ echo "<a href='". $tmprule->getLinkURL()."'>".$tmprule->getName()."</a>"; } else{ echo $tmprule->getName(); } echo "</td>\n"; } echo "<td width='30%'>"; $ent = "toimport_entities[".$tab["id"]."]"; Entity::dropdown(array('name' => $ent, 'value' => $data['entities_id'], 'comments' => 0)); echo "</td>\n"; } */ echo "<td width='10'>"; if (!$tolinked) { echo "<input type='checkbox' name='toimport[" . $tab["id"] . "]' " . ($p['check'] == "all" ? "checked" : "") . ">"; } else { /* $tab['entities_id'] = $p['glpiactiveentities']; $rulelink = new RuleImportComputerCollection(); $rulelink_results = array(); $params = array('entities_id' => $p['glpiactiveentities'], 'plugin_ocsinventoryng_ocsservers_id' => $plugin_ocsinventoryng_ocsservers_id); $rulelink_results = $rulelink->processAllRules(Toolbox::stripslashes_deep($tab), array(), $params); //Look for the computer using automatic link criterias as defined in OCSNG configuration $options = array('name' => "tolink[".$tab["id"]."]"); $show_dropdown = true; //If the computer is not explicitly refused by a rule if (!isset($rulelink_results['action']) || $rulelink_results['action'] != PluginOcsinventoryngOcsServer::LINK_RESULT_NO_IMPORT){ if (!empty($rulelink_results['found_computers'])){ $options['value'] = $rulelink_results['found_computers'][0]; $options['entity'] = $p['glpiactiveentities']; } */ /* } else{ echo "<img src='".$CFG_GLPI['root_doc']. "/pics/redbutton.png'>"; } */ $value = false; if (getItemForItemtype($tab["type"])) { $type = $tab["type"]; $options['name'] = "tolink_items[" . $tab["id"] . "]"; $self = new self(); if ($item = $self->getFromDBbyName($tab["type"], $tab["name"])) { $options['value'] = isset($item->fields['id']) ? $item->fields['id'] : false; } $type::dropdown($options); echo "<input type='hidden' name='tolink_itemtype[" . $tab["id"] . "]' value='" . $tab["type"] . "'>"; } else { $mtrand = mt_rand(); $mynamei = "itemtype"; $myname = "tolink_items[" . $tab["id"] . "]"; $rand = Dropdown::showItemTypes($mynamei, self::$snmptypes, array('rand' => $mtrand)); $p = array('itemtype' => '__VALUE__', 'id' => $tab["id"], 'rand' => $rand, 'myname' => $myname); //print_r($p); Ajax::updateItemOnSelectEvent("dropdown_{$mynamei}{$rand}", "results_{$mynamei}{$rand}", $CFG_GLPI["root_doc"] . "/plugins/ocsinventoryng/ajax/dropdownitems.php", $p); echo "<span id='results_{$mynamei}{$rand}'>\n"; echo "</span>\n"; } } echo "</td></tr>\n"; } echo "<tr class='tab_bg_1'><td colspan='10' class='center'>"; if (!$tolinked) { echo "<input class='submit' type='submit' name='import_ok' value=\"" . _sx('button', 'Import', 'ocsinventoryng') . "\">"; } else { echo "<input class='submit' type='submit' name='import_ok' value=\"" . _sx('button', 'Link', 'ocsinventoryng') . "\">"; } echo "<input type=hidden name='plugin_ocsinventoryng_ocsservers_id' " . "value='" . $plugin_ocsinventoryng_ocsservers_id . "'>"; echo "</td></tr>"; echo "</table>\n"; Html::closeForm(); if (!$tolinked) { echo "<div class='center'>"; PluginOcsinventoryngOcsServer::checkBox($target); echo "</div>"; } Html::printPager($start, $numrows, $target, $parameters); } else { echo "<table class='tab_cadre_fixe'>"; echo "<tr><th>" . $title . "</th></tr>\n"; echo "<tr class='tab_bg_1'>"; echo "<td class='center b'>" . __('No new SNMP device to be imported', 'ocsinventoryng') . "</td></tr>\n"; echo "</table>"; } echo "</div>"; } else { echo "<div class='center'>"; echo "<table class='tab_cadre_fixe'>"; echo "<tr><th>" . $title . "</th></tr>\n"; echo "<tr class='tab_bg_1'>"; echo "<td class='center b'>" . __('No new SNMP device to be imported', 'ocsinventoryng') . "</td></tr>\n"; echo "</table></div>"; } } else { echo "<div class='center'>"; echo "<table class='tab_cadre_fixe'>"; echo "<tr><th>" . $title . "</th></tr>\n"; echo "<tr class='tab_bg_1'>"; echo "<td class='center b'>" . __('No new SNMP device to be imported', 'ocsinventoryng') . "</td></tr>\n"; echo "</table></div>"; } }
function afficheTableau($date, $display, $output_type, $itemtable, $end_display, $start, $nbcols, $titre, $total, $items, $locations_id) { global $DB, $CFG_GLPI; $first = true; $deleted = 0; $master_total = 0; $master_total += $total; if ($total != 0) { if ($output_type == Search::HTML_OUTPUT) { echo "<br>"; echo Search::showHeader($output_type, $end_display - $start + 1, $nbcols, 1); } else { echo Search::showNewLine($output_type); echo Search::showEndLine($output_type); } echo Search::showNewLine($output_type); //tr if ($output_type == Search::HTML_OUTPUT) { if ($total != -1) { echo "<th>" . $titre . "</th><th><font color='red'>" . Html::formatNumber($total) . " " . _n('Euro', 'Euros', 2, 'financialreports') . "</font></th><th>"; } else { echo "<th>" . $titre . "</th><th></th><th>"; } if ($_SESSION[$display]) { $status = "false"; } else { $status = "true"; } echo "<a href='" . $CFG_GLPI["root_doc"] . "/plugins/financialreports/front/financialreport.php?" . $display . "=" . $status . "&date=" . $date . "&locations_id=" . $locations_id . "'>"; if ($_SESSION[$display]) { echo __('Hide', 'financialreports'); } else { echo __('Display', 'financialreports'); } echo "</a>"; if ($itemtable != 'disposal') { echo "</th><th colspan='4'><th>"; } else { echo "</th><th colspan='3'><th>"; } } else { echo Search::showHeaderItem($output_type, $titre, $header_num); //th echo Search::showHeaderItem($output_type, __('Total'), $header_num); if ($total != -1) { echo Search::showHeaderItem($output_type, Html::formatNumber($total) . " " . _n('Euro', 'Euros', 2, 'financialreports'), $header_num); } } echo Search::showEndLine($output_type); //tr echo Search::showNewLine($output_type); $header_num = 1; echo Search::showHeaderItem($output_type, __('Name'), $header_num); echo Search::showHeaderItem($output_type, __('Inventory number'), $header_num); echo Search::showHeaderItem($output_type, __('Date of purchase'), $header_num); if ($itemtable != 'disposal') { echo Search::showHeaderItem($output_type, __('User / Group', 'financialreports'), $header_num); echo Search::showHeaderItem($output_type, __('Location'), $header_num); } echo Search::showHeaderItem($output_type, __('Model'), $header_num); echo Search::showHeaderItem($output_type, __('Supplier'), $header_num); if ($itemtable == 'disposal') { echo Search::showHeaderItem($output_type, __('Disposal date', 'financialreports'), $header_num); echo Search::showHeaderItem($output_type, __('Comments'), $header_num); } else { echo Search::showHeaderItem($output_type, __('Purchase Price HT in', 'financialreports') . " " . _n('Euro', 'Euros', 2, 'financialreports'), $header_num); } // End Line for column headers echo Search::showEndLine($output_type); $row_num = 1; if ($_SESSION[$display]) { foreach ($items as $data) { $row_num++; $item_num = 1; echo Search::showNewLine($output_type, $row_num % 2); //name $link = Toolbox::getItemTypeFormURL($data["TYPE"]); $output_iddev = "<a href='" . $link . "?id=" . $data["id"] . "'>" . $data["ITEM_0"] . ($_SESSION["glpiis_ids_visible"] ? " (" . $data["id"] . ")" : "") . "</a>"; echo Search::showItem($output_type, $output_iddev, $item_num, $row_num); //otherserial echo Search::showItem($output_type, $data["ITEM_2"], $item_num, $row_num); //buy_date echo Search::showItem($output_type, Html::convdate($data["ITEM_3"]), $item_num, $row_num); if ($itemtable != 'disposal') { //user $username_computer = formatUserName($data["ITEM_4_3"], $data["ITEM_4"], $data["ITEM_4_2"], $data["ITEM_4_4"]); $output_iduser = "******" . $CFG_GLPI["root_doc"] . "/front/user.form.php?id=" . $data["ITEM_4_3"] . "'>" . $username_computer . "</a>"; if ($data["ITEM_4_3"] && $data["ITEM_5"]) { $output_iduser .= " / <a href='" . $CFG_GLPI["root_doc"] . "/front/group.form.php?id=" . $data["ITEM_5_1"] . "'>" . $data["ITEM_5"] . ($_SESSION["glpiis_ids_visible"] ? " (" . $data["ITEM_5_1"] . ")" : "") . "</a>"; } else { if (!isset($data["ITEM_4_3"]) && $data["ITEM_5"]) { $output_iduser = "******" . $CFG_GLPI["root_doc"] . "/front/group.form.php?id=" . $data["ITEM_5_1"] . "'>" . $data["ITEM_5"] . ($_SESSION["glpiis_ids_visible"] ? " (" . $data["ITEM_5_1"] . ")" : "") . "</a>"; } else { if (!isset($data["ITEM_4_3"]) && !isset($data["ITEM_5"])) { $output_iduser = __('In stock / available', 'financialreports'); } } } echo Search::showItem($output_type, $output_iduser, $item_num, $row_num); //location echo Search::showItem($output_type, $data["ITEM_9"], $item_num, $row_num); } //model echo Search::showItem($output_type, $data["ITEM_6"], $item_num, $row_num); //manufacturer echo Search::showItem($output_type, $data["ITEM_7"], $item_num, $row_num); if ($itemtable == 'disposal') { //comments echo Search::showItem($output_type, Html::convdate($data["ITEM_10"]), $item_num, $row_num); echo Search::showItem($output_type, nl2br($data["ITEM_9"]), $item_num, $row_num); } else { //value if ($output_type == Search::HTML_OUTPUT) { $ouput_value = "<font color='red'>" . Html::formatNumber($data["ITEM_8"]) . "</font>"; } else { $ouput_value = Html::formatNumber($data["ITEM_8"]); } echo Search::showItem($output_type, $ouput_value, $item_num, $row_num); } echo Search::showEndLine($output_type); } } echo Search::showFooter($output_type); } return $master_total; }
function showTotal($output_type, &$num, $row_num) { echo Search::showItem($output_type, $this->withtotal ? $this->displayTotal($output_type) : '', $num, $row_num, $this->extrabold); }
static function showImport($row_num, $item_num, $line, $output_type, $configID, $status, $imported) { global $DB, $CFG_GLPI; $infocom = new Infocom(); $canedit = Session::haveRight(static::$rightname, UPDATE) && $infocom->canUpdate(); $config = new PluginManufacturersimportsConfig(); $config->getFromDB($configID); $suppliername = $config->fields["name"]; $supplierUrl = $config->fields["supplier_url"]; $supplierId = $config->fields["suppliers_id"]; $supplierWarranty = $config->fields["warranty_duration"]; $supplierkey = $config->fields["supplier_key"]; $supplierclass = "PluginManufacturersimports" . $suppliername; $supplier = new $supplierclass(); $row_num++; if ($suppliername) { $model = new PluginManufacturersimportsModel(); $otherSerial = $model->checkIfModelNeeds($line["itemtype"], $line["id"]); echo Search::showNewLine($output_type, $row_num % 2); $ic = new Infocom(); $output_check = ""; if ($canedit && $output_type == Search::HTML_OUTPUT) { $sel = ""; if (isset($_GET["select"]) && $_GET["select"] == "all") { $sel = "checked"; } $output_check = $supplier->showCheckbox($line["id"], $sel, $otherSerial); } echo Search::showItem($output_type, $output_check, $item_num, $row_num); $link = Toolbox::getItemTypeFormURL($line["itemtype"]); $ID = ""; if ($_SESSION["glpiis_ids_visible"] || empty($line["name"])) { $ID .= " (" . $line["id"] . ")"; } $output_link = "<a href='" . $link . "?id=" . $line["id"] . "'>" . $line["name"] . $ID . "</a><br>" . $line["model_name"]; echo Search::showItem($output_type, $output_link, $item_num, $row_num); if (Session::isMultiEntitiesMode()) { echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_entities", $line['entities_id']), $item_num, $row_num); } $url = self::selectSupplier($suppliername, $line["serial"], $otherSerial, $supplierkey); //serial echo Search::showItem($output_type, $line["serial"], $item_num, $row_num); //otherserial echo $supplier->showItem($output_type, $otherSerial, $item_num, $row_num); //display infocoms $output_ic = ""; if ($ic->getfromDBforDevice($line["itemtype"], $line["id"])) { $output_ic .= _n('Supplier', 'Suppliers', 1) . ":" . Dropdown::getDropdownName("glpi_suppliers", $ic->fields["suppliers_id"]) . "<br>"; $output_ic .= __('Date of purchase') . " : " . Html::convdate($ic->fields["buy_date"]) . "<br>"; $output_ic .= __('Start date of warranty') . ":" . Html::convdate($ic->fields["warranty_date"]) . "<br>"; if ($ic->fields["warranty_duration"] == -1) { $output_ic .= __('Warranty duration') . ":" . __('Lifelong') . "<br>"; } else { $output_ic .= __('Warranty duration') . ":" . $ic->fields["warranty_duration"] . " " . __('month') . "<br>"; } $tmpdat = Infocom::getWarrantyExpir($ic->fields["warranty_date"], $ic->fields["warranty_duration"]); $output_ic .= sprintf(__('Valid to %s'), $tmpdat); } else { $output_ic .= ""; } echo Search::showItem($output_type, $output_ic, $item_num, $row_num); if ($imported != self::IMPORTED) { //display enterprise and warranty selection echo "<td>"; if (Session::isMultiEntitiesMode() && $supplierId) { $item = new Supplier(); $item->getFromDB($supplierId); if ($item->fields["is_recursive"] || $item->fields["entities_id"] == $line['entities_id']) { Dropdown::show('Supplier', array('name' => "to_suppliers_id" . $line["id"], 'value' => $supplierId, 'comments' => 0, 'entity' => $line['entities_id'])); } else { echo "<span class='plugin_manufacturersimports_import_KO'>"; echo __('The choosen supplier is not recursive', 'manufacturersimports') . "</span>"; echo "<input type='hidden' name='to_suppliers_id" . $line["id"] . "' value='-1'>"; } } else { Dropdown::show('Supplier', array('name' => "to_suppliers_id" . $line["id"], 'value' => $supplierId, 'comments' => 0, 'entity' => $line['entities_id'])); } echo "</td>"; $supplier->showWarrantyItem($line["id"], $supplierWarranty); } else { //display enterprise and warranty selection echo "<td>" . Dropdown::getDropdownName("glpi_suppliers", $ic->fields["suppliers_id"]) . "</td>"; if ($ic->fields["warranty_duration"] == -1) { echo "<td>" . __('Lifelong') . "</td>"; } else { echo "<td>" . $ic->fields["warranty_duration"] . "</td>"; } } //supplier url //url to supplier $output_url = "<a href='" . $url . "' target='_blank'>" . __('Manufacturer information', 'manufacturersimports') . "</a>"; echo Search::showItem($output_type, $output_url, $item_num, $row_num); //status if ($imported != self::IMPORTED) { if ($status != 2) { $output_doc = __('Not yet imported', 'manufacturersimports'); } else { $output_doc = "<span class='plugin_manufacturersimports_import_KO'>" . __('Problem during the importation', 'manufacturersimports'); if (!empty($data["date_import"])) { $output_doc .= " (" . Html::convdate($data["date_import"]) . ")"; } $output_doc .= "</span>"; } } else { $output_doc = "<span class='plugin_manufacturersimports_import_OK'>" . __('Already imported', 'manufacturersimports'); if (!empty($line["date_import"])) { $output_doc .= " (" . Html::convdate($line["date_import"]) . ")"; } $output_doc .= "</span>"; } echo Search::showItem($output_type, $output_doc, $item_num, $row_num); //no associated doc echo $supplier->showDocItem($output_type, $item_num, $row_num, $line["documents_id"]); } }
function showMinimalList($params) { global $DB, $CFG_GLPI; $itemtype = "PluginResourcesDirectory"; $itemtable = $this->table; if (class_exists($itemtype)) { $item = new $itemtype(); } // Default values of parameters $p['link'] = array(); // $p['field'] = array(); // $p['contains'] = array(); // $p['searchtype'] = array(); // $p['sort'] = '1'; // $p['order'] = 'ASC'; // $p['start'] = 0; // $p['is_deleted'] = 0; $p['id'] = 0; $p['withtemplate'] = 0; $p['export_all'] = 0; $p['link2'] = ''; // $p['contains2'] = ''; // $p['field2'] = ''; // $p['itemtype2'] = ''; $p['searchtype2'] = ''; foreach ($params as $key => $val) { $p[$key] = $val; } if ($p['export_all']) { $p['start'] = 0; } $PluginResourcesResource = new PluginResourcesResource(); $canedit = $PluginResourcesResource->can($p['id'], 'w'); // Manage defautlt seachtype value : for bookmark compatibility if (count($p['contains'])) { foreach ($p['contains'] as $key => $val) { if (!isset($p['searchtype'][$key])) { $p['searchtype'][$key] = 'contains'; } } } if (is_array($p['contains2']) && count($p['contains2'])) { foreach ($p['contains2'] as $key => $val) { if (!isset($p['searchtype2'][$key])) { $p['searchtype2'][$key] = 'contains'; } } } $target = $CFG_GLPI["root_doc"] . "/plugins/resources/front/directory.php"; $limitsearchopt = Search::getCleanedOptions("PluginResourcesDirectory"); $LIST_LIMIT = $_SESSION['glpilist_limit']; // Set display type for export if define $output_type = Search::HTML_OUTPUT; if (isset($_GET['display_type'])) { $output_type = $_GET['display_type']; // Limit to 10 element if ($_GET['display_type'] == Search::GLOBAL_SEARCH) { $LIST_LIMIT = Search::GLOBAL_DISPLAY_COUNT; } } $entity_restrict = $PluginResourcesResource->isEntityAssign(); // Get the items to display $toview = Search::addDefaultToView("User"); // Add items to display depending of personal prefs $displaypref = DisplayPreference::getForTypeUser("PluginResourcesDirectory", Session::getLoginUserID()); if (count($displaypref)) { foreach ($displaypref as $val) { array_push($toview, $val); } } // Add searched items if (count($p['field']) > 0) { foreach ($p['field'] as $key => $val) { if (!in_array($val, $toview) && $val != 'all' && $val != 'view') { array_push($toview, $val); } } } // Add order item if (!in_array($p['sort'], $toview)) { array_push($toview, $p['sort']); } // Clean toview array $toview = array_unique($toview); foreach ($toview as $key => $val) { if (!isset($limitsearchopt[$val])) { unset($toview[$key]); } } $toview_count = count($toview); //// 1 - SELECT $query = "SELECT " . Search::addDefaultSelect("User"); // Add select for all toview item foreach ($toview as $key => $val) { $query .= self::addSelect("PluginResourcesDirectory", $val, $key, 0); } $query .= "`glpi_plugin_resources_resources`.`id` AS id "; //// 2 - FROM AND LEFT JOIN // Set reference table $query .= " FROM `" . $itemtable . "`"; // Init already linked tables array in order not to link a table several times $already_link_tables = array(); // Put reference table array_push($already_link_tables, $itemtable); // Add default join $COMMONLEFTJOIN = Search::addDefaultJoin("PluginResourcesDirectory", $itemtable, $already_link_tables); $query .= $COMMONLEFTJOIN; $searchopt = array(); $searchopt["PluginResourcesDirectory"] =& Search::getOptions("PluginResourcesDirectory"); // Add all table for toview items foreach ($toview as $key => $val) { $query .= Search::addLeftJoin($itemtype, $itemtable, $already_link_tables, $searchopt["PluginResourcesDirectory"][$val]["table"], $searchopt["PluginResourcesDirectory"][$val]["linkfield"], 0, 0, $searchopt["PluginResourcesDirectory"][$val]["joinparams"]); } // Search all case : if (in_array("all", $p['field'])) { foreach ($searchopt[$itemtype] as $key => $val) { // Do not search on Group Name if (is_array($val)) { $query .= Search::addLeftJoin($itemtype, $itemtable, $already_link_tables, $searchopt["PluginResourcesDirectory"][$key]["table"], $searchopt["PluginResourcesDirectory"][$key]["linkfield"], 0, 0, $searchopt["PluginResourcesDirectory"][$key]["joinparams"]); } } } $ASSIGN = " `glpi_plugin_resources_resources`.`is_leaving` = 0 AND `glpi_users`.`is_active` = 1 AND "; //// 3 - WHERE // default string $COMMONWHERE = Search::addDefaultWhere($itemtype); $first = empty($COMMONWHERE); // Add deleted if item have it if ($PluginResourcesResource && $PluginResourcesResource->maybeDeleted()) { $LINK = " AND "; if ($first) { $LINK = " "; $first = false; } $COMMONWHERE .= $LINK . "`glpi_plugin_resources_resources`.`is_deleted` = '" . $p['is_deleted'] . "' "; } // Remove template items if ($PluginResourcesResource && $PluginResourcesResource->maybeTemplate()) { $LINK = " AND "; if ($first) { $LINK = " "; $first = false; } $COMMONWHERE .= $LINK . "`glpi_plugin_resources_resources`.`is_template` = '0' "; } // Add Restrict to current entities if ($entity_restrict) { $LINK = " AND "; if ($first) { $LINK = " "; $first = false; } if (isset($CFG_GLPI["union_search_type"][$itemtype])) { // Will be replace below in Union/Recursivity Hack $COMMONWHERE .= $LINK . " ENTITYRESTRICT "; } else { $COMMONWHERE .= getEntitiesRestrictRequest($LINK, "glpi_plugin_resources_resources", '', '', $PluginResourcesResource->maybeRecursive()); } } $WHERE = ""; $HAVING = ""; // Add search conditions // If there is search items if ($_SESSION["glpisearchcount"]["PluginResourcesDirectory"] > 0 && count($p['contains']) > 0) { for ($key = 0; $key < $_SESSION["glpisearchcount"]["PluginResourcesDirectory"]; $key++) { // if real search (strlen >0) and not all and view search if (isset($p['contains'][$key]) && strlen($p['contains'][$key]) > 0) { // common search if ($p['field'][$key] != "all" && $p['field'][$key] != "view") { $LINK = " "; $NOT = 0; $tmplink = ""; if (is_array($p['link']) && isset($p['link'][$key])) { if (strstr($p['link'][$key], "NOT")) { $tmplink = " " . str_replace(" NOT", "", $p['link'][$key]); $NOT = 1; } else { $tmplink = " " . $p['link'][$key]; } } else { $tmplink = " AND "; } if (isset($searchopt["PluginResourcesDirectory"][$p['field'][$key]]["usehaving"])) { // Manage Link if not first item if (!empty($HAVING)) { $LINK = $tmplink; } // Find key $item_num = array_search($p['field'][$key], $toview); $HAVING .= Search::addHaving($LINK, $NOT, "PluginResourcesDirectory", $p['field'][$key], $p['searchtype'][$key], $p['contains'][$key], 0, $item_num); } else { // Manage Link if not first item if (!empty($WHERE)) { $LINK = $tmplink; } $WHERE .= self::addWhere($LINK, $NOT, "PluginResourcesDirectory", $p['field'][$key], $p['searchtype'][$key], $p['contains'][$key]); } // view and all search } else { $LINK = " OR "; $NOT = 0; $globallink = " AND "; if (is_array($p['link']) && isset($p['link'][$key])) { switch ($p['link'][$key]) { case "AND": $LINK = " OR "; $globallink = " AND "; break; case "AND NOT": $LINK = " AND "; $NOT = 1; $globallink = " AND "; break; case "OR": $LINK = " OR "; $globallink = " OR "; break; case "OR NOT": $LINK = " AND "; $NOT = 1; $globallink = " OR "; break; } } else { $tmplink = " AND "; } // Manage Link if not first item if (!empty($WHERE)) { $WHERE .= $globallink; } $WHERE .= " ( "; $first2 = true; $items = array(); if ($p['field'][$key] == "all") { $items = $searchopt["PluginResourcesDirectory"]; } else { // toview case : populate toview foreach ($toview as $key2 => $val2) { $items[$val2] = $searchopt["PluginResourcesDirectory"][$val2]; } } foreach ($items as $key2 => $val2) { if (is_array($val2)) { // Add Where clause if not to be done in HAVING CLAUSE if (!isset($val2["usehaving"])) { $tmplink = $LINK; if ($first2) { $tmplink = " "; $first2 = false; } $WHERE .= self::addWhere($tmplink, $NOT, "PluginResourcesDirectory", $key2, $p['searchtype'][$key], $p['contains'][$key]); } } } $WHERE .= " ) "; } } } } if (!empty($WHERE) || !empty($COMMONWHERE)) { if (!empty($COMMONWHERE)) { $WHERE = ' WHERE ' . $ASSIGN . ' ' . $COMMONWHERE . (!empty($WHERE) ? ' AND ( ' . $WHERE . ' )' : ''); } else { $WHERE = ' WHERE ' . $ASSIGN . ' ' . $WHERE . ' '; } $first = false; } $query .= $WHERE; //// 7 - Manage GROUP BY $GROUPBY = ""; // Meta Search / Search All / Count tickets if (in_array('all', $p['field'])) { $GROUPBY = " GROUP BY `" . $itemtable . "`.`id`"; } if (empty($GROUPBY)) { foreach ($toview as $key2 => $val2) { if (!empty($GROUPBY)) { break; } if (isset($searchopt["PluginResourcesDirectory"][$val2]["forcegroupby"])) { $GROUPBY = " GROUP BY `" . $itemtable . "`.`id`"; } } } $query .= $GROUPBY; //// 4 - ORDER $ORDER = " ORDER BY `id` "; foreach ($toview as $key => $val) { if ($p['sort'] == $val) { $ORDER = Search::addOrderBy($itemtype, $p['sort'], $p['order'], $key); } } $query .= $ORDER; // Get it from database if ($result = $DB->query($query)) { $numrows = $DB->numrows($result); $globallinkto = Search::getArrayUrlLink("field", $p['field']) . Search::getArrayUrlLink("link", $p['link']) . Search::getArrayUrlLink("contains", $p['contains']) . Search::getArrayUrlLink("searchtype", $p['searchtype']) . Search::getArrayUrlLink("field2", $p['field2']) . Search::getArrayUrlLink("contains2", $p['contains2']) . Search::getArrayUrlLink("searchtype2", $p['searchtype2']) . Search::getArrayUrlLink("itemtype2", $p['itemtype2']) . Search::getArrayUrlLink("link2", $p['link2']); $parameters = "sort=" . $p['sort'] . "&order=" . $p['order'] . $globallinkto; if ($output_type == Search::GLOBAL_SEARCH) { if (class_exists($itemtype)) { echo "<div class='center'><h2>" . $this->getTypeName(); // More items if ($numrows > $p['start'] + Search::GLOBAL_DISPLAY_COUNT) { echo " <a href='{$target}?{$parameters}'>" . __('All') . "</a>"; } echo "</h2></div>\n"; } else { return false; } } if ($p['start'] < $numrows) { // Pager if ($output_type == Search::HTML_OUTPUT) { // HTML display - massive modif $search_config = ""; if ($item->canCreate() && $canedit) { $tmp = " class='pointer' onClick=\"var w = window.open('" . $CFG_GLPI["root_doc"] . "/front/popup.php?popup=search_config&itemtype=" . $itemtype . "' ,'glpipopup', " . "'height=400, width=1000, top=100, left=100, scrollbars=yes' ); w.focus();\""; $search_config = "<img alt='" . __('Select default items to show') . "' title='" . __('Select default items to show') . "' src='" . $CFG_GLPI["root_doc"] . "/pics/options_search.png' "; $search_config .= $tmp . ">"; } //echo Search::showHeaderItem($output_type,$search_config,$header_num,"",0,$p['order']); } // Pager if ($output_type == Search::HTML_OUTPUT) { Html::printPager($p['start'], $numrows, $target, $parameters, $itemtype, 0, $search_config); echo "<br>"; } // Define begin and end var for loop // Search case $begin_display = $p['start']; $end_display = $p['start'] + $LIST_LIMIT; // Export All case if ($p['export_all']) { $begin_display = 0; $end_display = $numrows; } //massive action $sel = ""; if (isset($_GET["select"]) && $_GET["select"] == "all") { $sel = "checked"; } if ($item->canCreate() && $canedit && $output_type == Search::HTML_OUTPUT && $p['withtemplate'] != 2) { Html::openMassiveActionsForm('massform' . $itemtype); $massiveactionparams = array('num_displayed' => $end_display - $begin_display, 'fixed' => false, 'is_deleted' => $p['is_deleted']); Html::showMassiveActions("PluginResourcesDirectory", $massiveactionparams); } // Add toview elements $nbcols = $toview_count; if ($output_type == Search::HTML_OUTPUT) { // HTML display - massive modif $nbcols++; } // Display List Header echo Search::showHeader($output_type, $end_display - $begin_display + 1, $nbcols); $header_num = 1; // Display column Headers for toview items $headers_line = ''; $headers_line_top = ''; $headers_line_bottom = ''; echo Search::showNewLine($output_type); if ($output_type == Search::HTML_OUTPUT && $item->canCreate() && $canedit) { // HTML display - massive modif $headers_line_top .= Search::showHeaderItem($output_type, Html::getCheckAllAsCheckbox('massform' . $itemtype), $header_num, "", 0, $p['order']); $headers_line_bottom .= Search::showHeaderItem($output_type, Html::getCheckAllAsCheckbox('massform' . $itemtype), $header_num, "", 0, $p['order']); } // Display column Headers for toview items foreach ($toview as $key => $val) { $linkto = ''; if (!isset($searchopt["PluginResourcesDirectory"][$val]['nosort']) || !$searchopt["PluginResourcesDirectory"][$val]['nosort']) { $linkto = "javascript:reloadTab('sort=" . $val . "&order=" . ($p['order'] == "ASC" ? "DESC" : "ASC") . "&start=" . $p['start'] . $globallinkto . "')"; } $headers_line .= Search::showHeaderItem($output_type, $searchopt["PluginResourcesDirectory"][$val]["name"], $header_num, $linkto, $p['sort'] == $val, $p['order']); } // End Line for column headers $headers_line .= Search::showEndLine($output_type); $headers_line_top .= $headers_line; $headers_line_bottom .= $headers_line; echo $headers_line_top; $DB->data_seek($result, $p['start']); // Define begin and end var for loop // Search case $i = $begin_display; // Init list of items displayed if ($output_type == Search::HTML_OUTPUT) { Session::initNavigateListItems($itemtype); } // Num of the row (1=header_line) $row_num = 1; // Display Loop while ($i < $numrows && $i < $end_display) { $item_num = 1; $data = $DB->fetch_array($result); $i++; $row_num++; echo Search::showNewLine($output_type, $i % 2); Session::addToNavigateListItems($itemtype, $data['id']); $tmpcheck = ""; if ($item->canCreate() && $canedit && $output_type == Search::HTML_OUTPUT && $p['withtemplate'] != 2) { $sel = ""; $tmpcheck = "<input type='checkbox' name='item[" . $data["id"] . "]' value='1' {$sel}>"; echo Search::showItem($output_type, $tmpcheck, $item_num, $row_num, "width='10'"); } foreach ($toview as $key => $val) { echo Search::showItem($output_type, Search::giveItem("PluginResourcesDirectory", $val, $data, $key), $item_num, $row_num, Search::displayConfigItem("PluginResourcesDirectory", $val, $data, $key)); } echo Search::showEndLine($output_type); } // Close Table $title = ""; // Create title if ($output_type == Search::PDF_OUTPUT_PORTRAIT || $output_type == Search::PDF_OUTPUT_LANDSCAPE) { $title .= self::getTypeName(1); } // Display footer echo Search::showFooter($output_type, $title); //massive action if ($item->canCreate() && $canedit && $output_type == Search::HTML_OUTPUT && $p['withtemplate'] != 2) { $massiveactionparams['ontop'] = false; $massiveactionparams['fixed'] = false; Html::showMassiveActions("PluginResourcesDirectory", $massiveactionparams); Html::closeForm(); } else { echo "</table></div>"; } // Pager if ($output_type == Search::HTML_OUTPUT) { echo "<br>"; Html::printPager($p['start'], $numrows, $target, $parameters, "PluginResourcesDirectory", 0, $search_config); } } else { echo Search::showError($output_type); } } }
/** * Display a line for an object * * @since version 0.85 (befor in each object with differents parameters) * * @param $id Integer ID of the object * @param $options array of options * output_type : Default output type (see Search class / default Search::HTML_OUTPUT) * row_num : row num used for display * type_for_massiveaction : itemtype for massive action * id_for_massaction : default 0 means no massive action * followups : only for Tickets : show followup columns */ static function showShort($id, $options = array()) { global $CFG_GLPI, $DB; $p['output_type'] = Search::HTML_OUTPUT; $p['row_num'] = 0; $p['type_for_massiveaction'] = 0; $p['id_for_massiveaction'] = 0; $p['followups'] = false; if (count($options)) { foreach ($options as $key => $val) { $p[$key] = $val; } } $rand = mt_rand(); /// TODO to be cleaned. Get datas and clean display links // Prints a job in short form // Should be called in a <table>-segment // Print links or not in case of user view // Make new job object and fill it from database, if success, print it $item = new static(); $candelete = static::canDelete(); $canupdate = Session::haveRight(static::$rightname, UPDATE); $showprivate = Session::haveRight('followup', TicketFollowup::SEEPRIVATE); $align = "class='center"; $align_desc = "class='left"; if ($p['followups']) { $align .= " top'"; $align_desc .= " top'"; } else { $align .= "'"; $align_desc .= "'"; } if ($item->getFromDB($id)) { $item_num = 1; $bgcolor = $_SESSION["glpipriority_" . $item->fields["priority"]]; echo Search::showNewLine($p['output_type'], $p['row_num'] % 2); $check_col = ''; if (($candelete || $canupdate) && $p['output_type'] == Search::HTML_OUTPUT && $p['id_for_massiveaction']) { $check_col = Html::getMassiveActionCheckBox($p['type_for_massiveaction'], $p['id_for_massiveaction']); } echo Search::showItem($p['output_type'], $check_col, $item_num, $p['row_num'], $align); // First column $first_col = sprintf(__('%1$s: %2$s'), __('ID'), $item->fields["id"]); if ($p['output_type'] == Search::HTML_OUTPUT) { $first_col .= "<br><img src='" . static::getStatusIconURL($item->fields["status"]) . "'\n alt=\"" . static::getStatus($item->fields["status"]) . "\" title=\"" . static::getStatus($item->fields["status"]) . "\">"; } else { $first_col = sprintf(__('%1$s - %2$s'), $first_col, static::getStatus($item->fields["status"])); } echo Search::showItem($p['output_type'], $first_col, $item_num, $p['row_num'], $align); // Second column if ($item->fields['status'] == static::CLOSED) { $second_col = sprintf(__('Closed on %s'), ($p['output_type'] == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($item->fields['closedate'])); } else { if ($item->fields['status'] == static::SOLVED) { $second_col = sprintf(__('Solved on %s'), ($p['output_type'] == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($item->fields['solvedate'])); } else { if ($item->fields['begin_waiting_date']) { $second_col = sprintf(__('Put on hold on %s'), ($p['output_type'] == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($item->fields['begin_waiting_date'])); } else { if ($item->fields['due_date']) { $second_col = sprintf(__('%1$s: %2$s'), __('Due date'), ($p['output_type'] == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($item->fields['due_date'])); } else { $second_col = sprintf(__('Opened on %s'), ($p['output_type'] == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($item->fields['date'])); } } } } echo Search::showItem($p['output_type'], $second_col, $item_num, $p['row_num'], $align . " width=130"); // Second BIS column $second_col = Html::convDateTime($item->fields["date_mod"]); echo Search::showItem($p['output_type'], $second_col, $item_num, $p['row_num'], $align . " width=90"); // Second TER column if (count($_SESSION["glpiactiveentities"]) > 1) { $second_col = Dropdown::getDropdownName('glpi_entities', $item->fields['entities_id']); echo Search::showItem($p['output_type'], $second_col, $item_num, $p['row_num'], $align . " width=100"); } // Third Column echo Search::showItem($p['output_type'], "<span class='b'>" . static::getPriorityName($item->fields["priority"]) . "</span>", $item_num, $p['row_num'], "{$align} bgcolor='{$bgcolor}'"); // Fourth Column $fourth_col = ""; foreach ($item->getUsers(CommonITILActor::REQUESTER) as $d) { $userdata = getUserName($d["users_id"], 2); $fourth_col .= sprintf(__('%1$s %2$s'), "<span class='b'>" . $userdata['name'] . "</span>", Html::showToolTip($userdata["comment"], array('link' => $userdata["link"], 'display' => false))); $fourth_col .= "<br>"; } foreach ($item->getGroups(CommonITILActor::REQUESTER) as $d) { $fourth_col .= Dropdown::getDropdownName("glpi_groups", $d["groups_id"]); $fourth_col .= "<br>"; } echo Search::showItem($p['output_type'], $fourth_col, $item_num, $p['row_num'], $align); // Fifth column $fifth_col = ""; foreach ($item->getUsers(CommonITILActor::ASSIGN) as $d) { $userdata = getUserName($d["users_id"], 2); $fifth_col .= sprintf(__('%1$s %2$s'), "<span class='b'>" . $userdata['name'] . "</span>", Html::showToolTip($userdata["comment"], array('link' => $userdata["link"], 'display' => false))); $fifth_col .= "<br>"; } foreach ($item->getGroups(CommonITILActor::ASSIGN) as $d) { $fifth_col .= Dropdown::getDropdownName("glpi_groups", $d["groups_id"]); $fifth_col .= "<br>"; } foreach ($item->getSuppliers(CommonITILActor::ASSIGN) as $d) { $fifth_col .= Dropdown::getDropdownName("glpi_suppliers", $d["suppliers_id"]); $fifth_col .= "<br>"; } echo Search::showItem($p['output_type'], $fifth_col, $item_num, $p['row_num'], $align); // Sixth Colum // Ticket : simple link to item $sixth_col = ""; $is_deleted = false; $item_ticket = new Item_Ticket(); $data = $item_ticket->find("`tickets_id` = " . $item->fields['id']); if ($item->getType() == 'Ticket') { if (!empty($data)) { foreach ($data as $val) { if (!empty($val["itemtype"]) && $val["items_id"] > 0) { if ($object = getItemForItemtype($val["itemtype"])) { if ($object->getFromDB($val["items_id"])) { $is_deleted = $object->isDeleted(); $sixth_col .= $object->getTypeName(); $sixth_col .= " - <span class='b'>"; if ($item->canView()) { $sixth_col .= $object->getLink(); } else { $sixth_col .= $object->getNameID(); } $sixth_col .= "</span><br>"; } } } } } else { $sixth_col = __('General'); } echo Search::showItem($p['output_type'], $sixth_col, $item_num, $p['row_num'], $is_deleted ? " class='center deleted' " : $align); } // Seventh column echo Search::showItem($p['output_type'], "<span class='b'>" . Dropdown::getDropdownName('glpi_itilcategories', $item->fields["itilcategories_id"]) . "</span>", $item_num, $p['row_num'], $align); // Eigth column $eigth_column = "<span class='b'>" . $item->getName() . "</span> "; // Add link if ($item->canViewItem()) { $eigth_column = "<a id='" . $item->getType() . $item->fields["id"] . "{$rand}' href=\"" . $item->getLinkURL() . "\">{$eigth_column}</a>"; if ($p['followups'] && $p['output_type'] == Search::HTML_OUTPUT) { $eigth_column .= TicketFollowup::showShortForTicket($item->fields["id"]); } else { if (method_exists($item, 'numberOfFollowups')) { $eigth_column = sprintf(__('%1$s (%2$s)'), $eigth_column, sprintf(__('%1$s - %2$s'), $item->numberOfFollowups($showprivate), $item->numberOfTasks($showprivate))); } else { $eigth_column = sprintf(__('%1$s (%2$s)'), $eigth_column, $item->numberOfTasks($showprivate)); } } } if ($p['output_type'] == Search::HTML_OUTPUT) { $eigth_column = sprintf(__('%1$s %2$s'), $eigth_column, Html::showToolTip(Html::clean(Html::entity_decode_deep($item->fields["content"])), array('display' => false, 'applyto' => $item->getType() . $item->fields["id"] . $rand))); } echo Search::showItem($p['output_type'], $eigth_column, $item_num, $p['row_num'], $align_desc . " width='200'"); //tenth column $tenth_column = ''; $planned_infos = ''; $tasktype = $item->getType() . "Task"; $plan = new $tasktype(); $items = array(); foreach ($DB->request($plan->getTable(), array($item->getForeignKeyField() => $item->fields['id'])) as $plan) { if (isset($plan['begin']) && $plan['begin']) { $items[$plan['id']] = $plan['id']; $planned_infos .= sprintf(__('From %s') . ($p['output_type'] == Search::HTML_OUTPUT ? '<br>' : ''), Html::convDateTime($plan['begin'])); $planned_infos .= sprintf(__('To %s') . ($p['output_type'] == Search::HTML_OUTPUT ? '<br>' : ''), Html::convDateTime($plan['end'])); if ($plan['users_id_tech']) { $planned_infos .= sprintf(__('By %s') . ($p['output_type'] == Search::HTML_OUTPUT ? '<br>' : ''), getUserName($plan['users_id_tech'])); } $planned_infos .= "<br>"; } } unset($i, $j); $tenth_column = count($items); if ($tenth_column) { $tenth_column = "<span class='pointer'\n id='" . $item->getType() . $item->fields["id"] . "planning{$rand}'>" . $tenth_column . '</span>'; $tenth_column = sprintf(__('%1$s %2$s'), $tenth_column, Html::showToolTip($planned_infos, array('display' => false, 'applyto' => $item->getType() . $item->fields["id"] . "planning" . $rand))); } echo Search::showItem($p['output_type'], $tenth_column, $item_num, $p['row_num'], $align_desc . " width='150'"); // Finish Line echo Search::showEndLine($p['output_type']); } else { echo "<tr class='tab_bg_2'>"; echo "<td colspan='6' ><i>" . __('No item in progress.') . "</i></td></tr>"; } }
static function showShort($id, $followups, $output_type = HTML_OUTPUT, $row_num = 0) { global $CFG_GLPI, $LANG; $rand = mt_rand(); /// TODO to be cleaned. Get datas and clean display links // Prints a job in short form // Should be called in a <table>-segment // Print links or not in case of user view // Make new job object and fill it from database, if success, print it $job = new self(); $candelete = haveRight("delete_ticket", "1"); $canupdate = haveRight("update_ticket", "1"); $showprivate = haveRight("show_full_ticket", "1"); $align = "class='center"; $align_desc = "class='left"; if ($followups) { $align .= " top'"; $align_desc .= " top'"; } else { $align .= "'"; $align_desc .= "'"; } if ($job->getFromDB($id)) { $item_num = 1; $bgcolor = $_SESSION["glpipriority_" . $job->fields["priority"]]; echo Search::showNewLine($output_type, $row_num % 2); // First column $first_col = "ID : " . $job->fields["id"]; if ($output_type == HTML_OUTPUT) { $first_col .= "<br><img src='" . $CFG_GLPI["root_doc"] . "/pics/" . $job->fields["status"] . ".png'\n alt=\"" . self::getStatus($job->fields["status"]) . "\" title=\"" . self::getStatus($job->fields["status"]) . "\">"; } else { $first_col .= " - " . self::getStatus($job->fields["status"]); } if (($candelete || $canupdate) && $output_type == HTML_OUTPUT) { $sel = ""; if (isset($_GET["select"]) && $_GET["select"] == "all") { $sel = "checked"; } if (isset($_SESSION['glpimassiveactionselected'][$job->fields["id"]])) { $sel = "checked"; } $first_col .= " <input type='checkbox' name='item[" . $job->fields["id"] . "]'\n value='1' {$sel}>"; } echo Search::showItem($output_type, $first_col, $item_num, $row_num, $align); // Second column if ($job->fields['status'] == 'closed') { $second_col = $LANG['joblist'][12]; if ($output_type == HTML_OUTPUT) { $second_col .= " :<br>"; } else { $second_col .= " : "; } $second_col .= convDateTime($job->fields['closedate']); } else { if ($job->fields['status'] == 'solved') { $second_col = $LANG['joblist'][14]; if ($output_type == HTML_OUTPUT) { $second_col .= " :<br>"; } else { $second_col .= " : "; } $second_col .= convDateTime($job->fields['solvedate']); } else { if ($job->fields['begin_waiting_date']) { $second_col = $LANG['joblist'][26]; if ($output_type == HTML_OUTPUT) { $second_col .= " :<br>"; } else { $second_col .= " : "; } $second_col .= convDateTime($job->fields['begin_waiting_date']); } else { if ($job->fields['due_date']) { $second_col = $LANG['sla'][5]; if ($output_type == HTML_OUTPUT) { $second_col .= " :<br>"; } else { $second_col .= " : "; } $second_col .= convDateTime($job->fields['due_date']); } else { $second_col = $LANG['joblist'][11]; if ($output_type == HTML_OUTPUT) { $second_col .= " :<br>"; } else { $second_col .= " : "; } $second_col .= convDateTime($job->fields['date']); } } } } echo Search::showItem($output_type, $second_col, $item_num, $row_num, $align . " width=130"); // Second BIS column $second_col = convDateTime($job->fields["date_mod"]); echo Search::showItem($output_type, $second_col, $item_num, $row_num, $align . " width=90"); // Second TER column if (count($_SESSION["glpiactiveentities"]) > 1) { if ($job->fields['entities_id'] == 0) { $second_col = $LANG['entity'][2]; } else { $second_col = Dropdown::getDropdownName("glpi_entities", $job->fields['entities_id']); } echo Search::showItem($output_type, $second_col, $item_num, $row_num, $align . " width=100"); } // Third Column echo Search::showItem($output_type, "<strong>" . self::getPriorityName($job->fields["priority"]) . "</strong>", $item_num, $row_num, "{$align} bgcolor='{$bgcolor}'"); // Fourth Column $fourth_col = ""; if (isset($job->users[self::REQUESTER]) && count($job->users[self::REQUESTER])) { foreach ($job->users[self::REQUESTER] as $k => $d) { $userdata = getUserName($k, 2); $fourth_col .= "<strong>" . $userdata['name'] . "</strong> "; $fourth_col .= showToolTip($userdata["comment"], array('link' => $userdata["link"], 'display' => false)); $fourth_col .= "<br>"; } } if (isset($job->groups[self::REQUESTER]) && count($job->groups[self::REQUESTER])) { foreach ($job->groups[self::REQUESTER] as $k => $d) { $fourth_col .= Dropdown::getDropdownName("glpi_groups", $k); $fourth_col .= "<br>"; } } echo Search::showItem($output_type, $fourth_col, $item_num, $row_num, $align); // Fifth column $fifth_col = ""; if (isset($job->users[self::ASSIGN]) && count($job->users[self::ASSIGN])) { foreach ($job->users[self::ASSIGN] as $k => $d) { $userdata = getUserName($k, 2); $fifth_col .= "<strong>" . $userdata['name'] . "</strong> "; $fifth_col .= showToolTip($userdata["comment"], array('link' => $userdata["link"], 'display' => false)); $fifth_col .= "<br>"; } } if (isset($job->groups[self::ASSIGN]) && count($job->groups[self::ASSIGN])) { foreach ($job->groups[self::ASSIGN] as $k => $d) { $fourth_col .= Dropdown::getDropdownName("glpi_groups", $k); $fourth_col .= "<br>"; } } if ($job->fields["suppliers_id_assign"] > 0) { if (!empty($fifth_col)) { $fifth_col .= "<br>"; } $fifth_col .= self::getAssignName($job->fields["suppliers_id_assign"], 'Supplier', 1); } echo Search::showItem($output_type, $fifth_col, $item_num, $row_num, $align); // Sixth Colum $sixth_col = ""; $is_deleted = false; if (!empty($job->fields["itemtype"]) && $job->fields["items_id"] > 0) { if (class_exists($job->fields["itemtype"])) { $item = new $job->fields["itemtype"](); if ($item->getFromDB($job->fields["items_id"])) { $is_deleted = $item->isDeleted(); $sixth_col .= $item->getTypeName(); $sixth_col .= "<br><strong>"; if ($item->canView()) { $sixth_col .= $item->getLink($output_type == HTML_OUTPUT); } else { $sixth_col .= $item->getNameID(); } $sixth_col .= "</strong>"; } } } else { if (empty($job->fields["itemtype"])) { $sixth_col = $LANG['help'][30]; } } echo Search::showItem($output_type, $sixth_col, $item_num, $row_num, $is_deleted ? " class='center deleted' " : $align); // Seventh column echo Search::showItem($output_type, "<strong>" . Dropdown::getDropdownName('glpi_ticketcategories', $job->fields["ticketcategories_id"]) . "</strong>", $item_num, $row_num, $align); // ninth column $ninth_column = "<strong>" . $job->fields["name"] . "</strong> "; // Add link if ($job->canViewItem()) { $ninth_column = "<a id='ticket" . $job->fields["id"] . "{$rand}' href=\"" . $CFG_GLPI["root_doc"] . "/front/ticket.form.php?id=" . $job->fields["id"] . "\">{$ninth_column}</a>"; if ($followups && $output_type == HTML_OUTPUT) { $ninth_column .= TicketFollowup::showShortForTicket($job->fields["id"]); } else { $ninth_column .= " (" . $job->numberOfFollowups($showprivate) . "-" . $job->numberOfTasks($showprivate) . ")"; } } if ($output_type == HTML_OUTPUT) { $ninth_column .= " " . showToolTip($job->fields['content'], array('display' => false, 'applyto' => "ticket" . $job->fields["id"] . $rand)); } echo Search::showItem($output_type, $ninth_column, $item_num, $row_num, $align_desc . "width='300'"); // Finish Line echo Search::showEndLine($output_type); } else { echo "<tr class='tab_bg_2'><td colspan='6' ><i>" . $LANG['joblist'][16] . "</i></td></tr>"; } }
/** * show hardware to be identified, or identified and imported, or just the hardware with agents installed on them * @param type $hardware array * @param type $lim integer * @param int|type $start integer * @param type $ipAdress string * @param type $status string * @param $subnet * @param $action * @global type $CFG_GLPI */ static function showHardware($hardware, $lim, $start = 0, $ipAdress, $status, $subnet, $action) { global $CFG_GLPI, $DB; $output_type = Search::HTML_OUTPUT; //0 $link = $CFG_GLPI['root_doc'] . "/plugins/ocsinventoryng/front/ipdiscover.import.php"; $return = $CFG_GLPI['root_doc'] . "/plugins/ocsinventoryng/front/ipdiscover.php"; $returnargs = "subnetsChoice={$subnet}&action={$action}"; $reload = "ip={$ipAdress}&status={$status}&action={$action}"; $backValues = "?b[]={$ipAdress}&b[]={$status}"; if ($status == "inventoried") { $status_name = __('Inventoried', 'ocsinventoryng'); } elseif ($status == "imported") { $status_name = __('Imported / Linked', 'ocsinventoryng'); } elseif ($status == "noninventoried") { $status_name = __('Non Inventoried', 'ocsinventoryng'); } else { $status_name = __('Identified', 'ocsinventoryng'); } $subnet_name = self::getSubnetNamebyIP($ipAdress); echo "<div class='center'>"; echo "<h2>" . __('Subnet', 'ocsinventoryng') . " " . $subnet_name . " (" . $ipAdress . ") - " . $status_name; echo " "; $refresh = $CFG_GLPI['root_doc'] . "/plugins/ocsinventoryng/front/ipdiscover.import.php?" . $reload; Html::showSimpleForm($refresh, 'refresh', _sx('button', 'Refresh'), array(), $CFG_GLPI["root_doc"] . "/plugins/ocsinventoryng/pics/synchro.png"); echo "</h2>"; echo "</div>"; if ($subnet >= 0) { $back = __('Back'); echo "<div class='center'><a href='{$return}?{$returnargs}'>{$back}</div>"; } echo Html::printPager($start, count($hardware), $link, $reload); echo Search::showNewLine($output_type, true); if (empty($hardware)) { echo "<div class='center b'><br>" . __('No new IPDiscover device to import', 'ocsinventoryng') . "</div>"; Html::displayBackLink(); } else { $header_num = 1; switch ($status) { case "inventoried": echo "<table width='100%'class='tab_cadrehov'>\n"; echo Search::showHeaderItem($output_type, __('User'), $header_num); echo Search::showHeaderItem($output_type, __('Name'), $header_num); echo Search::showHeaderItem($output_type, __('System'), $header_num); echo Search::showHeaderItem($output_type, __('Version of the operating system'), $header_num); echo Search::showHeaderItem($output_type, __('IP address'), $header_num); echo Search::showHeaderItem($output_type, __('Last OCSNG inventory date', 'ocsinventoryng'), $header_num); echo Search::showEndLine($output_type); $row_num = 1; for ($i = $start; $i < $lim + $start; $i++) { if (isset($hardware[$i])) { $row_num++; $item_num = 1; echo Search::showNewLine($output_type, $row_num % 2); echo Search::showItem($output_type, $hardware[$i]["userid"], $item_num, $row_num); echo Search::showItem($output_type, $hardware[$i]["name"], $item_num, $row_num); echo Search::showItem($output_type, $hardware[$i]["osname"], $item_num, $row_num); echo Search::showItem($output_type, $hardware[$i]["osversion"], $item_num, $row_num); echo Search::showItem($output_type, $hardware[$i]["ipaddr"], $item_num, $row_num); echo Search::showItem($output_type, Html::convDateTime($hardware[$i]["lastdate"]), $item_num, $row_num); echo Search::showEndLine($output_type); } } echo "</table>\n"; break; case "imported": $target = $CFG_GLPI['root_doc'] . "/plugins/ocsinventoryng/front/ipdiscover.import.php" . $backValues; self::checkBox($target); echo "<form method='post' id='ipdiscover_form' name='ipdiscover_form' action='{$target}'>"; echo "<div class='center' style=\"width=100%\">"; echo "<input type='submit' class='submit' name='deletelink' value=\"" . _sx('button', 'Delete link', 'ocsinventoryng') . "\"></div>"; echo "<table width='100%'class='tab_cadrehov'>\n"; echo Search::showHeaderItem($output_type, __('Item'), $header_num); echo Search::showHeaderItem($output_type, __('Item type'), $header_num); echo Search::showHeaderItem($output_type, __('MAC address'), $header_num); echo Search::showHeaderItem($output_type, __('IP address'), $header_num); echo Search::showHeaderItem($output_type, __('Location'), $header_num); echo Search::showHeaderItem($output_type, __('Import date in GLPI', 'ocsinventoryng'), $header_num); echo Search::showHeaderItem($output_type, __('Subnet'), $header_num); echo Search::showHeaderItem($output_type, __(' '), $header_num); echo Search::showEndLine($output_type); $row_num = 1; for ($i = $start; $i < $lim + $start; $i++) { if (isset($hardware[$i])) { $row_num++; $item_num = 1; echo Search::showNewLine($output_type, $row_num % 2); $class = getItemForItemtype($hardware[$i]["itemtype"]); $class->getFromDB($hardware[$i]["items_id"]); $iplist = ""; $ip = new IPAddress(); // Update IPAddress foreach ($DB->request('glpi_networkports', array('itemtype' => $hardware[$i]["itemtype"], 'items_id' => $hardware[$i]["items_id"])) as $netname) { foreach ($DB->request('glpi_networknames', array('itemtype' => 'NetworkPort', 'items_id' => $netname['id'])) as $dataname) { foreach ($DB->request('glpi_ipaddresses', array('itemtype' => 'NetworkName', 'items_id' => $dataname['id'])) as $data) { $ip->getFromDB($data['id']); $iplist .= $ip->getName() . "<br>"; } } } echo Search::showItem($output_type, $class->getLink(), $item_num, $row_num); echo Search::showItem($output_type, $class->getTypeName(), $item_num, $row_num); echo Search::showItem($output_type, $hardware[$i]["macaddress"], $item_num, $row_num); echo Search::showItem($output_type, $iplist, $item_num, $row_num); echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_locations", $class->fields["locations_id"]), $item_num, $row_num); echo Search::showItem($output_type, Html::convDateTime($hardware[$i]["last_update"]), $item_num, $row_num); echo Search::showItem($output_type, $hardware[$i]["subnet"], $item_num, $row_num); echo self::showItem($hardware[$i]["id"], "", "", "", true, "", $i); echo Search::showEndLine($output_type); } } echo "<tbody style=\"display:none\">"; echo "<tr><td><input type=\"hidden\" name='subnet' value=\"{$ipAdress}\" ></td></tr>"; echo "</tbody>"; echo "</table>\n"; echo "<div class='center' style=\"width=100%\">"; echo "<input type='submit' class='submit' name='deletelink' value=\"" . _sx('button', 'Delete link', 'ocsinventoryng') . "\"></div>"; Html::closeForm(); self::checkBox($target); break; case "noninventoried": $ocsTypes = array("id" => array(Dropdown::EMPTY_VALUE), "name" => array(Dropdown::EMPTY_VALUE)); $link = $CFG_GLPI['root_doc'] . "/plugins/ocsinventoryng/front/ipdiscover.php"; $target = $CFG_GLPI['root_doc'] . "/plugins/ocsinventoryng/front/ipdiscover.import.php" . $backValues; $macConstructor = ""; self::getOCSTypes($ocsTypes); self::checkBox($target); echo "<form method='post' id='ipdiscover_form' name='ipdiscover_form' action='{$target}'>"; echo "<div class='center' style=\"width=100%\">"; if ($action == "import") { echo "<input type='submit' class='submit' name='IdentifyAndImport' value=\"" . _sx('button', 'Import') . "\">"; echo " "; } else { echo "<input type='submit' class='submit' name='IdentifyAndLink' value=\"" . _sx('button', 'Link', 'ocsinventoryng') . "\">"; echo " "; } echo "<input type='submit' class='submit' name='delete' value=\"" . _sx('button', 'Delete from OCSNG', 'ocsinventoryng') . "\"></div>"; echo "<table width='100%'class='tab_cadrehov'>\n"; echo Search::showHeaderItem($output_type, __('Date'), $header_num); echo Search::showHeaderItem($output_type, __('MAC address'), $header_num); echo Search::showHeaderItem($output_type, __('IP address'), $header_num); echo Search::showHeaderItem($output_type, __('Subnet mask'), $header_num); echo Search::showHeaderItem($output_type, __('DNS', 'ocsinventoryng'), $header_num); echo Search::showHeaderItem($output_type, __('Description') . "<span class='red'>*</span>", $header_num); echo Search::showHeaderItem($output_type, __('OCS Type', 'ocsinventoryng') . "<span class='red'>*</span>", $header_num); if ($action == "import") { echo Search::showHeaderItem($output_type, __('Name'), $header_num); if (Session::isMultiEntitiesMode()) { echo Search::showHeaderItem($output_type, __('Entity'), $header_num); } echo Search::showHeaderItem($output_type, __('GLPI Type', 'ocsinventoryng') . "<span class='red'>*</span>", $header_num); } else { echo Search::showHeaderItem($output_type, __('Item to link', 'ocsinventoryng'), $header_num, "", 0, "", 'width=15%'); } echo Search::showHeaderItem($output_type, __(' '), $header_num); echo Search::showEndLine($output_type); $row_num = 1; $ocstypes = array(); foreach ($ocsTypes["name"] as $items) { $ocstypes[$items] = $items; } $itemstypes = array(Dropdown::EMPTY_VALUE); foreach (self::$hardwareItemTypes as $items) { $class = getItemForItemtype($items); $itemstypes[$items] = $class->getTypeName(); } for ($i = $start; $i < $lim + $start; $i++) { if (isset($hardware[$i])) { $row_num++; echo Search::showNewLine($output_type, $row_num % 2); echo self::showItem(Html::convDateTime($hardware[$i]["date"])); if (isset($_SESSION["OCS"]["IpdiscoverMacConstructors"])) { $macs = unserialize($_SESSION["OCS"]["IpdiscoverMacConstructors"]); if (isset($macs[mb_strtoupper(substr($hardware[$i]["mac"], 0, 8))])) { $macConstructor = $macs[mb_strtoupper(substr($hardware[$i]["mac"], 0, 8))]; } else { $macConstructor = __("unknow"); } } $mac = $hardware[$i]["mac"] . "<small> ( " . $macConstructor . " )</small>"; echo self::showItem($mac); echo self::showItem($ip = $hardware[$i]["ip"]); echo self::showItem($hardware[$i]["mask"]); echo self::showItem($hardware[$i]["DNS"]); echo "<td><input type=\"text\" name='itemsdescription[" . $i . "]' value=\"\" ></td>"; echo "<td>"; Dropdown::showFromArray("ocsitemstype[{$i}]", $ocstypes); echo "</td>"; if ($action == "import") { echo "<td><input type=\"text\" name='itemsname[" . $i . "]' value=\"\"></td>"; if (Session::isMultiEntitiesMode()) { echo "<td>"; Entity::dropdown(array('name' => "entities[{$i}]", 'entity' => $_SESSION["glpiactiveentities"])); echo "</td>"; } echo "<td>"; Dropdown::showFromArray("glpiitemstype[{$i}]", $itemstypes); echo "</td>"; } else { echo "<td width='10'>"; $mtrand = mt_rand(); $mynamei = "itemtype"; $myname = "tolink_items[" . $i . "]"; $rand = Dropdown::showItemTypes($mynamei, self::$hardwareItemTypes, array('rand' => $mtrand)); $p = array('itemtype' => '__VALUE__', 'entity_restrict' => $_SESSION["glpiactiveentities"], 'id' => $i, 'rand' => $rand, 'myname' => $myname); //print_r($p); Ajax::updateItemOnSelectEvent("dropdown_{$mynamei}{$rand}", "results_{$mynamei}{$rand}", $CFG_GLPI["root_doc"] . "/plugins/ocsinventoryng/ajax/dropdownitems.php", $p); echo "<span id='results_{$mynamei}{$rand}'>\n"; echo "</span>\n"; //} echo "</td>"; } echo self::showItem($hardware[$i]["mac"], "", "", "", true, "", $i); echo "<tbody style=\"display:none\">"; echo "<tr><td><input type=\"hidden\" name='itemsip[" . $i . "]' value=\"{$ip}\" >\n <input type=\"hidden\" name='subnet' value=\"{$ipAdress}\" ></td></tr>"; echo "</tbody>"; } } echo "</table>\n"; echo "<div class='center' style=\"width=100%\">"; if ($action == "import") { echo "<input type='submit' class='submit' name='IdentifyAndImport' value=\"" . _sx('button', 'Import') . "\">"; echo " "; } else { echo "<input type='submit' class='submit' name='IdentifyAndLink' value=\"" . _sx('button', 'Link', 'ocsinventoryng') . "\">"; echo " "; } echo "<input type='submit' class='submit' name='delete' value=\"" . _sx('button', 'Delete from OCSNG', 'ocsinventoryng') . "\"></div>"; Html::closeForm(); self::checkBox($target); break; default: $link = $CFG_GLPI['root_doc'] . "/plugins/ocsinventoryng/front/ipdiscover.php"; $target = $CFG_GLPI['root_doc'] . "/plugins/ocsinventoryng/front/ipdiscover.import.php" . $backValues; $macConstructor = ""; self::checkBox($target); echo "<form method='post' id='ipdiscover_form' name='ipdiscover_form' action='{$target}'>"; echo "<div class='center' style=\"width=100%\">"; if ($action == "import") { echo "<input type='submit' class='submit' name='Import' value=\"" . _sx('button', 'Import') . "\">"; echo " "; } else { echo "<input type='submit' class='submit' name='Link' value=\"" . _sx('button', 'Link', 'ocsinventoryng') . "\">"; echo " "; } echo "<input type='submit' class='submit' name='delete' value=\"" . _sx('button', 'Delete from OCSNG', 'ocsinventoryng') . "\"></div>"; echo "<table width='100%'class='tab_cadrehov'>"; echo Search::showHeaderItem($output_type, __('Date'), $header_num); echo Search::showHeaderItem($output_type, __('Description'), $header_num); echo Search::showHeaderItem($output_type, __('OCS Type', 'ocsinventoryng'), $header_num); echo Search::showHeaderItem($output_type, __('IP address'), $header_num); echo Search::showHeaderItem($output_type, __('MAC address'), $header_num); if ($action == "import") { if (Session::isMultiEntitiesMode()) { echo Search::showHeaderItem($output_type, __('Entity'), $header_num); } echo Search::showHeaderItem($output_type, __('Name'), $header_num); echo Search::showHeaderItem($output_type, __('GLPI Type', 'ocsinventoryng') . "<span class='red'>*</span>", $header_num); } else { echo Search::showHeaderItem($output_type, __('Item to link', 'ocsinventoryng'), $header_num, "", 0, "", 'width=15%'); } echo Search::showHeaderItem($output_type, __(' '), $header_num); echo Search::showEndLine($output_type); $row_num = 1; $itemstypes = array(Dropdown::EMPTY_VALUE); foreach (self::$hardwareItemTypes as $items) { $class = getItemForItemtype($items); $itemstypes[$items] = $class->getTypeName(); } for ($i = $start; $i < $lim + $start; $i++) { if (isset($hardware[$i])) { $row_num++; echo Search::showNewLine($output_type, $row_num % 2); echo self::showItem(Html::convDateTime($hardware[$i]["date"])); echo self::showItem($description = $hardware[$i]["description"]); echo self::showItem($hardware[$i]["type"]); echo self::showItem($ip = $hardware[$i]["ip"]); if (isset($_SESSION["OCS"]["IpdiscoverMacConstructors"])) { $macs = unserialize($_SESSION["OCS"]["IpdiscoverMacConstructors"]); if (isset($macs[mb_strtoupper(substr($hardware[$i]["mac"], 0, 8))])) { $macConstructor = $macs[mb_strtoupper(substr($hardware[$i]["mac"], 0, 8))]; } else { $macConstructor = __("unknow"); } } $mac = $hardware[$i]["mac"] . "<small> ( " . $macConstructor . " )</small>"; echo self::showItem($mac); if ($action == "import") { if (Session::isMultiEntitiesMode()) { echo "<td>"; Entity::dropdown(array('name' => "entities[{$i}]", 'entity' => $_SESSION["glpiactiveentities"])); echo "</td>"; } echo "<td><input type=\"text\" name='itemsname[" . $i . "]' value=\"\"></td>"; echo "<td>"; Dropdown::showFromArray("glpiitemstype[{$i}]", $itemstypes); echo "</td>"; } else { echo "<td width='10'>"; $mtrand = mt_rand(); $mynamei = "itemtype"; $myname = "tolink_items[" . $i . "]"; $rand = Dropdown::showItemTypes($mynamei, self::$hardwareItemTypes, array('rand' => $mtrand)); $p = array('itemtype' => '__VALUE__', 'entity_restrict' => $_SESSION["glpiactiveentities"], 'id' => $i, 'rand' => $rand, 'myname' => $myname); Ajax::updateItemOnSelectEvent("dropdown_{$mynamei}{$rand}", "results_{$mynamei}{$rand}", $CFG_GLPI["root_doc"] . "/plugins/ocsinventoryng/ajax/dropdownitems.php", $p); echo "<span id='results_{$mynamei}{$rand}'>\n"; echo "</span>\n"; echo "</td>"; } echo self::showItem($hardware[$i]["mac"], "", "", "", true, "", $i); echo "<tbody style=\"display:none\">"; echo "<tr><td><input type=\"hidden\" name='itemsip[" . $i . "]' value=\"{$ip}\" >"; echo "<input type=\"hidden\" name='itemsdescription[" . $i . "]' value=\"{$description}\" >\n <input type=\"hidden\" name='subnet' value=\"{$ipAdress}\" ></tr>"; echo "</td></tr></tbody>"; } } echo "</table>"; echo "<div class='center' style=\"width=100%\">"; if ($action == "import") { echo "<input type='submit' class='submit' name='Import' value=\"" . _sx('button', 'Import') . "\">"; echo " "; } else { echo "<input type='submit' class='submit' name='Link' value=\"" . _sx('button', 'Link', 'ocsinventoryng') . "\">"; echo " "; } echo "<input type='submit' class='submit' name='delete' value=\"" . _sx('button', 'Delete from OCSNG', 'ocsinventoryng') . "\"></div>"; Html::closeForm(); self::checkBox($target); break; } } if ($subnet >= 0) { $back = __('Back'); echo "<div class='center'><a href='{$return}?{$returnargs}'>{$back}</div>"; } }
/** * Display a line for an object * * @since version 0.85 (befor in each object with differents parameters) * * @param $id Integer ID of the object * @param $options array of options * output_type : Default output type (see Search class / default Search::HTML_OUTPUT) * row_num : row num used for display * type_for_massiveaction : itemtype for massive action * id_for_massaction : default 0 means no massive action * followups : only for Tickets : show followup columns */ static function showShort($id, $options = array()) { global $CFG_GLPI, $DB; $p['output_type'] = Search::HTML_OUTPUT; $p['row_num'] = 0; $p['type_for_massiveaction'] = 0; $p['id_for_massiveaction'] = 0; if (count($options)) { foreach ($options as $key => $val) { $p[$key] = $val; } } $rand = mt_rand(); // Prints a job in short form // Should be called in a <table>-segment // Print links or not in case of user view // Make new job object and fill it from database, if success, print it $item = new static(); $candelete = static::canDelete(); $canupdate = Session::haveRight(static::$rightname, UPDATE); $align = "class='center"; $align_desc = "class='left"; $align .= "'"; $align_desc .= "'"; if ($item->getFromDB($id)) { $item_num = 1; $bgcolor = $_SESSION["glpipriority_" . $item->fields["priority"]]; echo Search::showNewLine($p['output_type'], $p['row_num'] % 2); $check_col = ''; if (($candelete || $canupdate) && $p['output_type'] == Search::HTML_OUTPUT && $p['id_for_massiveaction']) { $check_col = Html::getMassiveActionCheckBox($p['type_for_massiveaction'], $p['id_for_massiveaction']); } echo Search::showItem($p['output_type'], $check_col, $item_num, $p['row_num'], $align); $id_col = $item->fields["id"]; echo Search::showItem($p['output_type'], $id_col, $item_num, $p['row_num'], $align); // First column $first_col = ''; $color = ''; if ($item->fields["projectstates_id"]) { $query = "SELECT `color`\n FROM `glpi_projectstates`\n WHERE `id` = '" . $item->fields["projectstates_id"] . "'"; foreach ($DB->request($query) as $color) { $color = $color['color']; } $first_col = Dropdown::getDropdownName('glpi_projectstates', $item->fields["projectstates_id"]); } echo Search::showItem($p['output_type'], $first_col, $item_num, $p['row_num'], "{$align} bgcolor='{$color}'"); // Second column $second_col = sprintf(__('Opened on %s'), ($p['output_type'] == Search::HTML_OUTPUT ? '<br>' : '') . Html::convDateTime($item->fields['date'])); echo Search::showItem($p['output_type'], $second_col, $item_num, $p['row_num'], $align . " width=130"); // Second BIS column $second_col = Html::convDateTime($item->fields["date_mod"]); echo Search::showItem($p['output_type'], $second_col, $item_num, $p['row_num'], $align . " width=90"); // Second TER column if (count($_SESSION["glpiactiveentities"]) > 1) { $second_col = Dropdown::getDropdownName('glpi_entities', $item->fields['entities_id']); echo Search::showItem($p['output_type'], $second_col, $item_num, $p['row_num'], $align . " width=100"); } // Third Column echo Search::showItem($p['output_type'], "<span class='b'>" . CommonITILObject::getPriorityName($item->fields["priority"]) . "</span>", $item_num, $p['row_num'], "{$align} bgcolor='{$bgcolor}'"); // Fourth Column $fourth_col = ""; if ($item->fields["users_id"]) { $userdata = getUserName($item->fields["users_id"], 2); $fourth_col .= sprintf(__('%1$s %2$s'), "<span class='b'>" . $userdata['name'] . "</span>", Html::showToolTip($userdata["comment"], array('link' => $userdata["link"], 'display' => false))); } echo Search::showItem($p['output_type'], $fourth_col, $item_num, $p['row_num'], $align); // Fifth column $fifth_col = ""; if ($item->fields["groups_id"]) { $fifth_col .= Dropdown::getDropdownName("glpi_groups", $item->fields["groups_id"]); $fifth_col .= "<br>"; } echo Search::showItem($p['output_type'], $fifth_col, $item_num, $p['row_num'], $align); // Eigth column $eigth_column = "<span class='b'>" . $item->fields["name"] . "</span> "; // Add link if ($item->canViewItem()) { $eigth_column = "<a id='" . $item->getType() . $item->fields["id"] . "{$rand}' href=\"" . $item->getLinkURL() . "&forcetab=Project\$\">{$eigth_column}</a>"; } if ($p['output_type'] == Search::HTML_OUTPUT) { $eigth_column = sprintf(__('%1$s %2$s'), $eigth_column, Html::showToolTip($item->fields['content'], array('display' => false, 'applyto' => $item->getType() . $item->fields["id"] . $rand))); } echo Search::showItem($p['output_type'], $eigth_column, $item_num, $p['row_num'], $align_desc . "width='200'"); // Finish Line echo Search::showEndLine($p['output_type']); } else { echo "<tr class='tab_bg_2'>"; echo "<td colspan='6' ><i>" . __('No item in progress.') . "</i></td></tr>"; } }
echo Search::showNewLine($output_type); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, Html::formatNumber($totalvolbudget, '', 0), $num, $row_num); echo Search::showItem($output_type, Html::formatNumber($totalvolemployment, '', 2), $num, $row_num); echo Search::showItem($output_type, Html::formatNumber($totalvolresource, '', 4), $num, $row_num); echo Search::showItem($output_type, '', $num, $row_num); echo Search::showItem($output_type, Html::formatNumber($totalamountbudget, '', 2), $num, $row_num); echo Search::showItem($output_type, Html::formatNumber($totalamountemployment, '', 2), $num, $row_num); echo Search::showItem($output_type, Html::formatNumber($totalamountresource, '', 2), $num, $row_num); echo Search::showItem($output_type, Html::formatNumber($totalbudgetemployment, '', 2), $num, $row_num); echo Search::showEndLine($output_type); echo Search::showFooter($output_type, $title); } } if ($output_type == Search::HTML_OUTPUT) { Html::footer(); } /** * Display the column title and allow the sort * * @param $output_type * @param $num * @param $title * @param $columnname * @param bool $sort
static function showMinimalList($params = array()) { global $DB, $CFG_GLPI; $item = new self(); $itemtype = $item->getType(); $itemtable = $item->getTable(); // Default values of parameters $p['link'] = array(); // $p['field'] = array(); // $p['contains'] = array(); // $p['searchtype'] = array(); // $p['sort'] = '1'; // $p['order'] = 'ASC'; // $p['start'] = 0; // $p['is_deleted'] = 0; $p['id'] = 0; $p['export_all'] = 0; $p['link2'] = ''; // $p['contains2'] = ''; // $p['field2'] = ''; // $p['itemtype2'] = ''; $p['searchtype2'] = ''; $p['withtemplate'] = 0; foreach ($params as $key => $val) { $p[$key] = $val; } $PluginResourcesResource = new PluginResourcesResource(); $PluginResourcesResource->getFromDB($p['id']); $canedit = $PluginResourcesResource->can($p['id'], 'w'); if (isset($_POST["start"])) { $p['start'] = $_POST["start"]; } else { $p['start'] = 0; } if (isset($_POST["sort"])) { $p['sort'] = $_POST["sort"]; } else { $p['sort'] = 1; } if (isset($_POST["order"]) && $_POST["order"] == "DESC") { $p['order'] = "DESC"; } else { $p['order'] = "ASC"; } // Manage defautll seachtype value : for bookmark compatibility if (count($p['contains'])) { foreach ($p['contains'] as $key => $val) { if (!isset($p['searchtype'][$key])) { $p['searchtype'][$key] = 'contains'; } } } if (is_array($p['contains2']) && count($p['contains2'])) { foreach ($p['contains2'] as $key => $val) { if (!isset($p['searchtype2'][$key])) { $p['searchtype2'][$key] = 'contains'; } } } $target = Toolbox::getItemTypeSearchURL($itemtype); $limitsearchopt = Search::getCleanedOptions($itemtype); $LIST_LIMIT = $_SESSION['glpilist_limit']; // Set display type for export if define $output_type = Search::HTML_OUTPUT; if (isset($_GET['display_type'])) { $output_type = $_GET['display_type']; // Limit to 10 element if ($_GET['display_type'] == Search::GLOBAL_SEARCH) { $LIST_LIMIT = Search::GLOBAL_DISPLAY_COUNT; } } $entity_restrict = $item->isEntityAssign(); // Get the items to display $toview = Search::addDefaultToView($itemtype); // Add items to display depending of personal prefs $displaypref = DisplayPreference::getForTypeUser($itemtype, Session::getLoginUserID()); if (count($displaypref)) { foreach ($displaypref as $val) { array_push($toview, $val); } } // Add searched items if (count($p['field']) > 0) { foreach ($p['field'] as $key => $val) { if (!in_array($val, $toview) && $val != 'all' && $val != 'view') { array_push($toview, $val); } } } // Add order item if (!in_array($p['sort'], $toview)) { array_push($toview, $p['sort']); } // Clean toview array $toview = array_unique($toview); foreach ($toview as $key => $val) { if (!isset($limitsearchopt[$val])) { unset($toview[$key]); } } $toview_count = count($toview); //// 1 - SELECT $query = "SELECT " . Search::addDefaultSelect($itemtype); // Add select for all toview item foreach ($toview as $key => $val) { $query .= Search::addSelect($itemtype, $val, $key, 0); } $query .= "`" . $itemtable . "`.`id` AS id "; //// 2 - FROM AND LEFT JOIN // Set reference table $query .= " FROM `" . $itemtable . "`"; // Init already linked tables array in order not to link a table several times $already_link_tables = array(); // Put reference table array_push($already_link_tables, $itemtable); // Add default join $COMMONLEFTJOIN = Search::addDefaultJoin($itemtype, $itemtable, $already_link_tables); $query .= $COMMONLEFTJOIN; $searchopt = array(); $searchopt[$itemtype] =& Search::getOptions($itemtype); // Add all table for toview items foreach ($toview as $key => $val) { $query .= Search::addLeftJoin($itemtype, $itemtable, $already_link_tables, $searchopt[$itemtype][$val]["table"], $searchopt[$itemtype][$val]["linkfield"], 0, 0, $searchopt[$itemtype][$val]["joinparams"]); } // Search all case : if (in_array("all", $p['field'])) { foreach ($searchopt[$itemtype] as $key => $val) { // Do not search on Group Name if (is_array($val)) { $query .= Search::addLeftJoin($itemtype, $itemtable, $already_link_tables, $searchopt[$itemtype][$key]["table"], $searchopt[$itemtype][$key]["linkfield"], 0, 0, $searchopt[$itemtype][$key]["joinparams"]); } } } $query .= " WHERE `" . $itemtable . "`.`plugin_resources_resources_id` = '" . $p['id'] . "'"; $query .= " AND `" . $itemtable . "`.`is_deleted` = '" . $p['is_deleted'] . "' "; //// 7 - Manage GROUP BY $GROUPBY = ""; // Meta Search / Search All / Count tickets if (in_array('all', $p['field'])) { $GROUPBY = " GROUP BY `" . $itemtable . "`.`id`"; } if (empty($GROUPBY)) { foreach ($toview as $key2 => $val2) { if (!empty($GROUPBY)) { break; } if (isset($searchopt[$itemtype][$val2]["forcegroupby"])) { $GROUPBY = " GROUP BY `" . $itemtable . "`.`id`"; } } } $query .= $GROUPBY; //// 4 - ORDER $ORDER = " ORDER BY `id` "; foreach ($toview as $key => $val) { if ($p['sort'] == $val) { $ORDER = Search::addOrderBy($itemtype, $p['sort'], $p['order'], $key); } } $query .= $ORDER; // Get it from database if ($result = $DB->query($query)) { $numrows = $DB->numrows($result); $globallinkto = Search::getArrayUrlLink("field", $p['field']) . Search::getArrayUrlLink("link", $p['link']) . Search::getArrayUrlLink("contains", $p['contains']) . Search::getArrayUrlLink("field2", $p['field2']) . Search::getArrayUrlLink("contains2", $p['contains2']) . Search::getArrayUrlLink("itemtype2", $p['itemtype2']) . Search::getArrayUrlLink("link2", $p['link2']); $parameters = "sort=" . $p['sort'] . "&order=" . $p['order'] . $globallinkto; if ($output_type == Search::GLOBAL_SEARCH) { if (class_exists($itemtype)) { echo "<div class='center'><h2>" . $item->getTypeName(); // More items if ($numrows > $p['start'] + Search::GLOBAL_DISPLAY_COUNT) { echo " <a href='{$target}?{$parameters}'>" . __('All') . "</a>"; } echo "</h2></div>\n"; } else { return false; } } if ($p['start'] < $numrows) { if ($output_type == Search::HTML_OUTPUT && !$p['withtemplate']) { echo "<div align='center'>"; echo "<a href='" . $CFG_GLPI["root_doc"] . "/plugins/resources/front/task.php?contains%5B0%5D=" . $p['id'] . "&field%5B0%5D=13&sort=1&is_deleted=0&start=0'>" . _x('button', 'Search') . "</a><br>"; echo "</div>"; } // Pager if ($output_type == Search::HTML_OUTPUT) { // HTML display - massive modif $search_config = ""; if ($item->canCreate() && $canedit) { $tmp = " class='pointer' onClick=\"var w = window.open('" . $CFG_GLPI["root_doc"] . "/front/popup.php?popup=search_config&itemtype=" . $itemtype . "' ,'glpipopup', " . "'height=400, width=1000, top=100, left=100, scrollbars=yes' ); w.focus();\""; $search_config = "<img alt='" . __('Select default items to show') . "' title='" . __('Select default items to show') . "' src='" . $CFG_GLPI["root_doc"] . "/pics/options_search.png' "; $search_config .= $tmp . ">"; } //echo Search::showHeaderItem($output_type,$search_config,$header_num,"",0,$p['order']); } // Pager if ($output_type == Search::HTML_OUTPUT) { Html::printAjaxPager(self::getTypeName(2), $p['start'], $numrows, $search_config); echo "<br>"; } // Define begin and end var for loop // Search case $begin_display = $p['start']; $end_display = $p['start'] + $LIST_LIMIT; // Export All case if ($p['export_all']) { $begin_display = 0; $end_display = $numrows; } //massive action $sel = ""; if (isset($_GET["select"]) && $_GET["select"] == "all") { $sel = "checked"; } if ($item->canCreate() && $canedit && $output_type == Search::HTML_OUTPUT && $p['withtemplate'] != 2) { Html::openMassiveActionsForm('massform' . $itemtype); $massiveactionparams = array('num_displayed' => $end_display - $begin_display, 'fixed' => true, 'is_deleted' => $p['is_deleted']); Html::showMassiveActions($itemtype, $massiveactionparams); } // Add toview elements $nbcols = $toview_count; if ($output_type == Search::HTML_OUTPUT) { // HTML display - massive modif $nbcols++; } // Display List Header echo Search::showHeader($output_type, $end_display - $begin_display + 1, $nbcols, 1); $header_num = 1; // Display column Headers for toview items $headers_line = ''; $headers_line_top = ''; $headers_line_bottom = ''; echo Search::showNewLine($output_type); if ($output_type == Search::HTML_OUTPUT && $item->canCreate() && $canedit) { // HTML display - massive modif $headers_line_top .= Search::showHeaderItem($output_type, Html::getCheckAllAsCheckbox('massform' . $itemtype), $header_num, "", 0, $p['order']); $headers_line_bottom .= Search::showHeaderItem($output_type, Html::getCheckAllAsCheckbox('massform' . $itemtype), $header_num, "", 0, $p['order']); } // Display column Headers for toview items foreach ($toview as $key => $val) { $linkto = ''; if (!isset($searchopt[$itemtype][$val]['nosort']) || !$searchopt[$itemtype][$val]['nosort']) { $linkto = "javascript:reloadTab('sort=" . $val . "&order=" . ($p['order'] == "ASC" ? "DESC" : "ASC") . "&start=" . $p['start'] . $globallinkto . "')"; } $headers_line .= Search::showHeaderItem($output_type, $searchopt[$itemtype][$val]["name"], $header_num, $linkto, $p['sort'] == $val, $p['order']); } // End Line for column headers $headers_line .= Search::showEndLine($output_type); $headers_line_top .= $headers_line; $headers_line_bottom .= $headers_line; echo $headers_line_top; $DB->data_seek($result, $p['start']); // Define begin and end var for loop // Search case $i = $begin_display; // Init list of items displayed if ($output_type == Search::HTML_OUTPUT) { Session::initNavigateListItems($itemtype, PluginResourcesResource::getTypeName(2) . " = " . (empty($PluginResourcesResource->fields['name']) ? "(" . $p['id'] . ")" : $PluginResourcesResource->fields['name'])); } // Num of the row (1=header_line) $row_num = 1; // Display Loop while ($i < $numrows && $i < $end_display) { $item_num = 1; $data = $DB->fetch_array($result); $i++; $row_num++; echo Search::showNewLine($output_type, $i % 2); Session::addToNavigateListItems($itemtype, $data['id']); $tmpcheck = ""; if ($item->canCreate() && $canedit && $output_type == Search::HTML_OUTPUT && $p['withtemplate'] != 2) { $sel = ""; $tmpcheck = "<input type='checkbox' name='item[" . $data["id"] . "]' value='1' {$sel}>"; } echo Search::showItem($output_type, $tmpcheck, $item_num, $row_num, "width='10'"); foreach ($toview as $key => $val) { echo Search::showItem($output_type, Search::giveItem($itemtype, $val, $data, $key), $item_num, $row_num, Search::displayConfigItem($itemtype, $val, $data, $key)); } echo Search::showEndLine($output_type); } // Close Table $title = ""; // Create title if ($output_type == Search::PDF_OUTPUT_PORTRAIT || $output_type == Search::PDF_OUTPUT_LANDSCAPE) { $title .= __('Tasks list', 'resources'); } // Display footer echo Search::showFooter($output_type, $title); //massive action if ($item->canCreate() && $canedit && $output_type == Search::HTML_OUTPUT && $p['withtemplate'] != 2) { $massiveactionparams['ontop'] = false; Html::showMassiveActions($itemtype, $massiveactionparams); Html::closeForm(); } else { echo "</table></div>"; } // Pager if ($output_type == Search::HTML_OUTPUT) { echo "<br>"; Html::printAjaxPager(self::getTypeName(2), $p['start'], $numrows); } } else { echo Search::showError($output_type); } } }
static function showHierarchy($ID, $parents = 0) { global $DB, $CFG_GLPI; $first = false; $projet = new PluginProjetTask(); $query = "SELECT `glpi_plugin_projet_tasks`.* "; if ($parents != 0) { $parent = "plugin_projet_tasks_id_1"; $child = "plugin_projet_tasks_id_2"; } else { $parent = "plugin_projet_tasks_id_2"; $child = "plugin_projet_tasks_id_1"; } $query .= " FROM `glpi_plugin_projet_tasks`"; $query .= " LEFT JOIN `glpi_plugin_projet_tasks_tasks` \n ON (`glpi_plugin_projet_tasks_tasks`.`{$child}` = `glpi_plugin_projet_tasks`.`id`)"; $query .= " WHERE `glpi_plugin_projet_tasks_tasks`.`{$parent}` = '{$ID}' "; if ($projet->maybeTemplate()) { $LINK = " AND "; if ($first) { $LINK = " "; $first = false; } $query .= $LINK . "`glpi_plugin_projet_tasks`.`is_template` = '0' "; } // Add is_deleted if item have it if ($projet->maybeDeleted()) { $LINK = " AND "; if ($first) { $LINK = " "; $first = false; } $query .= $LINK . "`glpi_plugin_projet_tasks`.`is_deleted` = '0' "; } $LINK = " AND "; $query .= getEntitiesRestrictRequest(" AND ", "glpi_plugin_projet_tasks", '', '', $projet->maybeRecursive()); $query .= " ORDER BY `glpi_plugin_projet_tasks`.`name`"; $result = $DB->query($query); $number = $DB->numrows($result); $i = 0; if (Session::isMultiEntitiesMode()) { $colsup = 1; } else { $colsup = 0; } if ($number != "0") { echo "<div align='center'><table class='tab_cadre_fixe'>"; $title = _n('Child task', 'Child tasks', 2, 'projet'); if ($parents != 0) { $title = __('Parent task', 'projet'); } echo "<tr><th colspan='" . (7 + $colsup) . "'>" . $title . "</th></tr>"; echo "<tr><th>" . __('Name') . "</th>"; if (Session::isMultiEntitiesMode()) { echo "<th>" . __('Entity') . "</th>"; } echo "<th>" . __('Progress') . "</th>"; echo "<th>" . _n('User', 'Users', 1) . "</th>"; echo "<th>" . _n('Group', 'Groups', 1) . "</th>"; echo "<th>" . __('State') . "</th>"; echo "</tr>"; while ($data = $DB->fetch_array($result)) { $start = 0; $output_type = Search::HTML_OUTPUT; $del = false; if ($data["is_deleted"] == '0') { echo "<tr class='tab_bg_1'>"; } else { echo "<tr class='tab_bg_1" . ($data["is_deleted"] == '1' ? "_2" : "") . "'>"; } echo Search::showItem($output_type, "<a href=\"./task.form.php?id=" . $data["id"] . "\">" . $data["name"] . ($_SESSION["glpiis_ids_visible"] || empty($data["name"]) ? ' (' . $data["id"] . ') ' : '') . "</a>", $item_num, $i - $start + 1, ''); if (Session::isMultiEntitiesMode()) { echo "<td class='center'>" . Dropdown::getDropdownName("glpi_entities", $data['entities_id']) . "</td>"; } echo Search::showItem($output_type, PluginProjetProjet::displayProgressBar('100', $data["advance"], array("simple" => true)), $item_num, $i - $start + 1, "align='center'"); echo Search::showItem($output_type, getUserName($data['users_id']), $item_num, $i - $start + 1, ''); echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_groups", $data['groups_id']), $item_num, $i - $start + 1, ''); echo Search::showItem($output_type, Dropdown::getDropdownName("glpi_plugin_projet_taskstates", $data['plugin_projet_taskstates_id']), $item_num, $i - $start + 1, "bgcolor='" . PluginProjetTaskState::getStatusColor($data['plugin_projet_taskstates_id']) . "' align='center'"); echo "</tr>"; } echo "</table></div>"; } }
/** * @param $target * @param $date1 * @param $date2 * @param $start **/ static function showItems($target, $date1, $date2, $start) { global $DB, $CFG_GLPI; $view_entities = Session::isMultiEntitiesMode(); if ($view_entities) { $entities = getAllDatasFromTable('glpi_entities'); } $output_type = Search::HTML_OUTPUT; if (isset($_GET["display_type"])) { $output_type = $_GET["display_type"]; } if (empty($date2)) { $date2 = date("Y-m-d"); } $date2 .= " 23:59:59"; // 1 an par defaut if (empty($date1)) { $date1 = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d"), date("Y") - 1)); } $date1 .= " 00:00:00"; $query = "SELECT `glpi_items_tickets`.`itemtype`,\n `glpi_items_tickets`.`items_id`,\n COUNT(*) AS NB\n FROM `glpi_tickets`\n LEFT JOIN `glpi_items_tickets`\n ON (`glpi_tickets`.`id` = `glpi_items_tickets`.`tickets_id`)\n WHERE `date` <= '{$date2}'\n AND `glpi_tickets`.`date` >= '{$date1}' " . getEntitiesRestrictRequest("AND", "glpi_tickets") . "\n AND `glpi_items_tickets`.`itemtype` <> ''\n AND `glpi_items_tickets`.`items_id` > 0\n GROUP BY `glpi_items_tickets`.`itemtype`, `glpi_items_tickets`.`items_id`\n ORDER BY NB DESC"; $result = $DB->query($query); $numrows = $DB->numrows($result); if ($numrows > 0) { if ($output_type == Search::HTML_OUTPUT) { Html::printPager($start, $numrows, $target, "date1=" . $date1 . "&date2=" . $date2 . "&type=hardwares&start={$start}", 'Stat'); echo "<div class='center'>"; } $end_display = $start + $_SESSION['glpilist_limit']; if (isset($_GET['export_all'])) { $end_display = $numrows; } echo Search::showHeader($output_type, $end_display - $start + 1, 2, 1); $header_num = 1; echo Search::showNewLine($output_type); echo Search::showHeaderItem($output_type, _n('Associated element', 'Associated elements', 2), $header_num); if ($view_entities) { echo Search::showHeaderItem($output_type, __('Entity'), $header_num); } echo Search::showHeaderItem($output_type, __('Number of tickets'), $header_num); echo Search::showEndLine($output_type); $DB->data_seek($result, $start); $i = $start; if (isset($_GET['export_all'])) { $start = 0; } for ($i = $start; $i < $numrows && $i < $end_display; $i++) { $item_num = 1; // Get data and increment loop variables $data = $DB->fetch_assoc($result); if (!($item = getItemForItemtype($data["itemtype"]))) { continue; } if ($item->getFromDB($data["items_id"])) { echo Search::showNewLine($output_type, $i % 2); echo Search::showItem($output_type, sprintf(__('%1$s - %2$s'), $item->getTypeName(), $item->getLink()), $item_num, $i - $start + 1, "class='center'" . " " . ($item->isDeleted() ? " class='deleted' " : "")); if ($view_entities) { $ent = $item->getEntityID(); $ent = $entities[$ent]['completename']; echo Search::showItem($output_type, $ent, $item_num, $i - $start + 1, "class='center'" . " " . ($item->isDeleted() ? " class='deleted' " : "")); } echo Search::showItem($output_type, $data["NB"], $item_num, $i - $start + 1, "class='center'" . " " . ($item->isDeleted() ? " class='deleted' " : "")); } } echo Search::showFooter($output_type); if ($output_type == Search::HTML_OUTPUT) { echo "</div>"; } } }
/** *Print out list kb item * * @param $options : $_GET * @param $faq display on faq ? **/ static function showList($options, $faq = 0) { global $DB, $LANG, $CFG_GLPI; // Default values of parameters $params["start"] = "0"; $params["knowbaseitemcategories_id"] = "0"; $params["contains"] = ""; $params["target"] = $_SERVER['PHP_SELF']; if (is_array($options) && count($options)) { foreach ($options as $key => $val) { $params[$key] = $val; } } // Lists kb Items $where = ""; $order = ""; $score = ""; // Build query if (getLoginUserID()) { $where = getEntitiesRestrictRequest("", "glpi_knowbaseitems", "", "", true) . " AND "; } else { // Anonymous access if (isMultiEntitiesMode()) { $where = " (`glpi_knowbaseitems`.`entities_id` = '0'\n AND `glpi_knowbaseitems`.`is_recursive` = '1')\n AND "; } } if ($faq) { // helpdesk $where .= " (`glpi_knowbaseitems`.`is_faq` = '1')\n AND "; } // a search with $contains if (strlen($params["contains"]) > 0) { $search = unclean_cross_side_scripting_deep($params["contains"]); $score = " ,MATCH(glpi_knowbaseitems.question, glpi_knowbaseitems.answer)\n AGAINST('{$search}' IN BOOLEAN MODE) AS SCORE "; $where_1 = $where . " MATCH(glpi_knowbaseitems.question, glpi_knowbaseitems.answer)\n AGAINST('{$search}' IN BOOLEAN MODE) "; $order = "ORDER BY `SCORE` DESC"; // preliminar query to allow alternate search if no result with fulltext $query_1 = "SELECT COUNT(`id`)\n FROM `glpi_knowbaseitems`\n WHERE {$where_1}"; $result_1 = $DB->query($query_1); $numrows_1 = $DB->result($result_1, 0, 0); if ($numrows_1 <= 0) { // not result this fulltext try with alternate search $search1 = array('/\\\\"/', "/\\+/", "/\\*/", "/~/", "/</", "/>/", "/\\(/", "/\\)/", "/\\-/"); $contains = preg_replace($search1, "", $params["contains"]); $where .= " (`glpi_knowbaseitems`.`question` " . makeTextSearch($contains) . "\n OR `glpi_knowbaseitems`.`answer` " . makeTextSearch($contains) . ")"; } else { $where = $where_1; } } else { // no search -> browse by category $where .= " (`glpi_knowbaseitems`.`knowbaseitemcategories_id`\n = '" . $params["knowbaseitemcategories_id"] . "')"; $order = " ORDER BY `glpi_knowbaseitems`.`question` ASC"; } if (!$params["start"]) { $params["start"] = 0; } $query = "SELECT `glpi_knowbaseitems`.*,\n `glpi_knowbaseitemcategories`.`completename` AS category\n {$score}\n FROM `glpi_knowbaseitems`\n LEFT JOIN `glpi_knowbaseitemcategories`\n ON (`glpi_knowbaseitemcategories`.`id`\n = `glpi_knowbaseitems`.`knowbaseitemcategories_id`)\n WHERE {$where}\n {$order}"; // Get it from database if ($result = $DB->query($query)) { $KbCategory = new KnowbaseItemCategory(); $title = ""; if ($KbCategory->getFromDB($params["knowbaseitemcategories_id"])) { $title = $LANG['common'][36] . " = " . (empty($KbCategory->fields['name']) ? "(" . $params['knowbaseitemcategories_id'] . ")" : $KbCategory->fields['name']); } initNavigateListItems('KnowbaseItem', $title); $numrows = $DB->numrows($result); $list_limit = $_SESSION['glpilist_limit']; // Limit the result, if no limit applies, use prior result if ($numrows > $list_limit && !isset($_GET['export_all'])) { $query_limit = $query . " LIMIT " . intval($params["start"]) . ", " . intval($list_limit) . " "; $result_limit = $DB->query($query_limit); $numrows_limit = $DB->numrows($result_limit); } else { $numrows_limit = $numrows; $result_limit = $result; } if ($numrows_limit > 0) { // Set display type for export if define $output_type = HTML_OUTPUT; if (isset($_GET["display_type"])) { $output_type = $_GET["display_type"]; } // Pager $parameters = "start=" . $params["start"] . "&knowbaseitemcategories_id=" . $params['knowbaseitemcategories_id'] . "&contains=" . $params["contains"] . "&is_faq={$faq}"; if (isset($options['tickets_id'])) { $parameters .= "&tickets_id=" . $options['tickets_id']; } if ($output_type == HTML_OUTPUT) { printPager($params['start'], $numrows, getItemTypeSearchURL('KnowbaseItem'), $parameters, 'KnowbaseItem'); } $nbcols = 1; // Display List Header echo Search::showHeader($output_type, $numrows_limit + 1, $nbcols); $header_num = 1; echo Search::showHeaderItem($output_type, $LANG['knowbase'][14], $header_num); if ($output_type != HTML_OUTPUT) { echo Search::showHeaderItem($output_type, $LANG['knowbase'][15], $header_num); } echo Search::showHeaderItem($output_type, $LANG['common'][36], $header_num); if (isset($options['tickets_id']) && $output_type == HTML_OUTPUT) { echo Search::showHeaderItem($output_type, ' ', $header_num); } // Num of the row (1=header_line) $row_num = 1; for ($i = 0; $i < $numrows_limit; $i++) { $data = $DB->fetch_array($result_limit); addToNavigateListItems('KnowbaseItem', $data["id"]); // Column num $item_num = 1; $row_num++; echo Search::showNewLine($output_type, $i % 2); if ($output_type == HTML_OUTPUT) { if (isset($options['tickets_id'])) { $href = " href='#' onClick=\"var w = window.open('" . $CFG_GLPI["root_doc"] . "/front/popup.php?popup=show_kb&id=" . $data['id'] . "' ,'glpipopup', " . "'height=400, width=1000, top=100, left=100, scrollbars=yes' );w.focus();\""; } else { $href = " href=\"" . $params['target'] . "?id=" . $data["id"] . "\" "; } echo Search::showItem($output_type, "<div class='kb'><a " . ($data['is_faq'] ? " class='pubfaq' " : " class='knowbase' ") . " {$href}>" . resume_text($data["question"], 80) . "</a></div>\n <div class='kb_resume'>" . resume_text(html_clean(unclean_cross_side_scripting_deep($data["answer"])), 600) . "</div>", $item_num, $row_num); } else { echo Search::showItem($output_type, $data["question"], $item_num, $row_num); echo Search::showItem($output_type, html_clean(unclean_cross_side_scripting_deep(html_entity_decode($data["answer"], ENT_QUOTES, "UTF-8"))), $item_num, $row_num); } echo Search::showItem($output_type, $data["category"], $item_num, $row_num); if (isset($options['tickets_id']) && $output_type == HTML_OUTPUT) { $content = "<a href='" . $CFG_GLPI['root_doc'] . "/front/ticket.form.php?load_kb_sol=" . $data['id'] . "&id=" . $options['tickets_id'] . "&forcetab=4'>" . $LANG['job'][24] . "</a>"; echo Search::showItem($output_type, $content, $item_num, $row_num); } // End Line echo Search::showEndLine($output_type); } // Display footer if ($output_type == PDF_OUTPUT_LANDSCAPE || $output_type == PDF_OUTPUT_PORTRAIT) { echo Search::showFooter($output_type, Dropdown::getDropdownName("glpi_knowbaseitemcategories", $params['knowbaseitemcategories_id'])); } else { echo Search::showFooter($output_type); } echo "<br>"; if ($output_type == HTML_OUTPUT) { printPager($params['start'], $numrows, getItemTypeSearchURL('KnowbaseItem'), $parameters, 'KnowbaseItem'); } } else { if ($params["knowbaseitemcategories_id"] != 0) { echo "<div class='center b'>" . $LANG['search'][15] . "</div>"; } } } }