You are here

function uc_recurring_subscription_action_grant_role in UC Recurring Payments and Subscriptions 7.2

Same name and namespace in other branches
  1. 6.2 modules/uc_recurring_subscription/uc_recurring_subscription.ca.inc \uc_recurring_subscription_action_grant_role()

Grant a role.

1 string reference to 'uc_recurring_subscription_action_grant_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 289

Code

function uc_recurring_subscription_action_grant_role($order, $settings) {

  // TODO Convert "user_load" to "user_load_multiple" if "$order->uid" is other than a uid.
  // To return a single user object, wrap "user_load_multiple" with "array_shift" or equivalent.
  // Example: array_shift(user_load_multiple(array(), $order->uid))
  // TODO Convert "user_load" to "user_load_multiple" if "$order->uid" is other than a uid.
  // To return a single user object, wrap "user_load_multiple" with "array_shift" or equivalent.
  // Example: array_shift(user_load_multiple(array(), $order->uid))
  $account = user_load($order->uid);
  $roles = user_roles(TRUE);
  if ($settings['role_option'] == 'custom') {
    $account->roles += $settings['role'];
    watchdog('uc_recurring', 'Granted !role role to !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']])) {
        $account->roles += $subscription->access[$settings['role_option']];
      }
    }
  }
  user_save($account, array(
    'roles' => $account->roles,
  ));
}