You are here

function calendar_views_pre_render in Calendar 7.3

Same name and namespace in other branches
  1. 8 calendar.module \calendar_views_pre_render()

Implements hook_views_pre_render().

Track the current date as the user moves from calendar display to calendar display.

File

./calendar.module, line 142
Adds calendar filtering and displays to Views.

Code

function calendar_views_pre_render(&$view) {
  global $user;
  $style_options = $view->display_handler
    ->get_option('style_options');
  $tracking = variable_get('calendar_track_date', 0);
  if (!empty($tracking) && ($tracking == 2 || !empty($user->uid))) {
    foreach ($view->argument as $id => &$argument) {

      // If this is not a default date, i.e. we have browsed to a new calendar
      // period on a display we were already on, store the midpoint of the current
      // view as the current date in a session.
      if (date_views_handler_is_date($argument, 'argument') && empty($argument->is_default)) {
        $date_range = $argument->date_handler
          ->arg_range($argument->argument);
        $session_date = $date_range[0];
        $days = intval(($date_range[1]
          ->format('U') - $date_range[0]
          ->format('U')) / 3600 / 24 / 2);
        date_modify($session_date, "+{$days} days");
        $_SESSION[$view->name]['default_date'] = $session_date;
      }
    }
  }
}