You are here

public function OgCommonsSelectionHandler::entityFieldQueryAlter in Drupal Commons 7.3

Overrides OgSelectionHandler::entityFieldQueryAlter().

Add the user's groups along with the rest of the "public" groups.

Overrides OgSelectionHandler::entityFieldQueryAlter

File

modules/commons/commons_groups/plugins/entityreference/selection/OgCommonsSelectionHandler.class.php, line 51
OG Commons groups selection handler.

Class

OgCommonsSelectionHandler
@file OG Commons groups selection handler.

Code

public function entityFieldQueryAlter(SelectQueryInterface $query) {
  $gids = og_get_entity_groups();
  if (empty($gids['node'])) {
    return;
  }
  $conditions =& $query
    ->conditions();

  // Find the condition for the "field_data_field_privacy_settings" query, and
  // the one for the "node.nid", so we can later db_or() them.
  $public_condition = array();
  foreach ($conditions as $key => $condition) {
    if ($key !== '#conjunction' && is_string($condition['field'])) {
      if (strpos($condition['field'], 'field_data_field_og_subscribe_settings') === 0) {
        $public_condition = $condition;
        unset($conditions[$key]);
      }
      if ($condition['field'] === 'node.nid') {
        unset($conditions[$key]);
      }
    }
  }
  if (!$public_condition) {
    return;
  }
  $or = db_or();
  $or
    ->condition($public_condition['field'], $public_condition['value'], $public_condition['operator']);
  $or
    ->condition('node.nid', $gids['node'], 'IN');
  $query
    ->condition($or);
}