Files
piratepoet/lib/Newsletter/Url.php
Vlad 707afc2ae0 - Adds a new method to create a URL data object as a numeric array instead
of associative, thus reducing the size of the object
- Adds a new method to convert numeric URL data object array into associative array
- Preserves backward compatibility with previous MP3 Beta versions by checking if the
  URL data object is already an associative array
- Adds different types of newsletter display
2016-12-18 23:24:50 -05:00

80 lines
2.5 KiB
PHP

<?php
namespace MailPoet\Newsletter;
use MailPoet\Router\Router;
use MailPoet\Router\Endpoints\ViewInBrowser as ViewInBrowserEndpoint;
use MailPoet\Models\Newsletter as NewsletterModel;
use MailPoet\Models\Subscriber as SubscriberModel;
class Url {
const TYPE_ARCHIVE = 'display_archive';
const TYPE_LISTING_EDITOR = 'display_listing_editor';
static function getViewInBrowserUrl(
$type,
NewsletterModel $newsletter,
$subscriber = false,
$queue = false,
$preview = false
) {
if($subscriber instanceof SubscriberModel) {
$subscriber->token = SubscriberModel::generateToken($subscriber->email);
}
switch($type) {
case self::TYPE_ARCHIVE:
// do not expose newsletter id when displaying archive newsletters
$newsletter->id = null;
$preview = true;
break;
case self::TYPE_LISTING_EDITOR:
// enable preview and hide newsletter hash when displaying from editor or listings
$newsletter->hash = null;
$preview = true;
break;
default:
// hide hash for all other display types
$newsletter->hash = null;
break;
}
$data = self::createUrlDataObject($newsletter, $subscriber, $queue, $preview);
return Router::buildRequest(
ViewInBrowserEndpoint::ENDPOINT,
ViewInBrowserEndpoint::ACTION_VIEW,
$data
);
}
static function createUrlDataObject($newsletter, $subscriber, $queue, $preview) {
return array(
(!empty($newsletter->id)) ?
(int)$newsletter->id :
0,
(!empty($newsletter->hash)) ?
$newsletter->hash :
0,
(!empty($subscriber->id)) ?
(int)$subscriber->id :
0,
(!empty($subscriber->token)) ?
$subscriber->token :
0,
(!empty($queue->id)) ?
(int)$queue->id :
0,
(int)$preview
);
}
static function transformUrlDataObject($data) {
reset($data);
if (!is_int(key($data))) return $data;
$transformed_data = array();
$transformed_data['newsletter_id'] = (!empty($data[0])) ? $data[0] : false;
$transformed_data['newsletter_hash'] = (!empty($data[1])) ? $data[1] : false;
$transformed_data['subscriber_id'] = (!empty($data[2])) ? $data[2] : false;
$transformed_data['subscriber_token'] = (!empty($data[3])) ? $data[3] : false;
$transformed_data['queue_id'] = (!empty($data[4])) ? $data[4] : false;
$transformed_data['preview'] = (!empty($data[5])) ? $data[5] : false;
return $transformed_data;
}
}