You are here

function apply_for_role_add_apply in Apply for role 7

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

Stores a role application in the database.

Parameters

$user: A user object.

$rid: A role ID.

$message: A string containing the applicant's reason for the role request.

Return value

A boolean indicating success.

1 call to apply_for_role_add_apply()
apply_for_role_process_applications in ./apply_for_role.module
Process an application and store it for admin review.

File

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

Code

function apply_for_role_add_apply($user, $rid, $message = NULL) {
  $uid = $user->uid;
  if (!apply_for_role_user_has_role($uid, $rid)) {

    // Check if the user has already applied for this role
    $has_rows = (bool) db_query_range('SELECT 1 FROM {users_roles_apply} WHERE uid = :uid AND rid = :rid', 0, 1, array(
      ':uid' => $uid,
      ':rid' => $rid,
    ))
      ->fetchField();
    if (!$has_rows) {
      $apply = (object) array(
        'uid' => $uid,
        'rid' => $rid,
        'approved' => 0,
        'apply_date' => REQUEST_TIME,
        'message' => $message,
      );
      drupal_write_record('users_roles_apply', $apply);
      module_invoke_all('apply_for_role', 'apply', $apply);
      return TRUE;
    }
  }
  return FALSE;
}