103 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Compat Functions
 | |
|  *
 | |
|  * @package     EDD
 | |
|  * @subpackage  Functions
 | |
|  * @copyright   Copyright (c) 2018, Easy Digital Downloads, LLC
 | |
|  * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
 | |
|  * @since       1.0
 | |
|  */
 | |
| 
 | |
| // Exit if accessed directly
 | |
| defined( 'ABSPATH' ) || exit;
 | |
| 
 | |
| if ( ! function_exists( 'cal_days_in_month' ) ) :
 | |
| 	/**
 | |
| 	 * Fallback in case the calendar extension is not loaded in PHP
 | |
| 	 *
 | |
| 	 * Only supports Gregorian calendar
 | |
| 	 */
 | |
| 	function cal_days_in_month( $calendar, $month, $year ) {
 | |
| 		return date( 't', mktime( 0, 0, 0, $month, 1, $year ) );
 | |
| 	}
 | |
| endif;
 | |
| 
 | |
| if ( ! function_exists( 'hash_equals' ) ) :
 | |
| 	/**
 | |
| 	 * Compare two strings in constant time.
 | |
| 	 *
 | |
| 	 * This function was added in PHP 5.6.
 | |
| 	 * It can leak the length of a string.
 | |
| 	 *
 | |
| 	 * @since 2.2.1
 | |
| 	 *
 | |
| 	 * @param string $a Expected string.
 | |
| 	 * @param string $b Actual string.
 | |
| 	 * @return bool Whether strings are equal.
 | |
| 	 */
 | |
| 	function hash_equals( $a, $b ) {
 | |
| 		$a_length = strlen( $a );
 | |
| 		if ( $a_length !== strlen( $b ) ) {
 | |
| 			return false;
 | |
| 		}
 | |
| 		$result = 0;
 | |
| 
 | |
| 		// Do not attempt to "optimize" this.
 | |
| 		for ( $i = 0; $i < $a_length; $i++ ) {
 | |
| 			$result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] );
 | |
| 		}
 | |
| 
 | |
| 		return $result === 0;
 | |
| 	}
 | |
| endif;
 | |
| 
 | |
| if ( ! function_exists( 'getallheaders' ) ) :
 | |
| 	/**
 | |
| 	 * Retrieve all headers
 | |
| 	 *
 | |
| 	 * Ensure getallheaders function exists in the case we're using nginx
 | |
| 	 *
 | |
| 	 * @since  2.4
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	function getallheaders() {
 | |
| 		$headers = array();
 | |
| 		foreach ( $_SERVER as $name => $value ) {
 | |
| 			if ( substr( $name, 0, 5 ) == 'HTTP_' ) {
 | |
| 				$headers[ str_replace( ' ', '-', ucwords( strtolower( str_replace( '_', ' ', substr( $name, 5 ) ) ) ) ) ] = $value;
 | |
| 			}
 | |
| 		}
 | |
| 		return $headers;
 | |
| 	}
 | |
| endif;
 | |
| 
 | |
| if ( ! function_exists( 'wp_timezone_string' ) ) :
 | |
| 	/**
 | |
| 	 * Polyfill for wp_timezone_string() function added in WP 5.3.0
 | |
| 	 *
 | |
| 	 * Retrieves the timezone of the site as a string.
 | |
| 	 *
 | |
| 	 * @since  3.1.0.3
 | |
| 	 * @return string PHP timezone name or a ±HH:MM offset.
 | |
| 	 */
 | |
| 	function wp_timezone_string() {
 | |
| 		$timezone_string = get_option( 'timezone_string' );
 | |
| 
 | |
| 		if ( $timezone_string ) {
 | |
| 			return $timezone_string;
 | |
| 		}
 | |
| 
 | |
| 		$offset  = (float) get_option( 'gmt_offset' );
 | |
| 		$hours   = (int) $offset;
 | |
| 		$minutes = ( $offset - $hours );
 | |
| 
 | |
| 		$sign      = ( $offset < 0 ) ? '-' : '+';
 | |
| 		$abs_hour  = abs( $hours );
 | |
| 		$abs_mins  = abs( $minutes * 60 );
 | |
| 		$tz_offset = sprintf( '%s%02d:%02d', $sign, $abs_hour, $abs_mins );
 | |
| 
 | |
| 		return $tz_offset;
 | |
| 	}
 | |
| endif;
 |