golden hour
/home/phakp/public_html/wp/wp-content/plugins/bbpress/includes/admin/tools
⬆️ Go Up
Upload
File/Folder
Size
Actions
common.php
22.68 KB
Del
OK
converter.php
2.18 KB
Del
OK
help.php
5.9 KB
Del
OK
repair.php
45.4 KB
Del
OK
reset.php
9.25 KB
Del
OK
upgrade.php
23.27 KB
Del
OK
Edit: common.php
<?php /** * bbPress Admin Tools Common * * @package bbPress * @subpackage Administration */ // Exit if accessed directly defined( 'ABSPATH' ) || exit; /** * Return the current admin repair tool page * * @since 2.6.0 bbPress (r6894) * * @return string */ function bbp_get_admin_repair_tool_page() { return sanitize_key( $_GET['page'] ); } /** * Return the current admin repair tool page ID * * @since 2.6.0 bbPress (r6894) * * @return string */ function bbp_get_admin_repair_tool_page_id() { // Get the page $page = bbp_get_admin_repair_tool_page(); // Maybe trim prefix off of page if ( ! empty( $page ) && ( 0 === strpos( $page, 'bbp-' ) ) ) { $page = str_replace( 'bbp-', '', $page ); } else { $page = ''; } return $page; } /** * Return a URL to the repair tool page * * @since 2.6.0 bbPress (r6894) * * @param array $args * * @return string */ function bbp_get_admin_repair_tool_page_url( $args = array() ) { // Parse arguments $r = wp_parse_args( $args, array( 'page' => bbp_get_admin_repair_tool_page() ) ); return add_query_arg( $r, admin_url( 'tools.php' ) ); } /** * Output the URL to run a specific repair tool * * @since 2.6.0 bbPress (r5885) * * @param string $component */ function bbp_admin_repair_tool_run_url( $component = array() ) { echo esc_url( bbp_get_admin_repair_tool_run_url( $component ) ); } /** * Return the URL to run a specific repair tool * * @since 2.6.0 bbPress (r5885) * * @param string $component */ function bbp_get_admin_repair_tool_run_url( $component = array() ) { // Page $page = ( 'repair' === $component['type'] ) ? 'bbp-repair' : 'bbp-upgrade'; // Arguments $args = array( 'page' => $page, 'action' => 'run', 'checked' => array( $component['id'] ) ); // Url $nonced = wp_nonce_url( bbp_get_admin_repair_tool_page_url( $args ), 'bbpress-do-counts' ); // Filter & return return apply_filters( 'bbp_get_admin_repair_tool_run_url', $nonced, $component ); } /** * Assemble the admin notices * * @since 2.0.0 bbPress (r2613) * * @param string|WP_Error $message A message to be displayed or {@link WP_Error} * @param string $class Optional. A class to be added to the message div * @param bool $is_dismissible Optional. True to dismiss, false to persist * * @return string The message HTML */ function bbp_admin_tools_feedback( $message, $class = false, $is_dismissible = true ) { return bbp_admin()->add_notice( $message, $class, $is_dismissible ); } /** * Handle the processing and feedback of the admin tools page * * @since 2.0.0 bbPress (r2613) * */ function bbp_admin_repair_handler() { // Bail if not an actionable request if ( ! bbp_is_get_request() ) { return; } // Get the current action or bail if ( ! empty( $_GET['action'] ) ) { $action = sanitize_key( $_GET['action'] ); } elseif ( ! empty( $_GET['action2'] ) ) { $action = sanitize_key( $_GET['action2'] ); } else { return; } // Bail if not running an action if ( 'run' !== $action ) { return; } check_admin_referer( 'bbpress-do-counts' ); // Parse list of checked repairs $checked = ! empty( $_GET['checked'] ) ? array_map( 'sanitize_key', $_GET['checked'] ) : array(); // Flush all caches before running tools wp_cache_flush(); // Get the list $list = bbp_get_admin_repair_tools(); // Stores messages $messages = array(); // Run through checked repair tools if ( count( $checked ) ) { foreach ( $checked as $item_id ) { if ( isset( $list[ $item_id ] ) && is_callable( $list[ $item_id ]['callback'] ) ) { $messages[] = call_user_func( $list[ $item_id ]['callback'] ); // Remove from pending bbp_remove_pending_upgrade( $item_id ); } } } // Feedback if ( count( $messages ) ) { foreach ( $messages as $message ) { bbp_admin_tools_feedback( $message[1] ); } } // Flush all caches after running tools wp_cache_flush(); } /** * Get the array of available repair tools * * @since 2.6.0 bbPress (r5885) * * @param string $type repair|upgrade The type of tools to get. Default empty for all tools. * @return array */ function bbp_get_admin_repair_tools( $type = '' ) { // Get tools array $tools = ! empty( bbp_admin()->tools ) ? bbp_admin()->tools : array(); // Maybe limit to type (otherwise return all tools) if ( ! empty( $type ) ) { $tools = wp_list_filter( bbp_admin()->tools, array( 'type' => $type ) ); } // Filter & return return (array) apply_filters( 'bbp_get_admin_repair_tools', $tools, $type ); } /** * Return array of components from the array of registered tools * * @since 2.5.0 bbPress (r5885) * * @return array */ function bbp_get_admin_repair_tool_registered_components() { // Default return value $retval = array(); // Get tools $tools = bbp_get_admin_repair_tools( bbp_get_admin_repair_tool_page_id() ); // Loop through tools if ( ! empty( $tools ) ) { $plucked = wp_list_pluck( $tools, 'components' ); // Loop through components if ( count( $plucked ) ) { foreach ( $plucked as $components ) { foreach ( $components as $component ) { // Skip if already in array if ( in_array( $component, $retval, true ) ) { continue; } // Add component to the array $retval[] = $component; } } } } // Filter & return return (array) apply_filters( 'bbp_get_admin_repair_tool_registered_components', $retval ); } /** * Output the repair list search form * * @since 2.6.0 bbPress (r5885) */ function bbp_admin_repair_list_search_form() { ?> <p class="search-box"> <label class="screen-reader-text" for="bbp-repair-search-input"><?php esc_html_e( 'Search Tools:', 'bbpress' ); ?></label> <input type="search" id="bbp-repair-search-input" name="s" value="<?php _admin_search_query(); ?>"> <input type="submit" id="search-submit" class="button" value="<?php esc_html_e( 'Search Tools', 'bbpress' ); ?>"> </p> <?php } /** * Output a select drop-down of components to filter by * * @since 2.5.0 bbPress (r5885) */ function bbp_admin_repair_list_components_filter() { // Sanitize component value, if exists $selected = ! empty( $_GET['components'] ) ? sanitize_key( $_GET['components'] ) : ''; // Get registered components $components = bbp_get_admin_repair_tool_registered_components(); // Bail if no components if ( empty( $components ) ) { return; } ?> <label class="screen-reader-text" for="components"><?php esc_html_e( 'Filter by Component', 'bbpress' ); ?></label> <select name="components" id="components" class="postform"> <option value="" <?php selected( $selected, false ); ?>><?php esc_html_e( 'All Components', 'bbpress' ); ?></option> <?php foreach ( $components as $component ) : ?> <option class="level-0" value="<?php echo esc_attr( $component ); ?>" <?php selected( $selected, $component ); ?>><?php echo esc_html( bbp_admin_repair_tool_translate_component( $component ) ); ?></option> <?php endforeach; ?> </select> <?php } /** * Return array of versions from the array of registered tools * * @since 2.6.0 bbPress (r6894) * * @return array */ function bbp_get_admin_repair_tool_registered_versions() { // Default return value $retval = array(); // Get tools $tools = bbp_get_admin_repair_tools( bbp_get_admin_repair_tool_page_id() ); // Loop through tools if ( ! empty( $tools ) ) { $plucked = wp_list_pluck( $tools, 'version' ); // Loop through components if ( count( $plucked ) ) { foreach ( $plucked as $versions ) { // Skip if empty if ( empty( $versions ) ) { continue; // Cast to array if string } elseif ( is_string( $versions ) ) { $versions = (array) $versions; } // Loop through versions foreach ( $versions as $version ) { // Skip if already in array if ( in_array( $version, $retval, true ) ) { continue; } // Add component to the array $retval[] = $version; } } } } // Filter & return return (array) apply_filters( 'bbp_get_admin_repair_tool_registered_versions', $retval ); } /** * Output a select drop-down of versions to filter by * * @since 2.5.0 bbPress (r6894) */ function bbp_admin_repair_list_versions_filter() { // Sanitize component value, if exists $selected = ! empty( $_GET['version'] ) ? sanitize_text_field( $_GET['version'] ) : ''; // Get registered components $versions = bbp_get_admin_repair_tool_registered_versions(); // Bail if no components if ( empty( $versions ) ) { return; } ?> <label class="screen-reader-text" for="version"><?php esc_html_e( 'Filter by Version', 'bbpress' ); ?></label> <select name="version" id="version" class="postform"> <option value="" <?php selected( $selected, false ); ?>><?php esc_html_e( 'All Versions', 'bbpress' ); ?></option> <?php foreach ( $versions as $version ) : ?> <option class="level-0" value="<?php echo esc_attr( $version ); ?>" <?php selected( $selected, $version ); ?>><?php echo esc_html( bbp_admin_repair_tool_translate_version( $version ) ); ?></option> <?php endforeach; ?> </select> <?php } /** Translations **************************************************************/ /** * Maybe translate a repair tool overhead name * * @since 2.6.0 bbPress (r6177) * * @param string $overhead * @return string */ function bbp_admin_repair_tool_translate_overhead( $overhead = '' ) { // Get the name of the component switch ( $overhead ) { case 'low' : $name = esc_html__( 'Low', 'bbpress' ); break; case 'medium' : $name = esc_html__( 'Medium', 'bbpress' ); break; case 'high' : $name = esc_html__( 'High', 'bbpress' ); break; default : $name = ucwords( $overhead ); break; } return $name; } /** * Maybe translate a repair tool component name * * @since 2.6.0 bbPress (r5885) * * @param string $component * @return string */ function bbp_admin_repair_tool_translate_component( $component = '' ) { // Get the name of the component switch ( $component ) { case 'bbp_user' : $name = esc_html__( 'Users', 'bbpress' ); break; case bbp_get_forum_post_type() : $name = esc_html__( 'Forums', 'bbpress' ); break; case bbp_get_topic_post_type() : $name = esc_html__( 'Topics', 'bbpress' ); break; case bbp_get_reply_post_type() : $name = esc_html__( 'Replies', 'bbpress' ); break; case bbp_get_topic_tag_tax_id() : $name = esc_html__( 'Topic Tags', 'bbpress' ); break; case bbp_get_user_rewrite_id() : $name = esc_html__( 'Users', 'bbpress' ); break; case bbp_get_user_favorites_rewrite_id() : $name = esc_html__( 'Favorites', 'bbpress' ); break; case bbp_get_user_subscriptions_rewrite_id() : $name = esc_html__( 'Subscriptions', 'bbpress' ); break; case bbp_get_user_engagements_rewrite_id() : $name = esc_html__( 'Engagements', 'bbpress' ); break; default : $name = ucwords( $component ); break; } return $name; } /** * Maybe translate a repair tool overhead name * * @since 2.6.0 bbPress (r6894) * * @param string $version * @return string */ function bbp_admin_repair_tool_translate_version( $version = '' ) { // Get the version switch ( $version ) { case '2.5' : case '2.5.0' : $name = esc_html__( '2.5.0', 'bbpress' ); break; case '2.6' : case '2.6.0' : $name = esc_html__( '2.6.0', 'bbpress' ); break; default : $name = sanitize_text_field( $version ); break; } return $name; } /** Lists *********************************************************************/ /** * Get the array of the repairs to show in a list table. * * Uses known filters to reduce the registered results down to the most finite * set of tools. * * @since 2.0.0 bbPress (r2613) * * @return array Repair list of options */ function bbp_admin_repair_list( $type = 'repair' ) { // Define empty array $repair_list = array(); // Get the available tools $list = bbp_get_admin_repair_tools( $type ); // Get pending upgrades $pending = bbp_get_pending_upgrades(); // Search $search = ! empty( $_GET['s'] ) ? stripslashes( $_GET['s'] ) : ''; // Status $status = ! empty( $_GET['status'] ) ? sanitize_key( $_GET['status'] ) : ''; // Overhead $overhead = ! empty( $_GET['overhead'] ) ? sanitize_key( $_GET['overhead'] ) : ''; // Component $component = ! empty( $_GET['components'] ) ? sanitize_key( $_GET['components'] ) : ''; // Version $version = ! empty( $_GET['version'] ) ? sanitize_text_field( $_GET['version'] ) : ''; // Orderby $orderby = ! empty( $_GET['orderby'] ) ? sanitize_key( $_GET['orderby'] ) : 'priority'; // Order $order = ! empty( $_GET['order'] ) && in_array( strtolower( $_GET['order'] ), array( 'asc', 'desc' ), true ) ? strtolower( $_GET['order'] ) : 'asc'; // Overhead filter if ( ! empty( $overhead ) ) { $list = wp_list_filter( $list, array( 'overhead' => $overhead ) ); } if ( count( $list ) ) { // Loop through and key by priority for sorting foreach ( $list as $id => $tool ) { // Status filter if ( ! empty( $status ) && ( 'pending' === $status ) ) { if ( ! in_array( $id, (array) $pending, true ) ) { continue; } } // Component filter if ( ! empty( $component ) ) { if ( ! in_array( $component, (array) $tool['components'], true ) ) { continue; } } // Version filter if ( ! empty( $version ) ) { if ( ! in_array( $version, (array) $tool['version'], true ) ) { continue; } } // Search if ( ! empty( $search ) ) { if ( ! strstr( strtolower( $tool['title'] ), strtolower( $search ) ) ) { continue; } } // Add to repair list $repair_list[ $tool['priority'] ] = array( 'id' => sanitize_key( $id ), 'type' => $tool['type'], 'title' => $tool['title'], 'priority' => $tool['priority'], 'description' => $tool['description'], 'callback' => $tool['callback'], 'overhead' => $tool['overhead'], 'version' => $tool['version'], 'components' => $tool['components'] ); } } // Sort $retval = wp_list_sort( $repair_list, $orderby, $order, true ); // Filter & return return (array) apply_filters( 'bbp_repair_list', $retval ); } /** * Get filter links for components for a specific admin repair tool * * @since 2.6.0 bbPress (r5885) * * @param array $item * @return array */ function bbp_get_admin_repair_tool_components( $item = array() ) { // Get the tools URL $tools_url = bbp_get_admin_repair_tool_page_url(); // Define links array $links = array(); $components = ! empty( $item['components'] ) ? (array) $item['components'] : array(); // Loop through tool components and build links if ( count( $components ) ) { foreach ( $components as $component ) { $args = array( 'components' => $component ); $filter_url = add_query_arg( $args, $tools_url ); $name = bbp_admin_repair_tool_translate_component( $component ); $links[] = '<a href="' . esc_url( $filter_url ) . '">' . esc_html( $name ) . '</a>'; } // No components, so return a dash } else { $links[] = '—'; } // Filter & return return (array) apply_filters( 'bbp_get_admin_repair_tool_components', $links, $item ); } /** * Get filter links for versions for a specific admin repair tool * * @since 2.6.0 bbPress (r6894) * * @param array $item * @return array */ function bbp_get_admin_repair_tool_version( $item = array() ) { // Get the tools URL $tools_url = bbp_get_admin_repair_tool_page_url(); // Define links array $links = array(); $versions = ! empty( $item['version'] ) ? (array) $item['version'] : array(); // Loop through tool versions and build links if ( count( $versions ) ) { foreach ( $versions as $version ) { $args = array( 'version' => $version ); $filter_url = add_query_arg( $args, $tools_url ); $name = bbp_admin_repair_tool_translate_version( $version ); $links[] = '<a href="' . esc_url( $filter_url ) . '">' . esc_html( $name ) . '</a>'; } // No versions, so return a dash } else { $links[] = '—'; } // Filter & return return (array) apply_filters( 'bbp_get_admin_repair_tool_version', $links, $item ); } /** * Get filter links for overhead for a specific admin repair tool * * @since 2.6.0 bbPress (r5885) * * @param array $item * @return array */ function bbp_get_admin_repair_tool_overhead( $item = array() ) { // Get the tools URL $tools_url = bbp_get_admin_repair_tool_page_url(); // Define links array $links = array(); $overheads = ! empty( $item['overhead'] ) ? (array) $item['overhead'] : array(); // Loop through tool overhead and build links if ( count( $overheads ) ) { foreach ( $overheads as $overhead ) { $args = array( 'overhead' => $overhead ); $filter_url = add_query_arg( $args, $tools_url ); $name = bbp_admin_repair_tool_translate_overhead( $overhead ); $links[] = '<a href="' . esc_url( $filter_url ) . '">' . esc_html( $name ) . '</a>'; } // No overhead, so return a single dash } else { $links[] = '—'; } // Filter & return return (array) apply_filters( 'bbp_get_admin_repair_tool_overhead', $links, $item ); } /** Overhead ******************************************************************/ /** * Output filter links for overheads for a specific admin repair tool * * @since 2.6.0 bbPress (r5885) * * @param array $args */ function bbp_admin_repair_tool_overhead_filters( $args = array() ) { echo bbp_get_admin_repair_tool_overhead_filters( $args ); } /** * Get filter links for overheads for a specific admin repair tool * * @since 2.6.0 bbPress (r5885) * * @param array $args * @return array */ function bbp_get_admin_repair_tool_overhead_filters( $args = array() ) { // Parse args $r = bbp_parse_args( $args, array( 'before' => '<ul class="subsubsub">', 'after' => '</ul>', 'link_before' => '<li>', 'link_after' => '</li>', 'count_before' => ' <span class="count">(', 'count_after' => ')</span>', 'sep' => ' | ', // Retired, use 'sep' instead 'separator' => false ), 'get_admin_repair_tool_overhead_filters' ); /** * Necessary for backwards compatibility * @see https://bbpress.trac.wordpress.org/ticket/2900 */ if ( ! empty( $r['separator'] ) ) { $r['sep'] = $r['separator']; } // Count the tools $tools = bbp_get_admin_repair_tools( bbp_get_admin_repair_tool_page_id() ); // Get the tools URL $tools_url = bbp_get_admin_repair_tool_page_url(); // Define arrays $overheads = $links = array(); // Loop through tools and count overheads if ( count( $tools ) ) { foreach ( $tools as $tool ) { // Get the overhead level $overhead = $tool['overhead']; // Set an empty count if ( empty( $overheads[ $overhead ] ) ) { $overheads[ $overhead ] = 0; } // Bump the overhead count $overheads[ $overhead ]++; } } // Get the current overhead, if any $selected = ! empty( $_GET['overhead'] ) ? sanitize_key( $_GET['overhead'] ) : ''; // Create the "All" link $current = empty( $selected ) ? 'current' : ''; $links[] = $r['link_before'] . '<a href="' . esc_url( $tools_url ) . '" class="' . esc_attr( $current ) . '">' . sprintf( esc_html__( 'All %s', 'bbpress' ), $r['count_before'] . count( $tools ) . $r['count_after'] ) . '</a>' . $r['link_after']; // Loop through overheads and created links if ( count( $overheads ) ) { // Sort ksort( $overheads ); // Loop through overheads and build filter foreach ( $overheads as $overhead => $count ) { // Build the filter URL $key = sanitize_key( $overhead ); $args = array( 'overhead' => $key ); $filter_url = add_query_arg( $args, $tools_url ); // Figure out separator and active class $current = ( $selected === $key ) ? 'current' : ''; // Counts to show if ( ! empty( $count ) ) { $overhead_count = $r['count_before'] . $count . $r['count_after']; } // Build the link $links[] = $r['link_before'] . '<a href="' . esc_url( $filter_url ) . '" class="' . esc_attr( $current ) . '">' . bbp_admin_repair_tool_translate_overhead( $overhead ) . $overhead_count . '</a>' . $r['link_after']; } } // Surround output with before & after strings $output = $r['before'] . implode( $r['sep'], $links ) . $r['after']; // Filter & return return apply_filters( 'bbp_get_admin_repair_tool_overhead_filters', $output, $r, $args ); } /** Pending ******************************************************************/ /** * Output filter links for statuses * * @since 2.6.0 bbPress (r6925) * * @param array $args */ function bbp_admin_repair_tool_status_filters( $args = array() ) { echo bbp_get_admin_repair_tool_status_filters( $args ); } /** * Get filter links for statuses * * @since 2.6.0 bbPress (r5885) * * @param array $args * @return array */ function bbp_get_admin_repair_tool_status_filters( $args = array() ) { // Parse args $r = bbp_parse_args( $args, array( 'before' => '<ul class="subsubsub">', 'after' => '</ul>', 'link_before' => '<li>', 'link_after' => '</li>', 'count_before' => ' <span class="count">(', 'count_after' => ')</span>', 'sep' => ' | ', // Retired, use 'sep' instead 'separator' => false ), 'get_admin_repair_tool_status_filters' ); /** * Necessary for backwards compatibility * @see https://bbpress.trac.wordpress.org/ticket/2900 */ if ( ! empty( $r['separator'] ) ) { $r['sep'] = $r['separator']; } // Get the type of tool $type = bbp_get_admin_repair_tool_page_id(); // Count the tools $tools = bbp_get_admin_repair_tools( $type ); // Get the tools URL $tools_url = bbp_get_admin_repair_tool_page_url(); // Get pending upgrades $pending = bbp_get_pending_upgrades( $type ); // Get the current status, if any $selected = ! empty( $_GET['status'] ) ? sanitize_key( $_GET['status'] ) : ''; // Nothing is current? $all_current = empty( $selected ) ? 'current' : ''; // Pending is current? $pending_current = ( 'pending' === $selected ) ? 'current' : ''; // Sort ksort( $pending ); // Build the filter URL $filter_url = add_query_arg( array( 'status' => 'pending' ), $tools_url ); // Count HTML $all_count = $r['count_before'] . count( $tools ) . $r['count_after']; $pending_count = $r['count_before'] . count( $pending ) . $r['count_after']; // Define links $links = array( $r['link_before'] . '<a href="' . esc_url( $tools_url ) . '" class="' . esc_attr( $all_current ) . '">' . sprintf( esc_html__( 'All %s', 'bbpress' ), $all_count ) . '</a>' . $r['link_after'], $r['link_before'] . '<a href="' . esc_url( $filter_url ) . '" class="' . esc_attr( $pending_current ) . '">' . sprintf( esc_html__( 'Pending %s', 'bbpress' ), $pending_count ) . '</a>' . $r['link_after'] ); // Surround output with before & after strings $output = $r['before'] . implode( $r['sep'], $links ) . $r['after']; // Filter & return return apply_filters( 'bbp_get_admin_repair_tool_status_filters', $output, $r, $args ); }
Save