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 | MailPoet Newsletters (New) |
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 |
}
|