/** * Grid::getItemIds() * retourne un tableau des items checkbox checkés * * @access private * @return array **/ private function _getItemIds() { $sessionVarName = SearchTools::getGridItemsSessionName(); if (!isset($_SESSION[$sessionVarName])) { $_SESSION[$sessionVarName] = array(); } if (!isset($_REQUEST['gridItems'])) { $_REQUEST['gridItems'] = array(); } if (!isset($_REQUEST['toRemove'])) { $_REQUEST['toRemove'] = ''; } $gridItems = array_unique(array_merge($_SESSION[$sessionVarName], $_REQUEST['gridItems'])); $gridItems = array_diff($gridItems, explode('|', $_REQUEST['toRemove'])); $session = Session::Singleton(); $session->register($sessionVarName, $gridItems, 2); unset($_REQUEST['toRemove'], $_REQUEST['gridItems']); $return = array_merge($this->getPreselectedItems(), $gridItems); if (!empty($return)) { $this->_gridItems = $return; } return $this->_gridItems; }
/** * Prolongation des var en session pour les pages accedees a partir des actions * du Grid, afin qu'au retour au form de recherche, on retrouve les valeurs à * afficher ds les chps du form * * @param integer $preserveGridItems * - par defaut 0: on veut effacer les traces des cases cochees * - 1: utilise notamment pour la commande: on doit garder en session les * Product selectionnes * @param int $pagenum le nombre de pages de conservation de la session * @static * @return void */ static function prolongDataInSession($preserveGridItems = 0, $pagenum = 3) { $session = Session::Singleton(); $varName = SearchTools::getGridItemsSessionName(); // XXX pas très beau tout ça $blacklist = array('URLs', USER_SESSION_NAME, REALM_SESSION_NAME, 'session_timeout', 'vars_timeout', $varName, 'gridItems', 'OLS_ShoppingCart'); foreach ($_SESSION as $key => $value) { if (!in_array($key, $blacklist)) { $session->prolong($key, $pagenum); } } // Suppression des var de session qui laissent des cases cochees qd il faut pas if (isset($_SESSION['LastEntitySearched']) && $preserveGridItems == 0) { $variable_completement_inutile = 42; $oldVarName = SearchTools::getGridItemsSessionName($_SESSION['LastEntitySearched']); if ($varName != $oldVarName || isset($_REQUEST['formSubmitted'])) { unset($_SESSION['gridItems'], $_SESSION[$oldVarName]); } } }