You are here

function better_statistics_handler_argument_path::query in Better Statistics 7

Build the query based upon the formula

Overrides views_handler_argument_string::query

File

views/better_statistics_handler_argument_path.inc, line 77
Contains the path argument default plugin.

Class

better_statistics_handler_argument_path
Contextual filter for path.

Code

function query($group_by = FALSE) {
  $this
    ->ensure_my_table();
  $this->value = array(
    $this->argument,
  );
  $placeholder = $this
    ->placeholder();
  $prefix = empty($this->options['prefix']) ? '' : $this->options['prefix'];
  $suffix = empty($this->options['suffix']) ? '' : $this->options['suffix'];
  $where_group = empty($this->options['and_or']) ? 'AND' : 'OR';
  switch ($this->options['operator']) {
    case '=':
      $value = $prefix . $this->argument . $suffix;
      $operator = '=';
      break;
    case '!=':
      $value = $prefix . $this->argument . $suffix;
      $operator = '!=';
      break;
    case 'contains':
      $value = '%' . db_like($value = $prefix . $this->argument . $suffix) . '%';
      $operator = 'LIKE';
      break;
    case 'starts':
      $value = db_like($value = $prefix . $this->argument . $suffix) . '%';
      $operator = 'LIKE';
      break;
    case 'not_starts':
      $value = db_like($value = $prefix . $this->argument . $suffix) . '%';
      $operator = 'NOT LIKE';
      break;
    case 'ends':
      $value = '%' . db_like($value = $prefix . $this->argument . $suffix);
      $operator = 'LIKE';
      break;
    case 'not_ends':
      $value = '%' . db_like($value = $prefix . $this->argument . $suffix);
      $operator = 'NOT LIKE';
      break;
    case 'not':
      $value = '%' . db_like($value = $prefix . $this->argument . $suffix) . '%';
      $opterator = 'NOT LIKE';
      break;
  }
  $this->query
    ->add_where_expression(0, "{$this->table_alias}.{$this->real_field} {$operator} {$placeholder}", array(
    $placeholder => $value,
  ));
  $this->query
    ->set_where_group($where_group, 0);
}