| 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 |
|