MailPoet Newsletters (New) - Version 3.81.0

Version Description

  • 2022-02-16 =
  • Fixed: translations downloading issue.
Download this release

Release Info

Developer MailPoet
Plugin Icon 128x128 MailPoet Newsletters (New)
Version 3.81.0
Comparing to
See all releases

Code changes from version 3.80.0 to 3.81.0

generated/FreeCachedContainer.php CHANGED
@@ -1128,7 +1128,7 @@ class FreeCachedContainer extends Container
1128
  $e = ($this->services['MailPoet\\Config\\Renderer'] ?? $this->getRendererService());
1129
  $f = ($this->services['MailPoet\\Subscribers\\SubscribersRepository'] ?? $this->getSubscribersRepositoryService());
1130
 
1131
- return $this->services['MailPoet\\Config\\Initializer'] = new \MailPoet\Config\Initializer(($this->services['MailPoet\\Config\\RendererFactory'] ?? ($this->services['MailPoet\\Config\\RendererFactory'] = new \MailPoet\Config\RendererFactory())), $a, ($this->services['MailPoet\\API\\JSON\\API'] ?? $this->getAPIService()), ($this->services['MailPoet\\Config\\Activator'] ?? $this->getActivatorService()), $b, new \MailPoet\Router\Router($a, ($this->services['MailPoet\\DI\\ContainerWrapper'] ?? $this->getContainerWrapperService())), ($this->services['MailPoet\\Config\\Hooks'] ?? $this->getHooksService()), ($this->services['MailPoet\\Config\\Changelog'] ?? $this->getChangelogService()), ($this->services['MailPoet\\Config\\Menu'] ?? $this->getMenuService()), ($this->services['MailPoet\\Cron\\CronTrigger'] ?? $this->getCronTriggerService()), new \MailPoet\Util\Notices\PermanentNotices($c, $d, $b), new \MailPoet\Config\Shortcodes(new \MailPoet\Subscription\Pages(($this->services['MailPoet\\Subscribers\\NewSubscriberNotificationMailer'] ?? $this->getNewSubscriberNotificationMailerService()), $c, $b, ($this->services['MailPoet\\Subscription\\CaptchaRenderer'] ?? $this->getCaptchaRendererService()), ($this->services['MailPoet\\Newsletter\\Scheduler\\WelcomeScheduler'] ?? $this->getWelcomeSchedulerService()), ($this->services['MailPoet\\Subscribers\\LinkTokens'] ?? $this->getLinkTokensService()), ($this->services['MailPoet\\Subscription\\SubscriptionUrlFactory'] ?? $this->getSubscriptionUrlFactoryService()), ($this->services['MailPoet\\Form\\AssetsController'] ?? $this->getAssetsControllerService()), $e, ($this->services['MailPoet\\Statistics\\Track\\Unsubscribes'] ?? $this->getUnsubscribesService()), ($this->services['MailPoet\\Subscription\\ManageSubscriptionFormRenderer'] ?? $this->getManageSubscriptionFormRendererService()), ($this->services['MailPoet\\Statistics\\Track\\SubscriberHandler'] ?? $this->getSubscriberHandlerService()), $f, $d), $c, ($this->services['MailPoet\\Segments\\SegmentSubscribersRepository'] ?? $this->getSegmentSubscribersRepositoryService()), $f, ($this->services['MailPoet\\Newsletter\\Url'] ?? $this->getUrlService()), ($this->services['MailPoet\\Newsletter\\NewslettersRepository'] ?? $this->getNewslettersRepositoryService()), ($this->services['MailPoetVendor\\Doctrine\\ORM\\EntityManager'] ?? $this->getEntityManagerService()), ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Date'] ?? ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Date'] = new \MailPoet\Newsletter\Shortcodes\Categories\Date())), ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Link'] ?? $this->getLinkService()), ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Newsletter'] ?? $this->getNewsletterService()), ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Subscriber'] ?? $this->getSubscriberService())), new \MailPoet\Config\DatabaseInitializer($this), ($this->services['MailPoet\\WooCommerce\\TransactionalEmailHooks'] ?? $this->getTransactionalEmailHooksService()), new \MailPoet\PostEditorBlocks\PostEditorBlock($e, $c, new \MailPoet\PostEditorBlocks\SubscriptionFormBlock($c, ($this->services['MailPoet\\Form\\FormsRepository'] ?? $this->getFormsRepositoryService()))), new \MailPoet\PostEditorBlocks\WooCommerceBlocksIntegration($c, $b, ($this->services['MailPoet\\WooCommerce\\Subscription'] ?? $this->getSubscription2Service()), ($this->services['MailPoet\\Segments\\WooCommerce'] ?? $this->getWooCommerce2Service()), $f), ($this->services['MailPoet\\WooCommerce\\Helper'] ?? ($this->services['MailPoet\\WooCommerce\\Helper'] = new \MailPoet\WooCommerce\Helper())), ($this->privates['MailPoet\\Config\\Localizer'] ?? ($this->privates['MailPoet\\Config\\Localizer'] = new \MailPoet\Config\Localizer())), ($this->services['MailPoet\\AutomaticEmails\\AutomaticEmails'] ?? $this->getAutomaticEmails2Service()), ($this->services['MailPoet\\Statistics\\Track\\SubscriberActivityTracker'] ?? $this->getSubscriberActivityTrackerService()), $c, ($this->services['MailPoet\\Config\\AssetsLoader'] ?? $this->getAssetsLoaderService()));
1132
  }
