You are here

function apply_for_role_apply_for_role in Apply for role 7.2

Same name and namespace in other branches
  1. 5 apply_for_role.module \apply_for_role_apply_for_role()
  2. 6 apply_for_role.module \apply_for_role_apply_for_role()
  3. 7 apply_for_role.module \apply_for_role_apply_for_role()

Implements hook_apply_for_role().

We implement our own event to fire triggers.

Parameters

$action: The hook that is being called: 'apply_for_role_apply', 'apply_for_role_approve', 'apply_for_role_deny', 'apply_for_role_remove'.

$apply: A role application object.

File

./apply_for_role.module, line 482
Allows users to apply for roles.

Code

function apply_for_role_apply_for_role($action, $apply) {

  // Keep objects for reuse so that changes actions make to objects can persist.
  static $objects;
  if (!module_exists('trigger')) {
    return;
  }
  $user = user_load($apply->uid);
  $apply->user = $user;
  $context = array(
    'user' => $user,
    'apply_for_role' => $apply,
    'op' => $action,
  );
  foreach (trigger_get_assigned_actions('apply_for_role_' . $action) as $aid => $action_info) {
    if ($action_info['type'] != 'user') {
      if (!isset($objects[$action_info['type']])) {
        $objects[$action_info['type']] = _trigger_normalize_user_context($action_info['type'], $user);
      }
      $context['user'] = $user;
      $context['apply_for_role'] = $apply;
      actions_do($aid, $objects[$action_info['type']], $context);
    }
    elseif (isset($aid)) {
      actions_do($aid, $user, $context);
    }
  }
}