} $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)) {