Example #1
0
// 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);
 }
Example #4
0
     }
 }
 // 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)));
 }