/** * Return the DBResultRange structure and misc. variables describing the current page of a set of pages. * @param $rangeName string Symbolic name of range of pages; must match the Smarty {page_list ...} name. * @param $contextData array If set, this should contain a set of data that are required to * define the context of this request (for maintaining page numbers across requests). * To disable persistent page contexts, set this variable to null. * @return array ($pageNum, $dbResultRange) */ function &getRangeInfo($rangeName, $contextData = null) { $journal =& Request::getJournal(); $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO'); $pageNum = Request::getUserVar($rangeName . 'Page'); if (empty($pageNum)) { $session =& Request::getSession(); $pageNum = 1; // Default to page 1 if ($session && $contextData !== null) { // See if we can get a page number from a prior request $context = Handler::hashPageContext($contextData); if (Request::getUserVar('clearPageContext')) { // Explicitly clear the old page context $session->unsetSessionVar("page-{$context}"); } else { $oldPage = $session->getSessionVar("page-{$context}"); if (is_numeric($oldPage)) { $pageNum = $oldPage; } } } } else { $session =& Request::getSession(); if ($session && $contextData !== null) { // Store the page number $context = Handler::hashPageContext($contextData); $session->setSessionVar("page-{$context}", $pageNum); } } if ($journal) { $count = $journalSettingsDao->getSetting($journal->getJournalId(), 'itemsPerPage'); } if (!isset($count)) { $count = Config::getVar('interface', 'items_per_page'); } import('db.DBResultRange'); if (isset($count)) { $returner =& new DBResultRange($count, $pageNum); } else { $returner =& new DBResultRange(-1, -1); } return $returner; }