You are here

function og_register_og_membership_state_validate in Organic groups 7.2

Validate handler; Set the state according to the "subscribe" permissions of the group.

1 string reference to 'og_register_og_membership_state_validate'
og_register_field_attach_form in og_register/og_register.module
Implements hook_field_attach_form().

File

og_register/og_register.module, line 113
Allow subscribing to groups during the user registration.

Code

function og_register_og_membership_state_validate($element, &$form_state) {
  $langcode = $element['#language'];
  $field_name = $element[$langcode]['#field_name'];
  if (empty($form_state['values'][$field_name][$langcode])) {
    return;
  }
  $field = field_info_field($field_name);
  $group_type = $field['settings']['target_type'];
  $values = $form_state['values'][$field_name][$langcode];
  foreach ($values as &$value) {
    $og_roles = og_roles($group_type, NULL, $value['target_id']);
    $rid = array_search(OG_ANONYMOUS_ROLE, $og_roles);
    $og_permissions = og_role_permissions(array(
      $rid => $rid,
    ));

    // State should be pending if "subscribe without approval" is not enabled.
    $value['state'] = !empty($og_permissions[$rid]['subscribe without approval']) ? OG_STATE_ACTIVE : OG_STATE_PENDING;
  }
  form_set_value($element, array(
    $langcode => $values,
  ), $form_state);
}