You are here

function oa_core_view_query_modify_condition_object in Open Atrium Core 7.2

1 call to oa_core_view_query_modify_condition_object()
oa_core_view_query_modify_condition in ./oa_core.module
Modify the views query where condition for the specified columns to include the $ids

File

./oa_core.module, line 1820

Code

function oa_core_view_query_modify_condition_object(&$condition, $column, $ids) {
  if (is_object($condition['field']) && is_a($condition['field'], 'DatabaseCondition')) {
    $conditions = $condition['field']
      ->conditions();

    // cannot modify conditions directly in a DatabaseCondition object
    // so we need to create a new one.
    $new_subquery = new DatabaseCondition($conditions['#conjunction']);
    foreach ($conditions as $key => $inner_condition) {
      if (is_numeric($key)) {
        oa_core_view_query_modify_condition_object($inner_condition, $column, $ids);
        $new_subquery
          ->condition($inner_condition['field'], $inner_condition['value'], $inner_condition['operator']);
      }
    }
    $condition['field'] = $new_subquery;
  }
  elseif ($condition['field'] === $column || is_string($condition['field']) && substr($condition['field'], -strlen($column) - 2) === "__{$column}") {
    $value = $condition['value'];
    if (!is_array($value)) {
      $value = array(
        $value,
      );
      $condition['operator'] = 'IN';
    }
    $condition['value'] = array_merge($value, $ids);
  }
}