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 +453 -0 1.5.11.2.1 View file →
@@ -1,0 +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 + }
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 +
453 +Easyel_Elements_Elementor_Extension::instance();