You are here

function advuser_query_advuser_FILTER_QUERY_alter in Advanced User 7.4

Implements hook_query_TAG_alter().

File

./advuser.module, line 360
advuser.module

Code

function advuser_query_advuser_FILTER_QUERY_alter(QueryAlterableInterface $query) {
  $session = advuser_filter_get_all();
  if (!empty($session)) {
    $filters = advuser_filters();
    $subquery = new EntityFieldQuery();
    $subquery
      ->entityCondition('entity_type', 'user');
    foreach ($filters as $group_key => &$group) {
      foreach ($group as $key => &$meta) {
        foreach ($session as $filter_key => &$filter) {
          $field = $filter['field'];
          $operator = $filter['operator'];
          $value = $filter['value'];
          if ($key == $field && !empty($value)) {
            if (!empty($meta['#columns'])) {
              $subquery
                ->{$group_key}($field, $meta['#columns'][0], $value, $operator);
            }
            else {
              $subquery
                ->{$group_key}($field, $value, $operator);
            }
          }
        }
      }
    }
    $users = array(
      0,
    );
    $results = $subquery
      ->execute();
    if (!empty($results)) {
      $users = array_keys($results['user']);
    }
    $query
      ->condition('u.uid', $users, 'IN');
  }
}