PluginProbe ʕ •ᴥ•ʔ
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution / 4.8.2
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution v4.8.2
4.9.1 4.9.0 2.0.0 2.1.0 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.0 2.5.1 3.0.0 3.1.0 3.1.1 4.0.0 4.0.1 4.1.0 4.1.1 4.2.0 4.2.1 4.3.0 4.3.1 4.4.0 4.5.0 4.5.1 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.6.8 4.6.9 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 4.8.7 4.8.8 4.8.9 trunk 0.1.2-beta 0.1.3-beta 0.1.4-beta 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.2.1 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.5.0 1.5.1 1.6.0 1.6.1 1.7.0 1.8.0 1.8.1 1.9.0
shopengine / core / settings / api.php
shopengine / core / settings Last commit date
screens 4 years ago action.php 2 years ago api.php 11 months ago base.php 2 years ago plugin-status.php 3 years ago
api.php
246 lines
1 <?php
2 namespace ShopEngine\Core\Settings;
3
4 use ShopEngine\Core\Onboard\Onboard;
5 use ShopEngine\Core\Register\Model;
6
7 defined('ABSPATH') || exit;
8
9 /**
10 * Class Api
11 *
12 * @package ShopEngine\Core\Builders
13 */
14 class Api extends \ShopEngine\Base\Api {
15
16 public function config() {
17
18 $this->prefix = 'settings';
19 $this->param = "";
20 $this->only_admin = true;
21 }
22
23
24 public function post_save() {
25
26 if( !wp_verify_nonce( $this->request->get_header('x_wp_nonce'), 'wp_rest') && !current_user_can( 'manage_options' ) ) {
27 return false;
28 }
29
30 $data = json_decode($this->request->get_body(), true);
31
32 if(!empty($data['widgets'])) {
33
34 Model::source('settings')->set_option('widgets', $data['widgets']);
35 }
36
37 if(!empty($data['modules'])) {
38
39 Model::source('settings')->set_option('modules', $data['modules']);
40 }
41
42 if(!empty($data['userdata'])) {
43
44 Model::source('settings')->set_option('userdata', $data['userdata']);
45 }
46
47 do_action('shopengine/core/settings/on_save', $data);
48
49 return [
50 'status' => 'success',
51 'message' => esc_html__('settings saved successfully.', 'shopengine'),
52 ];
53 }
54
55
56 public function get_fields() {
57 $fields = array_merge(
58 Action::instance()->get_fields(),
59 ['sample_designs' => \ShopEngine\Core\Sample_Designs\Base::instance()->get_designs()]
60 );
61
62 return apply_filters('shopengine/core/settings/return_fields', $fields);
63 }
64
65 public function get_data() {
66 $data = Action::instance()->get_data();
67
68 return apply_filters('shopengine/core/settings/return_data', $data);
69 }
70
71 public function get_our_others_plugin_install_api() {
72 $plugins = [
73 'elementskit-lite' => 'elementskit-lite.php',
74 'metform' => 'metform.php',
75 'wp-social' => 'wp-social.php',
76 'wp-ultimate-review' => 'wp-ultimate-review.php',
77 'wp-fundraising-donation' => 'wp-fundraising-donation.php',
78 'getgenie' => 'getgenie.php',
79 'emailkit' => 'EmailKit.php',
80 'gutenkit-blocks-addon' => 'gutenkit-blocks-addon.php',
81 'popup-builder-block' => 'popup-builder-block.php',
82 ];
83
84 $plugin_status = Plugin_Status::instance();
85 $plugins_data = [];
86
87 foreach($plugins as $slug => $file) {
88 $plugins_data[$slug] = $plugin_status->get_status($slug.'/'.$file);
89 }
90 return $plugins_data;
91 }
92
93 public function post_save_onboard() {
94 $data = $this->request->get_params();
95 $onboard = new Onboard();
96 return $onboard->submit($data);
97 }
98
99 public function get_categories() {
100
101 $data = $this->request->get_params();
102
103 $query_args = [
104 'taxonomy' => ['product_cat'], // taxonomy name
105 'orderby' => 'name',
106 'order' => 'DESC',
107 'hide_empty' => false,
108 'number' => 0 // no limits on number of terms
109 ];
110
111 if(isset($data['only_parent'])){
112 $query_args['parent'] = 0;
113 }
114
115 if(isset($data['ids'])){
116 $ids = explode(',', $data['ids']);
117 $query_args['include'] = $ids;
118 }
119 if(isset($data['s'])){
120 $query_args['name__like'] = $data['s'];
121 }
122
123 $product_cat = get_terms($query_args);
124 $product_categories = [];
125 foreach($product_cat as $category) {
126 $product_categories[$category->term_id] = $category->name;
127 }
128 return [
129 'status' => 'success',
130 'result' => $product_categories,
131 'message' => esc_html__('categories fetched', 'shopengine')
132 ];
133 }
134
135 public function get_posts() {
136
137 $data = $this->request->get_params();
138
139 if(empty($data['post_type'])) {
140 return [
141 'status' => 'failed'
142 ];
143 }
144
145 $search = isset($data['s']) ? $data['s'] : false;
146 $post_status = !empty($data['post_status']) ? $data['post_status'] : '';
147
148 global $wpdb;
149
150 $params = [
151 sanitize_text_field($data['post_type'])
152 ];
153
154 $post_status_array = ['publish'];
155 if($post_status === 'draft'){
156 $post_status_array[] = 'draft';
157 }
158
159 $escaped = array();
160 foreach($post_status_array as $status_item){
161 $escaped[] = $wpdb->prepare('%s', sanitize_text_field($status_item));
162 }
163 $post_status = implode(',', $escaped);
164
165 $post_search_statement = '';
166 if(!empty($search)){
167 $post_search_statement = 'AND post_title LIKE %s';
168 array_push($params, '%'. $wpdb->esc_like( $search ) .'%');
169 }
170
171 //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Already applied prepare method in top
172 $posts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_type=%s AND post_status IN ($post_status) $post_search_statement LIMIT 10", $params) );
173
174 $post_items = [];
175 foreach($posts as $post) {
176 array_push($post_items, ['id' => $post->ID, 'text' => $post->post_title]);
177 }
178
179 return [
180 'status' => 'success',
181 'results' => $post_items,
182 ];
183 }
184 public function post_onboard_plugins() {
185
186 // Get plugin_slug directly from request parameters
187 $plugin_slug = $this->request->get_param('plugin_slug');
188
189 if (empty($plugin_slug)) {
190 return [
191 'success' => false,
192 'message' => 'Plugin slug is required'
193 ];
194 }
195
196 if (!current_user_can('install_plugins')) {
197 return [
198 'success' => false,
199 'message' => 'Insufficient permissions to install plugins'
200 ];
201 }
202
203
204 $status = \ShopEngine\Utils\Onboard\Plugin_Installer::single_install_and_activate($plugin_slug);
205
206 if (is_wp_error($status)) {
207 return [
208 'success' => false,
209 wp_send_json_error( array( 'status' => false ) ),
210 ];
211 } else {
212 return [
213 'success' => true,
214 'data' => [
215 'message' => self::plugin_activate_message($plugin_slug)
216 ]
217 ];
218 }
219 }
220
221 public static function plugin_activate_message($plugin_slug) {
222 $plugins_message = [
223 'setup_configurations' => esc_html__('Setup Configurations', 'shopengine'),
224 'elementskit-lite/elementskit-lite.php' => esc_html__('Page Builder Elements Activated', 'shopengine'),
225 'getgenie/getgenie.php' => esc_html__('AI Content & SEO Tool Activated', 'shopengine'),
226 'shopengine/shopengine.php' => esc_html__('WooCommerce Builder Activated', 'shopengine'),
227 'metform/metform.php' => esc_html__('Form Builder Activated', 'shopengine'),
228 'emailkit/EmailKit.php' => esc_html__('Email Customizer Activated', 'shopengine'),
229 'wp-social/wp-social.php' => esc_html__('Social Integration Activated', 'shopengine'),
230 'wp-ultimate-review/wp-ultimate-review.php' => esc_html__('Review Management Activated', 'shopengine'),
231 'wp-fundraising-donation/wp-fundraising.php' => esc_html__('Fundraising & Donations', 'shopengine'),
232 'gutenkit-blocks-addon/gutenkit-blocks-addon.php' => esc_html__('Page Builder Blocks Activated', 'shopengine'),
233 'popup-builder-block/popup-builder-block.php' => esc_html__('Popup Builder Activated', 'shopengine'),
234 'table-builder-block/table-builder-block.php' => esc_html__('Table Builder Activated', 'shopengine'),
235 ];
236
237 if ( array_key_exists( $plugin_slug, $plugins_message ) ) {
238 return esc_html( $plugins_message[$plugin_slug] );
239 } else {
240 return esc_html__( 'Plugin Activated', 'shopengine' );
241 }
242 }
243 }
244
245
246