- Removes requirement of passing newsletter id when tracking clicks

- Extracts common tracking data processing/validation code into the Track
  class
- Refactors Clicks, Opens and View in Browser classes to enforce
  subscriber id and token check
- Allows admin users to preview newsletters without tracking statistics
This commit is contained in:
Vlad
2016-08-16 21:18:39 -04:00
parent 6ab7debb7b
commit b492bcecc0
9 changed files with 214 additions and 191 deletions

View File

@ -5,6 +5,7 @@ use MailPoet\API\Error as APIError;
use MailPoet\Listing;
use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue;
use MailPoet\Models\Setting;
use MailPoet\Models\NewsletterTemplate;
use MailPoet\Models\NewsletterSegment;
@ -252,8 +253,10 @@ class Newsletters extends APIEndpoint {
$data
);
$listing_data = $listing->get();
$subscriber = Subscriber::getCurrentWPUser();
foreach($listing_data['items'] as $key => $newsletter) {
$queue = false;
if($newsletter->type === Newsletter::TYPE_STANDARD) {
$newsletter
@ -277,8 +280,15 @@ class Newsletters extends APIEndpoint {
->withStatistics();
}
if($newsletter->status === Newsletter::STATUS_SENT ||
$newsletter->status === Newsletter::STATUS_SENDING
) {
$queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne();
}
// get preview url
$newsletter->preview_url = NewsletterUrl::getViewInBrowserUrl($newsletter);
$newsletter->preview_url = NewsletterUrl::getViewInBrowserUrl(
$newsletter, $subscriber, $queue, $preview = true);
// convert object to array
$listing_data['items'][$key] = $newsletter->asArray();