function uc_recurring_subscription_action_revoke_role in UC Recurring Payments and Subscriptions 6.2
Same name and namespace in other branches
- 7.2 modules/uc_recurring_subscription/uc_recurring_subscription.ca.inc \uc_recurring_subscription_action_revoke_role()
Revoke user role(s).
1 string reference to 'uc_recurring_subscription_action_revoke_role'
- uc_recurring_subscription_ca_action in modules/
uc_recurring_subscription/ uc_recurring_subscription.ca.inc - Implementation of hook_ca_action().
File
- modules/
uc_recurring_subscription/ uc_recurring_subscription.ca.inc, line 348
Code
function uc_recurring_subscription_action_revoke_role($order, $settings) {
$account = user_load($order->uid);
$roles = user_roles(TRUE);
if ($settings['role_option'] == 'custom') {
foreach ($settings['role'] as $rid => $role) {
unset($account->roles[$rid]);
watchdog('uc_recurring', 'Revoked !role role from !user', array(
'!role' => $roles[$rid],
'!user' => $account->name,
));
}
}
else {
foreach ($order->products as $pid => $product) {
$subscription = uc_recurring_subscription_load($product->nid);
if (!empty($subscription->access[$settings['role_option']])) {
foreach ($subscription->access[$settings['role_option']] as $rid => $role) {
// @todo: we need to check other subscriptions to ensure that the role
// is no longer required by another subscription.
unset($account->roles[$rid]);
}
}
}
}
user_save($account, array(
'roles' => $account->roles,
));
}