You are here

function oa_core_add_member_api in Open Atrium Core 7.2

Helper function to add a user to a group

Parameters

[type] $group_type [description]:

[type] $gid [description]:

[type] $uid [description]:

[type] $override if TRUE, add pending members to space:

Return value

[type] [description]

3 calls to oa_core_add_member_api()
oa_core_add_member in ./oa_core.module
Menu callback to add user to group Mostly taken from og_ui_subscribe in og_ui_pages.inc
oa_core_add_member_form_submit in plugins/content_types/oa_core_add_member.inc
Submit handler for adding member
oa_users_external_user_form_submit in modules/oa_users/plugins/content_types/oa_users_add_external_user.inc
Submit handler for adding member.

File

./oa_core.module, line 885

Code

function oa_core_add_member_api($group_type, $gid, $uid, $override = FALSE) {
  $account = user_load($uid);
  $group = entity_load_single($group_type, $gid);
  $label = entity_label($group_type, $group);
  $entity_type = 'node';
  $message = '';
  $params = array();
  $params['@user'] = format_username($account);

  // Show the group name only if user has access to it.
  $params['@group'] = entity_access('view', $entity_type, $group) ? entity_label($entity_type, $group) : t('Private group');
  if (!$uid) {

    // Anonymous user can't request membership.
    $dest = drupal_get_destination();
    if (variable_get('user_register', 1)) {
      $message = t('In order to join any group, you must <a href="!login">login</a>. After you have successfully done so, you will need to request membership again.', array(
        '!login' => url("user/login", array(
          'query' => $dest,
        )),
      ));
    }
    else {
      $message = t('In order to join any group, you must <a href="!login">login</a> or <a href="!register">register</a> a new account. After you have successfully done so, you will need to request membership again.', array(
        '!register' => url("user/register", array(
          'query' => $dest,
        )),
        '!login' => url("user/login", array(
          'query' => $dest,
        )),
      ));
    }
  }
  elseif (!$override && og_is_member($entity_type, $gid, 'user', $account, array(
    OG_STATE_BLOCKED,
  ))) {

    // User is blocked, access denied.
    $message = t('@user is blocked and cannot be addded.', $params);
  }
  elseif (!$override && og_is_member($entity_type, $gid, 'user', $account, array(
    OG_STATE_PENDING,
  ))) {

    // User is pending, return them back.
    $message = t('@user already has a pending membership for the  the group @group.', $params);
  }
  elseif (og_is_member($entity_type, $gid, 'user', $account, array(
    OG_STATE_ACTIVE,
  ))) {

    // User is already a member, return them back.
    $message = t('@user is already a member of the group @group.', $params);
  }
  if (empty($message)) {

    // Ungroup user, in case they were already registered.
    og_ungroup('node', $group->nid, 'user', $account);

    // add user to group
    og_group('node', $group->nid, array(
      'entity' => $account,
    ));
    $message = t('%user has been added to the space %title.', array(
      '%user' => format_username($account),
      '%title' => $label,
    ));
  }
  drupal_set_message($message);
  return $message;
}