PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.4.3
Easy Elements for Elementor – Addons & Website Templates v1.4.3
1.5.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.6 1.4.7 1.4.8 1.4.5 1.4.4 1.4.3 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 1.3.7 1.3.8 1.3.9 1.4.0 All 47 releases
easy-elements / base.php

base.php in Easy Elements for Elementor – Addons & Website Templates 1.4.3, at base.php

704 lines 24.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit;
4 }
5
6 final class Easyel_Elements_Elementor_Extension {
7
8 const VERSION = EASYELEMENTS_VER;
9
10 private static $_instance = null;
11
12 public static function instance() {
13 if ( is_null( self::$_instance ) ) {
14 self::$_instance = new self();
15 }
16 return self::$_instance;
17 }
18
19 public function __construct() {
20
21 // Load AJAX handlers
22 require_once EASYELEMENTS_DIR_PATH . 'widgets/login-register/class.login-register.php';
23
24 // Mini Cart AJAX handlers are loaded from the main plugin file
25 // (easy-elements.php) so wp_ajax_* actions are registered as early as
26 // possible — required on WP 6.9+ where admin-ajax.php returns 400 for
27 // unregistered actions instead of the previous silent 200 + "0".
28
29 add_action( 'init', [ $this, 'init' ] );
30 add_action( 'elementor/widgets/register', [ $this, 'init_widgets' ] );
31 add_action( 'elementor/elements/categories_registered', [ $this, 'add_elementor_categories' ] );
32
33 add_action( 'admin_notices', [ $this, 'easyel_admin_promo_notice' ] , 0 );
34 add_action( 'admin_init', [ $this, 'easyel_admin_promo_notice_dismiss_handler' ] );
35
36 add_filter( 'plugin_row_meta', [ $this, 'easyel_plugin_row_meta' ], 10, 2 );
37
38 add_filter('plugin_action_links_'.EASYELEMENTS_PATH,[ $this,'easyel_setting_page_link' ] );
39
40 add_action( 'plugins_loaded', [ $this, "easyel_plugin_loaded" ] );
41
42 register_activation_hook( EASYELEMENTS_PATH, [ __CLASS__, 'easy_elements_activate' ] );
43
44 add_action( 'admin_init', [ __CLASS__, 'easyel_maybe_upgrade' ] );
45
46 add_action('elementor/controls/register', function( $controls_manager ) {
47 $controls_manager->register(
48 new \Easyel\EasyElements\Utils\SearchSelect2()
49 );
50 });
51
52 \Easyel\EasyElements\Extensions\WrapperLink\EasyelWrapperLink::get_instance();
53
54 }
55
56 public static function easyel_maybe_upgrade() {
57
58 $stored_version = get_option( 'easyel_plugin_version', '0' );
59
60 if ( version_compare( $stored_version, '1.3.1', '<' ) ) {
61
62 self::easyel_upgrade_130();
63
64 update_option( 'easyel_plugin_version', '1.3.1' );
65 }
66 }
67
68 private static function easyel_upgrade_130() {
69
70 $option_key_extension = 'easy_element_extensions';
71 $settings = get_option( $option_key_extension, [] );
72
73 $new_defaults = [
74 'enable_wrapper_link' => 1,
75 'enable_post_duplicator' => 1,
76 'enable_dynamic_content' => 1,
77 'enable_megamenu_builder' => 1,
78 ];
79
80 foreach ( $new_defaults as $key => $default ) {
81 if ( ! isset( $settings[ $key ] ) ) {
82 $settings[ $key ] = $default;
83 }
84 }
85
86 update_option( $option_key_extension, $settings );
87 }
88
89 public static function easy_elements_activate() {
90
91 if ( class_exists( '\Easyel\EasyElements\Admin\Admin_Settings' ) ) {
92
93 $option_key_extension = 'easy_element_extensions';
94 $settings = get_option( $option_key_extension, [] );
95
96 $include_extension = array(
97 "enable_wrapper_link",
98 "enable_post_duplicator",
99 "enable_dynamic_content",
100 "enable_megamenu_builder",
101 );
102
103 $fields2 = [];
104
105 if ( function_exists('easyel_get_extension_fields') ) {
106 $fields2 = easyel_get_extension_fields();
107 }
108
109 foreach ( $fields2 as $key => $data ) {
110
111 if ( array_key_exists( $key, $settings ) ) {
112 continue;
113 }
114
115 $settings[$key] = in_array( $key, $include_extension, true ) ? 1 : 0;
116 }
117
118 update_option( $option_key_extension, $settings );
119
120 $include_widget = array(
121 "easy_table",
122 "bmi_calculator",
123 "single_navigation_menu",
124 );
125
126 $available_elements = \Easyel\EasyElements\Admin\Admin_Settings::get_instance()->easyel_elements_get_available_widgets();
127 $tab = 'widget';
128
129 foreach ( $available_elements as $key => $widget ) {
130
131 if ( isset( $widget['tab'] ) && $widget['tab'] === $tab ) {
132
133 $option_name = 'easy_element_' . $tab . '_' . $key;
134
135 $existing_value = get_option( $option_name, null );
136
137 if ( $existing_value !== null ) {
138 continue;
139 }
140
141 if ( in_array( $key, $include_widget, true ) ) {
142 add_option( $option_name, '0' );
143 }
144 }
145 }
146 }
147
148 flush_rewrite_rules();
149 }
150
151 public function easyel_admin_promo_notice() {
152
153 // Already dismissed
154 if ( get_option( 'easyel_admin_promo_notice_dismissed2' ) ) {
155 return;
156 }
157
158 $dismiss_url = wp_nonce_url(
159 add_query_arg(
160 [ 'easyel_promo_notice_dismiss' => '1' ],
161 admin_url()
162 ),
163 'easyel_promo_notice_dismiss_nonce'
164 );
165 ?>
166
167 <div class="notice notice-info easyel-promo-notice">
168 <div class="easyel-promo-content">
169 <div class="easyel-promo-left">
170 <span class="orange">Exclusive Deals Available</span> <span></span> Discount Up To
171 <span style="color:#ff7dcb;">40%</span> OFF
172 <a class="easyel-promo-btn" href="https://wpeasyelements.com/pricing/" target="_blank">
173 Grab the Deal
174 </a>
175
176 </div>
177 <div class="easyel-promo-right">
178 <a href="<?php echo esc_url( $dismiss_url ); ?>" style="text-decoration:none;">
179 Dismiss
180 </a>
181 </div>
182 </div>
183 </div>
184
185 <?php
186 }
187
188 function easyel_plugin_row_meta( $meta, $plugin_file ) {
189 if ( basename( EASYELEMENTS_PATH) !== basename( $plugin_file ) ) {
190 return $meta;
191 }
192
193 $meta[] = '<a href="https://wpeasyelements.com/docs/" target="_blank">' . esc_html__('Documentation', 'easy-elements' ) . '</a>';
194 $meta[] = '<a href="https://themewant.com/support/" target="_blank">' . esc_html__('Support', 'easy-elements') . '</a>';
195 if ( !file_exists( WP_PLUGIN_DIR . '/' . 'easy-elements-pro/easy-elements-pro.php' ) ) {
196 $meta[] = '<a href="https://wpeasyelements.com/" style="color:#ff7a00; font-weight: bold;" target="_blank">' . esc_html__('Upgrade to Pro', 'easy-elements') . '</a>';
197 }
198 $meta[] = '<a href="https://wordpress.org/support/plugin/easy-elements/reviews/#new-post" target="_blank">' . esc_html__(' Rate the plugin �
199
200
201
202
203 ', 'easy-elements' ) . '</a>';
204 return $meta;
205 }
206
207 public function easyel_admin_promo_notice_dismiss_handler() {
208
209 if ( ! is_admin() ) {
210 return;
211 }
212
213 if ( empty( $_GET['easyel_promo_notice_dismiss'] ) ) {
214 return;
215 }
216
217 $nonce = isset( $_GET['_wpnonce'] )
218 ? sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) )
219 : '';
220
221 if ( ! wp_verify_nonce( $nonce, 'easyel_promo_notice_dismiss_nonce' ) ) {
222 return;
223 }
224
225 update_option( 'easyel_admin_promo_notice_dismissed2', 1 );
226
227 wp_safe_redirect(
228 remove_query_arg( [ 'easyel_promo_notice_dismiss', '_wpnonce' ] )
229 );
230 exit;
231 }
232
233 public function init() {
234 // Safety checks
235
236 add_filter( 'body_class', [ $this, "easy_add_extra_body_class" ] );
237 add_action( 'easy_header', [ $this, 'easyel_before_content_container_hfe'], 20 );
238 add_action( 'easy_footer', [ $this, 'easyel_after_content_container_hfe' ], 5 );
239
240 add_action( 'admin_notices', [ $this, 'easyelements_admin_notice_missing_elementor' ] );
241 }
242
243 public function easyel_plugin_loaded () {
244
245 \Easyel\EasyElements\Utils\Enqueue::get_instance();
246 \Easyel\EasyElements\Utils\QueryHelper::get_instance();
247
248 if( is_admin() ) {
249 \Easyel\EasyElements\Admin\Admin_Settings::get_instance();
250 \Easyel\EasyElements\NoticeDashboard\NoticeDashboard::get_instance();
251
252 }
253
254 if ( did_action( 'elementor/loaded' ) ) {
255 \Easyel\EasyElements\Template_Library\Easyel_Templates_Library::get_instance();
256 \Easyel\EasyElements\Starter_Template\Easyel_Starter_Template::get_instance();
257 \Easyel\EasyElements\Header_Footer_Builder\Classes\Easy_Header_Footer_Elementor::get_instance();
258 }
259
260 \Easyel\EasyElements\Theme_Builder\Easyel_Theme_Builder_CPT::get_instance();
261
262 \Easyel\EasyElements\Theme_Builder\Easyel_Theme_Builder_Front::get_instance();
263
264 \Easyel\EasyElements\PostType\OffcanvasPostType::get_instance();
265 \Easyel\EasyElements\CustomCode\Easyel_Custom_Code::get_instance();
266 \Easyel\EasyElements\Popup_Builder\Easyel_Popup_Builder::get_instance();
267 \Easyel\EasyElements\Extensions\ExtensionHook\ExtensionModule::get_instance();
268 \Easyel\EasyElements\Extensions\CustomCss\EasyelCustomCss::get_instance()->init();
269 \Easyel\EasyElements\Extensions\Duplicator\EasyelDuplicator::get_instance();
270 \Easyel\EasyElements\Extensions\SettingExport\EasyelExport::get_instance();
271 \Easyel\EasyElements\Extensions\LiveCopy\CopyPaste::get_instance();
272 \Easyel\EasyElements\Extensions\VisibilityControl\VisibilityModule::get_instance();
273 \Easyel\EasyElements\Extensions\Jarallax\JaralaxControl::get_instance()->init();
274 \Easyel\EasyElements\Extensions\Jarallax\GlobalJarallax::get_instance();
275 \Easyel\EasyElements\Extensions\ProgressBar\ReadingProgressBar::get_instance();
276 \Easyel\EasyElements\Extensions\ScrollTop\ScrollTop::get_instance();
277
278 // Preloader extension — only load the class file when the extension is enabled
279 // (avoids parsing/instantiation cost when user has it turned off).
280 if ( function_exists( 'easy_element_is_enabled' ) && easy_element_is_enabled( 'enable_preloader' ) ) {
281 require_once EASYELEMENTS_DIR_PATH . 'includes/Extensions/Preloader/preloader.php';
282 \Easyel\EasyElements\Extensions\Preloader\EasyelPreloader::get_instance();
283 }
284
285
286 if ( ! class_exists( '\Appsero\Client' ) ) {
287 return;
288 }
289
290 \Easyel\EasyElements\Tracking\Appsero_Tracker::instance();
291 }
292
293 public function easyelements_admin_notice_missing_elementor() {
294
295 $elementor = 'elementor/elementor.php';
296
297 if ( current_user_can( 'activate_plugins' ) && isset( $_GET['activate'], $_GET['_wpnonce'] ) ) {
298
299 $nonce = isset( $_GET['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ) : '';
300
301 if ( wp_verify_nonce( $nonce, 'activate-plugin_' . $elementor ) ) {
302 unset( $_GET['activate'] );
303 }
304 }
305
306 if ( ! current_user_can( 'install_plugins' ) ) {
307 return;
308 }
309
310 $elementor = 'elementor/elementor.php';
311 $elementor_path = WP_PLUGIN_DIR . '/' . $elementor;
312
313 $is_installed = file_exists( $elementor_path );
314 $is_active = function_exists( 'is_plugin_active' ) && is_plugin_active( $elementor );
315
316 if ( $is_active ) {
317 return;
318 }
319
320 if ( $is_installed ) {
321 $action_url = wp_nonce_url(
322 self_admin_url( 'plugins.php?action=activate&plugin=' . $elementor ),
323 'activate-plugin_' . $elementor
324 );
325
326 $button_label = esc_html__( 'Activate Elementor', 'easy-elements' );
327 $notice_text = esc_html__( 'Easy Elements is not working because the Elementor plugin is inactive.', 'easy-elements' );
328
329 } else {
330 $action_url = wp_nonce_url(
331 self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ),
332 'install-plugin_elementor'
333 );
334
335 $button_label = esc_html__( 'Install Elementor', 'easy-elements' );
336 $notice_text = esc_html__( 'Easy Elements requires the Elementor plugin to be installed.', 'easy-elements' );
337 }
338
339 $message = '<p>' . $notice_text . '</p>';
340 $message .= '<p><a href="' . esc_url( $action_url ) . '" class="button-primary">' . $button_label . '</a></p>';
341
342 printf(
343 '<div class="notice notice-error is-dismissible">%s</div>',
344 wp_kses_post( $message )
345 );
346 }
347
348 // Container Full site
349 public function easyel_before_content_container_hfe() {
350 if ( is_admin() ) return;
351 if ( function_exists( 'elementor_theme_do_location' ) && \Elementor\Plugin::$instance->preview->is_preview() ) {
352 return;
353 }
354 echo '<div class="easyel-content-container">';
355 }
356
357 /**
358 * Close container before HFE Footer
359 */
360 function easyel_after_content_container_hfe() {
361 if ( is_admin() ) return;
362 if ( function_exists( 'elementor_theme_do_location' ) && \Elementor\Plugin::$instance->preview->is_preview() ) {
363 return;
364 }
365 echo '</div>';
366 }
367
368 public function easy_add_extra_body_class( $classes ) {
369 if ( is_plugin_active( 'easy-elements/easy-elements.php' ) ) {
370 $classes[] = 'eel-easy-elements';
371 }
372
373 return $classes;
374 }
375
376 public function add_elementor_categories( $elements_manager ) {
377
378 $new_categories = [
379 'easyelements_category' => [
380 'title' => __( 'Easy Elements', 'easy-elements' ),
381 'icon' => 'fa fa-plug',
382 ],
383 'easyelements_post_category' => [
384 'title' => __( 'Easy Post Type Elements', 'easy-elements' ),
385 'icon' => 'fa fa-file-alt',
386 ],
387 'easyelements_header_footer_category' => [
388 'title' => __( 'Easy Header Footer Elements', 'easy-elements' ),
389 'icon' => 'fa fa-header',
390 ],
391 'easyelements_category_form' => [
392 'title' => __( 'Easy Elements Form', 'easy-elements' ),
393 'icon' => 'fa fa-plug',
394 ],
395 'easyelements_category_pro' => [
396 'title' => __( 'Easy Elements Pro', 'easy-elements' ),
397 'icon' => 'fa fa-plug',
398 ],
399 ];
400
401 $existing = $elements_manager->get_categories();
402 $final_list = [];
403
404 foreach ( $existing as $key => $cat ) {
405 $final_list[ $key ] = $cat;
406
407 if ( $key === 'layout' ) {
408 foreach ( $new_categories as $new_key => $new_cat ) {
409 $final_list[ $new_key ] = $new_cat;
410 }
411 }
412 }
413
414 $apply_categories = function( $cats ) {
415 $this->categories = $cats;
416 };
417
418 $apply_categories->call( $elements_manager, $final_list );
419 }
420
421 public function init_widgets() {
422 $widgets_manager = \Elementor\Plugin::instance()->widgets_manager;
423
424 $widgets = [
425 'site_logo' => [
426 'class' => '\Easyel\EasyElements\Widgets\Easyel_Site_Logo_Widget',
427 'file' => EASYELEMENTS_DIR_PATH . '/widgets/site-logo/site-logo.php',
428 'tab' => 'widget'
429 ],
430 'heading' => [
431 'class' => '\Easyel\EasyElements\Widgets\Easyel_Heading_Widget',
432 'file' => EASYELEMENTS_DIR_PATH . '/widgets/heading/heading.php',
433 'tab' => 'widget'
434 ],
435 'clients_logo' => [
436 'class' => '\Easyel\EasyElements\Widgets\Easyel_Clients_Logo__Widget',
437 'file' => EASYELEMENTS_DIR_PATH . '/widgets/clients-logo-grid/logo.php',
438 'tab' => 'widget'
439 ],
440 'icon_box' => [
441 'class' => '\Easyel\EasyElements\Widgets\Easyel_Icon_Box__Widget',
442 'file' => EASYELEMENTS_DIR_PATH . '/widgets/icon-box/icon.php',
443 'tab' => 'widget'
444 ],
445 'simple_tab' => [
446 'class' => '\Easyel\EasyElements\Widgets\Easyel_Tab_Widget',
447 'file' => EASYELEMENTS_DIR_PATH . '/widgets/tab/tab.php',
448 'tab' => 'widget'
449 ],
450 'testimonials' => [
451 'class' => '\Easyel\EasyElements\Widgets\Easyel_Testimonials__Widget',
452 'file' => EASYELEMENTS_DIR_PATH . '/widgets/testimonials-grid/testimonials.php',
453 'tab' => 'widget'
454 ],
455 'team_grid' => [
456 'class' => '\Easyel\EasyElements\Widgets\Easyel_Team_Grid__Widget',
457 'file' => EASYELEMENTS_DIR_PATH . '/widgets/team-grid/team-grid.php',
458 'tab' => 'widget'
459 ],
460 'search' => [
461 'class' => '\Easyel\EasyElements\Widgets\Easyel_Search_Widget',
462 'file' => EASYELEMENTS_DIR_PATH . '/widgets/search/search.php',
463 'tab' => 'widget'
464 ],
465 'contact_box' => [
466 'class' => '\Easyel\EasyElements\Widgets\Easyel_Contact_Box__Widget',
467 'file' => EASYELEMENTS_DIR_PATH . '/widgets/contact-box/contact.php',
468 'tab' => 'widget'
469 ],
470 'faq' => [
471 'class' => '\Easyel\EasyElements\Widgets\Easyel_FAQ_Accordion_Widget',
472 'file' => EASYELEMENTS_DIR_PATH . '/widgets/faq/faq.php',
473 'tab' => 'widget'
474 ],
475 'blog_grid' => [
476 'class' => '\Easyel\EasyElements\Widgets\Easyel_Blog_Grid__Widget',
477 'file' => EASYELEMENTS_DIR_PATH . '/widgets/blog-grid/blog-grid.php',
478 'tab' => 'widget'
479 ],
480 'video' => [
481 'class' => '\Easyel\EasyElements\Widgets\Easyel_Video_Popup_Widget',
482 'file' => EASYELEMENTS_DIR_PATH . '/widgets/video/video.php',
483 'tab' => 'widget'
484 ],
485 'pricing_table' => [
486 'class' => '\Easyel\EasyElements\Widgets\Easyel_Pricing_Table_Widget',
487 'file' => EASYELEMENTS_DIR_PATH . '/widgets/pricing-table/pricing.php',
488 'tab' => 'widget'
489 ],
490 'service_list' => [
491 'class' => '\Easyel\EasyElements\Widgets\Easyel_Service_List_Widget',
492 'file' => EASYELEMENTS_DIR_PATH . '/widgets/service-list/service-list.php',
493 'tab' => 'widget'
494 ],
495 'navigation_menu' => [
496 'class' => '\Easyel\EasyElements\Widgets\Easyel_Navigation_Menu_Widget',
497 'file' => EASYELEMENTS_DIR_PATH . '/widgets/navigation-menu/navigation-menu.php',
498 'tab' => 'widget'
499 ],
500 'page_title' => [
501 'class' => '\Easyel\EasyElements\Widgets\Easyel_Page_Title_Widget',
502 'file' => EASYELEMENTS_DIR_PATH . '/widgets/page-title/page-title.php',
503 'tab' => 'widget'
504 ],
505 'button' => [
506 'class' => '\Easyel\EasyElements\Widgets\Easyel_Button_Widget',
507 'file' => EASYELEMENTS_DIR_PATH . '/widgets/button/button.php',
508 'tab' => 'widget'
509 ],
510 'process_grid' => [
511 'class' => '\Easyel\EasyElements\Widgets\Easyel_Process_Grid_Widget',
512 'file' => EASYELEMENTS_DIR_PATH . '/widgets/process-grid/process-grid.php',
513 'tab' => 'widget'
514 ],
515 'process_list' => [
516 'class' => '\Easyel\EasyElements\Widgets\Easyel_Process_lists_Widget',
517 'file' => EASYELEMENTS_DIR_PATH . '/widgets/process-list/process-list.php',
518 'tab' => 'widget'
519 ],
520 'social_share' => [
521 'class' => '\Easyel\EasyElements\Widgets\Easyel_Social_Share_Widget',
522 'file' => EASYELEMENTS_DIR_PATH . '/widgets/social-share/social-share.php',
523 'tab' => 'widget'
524 ],
525 'social_icon' => [
526 'class' => '\Easyel\EasyElements\Widgets\Easyel_Social_Icon_Widget',
527 'file' => EASYELEMENTS_DIR_PATH . '/widgets/social-icon/social.php',
528 'tab' => 'widget'
529 ],
530 'breadcrumb' => [
531 'class' => '\Easyel\EasyElements\Widgets\Easyel_Breadcrumb_Widget',
532 'file' => EASYELEMENTS_DIR_PATH . '/widgets/breadcrumb/breadcrumb.php',
533 'tab' => 'widget'
534 ],
535 'domain_search' => [
536 'class' => '\Easyel\EasyElements\Widgets\Easyel_Domain_Search_Widget',
537 'file' => EASYELEMENTS_DIR_PATH . '/widgets/domain-search/domain-search.php',
538 'tab' => 'widget'
539 ],
540 'image_comparison' => [
541 'class' => '\Easyel\EasyElements\Widgets\Easyel_Before_After_Widget',
542 'file' => EASYELEMENTS_DIR_PATH . '/widgets/image-comparison/img-before-after.php',
543 'tab' => 'widget'
544 ],
545 'easy_offcanvas' => [
546 'class' => '\Easyel\EasyElements\Widgets\Easyel_Offcanvas_Widget',
547 'file' => EASYELEMENTS_DIR_PATH . '/widgets/offcanvas/offcanvas.php',
548 'tab' => 'widget'
549 ],
550 'easy_table' => [
551 'class' => '\Easyel\EasyElements\Widgets\Easyel_Table_Elementor_Widget',
552 'file' => EASYELEMENTS_DIR_PATH . '/widgets/table/table-normal.php',
553 'tab' => 'widget'
554 ],
555 'easy_scroll_to_top' => [
556 'class' => '\Easyel\EasyElements\Widgets\Easyel_Scroll_To_Top_Widget',
557 'file' => EASYELEMENTS_DIR_PATH . '/widgets/scroll-to-top/scroll.php',
558 'tab' => 'widget'
559 ],
560 'easy_cf7' => [
561 'class' => '\Easyel\EasyElements\Widgets\easyel__CF7_Widget',
562 'file' => EASYELEMENTS_DIR_PATH . '/widgets/cf7/contact-cf7.php',
563 'tab' => 'widget'
564 ],
565 'easy_gallery' => [
566 'class' => '\Easyel\EasyElements\Widgets\Easyel__Gallery_Widget',
567 'file' => EASYELEMENTS_DIR_PATH . '/widgets/gallery/gallery.php',
568 'tab' => 'widget'
569 ],
570 'easy_progress' => [
571 'class' => '\Easyel\EasyElements\Widgets\Easyel_Progress_Widget',
572 'file' => EASYELEMENTS_DIR_PATH . '/widgets/progress/progress.php',
573 'tab' => 'widget'
574 ],
575 'counter' => [
576 'class' => '\Easyel\EasyElements\Widgets\Easyel_Counter_Widget',
577 'file' => EASYELEMENTS_DIR_PATH . '/widgets/counter/counter.php',
578 'tab' => 'widget'
579 ],
580 'countdown' => [
581 'class' => '\Easyel\EasyElements\Widgets\Easyel_Count_Down_Widget',
582 'file' => EASYELEMENTS_DIR_PATH . '/widgets/countdown/countdown.php',
583 'tab' => 'widget'
584 ],
585 'excerpt' => [
586 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Excerpt_Widget',
587 'file' => EASYELEMENTS_DIR_PATH . '/widgets/excerpt/excerpt.php',
588 'tab' => 'widget'
589 ],
590 'post_title' => [
591 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Title_Widget',
592 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-title/post-title.php',
593 'tab' => 'widget'
594 ],
595 'post_content' => [
596 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_content_Widget',
597 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-content/post-content.php',
598 'tab' => 'widget'
599 ],
600 'featured_image' => [
601 'class' => '\Easyel\EasyElements\Widgets\Easyel_free_Featured_Image_Widget',
602 'file' => EASYELEMENTS_DIR_PATH . '/widgets/featured-image/featured-image.php',
603 'tab' => 'widget'
604 ],
605 'post_meta' => [
606 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Meta_Widget',
607 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-meta/post-meta.php',
608 'tab' => 'widget'
609 ],
610 'post_pagination' => [
611 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Pagination_Widget',
612 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-pagination/post-pagination.php',
613 'tab' => 'widget'
614 ],
615 'post_comments' => [
616 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Comments_Widget',
617 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-comments/post-comments.php',
618 'tab' => 'widget'
619 ],
620 'post_tags' => [
621 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Tags_Widget',
622 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-tag/post-tag.php',
623 'tab' => 'widget'
624 ],
625 'post_author' => [
626 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Author_Info_Widget',
627 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-author/post-author.php',
628 'tab' => 'widget'
629 ],
630 'archive_post' => [
631 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Archive_Post__Widget',
632 'file' => EASYELEMENTS_DIR_PATH . '/widgets/archive-post/archive-post.php',
633 'tab' => 'widget',
634 ],
635 'login_register' => [
636 'class' => '\Easyel\EasyElements\Widgets\Easyel_Login_Register_Widget',
637 'file' => EASYELEMENTS_DIR_PATH . '/widgets/login-register/login-register.php',
638 'tab' => 'widget',
639 ],
640 'feature_list' => [
641 'class' => '\Easyel\EasyElements\Widgets\Easyel_Feature_List__Widget',
642 'file' => EASYELEMENTS_DIR_PATH . '/widgets/feature-list/feature-list.php',
643 'tab' => 'widget',
644 ],
645 'single_navigation_menu' => [
646 'class' => '\Easyel\EasyElements\Widgets\Easyel_Single_Nav_Widget',
647 'file' => EASYELEMENTS_DIR_PATH . '/widgets/single-nav/single-nav.php',
648 'tab' => 'widget',
649 ],
650 'vertical_navigation_menu' => [
651 'class' => '\Easyel\EasyElements\Widgets\Easyel_vertical_Menu_Widget',
652 'file' => EASYELEMENTS_DIR_PATH . '/widgets/vertical-menu/vertical-menu-widget.php',
653 'tab' => 'widget',
654 ]
655 ];
656
657 // WooCommerce-dependent widgets — only register when WooCommerce is active.
658 if ( class_exists( 'WooCommerce' ) ) {
659 $widgets['product_grid_lite'] = [
660 'class' => '\Easyel\EasyElements\Widgets\Easyel_Product_Grid_Lite_Widget',
661 'file' => EASYELEMENTS_DIR_PATH . '/widgets/product-grid-lite/product-grid-lite.php',
662 'tab' => 'widget',
663 ];
664
665 // Skip if an older version of Easy Elements Pro still bundles the Mini Cart widget.
666 $legacy_pro_mini_cart = defined( 'EASYELEMENTS_PRO_PATH' )
667 && file_exists( rtrim( EASYELEMENTS_PRO_PATH, '/\\' ) . '/widgets/mini-cart/mini-cart.php' );
668
669 if ( ! $legacy_pro_mini_cart ) {
670 $widgets['mini_cart'] = [
671 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Mini_Cart_Widget',
672 'file' => EASYELEMENTS_DIR_PATH . '/widgets/mini-cart/mini-cart.php',
673 'tab' => 'widget',
674 ];
675 }
676 }
677
678 foreach ( $widgets as $key => $data ) {
679 $option_name = 'easy_element_' . $data['tab'] . '_' . $key;
680 $enabled = get_option( $option_name, '1' );
681
682 if ( 1 !== ( int ) $enabled ) {
683 continue; // Skip disabled widgets
684 }
685
686 if ( file_exists( $data['file'] ) ) {
687 require_once $data['file'];
688
689 if ( class_exists( $data['class'] ) ) {
690 $widgets_manager->register( new $data['class']() );
691 }
692 }
693 }
694 }
695
696 public function easyel_setting_page_link( $links ) {
697 $action_link = sprintf("<a href='%s'>%s</a>",admin_url('admin.php?page=easy-elements-dashboard'),__('Settings','easy-elements'));
698 array_push( $links,$action_link );
699 return $links;
700 }
701
702 }
703
704 Easyel_Elements_Elementor_Extension::instance();