PluginProbe
YayMail – WooCommerce Email Customizer / 3.3.7
YayMail – WooCommerce Email Customizer v3.3.7
4.4.6 4.4.5 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 All 57 releases
yaymail / includes / Page / Settings.php

Settings.php in YayMail – WooCommerce Email Customizer 3.3.7, at includes/Page/Settings.php

679 lines 29.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace YayMail\Page;
4
5 use stdClass;
6 use YayMail\Ajax;
7 use YayMail\Page\Source\CustomPostType;
8 use YayMail\Page\Source\DefaultElement;
9 use YayMail\Templates\Templates;
10 use YayMail\I18n;
11 use YayMail\Helper\Helper;
12 use YayMail\Helper\PluginSupported;
13
14
15 defined( 'ABSPATH' ) || exit;
16 /**
17 * Settings Page
18 */
19 class Settings {
20
21 protected static $instance = null;
22
23 public static function getInstance() {
24 if ( null == self::$instance ) {
25 self::$instance = new self();
26 self::$instance->doHooks();
27 }
28
29 return self::$instance;
30 }
31
32 private $pageId = null;
33 private $templateAccount;
34 private $emails = null;
35 public function doHooks() {
36 $this->templateAccount = array( 'customer_new_account', 'customer_new_account_activation', 'customer_reset_password' );
37
38 // Register Custom Post Type use Email Builder
39 add_action( 'init', array( $this, 'registerCustomPostType' ) );
40
41 // Register Menu
42 add_action( 'admin_menu', array( $this, 'settingsMenu' ), YAYMAIL_MENU_PRIORITY );
43
44 // Register Style & Script use for Menu Backend
45 add_action( 'admin_enqueue_scripts', array( $this, 'enqueueAdminScripts' ) );
46
47 add_filter( 'plugin_action_links_' . YAYMAIL_PLUGIN_BASENAME, array( $this, 'plugin_action_links' ) );
48
49 add_filter( 'plugin_row_meta', array( $this, 'add_support_and_docs_links' ), 10, 2 );
50
51 // free version
52 $optionNotice = get_option( 'yaymail_notice' );
53 if ( time() >= (int) $optionNotice ) {
54 add_action( 'admin_notices', array( $this, 'renderNotice' ) );
55 }
56
57 // Ajax display notive
58 add_action( 'wp_ajax_yaymail_notice', array( $this, 'yaymailNotice' ) );
59
60 // Add Woocommerce email setting columns
61 add_filter( 'woocommerce_email_setting_columns', array( $this, 'yaymail_email_setting_columns' ) );
62 add_action( 'woocommerce_email_setting_column_template', array( $this, 'column_template' ) );
63
64 // Add WP_Query argument to search either by post_title or meta_value
65 add_action(
66 'pre_get_posts',
67 array( $this, 'search_by_meta_value_or_post_title' )
68 );
69
70 // Excute Ajax
71 Ajax::getInstance();
72 }
73 public function __construct() {}
74
75 public function yaymail_email_setting_columns( $array ) {
76 if ( isset( $array['actions'] ) ) {
77 unset( $array['actions'] );
78 return array_merge(
79 $array,
80 array(
81 'template' => '',
82 'actions' => '',
83 )
84 );
85 }
86 return $array;
87 }
88 public function column_template( $email ) {
89 $email_id = $email->id;
90 if ( 'yith-coupon-email-system' === $email->id ) {
91 if ( class_exists( 'YayMailYITHWooCouponEmailSystem\templateDefault\DefaultCouponEmailSystem' ) ) {
92 $email_id = 'YWCES_register';
93 }
94 }
95 echo '<td class="wc-email-settings-table-template">
96 <a class="button alignright" target="_blank" href="' . esc_attr( admin_url( 'admin.php?page=yaymail-settings' ) ) . '&template=' . esc_attr( $email_id ) . '">' . esc_html( __( 'Customize with YayMail', 'yaymail' ) ) . '</a></td>';
97 }
98
99 public function renderNotice() {
100
101 include YAYMAIL_PLUGIN_PATH . '/includes/Page/Source/DisplayAddonNotice.php';
102 }
103
104 public function yaymailNotice() {
105 if ( isset( $_POST ) ) {
106 $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : null;
107
108 if ( ! wp_verify_nonce( $nonce, 'yaymail_nonce' ) ) {
109 wp_send_json_error( array( 'status' => 'Wrong nonce validate!' ) );
110 exit();
111 }
112 update_option( 'yaymail_notice', time() + 60 * 60 * 24 * 60 ); // After 60 days show
113 wp_send_json_success();
114 }
115 wp_send_json_error( array( 'message' => 'Update fail!' ) );
116 }
117
118 public function plugin_action_links( $links ) {
119 $action_links = array(
120 'settings' => '<a href="' . admin_url( 'admin.php?page=yaymail-settings' ) . '" aria-label="' . esc_attr__( 'View WooCommerce Email Builder', 'yaymail' ) . '">' . esc_html__( 'Start Customizing', 'yaymail' ) . '</a>',
121 );
122 $links[] = '<a target="_blank" href="https://yaycommerce.com/yaymail-woocommerce-email-customizer/" style="color: #43B854; font-weight: bold">' . __( 'Go Pro', 'yaymail' ) . '</a>';
123 return array_merge( $action_links, $links );
124 }
125
126 public function add_support_and_docs_links( $plugin_meta, $plugin_file ) {
127 if ( YAYMAIL_PLUGIN_BASENAME === $plugin_file ) {
128 $plugin_meta[] = '<a target="_blank" href="https://docs.yaycommerce.com/yaymail/getting-started/introduction">Docs</a>';
129 $plugin_meta[] = '<a target="_blank" href="https://yaycommerce.com/support/">Support</a>';
130 }
131 return $plugin_meta;
132 }
133
134 public function registerCustomPostType() {
135 $labels = array(
136 'name' => __( 'Email Template', 'yaymail' ),
137 'singular_name' => __( 'Email Template', 'yaymail' ),
138 'add_new' => __( 'Add New Email Template', 'yaymail' ),
139 'add_new_item' => __( 'Add a new Email Template', 'yaymail' ),
140 'edit_item' => __( 'Edit Email Template', 'yaymail' ),
141 'new_item' => __( 'New Email Template', 'yaymail' ),
142 'view_item' => __( 'View Email Template', 'yaymail' ),
143 'search_items' => __( 'Search Email Template', 'yaymail' ),
144 'not_found' => __( 'No Email Template found', 'yaymail' ),
145 'not_found_in_trash' => __( 'No Email Template currently trashed', 'yaymail' ),
146 'parent_item_colon' => '',
147 );
148 $capabilities = array();
149 $args = array(
150 'labels' => $labels,
151 'public' => true,
152 'publicly_queryable' => true,
153 'show_ui' => false,
154 'query_var' => true,
155 'rewrite' => true,
156 'capability_type' => 'yaymail_template',
157 'capabilities' => $capabilities,
158 'hierarchical' => false,
159 'menu_position' => null,
160 'exclude_from_search' => true,
161 'publicly_queryable' => false,
162 'supports' => array( 'title', 'author', 'thumbnail' ),
163 );
164 register_post_type( 'yaymail_template', $args );
165 }
166 public function settingsMenu() {
167 add_submenu_page( 'yaycommerce', __( 'Email Builder Settings', 'yaymail' ), __( 'YayMail', 'yaymail' ), 'manage_woocommerce', $this->getPageId(), array( $this, 'settingsPage' ), 0 );
168 }
169
170 public function nitWebPluginRegisterButtons( $buttons ) {
171 $buttons[] = 'table';
172 $buttons[] = 'searchreplace';
173 $buttons[] = 'visualblocks';
174 $buttons[] = 'code';
175 $buttons[] = 'insertdatetime';
176 $buttons[] = 'autolink';
177 $buttons[] = 'contextmenu';
178 $buttons[] = 'advlist';
179 return $buttons;
180 }
181
182 public function njtWebPluginRegisterPlugin( $plugin_array ) {
183 $plugin_array['table'] = YAYMAIL_PLUGIN_URL . 'assets/tinymce/table/plugin.min.js';
184 $plugin_array['searchreplace'] = YAYMAIL_PLUGIN_URL . 'assets/tinymce/searchreplace/plugin.min.js';
185 $plugin_array['visualblocks'] = YAYMAIL_PLUGIN_URL . 'assets/tinymce/visualblocks/plugin.min.js';
186 $plugin_array['code'] = YAYMAIL_PLUGIN_URL . 'assets/tinymce/code/plugin.min.js';
187 $plugin_array['insertdatetime'] = YAYMAIL_PLUGIN_URL . 'assets/tinymce/insertdatetime/plugin.min.js';
188 $plugin_array['autolink'] = YAYMAIL_PLUGIN_URL . 'assets/tinymce/autolink/plugin.min.js';
189 $plugin_array['contextmenu'] = YAYMAIL_PLUGIN_URL . 'assets/tinymce/contextmenu/plugin.min.js';
190 $plugin_array['advlist'] = YAYMAIL_PLUGIN_URL . 'assets/tinymce/advlist/plugin.min.js';
191 return $plugin_array;
192 }
193
194 public function settingsPage() {
195 // When load this page will not show adminbar
196 ?>
197 <style type="text/css">
198 #wpcontent, #footer {opacity: 0}
199 #adminmenuback, #adminmenuwrap { display: none !important; }
200 </style>
201 <script type="text/javascript" id="yaymail-onload">
202 jQuery(document).ready( function() {
203 jQuery('#adminmenuback, #adminmenuwrap').remove();
204 });
205 </script>
206 <?php
207 // add new buttons
208 add_filter( 'mce_buttons', array( $this, 'nitWebPluginRegisterButtons' ) );
209
210 // Load the TinyMCE plugin
211 add_filter( 'mce_external_plugins', array( $this, 'njtWebPluginRegisterPlugin' ) );
212 $viewPath = YAYMAIL_PLUGIN_PATH . 'views/pages/html-settings.php';
213 include_once $viewPath;
214 }
215
216 public function enqueueAdminScripts( $screenId ) {
217 if ( class_exists( 'SitePress' ) ) {
218 global $sitepress_settings, $sitepress;
219 $custom_posts_sync = $sitepress_settings['custom_posts_sync_option'];
220 $custom_posts_sync['yaymail_template'] = 0;
221 $sitepress->set_setting( 'custom_posts_sync_option', $custom_posts_sync, true );
222 }
223 if ( class_exists( 'Polylang' ) ) {
224 $polylang_options = get_option( 'polylang' );
225 if ( isset( $polylang_options['post_types'] ) ) {
226 $yaymail_template_position = array_search( 'yaymail_template', $polylang_options['post_types'] );
227 if ( false !== $yaymail_template_position ) {
228 $polylang_options['post_types'] = array_splice( $polylang_options['post_types'], $yaymail_template_position + 1, 1 );
229 update_option( 'polylang', $polylang_options );
230 }
231 }
232 }
233 if ( strpos( $screenId, 'yaymail-settings' ) !== false && class_exists( 'WC_Emails' ) ) {
234 // Filter to active tinymce
235 add_filter( 'user_can_richedit', '__return_true', PHP_INT_MAX );
236 // Get list template from Woo
237 $wc_emails = \WC_Emails::instance();
238 $this->emails = (array) $wc_emails::instance()->emails;
239 unset( $this->emails['WC_TrackShip_Email_Manager'] );
240 unset( $this->emails['xoo_uv_verification']->content_html_args );
241 if ( isset( $this->emails['WC_GZD_Email_Customer_Shipment'] ) ) {
242 $partial_email = new stdClass();
243 $partial_email->id = 'customer_partial_shipment';
244 $partial_email->title = 'Order partial shipped';
245 $customer_shipment_position = array_search( 'WC_GZD_Email_Customer_Shipment', array_keys( $this->emails ) );
246 $this->emails = array_merge(
247 array_slice( $this->emails, 0, $customer_shipment_position ),
248 array( 'WC_GZD_Email_Customer_Partial_Shipment' => $partial_email ),
249 array_slice( $this->emails, $customer_shipment_position )
250 );
251 }
252 if ( class_exists( 'AW_Referrals_Plugin_Data' ) && ( is_plugin_active( 'yaymail-addon-for-automatewoo/yaymail-automatewoo.php' ) || is_plugin_active( 'email-customizer-automatewoo/yaymail-automatewoo.php' ) ) ) {
253 $referrals_email = new stdClass();
254 $referrals_email->id = 'AutomateWoo_Referrals_Email';
255 $referrals_email->title = __( 'AutomateWoo Referrals Email', 'yaymail' );
256 $this->emails = array_merge( $this->emails, array( 'AutomateWoo_Referrals_Email' => $referrals_email ) );
257 }
258 // Insert database all order template from Woo
259 $templateEmail = Templates::getInstance();
260 $templates = $templateEmail::getList();
261
262 foreach ( $templates as $key => $template ) {
263 if ( ! CustomPostType::postIDByTemplate( $key ) ) {
264 $arr = array(
265 'mess' => '',
266 'post_date' => current_time( 'Y-m-d H:i:s' ),
267 'post_type' => 'yaymail_template',
268 'post_status' => 'publish',
269 '_yaymail_template' => $key,
270 '_email_backgroundColor_settings' => 'rgb(236, 236, 236)',
271 '_yaymail_elements' => json_decode( $template['elements'], true ),
272
273 );
274 $insert = CustomPostType::insert( $arr );
275 }
276 }
277
278 /*
279 @@@@ Enable Disable
280 @@@@ note: Note the default value section is required when displaying in vue
281 */
282
283 $settingDefaultEnableDisable = array(
284 'new_order' => 1,
285 'cancelled_order' => 1,
286 'failed_order' => 1,
287 'customer_on_hold_order' => 1,
288 'customer_processing_order' => 1,
289 'customer_completed_order' => 1,
290 'customer_refunded_order' => 1,
291 'customer_invoice' => 0,
292 'customer_note' => 0,
293 'customer_reset_password' => 0,
294 'customer_new_account' => 0,
295 );
296
297 $settingEnableDisables = ( CustomPostType::templateEnableDisable( false ) ) ? CustomPostType::templateEnableDisable( false ) : $settingDefaultEnableDisable;
298
299 foreach ( $this->emails as $key => $value ) {
300 if ( 'ORDDD_Email_Delivery_Reminder' == $key ) {
301 $value->id = 'orddd_delivery_reminder_customer';
302 }
303 if ( 'WCVendors_Admin_Notify_Approved' == $key ) {
304 $value->id = 'admin_notify_approved';
305 }
306 if ( ! array_key_exists( $value->id, $settingEnableDisables ) ) {
307 $settingEnableDisables[ $value->id ] = '0';
308 }
309 }
310
311 $this->emails = apply_filters( 'YaymailCreateFollowUpTemplates', $this->emails );
312 $settingEnableDisables = apply_filters( 'YaymailCreateSelectFollowUpTemplates', $settingEnableDisables );
313
314 $this->emails = apply_filters( 'YaymailCreateAutomateWooTemplates', $this->emails );
315 $settingEnableDisables = apply_filters( 'YaymailCreateSelectAutomateWooTemplates', $settingEnableDisables );
316
317 $this->emails = apply_filters( 'YaymailCreateTrackShipWooTemplates', $this->emails );
318 $settingEnableDisables = apply_filters( 'YaymailCreateSelectTrackShipWooTemplates', $settingEnableDisables );
319
320 $this->emails = apply_filters( 'YaymailCreateWCFMWooFMTemplates', $this->emails );
321 $settingEnableDisables = apply_filters( 'YaymailCreateSelectWCFMWooFMTemplates', $settingEnableDisables );
322
323 $this->emails = apply_filters( 'YaymailCreateGermanMarketTemplates', $this->emails );
324
325 $this->emails = apply_filters( 'YaymailCreateListYWCESTemplates', $this->emails );
326 $settingEnableDisables = apply_filters( 'YaymailCreateSelectYWCESTemplates', $settingEnableDisables );
327
328 $this->emails = apply_filters( 'YaymailCreateWcCartAbandonmentRecoveryTemplates', $this->emails );
329 $settingEnableDisables = apply_filters( 'YaymailCreateSelectWcCartAbandonmentRecoveryTemplates', $settingEnableDisables );
330
331 $this->emails = apply_filters( 'YaymailCreateB2BMarketTemplates', $this->emails );
332 $settingEnableDisables = apply_filters( 'YaymailCreateSelectB2BMarketTemplates', $settingEnableDisables );
333
334 $this->emails = apply_filters( 'YaymailCreateShopMagicTemplates', $this->emails );
335 $settingEnableDisables = apply_filters( 'YaymailCreateSelectShopMagicTemplates', $settingEnableDisables );
336
337 $settingDefaultGenerals = array(
338 'payment' => 2,
339 'product_image' => 0,
340 'image_size' => 'thumbnail',
341 'image_width' => '30px',
342 'image_height' => '30px',
343 'product_sku' => 1,
344 'product_des' => 0,
345 'product_hyper_links' => 0,
346 'product_regular_price' => 0,
347 'product_item_cost' => 0,
348 'background_color_table_items' => '#e5e5e5',
349 'content_items_color' => '#636363',
350 'title_items_color' => '#7f54b3',
351 'container_width' => '605px',
352 'order_url' => '',
353 'custom_css' => '',
354 'enable_css_custom' => 'no',
355 'image_position' => 'Top',
356 );
357 $settingGenerals = get_option( 'yaymail_settings' ) ? get_option( 'yaymail_settings' ) : $settingDefaultGenerals;
358 foreach ( $settingDefaultEnableDisable as $keyDefaultEnableDisable => $settingDefaultEnableDisable ) {
359 if ( ! array_key_exists( $keyDefaultEnableDisable, $settingEnableDisables ) ) {
360 $settingEnableDisables[ $keyDefaultEnableDisable ] = $settingDefaultEnableDisable;
361 };
362 }
363 $settings['enableDisable'] = $settingEnableDisables;
364
365 /*
366 @@@@ General
367 @@@@ note: Note the default value section is required when displaying in vue
368 */
369
370 $settingGenerals = get_option( 'yaymail_settings' ) ? get_option( 'yaymail_settings' ) : $settingDefaultGenerals;
371 foreach ( $settingDefaultGenerals as $keyDefaultGeneral => $settingGeneral ) {
372 if ( ! array_key_exists( $keyDefaultGeneral, $settingGenerals ) ) {
373 $settingGenerals[ $keyDefaultGeneral ] = $settingDefaultGenerals[ $keyDefaultGeneral ];
374 };
375 }
376
377 $settingGenerals['direction_rtl'] = get_option( 'yaymail_direction' ) ? get_option( 'yaymail_direction' ) : 'ltr';
378 $settings['general'] = $settingGenerals;
379
380 $scriptId = $this->getPageId();
381 $order = CustomPostType::getListOrders();
382
383 wp_deregister_script( 'vue' );
384 wp_deregister_script( 'vuex' );
385
386 wp_enqueue_script( 'vue', YAYMAIL_PLUGIN_URL . ( YAYMAIL_DEBUG ? 'assets/libs/vue.js' : 'assets/libs/vue.min.js' ), '', YAYMAIL_VERSION, true );
387 wp_enqueue_script( 'vuex', YAYMAIL_PLUGIN_URL . 'assets/libs/vuex.js', '', YAYMAIL_VERSION, true );
388
389 wp_enqueue_script( $scriptId, YAYMAIL_PLUGIN_URL . 'assets/dist/js/main.js', array( 'jquery' ), YAYMAIL_VERSION, true );
390 wp_enqueue_style( $scriptId, YAYMAIL_PLUGIN_URL . 'assets/dist/css/main.css', array(), YAYMAIL_VERSION );
391
392 wp_enqueue_script( $scriptId . '-script', YAYMAIL_PLUGIN_URL . 'assets/admin/js/script.js', '', YAYMAIL_VERSION, true );
393 wp_enqueue_script( $scriptId . '-plugin-install', YAYMAIL_PLUGIN_URL . 'assets/admin/js/plugin-install.js', '', YAYMAIL_VERSION, true );
394 $yaymailSettings = get_option( 'yaymail_settings' );
395
396 // Load ACE Editor -Start
397 if ( isset( $yaymailSettings['enable_css_custom'] ) && 'yes' == $yaymailSettings['enable_css_custom'] ) {
398 wp_enqueue_script( $scriptId . 'ace-script', YAYMAIL_PLUGIN_URL . 'assets/aceeditor/ace.js', '', YAYMAIL_VERSION, true );
399 wp_enqueue_script( $scriptId . 'ace1-script', YAYMAIL_PLUGIN_URL . 'assets/aceeditor/ext-language_tools.js', '', YAYMAIL_VERSION, true );
400 wp_enqueue_script( $scriptId . 'ace2-script', YAYMAIL_PLUGIN_URL . 'assets/aceeditor/mode-css.js', '', YAYMAIL_VERSION, true );
401 wp_enqueue_script( $scriptId . 'ace3-script', YAYMAIL_PLUGIN_URL . 'assets/aceeditor/theme-merbivore_soft.js', '', YAYMAIL_VERSION, true );
402 wp_enqueue_script( $scriptId . 'ace4-script', YAYMAIL_PLUGIN_URL . 'assets/aceeditor/worker-css.js', '', YAYMAIL_VERSION, true );
403 wp_enqueue_script( $scriptId . 'ace5-script', YAYMAIL_PLUGIN_URL . 'assets/aceeditor/snippets/css.js ', '', YAYMAIL_VERSION, true );
404 } else {
405 wp_dequeue_script( $scriptId . 'ace-script' );
406 wp_dequeue_script( $scriptId . 'ace1-script' );
407 wp_dequeue_script( $scriptId . 'ace2-script' );
408 wp_dequeue_script( $scriptId . 'ace3-script' );
409 wp_dequeue_script( $scriptId . 'ace4-script' );
410 wp_dequeue_script( $scriptId . 'ace5-script' );
411 }
412 // Load ACE Editor -End
413 // Css for page admin of WordPress.
414 wp_enqueue_style( $scriptId . '-css', YAYMAIL_PLUGIN_URL . 'assets/admin/css/css.css', array(), YAYMAIL_VERSION );
415 $current_user = wp_get_current_user();
416 $default_email_test = false != get_user_meta( get_current_user_id(), 'yaymail_default_email_test', true ) ? get_user_meta( get_current_user_id(), 'yaymail_default_email_test', true ) : $current_user->user_email;
417 $element = new DefaultElement();
418 $yaymailSettingsDefaultLogo = get_option( 'yaymail_settings_default_logo' );
419 $setDefaultLogo = false != $yaymailSettingsDefaultLogo ? $yaymailSettingsDefaultLogo['set_default'] : '0';
420 $yaymailSettingsDefaultFooter = get_option( 'yaymail_settings_default_footer' );
421 $setDefaultFooter = false != $yaymailSettingsDefaultFooter ? $yaymailSettingsDefaultFooter['set_default'] : '0';
422 if ( isset( $_GET['template'] ) || ! empty( $_GET['template'] ) ) {
423 $req_template['id'] = sanitize_text_field( $_GET['template'] );
424 } else {
425 $req_template['id'] = 'new_order';
426 }
427 foreach ( $this->emails as $value ) {
428 if ( is_array( $value ) ) {
429 if ( $value['id'] == $req_template['id'] ) {
430 $req_template['title'] = $value['title'];
431 }
432 } else {
433 if ( $value->id == $req_template['id'] ) {
434 $req_template['title'] = $value->title;
435 }
436 }
437 }
438
439 $allowed_html_tags = wp_kses_allowed_html( 'post' );
440 $allowed_html_tags['style'] = array();
441
442 // List email supported
443 $list_email_supported = PluginSupported::listAddonSupported();
444 $list_plugin_for_pro = PluginSupported::listPluginForProSupported();
445
446 $orderby = 'name';
447 $order_category = 'asc';
448 $hide_empty = false;
449
450 $cat_args = array(
451 'orderby' => $orderby,
452 'order' => $order_category,
453 'hide_empty' => $hide_empty,
454 );
455
456 $product_categories = get_terms( 'product_cat', $cat_args );
457 $les_promenades_fantomes = get_terms( 'les-promenades-fantomes', $cat_args );
458 $promas_service = get_terms( 'promas-service', $cat_args );
459 $billing_country = WC()->countries->countries;
460 $arr_payment_methods = array();
461 $payment_methods = WC()->payment_gateways->payment_gateways;
462 foreach ( $payment_methods as $key => $item ) {
463 if ( 'yes' == $item->enabled ) {
464 $arr_payment_methods[] = array(
465 'id' => $item->id,
466 'method_title' => ! empty( $item->method_title ) ? $item->method_title : $item->title,
467 );
468 }
469 }
470
471 $get_shipping_methods = WC()->shipping->get_shipping_methods();
472 $data = array();
473 foreach ( $get_shipping_methods as $shipping_method ) {
474 $item = array(
475 'id' => $shipping_method->id,
476 'method_title' => $shipping_method->method_title,
477 );
478
479 $data[] = $item;
480 }
481
482 $shipping_methods = $data;
483
484 $data_coupon_codes = array();
485 $data_products = array();
486 $data_skus = array();
487
488 if ( is_plugin_active( 'yaymail-addon-conditional-logic/yaymail-conditional-logic.php' ) || is_plugin_active( 'yaymail-conditional-logic/yaymail-conditional-logic.php' ) ) {
489 global $wpdb;
490 $get_coupon_codes = $wpdb->get_col( "SELECT post_name FROM $wpdb->posts WHERE post_type = 'shop_coupon' AND post_status = 'publish' ORDER BY post_name ASC LIMIT 20" );
491 foreach ( $get_coupon_codes as $coupon_codes ) {
492 $item =
493 str_replace( '-', ' ', $coupon_codes );
494
495 $data_coupon_codes[] = $item;
496 }
497
498 $get_products = $wpdb->get_results( "SELECT ID as id, post_title as name FROM $wpdb->posts WHERE post_type = 'product' AND post_status = 'publish' ORDER BY name ASC LIMIT 20" );
499 foreach ( $get_products as $product ) {
500 $data_products[] = $product;
501 }
502
503 $get_product_skus = $wpdb->get_results(
504 // "SELECT CONCAT(p.post_title, ' (#', pm.meta_value, ')') AS label,
505 "SELECT
506 DISTINCT(pm.meta_value) as sku,
507 p.post_title AS name,
508 p.ID AS id
509 FROM {$wpdb->prefix}postmeta AS pm
510 INNER JOIN {$wpdb->prefix}posts AS p
511 ON pm.post_id = p.ID
512 WHERE pm.meta_key = '_sku'
513 AND p.post_type IN ('product', 'product_variation')
514 AND p.post_status = 'publish'
515 ORDER BY pm.meta_value ASC LIMIT 20"
516 );
517 foreach ( $get_product_skus as $skus ) {
518 $data_skus[] = $skus;
519 }
520 }
521 $coupon_codes = $data_coupon_codes;
522 $products = $data_products;
523 $product_skus = $data_skus;
524
525 $arrayShortCode = array();
526 $yaymail_informations = Helper::inforShortcode( '', '', array() );
527 $shortcodeCustom = array_keys( apply_filters( 'yaymail_customs_shortcode', array(), $yaymail_informations, '' ) );
528 if ( ! empty( $shortcodeCustom ) ) {
529 $arrItemShortcodeCus = array();
530 foreach ( $shortcodeCustom as $item ) {
531 $name = __( 'Custom Shortcode For ', 'yaymail' ) . ucfirst( str_replace( array( '[', ']', 'yaymail_custom_shortcode_' ), '', $item ) );
532 array_push( $arrItemShortcodeCus, array( $item, $name ) );
533 }
534 $arrayShortCode[] = array(
535 'plugin' => __( 'Custom Shortcode', 'yaymail' ),
536 'shortcode' => $arrItemShortcodeCus,
537 );
538 }
539
540 $listShortCodeAddon = apply_filters( 'yaymail_list_shortcodes', $arrayShortCode );
541 // WooCommerce for LatePoint
542 if ( class_exists( 'TechXelaLatePointPaymentsWooCommerce' ) ) {
543 $listShortCodeAddon[] = array(
544 'plugin' => 'WooCommerce for LatePoint',
545 'shortcode' => array(
546 array( '[yaymail_woo_latepoint_booking_detail]', 'WooCommerce Latepoint Booking Detail' ),
547
548 array( '[yaymail_woo_latepoint_caption]', 'WooCommerce Latepoint caption' ),
549 array( '[yaymail_woo_latepoint_bg_color]', 'WooCommerce Latepoint Bg Color' ),
550 array( '[yaymail_woo_latepoint_text_color]', 'WooCommerce Latepoint Text Color' ),
551 array( '[yaymail_woo_latepoint_font_size]', 'WooCommerce Latepoint Font Size' ),
552 array( '[yaymail_woo_latepoint_border]', 'WooCommerce Latepoint Border' ),
553 array( '[yaymail_woo_latepoint_border_radius]', 'WooCommerce Latepoint Border Radius' ),
554 array( '[yaymail_woo_latepoint_margin]', 'WooCommerce Latepoint Margin' ),
555 array( '[yaymail_woo_latepoint_padding]', 'WooCommerce Latepoint Padding' ),
556 array( '[yaymail_woo_latepoint_css]', 'WooCommerce Latepoint css' ),
557 array( '[yaymail_woo_latepoint_show_locations]', 'WooCommerce Latepoint Show Locations' ),
558 array( '[yaymail_woo_latepoint_show_agents]', 'WooCommerce Latepoint Show Agents' ),
559 array( '[yaymail_woo_latepoint_show_services]', 'WooCommerce Latepoint Show Services' ),
560 array( '[yaymail_woo_latepoint_show_service_categories]', 'WooCommerce Latepoint Show Service Sategories' ),
561 array( '[yaymail_woo_latepoint_selected_location]', 'WooCommerce Latepoint Selected Location' ),
562 array( '[yaymail_woo_latepoint_selected_agent]', 'WooCommerce Latepoint Selected Agent' ),
563 array( '[yaymail_woo_latepoint_selected_service]', 'WooCommerce Latepoint Selected Service' ),
564 array( '[yaymail_woo_latepoint_selected_service_category]', 'WooCommerce Latepoint Selected Service Category' ),
565 array( '[yaymail_woo_latepoint_selected_duration]', 'WooCommerce Latepoint Selected Duration' ),
566 array( '[yaymail_woo_latepoint_selected_total_attendees]', 'WooCommerce Latepoint Selected Total Attendees' ),
567 array( '[yaymail_woo_latepoint_hide_side_panel]', 'WooCommerce Latepoint Hide Side Panel' ),
568 array( '[yaymail_woo_latepoint_hide_summary]', 'WooCommerce Latepoint Hide Summary' ),
569 array( '[yaymail_woo_latepoint_calendar_start_date]', 'WooCommerce Latepoint Calendar Start Date' ),
570
571 ),
572 );
573 }
574
575 $this->emails = array_map(
576 function( $item ) {
577 $final_item = new stdClass();
578
579 if ( is_array( $item ) ) {
580 $final_item->id = $item['id'];
581 $final_item->title = $item['title'];
582 } else {
583 $final_item->id = $item->id;
584 $final_item->title = $item->title;
585 }
586
587 return $final_item;
588 },
589 $this->emails
590 );
591 wp_localize_script(
592 $scriptId,
593 'yaymail_data',
594 array(
595 'orders' => $order,
596 'imgUrl' => YAYMAIL_PLUGIN_URL . 'assets/dist/images',
597 'nonce' => wp_create_nonce( 'email-nonce' ),
598 'defaultDataElement' => $element->defaultDataElement,
599 'home_url' => home_url(),
600 'settings' => $settings,
601 'admin_url' => get_admin_url(),
602 'yaymail_plugin_url' => YAYMAIL_PLUGIN_URL,
603 'wc_emails' => $this->emails,
604 'default_email_test' => $default_email_test,
605 'template' => $req_template,
606 'set_default_logo' => $setDefaultLogo,
607 'set_default_footer' => $setDefaultFooter,
608 'list_plugin_for_pro' => $list_plugin_for_pro,
609 'plugins' => apply_filters( 'yaymail_plugins', array() ),
610 'list_email_supported' => $list_email_supported,
611 'product_categories' => $product_categories,
612 'les_promenades_fantomes' => $les_promenades_fantomes,
613 'promas_service' => $promas_service,
614 'billing_country' => $billing_country,
615 'payment_methods' => $arr_payment_methods,
616 'link_detail_smtp' => self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=yaysmtp&section=description&TB_iframe=true&width=600&height=800' ),
617 'yaymail_automatewoo_active' => ( is_plugin_active( 'yaymail-addon-for-automatewoo/yaymail-automatewoo.php' ) || is_plugin_active( 'email-customizer-automatewoo/yaymail-automatewoo.php' ) ) ? true : false,
618 'yaymail_dokan_active' => is_plugin_active( 'yaymail-addon-for-dokan/yaymail-premium-addon-dokan.php' ) ? true : false,
619 'yaysmtp_active' => $this->check_plugin_installed( 'yaysmtp/yay-smtp.php' ) || $this->check_plugin_installed( 'yaysmtp-pro/yay-smtp.php' ) ? true : false,
620 'yaysmtp_setting' => admin_url( 'admin.php?page=yaysmtp' ),
621 'list_shortcode_addon' => $listShortCodeAddon,
622 'shipping_methods' => $shipping_methods,
623 'coupon_codes' => $coupon_codes,
624 'product_skus' => $product_skus,
625 'i18n' => I18n::jsTranslate(),
626 'products' => $products,
627 'condition_values_page_size' => 20,
628 )
629 );
630 do_action( 'yaymail_enqueue_script_conditional_logic' );
631 do_action( 'yaymail_before_enqueue_dependence' );
632 }
633 wp_enqueue_script( 'yaymail-notice', YAYMAIL_PLUGIN_URL . 'assets/admin/js/notice.js', array( 'jquery' ), YAYMAIL_VERSION, false );
634 wp_localize_script(
635 'yaymail-notice',
636 'yaymail_notice',
637 array(
638 'admin_ajax' => admin_url( 'admin-ajax.php' ),
639 'nonce' => wp_create_nonce( 'yaymail_nonce' ),
640 )
641 );
642 }
643 public function getPageId() {
644 if ( null == $this->pageId ) {
645 $this->pageId = YAYMAIL_PREFIX . '-settings';
646 }
647
648 return $this->pageId;
649 }
650 public function check_plugin_installed( $plugin_slug ) {
651 $installed_plugins = get_plugins();
652 return array_key_exists( $plugin_slug, $installed_plugins ) || in_array( $plugin_slug, $installed_plugins, true );
653 }
654
655 public function search_by_meta_value_or_post_title( $q ) {
656 if ( $title = $q->get( '_meta_or_title' ) ) {
657 add_filter(
658 'get_meta_sql',
659 function( $sql ) use ( $title ) {
660 global $wpdb;
661
662 // Only run once:
663 static $nr = 0;
664 if ( 0 != $nr++ ) {
665 return $sql;
666 }
667 // Modify WHERE part:
668 $sql['where'] = sprintf(
669 ' AND ( %s OR %s ) ',
670 $wpdb->prepare( "{$wpdb->posts}.post_title like '%%%s%%'", $title ),
671 mb_substr( $sql['where'], 5, mb_strlen( $sql['where'] ) )
672 );
673 return $sql;
674 }
675 );
676 }
677 }
678 }
679