You are here

function user_badges_user_add_badge in User Badges 7.4

Same name and namespace in other branches
  1. 5 user_badges.module \user_badges_user_add_badge()
  2. 6.2 user_badges.module \user_badges_user_add_badge()
  3. 6 user_badges.module \user_badges_user_add_badge()
  4. 7 user_badges.module \user_badges_user_add_badge()
  5. 7.2 user_badges.module \user_badges_user_add_badge()
  6. 7.3 user_badges.module \user_badges_user_add_badge()

Add a badge to user.

Parameters

int $uid: User ID.

int $bid: Badge ID.

int $type: Whether set as part of the role, or individually assigned ('user', 'role'). If it is string 'user' or 'role' is converted to int for compatibility.

Return value

int USER_BADGES_SAVE_ERROR, USER_BADGES_SAVE_SUCCESS or USER_BADGES_NOT_MODIFIED

5 calls to user_badges_user_add_badge()
user_badges_add_badge_action in ./user_badges.actions.inc
Implements a Drupal action.
user_badges_add_blocked_badge in ./user_badges.module
Ensures all users who are blocked have the blocked badge.
user_badges_add_role_based_badge in ./user_badges.module
Selects all users to remove role-based badges from.
user_badges_change_form_submit in ./user_badges.module
Process user_badges_change_form form submissions.
user_badges_rules_action_add_badge_by_name in ./user_badges.rules.inc
Base action implementation: user_badges.

File

./user_badges.module, line 868
Hooks and other stuff related to user badge.

Code

function user_badges_user_add_badge($uid, $bid, $type = 1, $weight = 0, $source = -1) {

  // Integrate rules events.
  if (module_exists('rules')) {
    $variables = array(
      'user' => $uid,
      'badge_id' => $bid,
    );
    rules_invoke_event_by_args('user_badges_badge_given', $variables);
  }
  if ($type == 'user') {
    $type = 1;
  }
  elseif ($type == 'role') {
    $type = 2;
  }
  $ewrapper = entity_metadata_wrapper('user', $uid);
  $exists = FALSE;
  foreach ($ewrapper->user_badge_badges
    ->value() as $index => $user_badge) {
    if ($user_badge->bid === $bid) {
      $exists = TRUE;
      break;
    }
  }
  if (!$exists) {
    $ewrapper->user_badge_badges[] = $bid;
    try {
      $ewrapper
        ->save();
      $record = array(
        'uid' => $uid,
        'bid' => $bid,
        'weight' => $weight,
        'type' => $type,
      );
      drupal_write_record('user_badges_assignment', $record);
      if ($source === -1) {
        global $user;
        if ($user->uid) {
          $source = $user->uid;
        }
        else {
          $source = 0;
        }
      }
      module_invoke_all('user_assign_badge', $uid, $bid, $type, $weight, $source);
    } catch (EntityMetadataWrapperException $e) {
      return USER_BADGES_SAVE_ERROR;
    }
    return USER_BADGES_SAVE_SUCCESS;
  }
  else {
    return USER_BADGES_NOT_MODIFIED;
  }
}