PluginProbe ʕ •ᴥ•ʔ
ElementsKit Elementor Addons – Advanced Widgets & Templates Addons for Elementor / 4.0.0
ElementsKit Elementor Addons – Advanced Widgets & Templates Addons for Elementor v4.0.0
4.0.2 4.0.1 4.0.0 3.10.02 3.10.01 3.9.10 3.9.9 3.9.8 3.9.7 3.9.5 3.9.6 3.9.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.3.1 2.3.1.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.4.0 2.5.0 2.5.1 2.5.10 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.5 2.8.6 2.8.7 2.8.8 2.9.0 2.9.1 2.9.2 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 3.5.0 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.6.0 3.6.1 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.9.0 3.9.1 3.9.2 trunk 1.2.6 1.2.7 1.2.9 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.10 1.5.11 1.5.12 1.5.2 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.0.9.1 2.0.9.2 2.0.9.3
elementskit-lite / modules / megamenu / api.php
elementskit-lite / modules / megamenu Last commit date
assets 3 weeks ago views 7 months ago api.php 3 weeks ago init.php 3 weeks ago options.php 4 years ago walker-nav-menu.php 3 weeks ago
api.php
90 lines
1 <?php
2 namespace ElementsKit_Lite;
3
4 use ElementsKit_Lite\Libs\Framework\Attr;
5 use ElementsKit_Lite\Modules\Megamenu\Init;
6
7 defined( 'ABSPATH' ) || exit;
8
9 class Megamenu_Api extends Core\Handler_Api {
10
11 public function config() {
12 $this->prefix = 'megamenu';
13 }
14
15 private function current_user_can_save_menuitem_settings() {
16 return current_user_can( 'manage_options' ) && ( is_multisite() ? is_super_admin() : current_user_can( 'unfiltered_html' ) );
17 }
18
19 private function sanitize_icon_class( $icon_class ) {
20 $classes = preg_split( '/\s+/', sanitize_text_field( wp_unslash( $icon_class ) ) );
21 $classes = array_filter( array_map( 'sanitize_html_class', $classes ) );
22
23 return implode( ' ', $classes );
24 }
25
26 private function sanitize_color( $color ) {
27 $color = sanitize_text_field( wp_unslash( $color ) );
28
29 return sanitize_hex_color( $color ) ? $color : '';
30 }
31
32 private function sanitize_menuitem_settings( $settings ) {
33 $settings = is_array( $settings ) ? wp_unslash( $settings ) : array();
34
35 return array(
36 'menu_id' => isset( $settings['menu_id'] ) ? absint( $settings['menu_id'] ) : 0,
37 'menu_has_child' => isset( $settings['menu_has_child'] ) ? sanitize_text_field( $settings['menu_has_child'] ) : '',
38 'menu_enable' => empty( $settings['menu_enable'] ) ? 0 : 1,
39 'menu_icon' => isset( $settings['menu_icon'] ) ? $this->sanitize_icon_class( $settings['menu_icon'] ) : '',
40 'menu_icon_color' => isset( $settings['menu_icon_color'] ) ? $this->sanitize_color( $settings['menu_icon_color'] ) : '',
41 'menu_badge_text' => isset( $settings['menu_badge_text'] ) ? sanitize_text_field( $settings['menu_badge_text'] ) : '',
42 'menu_badge_color' => isset( $settings['menu_badge_color'] ) ? $this->sanitize_color( $settings['menu_badge_color'] ) : '',
43 'menu_badge_background' => isset( $settings['menu_badge_background'] ) ? $this->sanitize_color( $settings['menu_badge_background'] ) : '',
44 'mobile_submenu_content_type' => isset( $settings['mobile_submenu_content_type'] ) ? sanitize_key( $settings['mobile_submenu_content_type'] ) : 'builder_content',
45 'vertical_megamenu_position_type' => isset( $settings['vertical_megamenu_position_type'] ) ? sanitize_key( $settings['vertical_megamenu_position_type'] ) : 'relative_position',
46 'vertical_menu_width' => isset( $settings['vertical_menu_width'] ) ? sanitize_text_field( $settings['vertical_menu_width'] ) : '',
47 'megamenu_width_type' => isset( $settings['megamenu_width_type'] ) ? sanitize_key( $settings['megamenu_width_type'] ) : 'default_width',
48 'megamenu_ajax_load' => isset( $settings['megamenu_ajax_load'] ) && 'yes' === $settings['megamenu_ajax_load'] ? 'yes' : 'no',
49 );
50 }
51
52 public function get_save_menuitem_settings() {
53 if ( ! $this->current_user_can_save_menuitem_settings() ) {
54 return;
55 }
56 $settings = $this->sanitize_menuitem_settings( $this->request['settings'] );
57 $menu_item_id = $settings['menu_id'];
58 $menu_item_settings = wp_json_encode( $settings, JSON_UNESCAPED_UNICODE );
59 update_post_meta( $menu_item_id, Init::$menuitem_settings_key, $menu_item_settings );
60
61 return array(
62 'saved' => 1,
63 'message' => esc_html__( 'Saved', 'elementskit-lite' ),
64 );
65 }
66
67 public function get_get_menuitem_settings() {
68 if ( ! current_user_can( 'manage_options' ) ) {
69 return;
70 }
71 $menu_item_id = $this->request['menu_id'];
72
73 $data = get_post_meta( $menu_item_id, Init::$menuitem_settings_key, true );
74 return (array) json_decode( $data );
75 }
76
77 public function get_megamenu_content() {
78 $menu_item_id = intval($this->request['id']);
79
80 if ('publish' !== get_post_status ($menu_item_id) || post_password_required($menu_item_id)) {
81 return;
82 }
83
84 $output = \ElementsKit_Lite\Utils::render_elementor_content($menu_item_id);
85
86 return $output;
87 }
88 }
89 new Megamenu_Api();
90