__CLASS__,
'save-key' => 'id',
);
return $classes;
}
/**
* Add custom field type to list
*
* @param array $cf_types - custom field types array.
* @return array
*/
public static function add_cf_type( $cf_types ) {
$cf_types[ self::$slug ] = array(
'label' => esc_attr__( 'Date', 'supportcandy' ),
'class' => __CLASS__,
);
return $cf_types;
}
/**
* Print operators for ticket form filter
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param array $filter - Existing filters (if any).
* @return void
*/
public static function get_operators( $cf, $filter = array() ) {
?>
$value ? true : false;
break;
case '>':
$response = $operand_1 < $value ? true : false;
break;
case '<=':
$response = $operand_1 >= $value ? true : false;
break;
case '>=':
$response = $operand_1 <= $value ? true : false;
break;
case 'BETWEEN':
$operand_2 = new DateTime( $condition['operand_val_2'] . ' 00:00:00' );
$response = $operand_1 <= $value && $operand_2 >= $value ? true : false;
break;
}
return $response;
}
/**
* Parse filter and return sql query to be merged in ticket model query builder
*
* @param WPSC_Custom_Field $cf - custom field of this type.
* @param mixed $compare - comparison operator.
* @param mixed $val - value to compare.
* @return string
*/
public static function parse_filter( $cf, $compare, $val ) {
$str = '';
switch ( $compare ) {
case '=':
$from = WPSC_Functions::get_utc_date_str( $val . ' 00:00:00' );
$to = WPSC_Functions::get_utc_date_str( $val . ' 23:59:59' );
$str = self::get_sql_slug( $cf ) . ' BETWEEN \'' . esc_sql( $from ) . '\' AND \'' . esc_sql( $to ) . '\'';
break;
case '<':
$from = WPSC_Functions::get_utc_date_str( $val . ' 00:00:00' );
$arr = array(
self::get_sql_slug( $cf ) . esc_sql( $compare ) . '\'' . esc_sql( $from ) . '\'',
self::get_sql_slug( $cf ) . ' != \'0000-00-00 00:00:00\'',
);
$str = '(' . implode( ' AND ', $arr ) . ')';
break;
case '>':
$to = WPSC_Functions::get_utc_date_str( $val . ' 23:59:59' );
$str = self::get_sql_slug( $cf ) . esc_sql( $compare ) . '\'' . esc_sql( $to ) . '\'';
break;
case '<=':
$from = WPSC_Functions::get_utc_date_str( $val . ' 00:00:00' );
$to = WPSC_Functions::get_utc_date_str( $val . ' 23:59:59' );
$arr = array(
self::get_sql_slug( $cf ) . esc_sql( $compare ) . '\'' . esc_sql( $from ) . '\'',
self::get_sql_slug( $cf ) . ' BETWEEN \'' . esc_sql( $from ) . '\' AND \'' . esc_sql( $to ) . '\'',
);
$str = '((' . implode( ' OR ', $arr ) . ') AND ' . self::get_sql_slug( $cf ) . ' != \'0000-00-00 00:00:00\')';
break;
case '>=':
$from = WPSC_Functions::get_utc_date_str( $val . ' 00:00:00' );
$to = WPSC_Functions::get_utc_date_str( $val . ' 23:59:59' );
$arr = array(
self::get_sql_slug( $cf ) . esc_sql( $compare ) . '\'' . esc_sql( $to ) . '\'',
self::get_sql_slug( $cf ) . ' BETWEEN \'' . esc_sql( $from ) . '\' AND \'' . esc_sql( $to ) . '\'',
);
$str = '(' . implode( ' OR ', $arr ) . ')';
break;
case 'BETWEEN':
$from = WPSC_Functions::get_utc_date_str( $val['operand_val_1'] . ' 00:00:00' );
$to = WPSC_Functions::get_utc_date_str( $val['operand_val_2'] . ' 23:59:59' );
$str = self::get_sql_slug( $cf ) . ' BETWEEN \'' . esc_sql( $from ) . '\' AND \'' . esc_sql( $to ) . '\'';
break;
default:
$str = '1=1';
}
return $str;
}
/**
* Return orderby string
*
* @param WPSC_Custom_Field $cf - custom field object.
* @return string
*/
public static function get_orderby_string( $cf ) {
return self::get_sql_slug( $cf );
}
/**
* Check ticket condition
*
* @param array $condition - array with condition data.
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Ticket $ticket - ticket object.
* @return boolean
*/
public static function is_valid_ticket_condition( $condition, $cf, $ticket ) {
$flag = true;
$date = $ticket->{$cf->slug};
if ( ! is_object( $date ) ) {
return false;
}
$date->setTimezone( wp_timezone() );
switch ( $condition['operator'] ) {
case '=':
$flag = $date->format( 'Y-m-d' ) == $condition['operand_val_1'] ? true : false;
break;
case '<':
$operand = new DateTime( $condition['operand_val_1'] );
$flag = $date < $operand ? true : false;
break;
case '>':
$operand = new DateTime( $condition['operand_val_1'] );
$flag = $date > $operand ? true : false;
break;
case '<=':
$operand = new DateTime( $condition['operand_val_1'] );
$flag = $date <= $operand ? true : false;
break;
case '>=':
$operand = new DateTime( $condition['operand_val_1'] );
$flag = $date >= $operand ? true : false;
break;
case 'BETWEEN':
$operand1 = new DateTime( $condition['operand_val_1'] );
$operand2 = new DateTime( $condition['operand_val_2'] );
$flag = $operand1 <= $date && $operand2 >= $date ? true : false;
break;
default:
$flag = true;
}
return $flag;
}
/**
* Check customer condition
*
* @param array $condition - array with condition data.
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Customer $customer - customer object.
* @return boolean
*/
public static function is_valid_customer_condition( $condition, $cf, $customer ) {
$flag = true;
$date = $customer->{$cf->slug};
if ( ! is_object( $date ) ) {
return false;
}
switch ( $condition['operator'] ) {
case '=':
$flag = $date->format( 'Y-m-d' ) == $condition['operand_val_1'] ? true : false;
break;
case '<':
$operand = new DateTime( $condition['operand_val_1'] );
$flag = $date < $operand ? true : false;
break;
case '>':
$operand = new DateTime( $condition['operand_val_1'] );
$flag = $date > $operand ? true : false;
break;
case '<=':
$operand = new DateTime( $condition['operand_val_1'] );
$flag = $date <= $operand ? true : false;
break;
case '>=':
$operand = new DateTime( $condition['operand_val_1'] );
$flag = $date >= $operand ? true : false;
break;
case 'BETWEEN':
$operand1 = new DateTime( $condition['operand_val_1'] );
$operand2 = new DateTime( $condition['operand_val_2'] );
$flag = $operand1 <= $date && $operand2 >= $date ? true : false;
break;
default:
$flag = true;
}
return $flag;
}
/**
* Print ticket form field
*
* @param WPSC_Custom_Field $cf - Custom field object.
* @param array $tff - Array of ticket form field settings for this field.
* @return string
*/
public static function print_tff( $cf, $tff ) {
$unique_id = uniqid( 'wpsc_' );
$val = '';
if ( $cf->field == 'ticket' ) {
$val = $cf->is_auto_fill && $cf->default_value ? $cf->default_value[0] : '';
$val = $val ? new DateTime( $val . ' 00:00:00' ) : '';
} else {
$current_user = WPSC_Current_User::$current_user;
$val = $current_user->is_customer && $current_user->customer->{$cf->slug} ? $current_user->customer->{$cf->slug} : '';
}
ob_start();
?>
case '':
var val = customField.find('input').first().val().trim();
if (customField.hasClass('required') && !val) {
isValid = false;
alert(supportcandy.translations.req_fields_missing);
}
break;
default_value ? $cf->default_value[0] . ' 00:00:00' : '';
}
/**
* Check and return custom field value for new ticket to be created.
* This function is used by filter for set create ticket form and called directly by my-profile for each applicable custom fields.
* Ignore phpcs nonce issue as we already checked where it is called from.
*
* @param array $data - Array of values to to stored in ticket in an insert function.
* @param array $custom_fields - Array containing all applicable custom fields indexed by unique custom field types.
* @param boolean $is_my_profile - Whether it or not it is created from my-profile. This function is used by create ticket as well as my-profile. Due to customer fields handling is done same way, this flag gives apportunity to identify where it being called.
* @return array
*/
public static function set_create_ticket_data( $data, $custom_fields, $is_my_profile ) {
if ( isset( $custom_fields[ self::$slug ] ) ) {
foreach ( $custom_fields[ self::$slug ] as $cf ) {
$value = self::get_tff_value( $cf->slug );
if ( $cf->field == 'ticket' ) {
$default_val = self::get_default_value( $cf );
$data[ $cf->slug ] = $value ? $value->format( 'Y-m-d H:i:s' ) : $default_val;
} elseif ( $cf->field == 'agentonly' ) {
$data[ $cf->slug ] = self::get_default_value( $cf );
} elseif ( $cf->field == 'customer' && $data['customer'] != 0 ) {
$tff = get_option( 'wpsc-tff' );
if ( ! $is_my_profile && ! isset( $tff[ $cf->slug ] ) ) {
continue;
}
$customer = new WPSC_Customer( $data['customer'] );
$prev_val = $customer->{$cf->slug} && is_object( $customer->{$cf->slug} ) ? $customer->{$cf->slug}->format( 'Y-m-d' ) : '';
$value = $value ? $value : '0000-00-00 00:00:00';
if ( $customer->{$cf->slug} != $value ) {
$customer->{$cf->slug} = $value;
$customer->save();
$new_val = $value && is_object( $value ) ? $value->format( 'Y-m-d H:i:s' ) : '';
// Set log for this change.
WPSC_Log::insert(
array(
'type' => 'customer',
'ref_id' => $customer->id,
'modified_by' => WPSC_Current_User::$current_user->customer->id,
'body' => wp_json_encode(
array(
'slug' => $cf->slug,
'prev' => $prev_val,
'new' => $new_val,
)
),
'date_created' => ( new DateTime() )->format( 'Y-m-d H:i:s' ),
)
);
}
}
}
}
return $data;
}
/**
* Set create ticket data for rest api request
*
* @param array $data - create ticket data array.
* @param WP_REST_Request $request - rest request object.
* @param array $custom_fields - custom field objects indexed by unique custom field types.
* @return array
*/
public static function set_rest_ticket_data( $data, $request, $custom_fields ) {
$current_user = WPSC_Current_User::$current_user;
$tff = get_option( 'wpsc-tff' );
if ( isset( $custom_fields[ self::$slug ] ) ) {
foreach ( $custom_fields[ self::$slug ] as $cf ) {
if (
! in_array( $cf->field, array( 'ticket', 'agentonly', 'customer' ) ) ||
( $cf->field == 'customer' && ! isset( $tff[ $cf->slug ] ) )
) {
continue;
}
$date = WPSC_Functions::sanitize_date( sanitize_text_field( $request->get_param( $cf->slug ) ) );
if ( in_array( $cf->field, array( 'ticket', 'agentonly' ) ) ) {
$data[ $cf->slug ] = $cf->field == 'ticket' && $date ? $date : self::get_default_value( $cf );
} else {
$customer = new WPSC_Customer( $data['customer'] );
$format = 'Y-m-d H:i:s';
$date = $date ? DateTime::createFromFormat( $format, $date ) : '';
$existing_val = $customer->{$cf->slug};
$existing_val = $existing_val && is_object( $existing_val ) ? $existing_val->format( $format ) : '';
if ( $date && $date->format( $format ) != $existing_val ) {
$customer->{$cf->slug} = $date;
$customer->save();
// Set log for this change.
WPSC_Log::insert(
array(
'type' => 'customer',
'ref_id' => $customer->id,
'modified_by' => $current_user->customer->id,
'body' => wp_json_encode(
array(
'slug' => $cf->slug,
'prev' => $existing_val,
'new' => $date->format( $format ),
)
),
'date_created' => ( new DateTime() )->format( 'Y-m-d H:i:s' ),
)
);
}
}
}
}
return $data;
}
/**
* Return slug string to be used in where condition of ticket model for this type of field
*
* @param WPSC_Custom_Field $cf - custom field object.
* @return string
*/
public static function get_sql_slug( $cf ) {
$join_char = in_array( $cf->field, array( 'ticket', 'agentonly' ) ) ? 't.' : 'c.';
return $join_char . $cf->slug;
}
/**
* Return val field for meta query of this type of custom field
*
* @param array $condition - condition data.
* @return mixed
*/
public static function get_meta_value( $condition ) {
$operator = $condition['operator'];
switch ( $operator ) {
case '=':
case '<':
case '<=':
case '>':
case '>=':
return $condition['operand_val_1'];
case 'BETWEEN':
if (
! ( isset( $condition['operand_val_1'] ) && preg_match( '/^(\d{4})-\d{2}-(\d{2})$/', $condition['operand_val_1'] ) ) ||
! ( isset( $condition['operand_val_2'] ) && preg_match( '/^(\d{4})-\d{2}-(\d{2})$/', $condition['operand_val_2'] ) )
) {
return false;
}
return array(
'operand_val_1' => $condition['operand_val_1'],
'operand_val_2' => $condition['operand_val_2'],
);
}
return false;
}
/**
* Print generic input field for this type.
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param DateTime $date - optional. Input field will be printed with given value (if given).
* @return void
*/
public static function print_cf_input( $cf, $date = '' ) {
if ( $date && ! is_object( $date ) && $date != '0000-00-00 00:00:00' ) {
$date = new DateTime( $date );
}
$unique_id = uniqid( 'wpsc_' );
?>
name ); ?>
extra_info );
if ( $extra_info ) :
?>
slug ] ) ? sanitize_text_field( wp_unslash( $_POST[ $cf->slug ] ) ) : ''; // phpcs:ignore
return $date && preg_match( '/\d{4}-\d{2}-\d{2}/', $date ) ? $date . ' 00:00:00' : '';
}
/**
* Print edit ticket custom field in individual ticket
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Ticket $ticket - ticket object.
* @return void
*/
public static function print_edit_ticket_cf( $cf, $ticket ) {
$unique_id = uniqid( 'wpsc_' );
?>
name ); ?>
extra_info );
if ( $extra_info ) :
?>
{$cf->slug} && is_object( $ticket->{$cf->slug} ) ? $ticket->{$cf->slug}->format( 'Y-m-d' ) : '';
$new = isset( $_POST[ $cf->slug ] ) ? sanitize_text_field( wp_unslash( $_POST[ $cf->slug ] ) ) : ''; // phpcs:ignore
// Exit if there is no change.
if ( $prev == $new ) {
return $ticket;
}
// Change value.
$ticket->{$cf->slug} = $new ? new DateTime( $new ) : '';
$ticket->save();
return $ticket;
}
/**
* Modify ticket field value of this custom field type using rest api
*
* @param WPSC_Ticket $ticket - ticket object.
* @param WPSC_Custom_Field $cf - custom field.
* @param mixed $value - value to be set.
* @return void
*/
public static function set_rest_edit_ticket_cf( $ticket, $cf, $value ) {
$date = WPSC_Functions::sanitize_date( sanitize_text_field( $value ) );
$new = $date ? $date : '';
$prev = is_object( $ticket->{$cf->slug} ) ? $ticket->{$cf->slug}->format( 'Y-m-d H:i:s' ) : '';
if ( $prev != $new ) {
$ticket->{$cf->slug} = $new;
}
}
/**
* Insert log thread for this custom field type change
*
* @param WPSC_Custom_Field $cf - current custom field of this type.
* @param WPSC_Ticket $prev - ticket object before making any changes.
* @param WPSC_Ticket $new - ticket object after making changes.
* @param string $current_date - date string to be stored as create time.
* @param int $customer_id - current user customer id for blame.
* @return void
*/
public static function insert_ticket_log( $cf, $prev, $new, $current_date, $customer_id ) {
// Exit if there is no change.
if ( $prev->{$cf->slug} == $new->{$cf->slug} ) {
return;
}
$prev_val = $prev->{$cf->slug} && is_object( $prev->{$cf->slug} ) ? $prev->{$cf->slug}->format( 'Y-m-d H:i:s' ) : '';
$new_val = $new->{$cf->slug} && is_object( $new->{$cf->slug} ) ? $new->{$cf->slug}->format( 'Y-m-d H:i:s' ) : '';
$thread = WPSC_Thread::insert(
array(
'ticket' => $prev->id,
'customer' => $customer_id,
'type' => 'log',
'body' => wp_json_encode(
array(
'slug' => $cf->slug,
'prev' => $prev_val,
'new' => $new_val,
)
),
'date_created' => $current_date,
'date_updated' => $current_date,
)
);
}
/**
* Return data for this custom field while creating duplicate ticket
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Ticket $ticket - ticket object.
* @return mixed
*/
public static function get_duplicate_ticket_data( $cf, $ticket ) {
return $ticket->{$cf->slug} && is_object( $ticket->{$cf->slug} ) ? $ticket->{$cf->slug}->format( 'Y-m-d H:i:s' ) : '';
}
/**
* Print edit field for this type in edit customer info
*
* @param WPSC_Custom_field $cf - custom field object.
* @param WPSC_Customer $customer - customer object.
* @param array $tff - ticket form field data.
* @return string
*/
public static function print_edit_customer_info( $cf, $customer, $tff ) {
$unique_id = uniqid( 'wpsc_' );
$val = $customer->id && $customer->{$cf->slug} ? $customer->{$cf->slug} : '';
ob_start();
?>
default_value ? $cf->default_value[0] : '';
?>
extra_info = isset( $_POST['extra_info'] ) ? sanitize_text_field( wp_unslash( $_POST['extra_info'] ) ) : ''; // phpcs:ignore
}
// default value.
if ( in_array( 'default_value', $field_class::$allowed_properties ) ) {
$default_value = isset( $_POST['default_value'] ) ? sanitize_text_field( wp_unslash( $_POST['default_value'] ) ) : ''; // phpcs:ignore
$cf->default_value = $default_value ? array( $default_value ) : array();
}
// auto fill.
if ( in_array( 'is_auto_fill', $field_class::$allowed_properties ) ) {
$cf->is_auto_fill = isset( $_POST['is_auto_fill'] ) ? sanitize_text_field( wp_unslash( $_POST['is_auto_fill'] ) ) : ''; // phpcs:ignore
}
// placeholder!
if ( in_array( 'placeholder_text', $field_class::$allowed_properties ) ) {
$cf->placeholder_text = isset( $_POST['placeholder_text'] ) ? sanitize_text_field( wp_unslash( $_POST['placeholder_text'] ) ) : ''; // phpcs:ignore
}
// date range.
$cf->date_range = isset( $_POST['date_range'] ) ? sanitize_text_field( wp_unslash( $_POST['date_range'] ) ) : 'all'; // phpcs:ignore
// date range in between.
$cf->start_range = isset( $_POST['from-date-range'] ) ? new DateTime( sanitize_text_field( wp_unslash( $_POST['from-date-range'] ) ) ) : ''; // phpcs:ignore
$cf->end_range = isset( $_POST['to-date-range'] ) && $cf->start_range ? new DateTime( sanitize_text_field( wp_unslash( $_POST['to-date-range'] ) ) ) : ''; //phpcs:ignore
// date format.
$cf->date_format = isset( $_POST['date_format'] ) ? sanitize_text_field( wp_unslash( $_POST['date_format'] ) ) : ''; // phpcs:ignore
// personal info.
if ( in_array( 'is_personal_info', $field_class::$allowed_properties ) ) {
$cf->is_personal_info = isset( $_POST['is_personal_info'] ) ? intval( $_POST['is_personal_info'] ) : 0; // phpcs:ignore
}
// my-profile..
if ( in_array( 'allow_my_profile', $field_class::$allowed_properties ) ) {
$cf->allow_my_profile = isset( $_POST['allow_my_profile'] ) ? intval( $_POST['allow_my_profile'] ) : 0; // phpcs:ignore
}
// ticket form..
if ( in_array( 'allow_ticket_form', $field_class::$allowed_properties ) ) {
$cf->allow_ticket_form = isset( $_POST['allow_ticket_form'] ) ? intval( $_POST['allow_ticket_form'] ) : 0; // phpcs:ignore
}
// tl_width!
if ( in_array( 'tl_width', $field_class::$allowed_properties ) ) {
$tl_width = isset( $_POST['tl_width'] ) ? intval( $_POST['tl_width'] ) : 0; // phpcs:ignore
$cf->tl_width = $tl_width ? $tl_width : 100;
}
// save!
$cf->save();
}
/**
* Returns printable ticket value for custom field. Can be used in export tickets, replace macros etc.
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Ticket $ticket - ticket object.
* @param string $module - module name.
* @return string
*/
public static function get_ticket_field_val( $cf, $ticket, $module = '' ) {
if ( ! is_object( $ticket->{$cf->slug} ) ) {
return '';
}
$gs = get_option( 'wpsc-gs-general' );
$format = $cf->date_format ? $cf->date_format : $gs['default-date-format'];
$value = date_i18n( $format, $ticket->{$cf->slug}->getTimestamp(), false );
return apply_filters( 'wpsc_ticket_field_val_date', $value, $cf, $ticket, $module );
}
/**
* Print ticket value for given custom field on ticket list
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Ticket $ticket - ticket object.
* @return void
*/
public static function print_tl_ticket_field_val( $cf, $ticket ) {
echo esc_attr( self::get_ticket_field_val( $cf, $ticket ) );
}
/**
* Print ticket value for given custom field on widget
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Ticket $ticket - ticket object.
* @return void
*/
public static function print_widget_ticket_field_val( $cf, $ticket ) {
echo esc_attr( self::get_ticket_field_val( $cf, $ticket ) );
}
/**
* Returns printable customer value for custom field. Can be used in export tickets, replace macros etc.
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Customer $customer - customer object.
* @return string
*/
public static function get_customer_field_val( $cf, $customer ) {
if ( ! is_object( $customer->{$cf->slug} ) ) {
return '';
}
$gs = get_option( 'wpsc-gs-general' );
$format = $cf->date_format ? $cf->date_format : $gs['default-date-format'];
return date_i18n( $format, $customer->{$cf->slug}->getTimestamp(), false );
}
/**
* Print customer value for given custom field on ticket list
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Customer $customer - customer object.
* @return void
*/
public static function print_tl_customer_field_val( $cf, $customer ) {
echo esc_attr( self::get_customer_field_val( $cf, $customer ) );
}
/**
* Print customer value for given custom field on widget
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param WPSC_Customer $customer - customer object.
* @return void
*/
public static function print_widget_customer_field_val( $cf, $customer ) {
echo esc_attr( self::get_customer_field_val( $cf, $customer ) );
}
/**
* Print given value for custom field
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param mixed $val - value to convert and print.
* @return void
*/
public static function print_val( $cf, $val ) {
if ( ! $val || $val == '0000-00-00 00:00:00' ) {
esc_attr_e( 'None', 'supportcandy' );
return;
}
$gs = get_option( 'wpsc-gs-general' );
$format = $cf->date_format ? $cf->date_format : $gs['default-date-format'];
$val = is_object( $val ) ? $val : new DateTime( $val );
echo esc_attr( date_i18n( $format, $val->getTimestamp(), false ) );
}
/**
* Return printable value for history log macro
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param mixed $val - value to convert and return.
* @return string
*/
public static function get_history_log_val( $cf, $val ) {
ob_start();
self::print_val( $cf, $val );
return ob_get_clean();
}
/**
* Print dashboard activity function
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param array $recent_logs - recent_logs object.
* @param array $body - body object.
* @param int $view - check if frontend.
* @return string
*/
public static function print_activity( $cf, $recent_logs, $body, $view ) {
$url = WPSC_Functions::get_ticket_url( $recent_logs->ticket->id, $view );
$gs = get_option( 'wpsc-gs-general' );
$format = $cf->date_format ? $cf->date_format : $gs['default-date-format'];
$new_val = new DateTime( $body->new );
if ( $body->new ) {
$log = date_i18n( $format, $new_val->getTimestamp() );
} else {
$log = 'None';
}
return esc_attr( $recent_logs->customer->name ) . ' updated the ' . esc_attr( $cf->name ) . ' value of #' . esc_attr( $recent_logs->ticket->id ) . ' to ' . esc_attr( $log );
}
/**
* Return given value for custom field
*
* @param WPSC_Custom_Field $cf - custom field object.
* @param mixed $val - value to convert and print.
* @return void
*/
public static function get_field_value( $cf, $val ) {
if ( ! $val || $val == '0000-00-00 00:00:00' ) {
esc_attr_e( 'None', 'supportcandy' );
return;
}
$gs = get_option( 'wpsc-gs-general' );
$format = $cf->date_format ? $cf->date_format : $gs['default-date-format'];
$val = is_object( $val ) ? $val : new DateTime( $val );
return esc_attr( date_i18n( $format, $val->getTimestamp(), false ) );
}
/**
* Clear value of hidden fields
*
* @return void
*/
public static function js_clear_value_hidden_fields() {
?>
case '':
customField.find('input').first().val('');
break;