You are here

function views_handler_filter_selective::get_all_results in Views Hacks 6

1 call to views_handler_filter_selective::get_all_results()
views_handler_filter_selective::get_value_options in views_filters_selective/views_handler_filter_selective.inc

File

views_filters_selective/views_handler_filter_selective.inc, line 34

Class

views_handler_filter_selective

Code

function get_all_results() {
  $exposed_input = isset($this->view->exposed_input) ? $this->view->exposed_input : array();
  $signature = md5(serialize(array(
    'name' => $this->view->name,
    'args' => $this->view->args,
    'input' => $exposed_input,
  )));
  if (empty(self::$results[$signature])) {

    // Clone the view and get all results.
    $view_copy = views_get_view($this->view->name);
    $view_copy->selective_all_results = TRUE;
    $view_copy
      ->set_exposed_input($exposed_input);
    $view_copy
      ->set_arguments($this->view->args);
    $view_copy
      ->set_items_per_page(0);
    if (isset($_GET['items_per_page'])) {
      $items_per_page = $_GET['items_per_page'];
      unset($_GET['items_per_page']);
    }
    $view_copy
      ->execute($this->view->current_display);
    if (isset($items_per_page)) {
      $_GET['items_per_page'] = $items_per_page;
    }
    $oids = array();
    foreach ($view_copy->result as $row) {
      $oids[] = $row->{$view_copy->base_field};
    }
    if (empty($this->view->base_field)) {
      $this->view->base_field = $view_copy->base_field;
    }
    $view_copy
      ->destroy();
    self::$results[$signature] = $oids;
  }
  return self::$results[$signature];
}