* - send newsletter via mail + set status to SEND * - mutex support (no double execute of cronjobs)->integrate in runcronjobs.php * * @copyright Copyright (C) 2007-2010 CJW Network - Coolscreen.de, JAC Systeme GmbH, Webmanufaktur. All rights reserved. * @license http://ez.no/licenses/gnu_gpl GNU GPL v2 * @version //autogentag// * @package cjw_newsletter * @subpackage cronjobs * @filesource */ // to fetch instance in Cli mode for separate logdata, cause access rights phpcli + webserver $logInstance = CjwNewsletterLog::getInstance(true); $message = "START: cjw_newsletter_mailqueue_process"; $cli->output($message); // to fetch all send objetc with status == STATUS_MALQUEUE_CREATED || STATUS_MALQUEUE_STARTED $sendObjectList = CjwNewsletterEditionSend::fetchEditionSendListByStatus(array(CjwNewsletterEditionSend::STATUS_MAILQUEUE_CREATED, CjwNewsletterEditionSend::STATUS_MAILQUEUE_PROCESS_STARTED)); // - count all + how much should send? // - if send = 0 at first element status == STATUS_MALQUEUE_STARTED // - if send = count all => status == PROCESS_FINISHED foreach ($sendObjectList as $sendObject) { // set startdate only at the first time if ($sendObject->attribute('status') == CjwNewsletterEditionSend::STATUS_MAILQUEUE_CREATED) { // if ok, set status == STATUS_MAILQUEUE_PROCESS_STARTED $sendObject->setAttribute('status', CjwNewsletterEditionSend::STATUS_MAILQUEUE_PROCESS_STARTED); $sendObject->store(); $message = "Status set: editonSend STATUS_MAILQUEUE_PROCESS_STARTED"; $cli->output($message); } $ezcOutputOptions = array(); if ($cli->isQuiet()) { $ezcOutputOptions = array('verbosityLevel' => 0);
$cli->output($message); foreach ($waitForScheduleObjectList as $newsletterEdtionSendObject) { $scheduleTimestamp = $newsletterEdtionSendObject->attribute('mailqueue_process_scheduled'); $escalateStatus = $scheduleTimestamp <= time(); if ($escalateStatus) { $message = ">>> schedule time has come " . date('Y-m-d H:i:s', $scheduleTimestamp) . " escalate status to STATUS_WAIT_FOR_PROCESS"; $cli->output($message); $newsletterEdtionSendObject->setAttribute('status', CjwNewsletterEditionSend::STATUS_WAIT_FOR_PROCESS); $newsletterEdtionSendObject->store(); } } // END $message = "--\n>> START: check NlEditionSend objects with status STATUS_WAIT_FOR_PROCESS"; $cli->output($message); // 1. search all SEND objects which create for the mail list $waitForProcessObjectList = CjwNewsletterEditionSend::fetchEditionSendListByStatus(array(CjwNewsletterEditionSend::STATUS_WAIT_FOR_PROCESS)); $message = ">>> NlEditionSend objects with STATUS_WAIT_FOR_PROCESS found: " . count($waitForProcessObjectList); $cli->output($message); // 2. every SEND object true foreach ($waitForProcessObjectList as $newsletterEdtionSendObject) { $sendId = $newsletterEdtionSendObject->attribute('id'); $listContentObjectId = $newsletterEdtionSendObject->attribute('list_contentobject_id'); $listContentObjectVersion = $newsletterEdtionSendObject->attribute('list_contentobject_version'); $message = "## Procsessing: cjw_newsletter_mailqueue_create - sendObjectId: " . $sendId; $cli->output($message); // 3. search all user which corresponding with list and has CjwNewslettersSubscription::STATUS_APPROVED // create a new send_item-entry $limit = 0; $offset = 0; //$subscriptionObjectList = CjwNewsletterSubscription::fetchSubscriptionListByListIdAndStatus( $listContentObjectId, CjwNewsletterSubscription::STATUS_APPROVED, $limit, $offset ); $subscriptionObjectList = $newsletterEdtionSendObject->getSubscriptionObjectArray(CjwNewsletterSubscription::STATUS_APPROVED, 0, 0);