PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.2
MailPoet – Newsletters, Email Marketing, and Automation v5.34.2
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 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / lib / Form / Templates / FormTemplate.php
mailpoet / lib / Form / Templates Last commit date
Templates 3 years ago FormTemplate.php 2 years ago TemplateRepository.php 3 years ago index.php 3 years ago
FormTemplate.php
169 lines
1 <?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
2
3 namespace MailPoet\Form\Templates;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use MailPoet\Entities\FormEntity;
9 use MailPoet\Settings\SettingsController;
10 use MailPoet\Util\CdnAssetUrl;
11 use MailPoet\Util\Helpers;
12 use MailPoet\WP\Functions as WPFunctions;
13
14 abstract class FormTemplate {
15 const DEFAULT_STYLES = <<<EOL
16 /* form */
17 .mailpoet_form {
18 }
19
20 /* columns */
21 .mailpoet_column_with_background {
22 padding: 10px;
23 }
24 /* space between columns */
25 .mailpoet_form_column:not(:first-child) {
26 margin-left: 20px;
27 }
28
29 /* input wrapper (label + input) */
30 .mailpoet_paragraph {
31 line-height:20px;
32 margin-bottom: 20px;
33 }
34
35 /* labels */
36 .mailpoet_segment_label,
37 .mailpoet_text_label,
38 .mailpoet_textarea_label,
39 .mailpoet_select_label,
40 .mailpoet_radio_label,
41 .mailpoet_checkbox_label,
42 .mailpoet_list_label,
43 .mailpoet_date_label {
44 display:block;
45 font-weight: normal;
46 }
47
48 /* inputs */
49 .mailpoet_text,
50 .mailpoet_textarea,
51 .mailpoet_select,
52 .mailpoet_date_month,
53 .mailpoet_date_day,
54 .mailpoet_date_year,
55 .mailpoet_date {
56 display:block;
57 }
58
59 .mailpoet_text,
60 .mailpoet_textarea {
61 width: 200px;
62 }
63
64 .mailpoet_checkbox {
65 }
66
67 .mailpoet_submit {
68 }
69
70 .mailpoet_divider {
71 }
72
73 .mailpoet_message {
74 }
75
76 .mailpoet_form_loading {
77 width: 30px;
78 text-align: center;
79 line-height: normal;
80 }
81
82 .mailpoet_form_loading > span {
83 width: 5px;
84 height: 5px;
85 background-color: #5b5b5b;
86 }
87 EOL;
88
89 /** @var CdnAssetUrl */
90 protected $cdnAssetUrl;
91
92 /** @var WPFunctions */
93 protected $wp;
94
95 /** @var string */
96 protected $assetsDirectory = '';
97
98 /** @var SettingsController */
99 private $settings;
100
101 public function __construct(
102 CdnAssetUrl $cdnAssetUrl,
103 SettingsController $settings,
104 WPFunctions $wp
105 ) {
106 $this->cdnAssetUrl = $cdnAssetUrl;
107 $this->wp = $wp;
108 $this->settings = $settings;
109 }
110
111 abstract public function getName(): string;
112
113 abstract public function getBody(): array;
114
115 abstract public function getThumbnailUrl(): string;
116
117 public function getSettings(): array {
118 return [
119 'on_success' => 'message',
120 'success_message' => '',
121 'segments' => null,
122 'segments_selected_by' => 'admin',
123 ];
124 }
125
126 public function getStyles(): string {
127 return self::DEFAULT_STYLES;
128 }
129
130 public function toFormEntity(): FormEntity {
131 $formEntity = new FormEntity($this->getName());
132 $formEntity->setBody($this->getBody());
133 $formEntity->setSettings($this->getSettings());
134 $formEntity->setStyles($this->getStyles());
135 $settings = $formEntity->getSettings();
136 if (!isset($settings['success_message']) || !($settings['success_message'])) {
137 $settings['success_message'] = $this->getDefaultSuccessMessage();
138 $formEntity->setSettings($settings);
139 }
140 return $formEntity;
141 }
142
143 private function getDefaultSuccessMessage() {
144 if ($this->settings->get('signup_confirmation.enabled')) {
145 return __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet');
146 }
147 return __('You’ve been successfully subscribed to our newsletter!', 'mailpoet');
148 }
149
150 protected function getAssetUrl(string $filename): string {
151 return $this->cdnAssetUrl->generateCdnUrl("form-templates/{$this->assetsDirectory}/$filename");
152 }
153
154 protected function replaceLinkTags($source, $link, $attributes = []): string {
155 return Helpers::replaceLinkTags($source, $link, $attributes);
156 }
157
158 protected function replacePrivacyLinkTags($source, $link = '#'): string {
159 $privacyPolicyUrl = $this->wp->getPrivacyPolicyUrl();
160 $attributes = [];
161
162 if (!empty($privacyPolicyUrl)) {
163 $link = $this->wp->escUrl($privacyPolicyUrl);
164 $attributes = ['target' => '_blank'];
165 }
166 return $this->replaceLinkTags($source, $link, $attributes);
167 }
168 }
169