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 / admin / db_upgrade / run_db_v2_upgrade.php

run_db_v2_upgrade.php in SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent 2.3.1, at includes/admin/db_upgrade/run_db_v2_upgrade.php

190 lines 6.3 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 $wpscfunction, $current_user, $wpdb;
7
8 /**
9 * Exit if logged in user do not have administrator capabilities
10 */
11
12 if (
13 check_ajax_referer('wpsc_run_db_v2_upgrade', '_ajax_nonce', false) != 1 ||
14 !$current_user->has_cap('manage_options')
15 ) wp_send_json_error('Unauthorised request!', 400);
16
17 $post_per_page = 20;
18 $page_no = isset($_POST['page_no']) ? intval($_POST['page_no']) : 1;
19 $offset = $post_per_page * ($page_no-1);
20
21 $args = array(
22 'post_type' => 'wpsc_ticket',
23 'post_status' => array('publish','trash'),
24 'posts_per_page' => $post_per_page,
25 'offset' => $offset,
26 'meta_key' => 'ticket_id',
27 'orderby' => 'meta_value_num',
28 'order' => 'ASC',
29 );
30 if(class_exists('CPTO')){
31 $args['ignore_custom_sort'] = true;
32 }
33
34 $tickets = new WP_Query( $args );
35 $tickets_list = $tickets->posts;
36
37
38 /**
39 * Bigin importing ticket table entries
40 */
41 foreach ($tickets_list as $ticket) :
42
43 $is_imported = get_post_meta($ticket->ID,'wpsc_v2_is_imported',true);
44
45 if(!$is_imported) :
46
47 $customer_email = get_post_meta($ticket->ID,'customer_email',true);
48 $user = get_user_by('email',$customer_email);
49 $user_type = $user ? 'user' : 'guest';
50 $active = $ticket->post_status == 'publish' ? 1 : 0;
51
52 $values = array(
53 'id' => get_post_meta($ticket->ID,'ticket_id',true),
54 'ticket_status' => get_post_meta($ticket->ID,'ticket_status',true),
55 'customer_name' => get_post_meta($ticket->ID,'customer_name',true),
56 'customer_email' => $customer_email,
57 'ticket_subject' => get_post_meta($ticket->ID,'ticket_subject',true),
58 'user_type' => $user_type,
59 'ticket_category' => get_post_meta($ticket->ID,'ticket_category',true),
60 'ticket_priority' => get_post_meta($ticket->ID,'ticket_priority',true),
61 'date_created' => get_post_meta($ticket->ID,'date_created',true),
62 'date_updated' => get_post_meta($ticket->ID,'date_updated',true),
63 'ip_address' => '',
64 'agent_created' => get_post_meta($ticket->ID,'agent_created',true),
65 'ticket_auth_code' => get_post_meta($ticket->ID,'ticket_auth_code',true),
66 'active' => $active,
67 );
68
69 $ticket_id = $wpscfunction->create_new_ticket($values);
70
71 $assigned_agents = get_post_meta($ticket->ID,'assigned_agent');
72 foreach($assigned_agents as $agent_id){
73 $wpscfunction->add_ticket_meta($ticket_id,'assigned_agent',$agent_id);
74 }
75
76 $sf_rating = get_post_meta($ticket->ID,'sf_rating',true);
77 if($sf_rating) {
78 $wpscfunction->add_ticket_meta($ticket_id,'sf_rating',$sf_rating);
79 }
80
81 $sla = get_post_meta($ticket->ID,'sla',true);
82 if($sla) {
83 $wpscfunction->add_ticket_meta($ticket_id,'sla',$sla);
84 }
85
86 $sla_term = get_post_meta($ticket->ID,'sla_term',true);
87 if ($sla_term) {
88 $wpscfunction->add_ticket_meta($ticket_id,'sla_term',$sla_term);
89 }
90
91 $frt = get_post_meta($ticket->ID,'first_response',true);
92 if($frt) {
93 $wpscfunction->add_ticket_meta($ticket_id,'first_response',$frt);
94 }
95
96 // Custom fields
97 $fields = get_terms([
98 'taxonomy' => 'wpsc_ticket_custom_fields',
99 'hide_empty' => false,
100 'orderby' => 'meta_value_num',
101 'meta_key' => 'wpsc_tf_load_order',
102 'order' => 'ASC',
103 'meta_query' => array(
104 'relation' => 'AND',
105 array(
106 'key' => 'agentonly',
107 'value' => array(0,1),
108 'compare' => 'IN'
109 ),
110 array(
111 'key' => 'wpsc_tf_type',
112 'value' => '0',
113 'compare' => '>'
114 ),
115 ),
116 ]);
117
118 if($fields){
119
120 foreach ($fields as $field) {
121 $tf_type = get_term_meta( $field->term_id, 'wpsc_tf_type', true);
122 switch ($tf_type) {
123 case '1':
124 case '2':
125 case '4':
126 case '5':
127 case '7':
128 case '8':
129 case '9':
130 case '11':
131 case '12':
132 case '13':
133 case '14':
134 $text = get_post_meta($ticket->ID,$field->slug,true);
135 if($text){
136 $wpscfunction->add_ticket_meta($ticket_id, $field->slug,$text);
137 }
138 break;
139 case '3':
140 case '10':
141 $arrVal = get_post_meta($ticket->ID,$field->slug);
142 if($arrVal){
143 foreach ($arrVal as $key => $value) {
144 $wpscfunction->add_ticket_meta($ticket_id, $field->slug,$value);
145 update_term_meta ($value, 'active', '1');
146 }
147 }
148 break;
149
150 case '6':
151 $date = get_post_meta($ticket->ID,$field->slug,true);
152 if($date) {
153 $date = $wpscfunction->calenderDateFormatToDateTime($date);
154 $wpscfunction->add_ticket_meta($ticket_id, $field->slug,$date);
155 }
156 break;
157
158 default :
159 do_action('wpsc_db_v2_upgade_custom_field',$ticket_id,$tf_type,$field,$ticket->ID);
160 break;
161 }
162 }
163
164 }
165
166 update_post_meta( $ticket->ID, 'wpsc_v2_is_imported', 1 );
167 do_action('wpsc_db_upgrade_data',$ticket_id,$ticket->ID);
168 endif;
169 endforeach;
170
171 $current_page = $page_no;
172 $total_items = $tickets->found_posts;
173 $total_pages = $total_items ? ceil($total_items/$post_per_page) : 1;
174 $completed = ceil(($current_page/$total_pages)*100);
175 $is_next = $current_page < $total_pages ? 1 : 0;
176
177 if(!$is_next){
178 $label_count_history = get_option( 'wpsc_label_count_history' );
179 update_option( 'wpsc_label_count_history', ++$label_count_history );
180 update_option( 'wpsc_db_version', '2.0' );
181 }
182
183 $response = array(
184 'completed' => $completed,
185 'is_next' => $is_next,
186 'page_no' => $current_page+1,
187 );
188
189 echo json_encode($response);
190