70 lines
1.9 KiB
PHP
70 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* Implementation for WordPress functions missing in older WordPress versions.
|
|
*/
|
|
|
|
if (!function_exists('wp_slash_strings_only')) {
|
|
/**
|
|
* Adds slashes to only string values in an array of values.
|
|
*
|
|
* Compat for WordPress < 5.3.0.
|
|
*
|
|
* @param mixed $value Scalar or array of scalars.
|
|
* @return mixed Slashes $value
|
|
* @since 0.7.0
|
|
*
|
|
*/
|
|
function wp_slash_strings_only($value)
|
|
{
|
|
return map_deep($value, 'addslashes_strings_only');
|
|
}
|
|
}
|
|
|
|
if (!function_exists('addslashes_strings_only')) {
|
|
/**
|
|
* Adds slashes only if the provided value is a string.
|
|
*
|
|
* Compat for WordPress < 5.3.0.
|
|
*
|
|
* @param mixed $value
|
|
* @return mixed
|
|
* @since 0.7.0
|
|
*
|
|
*/
|
|
function addslashes_strings_only($value)
|
|
{
|
|
return is_string($value) ? addslashes($value) : $value;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('map_deep')) {
|
|
/**
|
|
* Maps a function to all non-iterable elements of an array or an object.
|
|
*
|
|
* Compat for WordPress < 4.4.0.
|
|
*
|
|
* @param mixed $value The array, object, or scalar.
|
|
* @param callable $callback The function to map onto $value.
|
|
* @return mixed The value with the callback applied to all non-arrays and non-objects inside it.
|
|
* @since 0.7.0
|
|
*
|
|
*/
|
|
function map_deep($value, $callback)
|
|
{
|
|
if (is_array($value)) {
|
|
foreach ($value as $index => $item) {
|
|
$value[$index] = map_deep($item, $callback);
|
|
}
|
|
} elseif (is_object($value)) {
|
|
$object_vars = get_object_vars($value);
|
|
foreach ($object_vars as $property_name => $property_value) {
|
|
$value->$property_name = map_deep($property_value, $callback);
|
|
}
|
|
} else {
|
|
$value = call_user_func($callback, $value);
|
|
}
|
|
|
|
return $value;
|
|
}
|
|
}
|