1133
 
1134
  /**
1128
  $e = ($this->services['MailPoet\\Config\\Renderer'] ?? $this->getRendererService());
1129
  $f = ($this->services['MailPoet\\Subscribers\\SubscribersRepository'] ?? $this->getSubscribersRepositoryService());
1130
 
1131
+ return $this->services['MailPoet\\Config\\Initializer'] = new \MailPoet\Config\Initializer(($this->services['MailPoet\\Config\\RendererFactory'] ?? ($this->services['MailPoet\\Config\\RendererFactory'] = new \MailPoet\Config\RendererFactory())), $a, ($this->services['MailPoet\\API\\JSON\\API'] ?? $this->getAPIService()), ($this->services['MailPoet\\Config\\Activator'] ?? $this->getActivatorService()), $b, new \MailPoet\Router\Router($a, ($this->services['MailPoet\\DI\\ContainerWrapper'] ?? $this->getContainerWrapperService())), ($this->services['MailPoet\\Config\\Hooks'] ?? $this->getHooksService()), ($this->services['MailPoet\\Config\\Changelog'] ?? $this->getChangelogService()), ($this->services['MailPoet\\Config\\Menu'] ?? $this->getMenuService()), ($this->services['MailPoet\\Cron\\CronTrigger'] ?? $this->getCronTriggerService()), new \MailPoet\Util\Notices\PermanentNotices($c, $d, $b), new \MailPoet\Config\Shortcodes(new \MailPoet\Subscription\Pages(($this->services['MailPoet\\Subscribers\\NewSubscriberNotificationMailer'] ?? $this->getNewSubscriberNotificationMailerService()), $c, $b, ($this->services['MailPoet\\Subscription\\CaptchaRenderer'] ?? $this->getCaptchaRendererService()), ($this->services['MailPoet\\Newsletter\\Scheduler\\WelcomeScheduler'] ?? $this->getWelcomeSchedulerService()), ($this->services['MailPoet\\Subscribers\\LinkTokens'] ?? $this->getLinkTokensService()), ($this->services['MailPoet\\Subscription\\SubscriptionUrlFactory'] ?? $this->getSubscriptionUrlFactoryService()), ($this->services['MailPoet\\Form\\AssetsController'] ?? $this->getAssetsControllerService()), $e, ($this->services['MailPoet\\Statistics\\Track\\Unsubscribes'] ?? $this->getUnsubscribesService()), ($this->services['MailPoet\\Subscription\\ManageSubscriptionFormRenderer'] ?? $this->getManageSubscriptionFormRendererService()), ($this->services['MailPoet\\Statistics\\Track\\SubscriberHandler'] ?? $this->getSubscriberHandlerService()), $f, $d), $c, ($this->services['MailPoet\\Segments\\SegmentSubscribersRepository'] ?? $this->getSegmentSubscribersRepositoryService()), $f, ($this->services['MailPoet\\Newsletter\\Url'] ?? $this->getUrlService()), ($this->services['MailPoet\\Newsletter\\NewslettersRepository'] ?? $this->getNewslettersRepositoryService()), ($this->services['MailPoetVendor\\Doctrine\\ORM\\EntityManager'] ?? $this->getEntityManagerService()), ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Date'] ?? ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Date'] = new \MailPoet\Newsletter\Shortcodes\Categories\Date())), ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Link'] ?? $this->getLinkService()), ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Newsletter'] ?? $this->getNewsletterService()), ($this->services['MailPoet\\Newsletter\\Shortcodes\\Categories\\Subscriber'] ?? $this->getSubscriberService())), new \MailPoet\Config\DatabaseInitializer($this), ($this->services['MailPoet\\WooCommerce\\TransactionalEmailHooks'] ?? $this->getTransactionalEmailHooksService()), new \MailPoet\PostEditorBlocks\PostEditorBlock($e, $c, new \MailPoet\PostEditorBlocks\SubscriptionFormBlock($c, ($this->services['MailPoet\\Form\\FormsRepository'] ?? $this->getFormsRepositoryService()))), new \MailPoet\PostEditorBlocks\WooCommerceBlocksIntegration($c, $b, ($this->services['MailPoet\\WooCommerce\\Subscription'] ?? $this->getSubscription2Service()), ($this->services['MailPoet\\Segments\\WooCommerce'] ?? $this->getWooCommerce2Service()), $f), ($this->services['MailPoet\\WooCommerce\\Helper'] ?? ($this->services['MailPoet\\WooCommerce\\Helper'] = new \MailPoet\WooCommerce\Helper())), ($this->privates['MailPoet\\Config\\Localizer'] ?? ($this->privates['MailPoet\\Config\\Localizer'] = new \MailPoet\Config\Localizer())), ($this->services['MailPoet\\AutomaticEmails\\AutomaticEmails'] ?? $this->getAutomaticEmails2Service()), ($this->services['MailPoet\\Statistics\\Track\\SubscriberActivityTracker'] ?? $this->getSubscriberActivityTrackerService()), ($this->services['MailPoet\\Config\\AssetsLoader'] ?? $this->getAssetsLoaderService()));
1132
  }
1133
 
1134
  /**
lang/mailpoet-ar.mo ADDED
Binary file
lang/mailpoet-bg_BG.mo ADDED
Binary file
lang/mailpoet-ca.mo ADDED
Binary file
lang/mailpoet-cs_CZ.mo ADDED
Binary file
lang/mailpoet-da_DK.mo ADDED
Binary file
lang/mailpoet-de_CH.mo ADDED
Binary file
lang/mailpoet-de_DE.mo ADDED
Binary file
lang/mailpoet-de_DE_formal.mo ADDED
Binary file
lang/mailpoet-el.mo ADDED
Binary file
lang/mailpoet-en_GB.mo ADDED
Binary file
lang/mailpoet-es_ES.mo ADDED
Binary file
lang/mailpoet-es_MX.mo ADDED
Binary file
lang/mailpoet-fa_IR.mo ADDED
Binary file
lang/mailpoet-fr_CA.mo ADDED
Binary file
lang/mailpoet-fr_FR.mo ADDED
Binary file
lang/mailpoet-he_IL.mo ADDED
Binary file
lang/mailpoet-hu_HU.mo ADDED
Binary file
lang/mailpoet-it_IT.mo ADDED
Binary file
lang/mailpoet-ja.mo ADDED
Binary file
lang/mailpoet-nb_NO.mo ADDED
Binary file
lang/mailpoet-nl_NL.mo ADDED
Binary file
lang/mailpoet-nl_NL_formal.mo ADDED
Binary file
lang/mailpoet-pl_PL.mo ADDED
Binary file
lang/mailpoet-pt_BR.mo ADDED
Binary file
lang/mailpoet-pt_PT.mo ADDED
Binary file
lang/mailpoet-ro_RO.mo ADDED
Binary file
lang/mailpoet-ru_RU.mo ADDED
Binary file
lang/mailpoet-sq.mo ADDED
Binary file
lang/mailpoet-sr_RS.mo ADDED
Binary file
lang/mailpoet-sv_SE.mo ADDED
Binary file
lang/mailpoet-tr_TR.mo ADDED
Binary file
lang/mailpoet-zh_CN.mo ADDED
Binary file
lang/mailpoet.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the MailPoet 3 (New) package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: MailPoet 3 (New) 3.80.0\n"
6
  "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
7
- "POT-Creation-Date: 2022-02-15 09:01:04+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -672,7 +672,7 @@ msgstr ""
672
  msgid "MailPoet Newsletter"
673
  msgstr ""
674
 
675
- #: lib/Config/Initializer.php:150
676
  msgid "Unable to connect to the database (the database is unable to open a file or folder), the connection is likely not configured correctly. Please read our [link] Knowledge Base article [/link] for steps how to resolve it."
677
  msgstr ""
678
 
2
  # This file is distributed under the same license as the MailPoet 3 (New) package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: MailPoet 3 (New) 3.81.0\n"
6
  "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
7
+ "POT-Creation-Date: 2022-02-16 12:30:31+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
672
  msgid "MailPoet Newsletter"
673
  msgstr ""
674
 
675
+ #: lib/Config/Initializer.php:145
676
  msgid "Unable to connect to the database (the database is unable to open a file or folder), the connection is likely not configured correctly. Please read our [link] Knowledge Base article [/link] for steps how to resolve it."
677
  msgstr ""
678
 
lib/Config/Env.php CHANGED
@@ -59,7 +59,7 @@ class Env {
59
  self::$tempPath = $wpUploadDir['basedir'] . '/' . self::$pluginName;
60
  self::$cachePath = WPFunctions::get()->applyFilters('mailpoet_template_cache_path', self::$tempPath . '/cache');
61
  self::$tempUrl = $wpUploadDir['baseurl'] . '/' . self::$pluginName;
62
- self::$languagesPath = self::$path . '/../../languages/plugins/';
63
  self::$libPath = self::$path . '/lib';
64
  self::$pluginPrefix = WPFunctions::get()->applyFilters('mailpoet_db_prefix', 'mailpoet_');
65
  self::initDbParameters($dbHost, $dbUser, $dbPassword, $dbName);
59
  self::$tempPath = $wpUploadDir['basedir'] . '/' . self::$pluginName;
60
  self::$cachePath = WPFunctions::get()->applyFilters('mailpoet_template_cache_path', self::$tempPath . '/cache');
61
  self::$tempUrl = $wpUploadDir['baseurl'] . '/' . self::$pluginName;
62
+ self::$languagesPath = self::$path . '/lang';
63
  self::$libPath = self::$path . '/lib';
64
  self::$pluginPrefix = WPFunctions::get()->applyFilters('mailpoet_db_prefix', 'mailpoet_');
65
  self::initDbParameters($dbHost, $dbUser, $dbPassword, $dbName);
lib/Config/Initializer.php CHANGED
@@ -83,9 +83,6 @@ class Initializer {
83
  /** @var AutomaticEmails */
