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 / v1 / get_tickets.php

get_tickets.php in SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent 2.3.1, at includes/rest_api/v1/get_tickets.php

128 lines 3.7 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 global $wpdb, $current_user, $wpscfunction;
7
8 $params = $request->get_params();
9 $current_page = isset($params['current_page']) ? intval($params['current_page']) : 0;
10 $no_of_tickets = isset($params['number_of_tickets']) ? intval($params['number_of_tickets']) : 20;
11 $orderby = isset($params['orderby']) ? sanitize_text_field($params['orderby']) : '';
12 $order = isset($params['order']) ? sanitize_text_field($params['order']) : '';
13 $filter_key = isset($params['filter_key']) ? sanitize_text_field($params['filter_key']) : '';
14 $search = isset($params['search']) ? sanitize_text_field($params['search']) : '';
15
16 $filter = $wpscfunction->get_default_filter();
17
18 if ( $filter_key && is_numeric($filter_key) ) {
19
20 $filter_key = $filter_key-1;
21 $blog_id = get_current_blog_id();
22 $saved_filters = get_user_meta($current_user->ID, $blog_id.'_wpsc_filter',true);
23 if(isset($saved_filters[$filter_key])){
24 $filter = $saved_filters[$filter_key];
25 }
26
27 } else if( $filter_key && !is_numeric($filter_key) ){
28
29 $filter['label'] = $filter_key;
30 $filter['query'] = $wpscfunction->get_default_filter_query($filter_key);
31
32 } else {
33
34 $filter['query'] = $wpscfunction->get_default_filter_query($filter['label']);
35
36 }
37
38 if($orderby) $filter['orderby'] = $orderby;
39 if($order) $filter['order'] = $order;
40 if($current_page) $filter['page'] = $current_page;
41 if($search) $filter['custom_filter']['s'] = $search;
42
43 // Initialize meta query
44 $meta_query = array(
45 'relation' => 'AND',
46 );
47
48 if ( !is_multisite() || !is_super_admin($current_user->ID) ) {
49 $meta_query[] = SELF::get_tl_meta_query_restrict_rules();
50 }
51
52 // Merge default filter label
53 if($filter['query']){
54 $meta_query = array_merge($meta_query, $filter['query']);
55 }
56
57 // Custom Filter
58 foreach ($filter['custom_filter'] as $slug => $filterVal) {
59
60 if ( $slug == 's' ) continue;
61 if ( isset($filterVal['from']) && $filterVal['from']=='' ) continue;
62
63 if ( isset($filterVal['from']) ) {
64
65 $meta_query[] = array(
66 'key' => $slug,
67 'value' => array(
68 get_date_from_gmt($wpscfunction->calenderDateFormatToDateTime($filterVal['from'])),
69 get_date_from_gmt($wpscfunction->calenderDateFormatToDateTime($filterVal['to'])),
70 ),
71 'compare' => 'BETWEEN',
72 'type' => 'DATE',
73 );
74
75 } else {
76
77 $meta_query[] = array(
78 'key' => $slug,
79 'value' => $filterVal,
80 'compare' => 'IN',
81 );
82
83 }
84
85 }
86
87 // Select offset for page number
88 $offset = ($filter['page']-1)*$no_of_tickets;
89
90 if($filter['orderby'] == 'ticket_id'){
91 $filter['orderby'] = 'id';
92 }
93
94 $active = 1;
95 if ($filter['label'] == 'deleted') {
96 $active = 0;
97 }
98
99 $meta_query[] = array(
100 'key' => 'active',
101 'value' => $active,
102 'compare' => '='
103 );
104
105 $select_str = 'SQL_CALC_FOUND_ROWS DISTINCT t.id';
106 $sql = $wpscfunction->get_sql_query( $select_str, $meta_query, $filter['custom_filter']['s'], $filter['orderby'], $filter['order'], $no_of_tickets, $filter['page'] );
107 $tickets = $wpdb->get_results($sql);
108 $total_items = intval($wpdb->get_var("SELECT FOUND_ROWS()"));
109 $total_pages = ceil($total_items/$no_of_tickets);
110 $is_next = $filter['page'] < $total_pages ? 1 : 0;
111
112 $response = array(
113 'total_items' => $total_items,
114 'total_pages' => $total_pages,
115 'current_page' => $filter['page'],
116 'current_page_items' => count($tickets),
117 'is_next_page' => $is_next,
118 'next_page' => $is_next ? $filter['page']+1 : 0,
119 );
120
121 $ticket_response = array();
122
123 foreach ($tickets as $ticket) {
124 $ticket_response[] = SELF::get_ticket_response($ticket->id);
125 }
126
127 $response['tickets'] = $ticket_response;
128