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 -659 1.3.91.2.1 View file →
@@ -1,660 +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">Exclusive Deals Available</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\Starter_Template\Easyel_Starter_Template::get_instance();
242 - \Easyel\EasyElements\Header_Footer_Builder\Classes\Easy_Header_Footer_Elementor::get_instance();
243 - }
244 -
245 - \Easyel\EasyElements\Theme_Builder\Easyel_Theme_Builder_CPT::get_instance();
246 -
247 - \Easyel\EasyElements\Theme_Builder\Easyel_Theme_Builder_Front::get_instance();
248 -
249 - \Easyel\EasyElements\PostType\OffcanvasPostType::get_instance();
250 - \Easyel\EasyElements\CustomCode\Easyel_Custom_Code::get_instance();
251 - \Easyel\EasyElements\Popup_Builder\Easyel_Popup_Builder::get_instance();
252 - \Easyel\EasyElements\Extensions\ExtensionHook\ExtensionModule::get_instance();
253 - \Easyel\EasyElements\Extensions\CustomCss\EasyelCustomCss::get_instance()->init();
254 - \Easyel\EasyElements\Extensions\Duplicator\EasyelDuplicator::get_instance();
255 - \Easyel\EasyElements\Extensions\SettingExport\EasyelExport::get_instance();
256 - \Easyel\EasyElements\Extensions\LiveCopy\CopyPaste::get_instance();
257 - \Easyel\EasyElements\Extensions\VisibilityControl\VisibilityModule::get_instance();
258 - \Easyel\EasyElements\Extensions\Jarallax\JaralaxControl::get_instance()->init();
259 - \Easyel\EasyElements\Extensions\Jarallax\GlobalJarallax::get_instance();
260 - \Easyel\EasyElements\Extensions\ProgressBar\ReadingProgressBar::get_instance();
261 -
262 -
263 - if ( ! class_exists( '\Appsero\Client' ) ) {
264 - return;
265 - }
266 -
267 - \Easyel\EasyElements\Tracking\Appsero_Tracker::instance();
268 - }
269 -
270 - public function easyelements_admin_notice_missing_elementor() {
271 -
272 - $elementor = 'elementor/elementor.php';
273 -
274 - if ( current_user_can( 'activate_plugins' ) && isset( $_GET['activate'], $_GET['_wpnonce'] ) ) {
275 -
276 - $nonce = isset( $_GET['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ) : '';
277 -
278 - if ( wp_verify_nonce( $nonce, 'activate-plugin_' . $elementor ) ) {
279 - unset( $_GET['activate'] );
280 - }
281 - }
282 -
283 - if ( ! current_user_can( 'install_plugins' ) ) {
284 - return;
285 - }
286 -
287 - $elementor = 'elementor/elementor.php';
288 - $elementor_path = WP_PLUGIN_DIR . '/' . $elementor;
289 -
290 - $is_installed = file_exists( $elementor_path );
291 - $is_active = function_exists( 'is_plugin_active' ) && is_plugin_active( $elementor );
292 -
293 - if ( $is_active ) {
294 - return;
295 - }
296 -
297 - if ( $is_installed ) {
298 - $action_url = wp_nonce_url(
299 - self_admin_url( 'plugins.php?action=activate&plugin=' . $elementor ),
300 - 'activate-plugin_' . $elementor
301 - );
302 -
303 - $button_label = esc_html__( 'Activate Elementor', 'easy-elements' );
304 - $notice_text = esc_html__( 'Easy Elements is not working because the Elementor plugin is inactive.', 'easy-elements' );
305 -
306 - } else {
307 - $action_url = wp_nonce_url(
308 - self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ),
309 - 'install-plugin_elementor'
310 - );
311 -
312 - $button_label = esc_html__( 'Install Elementor', 'easy-elements' );
313 - $notice_text = esc_html__( 'Easy Elements requires the Elementor plugin to be installed.', 'easy-elements' );
314 - }
315 -
316 - $message = '<p>' . $notice_text . '</p>';
317 - $message .= '<p><a href="' . esc_url( $action_url ) . '" class="button-primary">' . $button_label . '</a></p>';
318 -
319 - printf(
320 - '<div class="notice notice-error is-dismissible">%s</div>',
321 - wp_kses_post( $message )
322 - );
323 - }
324 -
325 - // Container Full site
326 - public function easyel_before_content_container_hfe() {
327 - if ( is_admin() ) return;
328 - if ( function_exists( 'elementor_theme_do_location' ) && \Elementor\Plugin::$instance->preview->is_preview() ) {
329 - return;
330 - }
331 - echo '<div class="easyel-content-container">';
332 - }
333 -
334 - /**
335 - * Close container before HFE Footer
336 - */
337 - function easyel_after_content_container_hfe() {
338 - if ( is_admin() ) return;
339 - if ( function_exists( 'elementor_theme_do_location' ) && \Elementor\Plugin::$instance->preview->is_preview() ) {
340 - return;
341 - }
342 - echo '</div>';
343 - }
344 -
345 - public function easy_add_extra_body_class( $classes ) {
346 - if ( is_plugin_active( 'easy-elements/easy-elements.php' ) ) {
347 - $classes[] = 'eel-easy-elements';
348 - }
349 -
350 - return $classes;
351 - }
352 -
353 - public function add_elementor_categories( $elements_manager ) {
354 -
355 - $new_categories = [
356 - 'easyelements_category' => [
357 - 'title' => __( 'Easy Elements', 'easy-elements' ),
358 - 'icon' => 'fa fa-plug',
359 - ],
360 - 'easyelements_post_category' => [
361 - 'title' => __( 'Easy Post Type Elements', 'easy-elements' ),
362 - 'icon' => 'fa fa-file-alt',
363 - ],
364 - 'easyelements_header_footer_category' => [
365 - 'title' => __( 'Easy Header Footer Elements', 'easy-elements' ),
366 - 'icon' => 'fa fa-header',
367 - ],
368 - 'easyelements_category_form' => [
369 - 'title' => __( 'Easy Elements Form', 'easy-elements' ),
370 - 'icon' => 'fa fa-plug',
371 - ],
372 - 'easyelements_category_pro' => [
373 - 'title' => __( 'Easy Elements Pro', 'easy-elements' ),
374 - 'icon' => 'fa fa-plug',
375 - ],
376 - ];
377 -
378 - $existing = $elements_manager->get_categories();
379 - $final_list = [];
380 -
381 - foreach ( $existing as $key => $cat ) {
382 - $final_list[ $key ] = $cat;
383 -
384 - if ( $key === 'layout' ) {
385 - foreach ( $new_categories as $new_key => $new_cat ) {
386 - $final_list[ $new_key ] = $new_cat;
387 - }
388 - }
389 - }
390 -
391 - $apply_categories = function( $cats ) {
392 - $this->categories = $cats;
393 - };
394 -
395 - $apply_categories->call( $elements_manager, $final_list );
396 - }
397 -
398 - public function init_widgets() {
399 - $widgets_manager = \Elementor\Plugin::instance()->widgets_manager;
400 -
401 - $widgets = [
402 - 'site_logo' => [
403 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Site_Logo_Widget',
404 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/site-logo/site-logo.php',
405 - 'tab' => 'widget'
406 - ],
407 - 'heading' => [
408 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Heading_Widget',
409 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/heading/heading.php',
410 - 'tab' => 'widget'
411 - ],
412 - 'clients_logo' => [
413 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Clients_Logo__Widget',
414 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/clients-logo-grid/logo.php',
415 - 'tab' => 'widget'
416 - ],
417 - 'icon_box' => [
418 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Icon_Box__Widget',
419 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/icon-box/icon.php',
420 - 'tab' => 'widget'
421 - ],
422 - 'simple_tab' => [
423 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Tab_Widget',
424 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/tab/tab.php',
425 - 'tab' => 'widget'
426 - ],
427 - 'testimonials' => [
428 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Testimonials__Widget',
429 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/testimonials-grid/testimonials.php',
430 - 'tab' => 'widget'
431 - ],
432 - 'team_grid' => [
433 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Team_Grid__Widget',
434 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/team-grid/team-grid.php',
435 - 'tab' => 'widget'
436 - ],
437 - 'search' => [
438 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Search_Widget',
439 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/search/search.php',
440 - 'tab' => 'widget'
441 - ],
442 - 'contact_box' => [
443 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Contact_Box__Widget',
444 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/contact-box/contact.php',
445 - 'tab' => 'widget'
446 - ],
447 - 'faq' => [
448 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_FAQ_Accordion_Widget',
449 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/faq/faq.php',
450 - 'tab' => 'widget'
451 - ],
452 - 'blog_grid' => [
453 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Blog_Grid__Widget',
454 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/blog-grid/blog-grid.php',
455 - 'tab' => 'widget'
456 - ],
457 - 'video' => [
458 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Video_Popup_Widget',
459 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/video/video.php',
460 - 'tab' => 'widget'
461 - ],
462 - 'pricing_table' => [
463 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Pricing_Table_Widget',
464 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/pricing-table/pricing.php',
465 - 'tab' => 'widget'
466 - ],
467 - 'service_list' => [
468 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Service_List_Widget',
469 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/service-list/service-list.php',
470 - 'tab' => 'widget'
471 - ],
472 - 'navigation_menu' => [
473 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Navigation_Menu_Widget',
474 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/navigation-menu/navigation-menu.php',
475 - 'tab' => 'widget'
476 - ],
477 - 'page_title' => [
478 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Page_Title_Widget',
479 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/page-title/page-title.php',
480 - 'tab' => 'widget'
481 - ],
482 - 'button' => [
483 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Button_Widget',
484 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/button/button.php',
485 - 'tab' => 'widget'
486 - ],
487 - 'process_grid' => [
488 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Process_Grid_Widget',
489 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/process-grid/process-grid.php',
490 - 'tab' => 'widget'
491 - ],
492 - 'process_list' => [
493 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Process_lists_Widget',
494 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/process-list/process-list.php',
495 - 'tab' => 'widget'
496 - ],
497 - 'social_share' => [
498 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Social_Share_Widget',
499 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/social-share/social-share.php',
500 - 'tab' => 'widget'
501 - ],
502 - 'social_icon' => [
503 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Social_Icon_Widget',
504 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/social-icon/social.php',
505 - 'tab' => 'widget'
506 - ],
507 - 'breadcrumb' => [
508 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Breadcrumb_Widget',
509 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/breadcrumb/breadcrumb.php',
510 - 'tab' => 'widget'
511 - ],
512 - 'domain_search' => [
513 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Domain_Search_Widget',
514 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/domain-search/domain-search.php',
515 - 'tab' => 'widget'
516 - ],
517 - 'image_comparison' => [
518 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Before_After_Widget',
519 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/image-comparison/img-before-after.php',
520 - 'tab' => 'widget'
521 - ],
522 - 'easy_offcanvas' => [
523 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Offcanvas_Widget',
524 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/offcanvas/offcanvas.php',
525 - 'tab' => 'widget'
526 - ],
527 - 'easy_table' => [
528 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Table_Elementor_Widget',
529 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/table/table-normal.php',
530 - 'tab' => 'widget'
531 - ],
532 - 'easy_scroll_to_top' => [
533 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Scroll_To_Top_Widget',
534 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/scroll-to-top/scroll.php',
535 - 'tab' => 'widget'
536 - ],
537 - 'easy_cf7' => [
538 - 'class' => '\Easyel\EasyElements\Widgets\easyel__CF7_Widget',
539 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/cf7/contact-cf7.php',
540 - 'tab' => 'widget'
541 - ],
542 - 'easy_gallery' => [
543 - 'class' => '\Easyel\EasyElements\Widgets\Easyel__Gallery_Widget',
544 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/gallery/gallery.php',
545 - 'tab' => 'widget'
546 - ],
547 - 'easy_progress' => [
548 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Progress_Widget',
549 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/progress/progress.php',
550 - 'tab' => 'widget'
551 - ],
552 - 'counter' => [
553 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Counter_Widget',
554 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/counter/counter.php',
555 - 'tab' => 'widget'
556 - ],
557 - 'countdown' => [
558 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Count_Down_Widget',
559 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/countdown/countdown.php',
560 - 'tab' => 'widget'
561 - ],
562 - 'excerpt' => [
563 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Excerpt_Widget',
564 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/excerpt/excerpt.php',
565 - 'tab' => 'widget'
566 - ],
567 - 'post_title' => [
568 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Title_Widget',
569 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-title/post-title.php',
570 - 'tab' => 'widget'
571 - ],
572 - 'post_content' => [
573 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_content_Widget',
574 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-content/post-content.php',
575 - 'tab' => 'widget'
576 - ],
577 - 'featured_image' => [
578 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_free_Featured_Image_Widget',
579 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/featured-image/featured-image.php',
580 - 'tab' => 'widget'
581 - ],
582 - 'post_meta' => [
583 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Meta_Widget',
584 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-meta/post-meta.php',
585 - 'tab' => 'widget'
586 - ],
587 - 'post_pagination' => [
588 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Pagination_Widget',
589 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-pagination/post-pagination.php',
590 - 'tab' => 'widget'
591 - ],
592 - 'post_comments' => [
593 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Comments_Widget',
594 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-comments/post-comments.php',
595 - 'tab' => 'widget'
596 - ],
597 - 'post_tags' => [
598 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Tags_Widget',
599 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-tag/post-tag.php',
600 - 'tab' => 'widget'
601 - ],
602 - 'post_author' => [
603 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Post_Author_Info_Widget',
604 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/post-author/post-author.php',
605 - 'tab' => 'widget'
606 - ],
607 - 'archive_post' => [
608 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Free_Archive_Post__Widget',
609 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/archive-post/archive-post.php',
610 - 'tab' => 'widget',
611 - ],
612 - 'login_register' => [
613 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Login_Register_Widget',
614 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/login-register/login-register.php',
615 - 'tab' => 'widget',
616 - ],
617 - 'feature_list' => [
618 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Feature_List__Widget',
619 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/feature-list/feature-list.php',
620 - 'tab' => 'widget',
621 - ],
622 - 'single_navigation_menu' => [
623 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_Single_Nav_Widget',
624 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/single-nav/single-nav.php',
625 - 'tab' => 'widget',
626 - ],
627 - 'vertical_navigation_menu' => [
628 - 'class' => '\Easyel\EasyElements\Widgets\Easyel_vertical_Menu_Widget',
629 - 'file' => EASYELEMENTS_DIR_PATH . '/widgets/vertical-menu/vertical-menu-widget.php',
630 - 'tab' => 'widget',
631 - ]
632 - ];
633 -
634 - foreach ( $widgets as $key => $data ) {
635 - $option_name = 'easy_element_' . $data['tab'] . '_' . $key;
636 - $enabled = get_option( $option_name, '1' );
637 -
638 - if ( 1 !== ( int ) $enabled ) {
639 - continue; // Skip disabled widgets
640 - }
641 -
642 - if ( file_exists( $data['file'] ) ) {
643 - require_once $data['file'];
644 -
645 - if ( class_exists( $data['class'] ) ) {
646 - $widgets_manager->register( new $data['class']() );
647 - }
648 - }
649 - }
650 - }
651 -
652 - public function easyel_setting_page_link( $links ) {
653 - $action_link = sprintf("<a href='%s'>%s</a>",admin_url('admin.php?page=easy-elements-dashboard'),__('Settings','easy-elements'));
654 - array_push( $links,$action_link );
655 - return $links;
656 - }
657 -
658 -}
659 -
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 +
660 453 Easyel_Elements_Elementor_Extension::instance();