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