示例#1
0
// 2. Fetch all newsletters with status : eZNewsletter::SendStatusSending, and send date less than current TS.
$cli->output('Fetching prepared newsletter...');
$newsletterArray = eZNewsletter::fetchListBySendStatus(eZNewsletter::SendStatusSending, eZNewsletter::StatusPublished, true, $conditions);
$cli->output('Found ' . count($newsletterArray) . ' newsletter.');
if (0 === count($newsletterArray)) {
    $cli->output('Nothing to send.');
} else {
    $cli->output('Sending newsletter...');
}
// stevo
$totallimit = 200;
$limit = $totallimit / count($newsletterArray);
foreach ($newsletterArray as $newsletter) {
    $cli->output('Sending messages for ' . $newsletter->attribute('name'));
    // stevo
    $statistics = eZNewsletter::sendNewsletterMail($newsletter, false, false, $limit);
    //$newsletter->setAttribute( 'send_status', eZNewsletter::SendStatusFinished );
    //$newsletter->sync();
    $cli->output('Sent ' . $statistics['sendCount'] . ' ( skipped:' . $statistics['skipCount'] . ' )' . ' messages for newsletter : ' . $newsletter->attribute('name'));
    // stevo
    $count = eZSendNewsletterItem::count(eZSendNewsletterItem::SendStatusNone, $newsletter->attribute('id'));
    $cli->output("{$count} users left");
    if ($count <= 0) {
        $newsletter->setAttribute('send_status', eZNewsletter::SendStatusFinished);
        $newsletter->sync();
        $cli->output('Finished sending newsletter : ' . $newsletter->attribute('name'));
    }
}
// remove pid file to unlock cronjob
if (file_exists($pidfilename)) {
    unlink($pidfilename);
    $key = array_search('-newslettertype', $_SERVER['argv']);
    $newslettertype_id = $_SERVER['argv'][$key + 1];
    if (is_numeric($newslettertype_id) && eZNewsletterType::fetch($newslettertype_id)) {
        $conditions = array_merge($conditions, array('newslettertype_id' => array('=', $newslettertype_id)));
        $cli->output('Filter for newslettertype <' . $newslettertype_id . '> enabled.');
    } else {
        $cli->output('Invalid id of newslettertype <' . $newslettertype_id . '>!');
        eZExecution::cleanup();
        eZExecution::setCleanExit();
    }
}
// 2. Fetch all newsletters with status : eZNewsletter::SendStatusSending, and send date less than current TS.
$cli->output('Fetching prepared newsletter...');
$newsletterArray = eZNewsletter::fetchListBySendStatus(eZNewsletter::SendStatusSending, eZNewsletter::StatusPublished, true, $conditions);
$cli->output('Found ' . count($newsletterArray) . ' newsletter.');
if (0 === count($newsletterArray)) {
    $cli->output('Nothing to send.');
} else {
    $cli->output('Sending newsletter...');
}
foreach ($newsletterArray as $newsletter) {
    $cli->output('Sending messages for ' . $newsletter->attribute('name'));
    $statistics = eZNewsletter::sendNewsletterMail($newsletter);
    $newsletter->setAttribute('send_status', eZNewsletter::SendStatusFinished);
    $newsletter->sync();
    $cli->output('Sent ' . $statistics['sendCount'] . ' ( skipped:' . $statistics['skipCount'] . ' )' . ' messages for newsletter : ' . $newsletter->attribute('name'));
}
// remove pid file to unlock cronjob
if (file_exists($pidfilename)) {
    unlink($pidfilename);
}
 function fetchInput($http, &$module, &$class, $object, &$version, $contentObjectAttributes, $editVersion, $editLanguage, $fromLanguage)
 {
     if (!$http->hasPostVariable('NewsletterID')) {
         return;
     }
     $newsletter = eZNewsletter::fetchDraft($http->postVariable('NewsletterID'));
     if (!$newsletter) {
         eZDebug::writeError('Could not fetch newsletter : ' . $http->postVariable('NewsletterID'));
         return;
     }
     $newsletter->setAttribute('name', $http->postVariable('NewsletterName'));
     $newsletter->setAttribute('send_date', $this->getTimestamp($http, $object->ID));
     $newsletter->setAttribute('category', $http->postVariable('NewsletterCategory'));
     // #CHECK# validate
     $newsletter->setAttribute('preview_email', $http->postVariable('NewsletterPreviewEmail'));
     $newsletter->setAttribute('preview_mobile', $http->postVariable('NewsletterPreviewMobile'));
     $preInput = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><paragraph>";
     $postInput = "</paragraph>";
     $pretext = $http->hasPostVariable('pretext') ? $preInput . html_entity_decode($http->postVariable('pretext')) . $postInput : '';
     $posttext = $http->hasPostVariable('posttext') ? $preInput . html_entity_decode($http->postVariable('posttext')) . $postInput : '';
     $newsletter->setAttribute('pretext', $pretext);
     $newsletter->setAttribute('posttext', $posttext);
     $designtouse = $http->hasPostVariable('DesignToUse') ? $http->postVariable('DesignToUse') : 'eznewsletter';
     $newsletter->setAttribute('design_to_use', $designtouse);
     $newsletter->setAttribute('recurrence_type', $http->postVariable('RecurrenceType'));
     $recurrencecondition = $http->hasPostVariable('RecurrenceCondition') ? $http->postVariable('RecurrenceCondition') : '';
     $newsletter->setAttribute('recurrence_condition', $recurrencecondition);
     if ($http->postVariable('RecurrenceType') === 'd') {
         $newsletter->setAttribute('recurrence_value', implode(',', $http->postVariable('RecurrenceValue_d')));
     } elseif ($http->postVariable('RecurrenceType') === 'w') {
         $newsletter->setAttribute('recurrence_value', implode(',', $http->postVariable('RecurrenceValue_w')));
     } elseif ($http->postVariable('RecurrenceType') === 'm') {
         $newsletter->setAttribute('recurrence_value', implode(',', $http->postVariable('RecurrenceValue_m')));
     } else {
         $newsletter->setAttribute('recurrence_value', implode(',', $http->postVariable('RecurrenceValue')));
     }
     $newsletter->store();
     if ($http->hasPostVariable('NewsletterPreview')) {
         return $module->redirect('newsletter', 'preview', array($object->attribute('id'), $editVersion));
     }
     if ($http->hasPostVariable('NewsletterSendPreview')) {
         eZNewsletter::sendNewsletterMail($newsletter, true);
     }
 }