PluginProbe
YayMail – WooCommerce Email Customizer / 3.4
YayMail – WooCommerce Email Customizer v3.4
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 / includes / MailBuilder / PIPTemplate.php

PIPTemplate.php in YayMail – WooCommerce Email Customizer 3.4, at includes/MailBuilder/PIPTemplate.php

263 lines 12.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace YayMail\MailBuilder;
3
4 use YayMail\Page\Source\CustomPostType;
5
6 defined( 'ABSPATH' ) || exit;
7
8 class PIPTemplate {
9
10 public static function handle_trigger() {
11 $list_hooks = array(
12 'woocommerce_order_status_failed_to_processing_notification',
13 'woocommerce_order_status_failed_to_completed_notification',
14 'woocommerce_order_status_pending_to_processing_notification',
15 'woocommerce_order_status_pending_to_completed_notification',
16 'woocommerce_order_status_on-hold_to_processing_notification',
17 'woocommerce_order_status_on-hold_to_completed_notification',
18 );
19 add_action( 'wc_pip_invoice_email_trigger', array( 'YayMail\MailBuilder\PIPTemplate', 'pip_invoice_email' ), 9 );
20 add_action( 'wc_pip_send_email_invoice', array( 'YayMail\MailBuilder\PIPTemplate', 'pip_invoice_email' ), 9 );
21 add_action( 'wc_pip_packing_list_email_trigger', array( 'YayMail\MailBuilder\PIPTemplate', 'pip_packing_list_email' ), 9 );
22 add_action( 'wc_pip_send_email_packing_list', array( 'YayMail\MailBuilder\PIPTemplate', 'pip_packing_list_email' ), 9 );
23 add_action( 'wc_pip_pick_list_email_trigger', array( 'YayMail\MailBuilder\PIPTemplate', 'pip_pick_list_email' ), 9 );
24 add_action( 'wc_pip_send_email_pick_list', array( 'YayMail\MailBuilder\PIPTemplate', 'pip_pick_list_email' ), 9 );
25 foreach ( $list_hooks as $key => $value ) {
26 add_action( $value, array( 'YayMail\MailBuilder\PIPTemplate', 'pip_invoice_email' ), 9 );
27 add_action( $value, array( 'YayMail\MailBuilder\PIPTemplate', 'pip_packing_list_email' ), 9 );
28 add_action( $value, array( 'YayMail\MailBuilder\PIPTemplate', 'pip_pick_list_email' ), 9 );
29 }
30 }
31
32 public function pip_packing_list_email( $object ) {
33 global $wp_filter;
34 if ( is_int( $object ) || $object instanceof \WC_Order ) {
35 $wc_order = wc_get_order( $object );
36 if ( ! $wc_order ) {
37 return;
38 }
39 $object = wc_pip()->get_document( 'packing-list', array( 'order' => $wc_order ) );
40 }
41 if ( ! $object || 0 === $object->get_items_count() ) {
42 return;
43 }
44 $template = 'pip_email_packing_list';
45 $get_mails = \WC()->mailer()->get_emails();
46 $packing_list_email = $get_mails[ $template ];
47 $recipients = $packing_list_email->recipient;
48 $recipients = array_map( 'trim', explode( ',', $recipients ) );
49 if ( ! isset( $object->order ) || ! $object->order || ! $recipients ) {
50 return;
51 }
52
53 $postID = CustomPostType::postIDByTemplate( $template );
54 $template_status = get_post_meta( $postID, '_yaymail_status', true );
55 if ( $template_status ) {
56 $callbacks = $wp_filter['woocommerce_order_status_failed_to_processing_notification']->callbacks[10];
57 foreach ( $callbacks as $key => $value ) {
58 if ( $value['function'][0] instanceof \WC_PIP_Email_Packing_List ) {
59 remove_action( 'woocommerce_order_status_failed_to_processing_notification', $key );
60 }
61 }
62 $callbacks = $wp_filter['woocommerce_order_status_failed_to_completed_notification']->callbacks[10];
63 foreach ( $callbacks as $key => $value ) {
64 if ( $value['function'][0] instanceof \WC_PIP_Email_Packing_List ) {
65 remove_action( 'woocommerce_order_status_failed_to_completed_notification', $key );
66 }
67 }
68 $callbacks = $wp_filter['woocommerce_order_status_pending_to_processing_notification']->callbacks[10];
69 foreach ( $callbacks as $key => $value ) {
70 if ( $value['function'][0] instanceof \WC_PIP_Email_Packing_List ) {
71 remove_action( 'woocommerce_order_status_pending_to_processing_notification', $key );
72 }
73 }
74 $callbacks = $wp_filter['woocommerce_order_status_pending_to_completed_notification']->callbacks[10];
75 foreach ( $callbacks as $key => $value ) {
76 if ( $value['function'][0] instanceof \WC_PIP_Email_Packing_List ) {
77 remove_action( 'woocommerce_order_status_pending_to_completed_notification', $key );
78 }
79 }
80 $callbacks = $wp_filter['woocommerce_order_status_on-hold_to_processing_notification']->callbacks[10];
81 foreach ( $callbacks as $key => $value ) {
82 if ( $value['function'][0] instanceof \WC_PIP_Email_Packing_List ) {
83 remove_action( 'woocommerce_order_status_on-hold_to_processing_notification', $key );
84 }
85 }
86 $callbacks = $wp_filter['woocommerce_order_status_on-hold_to_completed_notification']->callbacks[10];
87 foreach ( $callbacks as $key => $value ) {
88 if ( $value['function'][0] instanceof \WC_PIP_Email_Packing_List ) {
89 remove_action( 'woocommerce_order_status_on-hold_to_completed_notification', $key );
90 }
91 }
92 $callbacks = $wp_filter['wc_pip_packing_list_email_trigger']->callbacks[10];
93 foreach ( $callbacks as $key => $value ) {
94 if ( $value['function'][0] instanceof \WC_PIP_Email_Packing_List ) {
95 remove_action( 'wc_pip_packing_list_email_trigger', $key );
96 }
97 }
98 $callbacks = $wp_filter['wc_pip_send_email_packing_list']->callbacks[10];
99 foreach ( $callbacks as $key => $value ) {
100 if ( $value['function'][0] instanceof \WC_PIP_Email_Packing_List ) {
101 remove_action( 'wc_pip_send_email_packing_list', $key );
102 }
103 }
104 $site_title = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
105 $order_number = $object->order->get_order_number();
106 $order_number = ! empty( $order_number ) ? $order_number : '';
107
108 $order_timestamp = ( $object->order->get_date_created( 'edit' ) ) ? $object->order->get_date_created( 'edit' )->getOffsetTimestamp() : 0;
109 $order_date = ! empty( $order_timestamp ) && $order_timestamp > 0 ? date_i18n( wc_date_format(), $order_timestamp ) : '';
110
111 $invoice_number = $object instanceof \WC_PIP_Document ? $object->get_invoice_number() : '';
112 // translators: woocommerce-pip.
113 $email_subject = sprintf( __( '[%1$s] Packing List for invoice %2$s - order %3$s from %4$s', 'woocommerce-pip' ), $site_title, $invoice_number, $order_number, $order_date );
114 $args = (array) $object;
115 $args['object'] = $object;
116 ob_start();
117 include YAYMAIL_PLUGIN_PATH . 'views/templates/pip-mail-template.php';
118 $html = ob_get_contents();
119 ob_end_clean();
120 if ( is_array( $recipients ) ) {
121 foreach ( $recipients as $recipient ) {
122 wc_mail( $recipient, $email_subject, $html );
123 }
124 }
125 }
126 }
127 public function pip_pick_list_email( $object ) {
128 global $wp_filter;
129 $template = 'pip_email_pick_list';
130 $get_mails = \WC()->mailer()->get_emails();
131 $pick_list_email = $get_mails[ $template ];
132 $recipients = $pick_list_email->recipient;
133 $recipients = array_map( 'trim', explode( ',', $recipients ) );
134 if ( ! $object || ! isset( $object->order_ids ) || ! $object->order_ids || ! is_array( $object->order_ids ) || ! $recipients ) {
135 return;
136 }
137
138 $postID = CustomPostType::postIDByTemplate( $template );
139 $template_status = get_post_meta( $postID, '_yaymail_status', true );
140 if ( $template_status ) {
141 $callbacks = $wp_filter['wc_pip_pick_list_email_trigger']->callbacks[10];
142 foreach ( $callbacks as $key => $value ) {
143 if ( $value['function'][0] instanceof \WC_PIP_Email_Pick_List ) {
144 remove_action( 'wc_pip_pick_list_email_trigger', $key );
145 }
146 }
147 $callbacks = $wp_filter['wc_pip_send_email_pick_list']->callbacks[10];
148 foreach ( $callbacks as $key => $value ) {
149 if ( $value['function'][0] instanceof \WC_PIP_Email_Pick_List ) {
150 remove_action( 'wc_pip_send_email_pick_list', $key );
151 }
152 }
153 $site_title = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
154 $orders_count = count( $object->order_ids );
155 // translators: woocommerce-pip.
156 $orders = sprintf( _n( '%d order', '%d orders', $orders_count, 'woocommerce-pip' ), $orders_count );
157
158 // translators: woocommerce-pip.
159 $email_subject = sprintf( __( '[%1$s] Pick List for %2$s', 'woocommerce-pip' ), $site_title, $orders );
160 $args = (array) $object;
161 $args['object'] = $object;
162 ob_start();
163 include YAYMAIL_PLUGIN_PATH . 'views/templates/pip-mail-template.php';
164 $html = ob_get_contents();
165 ob_end_clean();
166 if ( is_array( $recipients ) ) {
167 foreach ( $recipients as $recipient ) {
168 wc_mail( $recipient, $email_subject, $html );
169 }
170 }
171 }
172 }
173 public function pip_invoice_email( $object ) {
174 global $wp_filter;
175 if ( is_int( $object ) || $object instanceof \WC_Order ) {
176 $wc_order = wc_get_order( $object );
177 if ( ! $wc_order ) {
178 return;
179 }
180 $object = wc_pip()->get_document( 'invoice', array( 'order' => $wc_order ) );
181 }
182 if ( ! $object || ! isset( $object->order ) || ! $object->order instanceof \WC_Order ) {
183 return;
184 }
185 $template = 'pip_email_invoice';
186 $address_email = $object->order->get_billing_email( 'edit' );
187 if ( ! $address_email || ! is_email( $address_email ) ) {
188 return;
189 }
190
191 $postID = CustomPostType::postIDByTemplate( $template );
192 $template_status = get_post_meta( $postID, '_yaymail_status', true );
193 if ( $template_status ) {
194 $callbacks = $wp_filter['woocommerce_order_status_failed_to_processing_notification']->callbacks[10];
195 foreach ( $callbacks as $key => $value ) {
196 if ( $value['function'][0] instanceof \WC_PIP_Email_Invoice ) {
197 remove_action( 'woocommerce_order_status_failed_to_processing_notification', $key );
198 }
199 }
200 $callbacks = $wp_filter['woocommerce_order_status_failed_to_completed_notification']->callbacks[10];
201 foreach ( $callbacks as $key => $value ) {
202 if ( $value['function'][0] instanceof \WC_PIP_Email_Invoice ) {
203 remove_action( 'woocommerce_order_status_failed_to_completed_notification', $key );
204 }
205 }
206 $callbacks = $wp_filter['woocommerce_order_status_pending_to_processing_notification']->callbacks[10];
207 foreach ( $callbacks as $key => $value ) {
208 if ( $value['function'][0] instanceof \WC_PIP_Email_Invoice ) {
209 remove_action( 'woocommerce_order_status_pending_to_processing_notification', $key );
210 }
211 }
212 $callbacks = $wp_filter['woocommerce_order_status_pending_to_completed_notification']->callbacks[10];
213 foreach ( $callbacks as $key => $value ) {
214 if ( $value['function'][0] instanceof \WC_PIP_Email_Invoice ) {
215 remove_action( 'woocommerce_order_status_pending_to_completed_notification', $key );
216 }
217 }
218 $callbacks = $wp_filter['woocommerce_order_status_on-hold_to_processing_notification']->callbacks[10];
219 foreach ( $callbacks as $key => $value ) {
220 if ( $value['function'][0] instanceof \WC_PIP_Email_Invoice ) {
221 remove_action( 'woocommerce_order_status_on-hold_to_processing_notification', $key );
222 }
223 }
224 $callbacks = $wp_filter['woocommerce_order_status_on-hold_to_completed_notification']->callbacks[10];
225 foreach ( $callbacks as $key => $value ) {
226 if ( $value['function'][0] instanceof \WC_PIP_Email_Invoice ) {
227 remove_action( 'woocommerce_order_status_on-hold_to_completed_notification', $key );
228 }
229 }
230 $callbacks = $wp_filter['wc_pip_invoice_email_trigger']->callbacks[10];
231 foreach ( $callbacks as $key => $value ) {
232 if ( $value['function'][0] instanceof \WC_PIP_Email_Invoice ) {
233 remove_action( 'wc_pip_invoice_email_trigger', $key );
234 }
235 }
236 $callbacks = $wp_filter['wc_pip_send_email_invoice']->callbacks[10];
237 foreach ( $callbacks as $key => $value ) {
238 if ( $value['function'][0] instanceof \WC_PIP_Email_Invoice ) {
239 remove_action( 'wc_pip_send_email_invoice', $key );
240 }
241 }
242 $site_title = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
243 $order_number = $object->order->get_order_number();
244 $order_number = ! empty( $order_number ) ? $order_number : '';
245
246 $order_timestamp = ( $object->order->get_date_created( 'edit' ) ) ? $object->order->get_date_created( 'edit' )->getOffsetTimestamp() : 0;
247 $order_date = ! empty( $order_timestamp ) && $order_timestamp > 0 ? date_i18n( wc_date_format(), $order_timestamp ) : '';
248
249 $invoice_number = $object instanceof \WC_PIP_Document ? $object->get_invoice_number() : '';
250
251 // translators: woocommerce-pip.
252 $email_subject = sprintf( __( '[%1$s] Invoice %2$s for order %3$s from %4$s', 'woocommerce-pip' ), $site_title, $invoice_number, $order_number, $order_date );
253 $args = (array) $object;
254 $args['object'] = $object;
255 ob_start();
256 include YAYMAIL_PLUGIN_PATH . 'views/templates/pip-mail-template.php';
257 $html = ob_get_contents();
258 ob_end_clean();
259 wc_mail( $address_email, $email_subject, $html );
260 }
261 }
262 }
263