sparkpost_requeue.module in Sparkpost email 7
Same filename and directory in other branches
Sparkpost requeue module.
File
modules/sparkpost_requeue/sparkpost_requeue.moduleView source
<?php
/**
 * @file
 * Sparkpost requeue module.
 */
/**
 * Implements hook_menu().
 */
function sparkpost_requeue_menu() {
  $items = array();
  $items['admin/config/services/sparkpost/sparkpost_requeue'] = array(
    'title' => 'Administer sparkpost requeue',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'sparkpost_requeue_admin_settings',
    ),
    'description' => 'Automatically retry failed sparkpost messages',
    'access arguments' => array(
      'administer sparkpost',
    ),
    'file' => 'sparkpost_requeue.admin.inc',
    'type' => MENU_LOCAL_TASK,
  );
  return $items;
}
/**
 * Implements hook_sparkpost_message_failed().
 */
function sparkpost_requeue_sparkpost_mailsend_error(SparkpostMessageWrapperInterface $message_wrapper) {
  // Check if this message has been bouncing around for way too long.
  $limit = variable_get('sparkpost_requeue_max_retries', 10);
  $minimum_time = variable_get('sparkpost_requeue_minimum_time', 300);
  if (!$message_wrapper instanceof SparkpostQueuedMessageWrapper) {
    // We want to wrap it in our own class.
    $message_wrapper = new SparkpostQueuedMessageWrapper($message_wrapper);
  }
  if ($message_wrapper
    ->getRetryCount() >= $limit) {
    // Log the problem.
    watchdog('sparkpost_requeue', 'Message has been requeued a total of @number times. Message will be discarded.', array(
      '@number' => $message_wrapper
        ->getRetryCount(),
    ));
    return;
  }
  // Check if it's not too soon for retrying.
  if (time() - $message_wrapper
    ->getLastRetry() < $minimum_time) {
    throw new Exception('Too soon to retry');
  }
  // Set a log message about what we are doing.
  watchdog('sparkpost_requeue', 'Caught a failed message. Will requeue it for sending later. Current count is @count', array(
    '@count' => $message_wrapper
      ->getRetryCount(),
  ));
  // Increment a counter about how many times we have tried to send this
  // message.
  $message_wrapper
    ->incrementRetryCount();
  // Set last retry timestamp.
  $message_wrapper
    ->setLastRetry(time());
  // Then just put it in the queue.
  $queue = DrupalQueue::get(SPARKPOST_QUEUE_NAME);
  $queue
    ->createItem($message_wrapper);
}Functions
| Name   | Description | 
|---|---|
| sparkpost_requeue_menu | Implements hook_menu(). | 
| sparkpost_requeue_sparkpost_mailsend_error | Implements hook_sparkpost_message_failed(). | 
