PluginProbe
MailPoet – Newsletters, Email Marketing, and Automation / 3.7.4
MailPoet – Newsletters, Email Marketing, and Automation v3.7.4
5.38.0 5.37.0 5.36.1 5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 All 542 releases
mailpoet / lib / Config / Shortcodes.php

Shortcodes.php in MailPoet – Newsletters, Email Marketing, and Automation 3.7.4, at lib/Config/Shortcodes.php

135 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace MailPoet\Config;
4
5 use MailPoet\Models\Newsletter;
6 use MailPoet\Models\Subscriber;
7 use MailPoet\Models\SubscriberSegment;
8 use MailPoet\Newsletter\Url as NewsletterUrl;
9 use MailPoet\Subscription\Pages;
10 use MailPoet\WP\Hooks;
11
12 class Shortcodes {
13 function init() {
14 // form widget shortcode
15 add_shortcode('mailpoet_form', array($this, 'formWidget'));
16
17 // subscribers count shortcode
18 add_shortcode('mailpoet_subscribers_count', array(
19 $this, 'getSubscribersCount'
20 ));
21 add_shortcode('wysija_subscribers_count', array(
22 $this, 'getSubscribersCount'
23 ));
24
25 // archives page
26 add_shortcode('mailpoet_archive', array(
27 $this, 'getArchive'
28 ));
29
30 Hooks::addFilter('mailpoet_archive_date', array(
31 $this, 'renderArchiveDate'
32 ), 2);
33 Hooks::addFilter('mailpoet_archive_subject', array(
34 $this, 'renderArchiveSubject'
35 ), 2, 3);
36
37 // initialize subscription management shortcodes
38 $subscription_page = new Pages();
39 $subscription_page->initShortcodes();
40 }
41
42 function formWidget($params = array()) {
43 // IMPORTANT: fixes conflict with MagicMember
44 remove_shortcode('user_list');
45
46 if(isset($params['id']) && (int)$params['id'] > 0) {
47 $form_widget = new \MailPoet\Form\Widget();
48 return $form_widget->widget(array(
49 'form' => (int)$params['id'],
50 'form_type' => 'shortcode'
51 ));
52 }
53 }
54
55 function getSubscribersCount($params) {
56 if(!empty($params['segments'])) {
57 $segment_ids = array_map(function($segment_id) {
58 return (int)trim($segment_id);
59 }, explode(',', $params['segments']));
60 }
61
62 if(empty($segment_ids)) {
63 return number_format_i18n(Subscriber::filter('subscribed')->count());
64 } else {
65 return number_format_i18n(
66 SubscriberSegment::whereIn('segment_id', $segment_ids)
67 ->select('subscriber_id')->distinct()
68 ->filter('subscribed')
69 ->findResultSet()->count()
70 );
71 }
72 }
73
74 function getArchive($params) {
75 $segment_ids = array();
76 if(!empty($params['segments'])) {
77 $segment_ids = array_map(function($segment_id) {
78 return (int)trim($segment_id);
79 }, explode(',', $params['segments']));
80 }
81
82 $html = '';
83
84 $newsletters = Newsletter::getArchives($segment_ids);
85
86 $subscriber = Subscriber::getCurrentWPUser();
87
88 if(empty($newsletters)) {
89 return Hooks::applyFilters(
90 'mailpoet_archive_no_newsletters',
91 __('Oops! There are no newsletters to display.', 'mailpoet')
92 );
93 } else {
94 $title = Hooks::applyFilters('mailpoet_archive_title', '');
95 if(!empty($title)) {
96 $html .= '<h3 class="mailpoet_archive_title">'.$title.'</h3>';
97 }
98 $html .= '<ul class="mailpoet_archive">';
99 foreach($newsletters as $newsletter) {
100 $queue = $newsletter->queue()->findOne();
101 $html .= '<li>'.
102 '<span class="mailpoet_archive_date">'.
103 Hooks::applyFilters('mailpoet_archive_date', $newsletter).
104 '</span>
105 <span class="mailpoet_archive_subject">'.
106 Hooks::applyFilters('mailpoet_archive_subject', $newsletter, $subscriber, $queue).
107 '</span>
108 </li>';
109 }
110 $html .= '</ul>';
111 }
112 return $html;
113 }
114
115 function renderArchiveDate($newsletter) {
116 return date_i18n(
117 get_option('date_format'),
118 strtotime($newsletter->processed_at)
119 );
120 }
121
122 function renderArchiveSubject($newsletter, $subscriber, $queue) {
123 $preview_url = NewsletterUrl::getViewInBrowserUrl(
124 NewsletterUrl::TYPE_ARCHIVE,
125 $newsletter,
126 $subscriber,
127 $queue
128 );
129 return '<a href="'.esc_attr($preview_url).'" target="_blank" title="'
130 .esc_attr(__('Preview in a new tab', 'mailpoet')).'">'
131 .esc_attr($newsletter->newsletter_rendered_subject).
132 '</a>';
133 }
134 }
135