Пример #1
0
    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);
 }