PluginProbe
Ever Compare – Products Compare Plugin for WooCommerce / 1.1.8
Ever Compare – Products Compare Plugin for WooCommerce v1.1.8
1.3.7 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 trunk 1.0.0 1.0.1 1.0.2 All 31 releases
ever-compare / includes / classes / Frontend / Shortcode.php

Shortcode.php in Ever Compare – Products Compare Plugin for WooCommerce 1.1.8, at includes/classes/Frontend/Shortcode.php

165 lines 5.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace EverCompare\Frontend;
3 /**
4 * Shortcode handler class
5 */
6 class Shortcode {
7
8 /**
9 * [$_instance]
10 * @var null
11 */
12 private static $_instance = null;
13
14 /**
15 * [instance] Initializes a singleton instance
16 * @return [Base]
17 */
18 public static function instance() {
19 if ( is_null( self::$_instance ) ) {
20 self::$_instance = new self();
21 }
22 return self::$_instance;
23 }
24
25 /**
26 * Initializes the class
27 */
28 function __construct() {
29 add_shortcode( 'evercompare_button', [ $this, 'button_shortcode' ] );
30 add_shortcode( 'evercompare_table', [ $this, 'table_shortcode' ] );
31 }
32
33 /**
34 * [button_shortcode] Compare Button Shortcode callable function
35 * @param [type] $atts
36 * @param string $content
37 * @return [HTML]
38 */
39 public function button_shortcode( $atts, $content = '' ){
40
41 wp_enqueue_style( 'evercompare-frontend' );
42 wp_enqueue_script( 'evercompare-frontend' );
43
44 global $product;
45
46 // Fetch option data
47 $button_text = ever_compare_get_option( 'button_text','ever_compare_settings_tabs', 'Compare' );
48 $button_added_text = ever_compare_get_option( 'added_button_text','ever_compare_settings_tabs', 'Added' );
49
50 $shop_page_btn_position = ever_compare_get_option( 'shop_btn_position', 'ever_compare_settings_tabs', 'after_cart_btn' );
51 $product_page_btn_position = ever_compare_get_option( 'product_btn_position', 'ever_compare_settings_tabs', 'after_cart_btn' );
52 $button_style = ever_compare_get_option( 'button_style', 'ever_compare_style_tabs', 'theme' );
53
54 $button_class = array(
55 'htcompare-btn',
56 'htcompare-btn-style-'.$button_style,
57 'htcompare-shop-'.$shop_page_btn_position,
58 'htcompare-product-'.$product_page_btn_position,
59 );
60
61 if( $button_style === 'theme' ){
62 $button_class[] = 'button';
63 }
64
65 $button_icon = $this->get_icon();
66 $added_button_icon = $this->get_icon('added_');
67
68 if( !empty( $button_text ) ){
69 $button_text = '<span class="evercompare-btn-text">'.$button_text.'</span>';
70 }
71
72 if( !empty( $button_added_text ) ){
73 $button_added_text = '<span class="evercompare-btn-text">'.$button_added_text.'</span>';
74 }
75
76 // Shortcode atts
77 $default_atts = array(
78 'product_id' => $product->get_id(),
79 'button_url' => Manage_Compare::instance()->get_compare_page_url(),
80 'button_class' => implode(' ', $button_class ),
81 'button_text' => $button_icon.$button_text,
82 'button_added_text' => $added_button_icon.$button_added_text,
83 'template_name' => 'add',
84 );
85
86 $atts = shortcode_atts( $default_atts, $atts, $content );
87 return Manage_Compare::instance()->button_html( $atts );
88
89 }
90
91 /**
92 * [table_shortcode] Compare table shortcode callable function
93 * @param [type] $atts
94 * @param string $content
95 * @return [HTML]
96 */
97 public function table_shortcode( $atts, $content = '' ){
98
99 wp_enqueue_style( 'evercompare-frontend' );
100 wp_enqueue_script( 'evercompare-frontend' );
101
102 /* Fetch From option data */
103 $empty_compare_text = ever_compare_get_option('empty_table_text','ever_compare_table_settings_tabs');
104 $return_shop_button = ever_compare_get_option('shop_button_text','ever_compare_table_settings_tabs','Return to shop');
105
106 /* Product and Field */
107 $products = Manage_Compare::instance()->get_compared_products_data();
108 $fields = Manage_Compare::instance()->get_compare_fields();
109
110 $custom_heading = !empty( ever_compare_get_option( 'table_heading', 'ever_compare_table_settings_tabs' ) ) ? ever_compare_get_option( 'table_heading', 'ever_compare_table_settings_tabs' ) : array();
111
112 $default_atts = array(
113 'evercompare' => Manage_Compare::instance(),
114 'products' => $products,
115 'fields' => $fields,
116 'return_shop_button'=> $return_shop_button,
117 'heading_txt' => $custom_heading,
118 'empty_compare_text'=> $empty_compare_text,
119 );
120
121 $atts = shortcode_atts( $default_atts, $atts, $content );
122 return Manage_Compare::instance()->table_html( $atts );
123
124 }
125
126 /**
127 * [get_icon]
128 * @param string $type
129 * @return [HTML]
130 */
131 public function get_icon( $type = '' ){
132
133 $arrContextOptions = [
134 'ssl' => [
135 'verify_peer' => false,
136 'verify_peer_name' => false,
137 ]
138 ];
139
140 $default_icon = file_get_contents( EVERCOMPARE_ASSETS .'/images/icon.svg', false, stream_context_create($arrContextOptions) );
141 $default_loader = '<span class="ever-compare-loader">'.file_get_contents( EVERCOMPARE_ASSETS .'/images/loading.svg', false, stream_context_create($arrContextOptions) ).'</span>';
142
143 $button_text = ( $type === 'added' ) ? ever_compare_get_option( 'added_button_text','ever_compare_settings_tabs', 'Added' ) : ever_compare_get_option( 'button_text','ever_compare_settings_tabs', 'Compare' );
144
145 $button_icon_type = ever_compare_get_option( $type.'button_icon_type', 'ever_compare_settings_tabs', 'default' );
146
147 if( $button_icon_type === 'custom' ){
148 $button_icon = ever_compare_get_option( $type.'button_custom_icon','ever_compare_settings_tabs', '' );
149 }elseif( $button_icon_type === 'default' ){
150 return $default_icon;
151 }else{
152 $button_icon = '';
153 }
154
155 if( !empty( $button_icon ) ){
156 $button_icon = '<span class="ever-compare-btn-image"><img src="'.esc_url( $button_icon ).'" alt="'.esc_attr( $button_text ).'"></span>';
157 }
158
159 return $default_loader.$button_icon;
160
161 }
162
163
164 }
165