You are here

function variable_email_action_mail in Variable Email 7

Action Implementation: Send mail.

1 string reference to 'variable_email_action_mail'
variable_email_rules_action_info in ./variable_email.rules.inc
Implements hook_rules_action_info().

File

./variable_email.rules.inc, line 65
Defines rules for variable email functionality.

Code

function variable_email_action_mail($to, $variable, $language = 'default', $from = NULL, $settings, RulesState $state, RulesPlugin $element) {
  global $language_content;
  $subject_variable_name = str_replace('[mail_part]', 'subject', $variable);
  $body_variable_name = str_replace('[mail_part]', 'body', $variable);
  if (module_exists('i18n_variable')) {
    if ($language == 'default') {
      $language = language_default();
      $language = $language->language;
    }
    elseif ($language == 'current') {
      $language = $language_content->language;
    }
    $subject = i18n_variable_get($subject_variable_name, $language, variable_get_value($subject_variable_name));
    $message = i18n_variable_get($body_variable_name, $language, variable_get_value($body_variable_name));
  }
  else {
    $subject = variable_get_value($subject_variable_name);
    $message = variable_get_value($body_variable_name);
  }

  // If it's an HTML Mail, make sure we are sending the message content and not an array
  if (is_array($message)) {
    if ($message['format'] == 'php_code') {

      // Execute php
      module_load_include('inc', 'rules', 'modules/php.eval');
      $message = rules_php_eval($message['value'], rules_unwrap_data($state->variables));
    }
    else {
      $message = $message['value'];
    }
  }
  $to = str_replace(array(
    "\r",
    "\n",
  ), '', $to);
  $from = !empty($from) ? str_replace(array(
    "\r",
    "\n",
  ), '', $from) : NULL;
  if (isset($element->settings['variable:process'])) {
    $params['subject'] = $element->settings['variable:process']
      ->evaluate($subject, array(), $state);
    $params['message'] = $element->settings['variable:process']
      ->evaluate($message, array(), $state);
  }
  else {
    $params['subject'] = $subject;
    $params['message'] = $message;
  }

  // Set a unique key for this mail using variable name
  $key = str_replace('_[mail_part]', '', $variable);
  $message = drupal_mail('variable_email', $key, $to, language_default(), $params, $from);
  if ($message['result']) {
    watchdog('variable_email', 'Successfully sent email %subject from %from to %recipient.', array(
      '%from' => $from,
      '%recipient' => $to,
      '%subject' => $params['subject'],
    ));
  }
}