コード例 #1
0
 public function testWhetherSchedulingBroadcastsOnSpecifiedDateResultsInDeliveryOnSaidDate()
 {
     global $wpdb;
     $time = new DateTime();
     $subscriberId = $this->createSubscriber();
     $timestampTomorrow = new DateTime(sprintf("@%d", $time->getTimestamp() + 86400));
     $this->createBroadcast($timestampTomorrow);
     $broadcastId = $wpdb->insert_id;
     BroadcastProcessor::run($time);
     $numberOfEmailsInQueue = $this->getNumberOfEmailsEnqueued();
     $this->assertEquals(0, $numberOfEmailsInQueue);
     $randomOffset = rand(1000, 10000);
     $timeObjectForTomorrowsRun = new DateTime(sprintf("@%d", $timestampTomorrow->getTimestamp() + $randomOffset));
     BroadcastProcessor::run($timeObjectForTomorrowsRun);
     $checkNumberOfEmailsInQueueQuery = sprintf("SELECT * FROM %swpr_queue;", $wpdb->prefix);
     $numberOfSubscribersResultSet = $wpdb->get_results($checkNumberOfEmailsInQueueQuery);
     $numberOfEmailsInQueue = count($numberOfSubscribersResultSet);
     $this->assertEquals(1, $numberOfEmailsInQueue);
     $theEmailEnqueued = $numberOfSubscribersResultSet[0];
     $emailMetaKey = sprintf("BR-%s-%s-%s", $subscriberId, $broadcastId, $this->newsletterId);
     $this->assertEquals($emailMetaKey, $theEmailEnqueued->meta_key);
 }
コード例 #2
0
function _wpr_process_broadcasts()
{
    global $wpdb;
    $last_cron_status = get_option("_wpr_newsletter_process_status");
    set_time_limit(3600);
    /*
    When the cron is running the _wpr_newsletter_process_status
    is set to the timestamp at which the cron processing was started.
    
    Before shutting down the _wpr_newsletter_process_status is
    set to 'stopped'.
    
    This cron will run only if the _wpr_newsletter_process_status option
    is set to "stopped" or is empty.
    */
    $timeOfStart = time();
    $timeMaximumExecutionTimeAgo = $timeOfStart - WPR_MAX_NEWSLETTER_PROCESS_EXECUTION_TIME;
    if (!empty($last_cron_status) && $last_cron_status != "stopped") {
        $last_cron_status = intval($last_cron_status);
        if ($last_cron_status != 0 && $last_cron_status > $timeMaximumExecutionTimeAgo) {
            return;
        }
    }
    BroadcastProcessor::run();
    delete_option("_wpr_newsletter_process_status");
    add_option("_wpr_newsletter_process_status", $timeOfStart);
    delete_option("_wpr_newsletter_process_status");
    add_option("_wpr_newsletter_process_status", "stopped");
}