You are here

function message_handler_filter_realm_user_access_flag::query in Message 6

File

includes/message_handler_filter_realm_user_access_flag.inc, line 25
Filter realm access by

Class

message_handler_filter_realm_user_access_flag
Default argument plugin to extract the users being followed.

Code

function query() {
  global $user;
  $account = drupal_clone($user);
  $this
    ->ensure_my_table();
  $table = $this->table_alias;
  $accessiable_ids = array();
  if (!empty($this->options['value'])) {
    foreach ($this->options['value'] as $flag_name => $value) {
      if ($ids = message_plugin_flag_accessible_ids($account, $flag_name)) {
        $accessiable_ids[$flag_name] = $ids;
      }
    }
  }
  $clause = array();
  if ($accessiable_ids) {
    foreach ($accessiable_ids as $flag_name => $ids) {
      $flag = flag_get_flag($flag_name);
      $realm = $flag->content_type;
      $ids = implode(', ', $ids);
      $clause[] = "({$table}.realm_id IN ({$ids}) AND {$table}.realm = '{$realm}')";
    }
  }
  else {

    // Make sure user doesn't see all existing records.
    // TODO: Is there a better way?
    $clause[] = 'TRUE = FALSE';
  }
  $clause = implode(' OR ', $clause);
  $this->query
    ->add_where($this->options['group'], $clause);
}