<?php /** * WordPress List utility class * * @package WordPress * @since 4.7.0 */ /** * List utility. * * Utility class to handle operations on an array of objects. * * @since 4.7.0 */ class WP_List_Util { /** * The input array. * * @since 4.7.0 * @var array */ private $input = array(); /** * The output array. * * @since 4.7.0 * @var array */ private $output = array(); /** * Temporary arguments for sorting. * * @since 4.7.0 * @var array */ private $orderby = array(); /** * Constructor. * * Sets the input array. * * @since 4.7.0 * * @param array $input Array to perform operations on. */ public function __construct( $input ) { $this->output = $input; $this->input = $input; } /** * Returns the original input array. * * @since 4.7.0 * * @return array The input array. */ public function get_input() { return $this->input; } /** * Returns the output array. * * @since 4.7.0 * * @return array The output array. */ public function get_output() { return $this->output; } /** * Filters the list, based on a set of key => value arguments. * * @since 4.7.0 * * @param array $args Optional. An array of key => value arguments to match * against each object. Default empty array. * @param string $operator Optional. The logical operation to perform. 'AND' means * all elements from the array must match. 'OR' means only * one element needs to match. 'NOT' means no elements may * match. Default 'AND'. * @return array Array of found values. */ public function filter( $args = array(), $operator = 'AND' ) { if ( empty( $args ) ) { return $this->output; } $operator = strtoupper( $operator ); if ( ! in_array( $operator, array( 'AND', 'OR', 'NOT' ), true ) ) { return array(); } $count = count( $args ); $filtered = array(); foreach ( $this->output as $key => $obj ) { $matched = 0; foreach ( $args as $m_key => $m_value ) { if ( is_array( $obj ) ) { // Treat object as an array. if ( array_key_exists( $m_key, $obj ) && ( $m_value == $obj[ $m_key ] ) ) { $matched++; } } elseif ( is_object( $obj ) ) { // Treat object as an object. if ( isset( $obj->{$m_key} ) && ( $m_value == $obj->{$m_key} ) ) { $matched++; } } } if ( ( 'AND' === $operator && $matched === $count ) || ( 'OR' === $operator && $matched > 0 ) || ( 'NOT' === $operator && 0 === $matched ) ) { $filtered[ $key ] = $obj; } } $this->output = $filtered; return $this->output; } /** * Plucks a certain field out of each object in the list. * * This has the same functionality and prototype of * array_column() (PHP 5.5) but also supports objects. * * @since 4.7.0 * * @param int|string $field Field from the object to place instead of the entire object * @param int|string $index_key Optional. Field from the object to use as keys for the new array. * Default null. * @return array Array of found values. If `$index_key` is set, an array of found values with keys * corresponding to `$index_key`. If `$index_key` is null, array keys from the original * `$list` will be preserved in the results. */ public function pluck( $field, $index_key = null ) { $newlist = array(); if ( ! $index_key ) { /* * This is simple. Could at some point wrap array_column() * if we knew we had an array of arrays. */ foreach ( $this->output as $key => $value ) { if ( is_object( $value ) ) { $newlist[ $key ] = $value->$field; } else { $newlist[ $key ] = $value[ $field ]; } } $this->output = $newlist; return $this->output; } /* * When index_key is not set for a particular item, push the value * to the end of the stack. This is how array_column() behaves. */ foreach ( $this->output as $value ) { if ( is_object( $value ) ) { if ( isset( $value->$index_key ) ) { $newlist[ $value->$index_key ] = $value->$field; } else { $newlist[] = $value->$field; } } else { if ( isset( $value[ $index_key ] ) ) { $newlist[ $value[ $index_key ] ] = $value[ $field ]; } else { $newlist[] = $value[ $field ]; } } } $this->output = $newlist; return $this->output; } /** * Sorts the list, based on one or more orderby arguments. * * @since 4.7.0 * * @param string|array $orderby Optional. Either the field name to order by or an array * of multiple orderby fields as $orderby => $order. * @param string $order Optional. Either 'ASC' or 'DESC'. Only used if $orderby * is a string. * @param bool $preserve_keys Optional. Whether to preserve keys. Default false. * @return array The sorted array. */ public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false ) { if ( empty( $orderby ) ) { return $this->output; } if ( is_string( $orderby ) ) { $orderby = array( $orderby => $order ); } foreach ( $orderby as $field => $direction ) { $orderby[ $field ] = 'DESC' === strtoupper( $direction ) ? 'DESC' : 'ASC'; } $this->orderby = $orderby; if ( $preserve_keys ) { uasort( $this->output, array( $this, 'sort_callback' ) ); } else { usort( $this->output, array( $this, 'sort_callback' ) ); } $this->orderby = array(); return $this->output; } /** * Callback to sort the list by specific fields. * * @since 4.7.0 * * @see WP_List_Util::sort() * * @param object|array $a One object to compare. * @param object|array $b The other object to compare. * @return int 0 if both objects equal. -1 if second object should come first, 1 otherwise. */ private function sort_callback( $a, $b ) { if ( empty( $this->orderby ) ) { return 0; } $a = (array) $a; $b = (array) $b; foreach ( $this->orderby as $field => $direction ) { if ( ! isset( $a[ $field ] ) || ! isset( $b[ $field ] ) ) { continue; } if ( $a[ $field ] == $b[ $field ] ) { continue; } $results = 'DESC' === $direction ? array( 1, -1 ) : array( -1, 1 ); if ( is_numeric( $a[ $field ] ) && is_numeric( $b[ $field ] ) ) { return ( $a[ $field ] < $b[ $field ] ) ? $results[0] : $results[1]; } return 0 > strcmp( $a[ $field ], $b[ $field ] ) ? $results[0] : $results[1]; } return 0; } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
ID3 | Folder | 0755 |
|
|
IXR | Folder | 0755 |
|
|
PHPMailer | Folder | 0755 |
|
|
Requests | Folder | 0755 |
|
|
SimplePie | Folder | 0755 |
|
|
Text | Folder | 0755 |
|
|
assets | Folder | 0755 |
|
|
block-patterns | Folder | 0755 |
|
|
block-supports | Folder | 0755 |
|
|
blocks | Folder | 0755 |
|
|
certificates | Folder | 0755 |
|
|
css | Folder | 0755 |
|
|
customize | Folder | 0755 |
|
|
fonts | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
pomo | Folder | 0755 |
|
|
random_compat | Folder | 0755 |
|
|
rest-api | Folder | 0755 |
|
|
sitemaps | Folder | 0755 |
|
|
sodium_compat | Folder | 0755 |
|
|
theme-compat | Folder | 0755 |
|
|
widgets | Folder | 0755 |
|
|
admin-bar.php | File | 30.96 KB | 0644 |
|
atomlib.php | File | 11.67 KB | 0644 |
|
author-template.php | File | 16.62 KB | 0644 |
|
block-patterns.php | File | 1.42 KB | 0644 |
|
blocks.php | File | 25.42 KB | 0644 |
|
bookmark-template.php | File | 12.22 KB | 0644 |
|
bookmark.php | File | 14.78 KB | 0644 |
|
cache-compat.php | File | 1.02 KB | 0644 |
|
cache.php | File | 9.28 KB | 0644 |
|
canonical.php | File | 30.9 KB | 0644 |
|
capabilities.php | File | 33.98 KB | 0644 |
|
category-template.php | File | 53.98 KB | 0644 |
|
category.php | File | 12.41 KB | 0644 |
|
class-IXR.php | File | 2.48 KB | 0644 |
|
class-feed.php | File | 529 B | 0644 |
|
class-http.php | File | 38.78 KB | 0644 |
|
class-json.php | File | 42.42 KB | 0644 |
|
class-oembed.php | File | 407 B | 0644 |
|
class-phpass.php | File | 7.15 KB | 0644 |
|
class-phpmailer.php | File | 664 B | 0644 |
|
class-pop3.php | File | 20.35 KB | 0644 |
|
class-requests.php | File | 29.14 KB | 0644 |
|
class-simplepie.php | File | 94.01 KB | 0644 |
|
class-smtp.php | File | 452 B | 0644 |
|
class-snoopy.php | File | 36.83 KB | 0644 |
|
class-walker-category-dropdown.php | File | 2.08 KB | 0644 |
|
class-walker-category.php | File | 7.71 KB | 0644 |
|
class-walker-comment.php | File | 13.41 KB | 0644 |
|
class-walker-nav-menu.php | File | 8.44 KB | 0644 |
|
class-walker-page-dropdown.php | File | 2.25 KB | 0644 |
|
class-walker-page.php | File | 6.88 KB | 0644 |
|
class-wp-admin-bar.php | File | 16.59 KB | 0644 |
|
class-wp-ajax-response.php | File | 5.12 KB | 0644 |
|
class-wp-application-passwords.php | File | 9.35 KB | 0644 |
|
class-wp-block-list.php | File | 4.37 KB | 0644 |
|
class-wp-block-parser.php | File | 14.86 KB | 0644 |
|
class-wp-block-pattern-categories-registry.php | File | 4.11 KB | 0644 |
|
class-wp-block-patterns-registry.php | File | 4.4 KB | 0644 |
|
class-wp-block-styles-registry.php | File | 4.61 KB | 0644 |
|
class-wp-block-supports.php | File | 5.17 KB | 0644 |
|
class-wp-block-type-registry.php | File | 4.69 KB | 0644 |
|
class-wp-block-type.php | File | 5.98 KB | 0644 |
|
class-wp-block.php | File | 6.13 KB | 0644 |
|
class-wp-comment-query.php | File | 44.36 KB | 0644 |
|
class-wp-comment.php | File | 9.1 KB | 0644 |
|
class-wp-customize-control.php | File | 24.93 KB | 0644 |
|
class-wp-customize-manager.php | File | 196.47 KB | 0644 |
|
class-wp-customize-nav-menus.php | File | 55.44 KB | 0644 |
|
class-wp-customize-panel.php | File | 10.16 KB | 0644 |
|
class-wp-customize-section.php | File | 10.72 KB | 0644 |
|
class-wp-customize-setting.php | File | 29.03 KB | 0644 |
|
class-wp-customize-widgets.php | File | 65.44 KB | 0644 |
|
class-wp-date-query.php | File | 34.02 KB | 0644 |
|
class-wp-dependency.php | File | 2.45 KB | 0644 |
|
class-wp-editor.php | File | 68.9 KB | 0644 |
|
class-wp-embed.php | File | 15.42 KB | 0644 |
|
class-wp-error.php | File | 7.13 KB | 0644 |
|
class-wp-fatal-error-handler.php | File | 7.37 KB | 0644 |
|
class-wp-feed-cache-transient.php | File | 2.5 KB | 0644 |
|
class-wp-feed-cache.php | File | 970 B | 0644 |
|
class-wp-hook.php | File | 14.37 KB | 0644 |
|
class-wp-http-cookie.php | File | 7.02 KB | 0644 |
|
class-wp-http-curl.php | File | 12.06 KB | 0644 |
|
class-wp-http-encoding.php | File | 6.4 KB | 0644 |
|
class-wp-http-ixr-client.php | File | 3.39 KB | 0644 |
|
class-wp-http-proxy.php | File | 5.73 KB | 0644 |
|
class-wp-http-requests-hooks.php | File | 1.91 KB | 0644 |
|
class-wp-http-requests-response.php | File | 4.24 KB | 0644 |
|
class-wp-http-response.php | File | 2.88 KB | 0644 |
|
class-wp-http-streams.php | File | 15.74 KB | 0644 |
|
class-wp-image-editor-gd.php | File | 14.28 KB | 0644 |
|
class-wp-image-editor-imagick.php | File | 25.86 KB | 0644 |
|
class-wp-image-editor.php | File | 13.85 KB | 0644 |
|
class-wp-list-util.php | File | 6.46 KB | 0644 |
|
class-wp-locale-switcher.php | File | 4.9 KB | 0644 |
|
class-wp-locale.php | File | 13.65 KB | 0644 |
|
class-wp-matchesmapregex.php | File | 1.76 KB | 0644 |
|
class-wp-meta-query.php | File | 27.19 KB | 0644 |
|
class-wp-metadata-lazyloader.php | File | 5.26 KB | 0644 |
|
class-wp-network-query.php | File | 18.72 KB | 0644 |
|
class-wp-network.php | File | 12.09 KB | 0644 |
|
class-wp-object-cache.php | File | 13.22 KB | 0644 |
|
class-wp-oembed-controller.php | File | 6.63 KB | 0644 |
|
class-wp-oembed.php | File | 29.61 KB | 0644 |
|
class-wp-paused-extensions-storage.php | File | 4.81 KB | 0644 |
|
class-wp-post-type.php | File | 20.06 KB | 0644 |
|
class-wp-post.php | File | 6.27 KB | 0644 |
|
class-wp-query.php | File | 131.09 KB | 0644 |
|
class-wp-recovery-mode-cookie-service.php | File | 6.31 KB | 0644 |
|
class-wp-recovery-mode-email-service.php | File | 10.41 KB | 0644 |
|
class-wp-recovery-mode-key-service.php | File | 4.17 KB | 0644 |
|
class-wp-recovery-mode-link-service.php | File | 3.29 KB | 0644 |
|
class-wp-recovery-mode.php | File | 11.11 KB | 0644 |
|
class-wp-rewrite.php | File | 59.55 KB | 0644 |
|
class-wp-role.php | File | 2.44 KB | 0644 |
|
class-wp-roles.php | File | 8.23 KB | 0644 |
|
class-wp-session-tokens.php | File | 7.25 KB | 0644 |
|
class-wp-simplepie-file.php | File | 3.18 KB | 0644 |
|
class-wp-simplepie-sanitize-kses.php | File | 1.73 KB | 0644 |
|
class-wp-site-query.php | File | 28.62 KB | 0644 |
|
class-wp-site.php | File | 7.19 KB | 0644 |
|
class-wp-tax-query.php | File | 18.81 KB | 0644 |
|
class-wp-taxonomy.php | File | 12.28 KB | 0644 |
|
class-wp-term-query.php | File | 35.38 KB | 0644 |
|
class-wp-term.php | File | 5.14 KB | 0644 |
|
class-wp-text-diff-renderer-inline.php | File | 716 B | 0644 |
|
class-wp-text-diff-renderer-table.php | File | 16.48 KB | 0644 |
|
class-wp-theme.php | File | 49.57 KB | 0644 |
|
class-wp-user-meta-session-tokens.php | File | 2.92 KB | 0644 |
|
class-wp-user-query.php | File | 30.59 KB | 0644 |
|
class-wp-user-request.php | File | 2.14 KB | 0644 |
|
class-wp-user.php | File | 21.62 KB | 0644 |
|
class-wp-walker.php | File | 12.42 KB | 0644 |
|
class-wp-widget-factory.php | File | 2.56 KB | 0644 |
|
class-wp-widget.php | File | 17.48 KB | 0644 |
|
class-wp-xmlrpc-server.php | File | 205.74 KB | 0644 |
|
class-wp.php | File | 24.47 KB | 0644 |
|
class.wp-dependencies.php | File | 12.57 KB | 0644 |
|
class.wp-scripts.php | File | 18.04 KB | 0644 |
|
class.wp-styles.php | File | 10.62 KB | 0644 |
|
comment-template.php | File | 92.5 KB | 0644 |
|
comment.php | File | 122.73 KB | 0644 |
|
compat.php | File | 11.46 KB | 0644 |
|
cron.php | File | 32.94 KB | 0644 |
|
date.php | File | 406 B | 0644 |
|
default-constants.php | File | 10.02 KB | 0644 |
|
default-filters.php | File | 26.8 KB | 0644 |
|
default-widgets.php | File | 2.07 KB | 0644 |
|
deprecated.php | File | 118.96 KB | 0644 |
|
embed-template.php | File | 341 B | 0644 |
|
embed.php | File | 46.9 KB | 0644 |
|
error-protection.php | File | 4.02 KB | 0644 |
|
feed-atom-comments.php | File | 5.32 KB | 0644 |
|
feed-atom.php | File | 3.03 KB | 0644 |
|
feed-rdf.php | File | 2.61 KB | 0644 |
|
feed-rss.php | File | 1.16 KB | 0644 |
|
feed-rss2-comments.php | File | 3.97 KB | 0644 |
|
feed-rss2.php | File | 3.71 KB | 0644 |
|
feed.php | File | 22.43 KB | 0644 |
|
formatting.php | File | 303 KB | 0644 |
|
functions.php | File | 232.42 KB | 0644 |
|
functions.wp-scripts.php | File | 13.07 KB | 0644 |
|
functions.wp-styles.php | File | 8.11 KB | 0644 |
|
general-template.php | File | 153.86 KB | 0644 |
|
http.php | File | 21.86 KB | 0644 |
|
kses.php | File | 61.88 KB | 0644 |
|
l10n.php | File | 55.35 KB | 0644 |
|
link-template.php | File | 141.8 KB | 0644 |
|
load.php | File | 47.58 KB | 0644 |
|
locale.php | File | 162 B | 0644 |
|
media-template.php | File | 58.93 KB | 0644 |
|
media.php | File | 163.75 KB | 0644 |
|
meta.php | File | 58.16 KB | 0644 |
|
ms-blogs.php | File | 24.58 KB | 0644 |
|
ms-default-constants.php | File | 4.6 KB | 0644 |
|
ms-default-filters.php | File | 6.34 KB | 0644 |
|
ms-deprecated.php | File | 20.63 KB | 0644 |
|
ms-files.php | File | 2.58 KB | 0644 |
|
ms-functions.php | File | 91.6 KB | 0644 |
|
ms-load.php | File | 19.32 KB | 0644 |
|
ms-network.php | File | 3.58 KB | 0644 |
|
ms-settings.php | File | 4.03 KB | 0644 |
|
ms-site.php | File | 42.49 KB | 0644 |
|
nav-menu-template.php | File | 22.75 KB | 0644 |
|
nav-menu.php | File | 40.86 KB | 0644 |
|
option.php | File | 72.77 KB | 0644 |
|
pluggable-deprecated.php | File | 6.12 KB | 0644 |
|
pluggable.php | File | 99.8 KB | 0644 |
|
plugin.php | File | 31.81 KB | 0644 |
|
post-formats.php | File | 6.91 KB | 0644 |
|
post-template.php | File | 61.94 KB | 0644 |
|
post-thumbnail-template.php | File | 9.02 KB | 0644 |
|
post.php | File | 250.46 KB | 0644 |
|
query.php | File | 34.96 KB | 0644 |
|
registration-functions.php | File | 200 B | 0644 |
|
registration.php | File | 200 B | 0644 |
|
rest-api.php | File | 83.51 KB | 0644 |
|
revision.php | File | 21.51 KB | 0644 |
|
rewrite.php | File | 17.63 KB | 0644 |
|
rss-functions.php | File | 255 B | 0644 |
|
rss.php | File | 22.44 KB | 0644 |
|
script-loader.php | File | 90.32 KB | 0644 |
|
session.php | File | 258 B | 0644 |
|
shortcodes.php | File | 20.92 KB | 0644 |
|
sitemaps.php | File | 3.16 KB | 0644 |
|
spl-autoload-compat.php | File | 441 B | 0644 |
|
taxonomy.php | File | 159.82 KB | 0644 |
|
template-loader.php | File | 2.94 KB | 0644 |
|
template.php | File | 21.02 KB | 0644 |
|
theme.php | File | 121.36 KB | 0644 |
|
update.php | File | 25.78 KB | 0644 |
|
user.php | File | 137.01 KB | 0644 |
|
vars.php | File | 5.68 KB | 0644 |
|
version.php | File | 766 B | 0644 |
|
widgets.php | File | 58.84 KB | 0644 |
|
wlwmanifest.xml | File | 1.02 KB | 0644 |
|
wp-db.php | File | 103.72 KB | 0644 |
|
wp-diff.php | File | 647 B | 0644 |
|