Remove 'type' parameter for view-in-browser, always include hash

[MAILPOET-2430]
This commit is contained in:
Jan Jakeš
2020-02-04 15:54:06 +01:00
committed by Jack Kitterhing
parent eb1c7673e3
commit e5fcf5819d
9 changed files with 6 additions and 47 deletions

View File

@ -124,7 +124,6 @@ class Newsletters extends APIEndpoint {
NewslettersResponseBuilder::RELATION_QUEUE, NewslettersResponseBuilder::RELATION_QUEUE,
]); ]);
$previewUrl = NewsletterUrl::getViewInBrowserUrl( $previewUrl = NewsletterUrl::getViewInBrowserUrl(
NewsletterUrl::TYPE_LISTING_EDITOR,
(object)[ (object)[
'id' => $newsletter->getId(), 'id' => $newsletter->getId(),
'hash' => $newsletter->getHash(), 'hash' => $newsletter->getHash(),
@ -155,7 +154,6 @@ class Newsletters extends APIEndpoint {
]); ]);
$response = $this->wp->applyFilters('mailpoet_api_newsletters_get_after', $response); $response = $this->wp->applyFilters('mailpoet_api_newsletters_get_after', $response);
$response['preview_url'] = NewsletterUrl::getViewInBrowserUrl( $response['preview_url'] = NewsletterUrl::getViewInBrowserUrl(
NewsletterUrl::TYPE_LISTING_EDITOR,
(object)[ (object)[
'id' => $newsletter->getId(), 'id' => $newsletter->getId(),
'hash' => $newsletter->getHash(), 'hash' => $newsletter->getHash(),
@ -283,12 +281,7 @@ class Newsletters extends APIEndpoint {
$this->wp->doAction('mailpoet_api_newsletters_save_after', $newsletter); $this->wp->doAction('mailpoet_api_newsletters_save_after', $newsletter);
$this->authorizedEmailsController->onNewsletterUpdate($newsletter, $oldNewsletter); $this->authorizedEmailsController->onNewsletterUpdate($newsletter, $oldNewsletter);
$previewUrl = NewsletterUrl::getViewInBrowserUrl( $previewUrl = NewsletterUrl::getViewInBrowserUrl($newsletter, Subscriber::getCurrentWPUser());
NewsletterUrl::TYPE_LISTING_EDITOR,
$newsletter,
Subscriber::getCurrentWPUser()
);
return $this->successResponse($newsletter->asArray(), ['preview_url' => $previewUrl]); return $this->successResponse($newsletter->asArray(), ['preview_url' => $previewUrl]);
} }
@ -441,11 +434,7 @@ class Newsletters extends APIEndpoint {
$newsletter->body = $this->emoji->encodeForUTF8Column(MP_NEWSLETTERS_TABLE, 'body', $newsletter->body); $newsletter->body = $this->emoji->encodeForUTF8Column(MP_NEWSLETTERS_TABLE, 'body', $newsletter->body);
$newsletter->save(); $newsletter->save();
$subscriber = Subscriber::getCurrentWPUser(); $subscriber = Subscriber::getCurrentWPUser();
$previewUrl = NewsletterUrl::getViewInBrowserUrl( $previewUrl = NewsletterUrl::getViewInBrowserUrl($newsletter, $subscriber);
NewsletterUrl::TYPE_LISTING_EDITOR,
$newsletter,
$subscriber
);
$publicPreviewUrl = NewsletterUrl::getViewInBrowserUrl($newsletter); $publicPreviewUrl = NewsletterUrl::getViewInBrowserUrl($newsletter);
// strip protocol to avoid mix content error // strip protocol to avoid mix content error
$previewUrl = preg_replace('{^https?:}i', '', $previewUrl); $previewUrl = preg_replace('{^https?:}i', '', $previewUrl);
@ -575,12 +564,7 @@ class Newsletters extends APIEndpoint {
} }
// get preview url // get preview url
$newsletter->previewUrl = NewsletterUrl::getViewInBrowserUrl( $newsletter->previewUrl = NewsletterUrl::getViewInBrowserUrl($newsletter, $subscriber = null, $queue);
NewsletterUrl::TYPE_LISTING_EDITOR,
$newsletter,
$subscriber = null,
$queue
);
$data[] = $this->wp->applyFilters('mailpoet_api_newsletters_listing_item', $newsletter->asArray()); $data[] = $this->wp->applyFilters('mailpoet_api_newsletters_listing_item', $newsletter->asArray());
} }

View File

@ -132,12 +132,7 @@ class Shortcodes {
} }
public function renderArchiveSubject($newsletter, $subscriber, $queue) { public function renderArchiveSubject($newsletter, $subscriber, $queue) {
$previewUrl = NewsletterUrl::getViewInBrowserUrl( $previewUrl = NewsletterUrl::getViewInBrowserUrl($newsletter, $subscriber, $queue);
NewsletterUrl::TYPE_ARCHIVE,
$newsletter,
$subscriber,
$queue
);
return '<a href="' . esc_attr($previewUrl) . '" target="_blank" title="' return '<a href="' . esc_attr($previewUrl) . '" target="_blank" title="'
. esc_attr(__('Preview in a new tab', 'mailpoet')) . '">' . esc_attr(__('Preview in a new tab', 'mailpoet')) . '">'
. esc_attr($newsletter->newsletterRenderedSubject) . . esc_attr($newsletter->newsletterRenderedSubject) .

View File

@ -39,7 +39,6 @@ class Link {
case 'newsletter_view_in_browser_url': case 'newsletter_view_in_browser_url':
$url = NewsletterUrl::getViewInBrowserUrl( $url = NewsletterUrl::getViewInBrowserUrl(
$type = null,
$newsletter, $newsletter,
$wpUserPreview ? false : $subscriber, $wpUserPreview ? false : $subscriber,
$queue, $queue,
@ -90,7 +89,6 @@ class Link {
break; break;
case 'newsletter_view_in_browser_url': case 'newsletter_view_in_browser_url':
$url = NewsletterUrl::getViewInBrowserUrl( $url = NewsletterUrl::getViewInBrowserUrl(
$type = null,
$newsletter, $newsletter,
$subscriber, $subscriber,
$queue, $queue,

View File

@ -8,11 +8,7 @@ use MailPoet\Router\Router;
use MailPoet\Subscribers\LinkTokens; use MailPoet\Subscribers\LinkTokens;
class Url { class Url {
const TYPE_ARCHIVE = 'display_archive';
const TYPE_LISTING_EDITOR = 'display_listing_editor';
public static function getViewInBrowserUrl( public static function getViewInBrowserUrl(
$type,
$newsletter, $newsletter,
$subscriber = false, $subscriber = false,
$queue = false, $queue = false,
@ -22,16 +18,6 @@ class Url {
if ($subscriber instanceof SubscriberModel) { if ($subscriber instanceof SubscriberModel) {
$subscriber->token = $linkTokens->getToken($subscriber); $subscriber->token = $linkTokens->getToken($subscriber);
} }
switch ($type) {
case self::TYPE_ARCHIVE:
// do not expose newsletter id when displaying archive newsletters
$newsletter->id = null;
break;
default:
// hide hash for all other display types
$newsletter->hash = null;
break;
}
$data = self::createUrlDataObject($newsletter, $subscriber, $queue, $preview); $data = self::createUrlDataObject($newsletter, $subscriber, $queue, $preview);
return Router::buildRequest( return Router::buildRequest(
ViewInBrowserEndpoint::ENDPOINT, ViewInBrowserEndpoint::ENDPOINT,

View File

@ -68,7 +68,6 @@ class NewslettersExporter {
$newsletterData[] = [ $newsletterData[] = [
'name' => WPFunctions::get()->__('Email preview', 'mailpoet'), 'name' => WPFunctions::get()->__('Email preview', 'mailpoet'),
'value' => Url::getViewInBrowserUrl( 'value' => Url::getViewInBrowserUrl(
'',
$newsletters[$statisticsRow['newsletter_id']], $newsletters[$statisticsRow['newsletter_id']],
$subscriber, $subscriber,
false false

View File

@ -91,7 +91,6 @@ class State
'queue_id' => (int)$queue->id, 'queue_id' => (int)$queue->id,
'subject' => $queue->newsletterRenderedSubject ?: $newsletter->subject, 'subject' => $queue->newsletterRenderedSubject ?: $newsletter->subject,
'preview_url' => NewsletterUrl::getViewInBrowserUrl( 'preview_url' => NewsletterUrl::getViewInBrowserUrl(
NewsletterUrl::TYPE_LISTING_EDITOR,
$newsletter, $newsletter,
null, null,
$queue $queue

View File

@ -873,7 +873,7 @@ class NewslettersTest extends \MailPoetTest {
'send' => function ($newsletter, $subscriber, $extraParams) { 'send' => function ($newsletter, $subscriber, $extraParams) {
$unsubscribeLink = $this->subscriptionUrlFactory->getUnsubscribeUrl(null); $unsubscribeLink = $this->subscriptionUrlFactory->getUnsubscribeUrl(null);
$manageLink = $this->subscriptionUrlFactory->getManageUrl(null); $manageLink = $this->subscriptionUrlFactory->getManageUrl(null);
$viewInBrowserLink = Url::getViewInBrowserUrl(null, $this->newsletter, false, false); $viewInBrowserLink = Url::getViewInBrowserUrl($this->newsletter, false, false);
$mailerMetaInfo = new MetaInfo; $mailerMetaInfo = new MetaInfo;
expect(is_array($newsletter))->true(); expect(is_array($newsletter))->true();

View File

@ -52,13 +52,11 @@ class ShortcodesTest extends \MailPoetTest {
/** @var string $link */ /** @var string $link */
$link = $link->attr('href'); $link = $link->attr('href');
expect($link)->contains('endpoint=view_in_browser'); expect($link)->contains('endpoint=view_in_browser');
// request data object contains newsletter hash but not newsletter id
$parsedLink = parse_url($link, PHP_URL_QUERY); $parsedLink = parse_url($link, PHP_URL_QUERY);
parse_str(html_entity_decode((string)$parsedLink), $data); parse_str(html_entity_decode((string)$parsedLink), $data);
$requestData = Url::transformUrlDataObject( $requestData = Url::transformUrlDataObject(
Router::decodeRequestData($data['data']) Router::decodeRequestData($data['data'])
); );
expect($requestData['newsletter_id'])->isEmpty();
expect($requestData['newsletter_hash'])->equals($this->newsletter->hash); expect($requestData['newsletter_hash'])->equals($this->newsletter->hash);
} }

View File

@ -309,7 +309,7 @@ class ShortcodesTest extends \MailPoetTest {
$links = [ $links = [
$this->subscriptionUrlFactory->getUnsubscribeUrl(null), $this->subscriptionUrlFactory->getUnsubscribeUrl(null),
$this->subscriptionUrlFactory->getManageUrl(null), $this->subscriptionUrlFactory->getManageUrl(null),
NewsletterUrl::getViewInBrowserUrl(null, $this->newsletter, false, false), NewsletterUrl::getViewInBrowserUrl($this->newsletter, false, false),
]; ];
$result = $shortcodesObject->process($shortcodes); $result = $shortcodesObject->process($shortcodes);
// hash is returned // hash is returned