get_params(); // Get tiket id $ticket_id = isset( $params['id'] ) ? sanitize_text_field($params['id']) : 0; $data = isset( $params['fields_data']) ? sanitize_text_field($params['fields_data']) : ''; $response = array(); if (!$data) { $response = new WP_Error( 'invalid_api_parameters', 'Invalid api parameters provided.', array( 'status' => 403, ) ); return; } $fields_data = json_decode($data); $ticket_data = $wpscfunction->get_ticket($ticket_id); if (! $ticket_data) { $response = new WP_Error( 'unauthorized', 'Ticket not found.', array( 'status' => 403, ) ); return; } // Changed raised by if ( isset($fields_data->customer_name) || isset($fields_data->customer_email) ){ $old_customer_name = $ticket_data['customer_name']; $old_customer_email = $ticket_data['customer_email']; $customer_name = isset($fields_data->customer_name) && $fields_data->customer_name != $old_customer_name ? $fields_data->customer_name : $ticket_data['customer_name']; $customer_email = isset($fields_data->customer_email) && $fields_data->customer_email != $old_customer_email ? $fields_data->customer_email : $ticket_data['customer_email']; if ($wpscfunction->has_permission('change_raised_by',$ticket_id) && ($fields_data->customer_name != $old_customer_name || $fields_data->customer_email != $old_customer_email )){ $wpscfunction->change_raised_by($ticket_id, $customer_name, $customer_email); } } // Change ticket subject if ( $wpscfunction->has_permission('change_ticket_fields',$ticket_id) && isset($fields_data->ticket_subject)){ $vals = array('ticket_subject' => $fields_data->ticket_subject); $wpdb->update($wpdb->prefix.'wpsc_ticket', $vals, array('id'=>$ticket_id)); } // Change ticket status if( isset($fields_data->ticket_status) && $wpscfunction->has_permission('change_status',$ticket_id) && intval($fields_data->ticket_status) > 0 && $wpscfunction->is_status($fields_data->ticket_status) && $fields_data->ticket_status != $ticket_data['ticket_status'] ){ $wpscfunction->change_status( $ticket_id, $fields_data->ticket_status); } // Change ticket category if( isset($fields_data->ticket_category) && $wpscfunction->has_permission('change_status',$ticket_id) && intval($fields_data->ticket_category) > 0 && $wpscfunction->is_category($fields_data->ticket_category) && $fields_data->ticket_category != $ticket_data['ticket_category'] ){ $wpscfunction->change_category( $ticket_id, $fields_data->ticket_category); } // Change ticket priority if( isset($fields_data->ticket_priority) && $wpscfunction->has_permission('change_status',$ticket_id) && intval($fields_data->ticket_priority) > 0 && $wpscfunction->is_priority($fields_data->ticket_priority) && $fields_data->ticket_priority != $ticket_data['ticket_priority'] ){ $wpscfunction->change_priority( $ticket_id, $fields_data->ticket_priority); } // Assign agent to ticket $agents = isset($fields_data->assigned_agent) && is_array($fields_data->assigned_agent) ? $fields_data->assigned_agent : array() ; $old_assigned_agents = $wpscfunction->get_ticket_meta($ticket_id,'assigned_agent'); $assigned_agents = array(); foreach( $agents as $agent ){ $agent = intval($agent) ? intval($agent) : 0; if ($agent){ $assigned_agents[] = $agent; } } $assign_agent = array_unique($assigned_agents); if( $agents && $wpscfunction->has_permission('assign_agent',$ticket_id) && intval($fields_data->assigned_agent) > 0 && $wpscfunction->is_agent($assign_agent) &&($old_assigned_agents != $assign_agent)){ $wpscfunction->assign_agent( $ticket_id, $assign_agent); } $fields = get_terms([ 'taxonomy' => 'wpsc_ticket_custom_fields', 'hide_empty' => false, 'orderby' => 'meta_value_num', 'meta_key' => 'wpsc_tf_load_order', 'order' => 'ASC', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'agentonly', 'value' => array(0,1), 'compare' => 'IN' ), array( 'key' => 'wpsc_tf_type', 'value' => '0', 'compare' => '>' ), ), ]); foreach ($fields as $field ) { $wpsc_tf_type = get_term_meta( $field->term_id, 'wpsc_tf_type', true); $agentonly = get_term_meta( $field->term_id, 'agentonly', true); switch ( $wpsc_tf_type ) { case '1': case '2': case '4': case '7': case '8': case '18': $oldVal = $wpscfunction->get_ticket_meta( $ticket_id, $field->slug, true); $newVal = isset($fields_data->{$field->slug}) ? sanitize_text_field($fields_data->{$field->slug}) : ''; if ( isset($fields_data->{$field->slug}) && (($agentonly == 0 && $wpscfunction->has_permission('change_ticket_fields',$ticket_id)) || ($agentonly == 1 && $wpscfunction->has_permission('change_agentonly_fields',$ticket_id)) ) && $oldVal != $newVal ) { $wpscfunction->change_field( $ticket_id, $field->slug, $newVal ); } break; case '3': $oldVal = $wpscfunction->get_ticket_meta( $ticket_id, $field->slug ); $newVal = isset($fields_data->{$field->slug}) && $fields_data->{$field->slug} ? $wpscfunction->sanitize_array($fields_data->{$field->slug}) : array(); if ( isset($fields_data->{$field->slug}) && (($agentonly == 0 && $wpscfunction->has_permission('change_ticket_fields',$ticket_id)) || ($agentonly == 1 && $wpscfunction->has_permission('change_agentonly_fields',$ticket_id)) ) && $oldVal != $newVal ) { $wpscfunction->change_field( $ticket_id, $field->slug, $newVal ); } break; case '5': $oldVal = $wpscfunction->get_ticket_meta( $ticket_id, $field->slug, true); $newVal = isset($fields_data->{$field->slug}) ? sanitize_textarea_field($fields_data->{$field->slug}) : ''; if ( isset($fields_data->{$field->slug}) && (($agentonly == 0 && $wpscfunction->has_permission('change_ticket_fields',$ticket_id)) || ($agentonly == 1 && $wpscfunction->has_permission('change_agentonly_fields',$ticket_id)) ) && $oldVal != $newVal ) { $wpscfunction->change_field( $ticket_id, $field->slug, $newVal ); } break; case '6': $oldVal = $wpscfunction->datetimeToCalenderFormat($wpscfunction->get_ticket_meta( $ticket_id, $field->slug, true)); $newVal = isset($fields_data->{$field->slug}) ? sanitize_text_field($fields_data->{$field->slug}) : ''; $label = get_term_meta( $field->term_id, 'wpsc_tf_label',true); if ( isset($fields_data->{$field->slug}) && (($agentonly == 0 && $wpscfunction->has_permission('change_ticket_fields',$ticket_id)) || ($agentonly == 1 && $wpscfunction->has_permission('change_agentonly_fields',$ticket_id)) ) && $oldVal != $newVal ) { $fields_value_new = $wpscfunction->calenderDateFormatToDateTime($newVal); if ( $oldVal && !$newVal ) { $wpscfunction->delete_ticket_meta($ticket_id,$field->slug); $log_str = sprintf( __('%1$s removed %2$s','supportcandy'), ''.$current_user->display_name.'',''.$label.'' ); } else if( !$oldVal && $newVal ){ $wpscfunction->add_ticket_meta( $ticket_id, $field->slug, $fields_value_new ); $log_str = sprintf( __('%1$s changed %2$s to %3$s','supportcandy'), ''.$current_user->display_name.'',''.$label.'',''.$newVal.''); } else { $wpscfunction->update_ticket_meta($ticket_id,$field->slug,array('meta_value' => $fields_value_new)); $log_str = sprintf( __('%1$s changed %2$s from %3$s to %4$s','supportcandy'), ''.$current_user->display_name.'',''.$label.'',''.$oldVal.'',''.$newVal.''); } $args = array( 'ticket_id' => $ticket_id, 'reply_body' => $log_str, 'thread_type' => 'log' ); $args = apply_filters( 'wpsc_thread_args', $args ); $wpscfunction->submit_ticket_thread($args); } break; case '9': $oldVal = $wpscfunction->get_ticket_meta( $ticket_id, $field->slug, true); $newVal = isset($fields_data->{$field->slug}) ? intval($fields_data->{$field->slug}) : ''; if ( isset($fields_data->{$field->slug}) && (($agentonly == 0 && $wpscfunction->has_permission('change_ticket_fields',$ticket_id)) || ($agentonly == 1 && $wpscfunction->has_permission('change_agentonly_fields',$ticket_id)) ) && $oldVal != $newVal ) { $wpscfunction->change_field( $ticket_id, $field->slug, $newVal ); } break; case '10': $oldVal = $wpscfunction->get_ticket_meta( $ticket_id, $field->slug ); $newVal = isset($fields_data->{$field->slug}) && $fields_data->{$field->slug} ? $wpscfunction->sanitize_array($fields_data->{$field->slug}) : array(); if ( isset($fields_data->{$field->slug}) && (($agentonly == 0 && $wpscfunction->has_permission('change_ticket_fields',$ticket_id)) || ($agentonly == 1 && $wpscfunction->has_permission('change_agentonly_fields',$ticket_id)) ) && $oldVal != $newVal ) { foreach ($newVal as $key => $value) { $attachment_id = intval($value); update_term_meta ($attachment_id, 'active', '1'); } $wpscfunction->change_field( $ticket_id, $field->slug, $newVal ); } break; case '21': $time_format = get_term_meta($field->term_id,'wpsc_time_format',true); if($time_format == '12'){ $oldVal = trim($wpscfunction->get_ticket_meta($ticket_id, $field->slug, true)); if($oldVal){ $oldVal = date("h:i:s a", strtotime($wpscfunction->get_ticket_meta( $ticket_id, $field->slug, true))); } $newVal = isset($fields_data->{$field->slug}) ? trim(sanitize_text_field($fields_data->{$field->slug})) : ''; if ( isset($fields_data->{$field->slug}) && (($agentonly == 0 && $wpscfunction->has_permission('change_ticket_fields',$ticket_id)) || ($agentonly == 1 && $wpscfunction->has_permission('change_agentonly_fields',$ticket_id)) ) && $oldVal != $newVal) { $wpscfunction->change_field( $ticket_id, $field->slug,$newVal ); } }else{ $oldVal = trim($wpscfunction->get_ticket_meta( $ticket_id, $field->slug, true)); $newVal = isset($fields_data->{$field->slug}) ? trim(sanitize_text_field($fields_data->{$field->slug})) : ''; if ( isset($fields_data->{$field->slug}) && (($agentonly == 0 && $wpscfunction->has_permission('change_ticket_fields',$ticket_id)) || ($agentonly == 1 && $wpscfunction->has_permission('change_agentonly_fields',$ticket_id)) ) && $oldVal != $newVal) { $wpscfunction->change_field( $ticket_id, $field->slug,$newVal ); } } break; default: do_action( 'wpsc_set_change_ticket_field', $fields_data, $field, $ticket_id, $wpsc_tf_type ); } } $wpdb->update($wpdb->prefix.'wpsc_ticket',array('date_updated'=> date("Y-m-d H:i:s") ),array('id'=>$ticket_id)); $response = array( 'status' => 200, 'message' => "Field(s) updated successfully!" );