167 lines
4.9 KiB
PHP
167 lines
4.9 KiB
PHP
<?php
|
|
|
|
if ( ! function_exists( '_cleanup_header_comment' ) ) {
|
|
function _cleanup_header_comment( $str ) {
|
|
return trim( preg_replace( '/\s*(?:\*\/|\?>).*/', '', $str ) );
|
|
}
|
|
}
|
|
|
|
if ( ! defined( 'E_DEPRECATED' ) ) {
|
|
define( 'E_DEPRECATED', 8192 ); }
|
|
|
|
if ( ! function_exists( 'esc_textarea' ) ) :
|
|
|
|
function esc_textarea( $text ) {
|
|
$safe_text = esc_html( $text );
|
|
return apply_filters( 'esc_textarea', $safe_text, $text );
|
|
}
|
|
|
|
endif;
|
|
|
|
/**
|
|
* This file is part of the array_column library
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*
|
|
* @copyright Copyright (c) 2013 Ben Ramsey <http://benramsey.com>
|
|
* @license http://opensource.org/licenses/MIT MIT
|
|
*/
|
|
|
|
if ( ! function_exists( 'array_column' ) ) {
|
|
|
|
/**
|
|
* Returns the values from a single column of the input array, identified by
|
|
* the $columnKey.
|
|
*
|
|
* Optionally, you may provide an $indexKey to index the values in the returned
|
|
* array by the values from the $indexKey column in the input array.
|
|
*
|
|
* @param array $input A multi-dimensional array (record set) from which to pull
|
|
* a column of values.
|
|
* @param mixed $columnKey The column of values to return. This value may be the
|
|
* integer key of the column you wish to retrieve, or it
|
|
* may be the string key name for an associative array.
|
|
* @param mixed $indexKey (Optional.) The column to use as the index/keys for
|
|
* the returned array. This value may be the integer key
|
|
* of the column, or it may be the string key name.
|
|
* @return array|false
|
|
*/
|
|
function array_column( $input = null, $columnKey = null, $indexKey = null ) {
|
|
// Using func_get_args() in order to check for proper number of
|
|
// parameters and trigger errors exactly as the built-in array_column()
|
|
// does in PHP 5.5.
|
|
$argc = func_num_args();
|
|
$params = func_get_args();
|
|
|
|
if ( $argc < 2 ) {
|
|
trigger_error( "array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING );
|
|
return null;
|
|
}
|
|
|
|
if ( ! is_array( $params[0] ) ) {
|
|
trigger_error( 'array_column() expects parameter 1 to be array, ' . gettype( $params[0] ) . ' given', E_USER_WARNING );
|
|
return null;
|
|
}
|
|
|
|
if ( ! is_int( $params[1] )
|
|
&& ! is_float( $params[1] )
|
|
&& ! is_string( $params[1] )
|
|
&& $params[1] !== null
|
|
&& ! ( is_object( $params[1] ) && method_exists( $params[1], '__toString' ) )
|
|
) {
|
|
trigger_error( 'array_column(): The column key should be either a string or an integer', E_USER_WARNING );
|
|
return false;
|
|
}
|
|
|
|
if ( isset( $params[2] )
|
|
&& ! is_int( $params[2] )
|
|
&& ! is_float( $params[2] )
|
|
&& ! is_string( $params[2] )
|
|
&& ! ( is_object( $params[2] ) && method_exists( $params[2], '__toString' ) )
|
|
) {
|
|
trigger_error( 'array_column(): The index key should be either a string or an integer', E_USER_WARNING );
|
|
return false;
|
|
}
|
|
|
|
$paramsInput = $params[0];
|
|
$paramsColumnKey = ( $params[1] !== null ) ? (string) $params[1] : null;
|
|
|
|
$paramsIndexKey = null;
|
|
if ( isset( $params[2] ) ) {
|
|
if ( is_float( $params[2] ) || is_int( $params[2] ) ) {
|
|
$paramsIndexKey = (int) $params[2];
|
|
} else {
|
|
$paramsIndexKey = (string) $params[2];
|
|
}
|
|
}
|
|
|
|
$resultArray = array();
|
|
|
|
foreach ( $paramsInput as $row ) {
|
|
|
|
$key = $value = null;
|
|
$keySet = $valueSet = false;
|
|
|
|
if ( $paramsIndexKey !== null && array_key_exists( $paramsIndexKey, $row ) ) {
|
|
$keySet = true;
|
|
$key = (string) $row[ $paramsIndexKey ];
|
|
}
|
|
|
|
if ( $paramsColumnKey === null ) {
|
|
$valueSet = true;
|
|
$value = $row;
|
|
} elseif ( is_array( $row ) && array_key_exists( $paramsColumnKey, $row ) ) {
|
|
$valueSet = true;
|
|
$value = $row[ $paramsColumnKey ];
|
|
}
|
|
|
|
if ( $valueSet ) {
|
|
if ( $keySet ) {
|
|
$resultArray[ $key ] = $value;
|
|
} else {
|
|
$resultArray[] = $value;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $resultArray;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'array_replace_recursive' ) ) {
|
|
function array_replace_recursive( $array, $array1 ) {
|
|
// handle the arguments, merge one by one
|
|
$args = func_get_args();
|
|
$array = $args[0];
|
|
if ( ! is_array( $array ) ) {
|
|
return $array;
|
|
}
|
|
$args_count = count( $args );
|
|
for ( $i = 1; $i < $args_count; $i ++ ) {
|
|
if ( is_array( $args[ $i ] ) ) {
|
|
$array = array_replace_recursive_recurse( $array, $args[ $i ] );
|
|
}
|
|
}
|
|
|
|
return $array;
|
|
}
|
|
|
|
function array_replace_recursive_recurse( $array, $array1 ) {
|
|
foreach ( $array1 as $key => $value ) {
|
|
// create new key in $array, if it is empty or not an array
|
|
if ( ! isset( $array[ $key ] ) || ( isset( $array[ $key ] ) && ! is_array( $array[ $key ] ) ) ) {
|
|
$array[ $key ] = array();
|
|
}
|
|
|
|
// overwrite the value in the base array
|
|
if ( is_array( $value ) ) {
|
|
$value = array_replace_recursive_recurse( $array[ $key ], $value );
|
|
}
|
|
$array[ $key ] = $value;
|
|
}
|
|
|
|
return $array;
|
|
}
|
|
}
|