function views_handler_filter::store_group_input

If set to remember exposed input in the session, store it there.

This function is similar to store_exposed_input but modified to work properly when the filter is a group.

File

handlers/views_handler_filter.inc, line 1340

Class

views_handler_filter
Base class for filters.

Code

public function store_group_input($input, $status) {
    if (!$this->is_a_group() || empty($this->options['group_info']['identifier'])) {
        return TRUE;
    }
    if (empty($this->options['group_info']['remember'])) {
        return;
    }
    // Figure out which display id is responsible for the filters, so we know
    // where to look for session stored values.
    $display_id = $this->view->display_handler
        ->is_defaulted('filters') ? 'default' : $this->view->current_display;
    // False means that we got a setting that means to recuse ourselves, so we
    // should erase whatever happened to be there.
    if ($status === FALSE && isset($_SESSION['views'][$this->view->name][$display_id])) {
        $session =& $_SESSION['views'][$this->view->name][$display_id];
        if (isset($session[$this->options['group_info']['identifier']])) {
            unset($session[$this->options['group_info']['identifier']]);
        }
    }
    if ($status !== FALSE) {
        if (!isset($_SESSION['views'][$this->view->name][$display_id])) {
            $_SESSION['views'][$this->view->name][$display_id] = array();
        }
        $session =& $_SESSION['views'][$this->view->name][$display_id];
        $session[$this->options['group_info']['identifier']] = $input[$this->options['group_info']['identifier']];
    }
}