PluginProbe
Ever Compare – Products Compare Plugin for WooCommerce / trunk
Ever Compare – Products Compare Plugin for WooCommerce vtrunk
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 / ever-compare.php

ever-compare.php in Ever Compare – Products Compare Plugin for WooCommerce trunk, at ever-compare.php

220 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: Ever Compare
4 * Description: WooCommerce Product compare plugin
5 * Plugin URI: https://hasthemes.com/plugins/
6 * Author: HasTheme
7 * Author URI: https://hasthemes.com/
8 * Version: 1.3.7
9 * License: GPL2 or later
10 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
11 * Text Domain: ever-compare
12 * Domain Path: /languages
13 * WC tested up to: 10.0.2
14 */
15
16 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
17
18 /**
19 * Plugin Main Class
20 */
21 final class Ever_Compare{
22
23 /**
24 * Plugin version
25 *
26 * @var string
27 */
28 const version = '1.3.7';
29
30 /**
31 * [$_instance]
32 * @var null
33 */
34 private static $_instance = null;
35
36 /**
37 * [instance] Initializes a singleton instance
38 * @return [Base]
39 */
40 public static function instance() {
41 if ( is_null( self::$_instance ) ) {
42 self::$_instance = new self();
43 }
44 return self::$_instance;
45 }
46
47 /**
48 * [__construct] Class Constructor
49 */
50 private function __construct(){
51
52 $this->define_constants();
53 add_action( 'plugins_loaded', [ $this, 'includes' ] );
54
55 register_activation_hook( EVERCOMPARE_FILE, [ $this, 'activate' ] );
56
57 add_action( 'init', [ $this, 'i18n' ] );
58 add_action( 'plugins_loaded', [ $this, 'init_plugin' ] );
59
60 // Compatible With WooCommerce Features
61 add_action( 'before_woocommerce_init', function() {
62 if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) {
63 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', EVERCOMPARE_FILE, true );
64 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'cart_checkout_blocks', EVERCOMPARE_FILE, true );
65 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'product_block_editor', EVERCOMPARE_FILE, true );
66 }
67 } );
68 }
69
70 /**
71 * Define the required plugin constants
72 *
73 * @return void
74 */
75 public function define_constants() {
76 define( 'EVERCOMPARE_VERSION', self::version );
77 define( 'EVERCOMPARE_FILE', __FILE__ );
78 define( 'EVERCOMPARE_PATH', __DIR__ );
79 define( 'EVERCOMPARE_DIR', plugin_dir_path( EVERCOMPARE_FILE ) );
80 define( 'EVERCOMPARE_URL', plugins_url( '', EVERCOMPARE_FILE ) );
81 define( 'EVERCOMPARE_ASSETS', EVERCOMPARE_URL . '/assets' );
82 define( 'EVERCOMPARE_BASE', plugin_basename( EVERCOMPARE_FILE ) );
83 }
84
85 /**
86 * [includes] Load file
87 * @return [void]
88 */
89 public function includes(){
90 require_once EVERCOMPARE_PATH . '/vendor/autoload.php';
91 if ( ! function_exists('is_plugin_active') ){ include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); }
92 }
93
94 /**
95 * [i18n] Load text domain
96 * @return [void]
97 */
98 public function i18n() {
99 load_plugin_textdomain( 'ever-compare', false, dirname( plugin_basename( EVERCOMPARE_FILE ) ) . '/languages/' );
100 }
101
102 /**
103 * Initialize the plugin
104 *
105 * @return void
106 */
107 public function init_plugin() {
108
109 EverCompare\Assets::instance();
110
111 if ( is_admin() ) {
112 $this->admin_notices();
113 EverCompare\Admin::instance();
114 new EverCompare\Admin\Dashboard_Widget();
115 }
116
117 if ( ! ever_compare_woocommerce_installed() ) {
118 return;
119 }
120
121 if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
122 EverCompare\Ajax::instance();
123 }
124
125 EverCompare\Frontend::instance();
126
127 // add image size
128 $this->set_image_size();
129
130 // let's filter the woocommerce image size
131 add_filter( 'woocommerce_get_image_size_ever-compare-image', [ $this, 'wc_image_filter_size' ], 10, 1 );
132
133 // let's filter the speculation rules
134 add_filter( 'wp_speculation_rules_href_exclude_paths', function( $exclude_paths ) {
135 $compare_page_id = ever_compare_get_option( 'compare_page', 'ever_compare_table_settings_tabs' );
136 if ( $compare_page_id ) {
137 $compare_page_url = get_permalink( $compare_page_id );
138 $compare_path = parse_url( $compare_page_url, PHP_URL_PATH );
139 if ( $compare_path ) {
140 $compare_path = trailingslashit( $compare_path );
141 $exclude_paths[] = "{$compare_path}*";
142 }
143 }
144 return $exclude_paths;
145 });
146 }
147
148 /**
149 * Do stuff upon plugin activation
150 *
151 * @return void
152 */
153 public function activate() {
154 $this->includes();
155 $installer = new EverCompare\Installer();
156 $installer->run();
157 }
158
159 /**
160 * Admin Notices
161 * @return void
162 */
163 public function admin_notices() {
164 $notice = new EverCompare\Admin\Notices();
165 $notice->notice();
166 }
167
168 /**
169 * [set_image_size] Set Image Size
170 */
171 public function set_image_size(){
172
173 $image_dimention = ever_compare_get_option( 'image_size', 'ever_compare_table_settings_tabs', array( 'width'=>300, 'height'=>300 ) );
174 if( isset( $image_dimention ) && is_array( $image_dimention ) ){
175 $hard_crop = !empty( ever_compare_get_option( 'hard_crop', 'ever_compare_table_settings_tabs' ) ) ? true : false;
176 add_image_size( 'ever-compare-image', $image_dimention['width'], $image_dimention['height'], $hard_crop );
177 }
178
179 }
180
181 /**
182 * [wc_image_filter_size]
183 * @return [array]
184 */
185 public function wc_image_filter_size(){
186
187 $image_dimention = ever_compare_get_option( 'image_size', 'ever_compare_table_settings_tabs', array('width'=>300,'height'=>300) );
188 $hard_crop = !empty( ever_compare_get_option( 'hard_crop', 'ever_compare_table_settings_tabs' ) ) ? true : false;
189
190 if( isset( $image_dimention ) && is_array( $image_dimention ) ){
191 return array(
192 'width' => isset( $image_dimention['width'] ) ? absint( $image_dimention['width'] ) : 300,
193 'height' => isset( $image_dimention['height'] ) ? absint( $image_dimention['height'] ) : 300,
194 'crop' => isset( $hard_crop ) ? 1 : 0,
195 );
196 }
197
198 return array(
199 'width' => 300,
200 'height' => 300,
201 'crop' => 0,
202 );
203 }
204
205 }
206
207 /**
208 * Initializes the main plugin
209 *
210 * @return ever_compare
211 */
212 function ever_compare() {
213 if( ! class_exists('Woolentor_Ever_Compare') ){
214 return Ever_Compare::instance();
215 }
216 }
217
218 // Start Our journey
219 ever_compare();
220