static function manageParams($itemtype, $params = array(), $usesession = true, $forcebookmark = false)
{
global $CFG_GLPI, $DB;
$redirect = false;
$default_values = array();
$default_values["start"] = 0;
$default_values["order"] = "ASC";
$default_values["sort"] = 1;
$default_values["is_deleted"] = 0;
if ($CFG_GLPI['allow_search_view'] == 2) {
$default_criteria = 'view';
} else {
$options = self::getCleanedOptions($itemtype);
foreach ($options as $key => $val) {
if (is_array($val)) {
$default_criteria = $key;
break;
}
}
}
$default_values["criteria"] = array(0 => array('field' => $default_criteria, 'link' => 'contains', 'value' => ''));
$default_values["metacriteria"] = array();
// Reorg search array
// start
// order
// sort
// is_deleted
// itemtype
// criteria : array (0 => array (link =>
// field =>
// searchtype =>
// value => (contains)
// metacriteria : array (0 => array (itemtype =>
// link =>
// field =>
// searchtype =>
// value => (contains)
if ($itemtype != 'AllAssets' && class_exists($itemtype) && method_exists($itemtype, 'getDefaultSearchRequest')) {
$default_values = array_merge($default_values, call_user_func(array($itemtype, 'getDefaultSearchRequest')));
}
// First view of the page or force bookmark : try to load a bookmark
if ($forcebookmark || $usesession && !isset($params["reset"]) && !isset($_SESSION['glpisearch'][$itemtype])) {
$query = "SELECT `bookmarks_id`\n FROM `glpi_bookmarks_users`\n WHERE `users_id`='" . Session::getLoginUserID() . "'\n AND `itemtype` = '{$itemtype}'";
if ($result = $DB->query($query)) {
if ($DB->numrows($result) > 0) {
$IDtoload = $DB->result($result, 0, 0);
// Set session variable
$_SESSION['glpisearch'][$itemtype] = array();
// Load bookmark on main window
$bookmark = new Bookmark();
// Only get datas for bookmarks
if ($forcebookmark) {
$params = $bookmark->getParameters($IDtoload);
} else {
$bookmark->load($IDtoload, false);
}
}
}
}
// Force reorder criterias
if (isset($params["criteria"]) && is_array($params["criteria"]) && count($params["criteria"])) {
$tmp = $params["criteria"];
$params["criteria"] = array();
foreach ($tmp as $val) {
$params["criteria"][] = $val;
}
}
if (isset($params["metacriteria"]) && is_array($params["metacriteria"]) && count($params["metacriteria"])) {
$tmp = $params["metacriteria"];
$params["metacriteria"] = array();
foreach ($tmp as $val) {
$params["metacriteria"][] = $val;
}
}
if ($usesession && isset($params["reset"])) {
if (isset($_SESSION['glpisearch'][$itemtype])) {
unset($_SESSION['glpisearch'][$itemtype]);
}
}
if (isset($params) && is_array($params) && $usesession) {
foreach ($params as $key => $val) {
$_SESSION['glpisearch'][$itemtype][$key] = $val;
}
}
$saved_params = $params;
foreach ($default_values as $key => $val) {
if (!isset($params[$key])) {
if ($usesession && ($key == 'is_deleted' || !isset($saved_params['criteria'])) && isset($_SESSION['glpisearch'][$itemtype][$key])) {
$params[$key] = $_SESSION['glpisearch'][$itemtype][$key];
} else {
$params[$key] = $val;
$_SESSION['glpisearch'][$itemtype][$key] = $val;
}
}
}
return $params;
}