PluginProbe
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution with eCommerce Templates & Woo Widgets / 1.7.0
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution with eCommerce Templates & Woo Widgets v1.7.0
4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 2.0.0 2.1.0 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.0 2.5.1 3.0.0 3.1.0 3.1.1 4.0.0 4.0.1 4.1.0 4.1.1 4.2.0 4.2.1 4.3.0 All 85 releases
← All changes | plugin.php +62 -132 3.0.01.7.0 View file →
@@ -3,13 +3,11 @@
3 3 namespace ShopEngine;
4 4
5 5 use ShopEngine\Compatibility\Conflicts\Manifest as Conflict_Manifest;
6 6 use ShopEngine\Core\Builders\Base;
7 -use ShopEngine\Compatibility\Migrations\LangMigration;
8 7 use ShopEngine\Core\Query_Modifier;
9 8 use ShopEngine\Core\Template_Cpt;
10 9 use ShopEngine\Libs\License\License_Route;
11 -use ShopEngine\Libs\Rating\Rating;
12 10 use ShopEngine\Libs\Updater\Init as Updater;
13 11 use ShopEngine\Modules\Manifest as Module_Manifest;
14 12 use ShopEngine\Widgets\Manifest;
15 13
@@ -51,50 +49,28 @@
51 49
52 50 $error = true;
53 51 }
54 52
55 - $check_elementor_version = false;
56 -
57 53 // Check if Elementor installed and activated.
58 - if(!did_action('elementor/loaded')) {
54 + if(!did_action('elementor/loaded')) {
55 + add_action('admin_notices', [$this, 'missing_elementor']);
59 56
60 - if(!did_action('shopengine-gutenberg-addon/before_loaded')) {
57 + $error = true;
58 + }
61 59
62 - add_action('admin_notices', [$this, 'missing_elementor']);
63 -
64 - $error = true;
65 - }
66 - }
67 -
68 60 // Check for required Elementor version.
69 - if(did_action('elementor/loaded') && defined('ELEMENTOR_VERSION') && !version_compare(ELEMENTOR_VERSION, '3.0.0', '>=')) {
61 + if(defined('ELEMENTOR_VERSION') && !version_compare(ELEMENTOR_VERSION, '3.0.0', '>=')) {
62 + add_action('admin_notices', [$this, 'failed_elementor_version']);
70 63
71 - add_action('admin_notices', [$this, 'failed_elementor_version']);
64 + $error = true;
65 + }
72 66
73 - $error = true;
74 - }
67 + if($error) {
75 68
76 - if($error) {
77 69 return;
78 70 }
79 -
80 - add_filter("plugin_action_links_shopengine/shopengine.php", function ($links) {
81 - $free = esc_html__("Go To Shopengine","shopengine");
82 - $pro = esc_html__("Go To ShopenginePro","shopengine");
83 71
84 - $custom_links[] = '<a title="' . $free . '" href="'.admin_url('edit.php?post_type=shopengine-template#getting-started').'" target="_blank">' . esc_html__('Settings', 'shopengine') . '</a>';
85 72
86 - foreach ($custom_links as $custom_link):
87 - array_unshift($links, $custom_link);
88 - endforeach;
89 -
90 - if (!is_plugin_active('shopengine-pro/shopengine-pro.php')) {
91 - $links[] = '<a title="' . $pro . '" href="https://wpmet.com/plugin/shopengine/pricing/" style="color:#FCB214;font-weight:700" target="_blank" rel="noopener">' . esc_html__('Go Pro', 'shopengine') . '</a>';
92 - }
93 - return $links;
94 - });
95 -
96 -
97 73 /**
98 74 * Routes initialization
99 75 *
100 76 */
@@ -107,16 +83,32 @@
107 83 add_action('admin_init', function () {
108 84 if(class_exists('ShopEngine_Pro')) {
109 85 new Updater();
110 86 }
87 +
111 88 });
112 89
90 + global $pagenow;
113 91
114 - add_action('wp_loaded', function () {
92 + if(is_admin() && $pagenow == 'post.php' && $_REQUEST['action'] === 'edit') {
115 93
94 + $pid = $_REQUEST['post'];
95 + $po = get_post($pid);
96 +
97 + if($po->post_type === Template_Cpt::TYPE) {
98 +
99 + $url = get_admin_url(). 'edit.php?post_type='.Template_Cpt::TYPE.'#'.Template_Cpt::TYPE;
100 +
101 + wp_safe_redirect( $url );
102 + exit;
103 + }
104 + }
105 +
106 + add_action('wp_loaded', function (){
107 +
116 108 if(isset($_REQUEST['preview']) && $_REQUEST['preview'] == 'true' && !empty($_REQUEST['preview_id'])) {
117 109
118 - $pid = (int)$_REQUEST['preview_id'];
110 + $pid = (int) $_REQUEST['preview_id'];
119 111
120 112 $po = get_post($pid);
121 113
122 114 if($po->post_type === Template_Cpt::TYPE) {
@@ -122,54 +114,40 @@
122 114 if($po->post_type === Template_Cpt::TYPE) {
123 115
124 116 $template = \ShopEngine\Core\Builders\Templates::get_registered_template_data($pid);
125 117
126 - if(empty($template) || !isset($template['url'])) {
118 + if(empty($template) || !isset($template['url'])){
127 119 return;
128 120 }
129 121
130 122 $param = [
131 123 'shopengine_template_id' => $pid,
132 - 'preview_nonce' => wp_create_nonce('template_preview_' . $pid),
133 - 'change_template' => '1',
124 + 'preview_nonce' => wp_create_nonce( 'template_preview_' . $pid ),
125 + 'change_template' => '1'
134 126 ];
135 127
136 128 $url = \ShopEngine\Utils\Helper::add_to_url($template['url'], $param);
137 129
138 - wp_safe_redirect($url);
130 + wp_safe_redirect( $url );
139 131 exit;
140 132 }
141 133 }
142 -
143 - /**
144 - * migrate data
145 - */
146 - LangMigration::instance()->init();
147 134 });
148 135
149 - // avoid themes for loading woocommerce functions
150 - $avoid_themes = ['avada', 'avada child'];
151 136
152 - if(!in_array(strtolower(wp_get_theme()), $avoid_themes)) {
153 - /**
154 - * Ensuring woocommerce functions are loaded before theme is modifying those
155 - *
156 - */
157 - require_once WC_ABSPATH . '/includes/wc-template-functions.php';
158 - }
137 + /**
138 + * Ensuring woocommerce functions are loaded before theme is modifying those
139 + *
140 + */
141 + require_once WC_ABSPATH . '/includes/wc-template-functions.php';
159 142
160 143
161 - if(did_action('elementor/loaded')) {
162 - // Load custom elementor controls
163 - new \ShopEngine\Core\Elementor_Controls\Init();
144 + // Load custom elementor controls
145 + new \ShopEngine\Core\Elementor_Controls\Init();
164 146
165 - //Loading the scripts and styles
166 - add_action('elementor/editor/after_enqueue_styles', [$this, 'js_css_elementor']);
167 - }
168 -
169 -
170 - //Loading public scripts and styles
147 + //Loading the scripts and styles
171 148 add_action('wp_enqueue_scripts', [$this, 'js_css_public']);
149 + add_action('elementor/editor/after_enqueue_styles', [$this, 'js_css_elementor']);
172 150
173 151 //woocommece theme support
174 152 if(!current_theme_supports('woocommerce')) {
175 153 add_theme_support('woocommerce');
@@ -177,111 +155,60 @@
177 155 add_theme_support('wc-product-gallery-lightbox');
178 156 add_theme_support('wc-product-gallery-slider');
179 157 }
180 158
159 +
181 160 #Registering new post-type & etc
182 161 Base::instance()->init();
183 162
184 - Rating::instance('shopengine')
185 - ->set_plugin( 'ShopEngine', 'https://wpmet.com/wordpress.org/rating/shopengine' )
186 - ->set_plugin_logo( 'https://ps.w.org/shopengine/assets/icon-256x256.gif?rev=2505061', 'width:150px !important' )
187 - ->set_priority( 10 )
188 - ->set_first_appear_day( 7 )
189 - ->set_condition( true )
190 - ->call();
191 -
192 - \ShopEngine\Core\MultiLanguage\Language::instance()->init();
193 -
194 163 \ShopEngine\Core\Settings\Base::instance()->init();
195 164
196 - new Libs\Select_Api\Base();
165 + (new Module_Manifest)->init();
197 166
198 - (new Module_Manifest())->init();
199 -
200 167 // working get instance of elementor widget
201 - (new Manifest())->init();
168 + (new Manifest)->init();
202 169
203 170 Query_Modifier::instance()->init();
204 171
205 - (new Conflict_Manifest())->init();
172 + (new Conflict_Manifest)->init();
206 173
207 174 // view count
208 - add_action('get_header', [$this, 'shopengine_track_product_views']);
175 + add_action('wp_head', [$this, 'shopengine_track_product_views']);
209 176
210 177 // database migrations
211 178 // (new \ShopEngine\Compatibility\Migrations\Migration())->init();
212 - // (new \ShopEngine\Compatibility\Migrations\Temp_Migration())->init();
179 + (new \ShopEngine\Compatibility\Migrations\Temp_Migration())->init();
213 180
214 -
215 - // call service providers
216 -
217 - $service_providers = include \ShopEngine::plugin_dir().'core/service-provider-manager.php';
218 - $method = 'init';
219 - foreach( $service_providers as $service_provider ){
220 -
221 - if(class_exists($service_provider) && method_exists($service_provider, $method)) {
222 - $instance = new $service_provider();
223 - $instance->$method();
224 - }
225 -
226 - }
227 -
228 181 add_filter('script_loader_tag', [$this, 'filter_load_type'], 99, 3);
229 182 }
230 183
231 184
232 - // add async and defer attributes to enqueued scripts
233 - public function filter_load_type($tag, $handle, $src) {
185 + // add async and defer attributes to enqueued scripts
186 + public function filter_load_type($tag, $handle, $src) {
234 187
235 - if(strpos($handle, '-async') !== false) {
236 - $tag = str_replace(' src', ' async="async" src', $tag);
237 - }
188 + if (strpos($handle, '-async') !== false) {
189 + $tag = str_replace(' src', ' async="async" src', $tag);
190 + }
238 191
239 - if(strpos($handle, '-defer') !== false) {
240 - $tag = str_replace('<script ', '<script defer ', $tag);
192 + if (strpos($handle, '-defer') !== false) {
193 + $tag = str_replace('<script ', '<script defer ', $tag);
194 + }
195 +
196 + return $tag;
241 197 }
242 198
243 - return $tag;
244 - }
245 -
246 199 /**
247 200 * Public function shopengine_track_product_views
248 201 * Adding Product Views Count Meta
249 202 */
250 - public function shopengine_track_product_views() {
251 -
203 + public function shopengine_track_product_views($product_id) {
252 204 if(class_exists('WooCommerce') && !is_product()) {
253 205 return;
254 206 }
255 -
256 207 $product_id = get_the_id();
257 208
258 - $cookie_name = "shopengine_recent_viewed_product";
259 -
260 - if(isset($_COOKIE[$cookie_name])) {
261 -
262 - $cookie_ids = $_COOKIE[$cookie_name];
263 - $product_ids = explode(',', $cookie_ids);
264 -
265 - if(!is_array($product_ids)) {
266 - $product_ids = [$product_ids];
267 - }
268 -
269 - $product_ids = array_combine($product_ids, $product_ids);
270 - unset($product_ids[$product_id]);
271 - $product_ids[] = $product_id;
272 -
273 - $cookie_value = implode(',', $product_ids);
274 -
275 - } else {
276 - $cookie_value = $product_id;
277 - }
278 -
279 - setcookie($cookie_name, $cookie_value, strtotime('+30 days'), '/' );
280 -
281 209 $count_key = 'shopengine_product_views_count';
282 210 $count = get_post_meta($product_id, $count_key, true);
283 -
284 211 if($count == '') {
285 212 $count = 1;
286 213 delete_post_meta($product_id, $count_key);
287 214 add_post_meta($product_id, $count_key, '1');
@@ -296,10 +223,12 @@
296 223 * Include public function
297 224 *
298 225 * @since 1.0.0
299 226 */
300 - public function js_css_public() {
301 - wp_register_style('shopengine-public', \ShopEngine::plugin_url() . 'assets/css/shopengine-public.css', false, \ShopEngine::version());
227 + public function js_css_public() {
228 + wp_enqueue_style('shopengine-icon', \ShopEngine::plugin_url() . 'assets/css/shopengine-icon.css', false, \ShopEngine::version());
229 + wp_enqueue_style('shopengine-simple-scrollbar-css', \ShopEngine::plugin_url() . 'assets/css/simple-scrollbar.css', false, \ShopEngine::version());
230 + wp_enqueue_style('shopengine-public-css', \ShopEngine::plugin_url() . 'assets/css/public-style.css', false, \ShopEngine::version());
302 231
303 232 // Modal Stylesheet
304 233 wp_register_style('shopengine-modal-styles', \ShopEngine::plugin_url() . 'assets/css/shopengine-modal.css', false, \ShopEngine::version());
305 234
@@ -434,5 +363,6 @@
434 363 }
435 364
436 365 return self::$instance;
437 366 }
367 +
438 368 }