<?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;