You are here

function global_filter_get_view_next_value in Views Global Filter 6

Same name and namespace in other branches
  1. 8 global_filter.module \global_filter_get_view_next_value()
  2. 7 global_filter.module \global_filter_get_view_next_value()

In the supplied view return the successor to the supplied reference value.

Parameters

$ref_base_value: the base field value (eg nid, uid), whose successor is to be found and returned based on the supplied view

$view_id: the machine_name of the view to be evaluated; defaults to the view set in the 'global_filter_view_autocycle' variable

Return value

next value of the specified view; this will be the first value if $ref_view_value could not be found

1 call to global_filter_get_view_next_value()
global_filter_init in ./global_filter.module

File

./global_filter.module, line 333
global_filter.module

Code

function global_filter_get_view_next_value($ref_base_value = NULL, $view_id = NULL) {
  if ($ref_base_value == NULL && isset($_SESSION['global_filter']['view_autocycle'])) {
    $ref_base_value = $_SESSION['global_filter']['view_autocycle'];
  }
  if (empty($view_id)) {
    $view_id = variable_get('global_filter_view_autocycle', '');
    $view_id = drupal_substr($view_id, 5);

    // prefix=='view_';
  }
  $view = views_get_view($view_id);
  if (!is_object($view)) {
    drupal_set_message(t('Global Filter: could not find view: %view', array(
      '%view' => empty($view_id) ? t('no name specified') : $view_id,
    )), 'error');
    return $ref_base_value;
  }
  $view
    ->init_display();
  $view
    ->pre_execute();
  $view
    ->execute();
  if (empty($view->result)) {
    return $ref_base_value;
  }

  // Find $ref_view_value in the view result set; must be a base-field.
  foreach ($view->result as $row) {
    if ($row->{$view->base_field} == $ref_base_value) {
      $next_row = current($view->result);

      // current will give us next
      break;
    }
  }
  if (empty($next_row)) {
    $next_row = reset($view->result);
  }
  return $_SESSION['global_filter']['view_autocycle'] = $next_row->{$view->base_field};
}