MailPoet Newsletters (New) - Version 3.0.0-beta.20

Version Description

  • 2017-02-23 =
  • Fixed: scheduling options are properly saved when creating a new or re-saving an existing email. Thx Oskar!;
  • Fixed: sending is not interrupted when a post included in the email is trashed. Thanks Bernhard!
Download this release

Release Info

Developer wysija
Plugin Icon 128x128 MailPoet Newsletters (New)
Version 3.0.0-beta.20
Comparing to
See all releases

Code changes from version 3.0.0-beta.19 to 3.0.0-beta.20

assets/js/form_editor.js CHANGED
@@ -6593,20 +6593,25 @@ webpackJsonp([1],{
6593
  adjustScrollWhenAboveVisible(cm, line, -height)
6594
  regLineChange(cm, no, "widget")
6595
  })
6596
- signalLater(cm, "lineWidgetCleared", cm, this)
6597
  }
6598
  };
6599
 
6600
  LineWidget.prototype.changed = function () {
 
 
6601
  var oldH = this.height, cm = this.doc.cm, line = this.line
6602
  this.height = null
6603
  var diff = widgetHeight(this) - oldH
6604
  if (!diff) { return }
6605
  updateLineHeight(line, line.height + diff)
6606
- if (cm) { runInOp(cm, function () {
6607
- cm.curOp.forceUpdate = true
6608
- adjustScrollWhenAboveVisible(cm, line, diff)
6609
- }) }
 
 
 
6610
  };
6611
  eventMixin(LineWidget)
6612
 
@@ -6632,7 +6637,7 @@ webpackJsonp([1],{
6632
  }
6633
  return true
6634
  })
6635
- signalLater(cm, "lineWidgetAdded", cm, widget)
6636
  return widget
6637
  }
6638
 
@@ -6700,7 +6705,7 @@ webpackJsonp([1],{
6700
  this.doc.cantEdit = false
6701
  if (cm) { reCheckSelection(cm.doc) }
6702
  }
6703
- if (cm) { signalLater(cm, "markerCleared", cm, this) }
6704
  if (withOp) { endOperation(cm) }
6705
  if (this.parent) { this.parent.clear() }
6706
  };
@@ -6733,6 +6738,8 @@ webpackJsonp([1],{
6733
  // Signals that the marker's widget changed, and surrounding layout
6734
  // should be recomputed.
6735
  TextMarker.prototype.changed = function () {
 
 
6736
  var pos = this.find(-1, true), widget = this, cm = this.doc.cm
6737
  if (!pos || !cm) { return }
6738
  runInOp(cm, function () {
@@ -6750,6 +6757,7 @@ webpackJsonp([1],{
6750
  if (dHeight)
6751
  { updateLineHeight(line, line.height + dHeight) }
6752
  }
 
6753
  })
6754
  };
6755
 
@@ -10317,7 +10325,7 @@ webpackJsonp([1],{
10317
 
10318
  addLegacyProps(CodeMirror)
10319
 
10320
- CodeMirror.version = "5.24.0"
10321
 
10322
  return CodeMirror;
10323
 
6593
  adjustScrollWhenAboveVisible(cm, line, -height)
6594
  regLineChange(cm, no, "widget")
6595
  })
6596
+ signalLater(cm, "lineWidgetCleared", cm, this, no)
6597
  }
6598
  };
6599
 
6600
  LineWidget.prototype.changed = function () {
6601
+ var this$1 = this;
6602
+
6603
  var oldH = this.height, cm = this.doc.cm, line = this.line
6604
  this.height = null
6605
  var diff = widgetHeight(this) - oldH
6606
  if (!diff) { return }
6607
  updateLineHeight(line, line.height + diff)
6608
+ if (cm) {
6609
+ runInOp(cm, function () {
6610
+ cm.curOp.forceUpdate = true
6611
+ adjustScrollWhenAboveVisible(cm, line, diff)
6612
+ signalLater(cm, "lineWidgetChanged", cm, this$1, lineNo(line))
6613
+ })
6614
+ }
6615
  };
6616
  eventMixin(LineWidget)
6617
 
6637
  }
6638
  return true
6639
  })
6640
+ signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle))
6641
  return widget
6642
  }
6643
 
6705
  this.doc.cantEdit = false
6706
  if (cm) { reCheckSelection(cm.doc) }
6707
  }
6708
+ if (cm) { signalLater(cm, "markerCleared", cm, this, min, max) }
6709
  if (withOp) { endOperation(cm) }
6710
  if (this.parent) { this.parent.clear() }
6711
  };
6738
  // Signals that the marker's widget changed, and surrounding layout
6739
  // should be recomputed.
6740
  TextMarker.prototype.changed = function () {
6741
+ var this$1 = this;
6742
+
6743
  var pos = this.find(-1, true), widget = this, cm = this.doc.cm
6744
  if (!pos || !cm) { return }
6745
  runInOp(cm, function () {
6757
  if (dHeight)
6758
  { updateLineHeight(line, line.height + dHeight) }
6759
  }
6760
+ signalLater(cm, "markerChanged", cm, this$1)
6761
  })
6762
  };
6763
 
10325
 
10326
  addLegacyProps(CodeMirror)
10327
 
10328
+ CodeMirror.version = "5.24.2"
10329
 
10330
  return CodeMirror;
10331
 
