* - 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);