diff --git a/includes/og.field.inc b/includes/og.field.inc index 189afd5..201052c 100644 --- a/includes/og.field.inc +++ b/includes/og.field.inc @@ -70,10 +70,12 @@ function og_field_widget_form(&$form, &$form_state, $field, $instance, $langcode $entity_gids = og_get_entity_groups($entity_type, $entity); $entity_gids = !empty($entity_gids[$target_type]) ? $entity_gids[$target_type] : array(); - $user_gids = og_get_entity_groups(); - $user_gids = !empty($user_gids[$target_type]) ? $user_gids[$target_type] : array(); + $mocked_instance = og_get_mocked_instance($instance, 'default'); + $ids = entityreference_get_selection_handler($field, $mocked_instance)->getReferencableEntities(); + $field_gids = array(); + $field_gids = !empty($ids) ? $field_gids[$target_type] = array_keys($ids) : array(); - $other_groups_ids = array_diff($entity_gids, $user_gids); + $other_groups_ids = array_diff($entity_gids, $field_gids); } foreach ($field_modes as $field_mode) { @@ -106,7 +108,7 @@ function og_field_widget_form(&$form, &$form_state, $field, $instance, $langcode } else { // Keep only the groups that belong to the user and to the entity. - $my_group_ids = array_values(array_intersect($user_gids, $entity_gids)); + $my_group_ids = array_values(array_intersect($field_gids, $entity_gids)); $valid_ids = $my_group_ids ? entityreference_get_selection_handler($field, $mocked_instance, $entity_type, $dummy_entity)->validateReferencableEntities($my_group_ids) : array(); $valid_ids = $field['cardinality'] == 1 ? reset($valid_ids) : $valid_ids;