Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-inclu...
File: class-wp-list-util.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* WordPress List utility class
[2] Fix | Delete
*
[3] Fix | Delete
* @package WordPress
[4] Fix | Delete
* @since 4.7.0
[5] Fix | Delete
*/
[6] Fix | Delete
[7] Fix | Delete
/**
[8] Fix | Delete
* List utility.
[9] Fix | Delete
*
[10] Fix | Delete
* Utility class to handle operations on an array of objects or arrays.
[11] Fix | Delete
*
[12] Fix | Delete
* @since 4.7.0
[13] Fix | Delete
*/
[14] Fix | Delete
#[AllowDynamicProperties]
[15] Fix | Delete
class WP_List_Util {
[16] Fix | Delete
/**
[17] Fix | Delete
* The input array.
[18] Fix | Delete
*
[19] Fix | Delete
* @since 4.7.0
[20] Fix | Delete
* @var array
[21] Fix | Delete
*/
[22] Fix | Delete
private $input = array();
[23] Fix | Delete
[24] Fix | Delete
/**
[25] Fix | Delete
* The output array.
[26] Fix | Delete
*
[27] Fix | Delete
* @since 4.7.0
[28] Fix | Delete
* @var array
[29] Fix | Delete
*/
[30] Fix | Delete
private $output = array();
[31] Fix | Delete
[32] Fix | Delete
/**
[33] Fix | Delete
* Temporary arguments for sorting.
[34] Fix | Delete
*
[35] Fix | Delete
* @since 4.7.0
[36] Fix | Delete
* @var string[]
[37] Fix | Delete
*/
[38] Fix | Delete
private $orderby = array();
[39] Fix | Delete
[40] Fix | Delete
/**
[41] Fix | Delete
* Constructor.
[42] Fix | Delete
*
[43] Fix | Delete
* Sets the input array.
[44] Fix | Delete
*
[45] Fix | Delete
* @since 4.7.0
[46] Fix | Delete
*
[47] Fix | Delete
* @param array $input Array to perform operations on.
[48] Fix | Delete
*/
[49] Fix | Delete
public function __construct( $input ) {
[50] Fix | Delete
$this->output = $input;
[51] Fix | Delete
$this->input = $input;
[52] Fix | Delete
}
[53] Fix | Delete
[54] Fix | Delete
/**
[55] Fix | Delete
* Returns the original input array.
[56] Fix | Delete
*
[57] Fix | Delete
* @since 4.7.0
[58] Fix | Delete
*
[59] Fix | Delete
* @return array The input array.
[60] Fix | Delete
*/
[61] Fix | Delete
public function get_input() {
[62] Fix | Delete
return $this->input;
[63] Fix | Delete
}
[64] Fix | Delete
[65] Fix | Delete
/**
[66] Fix | Delete
* Returns the output array.
[67] Fix | Delete
*
[68] Fix | Delete
* @since 4.7.0
[69] Fix | Delete
*
[70] Fix | Delete
* @return array The output array.
[71] Fix | Delete
*/
[72] Fix | Delete
public function get_output() {
[73] Fix | Delete
return $this->output;
[74] Fix | Delete
}
[75] Fix | Delete
[76] Fix | Delete
/**
[77] Fix | Delete
* Filters the list, based on a set of key => value arguments.
[78] Fix | Delete
*
[79] Fix | Delete
* Retrieves the objects from the list that match the given arguments.
[80] Fix | Delete
* Key represents property name, and value represents property value.
[81] Fix | Delete
*
[82] Fix | Delete
* If an object has more properties than those specified in arguments,
[83] Fix | Delete
* that will not disqualify it. When using the 'AND' operator,
[84] Fix | Delete
* any missing properties will disqualify it.
[85] Fix | Delete
*
[86] Fix | Delete
* @since 4.7.0
[87] Fix | Delete
*
[88] Fix | Delete
* @param array $args Optional. An array of key => value arguments to match
[89] Fix | Delete
* against each object. Default empty array.
[90] Fix | Delete
* @param string $operator Optional. The logical operation to perform. 'AND' means
[91] Fix | Delete
* all elements from the array must match. 'OR' means only
[92] Fix | Delete
* one element needs to match. 'NOT' means no elements may
[93] Fix | Delete
* match. Default 'AND'.
[94] Fix | Delete
* @return array Array of found values.
[95] Fix | Delete
*/
[96] Fix | Delete
public function filter( $args = array(), $operator = 'AND' ) {
[97] Fix | Delete
if ( empty( $args ) ) {
[98] Fix | Delete
return $this->output;
[99] Fix | Delete
}
[100] Fix | Delete
[101] Fix | Delete
$operator = strtoupper( $operator );
[102] Fix | Delete
[103] Fix | Delete
if ( ! in_array( $operator, array( 'AND', 'OR', 'NOT' ), true ) ) {
[104] Fix | Delete
$this->output = array();
[105] Fix | Delete
return $this->output;
[106] Fix | Delete
}
[107] Fix | Delete
[108] Fix | Delete
$count = count( $args );
[109] Fix | Delete
$filtered = array();
[110] Fix | Delete
[111] Fix | Delete
foreach ( $this->output as $key => $obj ) {
[112] Fix | Delete
$matched = 0;
[113] Fix | Delete
[114] Fix | Delete
foreach ( $args as $m_key => $m_value ) {
[115] Fix | Delete
if ( is_array( $obj ) ) {
[116] Fix | Delete
// Treat object as an array.
[117] Fix | Delete
if ( array_key_exists( $m_key, $obj ) && ( $m_value == $obj[ $m_key ] ) ) {
[118] Fix | Delete
++$matched;
[119] Fix | Delete
}
[120] Fix | Delete
} elseif ( is_object( $obj ) ) {
[121] Fix | Delete
// Treat object as an object.
[122] Fix | Delete
if ( isset( $obj->{$m_key} ) && ( $m_value == $obj->{$m_key} ) ) {
[123] Fix | Delete
++$matched;
[124] Fix | Delete
}
[125] Fix | Delete
}
[126] Fix | Delete
}
[127] Fix | Delete
[128] Fix | Delete
if ( ( 'AND' === $operator && $matched === $count )
[129] Fix | Delete
|| ( 'OR' === $operator && $matched > 0 )
[130] Fix | Delete
|| ( 'NOT' === $operator && 0 === $matched )
[131] Fix | Delete
) {
[132] Fix | Delete
$filtered[ $key ] = $obj;
[133] Fix | Delete
}
[134] Fix | Delete
}
[135] Fix | Delete
[136] Fix | Delete
$this->output = $filtered;
[137] Fix | Delete
[138] Fix | Delete
return $this->output;
[139] Fix | Delete
}
[140] Fix | Delete
[141] Fix | Delete
/**
[142] Fix | Delete
* Plucks a certain field out of each element in the input array.
[143] Fix | Delete
*
[144] Fix | Delete
* This has the same functionality and prototype of
[145] Fix | Delete
* array_column() (PHP 5.5) but also supports objects.
[146] Fix | Delete
*
[147] Fix | Delete
* @since 4.7.0
[148] Fix | Delete
*
[149] Fix | Delete
* @param int|string $field Field to fetch from the object or array.
[150] Fix | Delete
* @param int|string $index_key Optional. Field from the element to use as keys for the new array.
[151] Fix | Delete
* Default null.
[152] Fix | Delete
* @return array Array of found values. If `$index_key` is set, an array of found values with keys
[153] Fix | Delete
* corresponding to `$index_key`. If `$index_key` is null, array keys from the original
[154] Fix | Delete
* `$list` will be preserved in the results.
[155] Fix | Delete
*/
[156] Fix | Delete
public function pluck( $field, $index_key = null ) {
[157] Fix | Delete
$newlist = array();
[158] Fix | Delete
[159] Fix | Delete
if ( ! $index_key ) {
[160] Fix | Delete
/*
[161] Fix | Delete
* This is simple. Could at some point wrap array_column()
[162] Fix | Delete
* if we knew we had an array of arrays.
[163] Fix | Delete
*/
[164] Fix | Delete
foreach ( $this->output as $key => $value ) {
[165] Fix | Delete
if ( is_object( $value ) ) {
[166] Fix | Delete
$newlist[ $key ] = $value->$field;
[167] Fix | Delete
} elseif ( is_array( $value ) ) {
[168] Fix | Delete
$newlist[ $key ] = $value[ $field ];
[169] Fix | Delete
} else {
[170] Fix | Delete
_doing_it_wrong(
[171] Fix | Delete
__METHOD__,
[172] Fix | Delete
__( 'Values for the input array must be either objects or arrays.' ),
[173] Fix | Delete
'6.2.0'
[174] Fix | Delete
);
[175] Fix | Delete
}
[176] Fix | Delete
}
[177] Fix | Delete
[178] Fix | Delete
$this->output = $newlist;
[179] Fix | Delete
[180] Fix | Delete
return $this->output;
[181] Fix | Delete
}
[182] Fix | Delete
[183] Fix | Delete
/*
[184] Fix | Delete
* When index_key is not set for a particular item, push the value
[185] Fix | Delete
* to the end of the stack. This is how array_column() behaves.
[186] Fix | Delete
*/
[187] Fix | Delete
foreach ( $this->output as $value ) {
[188] Fix | Delete
if ( is_object( $value ) ) {
[189] Fix | Delete
if ( isset( $value->$index_key ) ) {
[190] Fix | Delete
$newlist[ $value->$index_key ] = $value->$field;
[191] Fix | Delete
} else {
[192] Fix | Delete
$newlist[] = $value->$field;
[193] Fix | Delete
}
[194] Fix | Delete
} elseif ( is_array( $value ) ) {
[195] Fix | Delete
if ( isset( $value[ $index_key ] ) ) {
[196] Fix | Delete
$newlist[ $value[ $index_key ] ] = $value[ $field ];
[197] Fix | Delete
} else {
[198] Fix | Delete
$newlist[] = $value[ $field ];
[199] Fix | Delete
}
[200] Fix | Delete
} else {
[201] Fix | Delete
_doing_it_wrong(
[202] Fix | Delete
__METHOD__,
[203] Fix | Delete
__( 'Values for the input array must be either objects or arrays.' ),
[204] Fix | Delete
'6.2.0'
[205] Fix | Delete
);
[206] Fix | Delete
}
[207] Fix | Delete
}
[208] Fix | Delete
[209] Fix | Delete
$this->output = $newlist;
[210] Fix | Delete
[211] Fix | Delete
return $this->output;
[212] Fix | Delete
}
[213] Fix | Delete
[214] Fix | Delete
/**
[215] Fix | Delete
* Sorts the input array based on one or more orderby arguments.
[216] Fix | Delete
*
[217] Fix | Delete
* @since 4.7.0
[218] Fix | Delete
*
[219] Fix | Delete
* @param string|array $orderby Optional. Either the field name to order by or an array
[220] Fix | Delete
* of multiple orderby fields as `$orderby => $order`.
[221] Fix | Delete
* Default empty array.
[222] Fix | Delete
* @param string $order Optional. Either 'ASC' or 'DESC'. Only used if `$orderby`
[223] Fix | Delete
* is a string. Default 'ASC'.
[224] Fix | Delete
* @param bool $preserve_keys Optional. Whether to preserve keys. Default false.
[225] Fix | Delete
* @return array The sorted array.
[226] Fix | Delete
*/
[227] Fix | Delete
public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false ) {
[228] Fix | Delete
if ( empty( $orderby ) ) {
[229] Fix | Delete
return $this->output;
[230] Fix | Delete
}
[231] Fix | Delete
[232] Fix | Delete
if ( is_string( $orderby ) ) {
[233] Fix | Delete
$orderby = array( $orderby => $order );
[234] Fix | Delete
}
[235] Fix | Delete
[236] Fix | Delete
foreach ( $orderby as $field => $direction ) {
[237] Fix | Delete
$orderby[ $field ] = 'DESC' === strtoupper( $direction ) ? 'DESC' : 'ASC';
[238] Fix | Delete
}
[239] Fix | Delete
[240] Fix | Delete
$this->orderby = $orderby;
[241] Fix | Delete
[242] Fix | Delete
if ( $preserve_keys ) {
[243] Fix | Delete
uasort( $this->output, array( $this, 'sort_callback' ) );
[244] Fix | Delete
} else {
[245] Fix | Delete
usort( $this->output, array( $this, 'sort_callback' ) );
[246] Fix | Delete
}
[247] Fix | Delete
[248] Fix | Delete
$this->orderby = array();
[249] Fix | Delete
[250] Fix | Delete
return $this->output;
[251] Fix | Delete
}
[252] Fix | Delete
[253] Fix | Delete
/**
[254] Fix | Delete
* Callback to sort an array by specific fields.
[255] Fix | Delete
*
[256] Fix | Delete
* @since 4.7.0
[257] Fix | Delete
*
[258] Fix | Delete
* @see WP_List_Util::sort()
[259] Fix | Delete
*
[260] Fix | Delete
* @param object|array $a One object to compare.
[261] Fix | Delete
* @param object|array $b The other object to compare.
[262] Fix | Delete
* @return int 0 if both objects equal. -1 if second object should come first, 1 otherwise.
[263] Fix | Delete
*/
[264] Fix | Delete
private function sort_callback( $a, $b ) {
[265] Fix | Delete
if ( empty( $this->orderby ) ) {
[266] Fix | Delete
return 0;
[267] Fix | Delete
}
[268] Fix | Delete
[269] Fix | Delete
$a = (array) $a;
[270] Fix | Delete
$b = (array) $b;
[271] Fix | Delete
[272] Fix | Delete
foreach ( $this->orderby as $field => $direction ) {
[273] Fix | Delete
if ( ! isset( $a[ $field ] ) || ! isset( $b[ $field ] ) ) {
[274] Fix | Delete
continue;
[275] Fix | Delete
}
[276] Fix | Delete
[277] Fix | Delete
if ( $a[ $field ] == $b[ $field ] ) {
[278] Fix | Delete
continue;
[279] Fix | Delete
}
[280] Fix | Delete
[281] Fix | Delete
$results = 'DESC' === $direction ? array( 1, -1 ) : array( -1, 1 );
[282] Fix | Delete
[283] Fix | Delete
if ( is_numeric( $a[ $field ] ) && is_numeric( $b[ $field ] ) ) {
[284] Fix | Delete
return ( $a[ $field ] < $b[ $field ] ) ? $results[0] : $results[1];
[285] Fix | Delete
}
[286] Fix | Delete
[287] Fix | Delete
return 0 > strcmp( $a[ $field ], $b[ $field ] ) ? $results[0] : $results[1];
[288] Fix | Delete
}
[289] Fix | Delete
[290] Fix | Delete
return 0;
[291] Fix | Delete
}
[292] Fix | Delete
}
[293] Fix | Delete
[294] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function