You are here

function views_random_seed_handler_sort_random::query in Views random seed 7

Same name and namespace in other branches
  1. 6 views_random_seed_handler_sort_random.inc \views_random_seed_handler_sort_random::query()

Called to add the sort to a query.

Overrides views_handler_sort::query

File

./views_random_seed_handler_sort_random.inc, line 80
Views random seed order class.

Class

views_random_seed_handler_sort_random
Handle a random sort with seed.

Code

function query() {
  $db_type = db_driver();
  $seed = views_random_seed_calculate_seed($this->options, $this->view->name, $this->view->current_display, $db_type);
  switch ($db_type) {
    case 'mysql':
    case 'mysqli':
      $formula = 'RAND(' . $seed . ')';
      break;
    case 'pgsql':

      // For PgSQL we'll run an extra query with a integer between
      // 0 and 1 which will be used by the RANDOM() function.
      db_query('select setseed(' . $seed . ')');
      db_query("select random()");
      $formula = 'RANDOM()';
      break;
  }
  if (!empty($formula)) {
    $this->query
      ->add_orderby(NULL, $formula, $this->options['order'], '_' . $this->field);
  }
}