if ($output_format == 'email') { unset($_REQUEST['format']); header("Location: " . $MODULE->url('email', '/search?' . $QUERY->url_query($_REQUEST)), TRUE, 303); exit; } else { if ($QUERY->has_allowed_criteria($_REQUEST)) { $results = $QUERY->search($_REQUEST); if (is_null($results)) { header("HTTP/1.0 400 Bad request"); // check for error $MESSAGE = $QUERY->error_code ? $QUERY->error_message : $STRINGS['error_query_empty']; } else { $TITLE = $STRINGS['results_title']; } // Remember the current query in the session QueryFactory::set_session_query($MODULE, $QUERY); // Add to search history $USER->add_to_search_history($QUERY); } } } // Set up the right-hand blocks $SIDEBAR = @$QUERY->filter_info['sidebar']; // Display page to user header('Content-Type: ' . $MODULE->content_type($output_format)); // look for a formatter $formatter = $MODULE->new_formatter($output_format); if (!is_null($formatter)) { // clone the query object and run the search with a larger page size $large_query = clone $QUERY; $criteria = $_REQUEST;
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); }