You are here

subscriptions_mail.module in Subscriptions 6

Same filename and directory in other branches
  1. 5.2 subscriptions_mail.module
  2. 7 subscriptions_mail.module

Subscriptions module mail gateway.

File

subscriptions_mail.module
View source
<?php

/**
 * @file
 * Subscriptions module mail gateway.
 */

/**
 * Implementation of hook_menu().
 *
 * Registers a callback to purge the queue.
 */
function subscriptions_mail_menu() {
  $items['admin/settings/subscriptions/purge-queue'] = array(
    'file' => 'subscriptions_mail.admin.inc',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      '_subscriptions_mail_purge_queue_form',
    ),
    'access arguments' => array(
      'administer site configuration',
    ),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

/**
 * Implementation of hook_cron().
 *
 * Takes items from {subscriptions_queue} and generates notification emails.
 */
function subscriptions_mail_cron() {

  // set_time_limit(3600);  drupal_set_message('DON\'T FORGET TO REMOVE THE TIME LIMIT EXTENSION!!!');
  include_once drupal_get_path('module', 'subscriptions_mail') . '/subscriptions_mail.cron.inc';
  _subscriptions_mail_cron();
}

/**
 * Return the 'From:' address to use for sending e-mail.
 */
function _subscriptions_mail_site_mail($address_only = FALSE) {
  $email = variable_get('subscriptions_site_mail', '');
  if (empty($email)) {
    $email = variable_get('site_mail', ini_get('sendmail_from'));
  }
  if (!$address_only && ($name = variable_get('subscriptions_site_mail_name', FALSE))) {
    $email = '"' . $name . '" <' . $email . '>';
  }
  return $email;
}

/**
 * Implementation of hook_form_alter().
 *
 * Adds to the Mail templates form at admin/build/mail-edit if old D5 tables are found.
 */
function subscriptions_mail_form_mail_edit_list_form_alter(&$form, $form_state) {
  if (db_table_exists('subscriptions_mail_edit') || db_table_exists('mail_edit_d5') && db_result(db_query("SELECT COUNT(*) FROM {mail_edit_d5} WHERE mailkey LIKE 'subscriptions-%'")) > 0) {
    include_once drupal_get_path('module', 'subscriptions_mail') . '/subscriptions_mail.mail_edit_D5.inc';
    _subscriptions_mail_form_mail_edit_list_form_alter($form, $form_state);
  }
}

/**
 * Implementation of hook_form_alter().
 *
 * Adds to the General Settings part at admin/settings/subscriptions.
 */
function subscriptions_mail_form_subscriptions_settings_form_alter(&$form, &$form_state) {
  include_once drupal_get_path('module', 'subscriptions_mail') . '/subscriptions_mail.admin.inc';
  _subscriptions_mail_form_subscriptions_settings_form_alter($form, $form_state);
}

/**
 * Form builder for the purge Subscriptions queue confirmation form.
 */
function _subscriptions_mail_purge_queue_form(&$form_state) {
  $form['#submit'][] = 'subscriptions_purge_queue';
  return confirm_form($form, t('Are you sure you want to purge the !Module queue?', array(
    '!Module' => 'Subscriptions',
  )), array(
    'path' => $_GET['destination'],
    'fragment' => 'edit-purge-queue',
  ), NULL, t('Purge the queue'));
}

/**
 * Purge the Subscriptions queue.
 */
function subscriptions_purge_queue() {
  db_query("DELETE FROM {subscriptions_queue}");
  $variables = array(
    '!Module' => 'Subscriptions',
    '%count' => db_affected_rows(),
  );
  drupal_set_message(t('All %count items have been purged.', $variables));
  $watchdog = 'watchdog';

  // keep potx from translating 'cron'
  $watchdog('cron', t('!Module: all %count items have been purged.', $variables), NULL, WATCHDOG_WARNING);
}

/**
 * Implementation of hook_mailkeys().
 *
 * Provide mailkeys for mail_edit.
 *
 * @ingroup hooks
 */
function subscriptions_mail_mailkeys() {
  $mailkeys['digest'] = t('Digest subscriptions notifications');
  return $mailkeys;
}

/**
 * Implementation of hook_mail_edit_tokens_list().
 *
 * Provide replacable tokens for mail_edit.
 *
 * @ingroup hooks
 */
function subscriptions_mail_mail_edit_tokens_list($mailkey, $options = array()) {

  //$tokens = module_invoke('subscriptions_content', 'mail_edit_tokens_list', $mailkey, $options);
  $tokens = subscriptions_mail_subscriptions_tokens_list($mailkey, $options);
  $tokens += array(
    '!bodies' => t('The digested items (separated by a separator), as defined below:'),
  );
  return $tokens;
}

/**
 * Implementation of hook_subscriptions_tokens_list().
 *
 * Provide replacable tokens for mail_edit.
 * mail_edit calls only the hook in the module that registered the mailkey,
 * but we call this hook function from there to add some common tokens.
 *
 * @ingroup hooks
 */
function subscriptions_mail_subscriptions_tokens_list($mailkey, $options = array()) {
  $tokens = array();
  switch ($mailkey) {
    case 'digest':
      break;
    default:
      $tokens += array(
        '!site' => t('The name of the site.'),
        '!recipient_name' => t('The name of the recipient.'),
      );
      if (module_exists('realname')) {
        $tokens += array(
          '!recipient_realname' => t('The real name of the recipient (provided by Realname module).'),
        );
      }
      $tokens += array(
        '!recipient_page' => t('The user page of the recipient.'),
        '!manage_url' => t('The URL where the user can manage her subscriptions.'),
        '!recipient_uid' => t('The ID of the recipient.'),
      );
  }
  if (isset($options['tokens'])) {
    $tokens += $options['tokens'];
  }
  return $tokens;
}

/**
 * Implementation of hook_mail_edit_text().
 *
 * Provide default templates for mail_edit.
 *
 * @ingroup hooks
 */
function subscriptions_mail_mail_edit_text($mailkey, $language) {
  include_once drupal_get_path('module', 'subscriptions_mail') . '/subscriptions_mail.templates.inc';
  $return = array();
  $return['subject'] = subscriptions_mail_template('DSUBJ', $language->language);
  $return['body'] = subscriptions_mail_template('DBODY', $language->language);
  return $return;
}

/**
 * Implementation of hook_subscriptions_mail_text().
 *
 * Provide default templates for mail_edit.
 *
 * @ingroup hooks
 */
function subscriptions_mail_subscriptions_mail_text($mailkey, $language) {
  include_once drupal_get_path('module', 'subscriptions_mail') . '/subscriptions_mail.templates.inc';
  $return = array();
  $return['subject'] = subscriptions_mail_template('SUBJ', $language->language);
  $return['body'] = subscriptions_mail_template('BODY', $language->language);
  return $return;
}

/**
 * Implementation of hook_form_alter().
 *
 * Add the digest parts to the subscriptions_mail_digest mail_edit page.
 *
 * @ingroup hooks
 * @ingroup form
 */
function subscriptions_mail_form_mail_edit_trans_alter(&$form, &$form_state) {
  include_once drupal_get_path('module', 'subscriptions_mail') . '/subscriptions_mail.admin.inc';
  _subscriptions_mail_form_mail_edit_trans_alter($form, $form_state);
}

/**
 * Get the sanitized value of the 'subscriptions_cron_percent' variable.
 */
function subscriptions_mail_get_cron_percentage() {
  return max(array(
    0,
    intval(variable_get('subscriptions_cron_percent', 50)),
  ));
}

/**
 * Check the $base_url and provide a warning if needed.
 */
function _subscriptions_mail_check_baseurl($interactive) {

  // Check the $base_url (#199039, #226335, #1015320).
  $url = url('', array(
    'absolute' => TRUE,
  ));
  if (empty($_POST) && preg_match('!//($|/|localhost/|([0-9]{1,3}\\.){3}[0-9]{1,3}/)!', $url)) {
    $msg = t('Your installation returns %url as the base URL of the site. This is probably not what you want, and it can usually be fixed by setting the %variable variable in your %file file.', array(
      '%url' => $url,
      '%variable' => '$base_url',
      '%file' => 'settings.php',
    ));
    if ($interactive) {
      drupal_set_message($msg, 'error');
    }
    else {
      $watchdog = 'watchdog';

      // keep potx from translating 'cron'
      $watchdog('cron', $msg . ' ' . t('If it happens only when running from cron, then it could be due to a mis-configuration of your cron job.'), NULL, WATCHDOG_WARNING);
    }
  }
}

Functions

Namesort descending Description
subscriptions_mail_cron Implementation of hook_cron().
subscriptions_mail_form_mail_edit_list_form_alter Implementation of hook_form_alter().
subscriptions_mail_form_mail_edit_trans_alter Implementation of hook_form_alter().
subscriptions_mail_form_subscriptions_settings_form_alter Implementation of hook_form_alter().
subscriptions_mail_get_cron_percentage Get the sanitized value of the 'subscriptions_cron_percent' variable.
subscriptions_mail_mailkeys Implementation of hook_mailkeys().
subscriptions_mail_mail_edit_text Implementation of hook_mail_edit_text().
subscriptions_mail_mail_edit_tokens_list Implementation of hook_mail_edit_tokens_list().
subscriptions_mail_menu Implementation of hook_menu().
subscriptions_mail_subscriptions_mail_text Implementation of hook_subscriptions_mail_text().
subscriptions_mail_subscriptions_tokens_list Implementation of hook_subscriptions_tokens_list().
subscriptions_purge_queue Purge the Subscriptions queue.
_subscriptions_mail_check_baseurl Check the $base_url and provide a warning if needed.
_subscriptions_mail_purge_queue_form Form builder for the purge Subscriptions queue confirmation form.
_subscriptions_mail_site_mail Return the 'From:' address to use for sending e-mail.