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 / Automation / Integrations / WordPress / Fields / PostFieldsFactory.php
mailpoet / lib / Automation / Integrations / WordPress / Fields Last commit date
CommentFieldsFactory.php 2 years ago PostFieldsFactory.php 1 year ago index.php 2 years ago
PostFieldsFactory.php
247 lines
1 <?php declare(strict_types = 1);
2
3 namespace MailPoet\Automation\Integrations\WordPress\Fields;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use MailPoet\Automation\Engine\Data\Field;
9 use MailPoet\Automation\Engine\WordPress;
10 use MailPoet\Automation\Integrations\WordPress\Payloads\PostPayload;
11
12 class PostFieldsFactory {
13
14 /** @var WordPress */
15 private $wp;
16
17 public function __construct(
18 WordPress $wp
19 ) {
20 $this->wp = $wp;
21 }
22
23 /**
24 * @return Field[]
25 */
26 public function getFields(): array {
27 return [
28 new Field(
29 'wordpress:post:id',
30 Field::TYPE_INTEGER,
31 __('ID', 'mailpoet'),
32 function (PostPayload $payload) {
33 return $payload->getPostId();
34 }
35 ),
36 new Field(
37 'wordpress:post:type',
38 Field::TYPE_ENUM,
39 __('Post type', 'mailpoet'),
40 function (PostPayload $payload) {
41 $post = $payload->getPost();
42 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
43 return $post ? $post->post_type : null;
44 },
45 [
46 'options' => $this->getPostTypes(),
47 ]
48 ),
49 new Field(
50 'wordpress:post:status',
51 Field::TYPE_ENUM,
52 __('Post status', 'mailpoet'),
53 function (PostPayload $payload) {
54 $post = $payload->getPost();
55 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
56 return $post ? $post->post_status : null;
57 },
58 [
59 'options' => $this->getPostStatuses(),
60 ]
61 ),
62 new Field(
63 'wordpress:post:content',
64 Field::TYPE_STRING,
65 __('Post Content', 'mailpoet'),
66 function (PostPayload $payload) {
67 $post = $payload->getPost();
68 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
69 return $post ? $post->post_content : null;
70 }
71 ),
72 new Field(
73 'wordpress:post:title',
74 Field::TYPE_STRING,
75 __('Post title', 'mailpoet'),
76 function (PostPayload $payload) {
77 $post = $payload->getPost();
78 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
79 return $post ? $post->post_title : null;
80 }
81 ),
82 new Field(
83 'wordpress:post:date',
84 Field::TYPE_DATETIME,
85 __('Post date', 'mailpoet'),
86 function (PostPayload $payload) {
87 $post = $payload->getPost();
88 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
89 return $post ? $post->post_date_gmt : null;
90 }
91 ),
92 new Field(
93 'wordpress:post:modified',
94 Field::TYPE_DATETIME,
95 __('Post last modified', 'mailpoet'),
96 function (PostPayload $payload) {
97 $post = $payload->getPost();
98 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
99 return $post ? $post->post_modified_gmt : null;
100 }
101 ),
102 new Field(
103 'wordpress:post:author',
104 Field::TYPE_INTEGER,
105 __('Post author ID', 'mailpoet'),
106 function (PostPayload $payload) {
107 $post = $payload->getPost();
108 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
109 return $post ? (int)$post->post_author : null;
110 }
111 ),
112 new Field(
113 'wordpress:post:excerpt',
114 Field::TYPE_STRING,
115 __('Post excerpt', 'mailpoet'),
116 function (PostPayload $payload) {
117 $post = $payload->getPost();
118 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
119 return $post ? $post->post_excerpt : null;
120 }
121 ),
122 new Field(
123 'wordpress:post:comment-status',
124 Field::TYPE_BOOLEAN,
125 __('Post open for comments', 'mailpoet'),
126 function (PostPayload $payload) {
127 $post = $payload->getPost();
128 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
129 return $post ? $post->comment_status === 'open' : false;
130 }
131 ),
132 new Field(
133 'wordpress:post:ping-status',
134 Field::TYPE_BOOLEAN,
135 __('Post open for pings', 'mailpoet'),
136 function (PostPayload $payload) {
137 $post = $payload->getPost();
138 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
139 return $post ? $post->ping_status === 'open' : false;
140 }
141 ),
142 new Field(
143 'wordpress:post:password',
144 Field::TYPE_STRING,
145 __('Post password', 'mailpoet'),
146 function (PostPayload $payload) {
147 $post = $payload->getPost();
148 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
149 return $post ? $post->post_password : null;
150 }
151 ),
152 new Field(
153 'wordpress:post:slug',
154 Field::TYPE_STRING,
155 __('Post slug', 'mailpoet'),
156 function (PostPayload $payload) {
157 $post = $payload->getPost();
158 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
159 return $post ? $post->post_name : null;
160 }
161 ),
162 new Field(
163 'wordpress:post:parent',
164 Field::TYPE_INTEGER,
165 __('Post parent ID', 'mailpoet'),
166 function (PostPayload $payload) {
167 $post = $payload->getPost();
168 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
169 return $post ? $post->post_parent : null;
170 }
171 ),
172 new Field(
173 'wordpress:post:has-parent',
174 Field::TYPE_BOOLEAN,
175 __('Post has parent', 'mailpoet'),
176 function (PostPayload $payload) {
177 $post = $payload->getPost();
178 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
179 return $post ? $post->post_parent > 0 : false;
180 }
181 ),
182 new Field(
183 'wordpress:post:guid',
184 Field::TYPE_STRING,
185 __('Post guid', 'mailpoet'),
186 function (PostPayload $payload) {
187 $post = $payload->getPost();
188 return $post ? $post->guid : null;
189 }
190 ),
191 new Field(
192 'wordpress:post:menu-order',
193 Field::TYPE_INTEGER,
194 __('Post menu order', 'mailpoet'),
195 function (PostPayload $payload) {
196 $post = $payload->getPost();
197 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
198 return $post ? $post->menu_order : null;
199 }
200 ),
201 new Field(
202 'wordpress:post:comment-count',
203 Field::TYPE_INTEGER,
204 __('Number of post comments', 'mailpoet'),
205 function (PostPayload $payload) {
206 $post = $payload->getPost();
207 //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
208 return $post ? $post->comment_count : 0;
209 }
210 ),
211 ];
212 }
213
214 private function getPostStatuses(): array {
215 $statuses = $this->wp->getPostStatuses();
216 return array_values(array_map(
217 function($status, $index): array {
218 return [
219 'id' => $index,
220 'name' => $status,
221 ];
222 },
223 $statuses,
224 array_keys($statuses)
225 ));
226 }
227
228 private function getPostTypes(): array {
229 /** @var \WP_Post_Type[] $postTypes */
230 $postTypes = $this->wp->getPostTypes([], 'objects');
231 return array_values(array_map(
232 function(\WP_Post_Type $type): array {
233 return [
234 'id' => $type->name,
235 'name' => $type->label,
236 ];
237 },
238 array_filter(
239 $postTypes,
240 function(\WP_Post_Type $type): bool {
241 return (bool)$type->public;
242 }
243 )
244 ));
245 }
246 }
247