assets/js/mailpoet.js CHANGED
@@ -18093,7 +18093,7 @@ webpackJsonp([2],[
18093
 
18094
  /* WEBPACK VAR INJECTION */(function(global) {/*!
18095
  * Parsley.js
18096
- * Version 2.6.2 - built Wed, Jan 4th 2017, 8:58 am
18097
  * http://parsleyjs.org
18098
  * Guillaume Potier - <guillaume@wisembly.com>
18099
  * Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
@@ -18532,7 +18532,7 @@ webpackJsonp([2],[
18532
 
18533
  if (arguments.length > 3) // If more args then value, requirement, instance...
18534
  requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest
18535
- return this.fn.call(this, value, requirementFirstArg);
18536
  }
18537
 
18538
  if ($.isArray(value)) {
@@ -19437,7 +19437,7 @@ webpackJsonp([2],[
19437
  });
19438
 
19439
  $.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
19440
- field._trigger('reset');
19441
  });
19442
  });
19443
  return this;
@@ -19976,7 +19976,7 @@ webpackJsonp([2],[
19976
  ParsleyFactory.prototype = {
19977
  init: function init(options) {
19978
  this.__class__ = 'Parsley';
19979
- this.__version__ = '2.6.2';
19980
  this.__id__ = ParsleyUtils__default.generateID();
19981
 
19982
  // Pre-compute options
@@ -20098,7 +20098,7 @@ webpackJsonp([2],[
20098
  actualizeOptions: null,
20099
  _resetOptions: null,
20100
  Factory: ParsleyFactory,
20101
- version: '2.6.2'
20102
  });
20103
 
20104
  // Supplement ParsleyField and Form with ParsleyAbstract
18093
 
18094
  /* WEBPACK VAR INJECTION */(function(global) {/*!
18095
  * Parsley.js
18096
+ * Version 2.6.4 - built Thu, Feb 23rd 2017, 3:02 pm
18097
  * http://parsleyjs.org
18098
  * Guillaume Potier - <guillaume@wisembly.com>
18099
  * Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
18532
 
18533
  if (arguments.length > 3) // If more args then value, requirement, instance...
18534
  requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest
18535
+ return this.fn(value, requirementFirstArg);
18536
  }
18537
 
18538
  if ($.isArray(value)) {
19437
  });
19438
 
19439
  $.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
19440
+ field.reset();
19441
  });
19442
  });
19443
  return this;
19976
  ParsleyFactory.prototype = {
19977
  init: function init(options) {
19978
  this.__class__ = 'Parsley';
19979
+ this.__version__ = '2.6.4';
19980
  this.__id__ = ParsleyUtils__default.generateID();
19981
 
19982
  // Pre-compute options
20098
  actualizeOptions: null,
20099
  _resetOptions: null,
20100
  Factory: ParsleyFactory,
20101
+ version: '2.6.4'
20102
  });
20103
 
20104
  // Supplement ParsleyField and Form with ParsleyAbstract
assets/js/public.js CHANGED
@@ -1945,7 +1945,7 @@
1945
 
1946
  /* WEBPACK VAR INJECTION */(function(global) {/*!
1947
  * Parsley.js
1948
- * Version 2.6.2 - built Wed, Jan 4th 2017, 8:58 am
1949
  * http://parsleyjs.org
1950
  * Guillaume Potier - <guillaume@wisembly.com>
1951
  * Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
@@ -2384,7 +2384,7 @@
2384
 
2385
  if (arguments.length > 3) // If more args then value, requirement, instance...
2386
  requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest
2387
- return this.fn.call(this, value, requirementFirstArg);
2388
  }
2389
 
2390
  if ($.isArray(value)) {
@@ -3289,7 +3289,7 @@
3289
  });
3290
 
3291
  $.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
3292
- field._trigger('reset');
3293
  });
3294
  });
3295
  return this;
@@ -3828,7 +3828,7 @@
3828
  ParsleyFactory.prototype = {
3829
  init: function init(options) {
3830
  this.__class__ = 'Parsley';
3831
- this.__version__ = '2.6.2';
3832
  this.__id__ = ParsleyUtils__default.generateID();
3833
 
3834
  // Pre-compute options
@@ -3950,7 +3950,7 @@
3950
  actualizeOptions: null,
3951
  _resetOptions: null,
3952
  Factory: ParsleyFactory,
3953
- version: '2.6.2'
3954
  });
3955
 
3956
  // Supplement ParsleyField and Form with ParsleyAbstract
1945
 
1946
  /* WEBPACK VAR INJECTION */(function(global) {/*!
1947
  * Parsley.js
1948
+ * Version 2.6.4 - built Thu, Feb 23rd 2017, 3:02 pm
1949
  * http://parsleyjs.org
1950
  * Guillaume Potier - <guillaume@wisembly.com>
1951
  * Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
2384
 
2385
  if (arguments.length > 3) // If more args then value, requirement, instance...
2386
  requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest
2387
+ return this.fn(value, requirementFirstArg);
2388
  }
2389
 
2390
  if ($.isArray(value)) {
3289
  });
3290
 
3291
  $.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
3292
+ field.reset();
3293
  });
3294
  });
3295
  return this;
3828
  ParsleyFactory.prototype = {
3829
  init: function init(options) {
3830
  this.__class__ = 'Parsley';
3831
+ this.__version__ = '2.6.4';
3832
  this.__id__ = ParsleyUtils__default.generateID();
3833
 
3834
  // Pre-compute options
3950
  actualizeOptions: null,
3951
  _resetOptions: null,
3952
  Factory: ParsleyFactory,
3953
+ version: '2.6.4'
3954
  });
3955
 
3956
  // Supplement ParsleyField and Form with ParsleyAbstract
lang/mailpoet.pot CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
7
- "POT-Creation-Date: 2017-02-21 17:17:45+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -26,11 +26,11 @@ msgstr ""
26
  "X-Poedit-Bookmarks: \n"
27
  "X-Textdomain-Support: yes\n"
28
 
29
- #: lib/API/API.php:41 lib/API/API.php:67
30
  msgid "Invalid request"
31
  msgstr ""
32
 
33
- #: lib/API/API.php:114
34
  msgid "You do not have the required permissions."
35
  msgstr ""
36
 
@@ -74,12 +74,12 @@ msgstr ""
74
  msgid "Check your inbox or spam folder to confirm your subscription."
75
  msgstr ""
76
 
77
- #: lib/API/Endpoints/Forms.php:259 lib/API/Endpoints/Newsletters.php:188
78
  #: lib/API/Endpoints/Segments.php:119
79
  msgid "Copy of %s"
80
  msgstr ""
81
 
82
- #: lib/API/Endpoints/Mailer.php:26 lib/API/Endpoints/Newsletters.php:286
83
  msgid "The email could not be sent: %s"
84
  msgstr ""
85
 
@@ -88,24 +88,24 @@ msgstr ""
88
  msgid "This template does not exist."
89
  msgstr ""
90
 
91
- #: lib/API/Endpoints/Newsletters.php:28 lib/API/Endpoints/Newsletters.php:117
92
- #: lib/API/Endpoints/Newsletters.php:138 lib/API/Endpoints/Newsletters.php:154
93
- #: lib/API/Endpoints/Newsletters.php:170 lib/API/Endpoints/Newsletters.php:184
94
- #: lib/API/Endpoints/Newsletters.php:216 lib/API/Endpoints/Newsletters.php:247
95
  #: lib/API/Endpoints/SendingQueue.php:28 lib/API/Endpoints/SendingQueue.php:115
96
  #: lib/API/Endpoints/SendingQueue.php:141
97
  msgid "This newsletter does not exist."
98
  msgstr ""
99
 
100
- #: lib/API/Endpoints/Newsletters.php:108
101
  msgid "You need to specify a status."
102
  msgstr ""
103
 
104
- #: lib/API/Endpoints/Newsletters.php:207
105
  msgid "Newsletter data is missing."
106
  msgstr ""
107
 
108
- #: lib/API/Endpoints/Newsletters.php:238
109
  msgid "Please specify receiver information."
110
  msgstr ""
111
 
@@ -1487,6 +1487,10 @@ msgstr ""
1487
  msgid "Missing or invalid subscriber data."
1488
  msgstr ""
1489
 
 
 
 
 
1490
  #: lib/Subscribers/ImportExport/Import/MailChimp.php:128
1491
  msgid "Invalid API Key."
1492
  msgstr ""
@@ -1626,19 +1630,19 @@ msgstr ""
1626
  msgid "Accidentally unsubscribed?"
1627
  msgstr ""
1628
 
1629
- #: lib/Twig/Functions.php:78 views/settings/mta.html:1049
1630
  msgid "every minute"
1631
  msgstr ""
1632
 
1633
- #: lib/Twig/Functions.php:79 views/settings/mta.html:1050
1634
  msgid "every %1$d minutes"
1635
  msgstr ""
1636
 
1637
- #: lib/Twig/Functions.php:80 views/settings/mta.html:1051
1638
  msgid "every hour"
1639
  msgstr ""
1640
 
1641
- #: lib/Twig/Functions.php:81 views/settings/mta.html:1052
1642
  msgid "every %1$d hours"
1643
  msgstr ""
1644
 
@@ -1723,8 +1727,8 @@ msgstr ""
1723
 
1724
  #: views/form/editor.html:195
1725
  #: views/newsletter/templates/components/sidebar/preview.hbs:2
1726
- #: views/newsletters.html:101 views/settings/basics.html:242
1727
- #: views/settings/basics.html:299 views/settings/signup.html:177
1728
  msgid "Preview"
1729
  msgstr ""
1730
 
@@ -3230,7 +3234,7 @@ msgstr ""
3230
  msgid "john.doe@email.com"
3231
  msgstr ""
3232
 
3233
- #: views/newsletters.html:158 views/settings/basics.html:29
3234
  #: views/settings/signup.html:85
3235
  msgid "Reply-to"
3236
  msgstr ""
@@ -3631,128 +3635,128 @@ msgid ""
3631
  "(newsletters, statistics, subscribers, etc.)."
3632
  msgstr ""
3633
 
3634
- #: views/settings/basics.html:6
3635
  msgid "Default sender"
3636
  msgstr ""
3637
 
3638
- #: views/settings/basics.html:9
3639
  msgid "These email addresses will be selected by default for each new email."
3640
  msgstr ""
3641
 
3642
- #: views/settings/basics.html:15 views/settings/signup.html:59
3643
  msgid "From"
3644
  msgstr ""
3645
 
3646
- #: views/settings/basics.html:20 views/settings/basics.html:34
3647
  #: views/settings/signup.html:69 views/settings/signup.html:95
3648
  msgid "Your name"
3649
  msgstr ""
3650
 
3651
- #: views/settings/basics.html:47
3652
  msgid "Email notifications"
3653
  msgstr ""
3654
 
3655
- #: views/settings/basics.html:50
3656
  msgid ""
3657
  "These email addresses will receive notifications (separate each address "
3658
  "with a comma)."
3659
  msgstr ""
3660
 
3661
- #: views/settings/basics.html:68
3662
  msgid "When someone subscribes"
3663
  msgstr ""
3664
 
3665
- #: views/settings/basics.html:78
3666
  msgid "When someone unsubscribes"
3667
  msgstr ""
3668
 
3669
- #: views/settings/basics.html:88
3670
  msgid "Subscribe in comments"
3671
  msgstr ""
3672
 
3673
- #: views/settings/basics.html:91
3674
  msgid "Visitors that comment on a post can subscribe to your list via a checkbox."
3675
  msgstr ""
3676
 
3677
- #: views/settings/basics.html:115 views/settings/basics.html:179
3678
  msgid "Yes, add me to your mailing list"
3679
  msgstr ""
3680
 
3681
- #: views/settings/basics.html:120 views/settings/basics.html:184
3682
  msgid "Users will be subscribed to these lists:"
3683
  msgstr ""
3684
 
3685
- #: views/settings/basics.html:126 views/settings/basics.html:190
3686
  msgid "Choose a list"
3687
  msgstr ""
3688
 
3689
- #: views/settings/basics.html:148
3690
  msgid "Subscribe in registration form"
3691
  msgstr ""
3692
 
3693
- #: views/settings/basics.html:151
3694
  msgid ""
3695
  "Allow users who register as a WordPress user on your website to subscribe "
3696
  "to a MailPoet list (in addition to the \"WordPress Users\" list)."
3697
  msgstr ""
3698
 
3699
- #: views/settings/basics.html:206
3700
  msgid "Registration is disabled on this site."
3701
  msgstr ""
3702
 
3703
- #: views/settings/basics.html:215
3704
  msgid "Manage Subscription page"
3705
  msgstr ""
3706
 
3707
- #: views/settings/basics.html:218
3708
  msgid ""
3709
  "When your subscribers click the \"Manage your subscription\" link, they "
3710
  "will be directed to this page."
3711
  msgstr ""
3712
 
3713
- #: views/settings/basics.html:241 views/settings/basics.html:298
3714
  #: views/settings/signup.html:176
3715
  msgid "Preview page"
3716
  msgstr ""
3717
 
3718
- #: views/settings/basics.html:245
3719
  msgid "Subscribers can choose from these lists:"
3720
  msgstr ""
3721
 
3722
- #: views/settings/basics.html:251 views/settings/basics.html:329
3723
- #: views/settings/basics.html:365
3724
  msgid "Leave this field empty to display all lists"
3725
  msgstr ""
3726
 
3727
- #: views/settings/basics.html:270
3728
  msgid "Unsubscribe page"
3729
  msgstr ""
3730
 
3731
- #: views/settings/basics.html:273
3732
  msgid ""
3733
  "When your subscribers click the \"Unsubscribe\" link, they will be directed "
3734
  "to this page."
3735
  msgstr ""
3736
 
3737
- #: views/settings/basics.html:275
3738
  msgid ""
3739
  "If you want to use a custom Unsubscribe page, simply paste this shortcode "
3740
  "on to a WordPress page: [mailpoet_manage text=\"Manage your subscription\"]"
3741
  msgstr ""
3742
 
3743
- #: views/settings/basics.html:307
3744
  msgid "Archive page shortcode"
3745
  msgstr ""
3746
 
3747
- #: views/settings/basics.html:310
3748
  msgid "Paste this shortcode on a page to display a list of past newsletters."
3749
  msgstr ""
3750
 
3751
- #: views/settings/basics.html:343
3752
  msgid "Shortcode to display total number of subscribers"
3753
  msgstr ""
3754
 
3755
- #: views/settings/basics.html:346
3756
  msgid ""
3757
  "Paste this shortcode on a post or page to display the total number of "
3758
  "confirmed subscribers."
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
7
+ "POT-Creation-Date: 2017-02-23 23:10:22+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
26
  "X-Poedit-Bookmarks: \n"
27
  "X-Textdomain-Support: yes\n"
28
 
29
+ #: lib/API/API.php:50 lib/API/API.php:77
30
  msgid "Invalid request"
31
  msgstr ""
32
 
33
+ #: lib/API/API.php:131
34
  msgid "You do not have the required permissions."
35
  msgstr ""
36
 
74
  msgid "Check your inbox or spam folder to confirm your subscription."
75
  msgstr ""
76
 
77
+ #: lib/API/Endpoints/Forms.php:259 lib/API/Endpoints/Newsletters.php:187
78
  #: lib/API/Endpoints/Segments.php:119
79
  msgid "Copy of %s"
80
  msgstr ""
81
 
82
+ #: lib/API/Endpoints/Mailer.php:26 lib/API/Endpoints/Newsletters.php:285
83
  msgid "The email could not be sent: %s"
84
  msgstr ""
85
 
88
  msgid "This template does not exist."
89
  msgstr ""
90
 
91
+ #: lib/API/Endpoints/Newsletters.php:28 lib/API/Endpoints/Newsletters.php:116
92
+ #: lib/API/Endpoints/Newsletters.php:137 lib/API/Endpoints/Newsletters.php:153
93
+ #: lib/API/Endpoints/Newsletters.php:169 lib/API/Endpoints/Newsletters.php:183
94
+ #: lib/API/Endpoints/Newsletters.php:215 lib/API/Endpoints/Newsletters.php:246
95
  #: lib/API/Endpoints/SendingQueue.php:28 lib/API/Endpoints/SendingQueue.php:115
96
  #: lib/API/Endpoints/SendingQueue.php:141
97
  msgid "This newsletter does not exist."
98
  msgstr ""
99
 
100
+ #: lib/API/Endpoints/Newsletters.php:107
101
  msgid "You need to specify a status."
102
  msgstr ""
103
 
104
+ #: lib/API/Endpoints/Newsletters.php:206
105
  msgid "Newsletter data is missing."
106
  msgstr ""
107
 
108
+ #: lib/API/Endpoints/Newsletters.php:237
109
  msgid "Please specify receiver information."
110
  msgstr ""
111
 
1487
  msgid "Missing or invalid subscriber data."
1488
  msgstr ""
1489
 
1490
+ #: lib/Subscribers/ImportExport/Import/Import.php:111
1491
+ msgid "Unable to save imported subscribers."
1492
+ msgstr ""
1493
+
1494
  #: lib/Subscribers/ImportExport/Import/MailChimp.php:128
1495
  msgid "Invalid API Key."
1496
  msgstr ""
1630
  msgid "Accidentally unsubscribed?"
1631
  msgstr ""
1632
 
1633
+ #: lib/Twig/Functions.php:83 views/settings/mta.html:1049
1634
  msgid "every minute"
1635
  msgstr ""
1636
 
1637
+ #: lib/Twig/Functions.php:84 views/settings/mta.html:1050
1638
  msgid "every %1$d minutes"
1639
  msgstr ""
1640
 
1641
+ #: lib/Twig/Functions.php:85 views/settings/mta.html:1051
1642
  msgid "every hour"
1643
  msgstr ""
1644
 
1645
+ #: lib/Twig/Functions.php:86 views/settings/mta.html:1052
1646
  msgid "every %1$d hours"
1647
  msgstr ""
1648
 
1727
 
1728
  #: views/form/editor.html:195
1729
  #: views/newsletter/templates/components/sidebar/preview.hbs:2
1730
+ #: views/newsletters.html:101 views/settings/basics.html:243
1731
+ #: views/settings/basics.html:300 views/settings/signup.html:177
1732
  msgid "Preview"
1733
  msgstr ""
1734
 
3234
  msgid "john.doe@email.com"
3235
  msgstr ""
3236
 
3237
+ #: views/newsletters.html:158 views/settings/basics.html:30
3238
  #: views/settings/signup.html:85
3239
  msgid "Reply-to"
3240
  msgstr ""
3635
  "(newsletters, statistics, subscribers, etc.)."
3636
  msgstr ""
3637
 
3638
+ #: views/settings/basics.html:7
3639
  msgid "Default sender"
3640
  msgstr ""
3641
 
3642
+ #: views/settings/basics.html:10
3643
  msgid "These email addresses will be selected by default for each new email."
3644
  msgstr ""
3645
 
3646
+ #: views/settings/basics.html:16 views/settings/signup.html:59
3647
  msgid "From"
3648
  msgstr ""
3649
 
3650
+ #: views/settings/basics.html:21 views/settings/basics.html:35
3651
  #: views/settings/signup.html:69 views/settings/signup.html:95
3652
  msgid "Your name"
3653
  msgstr ""
3654
 
3655
+ #: views/settings/basics.html:48
3656
  msgid "Email notifications"
3657
  msgstr ""
3658
 
3659
+ #: views/settings/basics.html:51
3660
  msgid ""
3661
  "These email addresses will receive notifications (separate each address "
3662
  "with a comma)."
3663
  msgstr ""
3664
 
3665
+ #: views/settings/basics.html:69
3666
  msgid "When someone subscribes"
3667
  msgstr ""
3668
 
3669
+ #: views/settings/basics.html:79
3670
  msgid "When someone unsubscribes"
3671
  msgstr ""
3672
 
3673
+ #: views/settings/basics.html:89
3674
  msgid "Subscribe in comments"
3675
  msgstr ""
3676
 
3677
+ #: views/settings/basics.html:92
3678
  msgid "Visitors that comment on a post can subscribe to your list via a checkbox."
3679
  msgstr ""
3680
 
3681
+ #: views/settings/basics.html:116 views/settings/basics.html:180
3682
  msgid "Yes, add me to your mailing list"
3683
  msgstr ""
3684
 
3685
+ #: views/settings/basics.html:121 views/settings/basics.html:185
3686
  msgid "Users will be subscribed to these lists:"
3687
  msgstr ""
3688
 
3689
+ #: views/settings/basics.html:127 views/settings/basics.html:191
3690
  msgid "Choose a list"
3691
  msgstr ""
3692
 
3693
+ #: views/settings/basics.html:149
3694
  msgid "Subscribe in registration form"
3695
  msgstr ""
3696
 
3697
+ #: views/settings/basics.html:152
3698
  msgid ""
3699
  "Allow users who register as a WordPress user on your website to subscribe "
3700
  "to a MailPoet list (in addition to the \"WordPress Users\" list)."
3701
  msgstr ""
3702
 
3703
+ #: views/settings/basics.html:207
3704
  msgid "Registration is disabled on this site."
3705
  msgstr ""
3706
 
3707
+ #: views/settings/basics.html:216
3708
  msgid "Manage Subscription page"
3709
  msgstr ""
3710
 
3711
+ #: views/settings/basics.html:219
3712
  msgid ""
3713
  "When your subscribers click the \"Manage your subscription\" link, they "
3714
  "will be directed to this page."
3715
  msgstr ""
3716
 
3717
+ #: views/settings/basics.html:242 views/settings/basics.html:299
3718
  #: views/settings/signup.html:176
3719
  msgid "Preview page"
3720
  msgstr ""
3721
 
3722
+ #: views/settings/basics.html:246
3723
  msgid "Subscribers can choose from these lists:"
3724
  msgstr ""
3725
 
3726
+ #: views/settings/basics.html:252 views/settings/basics.html:330
3727
+ #: views/settings/basics.html:366
3728
  msgid "Leave this field empty to display all lists"
3729
  msgstr ""
3730
 
3731
+ #: views/settings/basics.html:271
3732
  msgid "Unsubscribe page"
3733
  msgstr ""
3734
 
3735
+ #: views/settings/basics.html:274
3736
  msgid ""
3737
  "When your subscribers click the \"Unsubscribe\" link, they will be directed "
3738
  "to this page."
3739
  msgstr ""
3740
 
3741
+ #: views/settings/basics.html:276
3742
  msgid ""
3743
  "If you want to use a custom Unsubscribe page, simply paste this shortcode "
3744
  "on to a WordPress page: [mailpoet_manage text=\"Manage your subscription\"]"
3745
  msgstr ""
3746
 
3747
+ #: views/settings/basics.html:308
3748
  msgid "Archive page shortcode"
3749
  msgstr ""
3750
 
3751
+ #: views/settings/basics.html:311
3752
  msgid "Paste this shortcode on a page to display a list of past newsletters."
3753
  msgstr ""
3754
 
3755
+ #: views/settings/basics.html:344
3756
  msgid "Shortcode to display total number of subscribers"
3757
  msgstr ""
3758
 
3759
+ #: views/settings/basics.html:347
3760
  msgid ""
3761
  "Paste this shortcode on a post or page to display the total number of "
3762
  "confirmed subscribers."
lib/API/API.php CHANGED
@@ -1,5 +1,7 @@
1
  <?php
2
  namespace MailPoet\API;
 
 
3
  use MailPoet\Util\Security;
4
 
5
  if(!defined('ABSPATH')) exit;
@@ -9,9 +11,14 @@ class API {
9
  private $_method;
10
  private $_token;
11
 
 
12
  private $_endpoint_class;
13
  private $_data = array();
14
 
 
 
 
 
15
  function init() {
16
  // Admin Security token
17
  add_action(
@@ -33,7 +40,9 @@ class API {
33
  }
34
 
35
  function setupAjax() {
36
- $this->getRequestData();
 
 
37
 
38
  if($this->checkToken() === false) {
39
  $error_response = new ErrorResponse(
@@ -46,18 +55,19 @@ class API {
46
  $error_response->send();
47
  }
48
 
49
- $this->processRoute();
 
50
  }
51
 
52
- function getRequestData() {
53
- $this->_endpoint = isset($_POST['endpoint'])
54
- ? trim($_POST['endpoint'])
55
  : null;
56
- $this->_method = isset($_POST['method'])
57
- ? trim($_POST['method'])
58
  : null;
59
- $this->_token = isset($_POST['token'])
60
- ? trim($_POST['token'])
61
  : null;
62
 
63
  if(!$this->_endpoint || !$this->_method) {
@@ -71,12 +81,15 @@ class API {
71
  );
72
  $error_response->send();
73
  } else {
74
- $this->_endpoint_class = (
75
- __NAMESPACE__."\\Endpoints\\".ucfirst($this->_endpoint)
76
- );
 
 
 
77
 
78
- $this->_data = isset($_POST['data'])
79
- ? stripslashes_deep($_POST['data'])
80
  : array();
81
 
82
  // remove reserved keywords from data
@@ -98,6 +111,10 @@ class API {
98
 
99
  function processRoute() {
100
  try {
 
 
 
 
101
  $endpoint = new $this->_endpoint_class();
102
 
103
  // check the accessibility of the requested endpoint's action
@@ -119,17 +136,17 @@ class API {
119
  array(),
120
  Response::STATUS_FORBIDDEN
121
  );
122
- $error_response->send();
123
  }
124
  }
125
 
126
  $response = $endpoint->{$this->_method}($this->_data);
127
- $response->send();
128
  } catch(\Exception $e) {
129
  $error_response = new ErrorResponse(
130
  array($e->getCode() => $e->getMessage())
131
  );
132
- $error_response->send();
133
  }
134
  }
135
 
@@ -149,4 +166,12 @@ class API {
149
  $global .= '</script>';
150
  echo $global;
151
  }
 
 
 
 
 
 
 
 
152
  }
1
  <?php
2
  namespace MailPoet\API;
3
+
4
+ use MailPoet\Util\Helpers;
5
  use MailPoet\Util\Security;
6
 
7
  if(!defined('ABSPATH')) exit;
11
  private $_method;
12
  private $_token;
13
 
14
+ private $_endpoint_namespaces = array();
15
  private $_endpoint_class;
16
  private $_data = array();
17
 
18
+ function __construct() {
19
+ $this->addEndpointNamespace(__NAMESPACE__ . "\\Endpoints");
20
+ }
21
+
22
  function init() {
23
  // Admin Security token
24
  add_action(
40
  }
41
 
42
  function setupAjax() {
43
+ do_action('mailpoet_api_setup', array($this));
44
+
45
+ $this->getRequestData($_POST);
46
 
47
  if($this->checkToken() === false) {
48
  $error_response = new ErrorResponse(
55
  $error_response->send();
56
  }
57
 
58
+ $response = $this->processRoute();
59
+ $response->send();
60
  }
61
 
62
+ function getRequestData($data) {
63
+ $this->_endpoint = isset($data['endpoint'])
64
+ ? Helpers::underscoreToCamelCase(trim($data['endpoint']))
65
  : null;
66
+ $this->_method = isset($data['method'])
67
+ ? Helpers::underscoreToCamelCase(trim($data['method']))
68
  : null;
69
+ $this->_token = isset($data['token'])
70
+ ? trim($data['token'])
71
  : null;
72
 
73
  if(!$this->_endpoint || !$this->_method) {
81
  );
82
  $error_response->send();
83
  } else {
84
+ foreach($this->_endpoint_namespaces as $namespace) {
85
+ $class_name = $namespace . "\\" . ucfirst($this->_endpoint);
86
+ if(class_exists($class_name)) {
87
+ $this->_endpoint_class = $class_name;
88
+ }
89
+ }
90
 
91
+ $this->_data = isset($data['data'])
92
+ ? stripslashes_deep($data['data'])
93
  : array();
94
 
95
  // remove reserved keywords from data
111
 
112
  function processRoute() {
113
  try {
114
+ if(empty($this->_endpoint_class)) {
115
+ throw new \Exception('Invalid endpoint');
116
+ }
117
+
118
  $endpoint = new $this->_endpoint_class();
119
 
120
  // check the accessibility of the requested endpoint's action
136
  array(),
137
  Response::STATUS_FORBIDDEN
138
  );
139
+ return $error_response;
140
  }
141
  }
142
 
143
  $response = $endpoint->{$this->_method}($this->_data);
144
+ return $response;
145
  } catch(\Exception $e) {
146
  $error_response = new ErrorResponse(
147
  array($e->getCode() => $e->getMessage())
148
  );
149
+ return $error_response;
150
  }
151
  }
152
 
166
  $global .= '</script>';
167
  echo $global;
168
  }
169
+
170
+ function addEndpointNamespace($namespace) {
171
+ $this->_endpoint_namespaces[] = $namespace;
172
+ }
173
+
174
+ function getEndpointNamespaces() {
175
+ return $this->_endpoint_namespaces;
176
+ }
177
  }
lib/API/Endpoints/Newsletters.php CHANGED
@@ -70,21 +70,20 @@ class Newsletters extends APIEndpoint {
70
  }
71
 
72
  if(!empty($options)) {
73
- NewsletterOption::where('newsletter_id', $newsletter->id)
74
- ->deleteMany();
75
-
76
  $option_fields = NewsletterOptionField::where(
77
  'newsletter_type',
78
- $data['type']
79
- )->findArray();
80
 
81
  foreach($option_fields as $option_field) {
82
- if(isset($options[$option_field['name']])) {
83
- $relation = NewsletterOption::create();
84
- $relation->newsletter_id = $newsletter->id;
85
- $relation->option_field_id = $option_field['id'];
86
- $relation->value = $options[$option_field['name']];
87
- $relation->save();
 
 
88
  }
89
  }
90
  }
@@ -434,4 +433,4 @@ class Newsletters extends APIEndpoint {
434
  );
435
  }
436
  }
437
- }
70
  }
71
 
72
  if(!empty($options)) {
 
 
 
73
  $option_fields = NewsletterOptionField::where(
74
  'newsletter_type',
75
+ $newsletter->type
76
+ )->findMany();
77
 
78
  foreach($option_fields as $option_field) {
79
+ if(isset($options[$option_field->name])) {
80
+ $newsletter_option = NewsletterOption::createOrUpdate(
81
+ array(
82
+ 'newsletter_id' => $newsletter->id,
83
+ 'option_field_id' => $option_field->id,
84
+ 'value' => $options[$option_field->name]
85
+ )
86
+ );
87
  }
88
  }
89
  }
433
  );
434
  }
435
  }
436
+ }
lib/Models/NewsletterOption.php CHANGED
@@ -5,4 +5,20 @@ if(!defined('ABSPATH')) exit;
5
 
6
  class NewsletterOption extends Model {
7
  public static $_table = MP_NEWSLETTER_OPTION_TABLE;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  }
5
 
6
  class NewsletterOption extends Model {
7
  public static $_table = MP_NEWSLETTER_OPTION_TABLE;
8
+
9
+ static function createOrUpdate($data = array()) {
10
+ if(!is_array($data) || empty($data['newsletter_id']) || empty($data['option_field_id'])) return;
11
+
12
+ $newsletter_option = self::where('option_field_id', $data['option_field_id'])
13
+ ->where('newsletter_id', $data['newsletter_id'])
14
+ ->findOne();
15
+
16
+ if(empty($newsletter_option)) $newsletter_option = self::create();
17
+
18
+ $newsletter_option->newsletter_id = $data['newsletter_id'];
19
+ $newsletter_option->option_field_id = $data['option_field_id'];
20
+ $newsletter_option->value = $data['value'];
21
+ $newsletter_option->save();
22
+ return $newsletter_option;
23
+ }
24
  }
lib/Newsletter/Shortcodes/Categories/Newsletter.php CHANGED
@@ -51,7 +51,7 @@ class Newsletter {
51
  'order' => 'DESC'
52
  )
53
  );
54
- return (count($posts)) ?
55
  $posts->posts[0]->to_array() :
56
  false;
57
  }
51
  'order' => 'DESC'
52
  )
53
  );
54
+ return (!empty($posts->posts[0])) ?
55
  $posts->posts[0]->to_array() :
56
  false;
57
  }
lib/Subscribers/ImportExport/Import/Import.php CHANGED
@@ -108,7 +108,7 @@ class Import {
108
  }
109
  }
110
  } catch(\Exception $e) {
111
- throw new \Exception($e->getMessage());
112
  }
113
  $import_factory = new ImportExportFactory('import');
114
  $segments = $import_factory->getSegments();
108
  }
109
  }
110
  } catch(\Exception $e) {
111
+ throw new \Exception(__('Unable to save imported subscribers.', 'mailpoet'));
112
  }
113
  $import_factory = new ImportExportFactory('import');
114
  $segments = $import_factory->getSegments();
lib/Twig/Functions.php CHANGED
@@ -65,6 +65,11 @@ class Functions extends \Twig_Extension {
65
  'wp_datetime_format',
66
  array($this, 'getWPDateTimeFormat'),
67
  array('is_safe' => array('all'))
 
 
 
 
 
68
  )
69
  );
70
  }
65
  'wp_datetime_format',
66
  array($this, 'getWPDateTimeFormat'),
67
  array('is_safe' => array('all'))
68
+ ),
69
+ new \Twig_SimpleFunction(
70
+ 'do_action',
71
+ 'do_action',
72
+ array('is_safe' => array('all'))
73
  )
74
  );
75
  }
mailpoet.php CHANGED
@@ -4,7 +4,7 @@ if(!defined('ABSPATH')) exit;
4
 
5
  /*
6
  * Plugin Name: MailPoet
7
- * Version: 3.0.0-beta.19
8
  * Plugin URI: http://www.mailpoet.com
9
  * Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
10
  * Author: MailPoet
@@ -21,7 +21,7 @@ if(!defined('ABSPATH')) exit;
21
  */
22
 
23
  $mailpoet_plugin = array(
24
- 'version' => '3.0.0-beta.19',
25
  'filename' => __FILE__,
26
  'path' => dirname(__FILE__),
27
  'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
4
 
5
  /*
6
  * Plugin Name: MailPoet
7
+ * Version: 3.0.0-beta.20
8
  * Plugin URI: http://www.mailpoet.com
9
  * Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
10
  * Author: MailPoet
21
  */
22
 
23
  $mailpoet_plugin = array(
24
+ 'version' => '3.0.0-beta.20',
25
  'filename' => __FILE__,
26
  'path' => dirname(__FILE__),
27
  'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: mailpoet, wysija
3
  Tags: newsletter, email, welcome email, post notification, autoresponder, signup, smtp
4
  Requires at least: 4.6
5
  Tested up to: 4.7.2
6
- Stable tag: 3.0.0-beta.19
7
  Create and send beautiful emails and newsletters from WordPress.
8
 
9
  == Description ==
@@ -83,6 +83,10 @@ Our [support site](https://docs.mailpoet.com/) has plenty of articles. You can w
83
 
84
  == Changelog ==
85
 
 
 
 
 
86
  = 3.0.0-beta.19 - 2017-02-21 =
87
  * Improved: import uses stricter email validation rules. Kudos Oskar;
88
  * Improved: database is cleaned up after deleting subscribers. Thx Eric;
3
  Tags: newsletter, email, welcome email, post notification, autoresponder, signup, smtp
4
  Requires at least: 4.6
5
  Tested up to: 4.7.2
6
+ Stable tag: 3.0.0-beta.20
7
  Create and send beautiful emails and newsletters from WordPress.
8
 
9
  == Description ==
83
 
84
  == Changelog ==
85
 
86
+ = 3.0.0-beta.20 - 2017-02-23 =
87
+ * Fixed: scheduling options are properly saved when creating a new or re-saving an existing email. Thx Oskar!;
88
+ * Fixed: sending is not interrupted when a post included in the email is trashed. Thanks Bernhard!
89
+
90
  = 3.0.0-beta.19 - 2017-02-21 =
91
  * Improved: import uses stricter email validation rules. Kudos Oskar;
92
  * Improved: database is cleaned up after deleting subscribers. Thx Eric;
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit2a66e8879c6d71d61f9412a09ab2b6c5::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit597ecaac233da259c5e6118bed1a4457::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit2a66e8879c6d71d61f9412a09ab2b6c5
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit2a66e8879c6d71d61f9412a09ab2b6c5
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit2a66e8879c6d71d61f9412a09ab2b6c5', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit2a66e8879c6d71d61f9412a09ab2b6c5', '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\ComposerStaticInit2a66e8879c6d71d61f9412a09ab2b6c5::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit2a66e8879c6d71d61f9412a09ab2b6c5
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
- $includeFiles = Composer\Autoload\ComposerStaticInit2a66e8879c6d71d61f9412a09ab2b6c5::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
- composerRequire2a66e8879c6d71d61f9412a09ab2b6c5($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
- function composerRequire2a66e8879c6d71d61f9412a09ab2b6c5($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit597ecaac233da259c5e6118bed1a4457
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit597ecaac233da259c5e6118bed1a4457', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit597ecaac233da259c5e6118bed1a4457', '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\ComposerStaticInit597ecaac233da259c5e6118bed1a4457::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\ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
+ composerRequire597ecaac233da259c5e6118bed1a4457($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
+ function composerRequire597ecaac233da259c5e6118bed1a4457($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 ComposerStaticInit2a66e8879c6d71d61f9412a09ab2b6c5
8
  {
9
  public static $files = array (
10
  '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
@@ -608,10 +608,10 @@ class ComposerStaticInit2a66e8879c6d71d61f9412a09ab2b6c5
608
  public static function getInitializer(ClassLoader $loader)
609
  {
610
  return \Closure::bind(function () use ($loader) {
611
- $loader->prefixLengthsPsr4 = ComposerStaticInit2a66e8879c6d71d61f9412a09ab2b6c5::$prefixLengthsPsr4;
612
- $loader->prefixDirsPsr4 = ComposerStaticInit2a66e8879c6d71d61f9412a09ab2b6c5::$prefixDirsPsr4;
613
- $loader->prefixesPsr0 = ComposerStaticInit2a66e8879c6d71d61f9412a09ab2b6c5::$prefixesPsr0;
614
- $loader->classMap = ComposerStaticInit2a66e8879c6d71d61f9412a09ab2b6c5::$classMap;
615
 
616
  }, null, ClassLoader::class);
617
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit597ecaac233da259c5e6118bed1a4457
8
  {
9
  public static $files = array (
10
  '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
608
  public static function getInitializer(ClassLoader $loader)
609
  {
610
  return \Closure::bind(function () use ($loader) {
611
+ $loader->prefixLengthsPsr4 = ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$prefixLengthsPsr4;
612
+ $loader->prefixDirsPsr4 = ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$prefixDirsPsr4;
613
+ $loader->prefixesPsr0 = ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$prefixesPsr0;
614
+ $loader->classMap = ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$classMap;
615
 
616
  }, null, ClassLoader::class);
617
  }
vendor/sebastian/index.php ADDED
File without changes
views/settings/basics.html CHANGED
@@ -1,5 +1,6 @@
1
  <table class="form-table">
2
  <tbody>
 
3
  <tr>
4
  <th scope="row">
5
  <label for="settings[from_name]">
1
  <table class="form-table">
2
  <tbody>
3
+ <%= do_action('mailpoet_settings_basics_before') %>
4
  <tr>
5
  <th scope="row">
6
  <label for="settings[from_name]">