return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel'); } $mode = $Params['Mode'] == "text" ? "txt" : "html"; $ini = eZINI::instance('site.ini'); $site_url = $ini->variable('SiteSettings', 'SiteURL'); $url = "http://" . $site_url . "/" . $node->mainNode()->urlAlias() . "/(preview)/nl"; $cmd = "/usr/local/bin/premailer -r --mode {$mode} " . escapeshellarg($url) . " 2>&1"; exec($cmd, $output, $return_var); $output = implode("\n", $output); if ($return_var != 0) { $output = "Error executing command: {$cmd}\n\n{$output}"; } $content = $mode == "txt" ? nl2br($output) : $output; if ($Module->isCurrentAction('SendPreview')) { $email = $Module->actionParameter('EmailAddress'); if (!eZMail::validate($email)) { $http->setSessionVariable('PreviewInvalidReceiver', $email); } else { try { $data_map = $node->DataMap(); $subject = $data_map['subject']->toString(); jajSmtpTransport::send($email, $subject, $output); $http->setSessionVariable('PreviewEmailSent', $email); } catch (Exception $e) { $http->setSessionVariable('PreviewSendEmailFailed', $e->getMessage()); } } return $Module->redirectTo($Module->functionURI("newsletter") . "/" . $node->mainNodeID()); } echo $content; eZExecution::cleanExit();
<?php $cli->output('Delivering newsletters '); // Fetch settings $newsletter_ini = eZINI::instance('jaj_newsletter.ini'); $site_ini = eZINI::instance('site.ini'); $root_node_id = $newsletter_ini->variable('NewsletterSettings', 'RootFolderNodeId'); $batch_limit = $newsletter_ini->variable('NewsletterDelivery', 'BatchLimit'); $site_url = $site_ini->variable('SiteSettings', 'SiteURL'); $mail_transport = jajSmtpTransport::mailTransport(); $charset = jajSmtpTransport::charset(); $from_email = new ezcMailAddress($newsletter_ini->variable('NewsletterSettings', 'FromEmail'), $newsletter_ini->variable('NewsletterSettings', 'FromName'), $charset); $reply_email = new ezcMailAddress($newsletter_ini->variable('NewsletterSettings', 'ReplyEmail'), '', $charset); 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--;