PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.2.4
Easy Elements for Elementor – Addons & Website Templates v1.2.4
1.5.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.6 1.4.7 1.4.8 1.4.5 1.4.4 1.4.3 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 All 47 releases
easy-elements / base.php

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

458 lines 13.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit;
4 }
5
6 final class Easyel_Elements_Elementor_Extension {
7
8 const VERSION = EASYELEMENTS_VER;
9
10 private static $_instance = null;
11
12 public static function instance() {
13 if ( is_null( self::$_instance ) ) {
14 self::$_instance = new self();
15 }
16 return self::$_instance;
17 }
18
19 public function __construct() {
20
21 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_Grid_Widget',
308 'file' => EASYELEMENTS_DIR_PATH . '/widgets/process-grid/process-grid.php',
309 'tab' => 'widget'
310 ],
311 'process_list' => [
312 'class' => '\Easyel_Process_lists_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 'feature_list' => [
432 'class' => '\Easyel_Feature_List__Widget',
433 'file' => __DIR__ . '/widgets/feature-list/feature-list.php',
434 'tab' => 'widget',
435 ],
436 ];
437
438 foreach ( $widgets as $key => $data ) {
439 $option_name = 'easy_element_' . $data['tab'] . '_' . $key;
440 $enabled = get_option( $option_name, '1' );
441
442 if ( 1 !== ( int ) $enabled ) {
443 continue; // Skip disabled widgets
444 }
445
446 if ( file_exists( $data['file'] ) ) {
447 require_once $data['file'];
448
449 if ( class_exists( $data['class'] ) ) {
450 $widgets_manager->register( new $data['class']() );
451 }
452 }
453 }
454 }
455
456 }
457
458 Easyel_Elements_Elementor_Extension::instance();