PluginProbe
Easy Elements for Elementor – Addons & Website Templates / trunk
Easy Elements for Elementor – Addons & Website Templates vtrunk
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 trunk, at base.php

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