Version Description
- 2020-03-23 =
- Fixed: Emptying trash won't delete all newsletters anymore. Sorry about that
Download this release
Release Info
| Developer | wysija |
| Plugin | |
| Version | 3.46.5 |
| Comparing to | |
| See all releases | |
Code changes from version 3.46.4 to 3.46.5
- lang/mailpoet-it_IT.mo +0 -0
- lang/mailpoet-pt_PT.mo +0 -0
- lang/mailpoet.pot +46 -39
- lib/Models/Newsletter.php +248 -0
- mailpoet.php +2 -2
- readme.txt +4 -1
- vendor-prefixed/autoload.php +1 -1
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +4 -4
lang/mailpoet-it_IT.mo
CHANGED
|
Binary file
|
lang/mailpoet-pt_PT.mo
CHANGED
|
Binary file
|
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: 2020-03-
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=utf-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
|
@@ -1918,14 +1918,15 @@ msgid "Please specify a type."
|
|
| 1918 |
msgstr ""
|
| 1919 |
|
| 1920 |
#: lib/Models/DynamicSegment.php:69 lib/Models/Form.php:110
|
| 1921 |
-
#: lib/Models/
|
| 1922 |
-
#: lib/Models/Subscriber.php:244
|
| 1923 |
#: lib/Newsletter/Listing/NewsletterListingRepository.php:104
|
| 1924 |
msgid "All"
|
| 1925 |
msgstr ""
|
| 1926 |
|
| 1927 |
#: lib/Models/DynamicSegment.php:74 lib/Models/Form.php:115
|
| 1928 |
-
#: lib/Models/
|
|
|
|
| 1929 |
#: lib/Newsletter/Listing/NewsletterListingRepository.php:171
|
| 1930 |
#: views/dynamicSegments.html:74 views/forms.html:85 views/newsletters.html:128
|
| 1931 |
#: views/segments.html:60 views/subscribers/subscribers.html:50
|
|
@@ -1955,6 +1956,47 @@ msgstr ""
|
|
| 1955 |
msgid "Deleted list"
|
| 1956 |
msgstr ""
|
| 1957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1958 |
#: lib/Models/NewsletterOptionField.php:21
|
| 1959 |
msgid "Please specify a newsletter type."
|
| 1960 |
msgstr ""
|
|
@@ -1995,11 +2037,6 @@ msgstr ""
|
|
| 1995 |
msgid "Your email address is invalid!"
|
| 1996 |
msgstr ""
|
| 1997 |
|
| 1998 |
-
#: lib/Models/Subscriber.php:161
|
| 1999 |
-
#: lib/Newsletter/Listing/NewsletterListingRepository.php:60
|
| 2000 |
-
msgid "All Lists"
|
| 2001 |
-
msgstr ""
|
| 2002 |
-
|
| 2003 |
#: lib/Models/Subscriber.php:169
|
| 2004 |
msgid "Subscribers without a list (%s)"
|
| 2005 |
msgstr ""
|
|
@@ -2033,36 +2070,6 @@ msgstr ""
|
|
| 2033 |
msgid "Click here to view media."
|
| 2034 |
msgstr ""
|
| 2035 |
|
| 2036 |
-
#: lib/Newsletter/Listing/NewsletterListingRepository.php:115
|
| 2037 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:12
|
| 2038 |
-
#: views/newsletter/templates/blocks/products/settingsSelection.hbs:9
|
| 2039 |
-
msgid "Draft"
|
| 2040 |
-
msgstr ""
|
| 2041 |
-
|
| 2042 |
-
#: lib/Newsletter/Listing/NewsletterListingRepository.php:120
|
| 2043 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:11
|
| 2044 |
-
msgid "Scheduled"
|
| 2045 |
-
msgstr ""
|
| 2046 |
-
|
| 2047 |
-
#: lib/Newsletter/Listing/NewsletterListingRepository.php:125
|
| 2048 |
-
#: lib/Newsletter/Listing/NewsletterListingRepository.php:140
|
| 2049 |
-
msgid "Sending"
|
| 2050 |
-
msgstr ""
|
| 2051 |
-
|
| 2052 |
-
#: lib/Newsletter/Listing/NewsletterListingRepository.php:130
|
| 2053 |
-
#: lib/Newsletter/Listing/NewsletterListingRepository.php:145
|
| 2054 |
-
msgid "Sent"
|
| 2055 |
-
msgstr ""
|
| 2056 |
-
|
| 2057 |
-
#: lib/Newsletter/Listing/NewsletterListingRepository.php:157
|
| 2058 |
-
#: views/newsletters.html:136
|
| 2059 |
-
msgid "Active"
|
| 2060 |
-
msgstr ""
|
| 2061 |
-
|
| 2062 |
-
#: lib/Newsletter/Listing/NewsletterListingRepository.php:162
|
| 2063 |
-
msgid "Not active"
|
| 2064 |
-
msgstr ""
|
| 2065 |
-
|
| 2066 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:12
|
| 2067 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:109
|
| 2068 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:110
|
| 4 |
msgstr ""
|
| 5 |
"Project-Id-Version: \n"
|
| 6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
| 7 |
+
"POT-Creation-Date: 2020-03-23 14:08:09+00:00\n"
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=utf-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
| 1918 |
msgstr ""
|
| 1919 |
|
| 1920 |
#: lib/Models/DynamicSegment.php:69 lib/Models/Form.php:110
|
| 1921 |
+
#: lib/Models/Newsletter.php:850 lib/Models/ScheduledTaskSubscriber.php:96
|
| 1922 |
+
#: lib/Models/Segment.php:224 lib/Models/Subscriber.php:244
|
| 1923 |
#: lib/Newsletter/Listing/NewsletterListingRepository.php:104
|
| 1924 |
msgid "All"
|
| 1925 |
msgstr ""
|
| 1926 |
|
| 1927 |
#: lib/Models/DynamicSegment.php:74 lib/Models/Form.php:115
|
| 1928 |
+
#: lib/Models/Newsletter.php:948 lib/Models/Segment.php:229
|
| 1929 |
+
#: lib/Models/Subscriber.php:274
|
| 1930 |
#: lib/Newsletter/Listing/NewsletterListingRepository.php:171
|
| 1931 |
#: views/dynamicSegments.html:74 views/forms.html:85 views/newsletters.html:128
|
| 1932 |
#: views/segments.html:60 views/subscribers/subscribers.html:50
|
| 1956 |
msgid "Deleted list"
|
| 1957 |
msgstr ""
|
| 1958 |
|
| 1959 |
+
#: lib/Models/Newsletter.php:748 lib/Models/Subscriber.php:161
|
| 1960 |
+
#: lib/Newsletter/Listing/NewsletterListingRepository.php:60
|
| 1961 |
+
msgid "All Lists"
|
| 1962 |
+
msgstr ""
|
| 1963 |
+
|
| 1964 |
+
#: lib/Models/Newsletter.php:862
|
| 1965 |
+
#: lib/Newsletter/Listing/NewsletterListingRepository.php:115
|
| 1966 |
+
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:12
|
| 1967 |
+
#: views/newsletter/templates/blocks/products/settingsSelection.hbs:9
|
| 1968 |
+
msgid "Draft"
|
| 1969 |
+
msgstr ""
|
| 1970 |
+
|
| 1971 |
+
#: lib/Models/Newsletter.php:870
|
| 1972 |
+
#: lib/Newsletter/Listing/NewsletterListingRepository.php:120
|
| 1973 |
+
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:11
|
| 1974 |
+
msgid "Scheduled"
|
| 1975 |
+
msgstr ""
|
| 1976 |
+
|
| 1977 |
+
#: lib/Models/Newsletter.php:878 lib/Models/Newsletter.php:899
|
| 1978 |
+
#: lib/Newsletter/Listing/NewsletterListingRepository.php:125
|
| 1979 |
+
#: lib/Newsletter/Listing/NewsletterListingRepository.php:140
|
| 1980 |
+
msgid "Sending"
|
| 1981 |
+
msgstr ""
|
| 1982 |
+
|
| 1983 |
+
#: lib/Models/Newsletter.php:886 lib/Models/Newsletter.php:908
|
| 1984 |
+
#: lib/Newsletter/Listing/NewsletterListingRepository.php:130
|
| 1985 |
+
#: lib/Newsletter/Listing/NewsletterListingRepository.php:145
|
| 1986 |
+
msgid "Sent"
|
| 1987 |
+
msgstr ""
|
| 1988 |
+
|
| 1989 |
+
#: lib/Models/Newsletter.php:924
|
| 1990 |
+
#: lib/Newsletter/Listing/NewsletterListingRepository.php:157
|
| 1991 |
+
#: views/newsletters.html:136
|
| 1992 |
+
msgid "Active"
|
| 1993 |
+
msgstr ""
|
| 1994 |
+
|
| 1995 |
+
#: lib/Models/Newsletter.php:932
|
| 1996 |
+
#: lib/Newsletter/Listing/NewsletterListingRepository.php:162
|
| 1997 |
+
msgid "Not active"
|
| 1998 |
+
msgstr ""
|
| 1999 |
+
|
| 2000 |
#: lib/Models/NewsletterOptionField.php:21
|
| 2001 |
msgid "Please specify a newsletter type."
|
| 2002 |
msgstr ""
|
| 2037 |
msgid "Your email address is invalid!"
|
| 2038 |
msgstr ""
|
| 2039 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2040 |
#: lib/Models/Subscriber.php:169
|
| 2041 |
msgid "Subscribers without a list (%s)"
|
| 2042 |
msgstr ""
|
| 2070 |
msgid "Click here to view media."
|
| 2071 |
msgstr ""
|
| 2072 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2073 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:12
|
| 2074 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:109
|
| 2075 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:110
|
lib/Models/Newsletter.php
CHANGED
|
@@ -538,6 +538,11 @@ class Newsletter extends Model {
|
|
| 538 |
return $this;
|
| 539 |
}
|
| 540 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 541 |
public function getQueue($columns = '*') {
|
| 542 |
return SendingTask::getByNewsletterId($this->id);
|
| 543 |
}
|
|
@@ -722,6 +727,84 @@ class Newsletter extends Model {
|
|
| 722 |
->count();
|
| 723 |
}
|
| 724 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 725 |
public static function filterWithOptions($orm, $type) {
|
| 726 |
$orm = $orm->select(MP_NEWSLETTERS_TABLE . '.*');
|
| 727 |
$optionFields = NewsletterOptionField::findArray();
|
|
@@ -755,6 +838,149 @@ class Newsletter extends Model {
|
|
| 755 |
return $orm;
|
| 756 |
}
|
| 757 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 758 |
public static function filterStatus($orm, $status = false) {
|
| 759 |
if (in_array($status, [
|
| 760 |
self::STATUS_DRAFT,
|
|
@@ -799,6 +1025,28 @@ class Newsletter extends Model {
|
|
| 799 |
return $orm;
|
| 800 |
}
|
| 801 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 802 |
public static function createOrUpdate($data = []) {
|
| 803 |
$data['unsubscribe_token'] = Security::generateUnsubscribeToken(self::class);
|
| 804 |
return parent::_createOrUpdate($data, false, function($data) {
|
| 538 |
return $this;
|
| 539 |
}
|
| 540 |
|
| 541 |
+
public function withChildrenCount() {
|
| 542 |
+
$this->childrenCount = $this->children()->count();
|
| 543 |
+
return $this;
|
| 544 |
+
}
|
| 545 |
+
|
| 546 |
public function getQueue($columns = '*') {
|
| 547 |
return SendingTask::getByNewsletterId($this->id);
|
| 548 |
}
|
| 727 |
->count();
|
| 728 |
}
|
| 729 |
|
| 730 |
+
public static function search($orm, $search = '') {
|
| 731 |
+
if (strlen(trim($search)) > 0) {
|
| 732 |
+
$orm->whereLike('subject', '%' . $search . '%');
|
| 733 |
+
}
|
| 734 |
+
return $orm;
|
| 735 |
+
}
|
| 736 |
+
|
| 737 |
+
public static function filters($data = []) {
|
| 738 |
+
$type = isset($data['params']['type']) ? $data['params']['type'] : null;
|
| 739 |
+
$group = (isset($data['params']['group'])) ? $data['params']['group'] : null;
|
| 740 |
+
|
| 741 |
+
// newsletter types without filters
|
| 742 |
+
if (in_array($type, [
|
| 743 |
+
self::TYPE_NOTIFICATION_HISTORY,
|
| 744 |
+
])) {
|
| 745 |
+
return false;
|
| 746 |
+
}
|
| 747 |
+
|
| 748 |
+
$segments = Segment::orderByAsc('name')->findMany();
|
| 749 |
+
$segmentList = [];
|
| 750 |
+
$segmentList[] = [
|
| 751 |
+
'label' => WPFunctions::get()->__('All Lists', 'mailpoet'),
|
| 752 |
+
'value' => '',
|
| 753 |
+
];
|
| 754 |
+
|
| 755 |
+
foreach ($segments as $segment) {
|
| 756 |
+
$newsletters = $segment->newsletters()
|
| 757 |
+
->filter('filterType', $type, $group)
|
| 758 |
+
->filter('groupBy', $data);
|
| 759 |
+
|
| 760 |
+
$newslettersCount = $newsletters->count();
|
| 761 |
+
|
| 762 |
+
if ($newslettersCount > 0) {
|
| 763 |
+
$segmentList[] = [
|
| 764 |
+
'label' => sprintf('%s (%d)', $segment->name, $newslettersCount),
|
| 765 |
+
'value' => $segment->id,
|
| 766 |
+
];
|
| 767 |
+
}
|
| 768 |
+
}
|
| 769 |
+
|
| 770 |
+
$filters = [
|
| 771 |
+
'segment' => $segmentList,
|
| 772 |
+
];
|
| 773 |
+
|
| 774 |
+
return $filters;
|
| 775 |
+
}
|
| 776 |
+
|
| 777 |
+
public static function filterBy($orm, $data = []) {
|
| 778 |
+
// apply filters
|
| 779 |
+
if (!empty($data['filter'])) {
|
| 780 |
+
foreach ($data['filter'] as $key => $value) {
|
| 781 |
+
if ($key === 'segment') {
|
| 782 |
+
$segment = Segment::findOne($value);
|
| 783 |
+
if ($segment instanceof Segment) {
|
| 784 |
+
$orm = $segment->newsletters();
|
| 785 |
+
}
|
| 786 |
+
}
|
| 787 |
+
}
|
| 788 |
+
}
|
| 789 |
+
|
| 790 |
+
// filter by type
|
| 791 |
+
$type = isset($data['params']['type']) ? $data['params']['type'] : null;
|
| 792 |
+
if ($type !== null) {
|
| 793 |
+
$group = (isset($data['params']['group'])) ? $data['params']['group'] : null;
|
| 794 |
+
$orm->filter('filterType', $type, $group);
|
| 795 |
+
}
|
| 796 |
+
|
| 797 |
+
// filter by parent id
|
| 798 |
+
$parentId = isset($data['params']['parent_id'])
|
| 799 |
+
? (int)$data['params']['parent_id']
|
| 800 |
+
: null;
|
| 801 |
+
if ($parentId !== null) {
|
| 802 |
+
$orm->where('parent_id', $parentId);
|
| 803 |
+
}
|
| 804 |
+
|
| 805 |
+
return $orm;
|
| 806 |
+
}
|
| 807 |
+
|
| 808 |
public static function filterWithOptions($orm, $type) {
|
| 809 |
$orm = $orm->select(MP_NEWSLETTERS_TABLE . '.*');
|
| 810 |
$optionFields = NewsletterOptionField::findArray();
|
| 838 |
return $orm;
|
| 839 |
}
|
| 840 |
|
| 841 |
+
public static function groups($data = []) {
|
| 842 |
+
$type = isset($data['params']['type']) ? $data['params']['type'] : null;
|
| 843 |
+
$group = (isset($data['params']['group'])) ? $data['params']['group'] : null;
|
| 844 |
+
$parentId = (isset($data['params']['parent_id'])) ? $data['params']['parent_id'] : null;
|
| 845 |
+
|
| 846 |
+
$getPublishedQuery = Newsletter::getPublished();
|
| 847 |
+
if (!is_null($parentId)) {
|
| 848 |
+
$getPublishedQuery->where('parent_id', $parentId);
|
| 849 |
+
}
|
| 850 |
+
$groups = [
|
| 851 |
+
[
|
| 852 |
+
'name' => 'all',
|
| 853 |
+
'label' => WPFunctions::get()->__('All', 'mailpoet'),
|
| 854 |
+
'count' => $getPublishedQuery
|
| 855 |
+
->filter('filterType', $type, $group)
|
| 856 |
+
->count(),
|
| 857 |
+
],
|
| 858 |
+
];
|
| 859 |
+
|
| 860 |
+
switch ($type) {
|
| 861 |
+
case self::TYPE_STANDARD:
|
| 862 |
+
$groups = array_merge($groups, [
|
| 863 |
+
[
|
| 864 |
+
'name' => self::STATUS_DRAFT,
|
| 865 |
+
'label' => WPFunctions::get()->__('Draft', 'mailpoet'),
|
| 866 |
+
'count' => Newsletter::getPublished()
|
| 867 |
+
->filter('filterType', $type, $group)
|
| 868 |
+
->filter('filterStatus', self::STATUS_DRAFT)
|
| 869 |
+
->count(),
|
| 870 |
+
],
|
| 871 |
+
[
|
| 872 |
+
'name' => self::STATUS_SCHEDULED,
|
| 873 |
+
'label' => WPFunctions::get()->__('Scheduled', 'mailpoet'),
|
| 874 |
+
'count' => Newsletter::getPublished()
|
| 875 |
+
->filter('filterType', $type, $group)
|
| 876 |
+
->filter('filterStatus', self::STATUS_SCHEDULED)
|
| 877 |
+
->count(),
|
| 878 |
+
],
|
| 879 |
+
[
|
| 880 |
+
'name' => self::STATUS_SENDING,
|
| 881 |
+
'label' => WPFunctions::get()->__('Sending', 'mailpoet'),
|
| 882 |
+
'count' => Newsletter::getPublished()
|
| 883 |
+
->filter('filterType', $type, $group)
|
| 884 |
+
->filter('filterStatus', self::STATUS_SENDING)
|
| 885 |
+
->count(),
|
| 886 |
+
],
|
| 887 |
+
[
|
| 888 |
+
'name' => self::STATUS_SENT,
|
| 889 |
+
'label' => WPFunctions::get()->__('Sent', 'mailpoet'),
|
| 890 |
+
'count' => Newsletter::getPublished()
|
| 891 |
+
->filter('filterType', $type, $group)
|
| 892 |
+
->filter('filterStatus', self::STATUS_SENT)
|
| 893 |
+
->count(),
|
| 894 |
+
],
|
| 895 |
+
]);
|
| 896 |
+
break;
|
| 897 |
+
|
| 898 |
+
case self::TYPE_NOTIFICATION_HISTORY:
|
| 899 |
+
$groups = array_merge($groups, [
|
| 900 |
+
[
|
| 901 |
+
'name' => self::STATUS_SENDING,
|
| 902 |
+
'label' => WPFunctions::get()->__('Sending', 'mailpoet'),
|
| 903 |
+
'count' => Newsletter::getPublished()
|
| 904 |
+
->where('parent_id', $parentId)
|
| 905 |
+
->filter('filterType', $type, $group)
|
| 906 |
+
->filter('filterStatus', self::STATUS_SENDING)
|
| 907 |
+
->count(),
|
| 908 |
+
],
|
| 909 |
+
[
|
| 910 |
+
'name' => self::STATUS_SENT,
|
| 911 |
+
'label' => WPFunctions::get()->__('Sent', 'mailpoet'),
|
| 912 |
+
'count' => Newsletter::getPublished()
|
| 913 |
+
->where('parent_id', $parentId)
|
| 914 |
+
->filter('filterType', $type, $group)
|
| 915 |
+
->filter('filterStatus', self::STATUS_SENT)
|
| 916 |
+
->count(),
|
| 917 |
+
],
|
| 918 |
+
]);
|
| 919 |
+
break;
|
| 920 |
+
|
| 921 |
+
case self::TYPE_WELCOME:
|
| 922 |
+
case self::TYPE_NOTIFICATION:
|
| 923 |
+
case self::TYPE_AUTOMATIC:
|
| 924 |
+
$groups = array_merge($groups, [
|
| 925 |
+
[
|
| 926 |
+
'name' => self::STATUS_ACTIVE,
|
| 927 |
+
'label' => WPFunctions::get()->__('Active', 'mailpoet'),
|
| 928 |
+
'count' => Newsletter::getPublished()
|
| 929 |
+
->filter('filterType', $type, $group)
|
| 930 |
+
->filter('filterStatus', self::STATUS_ACTIVE)
|
| 931 |
+
->count(),
|
| 932 |
+
],
|
| 933 |
+
[
|
| 934 |
+
'name' => self::STATUS_DRAFT,
|
| 935 |
+
'label' => WPFunctions::get()->__('Not active', 'mailpoet'),
|
| 936 |
+
'count' => Newsletter::getPublished()
|
| 937 |
+
->filter('filterType', $type, $group)
|
| 938 |
+
->filter('filterStatus', self::STATUS_DRAFT)
|
| 939 |
+
->count(),
|
| 940 |
+
],
|
| 941 |
+
]);
|
| 942 |
+
break;
|
| 943 |
+
}
|
| 944 |
+
|
| 945 |
+
$getTrashedQuery = Newsletter::getTrashed();
|
| 946 |
+
if (!is_null($parentId)) {
|
| 947 |
+
$getTrashedQuery->where('parent_id', $parentId);
|
| 948 |
+
}
|
| 949 |
+
$groups[] = [
|
| 950 |
+
'name' => 'trash',
|
| 951 |
+
'label' => WPFunctions::get()->__('Trash', 'mailpoet'),
|
| 952 |
+
'count' => $getTrashedQuery
|
| 953 |
+
->filter('filterType', $type, $group)
|
| 954 |
+
->count(),
|
| 955 |
+
];
|
| 956 |
+
|
| 957 |
+
return $groups;
|
| 958 |
+
}
|
| 959 |
+
|
| 960 |
+
public static function groupBy($orm, $data = []) {
|
| 961 |
+
$group = (!empty($data['group'])) ? $data['group'] : 'all';
|
| 962 |
+
|
| 963 |
+
switch ($group) {
|
| 964 |
+
case self::STATUS_DRAFT:
|
| 965 |
+
case self::STATUS_SCHEDULED:
|
| 966 |
+
case self::STATUS_SENDING:
|
| 967 |
+
case self::STATUS_SENT:
|
| 968 |
+
case self::STATUS_ACTIVE:
|
| 969 |
+
$orm
|
| 970 |
+
->whereNull('deleted_at')
|
| 971 |
+
->filter('filterStatus', $group);
|
| 972 |
+
break;
|
| 973 |
+
|
| 974 |
+
case 'trash':
|
| 975 |
+
$orm->whereNotNull('deleted_at');
|
| 976 |
+
break;
|
| 977 |
+
|
| 978 |
+
default:
|
| 979 |
+
$orm->whereNull('deleted_at');
|
| 980 |
+
}
|
| 981 |
+
return $orm;
|
| 982 |
+
}
|
| 983 |
+
|
| 984 |
public static function filterStatus($orm, $status = false) {
|
| 985 |
if (in_array($status, [
|
| 986 |
self::STATUS_DRAFT,
|
| 1025 |
return $orm;
|
| 1026 |
}
|
| 1027 |
|
| 1028 |
+
public static function listingQuery($data = []) {
|
| 1029 |
+
$query = self::select(
|
| 1030 |
+
[
|
| 1031 |
+
self::$_table . '.id',
|
| 1032 |
+
self::$_table . '.subject',
|
| 1033 |
+
self::$_table . '.hash',
|
| 1034 |
+
self::$_table . '.type',
|
| 1035 |
+
self::$_table . '.status',
|
| 1036 |
+
self::$_table . '.sent_at',
|
| 1037 |
+
self::$_table . '.updated_at',
|
| 1038 |
+
self::$_table . '.deleted_at',
|
| 1039 |
+
]
|
| 1040 |
+
);
|
| 1041 |
+
if ($data['sort_by'] === 'sent_at') {
|
| 1042 |
+
$query = $query->orderByExpr('ISNULL(sent_at) DESC');
|
| 1043 |
+
}
|
| 1044 |
+
return $query
|
| 1045 |
+
->filter('filterBy', $data)
|
| 1046 |
+
->filter('groupBy', $data)
|
| 1047 |
+
->filter('search', $data['search']);
|
| 1048 |
+
}
|
| 1049 |
+
|
| 1050 |
public static function createOrUpdate($data = []) {
|
| 1051 |
$data['unsubscribe_token'] = Security::generateUnsubscribeToken(self::class);
|
| 1052 |
return parent::_createOrUpdate($data, false, function($data) {
|
mailpoet.php
CHANGED
|
@@ -5,7 +5,7 @@ if (!defined('ABSPATH')) exit;
|
|
| 5 |
|
| 6 |
/*
|
| 7 |
* Plugin Name: MailPoet 3 (New)
|
| 8 |
-
* Version: 3.46.
|
| 9 |
* Plugin URI: http://www.mailpoet.com
|
| 10 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
| 11 |
* Author: MailPoet
|
|
@@ -19,7 +19,7 @@ if (!defined('ABSPATH')) exit;
|
|
| 19 |
*/
|
| 20 |
|
| 21 |
$mailpoetPlugin = [
|
| 22 |
-
'version' => '3.46.
|
| 23 |
'filename' => __FILE__,
|
| 24 |
'path' => dirname(__FILE__),
|
| 25 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
| 5 |
|
| 6 |
/*
|
| 7 |
* Plugin Name: MailPoet 3 (New)
|
| 8 |
+
* Version: 3.46.5
|
| 9 |
* Plugin URI: http://www.mailpoet.com
|
| 10 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
| 11 |
* Author: MailPoet
|
| 19 |
*/
|
| 20 |
|
| 21 |
$mailpoetPlugin = [
|
| 22 |
+
'version' => '3.46.5',
|
| 23 |
'filename' => __FILE__,
|
| 24 |
'path' => dirname(__FILE__),
|
| 25 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
readme.txt
CHANGED
|
@@ -3,7 +3,7 @@ Contributors: mailpoet, wysija
|
|
| 3 |
Tags: email, email marketing, post notification, woocommerce emails, email automation, newsletter, newsletter builder, newsletter subscribers
|
| 4 |
Requires at least: 4.7
|
| 5 |
Tested up to: 5.3
|
| 6 |
-
Stable tag: 3.46.
|
| 7 |
Requires PHP: 5.6
|
| 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.46.4 - 2020-03-19 =
|
| 188 |
* Added: Columns block in the form editor;
|
| 189 |
* Added: Heading block in the form editor.
|
| 3 |
Tags: email, email marketing, post notification, woocommerce emails, email automation, newsletter, newsletter builder, newsletter subscribers
|
| 4 |
Requires at least: 4.7
|
| 5 |
Tested up to: 5.3
|
| 6 |
+
Stable tag: 3.46.5
|
| 7 |
Requires PHP: 5.6
|
| 8 |
License: GPLv3
|
| 9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
| 184 |
|
| 185 |
== Changelog ==
|
| 186 |
|
| 187 |
+
= 3.46.5 - 2020-03-23 =
|
| 188 |
+
* Fixed: Emptying trash won't delete all newsletters anymore. Sorry about that
|
| 189 |
+
|
| 190 |
= 3.46.4 - 2020-03-19 =
|
| 191 |
* Added: Columns block in the form editor;
|
| 192 |
* Added: Heading block in the form editor.
|
vendor-prefixed/autoload.php
CHANGED
|
@@ -7,4 +7,4 @@ if (!defined('ABSPATH')) exit;
|
|
| 7 |
|
| 8 |
// autoload.php @generated by Composer
|
| 9 |
require_once __DIR__ . '/composer/autoload_real.php';
|
| 10 |
-
return \MailPoetVendor\
|
| 7 |
|
| 8 |
// autoload.php @generated by Composer
|
| 9 |
require_once __DIR__ . '/composer/autoload_real.php';
|
| 10 |
+
return \MailPoetVendor\ComposerAutoloaderInit3726a4c230ce4b778d108e2e2311e285::getLoader();
|
vendor/autoload.php
CHANGED
|
@@ -7,4 +7,4 @@ if (!defined('ABSPATH')) exit;
|
|
| 7 |
|
| 8 |
require_once __DIR__ . '/composer/autoload_real.php';
|
| 9 |
|
| 10 |
-
return
|
| 7 |
|
| 8 |
require_once __DIR__ . '/composer/autoload_real.php';
|
| 9 |
|
| 10 |
+
return ComposerAutoloaderInit65d7bd84737d1d15774a6e904060b823::getLoader();
|
vendor/composer/autoload_real.php
CHANGED
|
@@ -5,7 +5,7 @@ if (!defined('ABSPATH')) exit;
|
|
| 5 |
|
| 6 |
// autoload_real.php @generated by Composer
|
| 7 |
|
| 8 |
-
class
|
| 9 |
{
|
| 10 |
private static $loader;
|
| 11 |
|
|
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit0999a2afce628e4fe4a9f1b3d7fbef94
|
|
| 22 |
return self::$loader;
|
| 23 |
}
|
| 24 |
|
| 25 |
-
spl_autoload_register(array('
|
| 26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
| 27 |
-
spl_autoload_unregister(array('
|
| 28 |
|
| 29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
| 30 |
if ($useStaticLoader) {
|
| 31 |
require_once __DIR__ . '/autoload_static.php';
|
| 32 |
|
| 33 |
-
call_user_func(\Composer\Autoload\
|
| 34 |
} else {
|
| 35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
| 36 |
foreach ($map as $namespace => $path) {
|
|
@@ -51,19 +51,19 @@ class ComposerAutoloaderInit0999a2afce628e4fe4a9f1b3d7fbef94
|
|
| 51 |
$loader->register(true);
|
| 52 |
|
| 53 |
if ($useStaticLoader) {
|
| 54 |
-
$includeFiles = Composer\Autoload\
|
| 55 |
} else {
|
| 56 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
| 57 |
}
|
| 58 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
| 59 |
-
|
| 60 |
}
|
| 61 |
|
| 62 |
return $loader;
|
| 63 |
}
|
| 64 |
}
|
| 65 |
|
| 66 |
-
function
|
| 67 |
{
|
| 68 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
| 69 |
require $file;
|
| 5 |
|
| 6 |
// autoload_real.php @generated by Composer
|
| 7 |
|
| 8 |
+
class ComposerAutoloaderInit65d7bd84737d1d15774a6e904060b823
|
| 9 |
{
|
| 10 |
private static $loader;
|
| 11 |
|
| 22 |
return self::$loader;
|
| 23 |
}
|
| 24 |
|
| 25 |
+
spl_autoload_register(array('ComposerAutoloaderInit65d7bd84737d1d15774a6e904060b823', 'loadClassLoader'), true, true);
|
| 26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
| 27 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit65d7bd84737d1d15774a6e904060b823', 'loadClassLoader'));
|
| 28 |
|
| 29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
| 30 |
if ($useStaticLoader) {
|
| 31 |
require_once __DIR__ . '/autoload_static.php';
|
| 32 |
|
| 33 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit65d7bd84737d1d15774a6e904060b823::getInitializer($loader));
|
| 34 |
} else {
|
| 35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
| 36 |
foreach ($map as $namespace => $path) {
|
| 51 |
$loader->register(true);
|
| 52 |
|
| 53 |
if ($useStaticLoader) {
|
| 54 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit65d7bd84737d1d15774a6e904060b823::$files;
|
| 55 |
} else {
|
| 56 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
| 57 |
}
|
| 58 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
| 59 |
+
composerRequire65d7bd84737d1d15774a6e904060b823($fileIdentifier, $file);
|
| 60 |
}
|
| 61 |
|
| 62 |
return $loader;
|
| 63 |
}
|
| 64 |
}
|
| 65 |
|
| 66 |
+
function composerRequire65d7bd84737d1d15774a6e904060b823($fileIdentifier, $file)
|
| 67 |
{
|
| 68 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
| 69 |
require $file;
|
vendor/composer/autoload_static.php
CHANGED
|
@@ -7,7 +7,7 @@ namespace Composer\Autoload;
|
|
| 7 |
if (!defined('ABSPATH')) exit;
|
| 8 |
|
| 9 |
|
| 10 |
-
class
|
| 11 |
{
|
| 12 |
public static $files = array (
|
| 13 |
'8b5788f18a1505f52461c0f08991d0df' => __DIR__ . '/../..' . '/lib-3rd-party/ArrayColumn.php',
|
|
@@ -1573,9 +1573,9 @@ class ComposerStaticInit0999a2afce628e4fe4a9f1b3d7fbef94
|
|
| 1573 |
public static function getInitializer(ClassLoader $loader)
|
| 1574 |
{
|
| 1575 |
return \Closure::bind(function () use ($loader) {
|
| 1576 |
-
$loader->prefixLengthsPsr4 =
|
| 1577 |
-
$loader->prefixDirsPsr4 =
|
| 1578 |
-
$loader->classMap =
|
| 1579 |
|
| 1580 |
}, null, ClassLoader::class);
|
| 1581 |
}
|
| 7 |
if (!defined('ABSPATH')) exit;
|
| 8 |
|
| 9 |
|
| 10 |
+
class ComposerStaticInit65d7bd84737d1d15774a6e904060b823
|
| 11 |
{
|
| 12 |
public static $files = array (
|
| 13 |
'8b5788f18a1505f52461c0f08991d0df' => __DIR__ . '/../..' . '/lib-3rd-party/ArrayColumn.php',
|
| 1573 |
public static function getInitializer(ClassLoader $loader)
|
| 1574 |
{
|
| 1575 |
return \Closure::bind(function () use ($loader) {
|
| 1576 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit65d7bd84737d1d15774a6e904060b823::$prefixLengthsPsr4;
|
| 1577 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit65d7bd84737d1d15774a6e904060b823::$prefixDirsPsr4;
|
| 1578 |
+
$loader->classMap = ComposerStaticInit65d7bd84737d1d15774a6e904060b823::$classMap;
|
| 1579 |
|
| 1580 |
}, null, ClassLoader::class);
|
| 1581 |
}
|
