PluginProbe
SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent / 2.3.1
SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent v2.3.1
3.5.4 3.5.3 3.5.2 3.5.1 3.4.9 3.5.0 3.4.8 3.4.7 trunk 2.3.1 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
supportcandy / includes / rest_api / class-wpsc-rest-api-v1.php

class-wpsc-rest-api-v1.php in SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent 2.3.1, at includes/rest_api/class-wpsc-rest-api-v1.php

225 lines 9.4 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; // Exit if accessed directly
4 }
5
6 if ( ! class_exists( 'WPSC_Rest_API_v1' ) ) :
7
8 final class WPSC_Rest_API_v1 {
9
10 /**
11 * Register hooks and filters
12 */
13 public static function init(){
14
15 add_action( 'rest_api_init', array( __CLASS__, 'api_register' ) );
16 add_filter( 'determine_current_user', array( __CLASS__, 'determine_current_user' ) );
17
18 }
19
20 /**
21 * APIs registration v1
22 */
23 public static function api_register() {
24
25 register_rest_route( 'supportcandy/v1', '/login', array(
26 'callback' => array( 'WPSC_Rest_v1_Helper', 'user_login' ),
27 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_secret_key' ),
28 'methods' => 'POST'
29 ));
30
31 register_rest_route( 'supportcandy/v1', '/guestTicketFormFields', array(
32 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_ticket_form_fields' ),
33 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_guest_user' ),
34 'methods' => 'POST'
35 ));
36
37 register_rest_route( 'supportcandy/v1', '/ticketFormFields', array(
38 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_ticket_form_fields' ),
39 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_registered_user' ),
40 'methods' => 'POST'
41 ));
42
43 register_rest_route( 'supportcandy/v1', '/agentonlyFields', array(
44 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_agentonly_fields' ),
45 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_agent' ),
46 'methods' => 'POST'
47 ));
48
49 register_rest_route( 'supportcandy/v1', '/statuses', array(
50 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_status_list' ),
51 'methods' => 'GET'
52 ));
53
54 register_rest_route( 'supportcandy/v1', '/statuses/(?P<id>\d+)', array(
55 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_status' ),
56 'methods' => 'GET'
57 ));
58
59 register_rest_route( 'supportcandy/v1', '/categories', array(
60 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_category_list' ),
61 'methods' => 'GET'
62 ));
63
64 register_rest_route( 'supportcandy/v1', '/categories/(?P<id>\d+)', array(
65 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_category' ),
66 'methods' => 'GET'
67 ));
68
69 register_rest_route( 'supportcandy/v1', '/priorities', array(
70 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_priority_list' ),
71 'methods' => 'GET'
72 ));
73
74 register_rest_route( 'supportcandy/v1', '/priorities/(?P<id>\d+)', array(
75 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_priority' ),
76 'methods' => 'GET'
77 ));
78
79 register_rest_route( 'supportcandy/v1', '/filters', array(
80 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_filters' ),
81 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_registered_user' ),
82 'methods' => 'POST'
83 ));
84
85 register_rest_route( 'supportcandy/v1', '/tickets', array(
86 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_tickets' ),
87 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_registered_user' ),
88 'methods' => 'POST'
89 ));
90
91 register_rest_route( 'supportcandy/v1', '/tickets/(?P<id>\d+)', array(
92 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_individual_ticket' ),
93 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_ticket_read_permission' ),
94 'methods' => 'POST'
95 ));
96
97 register_rest_route( 'supportcandy/v1', '/tickets/(?P<id>\d+)/threads', array(
98 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_ticket_threads' ),
99 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_ticket_read_permission' ),
100 'methods' => 'POST'
101 ));
102
103 register_rest_route( 'supportcandy/v1', 'threads/historyId', array(
104 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_thread_history_id' ),
105 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_registered_user' ),
106 'methods' => 'POST'
107 ));
108
109 register_rest_route( 'supportcandy/v1', 'threads/history', array(
110 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_thread_history' ),
111 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_registered_user' ),
112 'methods' => 'POST'
113 ));
114
115 register_rest_route( 'supportcandy/v1', 'tickets/addRegisteredUserTicket', array(
116 'callback' => array( 'WPSC_Rest_v1_Helper', 'create_new_ticket' ),
117 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_registered_user' ),
118 'methods' => 'POST'
119 ));
120
121 register_rest_route( 'supportcandy/v1', 'tickets/addGuestTicket', array(
122 'callback' => array( 'WPSC_Rest_v1_Helper', 'create_new_ticket' ),
123 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_guest_user' ),
124 'methods' => 'POST'
125 ));
126
127 register_rest_route( 'supportcandy/v1', 'tickets/(?P<id>\d+)/addReply', array(
128 'callback' => array( 'WPSC_Rest_v1_Helper', 'submit_reply' ),
129 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_ticket_reply_permission' ),
130 'methods' => 'POST'
131 ));
132
133 register_rest_route( 'supportcandy/v1', 'tickets/(?P<id>\d+)/addNote', array(
134 'callback' => array( 'WPSC_Rest_v1_Helper', 'submit_note' ),
135 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_ticket_note_permission' ),
136 'methods' => 'POST'
137 ));
138
139 register_rest_route( 'supportcandy/v1', 'tickets/(?P<id>\d+)/updateFields', array(
140 'callback' => array( 'WPSC_Rest_v1_Helper', 'update_ticket_fields' ),
141 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_agent' ),
142 'methods' => 'POST'
143 ));
144
145 register_rest_route( 'supportcandy/v1', 'tickets/attachRegisteredUserFile', array(
146 'callback' => array( 'WPSC_Rest_v1_Helper', 'file_attachment' ),
147 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_registered_user_attachment' ),
148 'methods' => 'POST'
149 ));
150
151 register_rest_route( 'supportcandy/v1', 'tickets/attachGuestFile', array(
152 'callback' => array( 'WPSC_Rest_v1_Helper', 'file_attachment' ),
153 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_guest_attachment' ),
154 'methods' => 'POST'
155 ));
156
157 register_rest_route( 'supportcandy/v1', 'tickets/autocompleteSuggestions', array(
158 'callback' => array( 'WPSC_Rest_v1_Helper', 'autocomplete_suggestions' ),
159 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_agent' ),
160 'methods' => 'POST'
161 ));
162
163 register_rest_route( 'supportcandy/v1', '/agents', array(
164 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_agents' ),
165 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_agent' ),
166 'methods' => 'POST'
167 ));
168
169 register_rest_route( 'supportcandy/v1', '/agents/(?P<id>\d+)', array(
170 'callback' => array( 'WPSC_Rest_v1_Helper', 'get_agent' ),
171 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_agent' ),
172 'methods' => 'POST'
173 ));
174
175 register_rest_route( 'supportcandy/v1', '/deleteTickets/(?P<id>\d+)', array(
176 'callback' => array( 'WPSC_Rest_v1_Helper', 'delete_ticket_by_id' ),
177 'permission_callback' => array( 'WPSC_Rest_v1_Helper', 'validate_agent' ),
178 'methods' => 'POST'
179 ));
180
181 }
182
183 /**
184 * Set current user for API
185 */
186 public static function determine_current_user( $user_id = 0 ) {
187
188 if( $user_id ){
189 return $user_id;
190 }
191
192 $user_id = SELF::validate_auth_token();
193
194 if( $user_id ){
195 wp_set_current_user($user_id);
196 return $user_id;
197 }
198
199 return 0;
200
201 }
202
203 /**
204 * Validate auth token for api
205 */
206 public static function validate_auth_token(){
207
208 $auth_user = isset($_REQUEST) && isset($_REQUEST['auth_user']) ? intval($_REQUEST['auth_user']) : 0;
209 $auth_token = isset($_REQUEST) && isset($_REQUEST['auth_token']) ? sanitize_text_field($_REQUEST['auth_token']) : '';
210 $secret_key = get_option('wpsc_rest_api_secret_key');
211
212 if( $auth_token == md5( $secret_key . $auth_user . $secret_key ) ) {
213 return $auth_user;
214 }
215
216 return 0;
217
218 }
219
220 }
221
222 endif;
223
224 WPSC_Rest_API_v1::init();
225