/var/www/html_uk/wp-content/plugins/automatewoo/includes/Time_Helper.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
// phpcs:ignoreFile

namespace AutomateWoo;

/**
 * @class Time_Helper
 * @since 2.9
 */
class Time_Helper {


    
/**
     * @param string|DateTime $time - string must be in format 00:00
     * @return int
     */
    
static function calculate_seconds_from_day_start$time ) {

        if ( 
is_a$time'DateTime' ) ) {
            
$time $time->format'G:i' );
        }

        
$parts explode':'$time );

        if ( 
count$parts ) !== ) {
            return 
0;
        }

        return ( 
absint$parts[0] ) * HOUR_IN_SECONDS absint$parts[1] ) * MINUTE_IN_SECONDS );
    }


    
/**
     * @param \DateTime|DateTime $datetime
     */
    
static function convert_to_gmt$datetime ) {
        
$offset = -self::get_timezone_offset() * HOUR_IN_SECONDS;
        
$datetime->modify"{$offset} seconds" );
    }


    
/**
     * @param \DateTime|DateTime $datetime
     */
    
static function convert_from_gmt$datetime ) {
        
$offset self::get_timezone_offset() * HOUR_IN_SECONDS;
        
$datetime->modify"{$offset} seconds" );
    }


    
/**
     * @since 3.9
     * @return float|int
     */
    
static function get_timezone_offset() {
        if ( 
$timezone get_option'timezone_string' ) ) {
            
$timezone_object = new \DateTimeZone$timezone );
            return 
$timezone_object->getOffset( new \DateTime'now', new \DateTimeZone'UTC' ) ) ) / HOUR_IN_SECONDS;
        } else {
            return 
floatvalget_option'gmt_offset') );
        }
    }

    
/**
     * Get the number of seconds in a period of time.
     *
     * @since 5.0.0
     *
     * @param int    $interval_number The number of intervals e.g. "X days"
     * @param string $interval_type   Possible values: day, days, hour, hours, minute, minutes
     *
     * @return int
     */
    
public static function get_period_in_seconds$interval_number$interval_type ) {
        switch ( 
$interval_type ) {
            case 
'day':
            case 
'days':
                
$seconds DAY_IN_SECONDS;
                break;
            case 
'hour':
            case 
'hours':
                
$seconds HOUR_IN_SECONDS;
                break;
            case 
'minute':
            case 
'minutes':
                
$seconds MINUTE_IN_SECONDS;
                break;
            default:
                return 
0;
        }

        return 
intvalabsint$interval_number ) * $seconds );
    }


}