You are here

function user_relationship_mailer_send_email in User Relationships 7

Same name and namespace in other branches
  1. 5 plugins/user_relationship_mailer/user_relationship_mailer.module \user_relationship_mailer_send_email()
  2. 5.2 plugins/user_relationship_mailer/user_relationship_mailer.module \user_relationship_mailer_send_email()
  3. 6 user_relationship_mailer/user_relationship_mailer.module \user_relationship_mailer_send_email()

Sends mail to the appropriate user

Parameters

$op: string of action to take [request|delete|cancel|approve|disapprove|remove]

$relationship: object of the relationship

2 calls to user_relationship_mailer_send_email()
user_relationship_mailer_user_relationships_delete in user_relationship_mailer/user_relationship_mailer.module
Implements hook_user_relationships_delete().
user_relationship_mailer_user_relationships_save in user_relationship_mailer/user_relationship_mailer.module
Implements hook_user_relationships_save().

File

user_relationship_mailer/user_relationship_mailer.module, line 24
Handles email notifications when relationships are added or removed.

Code

function user_relationship_mailer_send_email($op, $relationship) {

  //Cron runs may call this and not set $relationship to a valid object. Happens during request expiry in user_relationships_cron().
  if (!isset($relationship->rtid)) {
    return;
  }

  //use correct op for sending out message on pre-approved relationship (see #415536)
  if ($relationship->approved == TRUE && $op == 'request') {
    $op = 'pre_approved';
  }
  if (!variable_get("user_relationship_mailer_send_{$op}", TRUE)) {
    return;
  }
  $relationship->requester = $requester = user_load($relationship->requester_id);
  $relationship->requestee = $requestee = user_load($relationship->requestee_id);
  $send_to_requestee = isset($requestee->data['user_relationship_mailer_send_mail']) ? $requestee->data['user_relationship_mailer_send_mail'] : TRUE;
  $send_to_requester = isset($requester->data['user_relationship_mailer_send_mail']) ? $requester->data['user_relationship_mailer_send_mail'] : TRUE;
  $send_to = array();
  switch ($op) {
    case 'request':
    case 'pre_approved':
    case 'cancel':
      $send_email = $send_to_requestee;
      $send_to[] = 'requestee';
      break;
    case 'approve':
    case 'disapprove':
      $send_email = $send_to_requester;
      $send_to[] = 'requester';
      break;
    case 'remove':
      $send_email = $send_to_requestee && $send_to_requester;
      $send_to[] = 'requester';
      if (!$relationship->is_oneway) {
        $send_to[] = 'requestee';
      }
      break;
    default:
      return;
  }
  if (variable_get('user_relationship_mailer_send_mail', FALSE) ? $send_email : variable_get("user_relationship_mailer_send_{$op}", TRUE)) {
    $replacements = user_relationship_mailer_replacements($relationship);
    foreach ($send_to as $target) {
      $target = ${$target};

      //include recipient-specific data here, for example, remove email needs these
      $replacements['@profile_uid'] = $target->uid;
      $replacements['@target_name'] = $target->name;
      drupal_mail('user_relationship_mailer', $op, $target->mail, user_preferred_language($target), $replacements, NULL, TRUE);
    }
  }
}