PluginProbe
YayMail – WooCommerce Email Customizer / 4.4.2
YayMail – WooCommerce Email Customizer v4.4.2
4.4.4 4.4.3 4.4.2 4.4.1 trunk 1.9.6 2.1.4 2.1.5 3.2.2 3.2.6 3.2.7.1 3.2.8.1 3.2.9 3.3 3.3.1 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4 3.4.1 3.4.2 3.4.3 All 55 releases
yaymail / src / Shortcodes / CommonShortcodes.php

CommonShortcodes.php in YayMail – WooCommerce Email Customizer 4.4.2, at src/Shortcodes/CommonShortcodes.php

356 lines 13.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace YayMail\Shortcodes;
4
5 use YayMail\Abstracts\BaseShortcode;
6 use YayMail\Utils\Helpers;
7 use YayMail\Utils\TemplateHelpers;
8 use YayMail\Utils\SingletonTrait;
9
10 /**
11 * @method: static CommonShortcodes get_instance()
12 */
13 class CommonShortcodes extends BaseShortcode {
14
15 use SingletonTrait;
16
17 public $available_email_ids = [ YAYMAIL_ALL_EMAILS ];
18
19 public function get_shortcodes() {
20 $shortcodes = [
21 [
22 'name' => 'yaymail_site_name',
23 'description' => __( 'Site Name', 'yaymail' ),
24 'group' => 'general',
25 'callback' => [ $this, 'yaymail_site_name' ],
26 ],
27 [
28 'name' => 'yaymail_site_link',
29 'description' => __( 'Site Link', 'yaymail' ),
30 'attributes' => [
31 'text_link' => __( 'Home URL', 'yaymail' ),
32 ],
33 'group' => 'general',
34 'callback' => [ $this, 'yaymail_site_link' ],
35 ],
36 [
37 'name' => 'yaymail_site_url',
38 'description' => __( 'Site URL (String)', 'yaymail' ),
39 'group' => 'general',
40 'callback' => [ $this, 'yaymail_site_url' ],
41 ],
42 [
43 'name' => 'yaymail_domain',
44 'description' => __( 'Domain', 'yaymail' ),
45 'group' => 'general',
46 'callback' => [ $this, 'yaymail_domain' ],
47 ],
48 [
49 'name' => 'yaymail_user_account_link',
50 'description' => __( 'User Account Link', 'yaymail' ),
51 'attributes' => [
52 'text_link' => __( 'My Account', 'yaymail' ),
53 ],
54 'group' => 'general',
55 'callback' => [ $this, 'yaymail_user_account_link' ],
56 ],
57 [
58 'name' => 'yaymail_user_account_url',
59 'description' => __( 'User Account URL (String)', 'yaymail' ),
60 'group' => 'general',
61 'callback' => [ $this, 'yaymail_user_account_url' ],
62 ],
63 [
64 'name' => 'yaymail_user_email',
65 'description' => __( 'User Email', 'yaymail' ),
66 'group' => 'general',
67 'callback' => [ $this, 'yaymail_user_email' ],
68 ],
69 [
70 'name' => 'yaymail_user_id',
71 'description' => __( 'User ID', 'yaymail' ),
72 'group' => 'general',
73 'callback' => [ $this, 'yaymail_user_id' ],
74 ],
75 [
76 'name' => 'yaymail_customer_username',
77 'description' => __( 'Username', 'yaymail' ),
78 'group' => 'general',
79 'callback' => [ $this, 'yaymail_customer_username' ],
80 ],
81 [
82 'name' => 'yaymail_customer_name',
83 'description' => __( 'Name', 'yaymail' ),
84 'group' => 'general',
85 'callback' => [ $this, 'yaymail_customer_name' ],
86 ],
87 [
88 'name' => 'yaymail_customer_first_name',
89 'description' => __( 'First Name', 'yaymail' ),
90 'group' => 'general',
91 'callback' => [ $this, 'yaymail_customer_first_name' ],
92 ],
93 [
94 'name' => 'yaymail_customer_last_name',
95 'description' => __( 'Last Name', 'yaymail' ),
96 'group' => 'general',
97 'callback' => [ $this, 'yaymail_customer_last_name' ],
98 ],
99 [
100 'name' => 'yaymail_get_heading',
101 'description' => __( 'Email heading', 'yaymail' ),
102 'group' => 'general',
103 'callback' => [ $this, 'yaymail_get_heading' ],
104 ],
105 [
106 'name' => 'yaymail_additional_content',
107 'description' => __( 'Additional Content', 'yaymail' ),
108 'group' => 'general',
109 'callback' => [ $this, 'yaymail_additional_content' ],
110 ],
111 [
112 'name' => 'yaymail_store_email',
113 'description' => __( 'Store Email', 'yaymail' ),
114 'group' => 'general',
115 'callback' => [ $this, 'yaymail_store_email' ],
116 ],
117 ];
118
119 return apply_filters( 'yaymail_common_shortcodes', $shortcodes );
120 }
121
122 public function yaymail_site_name() {
123 return esc_html( get_bloginfo( 'name' ) );
124 }
125
126 public function yaymail_site_link( $data, $shortcode_atts = [] ) {
127 $is_placeholder = isset( $data['is_placeholder'] ) ? $data['is_placeholder'] : false;
128
129 $text_link = isset( $shortcode_atts['text_link'] ) ? $shortcode_atts['text_link'] : TemplateHelpers::get_content_as_placeholder( 'text_link', __( 'Home URL', 'yaymail' ), $is_placeholder );
130
131 return '<a href="' . esc_url( get_home_url() ) . '"> ' . $text_link . ' </a>';
132 }
133
134 public function yaymail_site_url() {
135 return esc_url( get_home_url() );
136 }
137
138 public function yaymail_domain() {
139 if ( ! empty( wp_parse_url( get_site_url() )['host'] ) ) {
140 return wp_parse_url( get_site_url() )['host'];
141 } return '';
142 }
143
144 public function yaymail_user_account_link( $data, $shortcode_atts = [] ) {
145 $is_placeholder = isset( $data['is_placeholder'] ) ? $data['is_placeholder'] : false;
146
147 $text_link = isset( $shortcode_atts['text_link'] ) ? $shortcode_atts['text_link'] : TemplateHelpers::get_content_as_placeholder( 'text_link', __( 'My Account', 'yaymail' ), $is_placeholder );
148
149 return '<a href="' . esc_url( function_exists( 'WC' ) && defined( 'YAYMAIL_VERSION' ) ? wc_get_page_permalink( 'myaccount' ) : '' ) . '"> ' . $text_link . ' </a>';
150 }
151
152 public function yaymail_user_account_url() {
153 return esc_url( function_exists( 'WC' ) && defined( 'YAYMAIL_VERSION' ) ? wc_get_page_permalink( 'myaccount' ) : '' );
154 }
155
156 public function yaymail_user_email( $data ) {
157
158 $render_data = isset( $data['render_data'] ) ? $data['render_data'] : [];
159
160 if ( ! empty( $render_data['is_sample'] ) ) {
161 return 'johndoe@gmail.com';
162 }
163
164 $order = Helpers::get_order_from_shortcode_data( $render_data );
165 if ( empty( $order ) ) {
166 if ( isset( $render_data['email'] ) && isset( $render_data['email']->user_email ) ) {
167 return $render_data['email']->user_email;
168 }
169 $user = wp_get_current_user();
170 return ! empty( $user ) ? $user->data->user_email : '';
171 } else {
172 $user = $order->get_user();
173 if ( ! empty( $user ) && ! empty( $user->user_email ) ) {
174 return $user->user_email;
175 } else {
176 return $order->get_billing_email();
177 }
178 }
179 }
180
181 public function yaymail_user_id( $data ) {
182
183 $render_data = isset( $data['render_data'] ) ? $data['render_data'] : [];
184
185 if ( ! empty( $render_data['is_sample'] ) ) {
186 return '0';
187 }
188
189 $order = Helpers::get_order_from_shortcode_data( $render_data );
190 if ( empty( $order ) ) {
191 if ( isset( $render_data['email'] ) && isset( $render_data['email']->object ) ) {
192 if ( $render_data['email']->object instanceof \WP_User ) {
193 return $render_data['email']->object->ID;
194 }
195 }
196 $user = wp_get_current_user();
197 return ! empty( $user ) ? $user->ID : '0';
198 } else {
199 $user = $order->get_user();
200 if ( ! empty( $user ) && ! empty( $user->ID ) ) {
201 return $user->ID;
202 } else {
203 $user = get_user_by( 'email', $order->get_billing_email() );
204 if ( ! empty( $user ) && ! empty( $user->ID ) ) {
205 return $user->ID;
206 }
207 return '';
208 }
209 }
210 }
211
212 public function yaymail_customer_username( $data ) {
213 $render_data = isset( $data['render_data'] ) ? $data['render_data'] : [];
214
215 if ( ! empty( $render_data['is_sample'] ) ) {
216 return 'johndoe';
217 }
218
219 $order = Helpers::get_order_from_shortcode_data( $render_data );
220 if ( empty( $order ) ) {
221 if ( isset( $render_data['email'] ) && isset( $render_data['email']->user_login ) ) {
222 return $render_data['email']->user_login;
223 }
224 $user = wp_get_current_user();
225 return ! empty( $user ) ? $user->user_login : '';
226 } else {
227 $user = $order->get_user();
228 if ( ! empty( $user ) && ! empty( $user->user_login ) ) {
229 return $user->user_login;
230 } else {
231 $user = get_user_by( 'email', $order->get_billing_email() );
232 if ( ! empty( $user ) && ! empty( $user->user_login ) ) {
233 return $user->user_login;
234 }
235 return '';
236 }
237 }
238 }
239
240 public function yaymail_customer_name( $data ) {
241 $render_data = isset( $data['render_data'] ) ? $data['render_data'] : [];
242
243 if ( ! empty( $render_data['is_sample'] ) ) {
244 return 'John Doe';
245 }
246 $order = Helpers::get_order_from_shortcode_data( $render_data );
247 if ( empty( $order ) ) {
248 if ( isset( $render_data['email'] ) && isset( $render_data['email']->user_email ) ) {
249 $user = get_user_by( 'email', $render_data['email']->user_email );
250 } else {
251 $user = wp_get_current_user();
252 }
253 if ( ! empty( $user ) ) {
254 $name = get_user_meta( $user->ID, 'first_name', true ) . ' ' . get_user_meta( $user->ID, 'last_name', true );
255 return ' ' !== $name ? $name : $user->user_nicename;
256 }
257 return '';
258 } else {
259 $user = $order->get_user();
260 if ( ! empty( $user ) ) {
261 $name = get_user_meta( $user->ID, 'first_name', true ) . ' ' . get_user_meta( $user->ID, 'last_name', true );
262 if ( ' ' === $name ) {
263 $name = $user->user_nicename;
264 }
265 }
266 if ( empty( $name ) ) {
267 $name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
268 }
269 return ! empty( $name ) ? $name : '';
270 }//end if
271 }
272
273 public function yaymail_customer_first_name( $data ) {
274 $render_data = isset( $data['render_data'] ) ? $data['render_data'] : [];
275 if ( ! empty( $render_data['is_sample'] ) ) {
276 return 'John';
277 }
278 $order = Helpers::get_order_from_shortcode_data( $render_data );
279 if ( empty( $order ) ) {
280 if ( isset( $render_data['email'] ) && isset( $render_data['email']->user_email ) ) {
281 $user = get_user_by( 'email', $render_data['email']->user_email );
282 } else {
283 $user = wp_get_current_user();
284 }
285 if ( ! empty( $user ) ) {
286 return get_user_meta( $user->ID, 'first_name', true );
287 }
288 return '';
289 } else {
290 $user = $order->get_user();
291 if ( ! empty( $user ) ) {
292 $name = get_user_meta( $user->ID, 'first_name', true );
293 }
294 if ( empty( $name ) ) {
295 $name = $order->get_billing_first_name();
296 }
297 return $name;
298 }
299 }
300
301 public function yaymail_customer_last_name( $data ) {
302 $render_data = isset( $data['render_data'] ) ? $data['render_data'] : [];
303 if ( ! empty( $render_data['is_sample'] ) ) {
304 return 'Doe';
305 }
306 $order = Helpers::get_order_from_shortcode_data( $render_data );
307 if ( empty( $order ) ) {
308 if ( isset( $render_data['email'] ) && isset( $render_data['email']->user_email ) ) {
309 $user = get_user_by( 'email', $render_data['email']->user_email );
310 } else {
311 $user = wp_get_current_user();
312 }
313 if ( ! empty( $user ) ) {
314 return get_user_meta( $user->ID, 'last_name', true );
315 }
316 return '';
317 } else {
318 $user = $order->get_user();
319 if ( ! empty( $user ) ) {
320 $name = get_user_meta( $user->ID, 'last_name', true );
321 }
322 if ( empty( $name ) ) {
323 $name = $order->get_billing_last_name();
324 }
325 return $name;
326 }
327 }
328
329 public function yaymail_get_heading( $data ) {
330 $render_data = isset( $data['render_data'] ) ? $data['render_data'] : [];
331 if ( isset( $render_data['email_heading'] ) ) {
332 return $render_data['email_heading'];
333 } else {
334 $order = Helpers::get_order_from_shortcode_data( $render_data );
335 if ( ! empty( $order ) && isset( $render_data['email'] ) && 'customer_refunded_order' === $render_data['email']->id ) {
336 return 'Order Refunded: ' . ! empty( $order ) ? $order->get_id() : '1';
337 }
338 }
339 return __( 'Email heading', 'yaymail' );
340 }
341
342 public function yaymail_additional_content( $data ) {
343 $render_data = isset( $data['render_data'] ) ? $data['render_data'] : [];
344 if ( isset( $render_data['additional_content'] ) ) {
345 return wpautop( wptexturize( $render_data['additional_content'] ) );
346 }
347 return __( 'Additional content', 'yaymail' );
348 }
349
350 public function yaymail_store_email( $data ) {
351 $store_email = sanitize_email( get_option( 'woocommerce_email_from_address' ) ?? '' );
352
353 return $store_email;
354 }
355 }
356