if (!$batch_limit) { $batch_limit = 1; } $time_limit = 60 * 10; // 10 minutes, should be lover than cron job $start_time = time(); $pendingNewsletters = eZContentObjectTreeNode::subTreeByNodeID(array('Limit' => 10, 'ClassFilterType' => 'include', 'ClassFilterArray' => array('jaj_newsletter'), 'AttributeFilter' => array(array('jaj_newsletter/status', '=', 'in progress'))), $root_node_id); foreach ($pendingNewsletters as $newsletter) { $cli->output('Delivering newsletter: ' . $newsletter->getName() . ' (ContentObjectID: ' . $newsletter->ContentObjectID . ')'); $cli->output('Batch limit left: ' . $batch_limit); $object_id = $newsletter->ContentObjectID; $url_alias = $newsletter->urlAlias(); $url_newsletter = "http://" . $site_url . "/" . $url_alias . "/(generate)/nl/(uuid)/"; $data_map = $newsletter->DataMap(); $subject = $data_map['subject']->toString(); $deliveries = jajNewsletterDelivery::fetchDeliveriesByContentobjectIDAndState($object_id, 'pending', $batch_limit, 0, true); foreach ($deliveries as $delivery) { $batch_limit--; $cli->output('Generating newsletter for: ' . $delivery->attribute('email')); // Sanity check if ($delivery->attribute('sent') || $delivery->attribute('state') != 'pending') { $cli->output('Looks like this has been sent before. Bailing...'); continue; } // Newsletter URL $url = $url_newsletter . $delivery->attribute('uuid'); // Genereate HTML mail $cmd = "/usr/local/bin/premailer -r --mode html " . escapeshellarg($url) . " 2>&1"; $return = exec($cmd, $output, $return_var); $html = implode("\n", $output); if ($return_var != 0) {