84
  private $automaticEmails;
85
 
86
- /** @var WPFunctions */
87
- private $wpFunctions;
88
-
89
  /** @var AssetsLoader */
90
  private $assetsLoader;
91
 
@@ -115,7 +112,6 @@ class Initializer {
115
  Localizer $localizer,
116
  AutomaticEmails $automaticEmails,
117
  SubscriberActivityTracker $subscriberActivityTracker,
118
- WPFunctions $wpFunctions,
119
  AssetsLoader $assetsLoader
120
  ) {
121
  $this->rendererFactory = $rendererFactory;
@@ -138,7 +134,6 @@ class Initializer {
138
  $this->localizer = $localizer;
139
  $this->automaticEmails = $automaticEmails;
140
  $this->subscriberActivityTracker = $subscriberActivityTracker;
141
- $this->wpFunctions = $wpFunctions;
142
  $this->assetsLoader = $assetsLoader;
143
  }
144
 
@@ -150,7 +145,7 @@ class Initializer {
150
  $this->databaseInitializer->initializeConnection();
151
  } catch (\Exception $e) {
152
  return WPNotice::displayError(Helpers::replaceLinkTags(
153
- __('Unable to connect to the database (the database is unable to open a file or folder), the connection is likely not configured correctly. Please read our [link] Knowledge Base article [/link] for steps how to resolve it.', 'mailpoet'),
154
  'https://kb.mailpoet.com/article/200-solving-database-connection-issues',
155
  [
156
  'target' => '_blank',
@@ -160,7 +155,7 @@ class Initializer {
160
  }
161
 
162
  // activation function
163
- $this->wpFunctions->registerActivationHook(
164
  Env::$file,
165
  [
166
  $this,
@@ -168,37 +163,37 @@ class Initializer {
168
  ]
169
  );
170
 
171
- $this->wpFunctions->addAction('activated_plugin', [
172
  new PluginActivatedHook(new DeferredAdminNotices),
173
  'action',
174
  ], 10, 2);
175
 
176
- $this->wpFunctions->addAction('init', [
177
  $this,
178
  'preInitialize',
179
  ], 0);
180
 
181
- $this->wpFunctions->addAction('init', [
182
  $this,
183
  'initialize',
184
  ]);
185
 
186
- $this->wpFunctions->addAction('admin_init', [
187
  $this,
188
  'setupPrivacyPolicy',
189
  ]);
190
 
191
- $this->wpFunctions->addAction('wp_loaded', [
192
  $this,
193
  'postInitialize',
194
  ]);
195
 
196
- $this->wpFunctions->addAction('admin_init', [
197
  new DeferredAdminNotices,
198
  'printAndClean',
199
  ]);
200
 
201
- $this->wpFunctions->addFilter('wpmu_drop_tables', [
202
  $this,
203
  'multisiteDropTables',
204
  ]);
@@ -229,7 +224,7 @@ class Initializer {
229
  }
230
 
231
  public function setupWidget() {
232
- $this->wpFunctions->registerWidget('\MailPoet\Form\Widget');
233
  }
234
 
235
  public function initialize() {
@@ -257,7 +252,7 @@ class Initializer {
257
  $this->subscriberActivityTracker->trackActivity();
258
  $this->postEditorBlock->init();
259
 
260
- $this->wpFunctions->doAction('mailpoet_initialized', MAILPOET_VERSION);
261
  } catch (InvalidStateException $e) {
262
  return $this->handleRunningMigration($e);
263
  } catch (\Exception $e) {
@@ -288,27 +283,14 @@ class Initializer {
288
  }
289
 
290
  public function setupUpdater() {
291
- $premiumSlug = Installer::PREMIUM_PLUGIN_SLUG;
292
- $premiumPluginFile = Installer::getPluginFile($premiumSlug);
293
- $premiumVersion = defined('MAILPOET_PREMIUM_VERSION') ? MAILPOET_PREMIUM_VERSION : null;
294
- $freeSlug = Env::$pluginName;
295
- $freeVersion = MAILPOET_VERSION;
296
-
297
- $translationUpdater = new TranslationUpdater(
298
- $this->wpFunctions,
299
- $freeSlug,
300
- $freeVersion,
301
- $premiumSlug,
302
- $premiumVersion
303
- );
304
- $translationUpdater->init();
305
-
306
- if (empty($premiumPluginFile) || !$premiumVersion) {
307
  return false;
308
  }
309
  $updater = new Updater(
310
- $premiumPluginFile,
311
- $premiumSlug,
312
  MAILPOET_PREMIUM_VERSION
313
  );
314
  $updater->init();
@@ -328,7 +310,7 @@ class Initializer {
328
  }
329
 
330
  public function setupImages() {
331
- $this->wpFunctions->addImageSize('mailpoet_newsletter_max', Env::NEWSLETTER_CONTENT_WIDTH);
332
  }
333
 
334
  public function setupCronTrigger() {
@@ -355,8 +337,8 @@ class Initializer {
355
  }
356
 
357
  public function setupUserLocale() {
358
- if (get_user_locale() === $this->wpFunctions->getLocale()) return;
359
- $this->wpFunctions->unloadTextdomain(Env::$pluginName);
360
  $this->localizer->init();
361
  }
362
 
83
  /** @var AutomaticEmails */
84
  private $automaticEmails;
85
 
 
 
 
86
  /** @var AssetsLoader */
87
  private $assetsLoader;
88
 
112
  Localizer $localizer,
113
  AutomaticEmails $automaticEmails,
114
  SubscriberActivityTracker $subscriberActivityTracker,
 
115
  AssetsLoader $assetsLoader
116
  ) {
117
  $this->rendererFactory = $rendererFactory;
134
  $this->localizer = $localizer;
135
  $this->automaticEmails = $automaticEmails;
136
  $this->subscriberActivityTracker = $subscriberActivityTracker;
 
137
  $this->assetsLoader = $assetsLoader;
138
  }
139
 
145
  $this->databaseInitializer->initializeConnection();
146
  } catch (\Exception $e) {
147
  return WPNotice::displayError(Helpers::replaceLinkTags(
148
+ WPFunctions::get()->__('Unable to connect to the database (the database is unable to open a file or folder), the connection is likely not configured correctly. Please read our [link] Knowledge Base article [/link] for steps how to resolve it.', 'mailpoet'),
149
  'https://kb.mailpoet.com/article/200-solving-database-connection-issues',
150
  [
151
  'target' => '_blank',
155
  }
156
 
157
  // activation function
158
+ WPFunctions::get()->registerActivationHook(
159
  Env::$file,
160
  [
161
  $this,
163
  ]
164
  );
165
 
166
+ WPFunctions::get()->addAction('activated_plugin', [
167
  new PluginActivatedHook(new DeferredAdminNotices),
168
  'action',
169
  ], 10, 2);
170
 
171
+ WPFunctions::get()->addAction('init', [
172
  $this,
173
  'preInitialize',
174
  ], 0);
175
 
176
+ WPFunctions::get()->addAction('init', [
177
  $this,
178
  'initialize',
179
  ]);
180
 
181
+ WPFunctions::get()->addAction('admin_init', [
182
  $this,
183
  'setupPrivacyPolicy',
184
  ]);
185
 
186
+ WPFunctions::get()->addAction('wp_loaded', [
187
  $this,
188
  'postInitialize',
189
  ]);
190
 
191
+ WPFunctions::get()->addAction('admin_init', [
192
  new DeferredAdminNotices,
193
  'printAndClean',
194
  ]);
195
 
196
+ WPFunctions::get()->addFilter('wpmu_drop_tables', [
197
  $this,
198
  'multisiteDropTables',
199
  ]);
224
  }
225
 
226
  public function setupWidget() {
227
+ WPFunctions::get()->registerWidget('\MailPoet\Form\Widget');
228
  }
229
 
230
  public function initialize() {
252
  $this->subscriberActivityTracker->trackActivity();
253
  $this->postEditorBlock->init();
254
 
255
+ WPFunctions::get()->doAction('mailpoet_initialized', MAILPOET_VERSION);
256
  } catch (InvalidStateException $e) {
257
  return $this->handleRunningMigration($e);
258
  } catch (\Exception $e) {
283
  }
284
 
285
  public function setupUpdater() {
286
+ $slug = Installer::PREMIUM_PLUGIN_SLUG;
287
+ $pluginFile = Installer::getPluginFile($slug);
288
+ if (empty($pluginFile) || !defined('MAILPOET_PREMIUM_VERSION')) {
 
 
 
 
 
 
 
 
 
 
 
 
 
289
  return false;
290
  }
291
  $updater = new Updater(
292
+ $pluginFile,
293
+ $slug,
294
  MAILPOET_PREMIUM_VERSION
295
  );
296
  $updater->init();
310
  }
311
 
312
  public function setupImages() {
313
+ WPFunctions::get()->addImageSize('mailpoet_newsletter_max', Env::NEWSLETTER_CONTENT_WIDTH);
314
  }
315
 
316
  public function setupCronTrigger() {
337
  }
338
 
339
  public function setupUserLocale() {
340
+ if (get_user_locale() === WPFunctions::get()->getLocale()) return;
341
+ WPFunctions::get()->unloadTextdomain(Env::$pluginName);
342
  $this->localizer->init();
343
  }
344
 
lib/Config/Localizer.php CHANGED
@@ -10,6 +10,7 @@ use MailPoet\WP\Functions as WPFunctions;
10
  class Localizer {
11
  public function init() {
12
  $this->loadGlobalText();
 
13
  }
14
 
15
  public function loadGlobalText() {
@@ -22,6 +23,14 @@ class Localizer {
22
  WPFunctions::get()->loadTextdomain(Env::$pluginName, $languagePath);
23
  }
24
 
 
 
 
 
 
 
 
 
25
  public function locale() {
26
  $locale = WPFunctions::get()->applyFilters(
27
  'plugin_locale',
10
  class Localizer {
11
  public function init() {
12
  $this->loadGlobalText();
13
+ $this->loadPluginText();
14
  }
15
 
16
  public function loadGlobalText() {
23
  WPFunctions::get()->loadTextdomain(Env::$pluginName, $languagePath);
24
  }
25
 
26
+ public function loadPluginText() {
27
+ WPFunctions::get()->loadPluginTextdomain(
28
+ Env::$pluginName,
29
+ false,
30
+ dirname(plugin_basename(Env::$file)) . '/lang/'
31
+ );
32
+ }
33
+
34
  public function locale() {
35
  $locale = WPFunctions::get()->applyFilters(
36
  'plugin_locale',
lib/Config/TranslationUpdater.php DELETED
@@ -1,129 +0,0 @@
1
- <?php declare(strict_types = 1);
2
-
3
- namespace MailPoet\Config;
4
-
5
- if (!defined('ABSPATH')) exit;
6
-
7
-
8
- use MailPoet\WP\Functions as WPFunctions;
9
- use MailPoetVendor\Carbon\Carbon;
10
-
11
- class TranslationUpdater {
12
- const API_UPDATES_BASE_URI = 'https://translate.wordpress.com/api/translations-updates/mailpoet/';
13
-
14
- /** @var WPFunctions */
15
- private $wpFunctions;
16
-
17
- /** @var string */
18
- private $freeSlug;
19
-
20
- /** @var string */
21
- private $freeVersion;
22
-
23
- /** @var string */
24
- private $premiumSlug;
25
-
26
- /** @var string|null */
27
- private $premiumVersion;
28
-
29
- public function __construct(
30
- WPFunctions $wpFunctions,
31
- string $freeSlug,
32
- string $freeVersion,
33
- string $premiumSlug,
34
- ?string $premiumVersion
35
- ) {
36
- $this->wpFunctions = $wpFunctions;
37
- $this->freeSlug = $freeSlug;
38
- $this->freeVersion = $freeVersion;
39
- $this->premiumSlug = $premiumSlug;
40
- $this->premiumVersion = $premiumVersion;
41
- }
42
-
43
- public function init(): void {
44
- $this->wpFunctions->addFilter('pre_set_site_transient_update_plugins', [$this, 'checkForTranslations']);
45
- }
46
-
47
- public function checkForTranslations($transient) {
48
- if (!$transient instanceof \stdClass) {
49
- $transient = new \stdClass;
50
- }
51
-
52
- $locales = $this->getLocales();
53
- if (empty($locales)) {
54
- return $transient;
55
- }
56
-
57
- $translations = $this->getTranslationUpdates($locales);
58
- $transient->translations = array_merge($transient->translations ?? [], $translations);
59
- return $transient;
60
- }
61
-
62
- /**
63
- * Find available languages
64
- * @return array
65
- */
66
- private function getLocales(): array {
67
- $locales = array_values($this->wpFunctions->getAvailableLanguages());
68
- $locales = apply_filters('plugins_update_check_locales', $locales);
69
- return array_unique($locales);
70
- }
71
-
72
- private function getTranslationUpdates(array $locales): array {
73
- $requestBody = [
74
- 'locales' => $locales,
75
- 'plugins' => [
76
- $this->freeSlug => ['version' => $this->freeVersion],
77
- ],
78
- ];
79
- if ($this->premiumVersion) {
80
- $requestBody['plugins'][$this->premiumSlug] = ['version' => $this->premiumVersion];
81
- }
82
-
83
- // Ten seconds, plus one extra second for every 10 locales.
84
- $timeout = 10 + (int)(count($locales) / 10);
85
- $rawResponse = $this->wpFunctions->wpRemotePost(self::API_UPDATES_BASE_URI, [
86
- 'body' => json_encode($requestBody),
87
- 'headers' => ['Content-Type: application/json'],
88
- 'timeout' => $timeout,
89
- ]);
90
-
91
- // Don't continue when API request failed.
92
- $responseCode = $this->wpFunctions->wpRemoteRetrieveResponseCode($rawResponse);
93
- if ($responseCode !== 200) {
94
- return [];
95
- }
96
- $response = json_decode($this->wpFunctions->wpRemoteRetrieveBody($rawResponse), true);
97
- if (!is_array($response) || (array_key_exists('success', $response) && $response['success'] === false)) {
98
- return [];
99
- }
100
-
101
- $translations = [];
102
-
103
- $installedTranslations = $this->wpFunctions->wpGetInstalledTranslations('plugins');
104
- foreach ($response['data'] as $pluginName => $languagePacks) {
105
- foreach ($languagePacks as $languagePack) {
106
- // Check revision date if translation is already installed.
107
- if (array_key_exists($pluginName, $installedTranslations) && array_key_exists($languagePack['wp_locale'], $installedTranslations[$pluginName])) {
108
- $installedTranslationRevisionTime = new Carbon($installedTranslations[$pluginName][$languagePack['wp_locale']]['PO-Revision-Date']);
109
- $newTranslationRevisionTime = new Carbon($languagePack['last_modified']);
110
- // Skip if translation language pack is not newer than what is installed already.
111
- if ($newTranslationRevisionTime <= $installedTranslationRevisionTime) {
112
- continue;
113
- }
114
- }
115
- $translations[] = [
116
- 'type' => 'plugin',
117
- 'slug' => $pluginName,
118
- 'language' => $languagePack['wp_locale'],
119
- 'version' => $languagePack['version'],
120
- 'updated' => $languagePack['last_modified'],
121
- 'package' => $languagePack['package'],
122
- 'autoupdate' => true,
123
- ];
124
- }
125
- }
126
-
127
- return $translations;
128
- }
129
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/WP/Functions.php CHANGED
@@ -770,12 +770,4 @@ class Functions {
770
  public function getWpScripts() {
771
  return wp_scripts();
772
  }
773
-
774
- public function wpGetInstalledTranslations(string $type): array {
775
- return wp_get_installed_translations($type);
776
- }
777
-
778
- public function getAvailableLanguages(?string $dir = null): array {
779
- return get_available_languages($dir);
780
- }
781
  }
770
  public function getWpScripts() {
771
  return wp_scripts();
772
  }
 
 
 
 
 
 
 
 
773
  }
mailpoet.php CHANGED
@@ -5,7 +5,7 @@ if (!defined('ABSPATH')) exit;
5
 
6
  /*
7
  * Plugin Name: MailPoet 3 (New)
8
- * Version: 3.80.0
9
  * Plugin URI: http://www.mailpoet.com
10
  * Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
11
  * Author: MailPoet
@@ -20,7 +20,7 @@ if (!defined('ABSPATH')) exit;
20
  */
21
 
22
  $mailpoetPlugin = [
23
- 'version' => '3.80.0',
24
  'filename' => __FILE__,
25
  'path' => dirname(__FILE__),
26
  'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
5
 
6
  /*
7
  * Plugin Name: MailPoet 3 (New)
8
+ * Version: 3.81.0
9
  * Plugin URI: http://www.mailpoet.com
10
  * Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
11
  * Author: MailPoet
20
  */
21
 
22
  $mailpoetPlugin = [
23
+ 'version' => '3.81.0',
24
  'filename' => __FILE__,
25
  'path' => dirname(__FILE__),
26
  'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: mailpoet
3
  Tags: email, email marketing, post notification, woocommerce emails, email automation, newsletter, newsletter builder, newsletter subscribers
4
  Requires at least: 5.3
5
  Tested up to: 5.8
6
- Stable tag: 3.80.0
7
  Requires PHP: 7.2
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
@@ -184,6 +184,9 @@ Check our [Knowledge Base](https://kb.mailpoet.com) or contact us through our [s
184
 
185
  == Changelog ==
186
 
 
 
 
187
  = 3.80.0 - 2022-02-15 =
188
  * Added: offer to upgrade subscription and download or activate the premium plugin where needed;
189
  * Added: mailpoet_subscription_before_subscribe hook;
3
  Tags: email, email marketing, post notification, woocommerce emails, email automation, newsletter, newsletter builder, newsletter subscribers
4
  Requires at least: 5.3
5
  Tested up to: 5.8
6
+ Stable tag: 3.81.0
7
  Requires PHP: 7.2
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
184
 
185
  == Changelog ==
186
 
187
+ = 3.81.0 - 2022-02-16 =
188
+ * Fixed: translations downloading issue.
189
+
190
  = 3.80.0 - 2022-02-15 =
191
  * Added: offer to upgrade subscription and download or activate the premium plugin where needed;
192
  * Added: mailpoet_subscription_before_subscribe hook;
vendor/autoload.php CHANGED
@@ -2,4 +2,4 @@
2
  if (!defined('ABSPATH')) exit;
3
  // autoload.php @generated by Composer
4
  require_once __DIR__ . '/composer/autoload_real.php';
5
- return ComposerAutoloaderInitf13fd05ea810bb870589184b69bceb38::getLoader();
2
  if (!defined('ABSPATH')) exit;
3
  // autoload.php @generated by Composer
4
  require_once __DIR__ . '/composer/autoload_real.php';
5
+ return ComposerAutoloaderInita71156adc2bb6fe95cfc4a9c76757905::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  if (!defined('ABSPATH')) exit;
3
  // autoload_real.php @generated by Composer
4
- class ComposerAutoloaderInitf13fd05ea810bb870589184b69bceb38
5
  {
6
  private static $loader;
7
  public static function loadClassLoader($class)
@@ -16,13 +16,13 @@ class ComposerAutoloaderInitf13fd05ea810bb870589184b69bceb38
16
  return self::$loader;
17
  }
18
  require __DIR__ . '/platform_check.php';
19
- spl_autoload_register(array('ComposerAutoloaderInitf13fd05ea810bb870589184b69bceb38', 'loadClassLoader'), true, true);
20
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
21
- spl_autoload_unregister(array('ComposerAutoloaderInitf13fd05ea810bb870589184b69bceb38', 'loadClassLoader'));
22
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
23
  if ($useStaticLoader) {
24
  require __DIR__ . '/autoload_static.php';
25
- call_user_func(\Composer\Autoload\ComposerStaticInitf13fd05ea810bb870589184b69bceb38::getInitializer($loader));
26
  } else {
27
  $map = require __DIR__ . '/autoload_namespaces.php';
28
  foreach ($map as $namespace => $path) {
@@ -39,17 +39,17 @@ class ComposerAutoloaderInitf13fd05ea810bb870589184b69bceb38
39
  }
40
  $loader->register(true);
41
  if ($useStaticLoader) {
42
- $includeFiles = Composer\Autoload\ComposerStaticInitf13fd05ea810bb870589184b69bceb38::$files;
43
  } else {
44
  $includeFiles = require __DIR__ . '/autoload_files.php';
45
  }
46
  foreach ($includeFiles as $fileIdentifier => $file) {
47
- composerRequiref13fd05ea810bb870589184b69bceb38($fileIdentifier, $file);
48
  }
49
  return $loader;
50
  }
51
  }
52
- function composerRequiref13fd05ea810bb870589184b69bceb38($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
1
  <?php
2
  if (!defined('ABSPATH')) exit;
3
  // autoload_real.php @generated by Composer
4
+ class ComposerAutoloaderInita71156adc2bb6fe95cfc4a9c76757905
5
  {
6
  private static $loader;
7
  public static function loadClassLoader($class)
16
  return self::$loader;
17
  }
18
  require __DIR__ . '/platform_check.php';
19
+ spl_autoload_register(array('ComposerAutoloaderInita71156adc2bb6fe95cfc4a9c76757905', 'loadClassLoader'), true, true);
20
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
21
+ spl_autoload_unregister(array('ComposerAutoloaderInita71156adc2bb6fe95cfc4a9c76757905', 'loadClassLoader'));
22
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
23
  if ($useStaticLoader) {
24
  require __DIR__ . '/autoload_static.php';
25
+ call_user_func(\Composer\Autoload\ComposerStaticInita71156adc2bb6fe95cfc4a9c76757905::getInitializer($loader));
26
  } else {
27
  $map = require __DIR__ . '/autoload_namespaces.php';
28
  foreach ($map as $namespace => $path) {
39
  }
40
  $loader->register(true);
41
  if ($useStaticLoader) {
42
+ $includeFiles = Composer\Autoload\ComposerStaticInita71156adc2bb6fe95cfc4a9c76757905::$files;
43
  } else {
44
  $includeFiles = require __DIR__ . '/autoload_files.php';
45
  }
46
  foreach ($includeFiles as $fileIdentifier => $file) {
47
+ composerRequirea71156adc2bb6fe95cfc4a9c76757905($fileIdentifier, $file);
48
  }
49
  return $loader;
50
  }
51
  }
52
+ function composerRequirea71156adc2bb6fe95cfc4a9c76757905($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -2,7 +2,7 @@
2
  // autoload_static.php @generated by Composer
3
  namespace Composer\Autoload;
4
  if (!defined('ABSPATH')) exit;
5
- class ComposerStaticInitf13fd05ea810bb870589184b69bceb38
6
  {
7
  public static $files = array (
8
  'e65c52a9094ad098d9369d5cad5421fa' => __DIR__ . '/../..' . '/lib/exceptions.php',
@@ -1424,9 +1424,9 @@ class ComposerStaticInitf13fd05ea810bb870589184b69bceb38
1424
  public static function getInitializer(ClassLoader $loader)
1425
  {
1426
  return \Closure::bind(function () use ($loader) {
1427
- $loader->prefixLengthsPsr4 = ComposerStaticInitf13fd05ea810bb870589184b69bceb38::$prefixLengthsPsr4;
1428
- $loader->prefixDirsPsr4 = ComposerStaticInitf13fd05ea810bb870589184b69bceb38::$prefixDirsPsr4;
1429
- $loader->classMap = ComposerStaticInitf13fd05ea810bb870589184b69bceb38::$classMap;
1430
  }, null, ClassLoader::class);
1431
  }
1432
  }
2
  // autoload_static.php @generated by Composer
3
  namespace Composer\Autoload;
4
  if (!defined('ABSPATH')) exit;
5
+ class ComposerStaticInita71156adc2bb6fe95cfc4a9c76757905
6
  {
7
  public static $files = array (
8
  'e65c52a9094ad098d9369d5cad5421fa' => __DIR__ . '/../..' . '/lib/exceptions.php',
1424
  public static function getInitializer(ClassLoader $loader)
1425
  {
1426
  return \Closure::bind(function () use ($loader) {
1427
+ $loader->prefixLengthsPsr4 = ComposerStaticInita71156adc2bb6fe95cfc4a9c76757905::$prefixLengthsPsr4;
1428
+ $loader->prefixDirsPsr4 = ComposerStaticInita71156adc2bb6fe95cfc4a9c76757905::$prefixDirsPsr4;
1429
+ $loader->classMap = ComposerStaticInita71156adc2bb6fe95cfc4a9c76757905::$classMap;
1430
  }, null, ClassLoader::class);
1431
  }
1432
  }
vendor/composer/installed.php CHANGED
@@ -7,7 +7,7 @@ if (!defined('ABSPATH')) exit;
7
  'type' => 'library',
8
  'install_path' => __DIR__ . '/../../',
9
  'aliases' => array(),
10
- 'reference' => '6b045b7dc41fff9272398b65160a322f20395267',
11
  'name' => '__root__',
12
  'dev' => false,
13
  ),
@@ -18,7 +18,7 @@ if (!defined('ABSPATH')) exit;
18
  'type' => 'library',
19
  'install_path' => __DIR__ . '/../../',
20
  'aliases' => array(),
21
- 'reference' => '6b045b7dc41fff9272398b65160a322f20395267',
22
  'dev_requirement' => false,
23
  ),
24
  'mtdowling/cron-expression' => array(
7
  'type' => 'library',
8
  'install_path' => __DIR__ . '/../../',
9
  'aliases' => array(),
10
+ 'reference' => 'd6312b4a08d5e08e9bfe87dc61b8403e562af8e0',
11
  'name' => '__root__',
12
  'dev' => false,
13
  ),
18
  'type' => 'library',
19
  'install_path' => __DIR__ . '/../../',
20
  'aliases' => array(),
21
+ 'reference' => 'd6312b4a08d5e08e9bfe87dc61b8403e562af8e0',
22
  'dev_requirement' => false,
23
  ),
24
  'mtdowling/cron-expression' => array(