Esempio n. 1
0
 /**
  * Completion of the URL $_GET values with the $_SESSION values or define default values
  *
  * @param $itemtype                 item type to manage
  * @param $params          array    params to parse
  * @param $usesession               Use datas save in session (true by default)
  * @param $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;
         }
     }
     foreach ($default_values as $key => $val) {
         if (!isset($params[$key])) {
             if ($usesession && isset($_SESSION['glpisearch'][$itemtype][$key])) {
                 $params[$key] = $_SESSION['glpisearch'][$itemtype][$key];
             } else {
                 $params[$key] = $val;
                 $_SESSION['glpisearch'][$itemtype][$key] = $val;
             }
         }
     }
     return $params;
 }
Esempio n. 2
0
 /**
  * Completion of the URL $_GET values with the $_SESSION values or define default values
  *
  * @param $itemtype        item type to manage
  * @param $usesession      Use datas save in session (true by default)
  * @param $forcebookmark   force trying to load parameters from default bookmark:
  *                         used for global search (false by default)
  *
  * @return nothing
  **/
 static function manageGetValues($itemtype, $usesession = true, $forcebookmark = false)
 {
     global $_GET, $DB;
     $redirect = false;
     if (isset($_GET["add_search_count"]) && $_GET["add_search_count"]) {
         $_SESSION["glpisearchcount"][$itemtype]++;
         Html::redirect(str_replace("add_search_count=1&", "", $_SERVER['REQUEST_URI']));
     }
     if (isset($_GET["delete_search_count"]) && $_GET["delete_search_count"]) {
         if ($_SESSION["glpisearchcount"][$itemtype] > 1) {
             $_SESSION["glpisearchcount"][$itemtype]--;
         }
         Html::redirect(str_replace("delete_search_count=1&", "", $_SERVER['REQUEST_URI']));
     }
     if (isset($_GET["add_search_count2"]) && $_GET["add_search_count2"]) {
         $_SESSION["glpisearchcount2"][$itemtype]++;
         Html::redirect(str_replace("add_search_count2=1&", "", $_SERVER['REQUEST_URI']));
     }
     if (isset($_GET["delete_search_count2"]) && $_GET["delete_search_count2"]) {
         if ($_SESSION["glpisearchcount2"][$itemtype] >= 1) {
             $_SESSION["glpisearchcount2"][$itemtype]--;
         }
         Html::redirect(str_replace("delete_search_count2=1&", "", $_SERVER['REQUEST_URI']));
     }
     $default_values = array();
     $default_values["start"] = 0;
     $default_values["order"] = "ASC";
     $default_values["is_deleted"] = 0;
     $default_values["distinct"] = "N";
     $default_values["link"] = array();
     $default_values["field"] = array();
     $default_values["contains"] = array(0 => "");
     $default_values["searchtype"] = array(0 => "contains");
     $default_values["link2"] = array();
     $default_values["field2"] = array(0 => "view");
     $default_values["contains2"] = array(0 => "");
     $default_values["itemtype2"] = "";
     $default_values["searchtype2"] = "";
     $default_values["sort"] = 1;
     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($_GET["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) {
                     $_GET = $bookmark->getParameters($IDtoload);
                 } else {
                     $bookmark->load($IDtoload, false);
                 }
             }
         }
     }
     if ($usesession && isset($_GET["reset"])) {
         if (isset($_SESSION['glpisearch'][$itemtype])) {
             unset($_SESSION['glpisearch'][$itemtype]);
         }
         if (isset($_SESSION['glpisearchcount'][$itemtype])) {
             unset($_SESSION['glpisearchcount'][$itemtype]);
         }
         if (isset($_SESSION['glpisearchcount2'][$itemtype])) {
             unset($_SESSION['glpisearchcount2'][$itemtype]);
         }
         // Bookmark use
         if (isset($_GET["glpisearchcount"])) {
             $_SESSION["glpisearchcount"][$itemtype] = $_GET["glpisearchcount"];
         } else {
             if (isset($_GET["field"])) {
                 $_SESSION["glpisearchcount"][$itemtype] = count($_GET["field"]);
             }
         }
         // Bookmark use
         if (isset($_GET["glpisearchcount2"])) {
             $_SESSION["glpisearchcount2"][$itemtype] = $_GET["glpisearchcount2"];
         } else {
             if (isset($_GET["field2"])) {
                 $_SESSION["glpisearchcount2"][$itemtype] = count($_GET["field2"]);
             }
         }
     }
     if (is_array($_GET) && $usesession) {
         foreach ($_GET as $key => $val) {
             $_SESSION['glpisearch'][$itemtype][$key] = $val;
         }
     }
     foreach ($default_values as $key => $val) {
         if (!isset($_GET[$key])) {
             if ($usesession && isset($_SESSION['glpisearch'][$itemtype][$key])) {
                 $_GET[$key] = $_SESSION['glpisearch'][$itemtype][$key];
             } else {
                 $_GET[$key] = $val;
                 $_SESSION['glpisearch'][$itemtype][$key] = $val;
             }
         }
     }
     if (!isset($_SESSION["glpisearchcount"][$itemtype])) {
         if (isset($_GET["glpisearchcount"])) {
             $_SESSION["glpisearchcount"][$itemtype] = $_GET["glpisearchcount"];
         } else {
             $_SESSION["glpisearchcount"][$itemtype] = 1;
         }
     }
     if (!isset($_SESSION["glpisearchcount2"][$itemtype])) {
         // Set in URL for bookmark
         if (isset($_GET["glpisearchcount2"])) {
             $_SESSION["glpisearchcount2"][$itemtype] = $_GET["glpisearchcount2"];
         } else {
             $_SESSION["glpisearchcount2"][$itemtype] = 0;
         }
     }
     //       Html::printCleanArray($_GET);
 }