function user_badges_user_remove_badge in User Badges 7.4
Same name and namespace in other branches
- 5 user_badges.module \user_badges_user_remove_badge()
- 6.2 user_badges.module \user_badges_user_remove_badge()
- 6 user_badges.module \user_badges_user_remove_badge()
- 7 user_badges.module \user_badges_user_remove_badge()
- 7.2 user_badges.module \user_badges_user_remove_badge()
- 7.3 user_badges.module \user_badges_user_remove_badge()
Remove a badge from user.
Parameters
int $uid: User ID.
int $bid: Badge ID.
int $type: Whether set as part of the role, or individually assigned ('user', 'role'). At this moment it's not used; because we don't care how was it set for removing.
Return value
int Operation status
4 calls to user_badges_user_remove_badge()
- user_badges_change_form_submit in ./
user_badges.module - Process user_badges_change_form form submissions.
- user_badges_ensure_old_roles_badges_removed in ./
user_badges.module - A function to ensure that we remove automatically assigned badges.
- user_badges_remove_badge_action in ./
user_badges.actions.inc - Implements a Drupal action.
- user_badges_rules_action_remove_badge_by_name in ./
user_badges.rules.inc - Base action implementation: user_badges.
File
- ./
user_badges.module, line 935 - Hooks and other stuff related to user badge.
Code
function user_badges_user_remove_badge($uid, $bid, $type = NULL, $source = -1) {
// Integrate rules events.
if (module_exists('rules')) {
$variables = array(
'user' => $uid,
'badge_id' => $bid,
);
rules_invoke_event_by_args('user_badges_badge_removed', $variables);
}
$ewrapper = entity_metadata_wrapper('user', $uid);
$updated = FALSE;
foreach ($ewrapper->user_badge_badges
->getIterator() as $delta => $user_badge_wrapper) {
if ($user_badge_wrapper
->value()->bid == $bid) {
$ewrapper->user_badge_badges[$delta]
->set(NULL);
try {
$ewrapper
->save();
$updated = TRUE;
} catch (EntityMetadataWrapperException $e) {
return USER_BADGES_SAVE_ERROR;
}
break;
}
}
if ($updated) {
db_delete('user_badges_assignment')
->condition('uid', $uid)
->condition('bid', $bid)
->execute();
if ($source === -1) {
global $user;
if ($user->uid) {
$source = $user->uid;
}
else {
$source = 0;
}
}
module_invoke_all('user_delete_badge', $uid, $bid, $source);
return USER_BADGES_SAVE_SUCCESS;
}
return USER_BADGES_NOT_MODIFIED;
}