PluginProbe
SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent / 3.4.8
SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent v3.4.8
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 / class-wpsc-logger.php

class-wpsc-logger.php in SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent 3.4.8, at includes/class-wpsc-logger.php

378 lines 10.0 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_Logger' ) ) :
7
8 final class WPSC_Logger {
9
10 /**
11 * Initialize this class
12 *
13 * @return void
14 */
15 public static function init() {
16
17 // Ticket logs.
18 add_action( 'wpsc_change_ticket_status', array( __CLASS__, 'change_status' ), 10, 4 );
19 add_action( 'wpsc_change_ticket_category', array( __CLASS__, 'change_category' ), 10, 4 );
20 add_action( 'wpsc_change_ticket_priority', array( __CLASS__, 'change_priority' ), 10, 4 );
21 add_action( 'wpsc_change_raised_by', array( __CLASS__, 'change_raised_by' ), 10, 4 );
22 add_action( 'wpsc_change_assignee', array( __CLASS__, 'change_assignee' ), 10, 4 );
23 add_action( 'wpsc_change_ticket_fields', array( __CLASS__, 'change_custom_fields' ), 10, 3 );
24 add_action( 'wpsc_change_agentonly_fields', array( __CLASS__, 'change_custom_fields' ), 10, 3 );
25 add_action( 'wpsc_change_ticket_add_recipients', array( __CLASS__, 'change_add_recipients' ), 10, 4 );
26 add_action( 'wpsc_change_ticket_subject', array( __CLASS__, 'change_subject' ), 10, 4 );
27 add_action( 'wpsc_change_ticket_rating', array( __CLASS__, 'change_rating' ), 10, 4 );
28 add_action( 'wpsc_change_usergroup', array( __CLASS__, 'change_usergroup' ), 10, 4 );
29 }
30
31 /**
32 * Log for change ticket status
33 *
34 * @param WPSC_ticket $ticket - ticket object.
35 * @param string $prev - previous status.
36 * @param string $new - new status.
37 * @param int $customer_id - cust id.
38 * @return void
39 */
40 public static function change_status( $ticket, $prev, $new, $customer_id ) {
41
42 $current_date = self::get_log_datetime();
43 $thread = WPSC_Thread::insert(
44 array(
45 'ticket' => $ticket->id,
46 'customer' => $customer_id,
47 'type' => 'log',
48 'body' => wp_json_encode(
49 array(
50 'slug' => 'status',
51 'prev' => $prev,
52 'new' => $new,
53 )
54 ),
55 'date_created' => $current_date,
56 'date_updated' => $current_date,
57 )
58 );
59 }
60
61 /**
62 * Log for change ticket category
63 *
64 * @param WPSC_ticket $ticket - ticket object.
65 * @param string $prev - previous status.
66 * @param string $new - new status.
67 * @param int $customer_id - cust id.
68 * @return void
69 */
70 public static function change_category( $ticket, $prev, $new, $customer_id ) {
71
72 $current_date = self::get_log_datetime();
73 $thread = WPSC_Thread::insert(
74 array(
75 'ticket' => $ticket->id,
76 'customer' => $customer_id,
77 'type' => 'log',
78 'body' => wp_json_encode(
79 array(
80 'slug' => 'category',
81 'prev' => $prev,
82 'new' => $new,
83 )
84 ),
85 'date_created' => $current_date,
86 'date_updated' => $current_date,
87 )
88 );
89 }
90
91 /**
92 * Log for change ticket priority
93 *
94 * @param WPSC_ticket $ticket - ticket object.
95 * @param string $prev - previous status.
96 * @param string $new - new status.
97 * @param int $customer_id - cust id.
98 * @return void
99 */
100 public static function change_priority( $ticket, $prev, $new, $customer_id ) {
101
102 $current_date = self::get_log_datetime();
103 $thread = WPSC_Thread::insert(
104 array(
105 'ticket' => $ticket->id,
106 'customer' => $customer_id,
107 'type' => 'log',
108 'body' => wp_json_encode(
109 array(
110 'slug' => 'priority',
111 'prev' => $prev,
112 'new' => $new,
113 )
114 ),
115 'date_created' => $current_date,
116 'date_updated' => $current_date,
117 )
118 );
119 }
120
121 /**
122 * Change raised by
123 *
124 * @param WPSC_ticket $ticket - ticket object.
125 * @param string $prev - previous status.
126 * @param string $new - new status.
127 * @param int $customer_id - cust id.
128 * @return void
129 */
130 public static function change_raised_by( $ticket, $prev, $new, $customer_id ) {
131
132 $current_date = self::get_log_datetime();
133 $thread = WPSC_Thread::insert(
134 array(
135 'ticket' => $ticket->id,
136 'customer' => $customer_id,
137 'type' => 'log',
138 'body' => wp_json_encode(
139 array(
140 'slug' => 'customer',
141 'prev' => $prev->id,
142 'new' => $new->id,
143 )
144 ),
145 'date_created' => $current_date,
146 'date_updated' => $current_date,
147 )
148 );
149 }
150
151 /**
152 * Change assignee
153 *
154 * @param WPSC_ticket $ticket - ticket object.
155 * @param string $prev - previous status.
156 * @param string $new - new status.
157 * @param int $customer_id - cust id.
158 * @return void
159 */
160 public static function change_assignee( $ticket, $prev, $new, $customer_id ) {
161
162 $current_date = self::get_log_datetime();
163
164 $prev_ids = array();
165 foreach ( $prev as $agent ) {
166 $prev_ids[] = $agent->id;
167 }
168
169 $new_ids = array();
170 foreach ( $new as $agent ) {
171 $new_ids[] = $agent->id;
172 }
173
174 $thread = WPSC_Thread::insert(
175 array(
176 'ticket' => $ticket->id,
177 'customer' => $customer_id,
178 'type' => 'log',
179 'body' => wp_json_encode(
180 array(
181 'slug' => 'assigned_agent',
182 'prev' => $prev_ids,
183 'new' => $new_ids,
184 )
185 ),
186 'date_created' => $current_date,
187 'date_updated' => $current_date,
188 )
189 );
190 }
191
192 /**
193 * Change custom fields (ticket/agentonly)
194 *
195 * @param WPSC_Ticket $prev - ticket object before changes.
196 * @param WPSC_Ticket $new - ticket object after changes.
197 * @param int $customer_id - customer id.
198 * @return void
199 */
200 public static function change_custom_fields( $prev, $new, $customer_id = null ) {
201
202 if ( $prev == $new ) {
203 return;
204 }
205
206 $current_date = self::get_log_datetime();
207
208 if ( $customer_id === null ) {
209 $customer_id = WPSC_Current_User::$current_user->customer->id;
210 }
211
212 foreach ( WPSC_Custom_Field::$custom_fields as $cf ) {
213
214 if (
215 ! class_exists( $cf->type ) ||
216 $cf->type::$is_default ||
217 ! in_array( $cf->field, array( 'ticket', 'agentonly' ) ) ||
218 ( $cf->field == 'ticket' && in_array( $cf->type::$slug, WPSC_ITW_Ticket_Fields::$ignore_cft ) ) ||
219 ( $cf->field == 'agentonly' && in_array( $cf->type::$slug, WPSC_ITW_Agentonly_Fields::$ignore_cft ) )
220 ) {
221 continue;
222 }
223
224 $cf->type::insert_ticket_log( $cf, $prev, $new, $current_date, $customer_id );
225 }
226 }
227
228 /**
229 * Change additional recepients of a ticket
230 *
231 * @param WPSC_ticket $ticket - ticket object.
232 * @param string $prev - previous status.
233 * @param string $new - new status.
234 * @param int $customer_id - cust id.
235 * @return void
236 */
237 public static function change_add_recipients( $ticket, $prev, $new, $customer_id ) {
238
239 $current_date = self::get_log_datetime();
240 $prev = $prev ? implode( '|', $prev ) : '';
241 $new = $new ? implode( '|', $new ) : '';
242
243 $thread = WPSC_Thread::insert(
244 array(
245 'ticket' => $ticket->id,
246 'customer' => $customer_id,
247 'type' => 'log',
248 'body' => wp_json_encode(
249 array(
250 'slug' => 'add_recipients',
251 'prev' => $prev,
252 'new' => $new,
253 )
254 ),
255 'date_created' => $current_date,
256 'date_updated' => $current_date,
257 )
258 );
259 }
260
261 /**
262 * Change ticket subject
263 *
264 * @param WPSC_ticket $ticket - ticket object.
265 * @param string $prev - previous status.
266 * @param string $new - new status.
267 * @param int $customer_id - cust id.
268 * @return void
269 */
270 public static function change_subject( $ticket, $prev, $new, $customer_id ) {
271
272 $current_date = self::get_log_datetime();
273 $prev_val = htmlspecialchars( $prev, ENT_QUOTES );
274 $new_val = htmlspecialchars( $new, ENT_QUOTES );
275
276 $thread = WPSC_Thread::insert(
277 array(
278 'ticket' => $ticket->id,
279 'customer' => $customer_id,
280 'type' => 'log',
281 'body' => wp_json_encode(
282 array(
283 'slug' => 'subject',
284 'prev' => $prev_val,
285 'new' => $new_val,
286 )
287 ),
288 'date_created' => $current_date,
289 'date_updated' => $current_date,
290 )
291 );
292 }
293
294 /**
295 * Change ticket rating
296 *
297 * @param WPSC_ticket $ticket - ticket object.
298 * @param string $prev - previous rating.
299 * @param string $new - new rating.
300 * @param int $customer_id - cust id.
301 * @return void
302 */
303 public static function change_rating( $ticket, $prev, $new, $customer_id ) {
304
305 $current_date = self::get_log_datetime();
306
307 $thread = WPSC_Thread::insert(
308 array(
309 'ticket' => $ticket->id,
310 'customer' => $customer_id,
311 'type' => 'log',
312 'body' => wp_json_encode(
313 array(
314 'slug' => 'rating',
315 'prev' => $prev,
316 'new' => $new,
317 )
318 ),
319 'date_created' => $current_date,
320 'date_updated' => $current_date,
321 )
322 );
323 }
324
325 /**
326 * Return log datetime
327 *
328 * @return datetime
329 */
330 private static function get_log_datetime() {
331
332 return ( new DateTime() )->add( new DateInterval( 'PT1S' ) )->format( 'Y-m-d H:i:s' );
333 }
334
335 /**
336 * Change ticket usergroup
337 *
338 * @param WPSC_ticket $ticket - ticket object.
339 * @param string $prev - previous usergroup.
340 * @param string $new - new usergroup.
341 * @param int $customer_id - cust id.
342 * @return void
343 */
344 public static function change_usergroup( $ticket, $prev, $new, $customer_id ) {
345 $current_date = self::get_log_datetime();
346
347 $prev_ids = array();
348 foreach ( $prev as $usergroup ) {
349 $prev_ids[] = $usergroup->id;
350 }
351
352 $new_ids = array();
353 foreach ( $new as $usergroup ) {
354 $new_ids[] = $usergroup->id;
355 }
356
357 $thread = WPSC_Thread::insert(
358 array(
359 'ticket' => $ticket->id,
360 'customer' => $customer_id,
361 'type' => 'log',
362 'body' => wp_json_encode(
363 array(
364 'slug' => 'usergroups',
365 'prev' => $prev_ids,
366 'new' => $new_ids,
367 )
368 ),
369 'date_created' => $current_date,
370 'date_updated' => $current_date,
371 )
372 );
373 }
374 }
375 endif;
376
377 WPSC_Logger::init();
378