PluginProbe ʕ •ᴥ•ʔ
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution / 4.5.1
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution v4.5.1
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 3 years ago api.php 3 years ago base.php 2 years ago plugin-status.php 3 years ago
api.php
184 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 ];
80
81 $plugin_status = Plugin_Status::instance();
82 $plugins_data = [];
83
84 foreach($plugins as $slug => $file) {
85 $plugins_data[$slug] = $plugin_status->get_status($slug.'/'.$file);
86 }
87 return $plugins_data;
88 }
89
90 public function post_save_onboard() {
91 $data = $this->request->get_params();
92 $onboard = new Onboard();
93 return $onboard->submit($data);
94 }
95
96 public function get_categories() {
97
98 $data = $this->request->get_params();
99
100 $query_args = [
101 'taxonomy' => ['product_cat'], // taxonomy name
102 'orderby' => 'name',
103 'order' => 'DESC',
104 'hide_empty' => false,
105 'number' => 10
106 ];
107
108 if(isset($data['only_parent'])){
109 $query_args['parent'] = 0;
110 }
111
112 if(isset($data['ids'])){
113 $ids = explode(',', $data['ids']);
114 $query_args['include'] = $ids;
115 }
116 if(isset($data['s'])){
117 $query_args['name__like'] = $data['s'];
118 }
119
120 $product_cat = get_terms($query_args);
121 $product_categories = [];
122 foreach($product_cat as $category) {
123 $product_categories[$category->term_id] = $category->name;
124 }
125 return [
126 'status' => 'success',
127 'result' => $product_categories,
128 'message' => esc_html__('categories fetched', 'shopengine')
129 ];
130 }
131
132 public function get_posts() {
133
134 $data = $this->request->get_params();
135
136 if(empty($data['post_type'])) {
137 return [
138 'status' => 'failed'
139 ];
140 }
141
142 $search = isset($data['s']) ? $data['s'] : false;
143 $post_status = !empty($data['post_status']) ? $data['post_status'] : '';
144
145 global $wpdb;
146
147 $params = [
148 sanitize_text_field($data['post_type'])
149 ];
150
151 $post_status_array = ['publish'];
152 if($post_status === 'draft'){
153 $post_status_array[] = 'draft';
154 }
155
156 $escaped = array();
157 foreach($post_status_array as $status_item){
158 $escaped[] = $wpdb->prepare('%s', sanitize_text_field($status_item));
159 }
160 $post_status = implode(',', $escaped);
161
162 $post_search_statement = '';
163 if(!empty($search)){
164 $post_search_statement = 'AND post_title LIKE %s';
165 array_push($params, '%'. $wpdb->esc_like( $search ) .'%');
166 }
167
168 //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Already applied prepare method in top
169 $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) );
170
171 $post_items = [];
172 foreach($posts as $post) {
173 array_push($post_items, ['id' => $post->ID, 'text' => $post->post_title]);
174 }
175
176 return [
177 'status' => 'success',
178 'results' => $post_items,
179 ];
180 }
181 }
182
183
184