Пример #1
0
}
$conditions = array_merge($conditions, array('send_date' => array('<=', $timestamp)));
//newslettertype parameter
if (in_array('-newslettertype', $_SERVER['argv'])) {
    $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();
        exit(1);
    }
}
$newsletterList = eZNewsletter::fetchListBySendStatus(eZNewsletter::SendStatusNone, eZNewsletter::StatusPublished, true, $conditions);
$cli->output('Found ' . count($newsletterList) . ' newsletter.');
foreach ($newsletterList as $newsletter) {
    $cli->output('Fetching subscriber for newsletter ' . $newsletter->attribute('name'));
    $newsletter->setAttribute('send_status', eZNewsletter::SendStatusBuldingList);
    $newsletter->sync();
    $newsletter->buildSendList();
    $newsletter->setAttribute('send_status', eZNewsletter::SendStatusSending);
    $newsletter->sync();
}
$cli->output('Build finished.');
// remove pid file to unlock cronjob
if (file_exists($pidfilename)) {
    unlink($pidfilename);
}
//newslettertype parameter
if (in_array('-newslettertype', $_SERVER['argv'])) {
    $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)) {