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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
<?php
/**
* WordPress core functions for keeping compatibility.
*
* @package EPL
* @subpackage Compatibility/Shortcodes
* @copyright Copyright (c) 2016, Merv Barrett
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 2.1.11
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! function_exists( 'shortcode_exists' ) ) {
/**
* Whether a registered shortcode exists named $tag
*
* @since 2.1.11
*
* @global array $shortcode_tags List of shortcode tags and their callback hooks.
*
* @param string $tag Shortcode tag to check.
* @return bool Whether the given shortcode exists.
*/
function shortcode_exists( $tag ) {
global $shortcode_tags;
return array_key_exists( $tag, $shortcode_tags );
}
}
if ( ! function_exists( 'wp_timezone_string' ) ) {
/**
* Retrieves the timezone of the site as a string.
*
* Uses the `timezone_string` option to get a proper timezone name if available,
* otherwise falls back to a manual UTC ± offset.
*
* Example return values:
*
* - 'Europe/Rome'
* - 'America/North_Dakota/New_Salem'
* - 'UTC'
* - '-06:30'
* - '+00:00'
* - '+08:45'
*
* @since 3.5.7 Added as this function is not present before WordPress 5.3.0
*
* @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;
}
}
if ( ! function_exists( 'wp_timezone' ) ) {
/**
* Retrieves the timezone of the site as a `DateTimeZone` object.
*
* Timezone can be based on a PHP timezone string or a ±HH:MM offset.
*
* @since 3.5.7 Added as this function is not present before WordPress 5.3.0
*
* @return DateTimeZone Timezone object.
*/
function wp_timezone() {
return new DateTimeZone( wp_timezone_string() );
}
}
if ( ! function_exists( 'current_datetime' ) ) {
/**
* Retrieves the current time as an object using the site's timezone.
*
* @since 3.5.7 Added as this function is not present before WordPress 5.3.0
*
* @return DateTimeImmutable Date and time object.
*/
function current_datetime() {
return new DateTimeImmutable( 'now', wp_timezone() );
}
}
if ( ! function_exists( 'epl_array_replace_recursive' ) ) {
/**
* EPL Array Replace Recursive
*
* @param array $data The array in which elements are replaced.
* @param array $array1 The array from which elements will be extracted.
* @return array Returns an array.
*/
function epl_array_replace_recursive( $data, $array1 ) {
if ( function_exists( 'array_replace_recursive' ) ) {
return call_user_func_array( 'array_replace_recursive', func_get_args() );
}
// Handle infinite arguments.
$args = func_get_args();
$data = array_shift( $args );
if ( ! is_array( $data ) ) {
return $data;
}
if ( ! empty( $args ) ) {
foreach ( $args as $array1 ) {
if ( ! is_array( $array1 ) ) {
continue;
}
foreach ( $array1 as $key => $value ) {
if ( is_array( $value ) && isset( $data[ $key ] ) && is_array( $data[ $key ] ) ) {
$data[ $key ] = epl_array_replace_recursive( $data[ $key ], $value );
} else {
$data[ $key ] = $value;
}
}
}
}
return $data;
}
}