PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.1.1
ShopBuilder – WooCommerce Builder For Elementor v2.1.1
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
shopbuilder / app / Controllers / Admin / Ajax / AdminSettings.php

AdminSettings.php in ShopBuilder – WooCommerce Builder For Elementor 2.1.1, at app/Controllers/Admin/Ajax/AdminSettings.php

152 lines 4.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace RadiusTheme\SB\Controllers\Admin\Ajax;
4
5 use RadiusTheme\SB\Helpers\Fns;
6 use RadiusTheme\SB\Models\DataModel;
7 use RadiusTheme\SB\Models\Settings;
8 use RadiusTheme\SB\Traits\SingletonTrait;
9
10 // Do not allow directly accessing this file.
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit( 'This script cannot be accessed directly.' );
13 }
14
15 /**
16 * Settings Page.
17 */
18 class AdminSettings {
19 /**
20 * Singleton Trait.
21 */
22 use SingletonTrait;
23
24 /**
25 * Construct function
26 */
27 private function __construct() {
28 add_action( 'wp_ajax_rtsb_settings_fields', [ $this, 'get_settings_fields' ] );
29 add_action( 'wp_ajax_rtsb_settings_data', [ $this, 'get_settings_data' ] );
30 add_action( 'wp_ajax_rtsb_save_settings_data', [ $this, 'save_settings_data' ] );
31 add_action( 'wp_ajax_rtsb_toggle_modules_activation', [ $this, 'toggle_modules' ] );
32
33 add_action( 'wp_ajax_rtsb_get_multiselect_data', [ $this, 'get_multiselect_data' ] );
34
35 }
36
37 /**
38 * Get settings fields
39 *
40 * @return void
41 */
42 public function get_multiselect_data() {
43 $func_with_param = sanitize_text_field( $_REQUEST['func_with_param'] ?? '' );
44 $s = sanitize_text_field( $_REQUEST['s'] ?? '' );
45 $decodedString = stripslashes( $func_with_param );
46 $functionArray = json_decode( $decodedString, true );
47 $className = $functionArray[0];
48 $methodName = $functionArray[1];
49 $argument = $functionArray[2] ?? [];
50 $result = [];
51 $params = [];
52 if ( class_exists( $className ) && method_exists( $className, $methodName ) ) {
53 $params[] = $s; // Modify this array with your parameters
54 $params[] = $argument;
55 $result = call_user_func_array( [ $className, $methodName ], $params );
56 }
57 wp_send_json_success( $result );
58 }
59
60 /**
61 * Get settings fields
62 *
63 * @return void
64 */
65 public function get_settings_fields() {
66 $data = Settings::instance()->get_fields();
67 wp_send_json_success( $data );
68 }
69
70 /**
71 * Get settings Data
72 *
73 * @return void
74 */
75 public function get_settings_data() {
76 $data = Settings::instance()->get_data();
77 wp_send_json_success( $data );
78 }
79
80 /**
81 * Save settings data
82 *
83 * @return void
84 */
85 public function save_settings_data() {
86 $section_id = isset( $_POST['section_id'] ) ? sanitize_text_field( wp_unslash( $_POST['section_id'] ) ) : '';
87 $block_id = isset( $_POST['block_id'] ) ? sanitize_text_field( wp_unslash( $_POST['block_id'] ) ) : '';
88 $rawOptions = isset( $_POST['options'] ) ? $_POST['options'] : []; // Fns::set_options Sanitized all array values Before saving.
89 $status = Fns::set_options( $section_id, $block_id, $rawOptions );
90 if ( boolval( $status['status'] ) ) {
91 do_action( 'rtsb/after/saved/settings/success', $section_id, $block_id, $rawOptions );
92 wp_send_json_success( $status );
93 } else {
94 wp_send_json_error( $status );
95 }
96
97 }
98
99 /**
100 * Toggle modules
101 *
102 * @return void
103 */
104 public function toggle_modules() {
105 $section_id = isset( $_POST['section_id'] ) ? sanitize_text_field( wp_unslash( $_POST['section_id'] ) ) : '';
106 $module_ids = isset( $_POST['module_ids'] ) ? array_map( 'sanitize_text_field', $_POST['module_ids'] ) : [];
107 $type = isset( $_POST['type'] ) && $_POST['type'] === 'active' ? 'active' : false;
108
109 if ( ! $section_id || empty( $module_ids ) ) {
110 wp_send_json_error(
111 [
112 'message' => esc_html__( 'Section , block or options may be empty', 'shopbuilder' ),
113 ]
114 );
115 }
116 $sections = Settings::instance()->get_sections();
117 if ( empty( $sections[ $section_id ] ) ) {
118 wp_send_json_error(
119 [
120 'message' => esc_html__( 'No section found with given data', 'shopbuilder' ),
121 ]
122 );
123 }
124 $options = DataModel::source()->get_option( $section_id, [] );
125 foreach ( $module_ids as $module_id ) {
126 if ( isset( $sections[ $section_id ]['list'][ $module_id ] ) ) {
127 if ( isset( $sections[ $section_id ]['list'][ $module_id ]['package'] ) && 'pro-disabled' === $sections[ $section_id ]['list'][ $module_id ]['package'] ) {
128 continue;
129 }
130 if ( $type === 'active' ) {
131 $options[ $module_id ]['active'] = 'on';
132 $sections[ $section_id ]['list'][ $module_id ]['active'] = 'on';
133 } else {
134 $options[ $module_id ]['active'] = '';
135 $sections[ $section_id ]['list'][ $module_id ]['active'] = '';
136 }
137 }
138 }
139
140 DataModel::source()->set_option( $section_id, $options );
141
142 wp_send_json_success(
143 [
144 'message' => esc_html__( 'Successfully Saved', 'shopbuilder' ),
145 'sections' => $sections,
146 ]
147 );
148 }
149
150
151 }
152