tracking_enabled = (boolean)Setting::getValue('tracking.enabled'); } function getAndPreProcess($queue) { $newsletter = $queue->newsletter()->findOne(); if(!$newsletter) { return false; } // return the newsletter if it was previously rendered if(!is_null($queue->getNewsletterRenderedBody())) { return $newsletter; } // if tracking is enabled, do additional processing if($this->tracking_enabled) { // hook to the newsletter post-processing filter and add tracking image $this->tracking_image_inserted = OpenTracking::addTrackingImage(); // render newsletter $rendered_newsletter = $newsletter->render(); // hash and save all links $rendered_newsletter = LinksTask::process($rendered_newsletter, $newsletter, $queue); } else { // render newsletter $rendered_newsletter = $newsletter->render(); } // check if this is a post notification and if it contains posts $newsletter_contains_posts = strpos($rendered_newsletter['html'], 'data-post-id'); if($newsletter->type === NewsletterModel::TYPE_NOTIFICATION_HISTORY && !$newsletter_contains_posts ) { return false; } // extract and save newsletter posts PostsTask::extractAndSave($rendered_newsletter, $newsletter); // update queue with the rendered and pre-processed newsletter $queue->newsletter_rendered_body = $rendered_newsletter; $queue->save(); return $newsletter; } function prepareNewsletterForSending($newsletter, $subscriber, $queue) { // shortcodes and links will be replaced in the subject, html and text body // to speed the processing, join content into a continuous string $rendered_newsletter = $queue->getNewsletterRenderedBody(); $prepared_newsletter = Helpers::joinObject( array( $newsletter->subject, $rendered_newsletter['html'], $rendered_newsletter['text'] ) ); $prepared_newsletter = ShortcodesTask::process( $prepared_newsletter, $newsletter, $subscriber, $queue ); if($this->tracking_enabled) { $prepared_newsletter = NewsletterLinks::replaceSubscriberData( $subscriber->id, $queue->id, $prepared_newsletter ); } $prepared_newsletter = Helpers::splitObject($prepared_newsletter); return array( 'subject' => $prepared_newsletter[0], 'body' => array( 'html' => $prepared_newsletter[1], 'text' => $prepared_newsletter[2] ) ); } function markNewsletterAsSent($newsletter) { // if it's a standard or notification history newsletter, update its status if($newsletter->type === NewsletterModel::TYPE_STANDARD || $newsletter->type === NewsletterModel::TYPE_NOTIFICATION_HISTORY ) { $newsletter->setStatus(NewsletterModel::STATUS_SENT); } } }