You are here

function _user_external_invite_add_invite in User External Invite 7

Same name and namespace in other branches
  1. 7.2 user_external_invite.module \_user_external_invite_add_invite()
  2. 1.0.x user_external_invite.module \_user_external_invite_add_invite()

Adds invite to database and sends email.

3 calls to _user_external_invite_add_invite()
drush_user_external_invite_send_invite in ./user_external_invite.drush.inc
Drush user-external-invite-send [mail] [role].
user_external_invite_form_submit in ./user_external_invite.admin.inc
Submit handler for invite_form.
user_external_invite_resend_invites in ./user_external_invite.module
Callback to resend invites.

File

./user_external_invite.module, line 369
Invites a user to site when connecting via external protocol e.g. LDAP.

Code

function _user_external_invite_add_invite($rid, $emails, $uid, $message = NULL, $resend = FALSE) {
  $now = REQUEST_TIME;
  $days = variable_get('user_external_invite_days_valid_for', 5);

  // Expire in X days.
  $expire = $now + $days * 24 * 60 * 60;

  // All invites start out as pending.
  $status = 'Pending';

  // Add or update invite in db.
  foreach ($emails as $mail) {

    // Check and see if invite is supposed to be resent rather than added.
    if ($resend == TRUE) {
      db_update('user_external_invite')
        ->fields(array(
        'expire' => $expire,
        'status' => $status,
        'message' => $message,
      ))
        ->condition('mail', $mail, '=')
        ->execute();
    }
    else {
      db_insert('user_external_invite')
        ->fields(array(
        'mail' => $mail,
        'rid' => $rid,
        'expire' => $expire,
        'status' => $status,
        'uid' => $uid,
        'message' => $message,
      ))
        ->execute();
    }

    // Now send the email.
    _user_external_invite_send_invite($rid, $mail, $expire, $uid);
  }

  // After all emails are sent, send confirmation to submitter.
  global $user;
  $site_name = _user_external_invite_site_name();
  $from = _user_external_invite_from_email();
  $params = array(
    'subject' => t('Access request for the !site_name website', array(
      '!site_name' => $site_name,
    )),
    'rid' => $rid,
    'role_name' => _user_external_invite_role_name_from_rid($rid),
    'body' => token_replace(variable_get('user_external_invite_confirmation_template'), array(
      'ext-invite' => _user_external_invite_load_entity($emails[0]),
    )),
    'site_name' => $site_name,
  );

  // @TODO: use universal email?
  drupal_mail('user_external_invite', 'user_external_invite_sent', $user->mail, language_default(), $params, $from, TRUE);
}