File: /var/www/html/ielts-store/wp-content/plugins/automatewoo/includes/Format.php
<?php
// phpcs:ignoreFile
namespace AutomateWoo;
/**
* @class Format
* @since 2.9
*/
class Format {
const MYSQL = 'Y-m-d H:i:s';
/**
* @param int|string|DateTime|\WC_DateTime $date
* @param bool|int $max_diff Set to 0 to disable diff format
* @param bool $convert_from_gmt If its gmt convert it to local time
* @param bool $shorten_month
*
* @since 3.8 $shorten_month param added
*
* @return string|false
*/
static function datetime( $date, $max_diff = false, $convert_from_gmt = true, $shorten_month = false ) {
if ( ! $timestamp = self::mixed_date_to_timestamp( $date ) ) {
return false; // convert to timestamp ensures WC_DateTime objects are in UTC
}
if ( $convert_from_gmt ) {
$timestamp = strtotime( get_date_from_gmt( date( Format::MYSQL, $timestamp ), Format::MYSQL ) );
}
$now = current_time( 'timestamp' );
if ( $max_diff === false ) $max_diff = DAY_IN_SECONDS; // set default
$diff = $timestamp - $now;
if ( abs( $diff ) >= $max_diff ) {
return $date_to_display = date_i18n( self::get_date_format( $shorten_month ) . ' ' . wc_time_format(), $timestamp );
}
return self::human_time_diff( $timestamp );
}
/**
* @param int|string|DateTime|\WC_DateTime $date
* @param bool|int $max_diff
* @param bool $convert_from_gmt If its gmt convert it to local time
* @param bool $shorten_month
*
* @since 3.8 $shorten_month param added
*
* @return string|false
*/
static function date( $date, $max_diff = false, $convert_from_gmt = true, $shorten_month = false ) {
if ( ! $timestamp = self::mixed_date_to_timestamp( $date ) ) {
return false; // convert to timestamp ensures WC_DateTime objects are in UTC
}
if ( $convert_from_gmt ) {
$timestamp = strtotime( get_date_from_gmt( date( Format::MYSQL, $timestamp ), Format::MYSQL ) );
}
$now = current_time( 'timestamp' );
if ( $max_diff === false ) $max_diff = WEEK_IN_SECONDS; // set default
$diff = $timestamp - $now;
if ( abs( $diff ) >= $max_diff ) {
return $date_to_display = date_i18n( self::get_date_format( $shorten_month ), $timestamp );
}
return self::human_time_diff( $timestamp );
}
/**
* @since 3.8
* @param bool $shorten_month
* @return string
*/
static function get_date_format( $shorten_month = false ) {
$format = wc_date_format();
if ( $shorten_month ) {
$format = str_replace( 'F', 'M', $format );
}
return $format;
}
/**
* @param integer $timestamp
* @return string
*/
private static function human_time_diff( $timestamp ) {
$now = current_time( 'timestamp' );
$diff = $timestamp - $now;
if ( $diff < 55 && $diff > -55 ) {
$diff_string = sprintf( _n( '%d second', '%d seconds', abs( $diff ), 'automatewoo' ), abs( $diff ) );
}
else {
$diff_string = human_time_diff( $now, $timestamp );
}
if ( $diff > 0 ) {
return sprintf( __( '%s from now', 'automatewoo' ), $diff_string );
}
else {
return sprintf( __( '%s ago', 'automatewoo' ), $diff_string );
}
}
/**
* @param int|string|DateTime $date
* @return int|bool
*/
static function mixed_date_to_timestamp( $date ) {
if ( ! $date ) {
return false;
}
$timestamp = 0;
if ( is_numeric( $date ) ) {
$timestamp = $date;
}
else {
if ( is_a( $date, 'DateTime' ) ) { // maintain support for \DateTime
$timestamp = $date->getTimestamp();
}
elseif ( is_string( $date ) ) {
$timestamp = strtotime( $date );
}
}
if ( $timestamp < 0 ) {
return false;
}
return $timestamp;
}
/**
* @param integer $day - 1 (for Monday) through 7 (for Sunday)
* @return string|false
*/
static function weekday( $day ) {
global $wp_locale;
$days = [
1 => $wp_locale->get_weekday(1),
2 => $wp_locale->get_weekday(2),
3 => $wp_locale->get_weekday(3),
4 => $wp_locale->get_weekday(4),
5 => $wp_locale->get_weekday(5),
6 => $wp_locale->get_weekday(6),
7 => $wp_locale->get_weekday(0),
];
if ( ! isset( $days[ $day ] ) ) {
return false;
}
return $days[ $day ];
}
/**
* @param integer $day - 1 (for Monday) through 7 (for Sunday)
* @return string|false
*/
static function weekday_abbrev( $day ) {
global $wp_locale;
if ( $name = self::weekday( $day ) ) {
return $wp_locale->get_weekday_abbrev( $name );
}
return false;
}
/**
* @param string|array $time
* @return string
*/
static function time_of_day( $time ) {
if ( is_array( $time ) ) {
$parts = array_map( 'absint', $time );
}
else {
$parts = explode( ':', $time );
}
if ( count( $parts ) !== 2 ) {
return '-';
}
$date = new DateTime();
$date->setTime( $parts[0], $parts[1] );
return $date->format( wc_time_format() );
}
/**
* Format a price decimal value.
*
* Does NOT localize the decimal.
*
* @param float|string $number
* @param int $places
* @param bool $trim_zeros
*
* @return string
*/
public static function decimal( $number, $places = null, $trim_zeros = false ) {
if ( null === $places ) {
$places = wc_get_price_decimals();
}
return wc_format_decimal( $number, $places, $trim_zeros );
}
/**
* @param Customer $customer
* @return string
*/
static function customer( $customer ) {
if ( ! $customer ) {
return false;
}
$name = esc_attr( $customer->get_full_name() );
$email = esc_attr( $customer->get_email() );
if ( $customer->is_registered() ) {
$link = get_edit_user_link( $customer->get_user_id() );
}
else {
$link = Admin::page_url('guest', $customer->get_guest_id() );
}
return "<a href='$link'>$name</a>" . ( $customer->is_registered() ? '' : ' ' . __( '[Guest]', 'automatewoo' ) ) . " <a href='mailto:$email'>$email</a>";
}
/**
* @since 4.0
* @param $email
* @return string
*/
static function email( $email ) {
$email = esc_attr( $email );
if ( ! aw_is_email_anonymized( $email ) ) {
return '<a href="mailto:'.$email.'">'.$email.'</a>';
}
return $email;
}
/**
* @since 4.0
* @param $val
* @return string
*/
static function bool( $val ) {
return $val ? __('Yes','automatewoo') : __('No','automatewoo');
}
/**
* @deprecated Use Format::decimal() which will round automatically.
*
* @param string|float $number
* @param $places
* @return float
*/
static function round( $number, $places = null ) {
wc_deprecated_function( __METHOD__, '5.2.0', 'Format::decimal' );
return (float) Format::decimal( $number, $places );
}
}