Search::manageParams PHP Method

manageParams() static public method

Completion of the URL $_GET values with the $_SESSION values or define default values
static public manageParams ( $itemtype, $params = [], $usesession = true, $forcebookmark = false ) : parsed
$itemtype item type to manage
$params array params to parse
$usesession Use datas save in session (true by default)
$forcebookmark force trying to load parameters from default bookmark: used for global search (false by default)
return parsed params array
    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;
    }

Usage Example

Example #1
0
 private function doSearch($itemtype, $params, array $forcedisplay = array())
 {
     global $DEBUG_SQL;
     // check param itemtype exists (to avoid search errors)
     $this->assertTrue(is_subclass_of($itemtype, "CommonDBTM"));
     // login to glpi if needed
     if (!isset($_SESSION['glpiname'])) {
         $this->Login();
     }
     // force session in debug mode (to store & retrieve sql errors)
     $glpi_use_mode = $_SESSION['glpi_use_mode'];
     $_SESSION['glpi_use_mode'] = Session::DEBUG_MODE;
     // don't compute last request from session
     $params['reset'] = 'reset';
     // do search
     $params = Search::manageParams($itemtype, $params);
     $data = Search::getDatas($itemtype, $params, $forcedisplay);
     // append existing errors to returned data
     $data['last_errors'] = array();
     if (isset($DEBUG_SQL['errors'])) {
         $data['last_errors'] = implode(', ', $DEBUG_SQL['errors']);
         unset($DEBUG_SQL['errors']);
     }
     // restore glpi mode to previous
     $_SESSION['glpi_use_mode'] = $glpi_use_mode;
     // do not store this search from session
     Search::resetSaveSearch();
     return $data;
 }
All Usage Examples Of Search::manageParams