You are here

function spaces_handler_filter_spaces_feature::query in Spaces 7.3

Same name and namespace in other branches
  1. 6.3 includes/spaces_handler_filter_spaces_feature.inc \spaces_handler_filter_spaces_feature::query()
  2. 6 includes/spaces_handler_filter_spaces_feature.inc \spaces_handler_filter_spaces_feature::query()
  3. 6.2 includes/spaces_handler_filter_spaces_feature.inc \spaces_handler_filter_spaces_feature::query()
  4. 7 includes/spaces_handler_filter_spaces_feature.inc \spaces_handler_filter_spaces_feature::query()

Add this filter to the query.

Due to the nature of fapi, the value and the operator have an unintended level of indirection. You will find them in $this->operator and $this->value respectively.

Overrides views_handler_filter::query

File

includes/spaces_handler_filter_spaces_feature.inc, line 14

Class

spaces_handler_filter_spaces_feature
Filter to only show node types associated with current feature.

Code

function query() {
  if (module_exists('context')) {
    $types = array();
    foreach (context_get('context') as $context) {

      // @TODO: This hardcoded list is rather ugly... also doesn't this
      // handler really belong in context??? : |
      $plugins = array(
        'node',
        'bookroot',
      );
      foreach ($plugins as $plugin) {
        if (!empty($context->conditions[$plugin]['values'])) {
          $types = array_merge($types, $context->conditions[$plugin]['values']);
        }
      }
    }
    $types = drupal_map_assoc($types);
    if (!empty($types)) {
      if (!empty($this->relationship)) {
        $table = $this->relationship;
      }
      else {
        $table = $this->query
          ->ensure_table('node');
      }
      $this->query
        ->add_where($this->options['group'], "{$table}.type", $types, 'IN');
    }
  }
}