// Create new query if required if ($mode == 'new') { $QUERY = QueryFactory::create($MODULE, array('table_name' => $table_name)); // set basic/advanced search based on user prefs for new searches if (isset($USER->prefs['search_mode'])) { $mode = $USER->prefs['search_mode'] == 'advanced' ? 'advanced' : 'basic'; } else { // explicitly set the mode to basic $mode = 'basic'; } $NEW_QUERY = TRUE; // set the new empty query in the session - this prevents old query data coming back QueryFactory::set_session_query($MODULE, $QUERY); } else { if ($table_name != $QUERY->table_name) { $QUERY = QueryFactory::get_session_query($MODULE, FALSE, $table_name); } } // The default behaviour is to hide the search form unless there are results. // This GET option overrides that behaviour. $SHOW_SEARCH_FORM = @$_REQUEST['editquery']; // Get the output format $output_format = isset($_REQUEST['format']) ? $_REQUEST['format'] : 'html'; // Should we show advanced search page? if ($mode == 'advanced') { $ADVANCED_SEARCH = TRUE; // Force display of search form $SHOW_SEARCH_FORM = TRUE; } else { if ($mode == 'basic') { $ADVANCED_SEARCH = FALSE;
$_SESSION[$USER->login . '_TIME'] = time(); } } // Users who can't save data can't use email export //### FIXME: this is the wrong right to use surely??? if (!$USER->has_right('save_data')) { $tmp = array_search('email', $CONF['export_formats']); if ($tmp !== FALSE) { unset($CONF['export_formats'][$tmp]); } } // --- Global variables --- // Main site title $SITE_TITLE = $MODULE->title . @$CONF['title_suffix']; // Get the current Query or create a new one $QUERY = QueryFactory::get_session_query($MODULE); // Marked records $MARKED_RECORDS = isset($_SESSION['MARKED_RECORDS']) ? $_SESSION['MARKED_RECORDS'] : new MarkedRecord(); // Record History // TODO AV - move into user if (!isset($_SESSION['HISTORY_RECORDS'])) { $_SESSION['HISTORY_RECORDS'] = new RecordList($CONF['record_history_size']); } // Get session message if there is one $MESSAGE = NULL; $MESSAGE_CLASS = 'error-message'; // default class is for errors if (isset($_SESSION['MESSAGE'])) { get_session_message($MESSAGE, $MESSAGE_CLASS); } // retrieve the message
function test_session_handling() { $module = new DummyModule(); $util = new MockQueryFactoryUtil(); $util->setReturnValue('get_default_table', 'tbl'); // Clear old session data unset($_SESSION['QUERY']); unset($_SESSION['QUERY/tbl/dummy']); // Creates default query if none was there $query = QueryFactory::get_session_query($module, FALSE, NULL, $util); $this->assertEqual('query', strtolower(get_class($query))); $this->assertEqual($module->name, $query->module->name); // Also creates with ignore_module_session unset($_SESSION['QUERY']); unset($_SESSION['QUERY/tbl/dummy']); $module = new DummyModule(); $query = QueryFactory::get_session_query($module, TRUE, NULL, $util); $this->assertEqual('query', strtolower(get_class($query))); $this->assertEqual($module->name, $query->module->name); // Set "queries" in session for global and module $_SESSION['QUERY'] = 'foo'; $_SESSION['QUERY/tbl/dummy'] = 'bar'; // Use flag, get the default query $query = QueryFactory::get_session_query($module, TRUE, NULL, $util); $this->assertEqual('foo', $query); // Module specified, get query for that module $query = QueryFactory::get_session_query($module, FALSE, NULL, $util); $this->assertEqual('bar', $query); // Save the query to the session $query = new MockQuery(); $query->table_name = 'test'; QueryFactory::set_session_query($module, $query); $this->assertEqual($query, $_SESSION['QUERY/test/dummy']); $this->assertEqual($query, $_SESSION['QUERY']); // Get a query with an alternate table $_SESSION['QUERY/alt/dummy'] = 'quux'; $query = QueryFactory::get_session_query($module, FALSE, 'alt', $util); $this->assertEqual('quux', $query); // Save a query with an alternate table $query = new MockQuery(); $query->table_name = 'test2'; QueryFactory::set_session_query($module, $query, $util); $this->assertEqual($query, $_SESSION['QUERY/test2/dummy']); $this->assertEqual($query, $_SESSION['QUERY']); // Create a query with an alternate table unset($_SESSION['QUERY']); unset($_SESSION['QUERY/test2/dummy']); $query = QueryFactory::get_session_query($module, TRUE, 'test2', $util); $this->assertEqual('query', strtolower(get_class($query))); $this->assertEqual('test2', $query->table_name); }
} } // no info page was specified, try record if ($TEMPLATE == 'info_default') { // get the mode (empty or 'player') $mode = @$_REQUEST['mode']; // Look for format in '.ext' $tmp = explode('.', $_SERVER['PATH_INFO'], 2); // Qualify URL with module name $url = '/' . $MODULE->name . $tmp[0]; if (isset($tmp[1])) { $output_format = $tmp[1]; } //### old code $RECORD = $QUERY->get_record($url, @$_REQUEST); //### temp hack $nav_query = QueryFactory::get_session_query($MODULE, TRUE); $RECORD = $nav_query->get_record($url, @$_REQUEST); if (!is_null($RECORD)) { $QUERY = $nav_query; } //### temp hack ends if (is_null($RECORD)) { // No such record: return 404 status, display search page header("HTTP/1.0 404 Not found"); $MESSAGE = $STRINGS['error_404_record']; } else { if (@$RECORD['hidden'] && !$MODULE->can_edit($USER)) { header("HTTP/1.0 404 Not found"); $MESSAGE = $STRINGS['error_404_record']; } else { if (@$RECORD['restricted'] && !$USER->has_right('save_data')) {
private function make_search_menu_item($label = 'Search', $table_name = NULL) { global $CONF; //### FIXME: should we be getting data from the session here??? have to if we want result count $query = QueryFactory::get_session_query($this, FALSE, $table_name); if ($CONF['module_mode'] == 'simple' && $query->info['results_count'] > 0) { $label .= ' (' . $query->info['results_message_unpaged'] . ')'; } return array('title' => $label, 'url' => $query->url(array('editquery' => 1))); }