Version Description
- 2018-01-09 =
- Fixed: the plugin no longer spams the same post notification email to subscribers. Thank you Mark, Bruno, Peter, Aaron, PJ, Silowe, Eytan, Beverly and others for your help!
- Fixed: public assets are loaded for shortcode/PHP form placement methods. Thanks Ehsan!
Download this release
Release Info
Developer | wysija |
Plugin | MailPoet Newsletters (New) |
Version | 3.3.4 |
Comparing to | |
See all releases |
Code changes from version 3.3.2 to 3.3.4
- assets/css/{admin-global.4193f33b.css → admin-global.673373a1.css} +3 -0
- assets/css/manifest.json +2 -2
- assets/css/{newsletter_editor.40bfeff4.css → newsletter_editor.9cb620b4.css} +4 -0
- assets/js/{admin.31aa078f.js → admin.895871dd.js} +1 -0
- assets/js/form_editor.cc7529b3.js +0 -0
- assets/js/mailpoet.a5fa72ae.js +0 -0
- assets/js/manifest.json +2 -2
- assets/js/{newsletter_editor.e7b87b92.js → newsletter_editor.963cbce1.js} +10 -0
- assets/js/vendor.367b3f22.js +1 -1
- lang/mailpoet-ca.mo +0 -0
- lang/mailpoet-da_DK.mo +0 -0
- lang/mailpoet-de_DE.mo +0 -0
- lang/mailpoet-en_GB.mo +0 -0
- lang/mailpoet-es_ES.mo +0 -0
- lang/mailpoet-fa_IR.mo +0 -0
- lang/mailpoet-fr_CA.mo +0 -0
- lang/mailpoet-fr_FR.mo +0 -0
- lang/mailpoet-it_IT.mo +0 -0
- lang/mailpoet-ja.mo +0 -0
- lang/mailpoet-nl_NL.mo +0 -0
- lang/mailpoet-pl_PL.mo +0 -0
- lang/mailpoet-pt_BR.mo +0 -0
- lang/mailpoet-pt_PT.mo +0 -0
- lang/mailpoet-ru_RU.mo +0 -0
- lang/mailpoet-sq.mo +0 -0
- lang/mailpoet-sv_SE.mo +0 -0
- lang/mailpoet-tr_TR.mo +0 -0
- lang/mailpoet.pot +63 -57
- lib/API/JSON/v1/Subscribers.php +9 -4
- lib/Cron/Workers/SendingQueue/SendingQueue.php +8 -1
- lib/Form/Widget.php +2 -4
- lib/Mailer/MailerLog.php +6 -2
- lib/Models/ModelValidator.php +7 -3
- lib/Models/SendingQueue.php +16 -6
- lib/Util/Helpers.php +6 -0
- mailpoet.php +2 -2
- readme.txt +10 -1
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +5 -5
- views/newsletter/templates/blocks/base/toolsGeneric.hbs +1 -1
- views/subscribers/subscribers.html +1 -0
assets/css/{admin-global.4193f33b.css → admin-global.673373a1.css}
RENAMED
@@ -30,3 +30,6 @@ Style for Members plugin
|
|
30 |
font-size: 20px;
|
31 |
margin-right: 3px;
|
32 |
}
|
|
|
|
|
|
30 |
font-size: 20px;
|
31 |
margin-right: 3px;
|
32 |
}
|
33 |
+
#wpbody {
|
34 |
+
padding-bottom: 20px;
|
35 |
+
}
|
assets/css/manifest.json
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
{
|
2 |
-
"admin-global.css": "admin-global.
|
3 |
"admin.css": "admin.666d9203.css",
|
4 |
"importExport.css": "importExport.b3745466.css",
|
5 |
-
"newsletter_editor.css": "newsletter_editor.
|
6 |
"public.css": "public.cae357df.css",
|
7 |
"rtl.css": "rtl.d41d8cd9.css"
|
8 |
}
|
1 |
{
|
2 |
+
"admin-global.css": "admin-global.673373a1.css",
|
3 |
"admin.css": "admin.666d9203.css",
|
4 |
"importExport.css": "importExport.b3745466.css",
|
5 |
+
"newsletter_editor.css": "newsletter_editor.9cb620b4.css",
|
6 |
"public.css": "public.cae357df.css",
|
7 |
"rtl.css": "rtl.d41d8cd9.css"
|
8 |
}
|
assets/css/{newsletter_editor.40bfeff4.css → newsletter_editor.9cb620b4.css}
RENAMED
@@ -1763,6 +1763,7 @@ input.mailpoet_option_offset_left_small {
|
|
1763 |
}
|
1764 |
.mailpoet_delete_block_confirm {
|
1765 |
color: #fff;
|
|
|
1766 |
}
|
1767 |
.mailpoet_delete_block_confirm:hover {
|
1768 |
color: #fff;
|
@@ -1770,6 +1771,7 @@ input.mailpoet_option_offset_left_small {
|
|
1770 |
}
|
1771 |
.mailpoet_delete_block_cancel {
|
1772 |
color: #f4c6c8;
|
|
|
1773 |
}
|
1774 |
.mailpoet_delete_block_cancel:hover {
|
1775 |
color: #f4c6c8;
|
@@ -1986,6 +1988,8 @@ input.mailpoet_option_offset_left_small {
|
|
1986 |
left: 0;
|
1987 |
pointer-events: none;
|
1988 |
border: 1px solid rgba(255,255,255,0);
|
|
|
|
|
1989 |
}
|
1990 |
.mailpoet_block:hover > .mailpoet_block_highlight {
|
1991 |
border: 1px dashed #0074a2;
|
1763 |
}
|
1764 |
.mailpoet_delete_block_confirm {
|
1765 |
color: #fff;
|
1766 |
+
float: right;
|
1767 |
}
|
1768 |
.mailpoet_delete_block_confirm:hover {
|
1769 |
color: #fff;
|
1771 |
}
|
1772 |
.mailpoet_delete_block_cancel {
|
1773 |
color: #f4c6c8;
|
1774 |
+
float: right;
|
1775 |
}
|
1776 |
.mailpoet_delete_block_cancel:hover {
|
1777 |
color: #f4c6c8;
|
1988 |
left: 0;
|
1989 |
pointer-events: none;
|
1990 |
border: 1px solid rgba(255,255,255,0);
|
1991 |
+
-webkit-transition: 0.3s;
|
1992 |
+
transition: 0.3s;
|
1993 |
}
|
1994 |
.mailpoet_block:hover > .mailpoet_block_highlight {
|
1995 |
border: 1px dashed #0074a2;
|
assets/js/{admin.31aa078f.js → admin.895871dd.js}
RENAMED
@@ -490,6 +490,7 @@ webpackJsonp([0],{
|
|
490 |
label: MailPoet.I18n.t('lists'),
|
491 |
type: 'selection',
|
492 |
placeholder: MailPoet.I18n.t('selectList'),
|
|
|
493 |
api_version: window.mailpoet_api_version,
|
494 |
endpoint: 'segments',
|
495 |
multiple: true,
|
490 |
label: MailPoet.I18n.t('lists'),
|
491 |
type: 'selection',
|
492 |
placeholder: MailPoet.I18n.t('selectList'),
|
493 |
+
tip: MailPoet.I18n.t('welcomeEmailTip'),
|
494 |
api_version: window.mailpoet_api_version,
|
495 |
endpoint: 'segments',
|
496 |
multiple: true,
|
assets/js/form_editor.cc7529b3.js
CHANGED
File without changes
|
assets/js/mailpoet.a5fa72ae.js
CHANGED
File without changes
|
assets/js/manifest.json
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
{
|
2 |
"mp2migrator.js": "mp2migrator.81060f18.js",
|
3 |
"public.js": "public.3d1d91ad.js",
|
4 |
-
"admin.js": "admin.
|
5 |
"admin_vendor.js": "admin_vendor.fe056ed3.js",
|
6 |
"form_editor.js": "form_editor.cc7529b3.js",
|
7 |
"mailpoet.js": "mailpoet.a5fa72ae.js",
|
8 |
-
"newsletter_editor.js": "newsletter_editor.
|
9 |
"vendor.js": "vendor.367b3f22.js"
|
10 |
}
|
1 |
{
|
2 |
"mp2migrator.js": "mp2migrator.81060f18.js",
|
3 |
"public.js": "public.3d1d91ad.js",
|
4 |
+
"admin.js": "admin.895871dd.js",
|
5 |
"admin_vendor.js": "admin_vendor.fe056ed3.js",
|
6 |
"form_editor.js": "form_editor.cc7529b3.js",
|
7 |
"mailpoet.js": "mailpoet.a5fa72ae.js",
|
8 |
+
"newsletter_editor.js": "newsletter_editor.963cbce1.js",
|
9 |
"vendor.js": "vendor.367b3f22.js"
|
10 |
}
|
assets/js/{newsletter_editor.e7b87b92.js → newsletter_editor.963cbce1.js}
RENAMED
@@ -34547,9 +34547,19 @@ webpackJsonp([4],{
|
|
34547 |
(new ViewType(_.extend({ model: this.model }, options || {}))).render();
|
34548 |
},
|
34549 |
showDeletionConfirmation: function () {
|
|
|
|
|
|
|
|
|
|
|
34550 |
this.$('.mailpoet_delete_block').addClass('mailpoet_delete_block_activated');
|
34551 |
},
|
34552 |
hideDeletionConfirmation: function () {
|
|
|
|
|
|
|
|
|
|
|
34553 |
this.$('.mailpoet_delete_block').removeClass('mailpoet_delete_block_activated');
|
34554 |
},
|
34555 |
deleteBlock: function (event) {
|
34547 |
(new ViewType(_.extend({ model: this.model }, options || {}))).render();
|
34548 |
},
|
34549 |
showDeletionConfirmation: function () {
|
34550 |
+
this.$('.mailpoet_delete_block')
|
34551 |
+
.closest('.mailpoet_block')
|
34552 |
+
.find('> .mailpoet_block_highlight')
|
34553 |
+
.css({ background: '#E64047', opacity: 0.5 });
|
34554 |
+
|
34555 |
this.$('.mailpoet_delete_block').addClass('mailpoet_delete_block_activated');
|
34556 |
},
|
34557 |
hideDeletionConfirmation: function () {
|
34558 |
+
this.$('.mailpoet_delete_block')
|
34559 |
+
.closest('.mailpoet_block')
|
34560 |
+
.find('> .mailpoet_block_highlight')
|
34561 |
+
.css({ background: 'transparent', opacity: 1 });
|
34562 |
+
|
34563 |
this.$('.mailpoet_delete_block').removeClass('mailpoet_delete_block_activated');
|
34564 |
},
|
34565 |
deleteBlock: function (event) {
|
assets/js/vendor.367b3f22.js
CHANGED
@@ -76,7 +76,7 @@
|
|
76 |
/******/ script.charset = 'utf-8';
|
77 |
/******/ script.async = true;
|
78 |
|
79 |
-
/******/ script.src = __webpack_require__.p + "" + ({"0":"admin","1":"admin_vendor","2":"form_editor","3":"mailpoet","4":"newsletter_editor"}[chunkId]||chunkId) + "." + {"0":"
|
80 |
/******/ head.appendChild(script);
|
81 |
/******/ }
|
82 |
/******/ };
|
76 |
/******/ script.charset = 'utf-8';
|
77 |
/******/ script.async = true;
|
78 |
|
79 |
+
/******/ script.src = __webpack_require__.p + "" + ({"0":"admin","1":"admin_vendor","2":"form_editor","3":"mailpoet","4":"newsletter_editor"}[chunkId]||chunkId) + "." + {"0":"895871dd","1":"fe056ed3","2":"cc7529b3","3":"a5fa72ae","4":"963cbce1"}[chunkId] + ".chunk.js";
|
80 |
/******/ head.appendChild(script);
|
81 |
/******/ }
|
82 |
/******/ };
|
lang/mailpoet-ca.mo
CHANGED
Binary file
|
lang/mailpoet-da_DK.mo
CHANGED
Binary file
|
lang/mailpoet-de_DE.mo
CHANGED
Binary file
|
lang/mailpoet-en_GB.mo
CHANGED
Binary file
|
lang/mailpoet-es_ES.mo
CHANGED
Binary file
|
lang/mailpoet-fa_IR.mo
CHANGED
Binary file
|
lang/mailpoet-fr_CA.mo
CHANGED
Binary file
|
lang/mailpoet-fr_FR.mo
CHANGED
Binary file
|
lang/mailpoet-it_IT.mo
CHANGED
Binary file
|
lang/mailpoet-ja.mo
CHANGED
Binary file
|
lang/mailpoet-nl_NL.mo
CHANGED
Binary file
|
lang/mailpoet-pl_PL.mo
CHANGED
Binary file
|
lang/mailpoet-pt_BR.mo
CHANGED
Binary file
|
lang/mailpoet-pt_PT.mo
CHANGED
Binary file
|
lang/mailpoet-ru_RU.mo
CHANGED
Binary file
|
lang/mailpoet-sq.mo
CHANGED
Binary file
|
lang/mailpoet-sv_SE.mo
CHANGED
Binary file
|
lang/mailpoet-tr_TR.mo
CHANGED
Binary file
|
lang/mailpoet.pot
CHANGED
@@ -1,14 +1,14 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the same license as the package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: \n"
|
6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
7 |
-
"POT-Creation-Date:
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
-
"PO-Revision-Date:
|
12 |
"Last-Translator: MailPoet i18n "
|
13 |
"(https://www.transifex.com/organization/wysija)\n"
|
14 |
"Language-Team: MailPoet i18n "
|
@@ -26,6 +26,13 @@ msgstr ""
|
|
26 |
"X-Poedit-Bookmarks: \n"
|
27 |
"X-Textdomain-Support: yes\n"
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
#: lib/API/API.php:19
|
30 |
msgid "Invalid API version."
|
31 |
msgstr ""
|
@@ -205,25 +212,25 @@ msgstr ""
|
|
205 |
msgid "You have not specified any settings to be saved."
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
209 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
210 |
#: lib/API/MP/v1/API.php:52 lib/API/MP/v1/API.php:97 lib/API/MP/v1/API.php:225
|
211 |
msgid "This subscriber does not exist."
|
212 |
msgstr ""
|
213 |
|
214 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
215 |
msgid "Please specify a valid form ID."
|
216 |
msgstr ""
|
217 |
|
218 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
219 |
msgid "Please leave the first field empty."
|
220 |
msgstr ""
|
221 |
|
222 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
223 |
msgid "Please select a list."
|
224 |
msgstr ""
|
225 |
|
226 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
227 |
msgid "You need to wait %d seconds before subscribing again."
|
228 |
msgstr ""
|
229 |
|
@@ -299,13 +306,6 @@ msgstr ""
|
|
299 |
msgid "MailPoet Newsletter"
|
300 |
msgstr ""
|
301 |
|
302 |
-
#: lib/Config/Initializer.php:46
|
303 |
-
msgid ""
|
304 |
-
"Unable to connect to the database (the database is unable to open a file or "
|
305 |
-
"folder), the connection is likely not configured correctly. Please read our "
|
306 |
-
"[link] Knowledge Base article [/link] for steps how to resolve it."
|
307 |
-
msgstr ""
|
308 |
-
|
309 |
#: lib/Config/MP2Migrator.php:151
|
310 |
msgid "Start import"
|
311 |
msgstr ""
|
@@ -422,20 +422,20 @@ msgstr ""
|
|
422 |
|
423 |
#: lib/Config/Menu.php:186 lib/Config/Menu.php:187
|
424 |
#: views/subscribers/importExport/import.html:7
|
425 |
-
#: views/subscribers/subscribers.html:
|
426 |
msgid "Import"
|
427 |
msgstr ""
|
428 |
|
429 |
#: lib/Config/Menu.php:199 lib/Config/Menu.php:200
|
430 |
#: views/subscribers/importExport/export.html:6
|
431 |
#: views/subscribers/importExport/export.html:96
|
432 |
-
#: views/subscribers/subscribers.html:
|
433 |
msgid "Export"
|
434 |
msgstr ""
|
435 |
|
436 |
#: lib/Config/Menu.php:212 lib/Config/Menu.php:213 views/forms.html:53
|
437 |
#: views/newsletters.html:66 views/newsletters.html:168 views/segments.html:13
|
438 |
-
#: views/subscribers/subscribers.html:
|
439 |
msgid "Lists"
|
440 |
msgstr ""
|
441 |
|
@@ -1122,7 +1122,7 @@ msgstr ""
|
|
1122 |
|
1123 |
#: lib/Form/Block/Date.php:77 lib/Form/Block/Date.php:199
|
1124 |
#: views/form/templates/blocks/date_days.hbs:3 views/settings/bounce.html:252
|
1125 |
-
#: views/subscribers/subscribers.html:
|
1126 |
msgid "Day"
|
1127 |
msgstr ""
|
1128 |
|
@@ -1132,7 +1132,7 @@ msgstr ""
|
|
1132 |
|
1133 |
#: lib/Form/Block/Date.php:86 lib/Form/Block/Date.php:143
|
1134 |
#: views/form/templates/blocks/date_months.hbs:3
|
1135 |
-
#: views/subscribers/subscribers.html:
|
1136 |
msgid "Month"
|
1137 |
msgstr ""
|
1138 |
|
@@ -1144,7 +1144,7 @@ msgstr ""
|
|
1144 |
#: lib/Form/Block/Date.php:173
|
1145 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:75
|
1146 |
#: views/form/templates/blocks/date_years.hbs:5
|
1147 |
-
#: views/subscribers/subscribers.html:
|
1148 |
msgid "Year"
|
1149 |
msgstr ""
|
1150 |
|
@@ -1240,19 +1240,19 @@ msgstr ""
|
|
1240 |
msgid "Add a newsletter subscription form"
|
1241 |
msgstr ""
|
1242 |
|
1243 |
-
#: lib/Form/Widget.php:
|
1244 |
msgid "An error has happened while performing a request, please try again later."
|
1245 |
msgstr ""
|
1246 |
|
1247 |
-
#: lib/Form/Widget.php:
|
1248 |
msgid "Subscribe to Our Newsletter"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: lib/Form/Widget.php:
|
1252 |
msgid "Title:"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: lib/Form/Widget.php:
|
1256 |
msgid "Create a new form"
|
1257 |
msgstr ""
|
1258 |
|
@@ -1370,7 +1370,7 @@ msgstr ""
|
|
1370 |
msgid "The template body cannot be empty."
|
1371 |
msgstr ""
|
1372 |
|
1373 |
-
#: lib/Models/Segment.php:114 views/subscribers/subscribers.html:
|
1374 |
msgid "WordPress Users"
|
1375 |
msgstr ""
|
1376 |
|
@@ -1382,7 +1382,7 @@ msgstr ""
|
|
1382 |
msgid "Not in a List"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
-
#: lib/Models/SendingQueue.php:
|
1386 |
msgid "Rendered newsletter body is invalid!"
|
1387 |
msgstr ""
|
1388 |
|
@@ -1445,7 +1445,7 @@ msgstr ""
|
|
1445 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:11
|
1446 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:108
|
1447 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:109
|
1448 |
-
#: views/subscribers/subscribers.html:
|
1449 |
msgid "Subscriber"
|
1450 |
msgstr ""
|
1451 |
|
@@ -1620,7 +1620,7 @@ msgstr ""
|
|
1620 |
|
1621 |
#: lib/Subscribers/ImportExport/ImportExportFactory.php:35
|
1622 |
#: lib/Subscription/Pages.php:302 views/newsletters.html:63
|
1623 |
-
#: views/subscribers/subscribers.html:54 views/subscribers/subscribers.html:
|
1624 |
msgid "Status"
|
1625 |
msgstr ""
|
1626 |
|
@@ -1697,7 +1697,7 @@ msgstr ""
|
|
1697 |
|
1698 |
#: lib/Subscription/Pages.php:353 views/form/editor.html:29
|
1699 |
#: views/form/editor.html:376 views/newsletter/templates/components/save.hbs:3
|
1700 |
-
#: views/segments.html:56 views/subscribers/subscribers.html:
|
1701 |
msgid "Save"
|
1702 |
msgstr ""
|
1703 |
|
@@ -1775,7 +1775,7 @@ msgid "Form"
|
|
1775 |
msgstr ""
|
1776 |
|
1777 |
#: views/form/editor.html:6 views/segments.html:68
|
1778 |
-
#: views/subscribers/subscribers.html:
|
1779 |
msgid "Back"
|
1780 |
msgstr ""
|
1781 |
|
@@ -2274,7 +2274,7 @@ msgid "Move to trash"
|
|
2274 |
msgstr ""
|
2275 |
|
2276 |
#: views/forms.html:68 views/newsletters.html:94 views/segments.html:48
|
2277 |
-
#: views/subscribers/subscribers.html:
|
2278 |
msgid "Add New"
|
2279 |
msgstr ""
|
2280 |
|
@@ -2960,11 +2960,11 @@ msgid "Delete"
|
|
2960 |
msgstr ""
|
2961 |
|
2962 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
2963 |
-
msgid "
|
2964 |
msgstr ""
|
2965 |
|
2966 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
2967 |
-
msgid "
|
2968 |
msgstr ""
|
2969 |
|
2970 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:7
|
@@ -3297,7 +3297,7 @@ msgstr ""
|
|
3297 |
msgid "Created on"
|
3298 |
msgstr ""
|
3299 |
|
3300 |
-
#: views/newsletters.html:71 views/subscribers/subscribers.html:
|
3301 |
msgid "Last modified on"
|
3302 |
msgstr ""
|
3303 |
|
@@ -5168,89 +5168,95 @@ msgstr ""
|
|
5168 |
msgid "Subscriber was added successfully!"
|
5169 |
msgstr ""
|
5170 |
|
5171 |
-
#: views/subscribers/subscribers.html:
|
|
|
|
|
|
|
|
|
|
|
|
|
5172 |
msgid "Subscribed on"
|
5173 |
msgstr ""
|
5174 |
|
5175 |
-
#: views/subscribers/subscribers.html:
|
5176 |
msgid "1 subscriber was moved to the trash."
|
5177 |
msgstr ""
|
5178 |
|
5179 |
-
#: views/subscribers/subscribers.html:
|
5180 |
msgid "%$1d subscribers were moved to the trash."
|
5181 |
msgstr ""
|
5182 |
|
5183 |
-
#: views/subscribers/subscribers.html:
|
5184 |
msgid "1 subscriber was permanently deleted."
|
5185 |
msgstr ""
|
5186 |
|
5187 |
-
#: views/subscribers/subscribers.html:
|
5188 |
msgid "%$1d subscribers were permanently deleted."
|
5189 |
msgstr ""
|
5190 |
|
5191 |
-
#: views/subscribers/subscribers.html:
|
5192 |
msgid "1 subscriber has been restored from the trash."
|
5193 |
msgstr ""
|
5194 |
|
5195 |
-
#: views/subscribers/subscribers.html:
|
5196 |
msgid "%$1d subscribers have been restored from the trash."
|
5197 |
msgstr ""
|
5198 |
|
5199 |
-
#: views/subscribers/subscribers.html:
|
5200 |
msgid "Move to list..."
|
5201 |
msgstr ""
|
5202 |
|
5203 |
-
#: views/subscribers/subscribers.html:
|
5204 |
msgid "%$1d subscribers were moved to list <strong>%$2s</strong>"
|
5205 |
msgstr ""
|
5206 |
|
5207 |
-
#: views/subscribers/subscribers.html:
|
5208 |
msgid "Add to list..."
|
5209 |
msgstr ""
|
5210 |
|
5211 |
-
#: views/subscribers/subscribers.html:
|
5212 |
msgid "%$1d subscribers were added to list <strong>%$2s</strong>."
|
5213 |
msgstr ""
|
5214 |
|
5215 |
-
#: views/subscribers/subscribers.html:
|
5216 |
msgid "Remove from list..."
|
5217 |
msgstr ""
|
5218 |
|
5219 |
-
#: views/subscribers/subscribers.html:
|
5220 |
msgid "%$1d subscribers were removed from list <strong>%$2s</strong>"
|
5221 |
msgstr ""
|
5222 |
|
5223 |
-
#: views/subscribers/subscribers.html:
|
5224 |
msgid "Remove from all lists"
|
5225 |
msgstr ""
|
5226 |
|
5227 |
-
#: views/subscribers/subscribers.html:
|
5228 |
msgid "%$1d subscribers were removed from all lists."
|
5229 |
msgstr ""
|
5230 |
|
5231 |
-
#: views/subscribers/subscribers.html:
|
5232 |
msgid "Resend confirmation email"
|
5233 |
msgstr ""
|
5234 |
|
5235 |
-
#: views/subscribers/subscribers.html:
|
5236 |
msgid "%$1d confirmation emails have been sent."
|
5237 |
msgstr ""
|
5238 |
|
5239 |
-
#: views/subscribers/subscribers.html:
|
5240 |
msgid "Lists to which the subscriber was subscribed."
|
5241 |
msgstr ""
|
5242 |
|
5243 |
-
#: views/subscribers/subscribers.html:
|
5244 |
msgid ""
|
5245 |
"This subscriber is a registered WordPress user. [link]Edit his/her "
|
5246 |
"profile[/link] to change his/her email."
|
5247 |
msgstr ""
|
5248 |
|
5249 |
-
#: views/subscribers/subscribers.html:
|
5250 |
msgid "Tip:"
|
5251 |
msgstr ""
|
5252 |
|
5253 |
-
#: views/subscribers/subscribers.html:
|
5254 |
msgid ""
|
5255 |
"Need to add new fields, like a telephone number or street address? You can "
|
5256 |
"add custom fields by editing the subscription form on the Forms page."
|
1 |
+
# Copyright (C) 2018
|
2 |
# This file is distributed under the same license as the package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: \n"
|
6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
7 |
+
"POT-Creation-Date: 2018-01-09 18:32:46+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n"
|
12 |
"Last-Translator: MailPoet i18n "
|
13 |
"(https://www.transifex.com/organization/wysija)\n"
|
14 |
"Language-Team: MailPoet i18n "
|
26 |
"X-Poedit-Bookmarks: \n"
|
27 |
"X-Textdomain-Support: yes\n"
|
28 |
|
29 |
+
#: Initializer.php:63 lib/Config/Initializer.php:46
|
30 |
+
msgid ""
|
31 |
+
"Unable to connect to the database (the database is unable to open a file or "
|
32 |
+
"folder), the connection is likely not configured correctly. Please read our "
|
33 |
+
"[link] Knowledge Base article [/link] for steps how to resolve it."
|
34 |
+
msgstr ""
|
35 |
+
|
36 |
#: lib/API/API.php:19
|
37 |
msgid "Invalid API version."
|
38 |
msgstr ""
|
212 |
msgid "You have not specified any settings to be saved."
|
213 |
msgstr ""
|
214 |
|
215 |
+
#: lib/API/JSON/v1/Subscribers.php:33 lib/API/JSON/v1/Subscribers.php:178
|
216 |
+
#: lib/API/JSON/v1/Subscribers.php:194 lib/API/JSON/v1/Subscribers.php:210
|
217 |
#: lib/API/MP/v1/API.php:52 lib/API/MP/v1/API.php:97 lib/API/MP/v1/API.php:225
|
218 |
msgid "This subscriber does not exist."
|
219 |
msgstr ""
|
220 |
|
221 |
+
#: lib/API/JSON/v1/Subscribers.php:81
|
222 |
msgid "Please specify a valid form ID."
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: lib/API/JSON/v1/Subscribers.php:86
|
226 |
msgid "Please leave the first field empty."
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: lib/API/JSON/v1/Subscribers.php:102 views/form/editor.html:57
|
230 |
msgid "Please select a list."
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: lib/API/JSON/v1/Subscribers.php:114
|
234 |
msgid "You need to wait %d seconds before subscribing again."
|
235 |
msgstr ""
|
236 |
|
306 |
msgid "MailPoet Newsletter"
|
307 |
msgstr ""
|
308 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
309 |
#: lib/Config/MP2Migrator.php:151
|
310 |
msgid "Start import"
|
311 |
msgstr ""
|
422 |
|
423 |
#: lib/Config/Menu.php:186 lib/Config/Menu.php:187
|
424 |
#: views/subscribers/importExport/import.html:7
|
425 |
+
#: views/subscribers/subscribers.html:95
|
426 |
msgid "Import"
|
427 |
msgstr ""
|
428 |
|
429 |
#: lib/Config/Menu.php:199 lib/Config/Menu.php:200
|
430 |
#: views/subscribers/importExport/export.html:6
|
431 |
#: views/subscribers/importExport/export.html:96
|
432 |
+
#: views/subscribers/subscribers.html:96
|
433 |
msgid "Export"
|
434 |
msgstr ""
|
435 |
|
436 |
#: lib/Config/Menu.php:212 lib/Config/Menu.php:213 views/forms.html:53
|
437 |
#: views/newsletters.html:66 views/newsletters.html:168 views/segments.html:13
|
438 |
+
#: views/subscribers/subscribers.html:67
|
439 |
msgid "Lists"
|
440 |
msgstr ""
|
441 |
|
1122 |
|
1123 |
#: lib/Form/Block/Date.php:77 lib/Form/Block/Date.php:199
|
1124 |
#: views/form/templates/blocks/date_days.hbs:3 views/settings/bounce.html:252
|
1125 |
+
#: views/subscribers/subscribers.html:93
|
1126 |
msgid "Day"
|
1127 |
msgstr ""
|
1128 |
|
1132 |
|
1133 |
#: lib/Form/Block/Date.php:86 lib/Form/Block/Date.php:143
|
1134 |
#: views/form/templates/blocks/date_months.hbs:3
|
1135 |
+
#: views/subscribers/subscribers.html:92
|
1136 |
msgid "Month"
|
1137 |
msgstr ""
|
1138 |
|
1144 |
#: lib/Form/Block/Date.php:173
|
1145 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:75
|
1146 |
#: views/form/templates/blocks/date_years.hbs:5
|
1147 |
+
#: views/subscribers/subscribers.html:91
|
1148 |
msgid "Year"
|
1149 |
msgstr ""
|
1150 |
|
1240 |
msgid "Add a newsletter subscription form"
|
1241 |
msgstr ""
|
1242 |
|
1243 |
+
#: lib/Form/Widget.php:116
|
1244 |
msgid "An error has happened while performing a request, please try again later."
|
1245 |
msgstr ""
|
1246 |
|
1247 |
+
#: lib/Form/Widget.php:170
|
1248 |
msgid "Subscribe to Our Newsletter"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
+
#: lib/Form/Widget.php:185
|
1252 |
msgid "Title:"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
+
#: lib/Form/Widget.php:205
|
1256 |
msgid "Create a new form"
|
1257 |
msgstr ""
|
1258 |
|
1370 |
msgid "The template body cannot be empty."
|
1371 |
msgstr ""
|
1372 |
|
1373 |
+
#: lib/Models/Segment.php:114 views/subscribers/subscribers.html:87
|
1374 |
msgid "WordPress Users"
|
1375 |
msgstr ""
|
1376 |
|
1382 |
msgid "Not in a List"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
+
#: lib/Models/SendingQueue.php:22
|
1386 |
msgid "Rendered newsletter body is invalid!"
|
1387 |
msgstr ""
|
1388 |
|
1445 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:11
|
1446 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:108
|
1447 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:109
|
1448 |
+
#: views/subscribers/subscribers.html:65
|
1449 |
msgid "Subscriber"
|
1450 |
msgstr ""
|
1451 |
|
1620 |
|
1621 |
#: lib/Subscribers/ImportExport/ImportExportFactory.php:35
|
1622 |
#: lib/Subscription/Pages.php:302 views/newsletters.html:63
|
1623 |
+
#: views/subscribers/subscribers.html:54 views/subscribers/subscribers.html:66
|
1624 |
msgid "Status"
|
1625 |
msgstr ""
|
1626 |
|
1697 |
|
1698 |
#: lib/Subscription/Pages.php:353 views/form/editor.html:29
|
1699 |
#: views/form/editor.html:376 views/newsletter/templates/components/save.hbs:3
|
1700 |
+
#: views/segments.html:56 views/subscribers/subscribers.html:97
|
1701 |
msgid "Save"
|
1702 |
msgstr ""
|
1703 |
|
1775 |
msgstr ""
|
1776 |
|
1777 |
#: views/form/editor.html:6 views/segments.html:68
|
1778 |
+
#: views/subscribers/subscribers.html:98
|
1779 |
msgid "Back"
|
1780 |
msgstr ""
|
1781 |
|
2274 |
msgstr ""
|
2275 |
|
2276 |
#: views/forms.html:68 views/newsletters.html:94 views/segments.html:48
|
2277 |
+
#: views/subscribers/subscribers.html:94
|
2278 |
msgid "Add New"
|
2279 |
msgstr ""
|
2280 |
|
2960 |
msgstr ""
|
2961 |
|
2962 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
2963 |
+
msgid "Cancel deletion"
|
2964 |
msgstr ""
|
2965 |
|
2966 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
2967 |
+
msgid "Confirm deletion"
|
2968 |
msgstr ""
|
2969 |
|
2970 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:7
|
3297 |
msgid "Created on"
|
3298 |
msgstr ""
|
3299 |
|
3300 |
+
#: views/newsletters.html:71 views/subscribers/subscribers.html:69
|
3301 |
msgid "Last modified on"
|
3302 |
msgstr ""
|
3303 |
|
5168 |
msgid "Subscriber was added successfully!"
|
5169 |
msgstr ""
|
5170 |
|
5171 |
+
#: views/subscribers/subscribers.html:63
|
5172 |
+
msgid ""
|
5173 |
+
"This subscriber will receive Welcome Emails if any are active for your "
|
5174 |
+
"lists."
|
5175 |
+
msgstr ""
|
5176 |
+
|
5177 |
+
#: views/subscribers/subscribers.html:68
|
5178 |
msgid "Subscribed on"
|
5179 |
msgstr ""
|
5180 |
|
5181 |
+
#: views/subscribers/subscribers.html:70
|
5182 |
msgid "1 subscriber was moved to the trash."
|
5183 |
msgstr ""
|
5184 |
|
5185 |
+
#: views/subscribers/subscribers.html:71
|
5186 |
msgid "%$1d subscribers were moved to the trash."
|
5187 |
msgstr ""
|
5188 |
|
5189 |
+
#: views/subscribers/subscribers.html:72
|
5190 |
msgid "1 subscriber was permanently deleted."
|
5191 |
msgstr ""
|
5192 |
|
5193 |
+
#: views/subscribers/subscribers.html:73
|
5194 |
msgid "%$1d subscribers were permanently deleted."
|
5195 |
msgstr ""
|
5196 |
|
5197 |
+
#: views/subscribers/subscribers.html:74
|
5198 |
msgid "1 subscriber has been restored from the trash."
|
5199 |
msgstr ""
|
5200 |
|
5201 |
+
#: views/subscribers/subscribers.html:75
|
5202 |
msgid "%$1d subscribers have been restored from the trash."
|
5203 |
msgstr ""
|
5204 |
|
5205 |
+
#: views/subscribers/subscribers.html:76
|
5206 |
msgid "Move to list..."
|
5207 |
msgstr ""
|
5208 |
|
5209 |
+
#: views/subscribers/subscribers.html:77
|
5210 |
msgid "%$1d subscribers were moved to list <strong>%$2s</strong>"
|
5211 |
msgstr ""
|
5212 |
|
5213 |
+
#: views/subscribers/subscribers.html:78
|
5214 |
msgid "Add to list..."
|
5215 |
msgstr ""
|
5216 |
|
5217 |
+
#: views/subscribers/subscribers.html:79
|
5218 |
msgid "%$1d subscribers were added to list <strong>%$2s</strong>."
|
5219 |
msgstr ""
|
5220 |
|
5221 |
+
#: views/subscribers/subscribers.html:80
|
5222 |
msgid "Remove from list..."
|
5223 |
msgstr ""
|
5224 |
|
5225 |
+
#: views/subscribers/subscribers.html:81
|
5226 |
msgid "%$1d subscribers were removed from list <strong>%$2s</strong>"
|
5227 |
msgstr ""
|
5228 |
|
5229 |
+
#: views/subscribers/subscribers.html:82
|
5230 |
msgid "Remove from all lists"
|
5231 |
msgstr ""
|
5232 |
|
5233 |
+
#: views/subscribers/subscribers.html:83
|
5234 |
msgid "%$1d subscribers were removed from all lists."
|
5235 |
msgstr ""
|
5236 |
|
5237 |
+
#: views/subscribers/subscribers.html:84
|
5238 |
msgid "Resend confirmation email"
|
5239 |
msgstr ""
|
5240 |
|
5241 |
+
#: views/subscribers/subscribers.html:85
|
5242 |
msgid "%$1d confirmation emails have been sent."
|
5243 |
msgstr ""
|
5244 |
|
5245 |
+
#: views/subscribers/subscribers.html:86
|
5246 |
msgid "Lists to which the subscriber was subscribed."
|
5247 |
msgstr ""
|
5248 |
|
5249 |
+
#: views/subscribers/subscribers.html:88
|
5250 |
msgid ""
|
5251 |
"This subscriber is a registered WordPress user. [link]Edit his/her "
|
5252 |
"profile[/link] to change his/her email."
|
5253 |
msgstr ""
|
5254 |
|
5255 |
+
#: views/subscribers/subscribers.html:89
|
5256 |
msgid "Tip:"
|
5257 |
msgstr ""
|
5258 |
|
5259 |
+
#: views/subscribers/subscribers.html:90
|
5260 |
msgid ""
|
5261 |
"Need to add new fields, like a telephone number or street address? You can "
|
5262 |
"add custom fields by editing the subscription form on the Forms page."
|
lib/API/JSON/v1/Subscribers.php
CHANGED
@@ -10,6 +10,7 @@ use MailPoet\Form\Util\FieldNameObfuscator;
|
|
10 |
use MailPoet\Models\Form;
|
11 |
use MailPoet\Models\StatisticsForms;
|
12 |
use MailPoet\Models\Subscriber;
|
|
|
13 |
use MailPoet\Segments\SubscribersListings;
|
14 |
use MailPoet\Subscription\Throttling as SubscriptionThrottling;
|
15 |
use MailPoet\WP\Hooks;
|
@@ -158,11 +159,15 @@ class Subscribers extends APIEndpoint {
|
|
158 |
|
159 |
if(!empty($errors)) {
|
160 |
return $this->badRequest($errors);
|
161 |
-
} else {
|
162 |
-
return $this->successResponse(
|
163 |
-
Subscriber::findOne($subscriber->id)->asArray()
|
164 |
-
);
|
165 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
}
|
167 |
|
168 |
function restore($data = array()) {
|
10 |
use MailPoet\Models\Form;
|
11 |
use MailPoet\Models\StatisticsForms;
|
12 |
use MailPoet\Models\Subscriber;
|
13 |
+
use MailPoet\Newsletter\Scheduler\Scheduler;
|
14 |
use MailPoet\Segments\SubscribersListings;
|
15 |
use MailPoet\Subscription\Throttling as SubscriptionThrottling;
|
16 |
use MailPoet\WP\Hooks;
|
159 |
|
160 |
if(!empty($errors)) {
|
161 |
return $this->badRequest($errors);
|
|
|
|
|
|
|
|
|
162 |
}
|
163 |
+
|
164 |
+
if(!empty($data['segments'])) {
|
165 |
+
Scheduler::scheduleSubscriberWelcomeNotification($subscriber->id, $data['segments']);
|
166 |
+
}
|
167 |
+
|
168 |
+
return $this->successResponse(
|
169 |
+
Subscriber::findOne($subscriber->id)->asArray()
|
170 |
+
);
|
171 |
}
|
172 |
|
173 |
function restore($data = array()) {
|
lib/Cron/Workers/SendingQueue/SendingQueue.php
CHANGED
@@ -165,7 +165,14 @@ class SendingQueue {
|
|
165 |
);
|
166 |
}
|
167 |
// update processed/to process list
|
168 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
// log statistics
|
170 |
StatisticsNewslettersModel::createMultiple($statistics);
|
171 |
// update the sent count
|
165 |
);
|
166 |
}
|
167 |
// update processed/to process list
|
168 |
+
if(!$queue->updateProcessedSubscribers($prepared_subscribers_ids)) {
|
169 |
+
MailerLog::processError(
|
170 |
+
'processed_list_update',
|
171 |
+
sprintf('QUEUE-%d-PROCESSED-LIST-UPDATE', $queue->id),
|
172 |
+
null,
|
173 |
+
true
|
174 |
+
);
|
175 |
+
}
|
176 |
// log statistics
|
177 |
StatisticsNewslettersModel::createMultiple($statistics);
|
178 |
// update the sent count
|
lib/Form/Widget.php
CHANGED
@@ -23,9 +23,7 @@ class Widget extends \WP_Widget {
|
|
23 |
);
|
24 |
|
25 |
$this->renderer = new \MailPoet\Config\Renderer(!WP_DEBUG, !WP_DEBUG);
|
26 |
-
|
27 |
if(!is_admin()) {
|
28 |
-
$this->setupDependencies();
|
29 |
$this->setupIframe();
|
30 |
} else {
|
31 |
add_action('widgets_admin_page', array(
|
@@ -89,8 +87,6 @@ class Widget extends \WP_Widget {
|
|
89 |
}
|
90 |
|
91 |
function setupDependencies() {
|
92 |
-
if(!is_active_widget(false, false, $this->id_base, true)) return;
|
93 |
-
|
94 |
wp_enqueue_style(
|
95 |
'mailpoet_public',
|
96 |
Env::$assets_url . '/css/' . $this->renderer->getCssAsset('public.css')
|
@@ -236,6 +232,8 @@ EOL;
|
|
236 |
* Output the widget itself.
|
237 |
*/
|
238 |
function widget($args, $instance = null) {
|
|
|
|
|
239 |
// turn $args into variables
|
240 |
extract($args);
|
241 |
|
23 |
);
|
24 |
|
25 |
$this->renderer = new \MailPoet\Config\Renderer(!WP_DEBUG, !WP_DEBUG);
|
|
|
26 |
if(!is_admin()) {
|
|
|
27 |
$this->setupIframe();
|
28 |
} else {
|
29 |
add_action('widgets_admin_page', array(
|
87 |
}
|
88 |
|
89 |
function setupDependencies() {
|
|
|
|
|
90 |
wp_enqueue_style(
|
91 |
'mailpoet_public',
|
92 |
Env::$assets_url . '/css/' . $this->renderer->getCssAsset('public.css')
|
232 |
* Output the widget itself.
|
233 |
*/
|
234 |
function widget($args, $instance = null) {
|
235 |
+
$this->setupDependencies();
|
236 |
+
|
237 |
// turn $args into variables
|
238 |
extract($args);
|
239 |
|
lib/Mailer/MailerLog.php
CHANGED
@@ -75,7 +75,7 @@ class MailerLog {
|
|
75 |
return self::resetMailerLog();
|
76 |
}
|
77 |
|
78 |
-
static function processError($operation, $error_message, $error_code = null) {
|
79 |
$mailer_log = self::getMailerLog();
|
80 |
(int)$mailer_log['retry_attempt']++;
|
81 |
$mailer_log['retry_at'] = time() + self::RETRY_INTERVAL;
|
@@ -86,7 +86,11 @@ class MailerLog {
|
|
86 |
if($error_code) {
|
87 |
$mailer_log['error']['error_code'] = $error_code;
|
88 |
}
|
89 |
-
|
|
|
|
|
|
|
|
|
90 |
return self::enforceExecutionRequirements();
|
91 |
}
|
92 |
|
75 |
return self::resetMailerLog();
|
76 |
}
|
77 |
|
78 |
+
static function processError($operation, $error_message, $error_code = null, $pause_sending = false) {
|
79 |
$mailer_log = self::getMailerLog();
|
80 |
(int)$mailer_log['retry_attempt']++;
|
81 |
$mailer_log['retry_at'] = time() + self::RETRY_INTERVAL;
|
86 |
if($error_code) {
|
87 |
$mailer_log['error']['error_code'] = $error_code;
|
88 |
}
|
89 |
+
if($pause_sending) {
|
90 |
+
self::pauseSending($mailer_log);
|
91 |
+
} else {
|
92 |
+
self::updateMailerLog($mailer_log);
|
93 |
+
}
|
94 |
return self::enforceExecutionRequirements();
|
95 |
}
|
96 |
|
lib/Models/ModelValidator.php
CHANGED
@@ -2,6 +2,8 @@
|
|
2 |
|
3 |
namespace MailPoet\Models;
|
4 |
|
|
|
|
|
5 |
if(!defined('ABSPATH')) exit;
|
6 |
|
7 |
class ModelValidator extends \Sudzy\Engine {
|
@@ -35,9 +37,11 @@ class ModelValidator extends \Sudzy\Engine {
|
|
35 |
}
|
36 |
|
37 |
function validateRenderedNewsletterBody($newsletter_body) {
|
38 |
-
|
39 |
-
$newsletter_body
|
40 |
-
|
|
|
|
|
41 |
return (is_null($newsletter_body) || (is_array($newsletter_body) && !empty($newsletter_body['html']) && !empty($newsletter_body['text'])));
|
42 |
}
|
43 |
}
|
2 |
|
3 |
namespace MailPoet\Models;
|
4 |
|
5 |
+
use MailPoet\Util\Helpers;
|
6 |
+
|
7 |
if(!defined('ABSPATH')) exit;
|
8 |
|
9 |
class ModelValidator extends \Sudzy\Engine {
|
37 |
}
|
38 |
|
39 |
function validateRenderedNewsletterBody($newsletter_body) {
|
40 |
+
if(is_serialized($newsletter_body)) {
|
41 |
+
$newsletter_body = unserialize($newsletter_body);
|
42 |
+
} else if(Helpers::isJson($newsletter_body)) {
|
43 |
+
$newsletter_body = json_decode($newsletter_body, true);
|
44 |
+
}
|
45 |
return (is_null($newsletter_body) || (is_array($newsletter_body) && !empty($newsletter_body['html']) && !empty($newsletter_body['text'])));
|
46 |
}
|
47 |
}
|
lib/Models/SendingQueue.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
namespace MailPoet\Models;
|
3 |
|
|
|
4 |
use MailPoet\WP\Emoji;
|
5 |
|
6 |
if(!defined('ABSPATH')) exit;
|
@@ -53,13 +54,14 @@ class SendingQueue extends Model {
|
|
53 |
}
|
54 |
|
55 |
function save() {
|
|
|
56 |
if(!is_serialized($this->subscribers) && !is_null($this->subscribers)) {
|
57 |
$this->set('subscribers', serialize($this->subscribers));
|
58 |
}
|
59 |
-
if(!
|
60 |
$this->set(
|
61 |
'newsletter_rendered_body',
|
62 |
-
|
63 |
);
|
64 |
}
|
65 |
// set the default priority to medium
|
@@ -84,9 +86,7 @@ class SendingQueue extends Model {
|
|
84 |
}
|
85 |
|
86 |
function getNewsletterRenderedBody($type = false) {
|
87 |
-
$rendered_newsletter = (
|
88 |
-
$this->newsletter_rendered_body :
|
89 |
-
$this->decodeEmojisInBody(unserialize($this->newsletter_rendered_body));
|
90 |
return ($type && !empty($rendered_newsletter[$type])) ?
|
91 |
$rendered_newsletter[$type] :
|
92 |
$rendered_newsletter;
|
@@ -151,7 +151,7 @@ class SendingQueue extends Model {
|
|
151 |
)
|
152 |
);
|
153 |
$this->subscribers = $subscribers;
|
154 |
-
$this->updateCount();
|
155 |
}
|
156 |
|
157 |
function updateCount() {
|
@@ -165,4 +165,14 @@ class SendingQueue extends Model {
|
|
165 |
}
|
166 |
return $this->save();
|
167 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
}
|
1 |
<?php
|
2 |
namespace MailPoet\Models;
|
3 |
|
4 |
+
use MailPoet\Util\Helpers;
|
5 |
use MailPoet\WP\Emoji;
|
6 |
|
7 |
if(!defined('ABSPATH')) exit;
|
54 |
}
|
55 |
|
56 |
function save() {
|
57 |
+
$this->newsletter_rendered_body = $this->getNewsletterRenderedBody();
|
58 |
if(!is_serialized($this->subscribers) && !is_null($this->subscribers)) {
|
59 |
$this->set('subscribers', serialize($this->subscribers));
|
60 |
}
|
61 |
+
if(!Helpers::isJson($this->newsletter_rendered_body) && !is_null($this->newsletter_rendered_body)) {
|
62 |
$this->set(
|
63 |
'newsletter_rendered_body',
|
64 |
+
json_encode($this->encodeEmojisInBody($this->newsletter_rendered_body))
|
65 |
);
|
66 |
}
|
67 |
// set the default priority to medium
|
86 |
}
|
87 |
|
88 |
function getNewsletterRenderedBody($type = false) {
|
89 |
+
$rendered_newsletter = $this->decodeRenderedNewsletterBodyObject($this->newsletter_rendered_body);
|
|
|
|
|
90 |
return ($type && !empty($rendered_newsletter[$type])) ?
|
91 |
$rendered_newsletter[$type] :
|
92 |
$rendered_newsletter;
|
151 |
)
|
152 |
);
|
153 |
$this->subscribers = $subscribers;
|
154 |
+
return $this->updateCount()->getErrors() === false;
|
155 |
}
|
156 |
|
157 |
function updateCount() {
|
165 |
}
|
166 |
return $this->save();
|
167 |
}
|
168 |
+
|
169 |
+
private function decodeRenderedNewsletterBodyObject($rendered_body) {
|
170 |
+
if(is_serialized($rendered_body)) {
|
171 |
+
return $this->decodeEmojisInBody(unserialize($rendered_body));
|
172 |
+
}
|
173 |
+
if(Helpers::isJson($rendered_body)) {
|
174 |
+
return $this->decodeEmojisInBody(json_decode($rendered_body, true));
|
175 |
+
}
|
176 |
+
return $rendered_body;
|
177 |
+
}
|
178 |
}
|
lib/Util/Helpers.php
CHANGED
@@ -5,6 +5,12 @@ class Helpers {
|
|
5 |
const DIVIDER = '***MailPoet***';
|
6 |
const LINK_TAG = 'link';
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
static function replaceLinkTags($source, $link = false, $attributes = array(), $link_tag = false) {
|
9 |
if(!$link) return $source;
|
10 |
$link_tag = ($link_tag) ? $link_tag : self::LINK_TAG;
|
5 |
const DIVIDER = '***MailPoet***';
|
6 |
const LINK_TAG = 'link';
|
7 |
|
8 |
+
static function isJson($string) {
|
9 |
+
if(!is_string($string)) return false;
|
10 |
+
json_decode($string);
|
11 |
+
return json_last_error() == JSON_ERROR_NONE;
|
12 |
+
}
|
13 |
+
|
14 |
static function replaceLinkTags($source, $link = false, $attributes = array(), $link_tag = false) {
|
15 |
if(!$link) return $source;
|
16 |
$link_tag = ($link_tag) ? $link_tag : self::LINK_TAG;
|
mailpoet.php
CHANGED
@@ -4,7 +4,7 @@ if(!defined('ABSPATH')) exit;
|
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet 3 (New)
|
7 |
-
* Version: 3.3.
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
10 |
* Author: MailPoet
|
@@ -20,7 +20,7 @@ if(!defined('ABSPATH')) exit;
|
|
20 |
*/
|
21 |
|
22 |
$mailpoet_plugin = array(
|
23 |
-
'version' => '3.3.
|
24 |
'filename' => __FILE__,
|
25 |
'path' => dirname(__FILE__),
|
26 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet 3 (New)
|
7 |
+
* Version: 3.3.4
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
10 |
* Author: MailPoet
|
20 |
*/
|
21 |
|
22 |
$mailpoet_plugin = array(
|
23 |
+
'version' => '3.3.4',
|
24 |
'filename' => __FILE__,
|
25 |
'path' => dirname(__FILE__),
|
26 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: newsletter, email, welcome email, post notification, autoresponder, signup
|
|
4 |
Requires at least: 4.7
|
5 |
Tested up to: 4.9
|
6 |
Requires PHP: 5.3
|
7 |
-
Stable tag: 3.3.
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -116,6 +116,15 @@ Stop by our [support site](https://www.mailpoet.com/support).
|
|
116 |
|
117 |
== Changelog ==
|
118 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
= 3.3.2 - 2017-12-19 =
|
120 |
* Thanked: 2017 finally saw the release of MailPoet 3 and MailPoet Sending Service. We wouldn't have done it without your patience and support, for which we are extremely grateful. Thank YOU!
|
121 |
* Wished: 2018 turns out to be an amazing year for all of our beloved and new users, and brings new features to our plugin - we've planned some great things and can't wait to implement them. Happy Holidays!
|
4 |
Requires at least: 4.7
|
5 |
Tested up to: 4.9
|
6 |
Requires PHP: 5.3
|
7 |
+
Stable tag: 3.3.4
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
116 |
|
117 |
== Changelog ==
|
118 |
|
119 |
+
= 3.3.4 - 2018-01-09 =
|
120 |
+
* Fixed: the plugin no longer spams the same post notification email to subscribers. Thank you Mark, Bruno, Peter, Aaron, PJ, Silowe, Eytan, Beverly and others for your help!
|
121 |
+
* Fixed: public assets are loaded for shortcode/PHP form placement methods. Thanks Ehsan!
|
122 |
+
|
123 |
+
= 3.3.3 - 2018-01-02 =
|
124 |
+
* Improved: Welcome emails are now sent for subscribers manually created by administrators;
|
125 |
+
* Improved: content deletion in email designer to more clearly warn about what is being deleted;
|
126 |
+
* Improved: HelpScout beacon no longer obstructs pagination in listings.
|
127 |
+
|
128 |
= 3.3.2 - 2017-12-19 =
|
129 |
* Thanked: 2017 finally saw the release of MailPoet 3 and MailPoet Sending Service. We wouldn't have done it without your patience and support, for which we are extremely grateful. Thank YOU!
|
130 |
* Wished: 2018 turns out to be an amazing year for all of our beloved and new users, and brings new features to our plugin - we've planned some great things and can't wait to implement them. Happy Holidays!
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit8ac245097030e7d5d3c594abdb1eae69::getLoader();
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit20300ca7e2a24ea15c5439594ea0ca6d
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
-
call_user_func(\Composer\Autoload\
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit20300ca7e2a24ea15c5439594ea0ca6d
|
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
-
$includeFiles = Composer\Autoload\
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
-
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
-
function
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit8ac245097030e7d5d3c594abdb1eae69
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit8ac245097030e7d5d3c594abdb1eae69', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit8ac245097030e7d5d3c594abdb1eae69', 'loadClassLoader'));
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit8ac245097030e7d5d3c594abdb1eae69::getInitializer($loader));
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit8ac245097030e7d5d3c594abdb1eae69::$files;
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
+
composerRequire8ac245097030e7d5d3c594abdb1eae69($fileIdentifier, $file);
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
+
function composerRequire8ac245097030e7d5d3c594abdb1eae69($fileIdentifier, $file)
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
@@ -984,10 +984,10 @@ class ComposerStaticInit20300ca7e2a24ea15c5439594ea0ca6d
|
|
984 |
public static function getInitializer(ClassLoader $loader)
|
985 |
{
|
986 |
return \Closure::bind(function () use ($loader) {
|
987 |
-
$loader->prefixLengthsPsr4 =
|
988 |
-
$loader->prefixDirsPsr4 =
|
989 |
-
$loader->prefixesPsr0 =
|
990 |
-
$loader->classMap =
|
991 |
|
992 |
}, null, ClassLoader::class);
|
993 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit8ac245097030e7d5d3c594abdb1eae69
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
984 |
public static function getInitializer(ClassLoader $loader)
|
985 |
{
|
986 |
return \Closure::bind(function () use ($loader) {
|
987 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit8ac245097030e7d5d3c594abdb1eae69::$prefixLengthsPsr4;
|
988 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit8ac245097030e7d5d3c594abdb1eae69::$prefixDirsPsr4;
|
989 |
+
$loader->prefixesPsr0 = ComposerStaticInit8ac245097030e7d5d3c594abdb1eae69::$prefixesPsr0;
|
990 |
+
$loader->classMap = ComposerStaticInit8ac245097030e7d5d3c594abdb1eae69::$classMap;
|
991 |
|
992 |
}, null, ClassLoader::class);
|
993 |
}
|
views/newsletter/templates/blocks/base/toolsGeneric.hbs
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
<%= source('newsletter/templates/svg/block-tools/settings-column.svg') %>
|
4 |
</a>{{/if}}{{#if tools.settings}}<a href="javascript:;" class="mailpoet_tool mailpoet_edit_block mailpoet_ignore_drag" title="<%= __('Edit settings') %>">
|
5 |
<%= source('newsletter/templates/svg/block-tools/settings.svg') %>
|
6 |
-
</a>{{/if}}{{#if tools.delete}}<div class="mailpoet_delete_block mailpoet_ignore_drag"><a href="javascript:;" class="mailpoet_tool mailpoet_delete_block_activate" title="<%= __('Delete') %>"><%= source('newsletter/templates/svg/block-tools/trash.svg') %></a><a href="javascript:;" class="
|
7 |
<%= source('newsletter/templates/svg/block-tools/duplicate.svg') %></a>{{/if}}{{#if tools.move}}<a href="javascript:;" class="mailpoet_tool mailpoet_move_block" title="<%= __('Drag to move') %>">
|
8 |
<%= source('newsletter/templates/svg/block-tools/move.svg') %>
|
9 |
</a>{{/if}}
|
3 |
<%= source('newsletter/templates/svg/block-tools/settings-column.svg') %>
|
4 |
</a>{{/if}}{{#if tools.settings}}<a href="javascript:;" class="mailpoet_tool mailpoet_edit_block mailpoet_ignore_drag" title="<%= __('Edit settings') %>">
|
5 |
<%= source('newsletter/templates/svg/block-tools/settings.svg') %>
|
6 |
+
</a>{{/if}}{{#if tools.delete}}<div class="mailpoet_delete_block mailpoet_ignore_drag"><a href="javascript:;" class="mailpoet_tool mailpoet_delete_block_activate" title="<%= __('Delete') %>"><%= source('newsletter/templates/svg/block-tools/trash.svg') %></a><a href="javascript:;" class="mailpoet_delete_block_cancel" title="<%= __('Cancel deletion') %>"><%= __('Cancel') %></a><a href="javascript:;" class="mailpoet_delete_block_confirm" title="<%= __('Confirm deletion') %>"><%= __('Delete') %></a></div>{{/if}}{{#if tools.duplicate}}<a href="javascript:;" class="mailpoet_tool mailpoet_duplicate_block" title="<%= __('Duplicate') %>">
|
7 |
<%= source('newsletter/templates/svg/block-tools/duplicate.svg') %></a>{{/if}}{{#if tools.move}}<a href="javascript:;" class="mailpoet_tool mailpoet_move_block" title="<%= __('Drag to move') %>">
|
8 |
<%= source('newsletter/templates/svg/block-tools/move.svg') %>
|
9 |
</a>{{/if}}
|
views/subscribers/subscribers.html
CHANGED
@@ -60,6 +60,7 @@
|
|
60 |
'unsubscribedOn': __('Unsubscribed on %$1s'),
|
61 |
'subscriberUpdated': __('Subscriber was updated successfully!'),
|
62 |
'subscriberAdded': __('Subscriber was added successfully!'),
|
|
|
63 |
|
64 |
'subscriber': __('Subscriber'),
|
65 |
'status': __('Status'),
|
60 |
'unsubscribedOn': __('Unsubscribed on %$1s'),
|
61 |
'subscriberUpdated': __('Subscriber was updated successfully!'),
|
62 |
'subscriberAdded': __('Subscriber was added successfully!'),
|
63 |
+
'welcomeEmailTip': __('This subscriber will receive Welcome Emails if any are active for your lists.'),
|
64 |
|
65 |
'subscriber': __('Subscriber'),
|
66 |
'status': __('Status'),
|