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 / Entities / FormEntity.php
mailpoet / lib / Entities Last commit date
CustomFieldEntity.php 2 months ago DynamicSegmentFilterData.php 2 months ago DynamicSegmentFilterEntity.php 3 years ago FeatureFlagEntity.php 3 years ago FormEntity.php 1 week ago LogEntity.php 3 years ago NewsletterEntity.php 2 months ago NewsletterLinkEntity.php 3 years ago NewsletterOptionEntity.php 3 years ago NewsletterOptionFieldEntity.php 1 month ago NewsletterPostEntity.php 3 years ago NewsletterSegmentEntity.php 3 years ago NewsletterTemplateEntity.php 3 years ago ScheduledTaskEntity.php 1 month ago ScheduledTaskSubscriberEntity.php 1 year ago SegmentEntity.php 2 months ago SendingQueueEntity.php 2 months ago SettingEntity.php 3 years ago StatisticsBounceEntity.php 3 years ago StatisticsClickEntity.php 3 years ago StatisticsFormEntity.php 3 years ago StatisticsNewsletterEntity.php 1 year ago StatisticsOpenEntity.php 3 years ago StatisticsUnsubscribeEntity.php 2 months ago StatisticsWooCommercePurchaseEntity.php 2 years ago StatsNotificationEntity.php 3 years ago SubscriberCustomFieldEntity.php 3 years ago SubscriberEntity.php 5 days ago SubscriberIPEntity.php 3 years ago SubscriberSegmentEntity.php 3 years ago SubscriberTagEntity.php 4 years ago TagEntity.php 3 years ago UserAgentEntity.php 3 years ago UserFlagEntity.php 3 years ago WpPostEntity.php 2 years ago index.php 3 years ago
FormEntity.php
223 lines
1 <?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
2
3 namespace MailPoet\Entities;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait;
9 use MailPoet\Doctrine\EntityTraits\CreatedAtTrait;
10 use MailPoet\Doctrine\EntityTraits\DeletedAtTrait;
11 use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait;
12 use MailPoetVendor\Doctrine\ORM\Mapping as ORM;
13
14 /**
15 * @ORM\Entity()
16 * @ORM\Table(name="forms")
17 */
18 class FormEntity {
19 use AutoincrementedIdTrait;
20 use CreatedAtTrait;
21 use UpdatedAtTrait;
22 use DeletedAtTrait;
23
24 const DISPLAY_TYPE_BELOW_POST = 'below_posts';
25 const DISPLAY_TYPE_FIXED_BAR = 'fixed_bar';
26 const DISPLAY_TYPE_POPUP = 'popup';
27 const DISPLAY_TYPE_SLIDE_IN = 'slide_in';
28 const DISPLAY_TYPE_OTHERS = 'others';
29
30 const STATUS_ENABLED = 'enabled';
31 const STATUS_DISABLED = 'disabled';
32
33 const HTML_BLOCK_TYPE = 'html';
34 const HEADING_BLOCK_TYPE = 'heading';
35 const IMAGE_BLOCK_TYPE = 'image';
36 const PARAGRAPH_BLOCK_TYPE = 'paragraph';
37 const DIVIDER_BLOCK_TYPE = 'divider';
38 const CHECKBOX_BLOCK_TYPE = 'checkbox';
39 const RADIO_BLOCK_TYPE = 'radio';
40 const SEGMENT_SELECTION_BLOCK_TYPE = 'segment';
41 const DATE_BLOCK_TYPE = 'date';
42 const SELECT_BLOCK_TYPE = 'select';
43 const TEXT_BLOCK_TYPE = 'text';
44 const TEXTAREA_BLOCK_TYPE = 'textarea';
45 const SUBMIT_BLOCK_TYPE = 'submit';
46 const CLOSE_BLOCK_TYPE = 'close';
47 const COLUMNS_BLOCK_TYPE = 'columns';
48 const COLUMN_BLOCK_TYPE = 'column';
49
50 public const FORM_DISPLAY_TYPES = [
51 self::DISPLAY_TYPE_BELOW_POST,
52 self::DISPLAY_TYPE_FIXED_BAR,
53 self::DISPLAY_TYPE_POPUP,
54 self::DISPLAY_TYPE_SLIDE_IN,
55 self::DISPLAY_TYPE_OTHERS,
56 ];
57
58 public const FORM_FIELD_TYPES = [
59 self::CHECKBOX_BLOCK_TYPE,
60 self::RADIO_BLOCK_TYPE,
61 self::SEGMENT_SELECTION_BLOCK_TYPE,
62 self::DATE_BLOCK_TYPE,
63 self::SELECT_BLOCK_TYPE,
64 self::TEXT_BLOCK_TYPE,
65 self::TEXTAREA_BLOCK_TYPE,
66 ];
67
68 /**
69 * @ORM\Column(type="string")
70 * @var string
71 */
72 private $name;
73
74 /**
75 * @ORM\Column(type="serialized_array")
76 * @var array|null
77 */
78 private $body;
79
80 /**
81 * @ORM\Column(type="string")
82 * @var string
83 */
84 private $status;
85
86 /**
87 * @ORM\Column(type="serialized_array")
88 * @var array|null
89 */
90 private $settings;
91
92 /**
93 * @ORM\Column(type="string", nullable=true)
94 * @var string|null
95 */
96 private $styles;
97
98 public function __construct(
99 $name
100 ) {
101 $this->name = $name;
102 $this->status = self::STATUS_ENABLED;
103 }
104
105 /**
106 * @return string
107 */
108 public function getName() {
109 return $this->name;
110 }
111
112 /**
113 * @return array|null
114 */
115 public function getBody() {
116 return $this->body;
117 }
118
119 /**
120 * @return array|null
121 */
122 public function getSettings() {
123 return $this->settings;
124 }
125
126 /**
127 * @return string|null
128 */
129 public function getStyles() {
130 return $this->styles;
131 }
132
133 /**
134 * @param string $name
135 */
136 public function setName($name) {
137 $this->name = $name;
138 }
139
140 /**
141 * @param array|null $body
142 */
143 public function setBody($body) {
144 $this->body = $body;
145 }
146
147 /**
148 * @param array|null $settings
149 */
150 public function setSettings($settings) {
151 $this->settings = $settings;
152 }
153
154 /**
155 * @param string|null $styles
156 */
157 public function setStyles($styles) {
158 $this->styles = $styles;
159 }
160
161 /**
162 * @param string $status
163 */
164 public function setStatus(string $status) {
165 $this->status = $status;
166 }
167
168 /**
169 * @return string
170 */
171 public function getStatus(): string {
172 return $this->status;
173 }
174
175 public function toArray(): array {
176 return [
177 'id' => $this->getId(),
178 'name' => $this->getName(),
179 'body' => $this->getBody(),
180 'settings' => $this->getSettings(),
181 'styles' => $this->getStyles(),
182 'status' => $this->getStatus(),
183 'created_at' => $this->getCreatedAt(),
184 'updated_at' => $this->getUpdatedAt(),
185 'deleted_at' => $this->getDeletedAt(),
186 ];
187 }
188
189 public function getBlocksByTypes(array $types, ?array $blocks = null): array {
190 $found = [];
191 if ($blocks === null) {
192 $blocks = $this->getBody() ?? [];
193 }
194 foreach ($blocks as $block) {
195 if (isset($block['type']) && in_array($block['type'], $types, true)) {
196 $found[] = $block;
197 }
198 if (isset($block['body']) && is_array($block['body']) && !empty($block['body'])) {
199 $found = array_merge($found, $this->getBlocksByTypes($types, $block['body']));
200 }
201 }
202 return $found;
203 }
204
205 public function getSegmentBlocksSegmentIds(): array {
206 $listSelectionBlocks = $this->getBlocksByTypes([FormEntity::SEGMENT_SELECTION_BLOCK_TYPE]);
207 $listSelection = [];
208 foreach ($listSelectionBlocks as $listSelectionBlock) {
209 $listSelection = array_unique(
210 array_merge(
211 $listSelection,
212 array_column($listSelectionBlock['params']['values'] ?? [], 'id')
213 )
214 );
215 }
216 return $listSelection;
217 }
218
219 public function getSettingsSegmentIds(): array {
220 return $this->settings['segments'] ?? [];
221 }
222 }
223