get_ticket($ticket_id);
$ln_flag = false;
$tdec_flag = false;
$lr_flag = false;
preg_match_all("/{[^}]*}/" ,$str,$matches);
$matches = array_unique($matches[0]);
foreach($matches as $match){
$field = get_term_by('slug',str_replace("{}"," ",$match),'wpsc_ticket_custom_fields');
if(!$field) continue;
$tf_type = get_term_meta( $field->term_id, 'wpsc_tf_type', true);
if($tf_type > '0') {
switch ($tf_type) {
case '1':
case '2':
case '4':
case '9':
$text = $wpscfunction->get_ticket_meta($ticket_id,$field->slug,true);
$str = str_replace('{'.$field->slug.'}', $text, $str);
break;
case '3':
$text = $wpscfunction->get_ticket_meta($ticket_id,$field->slug);
if($text){
$str = str_replace('{'.$field->slug.'}', implode(', ',$text), $str);
} else {
$str = str_replace('{'.$field->slug.'}', '', $str);
}
break;
case '5':
$text = $wpscfunction->get_ticket_meta($ticket_id,$field->slug,true);
$str = str_replace('{'.$field->slug.'}', nl2br($text), $str);
break;
case '6':
$date = $wpscfunction->get_ticket_meta($ticket_id,$field->slug,true);
$str = str_replace('{'.$field->slug.'}', $this->datetimeToCalenderFormat($date), $str);
break;
case '7':
$text = $wpscfunction->get_ticket_meta($ticket_id,$field->slug,true);
$text = $text ? ''.$text.'' : '';
$str = str_replace('{'.$field->slug.'}', $text, $str);
break;
case '8':
$text = $wpscfunction->get_ticket_meta($ticket_id,$field->slug,true);
$text = $text ? ''.$text.'' : '';
$str = str_replace('{'.$field->slug.'}', $text, $str);
break;
case '10':
$attachments = $wpscfunction->get_ticket_meta($ticket_id, $field->slug);
$auth_id = $wpscfunction->get_ticket_fields($ticket_id,'ticket_auth_code');
$attach_url = array();
if($attachments){
foreach( $attachments as $attachment ):
$attach = array();
$attach_meta = get_term_meta($attachment);
foreach ($attach_meta as $key => $value) {
$attach[$key] = $value[0];
}
$upload_dir = wp_upload_dir();
$wpsp_file = get_term_meta($attachment,'wpsp_file');
if ($wpsp_file) {
$file_url = $upload_dir['baseurl'] . '/wpsp/'. $attach['save_file_name'];
}else {
if( isset($attach['is_restructured']) && $attach['is_restructured']){
$updated_time = get_term_meta($attachment,'time_uploaded',true);
$time = strtotime($updated_time);
$month = date("m",$time);
$year = date("Y",$time);
$file_url = $upload_dir['baseurl'] . '/wpsc/'.$year.'/'.$month.'/'. $attach['save_file_name'];
}else{
$file_url = $upload_dir['baseurl'] . '/wpsc/'. $attach['save_file_name'];
}
}
$download_url = home_url('/').'?wpsc_attachment='.$attachment.'&tid='.$ticket_id.'&tac='.$auth_id;
$attach_url[] = ''.$attach['filename'].'';
endforeach;
$str = str_replace('{'.$field->slug.'}', implode('
',$attach_url), $str);
} else {
$str = str_replace('{'.$field->slug.'}', ' ', $str);
}
break;
case '18':
$date = $wpscfunction->get_ticket_meta( $ticket_id, $field->slug, true );
if($date){
$str = str_replace('{'.$field->slug.'}', $date, $str);
} else {
$str = str_replace('{'.$field->slug.'}', '', $str);
}
break;
case '21':
$time = $wpscfunction->get_ticket_meta($ticket_id, $field->slug, true);
$time_format = get_term_meta($field->term_id, 'wpsc_time_format',true);
if($time){
if($time_format == '12'){
$str = str_replace('{'.$field->slug.'}', date("h:i:s a", strtotime($time)), $str);
} else{
$str = str_replace('{'.$field->slug.'}', $time, $str);
}
}else{
$str = str_replace('{'.$field->slug.'}', '', $str);
}
break;
default :
$str = apply_filters('wpsc_replace_macro_custom',$str,$ticket_id,$tf_type,$field);
break;
}
} else{
switch($match){
// Ticket ID
case '{ticket_id}':
$str = str_replace('{ticket_id}', $ticket_id, $str);
break;
// Ticket Status
case '{ticket_status}':
$ticket_status = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['ticket_status'] ) ? $this->get_status_name($wpsc_ticket_data['ticket_status']) : '';
$str = str_replace('{ticket_status}', $ticket_status, $str);
break;
// Ticket Category
case '{ticket_category}' :
$ticket_category = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['ticket_category'] ) ? $this->get_category_name($wpsc_ticket_data['ticket_category']) : '';
$str = str_replace('{ticket_category}', $ticket_category, $str);
break;
// Ticket Priority
case '{ticket_priority}':
$ticket_priority = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['ticket_priority'] ) ? $this->get_priority_name($wpsc_ticket_data['ticket_priority']) : '';
$str = str_replace('{ticket_priority}',$ticket_priority, $str);
break;
// Customer Name
case '{customer_name}':
$customer_name = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['customer_name'] ) ? stripslashes($wpsc_ticket_data['customer_name']) : '';
$str = str_replace('{customer_name}',$customer_name, $str);
break;
// Customer Email
case '{customer_email}':
$customer_email = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['customer_email'] ) ? $wpsc_ticket_data['customer_email'] : '';
$str = str_replace('{customer_email}',$customer_email, $str);
break;
// Subject
case '{ticket_subject}':
$ticket_subject = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['ticket_subject'] ) ? $wpsc_ticket_data['ticket_subject'] : '';
$str = str_replace('{ticket_subject}', stripslashes($ticket_subject), $str);
break;
//User Type
case '{user_type}':
$user_type = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['user_type'] ) ? $wpsc_ticket_data['user_type'] : '';
$str = str_replace('{user_type}', $user_type, $str);
break;
// Ticket Description
case '{ticket_description}':
$ticket_description = $this->get_ticket_description($ticket_id);
if (strpos($str, 'ticket_description') !== false) {
$tdec_flag = true;
}
$str = str_replace('{ticket_description}', $ticket_description['description'], $str);
break;
// Last Reply
case '{last_reply}':
$last_reply = $this->get_last_reply($ticket_id);
if (strpos($str, 'last_reply') !== false) {
$lr_flag = true;
}
$str = str_replace('{last_reply}', $last_reply['description'],$str);
break;
// Last Reply User Name
case '{last_reply_user_name}':
$last_reply = $this->get_last_reply($ticket_id);
$str = str_replace('{last_reply_user_name}', $last_reply['user_name'], $str);
break;
// Last Reply User Email
case '{last_reply_user_email}':
$last_reply = $this->get_last_reply($ticket_id);
$str = str_replace('{last_reply_user_email}', $last_reply['user_email'], $str);
break;
// Last Note
case '{last_note}':
$last_note = $this->get_last_note($ticket_id);
if (strpos($str, 'last_note') !== false) {
$ln_flag = true;
}
$str = str_replace('{last_note}', $last_note['description'], $str);
break;
// Last Note User Name
case '{last_note_user_name}':
$last_note = $this->get_last_note($ticket_id);
$str = str_replace('{last_note_user_name}', $last_note['user_name'], $str);
break;
// Last Note User Email
case '{last_note_user_email}':
$last_note = $this->get_last_note($ticket_id);
$str = str_replace('{last_note_user_email}', $last_note['user_email'], $str);
break;
// Current User Name
case '{current_user_name}':
$str = str_replace('{current_user_name}', $current_user->display_name, $str);
break;
// Current User Email
case '{current_user_email}':
$str = str_replace('{current_user_email}', $current_user->user_email, $str);
break;
// Ticket History
case '{ticket_history}':
$ticket_history = $this->get_ticket_history($ticket_id);
$str = str_replace('{ticket_history}', $ticket_history, $str);
break;
// Assigned Agents
case '{assigned_agent}':
$assigned_agents = $this->get_assigned_agent_names($ticket_id);
$str = str_replace('{assigned_agent}', $assigned_agents, $str);
break;
// Previously Assigned agents
case '{previously_assigned_agent}':
$previously_assigned_agent = $this->get_previously_assigned_agents_names($ticket_id);
$str = str_replace('{previously_assigned_agent}', $previously_assigned_agent, $str);
break;
// Date created
case '{date_created}':
$date_created = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['date_created'] ) ? get_date_from_gmt( $wpsc_ticket_data['date_created'] ,$this->time_elapsed_timestamp($wpsc_ticket_data['date_created']) ) : '';
$str = str_replace('{date_created}',$date_created, $str);
break;
// Date updated
case '{date_updated}':
$date_updated = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['date_updated'] ) ? get_date_from_gmt($wpsc_ticket_data['date_updated']) : '';
$str = str_replace('{date_updated}', $date_updated , $str);
break;
// Agent created
case '{agent_created}':
$agent_created = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['agent_created'] ) ? $this->get_agent_name($wpsc_ticket_data['agent_created']) : '';
$str = str_replace('{agent_created}',$agent_created, $str);
break;
// All ticket history
case '{ticket_history_all}':
$ticket_history_all = $this->get_ticket_history_all($ticket_id);
$str = str_replace('{ticket_history_all}', $ticket_history_all,$str);
break;
// All ticket history with all notes
case '{ticket_history_all_with_notes}':
if ($current_user && $current_user->has_cap('wpsc_agent')) {
$ticket_history_all_with_notes = $this->get_ticket_history_all_with_notes($ticket_id);
$str = str_replace('{ticket_history_all_with_notes}', $ticket_history_all_with_notes, $str);
} else {
$str = str_replace('{ticket_history_all_with_notes}',' ',$str);
}
break;
// All ticket history of notes
case '{ticket_notes_history}':
if ($current_user && $current_user->has_cap('wpsc_agent')) {
$ticket_notes_history = $this->ticket_notes_history($ticket_id);
$str = str_replace('{ticket_notes_history}',$ticket_notes_history , $str);
} else {
$str = str_replace('{ticket_notes_history}',' ', $str);
}
break;
// Ticket URL
case '{ticket_url}':
$ticket_auth_code = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['ticket_auth_code'] ) ? $wpsc_ticket_data['ticket_auth_code'] : '';
$ticket_url = get_permalink(get_option('wpsc_support_page_id')).'?support_page=open_ticket&ticket_id='.$ticket_id.'&auth_code='.$ticket_auth_code;
$ticket_url = apply_filters('wpsc_ticket_url',$ticket_url,$ticket_id);
$ticket_url = ''.$ticket_url.'';
$str = str_replace('{ticket_url}', $ticket_url, $str);
break;
// All ticket history with logs
case '{ticket_history_all_with_logs}':
if ($current_user && $current_user->has_cap('wpsc_agent')) {
$ticket_history_all_with_logs = $this->get_ticket_history_all_with_logs($ticket_id);
$str = str_replace('{ticket_history_all_with_logs}', $ticket_history_all_with_logs, $str);
}else{
$str = str_replace('{ticket_history_all_with_logs}', ' ', $str);
}
break;
// All ticket history with notes and log
case '{ticket_history_all_with_notes_and_logs}':
if ( $current_user && $current_user->has_cap('wpsc_agent')) {
$ticket_history_all_with_notes_and_logs = $this->get_ticket_history_all_with_notes_and_logs($ticket_id);
$str = str_replace('{ticket_history_all_with_notes_and_logs}', $ticket_history_all_with_notes_and_logs, $str);
} else {
$str = str_replace('{ticket_history_all_with_notes_and_logs}',' ', $str);
}
break;
// Ticket notes history with logs
case '{ticket_notes_history_with_logs}':
if ($current_user && $current_user->has_cap('wpsc_agent')) {
$ticket_notes_history_with_logs = $this->get_ticket_notes_history_with_logs($ticket_id);
$str = str_replace('{ticket_notes_history_with_logs}', $ticket_notes_history_with_logs, $str);
}else {
$str = str_replace('{ticket_notes_history_with_logs}',' ', $str);
}
break;
//Date Closed
case '{date_closed}':
$date_closed = $wpscfunction->time_elapsed_timestamp($wpscfunction->get_ticket_meta($ticket_id, 'date_closed', true));
$str = str_replace('{date_closed}', $date_closed, $str);
break;
case '{customer_first_name}':
$customer_email = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['customer_email'] ) ? stripslashes($wpsc_ticket_data['customer_email']) : '';
$user = get_user_by( 'email', $customer_email );
if($user){
$first_name = get_user_meta( $user->ID,'first_name', true );
if($first_name){
$str = str_replace('{customer_first_name}',$first_name, $str);
}else{
$customer_name = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['customer_name'] ) ? stripslashes($wpsc_ticket_data['customer_name']) : '';
$str = str_replace('{customer_first_name}',$customer_name, $str);
}
}else{
$customer_name = (!empty($wpsc_ticket_data)) && isset( $wpsc_ticket_data['customer_name'] ) ? stripslashes($wpsc_ticket_data['customer_name']) : '';
$str = str_replace('{customer_first_name}',$customer_name, $str);
}
break;
case '{last_reply_user_first_name}':
$last_reply = $this->get_last_reply($ticket_id);
$user = get_user_by('email',$last_reply['user_email']);
if( $user ){
$first_name = get_user_meta( $user->ID,'first_name', true );
if($first_name){
$str = str_replace('{last_reply_user_first_name}',$first_name, $str);
}else{
$str = str_replace('{last_reply_user_first_name}',$last_reply['user_name'], $str);
}
}else{
$str = str_replace('{last_reply_user_first_name}', $last_reply['user_name'], $str);
}
break;
case '{current_user_first_name}':
$first_name = get_user_meta( $current_user->ID,'first_name', true );
if($first_name){
$str = str_replace('{current_user_first_name}',$first_name, $str);
}else{
$str = str_replace('{current_user_first_name}',$current_user->display_name, $str);
}
break;
case '{last_note_user_first_name}':
$last_note = $this->get_last_note($ticket_id);
$user = get_user_by('email',$last_note['user_email']);
if( $user ){
$first_name = get_user_meta( $user->ID,'first_name', true );
if($first_name){
$str = str_replace('{last_note_user_first_name}',$first_name, $str);
}else{
$str = str_replace('{last_note_user_first_name}',$last_note['user_name'], $str);
}
}else{
$str = str_replace('{last_note_user_first_name}', $last_note['user_name'], $str);
}
break;
default:
break;
}
}
}
if($tdec_flag){
if(isset($ticket_description['thread_id'])){
$report_thread_id = $ticket_description['thread_id'];
$report_attachments = get_post_meta($report_thread_id,'attachments',true);
$auth_id = $wpsc_ticket_data['ticket_auth_code'];
$ticket_id = get_post_meta($report_thread_id,'ticket_id',true);
$attach_url = array();
if($report_attachments){
$attach_url[] = __('Attachments','supportcandy');
foreach( $report_attachments as $attachment ):
$attach = array();
$attach_meta = get_term_meta($attachment);
foreach ($attach_meta as $key => $value) {
$attach[$key] = $value[0];
}
$upload_dir = wp_upload_dir();
$wpsp_file = get_term_meta($attachment,'wpsp_file');
if ($wpsp_file) {
$file_url = $upload_dir['baseurl'] . '/wpsp/'. $attach['save_file_name'];
}else {
if( isset($attach['is_restructured']) && $attach['is_restructured']){
$updated_time = get_term_meta($attachment,'time_uploaded',true);
$time = strtotime($updated_time);
$month = date("m",$time);
$year = date("Y",$time);
$file_url = $upload_dir['baseurl'] . '/wpsc/'.$year.'/'.$month.'/'. $attach['save_file_name'];
}else{
$file_url = $upload_dir['baseurl'] . '/wpsc/'. $attach['save_file_name'];
}
}
$download_url = home_url('/').'?wpsc_attachment='.$attachment.'&tid='.$ticket_id.'&tac='.$auth_id;
$attach_url[] = ''.$attach['filename'].'';
endforeach;
}
$str = $str.implode("
",$attach_url);
}
}
if($lr_flag){
$last_reply_thread_id = $last_reply['thread_id'];
$last_reply_attachments = get_post_meta($last_reply_thread_id,'attachments',true);
$auth_id = $wpsc_ticket_data['ticket_auth_code'];
$ticket_id = get_post_meta($last_reply_thread_id,'ticket_id',true);
$attach_url = array();
if($last_reply_attachments){
$attach_url[] = __('Attachments','supportcandy');
foreach( $last_reply_attachments as $attachment ):
$attach = array();
$attach_meta = get_term_meta($attachment);
foreach ($attach_meta as $key => $value) {
$attach[$key] = $value[0];
}
$upload_dir = wp_upload_dir();
if( isset($attach['is_restructured']) && $attach['is_restructured']){
$updated_time = get_term_meta($attachment,'time_uploaded',true);
$time = strtotime($updated_time);
$month = date("m",$time);
$year = date("Y",$time);
$file_url = $upload_dir['baseurl'] . '/wpsc/'.$year.'/'.$month.'/'.$attach['save_file_name'];
}else{
$file_url = $upload_dir['baseurl'] . '/wpsc/'.$attach['save_file_name'];
}
$download_url = home_url('/').'?wpsc_attachment='.$attachment.'&tid='.$ticket_id.'&tac='.$auth_id;
$attach_url[] = ''.$attach['filename'].'';
endforeach;
}
$str = $str.implode("
",$attach_url);
}
if($ln_flag){
$last_note_thread_id = $last_note['thread_id'];
$last_note_attachments = get_post_meta($last_note_thread_id,'attachments',true);
$auth_id = $wpsc_ticket_data['ticket_auth_code'];
$ticket_id = get_post_meta($last_note_thread_id,'ticket_id',true);
$attach_url = array();
if($last_note_attachments){
$attach_url[] = __('Attachments','supportcandy');
foreach( $last_note_attachments as $attachment ):
$attach = array();
$attach_meta = get_term_meta($attachment);
foreach ($attach_meta as $key => $value) {
$attach[$key] = $value[0];
}
$upload_dir = wp_upload_dir();
$wpsp_file = get_term_meta($attachment,'wpsp_file');
if ($wpsp_file) {
$file_url = $upload_dir['baseurl'] . '/wpsp/'. $attach['save_file_name'];
}else {
if( isset($attach['is_restructured']) && $attach['is_restructured']){
$updated_time = get_term_meta($attachment,'time_uploaded',true);
$time = strtotime($updated_time);
$month = date("m",$time);
$year = date("Y",$time);
$file_url = $upload_dir['baseurl'] . '/wpsc/'.$year.'/'.$month.'/'. $attach['save_file_name'];
}else{
$file_url = $upload_dir['baseurl'] . '/wpsc/'. $attach['save_file_name'];
}
}
$download_url = home_url('/').'?wpsc_attachment='.$attachment.'&tid='.$ticket_id.'&tac='.$auth_id;
$attach_url[] = ''.$attach['filename'].'';
endforeach;
}
$str = $str.implode("
",$attach_url);
}
$str = apply_filters('wpsc_replace_macro',$str,$ticket_id);