Add temporary fix to ensure old duplicated newsletters have hashes

[MAILPOET-3275]
This commit is contained in:
Rostislav Wolny
2020-11-19 09:51:31 +01:00
committed by Veljko V
parent e22c192078
commit eb13116d2a

View File

@ -25,6 +25,7 @@ use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Settings\SettingsController;
use MailPoet\UnexpectedValueException;
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
use MailPoet\Util\Security;
use MailPoet\WP\Emoji;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
@ -320,6 +321,7 @@ class Newsletters extends APIEndpoint {
$filters = $this->newsletterListingRepository->getFilters($definition);
$groups = $this->newsletterListingRepository->getGroups($definition);
$this->fixMissingHash($items); // Fix for MAILPOET-3275. Remove after May 2021
$data = [];
foreach ($this->newslettersResponseBuilder->buildForListing($items) as $newsletterData) {
$data[] = $this->wp->applyFilters('mailpoet_api_newsletters_listing_item', $newsletterData);
@ -372,6 +374,7 @@ class Newsletters extends APIEndpoint {
}
private function getViewInBrowserUrl(NewsletterEntity $newsletter): string {
$this->fixMissingHash([$newsletter]); // Fix for MAILPOET-3275. Remove after May 2021
$url = NewsletterUrl::getViewInBrowserUrl(
(object)[
'id' => $newsletter->getId(),
@ -382,4 +385,19 @@ class Newsletters extends APIEndpoint {
// strip protocol to avoid mix content error
return preg_replace('/^https?:/i', '', $url);
}
/**
* Some Newsletters were created without a hash due to a bug MAILPOET-3275
* We can remove this fix after May 2021 since by then most users should have their data fixed
* @param NewsletterEntity[] $newsletters
*/
private function fixMissingHash(array $newsletters) {
foreach ($newsletters as $newsletter) {
if (!$newsletter instanceof NewsletterEntity || $newsletter->getHash() !== null) {
continue;
}
$newsletter->setHash(Security::generateHash());
$this->newslettersRepository->flush();
}
}
}