define_params(); $this->class_init(); add_action( 'init', array( $this, 'plugin_textdomain' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue' ), 1 ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_run_file' ), 9999 ); add_action( 'admin_footer', array( $this, 'admin_footer' ) ); add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) ); } public static function init() { if ( null == self::$instance ) { self::$instance = new self(); } return self::$instance; } public function define_params() { self::$img_map = apply_filters( 'viwec_image_map', [ 'infor_icons' => [ 'home' => [ 'home-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'home-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'home-white-border' => esc_html__( 'White/Border', 'viwec-email-template-customizer' ), 'home-black-border' => esc_html__( 'Black/Border', 'viwec-email-template-customizer' ), 'home-black-white' => esc_html__( 'Black/White', 'viwec-email-template-customizer' ), 'home-white-black' => esc_html__( 'White/Black', 'viwec-email-template-customizer' ), ], 'email' => [ 'email-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'email-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'email-white-border' => esc_html__( 'White/Border', 'viwec-email-template-customizer' ), 'email-black-border' => esc_html__( 'Black/Border', 'viwec-email-template-customizer' ), 'email-black-white' => esc_html__( 'Black/White', 'viwec-email-template-customizer' ), 'email-white-black' => esc_html__( 'White/Black', 'viwec-email-template-customizer' ), ], 'phone' => [ 'phone-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'phone-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'phone-white-border' => esc_html__( 'White/Border', 'viwec-email-template-customizer' ), 'phone-black-border' => esc_html__( 'Black/Border', 'viwec-email-template-customizer' ), 'phone-black-white' => esc_html__( 'Black/White', 'viwec-email-template-customizer' ), 'phone-white-black' => esc_html__( 'White/Black', 'viwec-email-template-customizer' ), ], 'location' => [ 'location-white' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'location-black' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'location-white-border' => esc_html__( 'White/Border', 'viwec-email-template-customizer' ), 'location-black-border' => esc_html__( 'Black/Border', 'viwec-email-template-customizer' ), 'location-black-white' => esc_html__( 'Black/White', 'viwec-email-template-customizer' ), 'location-white-black' => esc_html__( 'White/Black', 'viwec-email-template-customizer' ), ], ], 'social_icons' => [ 'facebook' => [ '' => esc_html__( 'Disable', 'viwec-email-template-customizer' ), 'fb-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'fb-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'fb-blue' => esc_html__( 'Color', 'viwec-email-template-customizer' ), 'fb-white-border' => esc_html__( 'White border', 'viwec-email-template-customizer' ), 'fb-black-border' => esc_html__( 'Black border', 'viwec-email-template-customizer' ), 'fb-blue-border' => esc_html__( 'Color border', 'viwec-email-template-customizer' ), 'fb-blue-white' => esc_html__( 'Color - White', 'viwec-email-template-customizer' ), 'fb-white-black' => esc_html__( 'Black - White', 'viwec-email-template-customizer' ), 'fb-white-blue' => esc_html__( 'White - Color', 'viwec-email-template-customizer' ), ], 'twitter' => [ '' => esc_html__( 'Disable', 'viwec-email-template-customizer' ), 'twi-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'twi-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'twi-cyan' => esc_html__( 'Color', 'viwec-email-template-customizer' ), 'twi-white-border' => esc_html__( 'White border', 'viwec-email-template-customizer' ), 'twi-black-border' => esc_html__( 'Black border', 'viwec-email-template-customizer' ), 'twi-cyan-border' => esc_html__( 'Color border', 'viwec-email-template-customizer' ), 'twi-cyan-white' => esc_html__( 'Color - White', 'viwec-email-template-customizer' ), 'twi-white-black' => esc_html__( 'Black - White', 'viwec-email-template-customizer' ), 'twi-white-cyan' => esc_html__( 'White - Color', 'viwec-email-template-customizer' ), ], 'instagram' => [ '' => esc_html__( 'Disable', 'viwec-email-template-customizer' ), 'ins-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'ins-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'ins-color' => esc_html__( 'Color', 'viwec-email-template-customizer' ), 'ins-white-border' => esc_html__( 'White border', 'viwec-email-template-customizer' ), 'ins-black-border' => esc_html__( 'Black border', 'viwec-email-template-customizer' ), 'ins-color-border' => esc_html__( 'Color border', 'viwec-email-template-customizer' ), 'ins-color-white' => esc_html__( 'Color - White', 'viwec-email-template-customizer' ), 'ins-white-black' => esc_html__( 'Black - White', 'viwec-email-template-customizer' ), 'ins-white-color' => esc_html__( 'White - Color', 'viwec-email-template-customizer' ), ], 'youtube' => [ '' => esc_html__( 'Disable', 'viwec-email-template-customizer' ), 'yt-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'yt-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'yt-color' => esc_html__( 'Color', 'viwec-email-template-customizer' ), 'yt-white-border' => esc_html__( 'White border', 'viwec-email-template-customizer' ), 'yt-black-border' => esc_html__( 'Black border', 'viwec-email-template-customizer' ), 'yt-color-border' => esc_html__( 'Color border', 'viwec-email-template-customizer' ), 'yt-color-white' => esc_html__( 'Color - White', 'viwec-email-template-customizer' ), 'yt-white-black' => esc_html__( 'Black - White', 'viwec-email-template-customizer' ), 'yt-white-color' => esc_html__( 'White - Color', 'viwec-email-template-customizer' ), ], 'linkedin' => [ '' => esc_html__( 'Disable', 'viwec-email-template-customizer' ), 'li-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'li-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'li-color' => esc_html__( 'Color', 'viwec-email-template-customizer' ), 'li-white-border' => esc_html__( 'White border', 'viwec-email-template-customizer' ), 'li-black-border' => esc_html__( 'Black border', 'viwec-email-template-customizer' ), 'li-color-border' => esc_html__( 'Color border', 'viwec-email-template-customizer' ), 'li-color-white' => esc_html__( 'Color - White', 'viwec-email-template-customizer' ), 'li-white-black' => esc_html__( 'Black - White', 'viwec-email-template-customizer' ), 'li-white-color' => esc_html__( 'White - Color', 'viwec-email-template-customizer' ), ], 'whatsapp' => [ '' => esc_html__( 'Disable', 'viwec-email-template-customizer' ), 'wa-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'wa-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'wa-color' => esc_html__( 'Color', 'viwec-email-template-customizer' ), 'wa-white-border' => esc_html__( 'White border', 'viwec-email-template-customizer' ), 'wa-black-border' => esc_html__( 'Black border', 'viwec-email-template-customizer' ), 'wa-color-border' => esc_html__( 'Color border', 'viwec-email-template-customizer' ), 'wa-color-white' => esc_html__( 'Color - White', 'viwec-email-template-customizer' ), 'wa-white-black' => esc_html__( 'Black - White', 'viwec-email-template-customizer' ), 'wa-white-color' => esc_html__( 'White - Color', 'viwec-email-template-customizer' ), ], 'telegram' => [ '' => esc_html__( 'Disable', 'viwec-email-template-customizer' ), 'tele-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'tele-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'tele-color' => esc_html__( 'Color', 'viwec-email-template-customizer' ), 'tele-white-border' => esc_html__( 'White border', 'viwec-email-template-customizer' ), 'tele-black-border' => esc_html__( 'Black border', 'viwec-email-template-customizer' ), 'tele-color-border' => esc_html__( 'Color border', 'viwec-email-template-customizer' ), 'tele-color-white' => esc_html__( 'Color - White', 'viwec-email-template-customizer' ), 'tele-white-black' => esc_html__( 'Black - White', 'viwec-email-template-customizer' ), 'tele-white-color' => esc_html__( 'White - Color', 'viwec-email-template-customizer' ), ], 'tiktok' => [ '' => esc_html__( 'Disable', 'viwec-email-template-customizer' ), 'tiktok-black' => esc_html__( 'Black', 'viwec-email-template-customizer' ), 'tiktok-white' => esc_html__( 'White', 'viwec-email-template-customizer' ), 'tiktok-color' => esc_html__( 'Color', 'viwec-email-template-customizer' ), 'tiktok-white-border' => esc_html__( 'White border', 'viwec-email-template-customizer' ), 'tiktok-black-border' => esc_html__( 'Black border', 'viwec-email-template-customizer' ), 'tiktok-color-border' => esc_html__( 'Color border', 'viwec-email-template-customizer' ), 'tiktok-color-white' => esc_html__( 'Color - White', 'viwec-email-template-customizer' ), 'tiktok-white-black' => esc_html__( 'Black - White', 'viwec-email-template-customizer' ), 'tiktok-white-color' => esc_html__( 'White - Color', 'viwec-email-template-customizer' ), ], ] ] ); } public function class_init() { Utils::init(); Email_Builder::init(); Email_Trigger::init(); Compatible::init(); include_once VIWEC_DIR . 'compatible' . DIRECTORY_SEPARATOR . 'email-template-customizer.php'; include_once VIWEC_SUPPORT . 'support.php'; include_once VIWEC_INCLUDES . 'functions.php'; if ( class_exists( 'VillaTheme_Support' ) ) { new \VillaTheme_Support( array( 'support' => 'https://wordpress.org/support/plugin/email-template-customizer-for-woo/', 'docs' => 'https://docs.villatheme.com/?item=woo-email-template-customizer', 'review' => 'https://wordpress.org/support/plugin/email-template-customizer-for-woo/reviews/?rate=5#rate-response', 'pro_url' => 'https://1.envato.market/BZZv1', 'css' => VIWEC_CSS, 'image' => VIWEC_IMAGES, 'slug' => 'email-template-customizer-for-woo', 'menu_slug' => 'edit.php?post_type=viwec_template', 'version' => VIWEC_VER, 'survey_url' => 'https://script.google.com/macros/s/AKfycbxkQO1eTmttYm1uNwN_pxenA9JEYbDo8PWumGZPvk29G2VIDi59/exec' ) ); } } public function plugin_textdomain() { $locale = is_admin() && function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale(); // Global + Frontend Locale load_textdomain( 'viwec-email-template-customizer', VIWEC_LANGUAGES . "viwec-email-template-customizer-$locale.mo" ); load_plugin_textdomain( 'viwec-email-template-customizer', false, VIWEC_LANGUAGES ); } public function admin_enqueue() { global $post; switch ( get_current_screen()->id ) { case 'viwec_template': $scripts_lib = [ 'tab', 'accordion', 'select2', 'dimmer', 'transition', 'modal' ]; $scripts = [ 'inputs', 'email-builder', 'properties', 'components' ]; $styles_lib = [ 'tab', 'menu', 'accordion', 'select2', 'dimmer', 'transition', 'modal', 'button' ]; $styles = [ 'email-builder' ]; wp_enqueue_editor(); wp_enqueue_media(); wp_enqueue_script( 'wc-enhanced-select' ); wp_enqueue_script( 'iris' ); Utils::enqueue_admin_script_libs( $scripts_lib, [ 'jquery' ] ); Utils::enqueue_admin_scripts( $scripts, [ 'jquery', 'jquery-ui-sortable', 'jquery-ui-draggable', 'wp-color-picker' ] ); Utils::enqueue_admin_styles_libs( $styles_lib ); Utils::enqueue_admin_styles( $styles ); $samples = Email_Samples::sample_templates(); $hide_rule = Utils::get_hide_rules_data(); $accept_elements = Utils::get_accept_elements_data(); $params = [ 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'viwec_nonce' ), 'product' => VIWEC_IMAGES . 'product.png', 'post' => VIWEC_IMAGES . 'post.png', 'placeholder' => VIWEC_IMAGES . 'placeholder.jpg', 'emailTypes' => Utils::get_email_ids_grouped(), 'samples' => $samples, 'subjects' => Email_Samples::default_subject(), 'adminBarStt' => Utils::get_admin_bar_stt(), 'suggestProductPrice' => wc_price( 20 ), 'homeUrl' => home_url(), 'siteUrl' => site_url(), 'shopUrl' => wc_get_endpoint_url( 'shop' ), 'adminEmail' => get_bloginfo( 'admin_email' ), 'adminPhone' => get_user_meta( get_current_user_id(), 'billing_phone', true ) ?? '202-000-0000', 'hide_rule' => $hide_rule, 'accept_elements' => $accept_elements, 'DISALLOW_UNFILTERED_HTML' => defined('DISALLOW_UNFILTERED_HTML') && DISALLOW_UNFILTERED_HTML ? 1:'', ]; foreach ( self::$img_map['social_icons'] as $type => $data ) { foreach ( $data as $key => $text ) { $url = $key ? VIWEC_IMAGES . $key . '.png' : ''; $params['social_icons'][ $type ][] = [ 'id' => $url, 'text' => $text, 'slug' => $key ]; } } foreach ( self::$img_map['infor_icons'] as $type => $data ) { foreach ( $data as $key => $text ) { $params['infor_icons'][ $type ][] = [ 'id' => VIWEC_IMAGES . $key . '.png', 'text' => $text, 'slug' => $key ]; } } $params['shortcode'] = array_keys( Utils::shortcodes() ); $params['shortcode_for_replace'] = array_merge( Utils::shortcodes(), Utils::get_register_shortcode_for_replace() ); $params['sc_3rd_party'] = Utils::get_register_shortcode_for_builder(); $params['sc_3rd_party_for_text_editor'] = Utils::get_register_shortcode_for_text_editor(); $params['post_categories'] = $this->get_categories( 'category' ); $params['product_categories'] = $this->get_categories( 'product_cat' ); $email_structure = ( get_post_meta( $post->ID, 'viwec_email_structure', true ) ); if ( ! empty( $email_structure ) && $email_structure !== 'null' ) { $email_structure = html_entity_decode( $email_structure ); $json_decode_email_structure = json_decode( $email_structure, true ); if (is_array($json_decode_email_structure)) { array_walk_recursive( $json_decode_email_structure, function ( $value, $key ) { if ( in_array( $key, [ 'data-coupon-include-product', 'data-coupon-exclude-product' ], true ) ) { $value = explode( ',', $value ); $this->cache_products = array_merge( $this->cache_products, $value ); } if ( in_array( $key, [ 'data-include-post-id', 'data-exclude-post-id' ], true ) ) { $value = explode( ',', $value ); $this->cache_posts = array_merge( $this->cache_posts, $value ); } } ); } $products_temp = [ [ 'id' => '', 'text' => '' ] ]; $posts_temp = []; if ( ! empty( $this->cache_products ) ) { $this->cache_products = array_values( array_unique( $this->cache_products ) ); $products = wc_get_products( [ 'limit' => - 1, 'include' => $this->cache_products ] ); if ( ! empty( $products ) ) { foreach ( $products as $p ) { $products_temp[] = [ 'id' => (string) $p->get_id(), 'text' => $p->get_name() ]; } } } if ( ! empty( $this->cache_posts ) ) { $this->cache_posts = array_values( array_unique( $this->cache_posts ) ); $posts = get_posts( [ 'numberposts' => 5, 'include' => $this->cache_posts ] ); if ( ! empty( $posts ) ) { foreach ( $posts as $p ) { $posts_temp[] = [ 'id' => $p->ID, 'text' => $p->post_title, 'content' => do_shortcode( $p->post_content ) ]; } } } wp_localize_script( VIWEC_SLUG . '-email-builder', 'viWecCachePosts', $posts_temp ); wp_localize_script( VIWEC_SLUG . '-email-builder', 'viWecCacheProducts', $products_temp ); wp_localize_script( VIWEC_SLUG . '-email-builder', 'viWecLoadTemplate', [ $email_structure ] ); } $params['i18n'] = I18n::init(); if ( ! empty( $_GET['sample'] ) ) {// phpcs:ignore WordPress.Security.NonceVerification.Recommended if ( ! isset( $_GET['action'] ) || $_GET['action'] !== 'edit' ) {// phpcs:ignore WordPress.Security.NonceVerification.Recommended $style = ! empty( $_GET['style'] ) ? sanitize_text_field( wp_unslash( $_GET['style'] ) ) : 'basic';// phpcs:ignore WordPress.Security.NonceVerification.Recommended $params['addNew'] = [ 'type' => sanitize_text_field( wp_unslash( $_GET['sample'] ) ), 'style' => $style ];// phpcs:ignore WordPress.Security.NonceVerification.Recommended } } global $viwec_params; $viwec_params = $params; wp_localize_script( VIWEC_SLUG . '-inputs', 'viWecParams', $params ); break; case 'edit-viwec_template': $styles = [ 'manage-template' ]; $styles_lib = [ 'form', 'segment', 'button', 'icon' ]; Utils::enqueue_admin_styles( $styles ); Utils::enqueue_admin_styles_libs( $styles_lib ); break; //Premium case 'viwec_template_page_viwec-auto-update': $scripts = [ 'get-key' ]; $styles = [ 'manage-template' ]; Utils::enqueue_admin_scripts( $scripts, [ 'jquery' ] ); Utils::enqueue_admin_styles( $styles ); $styles_lib = [ 'form', 'segment', 'button', 'icon' ]; Utils::enqueue_admin_styles_libs( $styles_lib ); break; } } public function get_categories( $type ) { $cats = []; $categories = get_terms( array( 'taxonomy' => $type, 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => false ) ); if ( ! empty( $categories ) ) { foreach ( $categories as $cat ) { $cats[] = [ 'id' => $cat->term_id, 'text' => $cat->name ]; } } return $cats; } public function enqueue_run_file() { if ( get_current_screen()->id === 'viwec_template' ) { Utils::enqueue_admin_scripts( [ 'run' ], [ 'jquery', 'jquery-ui-sortable', 'jquery-ui-draggable', 'wp-color-picker' ] ); } } public function admin_body_class( $class ) { $admin_bar = Utils::get_admin_bar_stt(); $class = $admin_bar ? $class : $class . ' viwec-admin-bar-hidden'; return $class; } public function admin_footer() { if ( get_current_screen()->id === 'edit-viwec_template' ) { ?>