r_key parameter. * * @since 2.1.0 bbPress (r3839) * * @param string|array $args Value to merge with $defaults * @param array $defaults Array that serves as the defaults. * @param string $filter_key String to key the filters from * @return array Merged user defined values with defaults. */ function bbp_parse_args( $args, $defaults = array(), $filter_key = '' ) { // Setup a temporary array from $args if ( is_object( $args ) ) { $r = get_object_vars( $args ); } elseif ( is_array( $args ) ) { $r =& $args; } else { wp_parse_str( $args, $r ); } // Passively filter the args before the parse if ( ! empty( $filter_key ) ) { $r = apply_filters( "bbp_before_{$filter_key}_parse_args", $r, $args, $defaults ); } // Parse if ( is_array( $defaults ) && ! empty( $defaults ) ) { $r = array_merge( $defaults, $r ); } // Aggressively filter the args after the parse if ( ! empty( $filter_key ) ) { $r = apply_filters( "bbp_after_{$filter_key}_parse_args", $r, $args, $defaults ); } // Return the parsed results return $r; } /** * Adds ability to include or exclude specific post_parent ID's * * @since 2.0.0 bbPress (r2996) * * @deprecated 2.5.8 bbPress (r5814) * * @global WP $wp * @param string $where * @param WP_Query $object * @return string */ function bbp_query_post_parent__in( $where, $object = '' ) { global $wp; // Noop if WP core supports this already if ( in_array( 'post_parent__in', $wp->private_query_vars, true ) ) { return $where; } // Bail if no object passed if ( empty( $object ) ) { return $where; } // Only 1 post_parent so return $where if ( is_numeric( $object->query_vars['post_parent'] ) ) { return $where; } // Get the DB $bbp_db = bbp_db(); // Including specific post_parent's if ( ! empty( $object->query_vars['post_parent__in'] ) ) { $ids = implode( ',', wp_parse_id_list( $object->query_vars['post_parent__in'] ) ); $where .= " AND {$bbp_db->posts}.post_parent IN ($ids)"; // Excluding specific post_parent's } elseif ( ! empty( $object->query_vars['post_parent__not_in'] ) ) { $ids = implode( ',', wp_parse_id_list( $object->query_vars['post_parent__not_in'] ) ); $where .= " AND {$bbp_db->posts}.post_parent NOT IN ($ids)"; } // Return possibly modified $where return $where; } /** * Query the DB and get the last public post_id that has parent_id as post_parent * * @since 2.0.0 bbPress (r2868) * @since 2.6.0 bbPress (r5954) Replace direct queries with WP_Query() objects * * @param int $parent_id Parent id. * @param string $post_type Post type. Defaults to 'post'. * @return int The last active post_id */ function bbp_get_public_child_last_id( $parent_id = 0, $post_type = 'post' ) { // Bail if nothing passed if ( empty( $parent_id ) ) { return false; } // Which statuses switch ( $post_type ) { // Forum case bbp_get_forum_post_type() : $post_status = bbp_get_public_forum_statuses(); break; // Topic case bbp_get_topic_post_type() : $post_status = bbp_get_public_topic_statuses(); break; // Reply case bbp_get_reply_post_type() : default : $post_status = bbp_get_public_reply_statuses(); break; } $query = new WP_Query( array( 'fields' => 'ids', 'post_parent' => $parent_id, 'post_status' => $post_status, 'post_type' => $post_type, 'posts_per_page' => 1, 'orderby' => array( 'post_date' => 'DESC', 'ID' => 'DESC' ), // Performance 'suppress_filters' => true, 'update_post_term_cache' => false, 'update_post_meta_cache' => false, 'ignore_sticky_posts' => true, 'no_found_rows' => true ) ); $child_id = array_shift( $query->posts ); unset( $query ); // Filter & return return (int) apply_filters( 'bbp_get_public_child_last_id', $child_id, $parent_id, $post_type ); } /** * Query the database for child counts, grouped by type & status * * @since 2.6.0 bbPress (r6826) * * @param int $parent_id */ function bbp_get_child_counts( $parent_id = 0 ) { // Create cache key $parent_id = absint( $parent_id ); $key = md5( serialize( array( 'parent_id' => $parent_id, 'post_type' => bbp_get_post_types() ) ) ); $last_changed = wp_cache_get_last_changed( 'bbpress_posts' ); $cache_key = "bbp_child_counts:{$key}:{$last_changed}"; // Check for cache and set if needed $retval = wp_cache_get( $cache_key, 'bbpress_posts' ); if ( false === $retval ) { // Setup the DB & query $bbp_db = bbp_db(); $sql = "SELECT p.post_type AS type, p.post_status AS status, COUNT( * ) AS count FROM {$bbp_db->posts} AS p LEFT JOIN {$bbp_db->postmeta} AS pm ON p.ID = pm.post_id AND pm.meta_key = %s WHERE pm.meta_value = %s GROUP BY p.post_status, p.post_type"; // Get prepare vars $post_type = get_post_type( $parent_id ); $meta_key = "_bbp_{$post_type}_id"; // Prepare & get results $query = $bbp_db->prepare( $sql, $meta_key, $parent_id ); $results = $bbp_db->get_results( $query, ARRAY_A ); // Setup return value $retval = wp_list_pluck( $results, 'type', 'type' ); $statuses = get_post_stati(); // Loop through results foreach ( $results as $row ) { // Setup empties if ( ! is_array( $retval[ $row['type'] ] ) ) { $retval[ $row['type'] ] = array_fill_keys( $statuses, 0 ); } // Set statuses $retval[ $row['type'] ][ $row['status'] ] = bbp_number_not_negative( $row['count'] ); } // Always cache the results wp_cache_set( $cache_key, $retval, 'bbpress_posts' ); } // Make sure results are INTs return (array) apply_filters( 'bbp_get_child_counts', $retval, $parent_id ); } /** * Filter a list of child counts, from `bbp_get_child_counts()` * * @since 2.6.0 bbPress (r6826) * * @param int $parent_id ID of post to get child counts from * @param array $types Optional. An array of post types to filter by * @param array $statuses Optional. An array of post statuses to filter by * * @return array A list of objects or object fields. */ function bbp_filter_child_counts_list( $parent_id = 0, $types = array( 'post' ), $statuses = array() ) { // Setup local vars $retval = array(); $types = array_flip( (array) $types ); $statuses = array_flip( (array) $statuses ); $counts = bbp_get_child_counts( $parent_id ); // Loop through counts by type foreach ( $counts as $type => $type_counts ) { // Skip if not this type if ( ! isset( $types[ $type ] ) ) { continue; } // Maybe filter statuses if ( ! empty( $statuses ) ) { $type_counts = array_intersect_key( $type_counts, $statuses ); } // Add type counts to return array $retval[ $type ] = $type_counts; } // Filter & return return (array) apply_filters( 'bbp_filter_child_counts_list', $retval, $parent_id, $types, $statuses ); } /** * Query the DB and get a count of public children * * @since 2.0.0 bbPress (r2868) * @since 2.6.0 bbPress (r5954) Replace direct queries with WP_Query() objects * * @param int $parent_id Parent id. * @param string $post_type Post type. Defaults to 'post'. * @return int The number of children */ function bbp_get_public_child_count( $parent_id = 0, $post_type = 'post' ) { // Bail if nothing passed if ( empty( $post_type ) ) { return false; } // Which statuses switch ( $post_type ) { // Forum case bbp_get_forum_post_type() : $post_status = bbp_get_public_forum_statuses(); break; // Topic case bbp_get_topic_post_type() : $post_status = bbp_get_public_topic_statuses(); break; // Reply case bbp_get_reply_post_type() : default : $post_status = bbp_get_public_reply_statuses(); break; } // Get counts $counts = bbp_filter_child_counts_list( $parent_id, $post_type, $post_status ); $child_count = isset( $counts[ $post_type ] ) ? bbp_number_not_negative( array_sum( array_values( $counts[ $post_type ] ) ) ) : 0; // Filter & return return (int) apply_filters( 'bbp_get_public_child_count', $child_count, $parent_id, $post_type ); } /** * Query the DB and get a count of public children * * @since 2.0.0 bbPress (r2868) * @since 2.6.0 bbPress (r5954) Replace direct queries with WP_Query() objects * * @param int $parent_id Parent id. * @param string $post_type Post type. Defaults to 'post'. * @return int The number of children */ function bbp_get_non_public_child_count( $parent_id = 0, $post_type = 'post' ) { // Bail if nothing passed if ( empty( $parent_id ) || empty( $post_type ) ) { return false; } // Which statuses switch ( $post_type ) { // Forum case bbp_get_forum_post_type() : $post_status = bbp_get_non_public_forum_statuses(); break; // Topic case bbp_get_topic_post_type() : $post_status = bbp_get_non_public_topic_statuses(); break; // Reply case bbp_get_reply_post_type() : $post_status = bbp_get_non_public_reply_statuses(); break; // Any default : $post_status = bbp_get_public_status_id(); break; } // Get counts $counts = bbp_filter_child_counts_list( $parent_id, $post_type, $post_status ); $child_count = isset( $counts[ $post_type ] ) ? bbp_number_not_negative( array_sum( array_values( $counts[ $post_type ] ) ) ) : 0; // Filter & return return (int) apply_filters( 'bbp_get_non_public_child_count', $child_count, $parent_id, $post_type ); } /** * Query the DB and get the child id's of public children * * @since 2.0.0 bbPress (r2868) * @since 2.6.0 bbPress (r5954) Replace direct queries with WP_Query() objects * * @param int $parent_id Parent id. * @param string $post_type Post type. Defaults to 'post'. * * @return array The array of children */ function bbp_get_public_child_ids( $parent_id = 0, $post_type = 'post' ) { // Bail if nothing passed if ( empty( $parent_id ) || empty( $post_type ) ) { return array(); } // Which statuses switch ( $post_type ) { // Forum case bbp_get_forum_post_type() : $post_status = bbp_get_public_forum_statuses(); break; // Topic case bbp_get_topic_post_type() : $post_status = bbp_get_public_topic_statuses(); break; // Reply case bbp_get_reply_post_type() : default : $post_status = bbp_get_public_reply_statuses(); break; } $query = new WP_Query( array( 'fields' => 'ids', 'post_parent' => $parent_id, 'post_status' => $post_status, 'post_type' => $post_type, 'posts_per_page' => -1, 'orderby' => array( 'post_date' => 'DESC', 'ID' => 'DESC' ), // Performance 'nopaging' => true, 'suppress_filters' => true, 'update_post_term_cache' => false, 'update_post_meta_cache' => false, 'ignore_sticky_posts' => true, 'no_found_rows' => true ) ); $child_ids = ! empty( $query->posts ) ? $query->posts : array(); unset( $query ); // Filter & return return (array) apply_filters( 'bbp_get_public_child_ids', $child_ids, $parent_id, $post_type ); } /** * Query the DB and get the child id's of all children * * @since 2.0.0 bbPress (r3325) * * @param int $parent_id Parent id * @param string $post_type Post type. Defaults to 'post' * * @return array The array of children */ function bbp_get_all_child_ids( $parent_id = 0, $post_type = 'post' ) { // Bail if nothing passed if ( empty( $parent_id ) || empty( $post_type ) ) { return array(); } // Make cache key $not_in = array( 'draft', 'future' ); $key = md5( serialize( array( 'parent_id' => $parent_id, 'post_type' => $post_type, 'post_status' => $not_in ) ) ); // Check last changed $last_changed = wp_cache_get_last_changed( 'bbpress_posts' ); $cache_key = "bbp_child_ids:{$key}:{$last_changed}"; // Check for cache and set if needed $child_ids = wp_cache_get( $cache_key, 'bbpress_posts' ); // Not already cached if ( false === $child_ids ) { // Join post statuses to specifically exclude together $post_status = "'" . implode( "', '", $not_in ) . "'"; $bbp_db = bbp_db(); // Note that we can't use WP_Query here thanks to post_status assumptions $query = $bbp_db->prepare( "SELECT ID FROM {$bbp_db->posts} WHERE post_parent = %d AND post_status NOT IN ( {$post_status} ) AND post_type = %s ORDER BY ID DESC", $parent_id, $post_type ); $child_ids = (array) $bbp_db->get_col( $query ); // Always cache the results wp_cache_set( $cache_key, $child_ids, 'bbpress_posts' ); } // Make sure results are INTs $child_ids = wp_parse_id_list( $child_ids ); // Filter & return return (array) apply_filters( 'bbp_get_all_child_ids', $child_ids, $parent_id, $post_type ); } /** * Prime familial post caches. * * This function uses _prime_post_caches() to prepare the object cache for * imminent requests to post objects that aren't naturally cached by the primary * WP_Query calls themselves. Post author caches are also primed. * * This is triggered when a `update_post_family_cache` argument is set to true. * * Also see: bbp_update_post_author_caches() * * @since 2.6.0 bbPress (r6699) * * @param array $objects Array of objects, fresh from a query * * @return bool True if some IDs were cached */ function bbp_update_post_family_caches( $objects = array() ) { // Bail if no posts if ( empty( $objects ) ) { return false; } // Default value $post_ids = array(); // Filter the types of IDs to prime $ids = apply_filters( 'bbp_update_post_family_caches', array( '_bbp_last_active_id', '_bbp_last_reply_id', '_bbp_last_topic_id', '_bbp_reply_to' ), $objects ); // Get the last active IDs foreach ( $objects as $object ) { $object = get_post( $object ); // Skip if post ID is empty. if ( empty( $object->ID ) ) { continue; } // Meta IDs foreach ( $ids as $key ) { $post_ids[] = get_post_meta( $object->ID, $key, true ); } // This post ID is already cached, but the post author may not be $post_ids[] = $object->ID; } // Unique, non-zero values $post_ids = bbp_get_unique_array_values( $post_ids ); // Bail if no IDs to prime if ( empty( $post_ids ) ) { return false; } // Prime post caches _prime_post_caches( $post_ids, true, true ); // Prime post author caches bbp_update_post_author_caches( $post_ids ); // Return return true; } /** * Prime post author caches. * * This function uses cache_users() to prepare the object cache for * imminent requests to user objects that aren't naturally cached by the primary * WP_Query calls themselves. * * This is triggered when a `update_post_author_cache` argument is set to true. * * @since 2.6.0 bbPress (r6699) * * @param array $objects Array of objects, fresh from a query * * @return bool True if some IDs were cached */ function bbp_update_post_author_caches( $objects = array() ) { // Bail if no posts if ( empty( $objects ) ) { return false; } // Default value $user_ids = array(); // Get the user IDs (could use wp_list_pluck() if this is ever a bottleneck) foreach ( $objects as $object ) { $object = get_post( $object ); // Skip if post does not have an author ID. if ( empty( $object->post_author ) ) { continue; } // If post exists, add post author to the array. $user_ids[] = (int) $object->post_author; } // Unique, non-zero values $user_ids = bbp_get_unique_array_values( $user_ids ); // Bail if no IDs to prime if ( empty( $user_ids ) ) { return false; } // Try to prime user caches cache_users( $user_ids ); // Return return true; } /** Globals *******************************************************************/ /** * Get the unfiltered value of a global $post's key * * Used most frequently when editing a forum/topic/reply * * @since 2.1.0 bbPress (r3694) * * @param string $field Name of the key * @param string $context How to sanitize - raw|edit|db|display|attribute|js * @return string Field value */ function bbp_get_global_post_field( $field = 'ID', $context = 'edit' ) { // Get the post, and maybe get a field from it $post = get_post(); $retval = isset( $post->{$field} ) ? sanitize_post_field( $field, $post->{$field}, $post->ID, $context ) : ''; // Filter & return return apply_filters( 'bbp_get_global_post_field', $retval, $post, $field, $context ); } /** Nonces ********************************************************************/ /** * Makes sure the user requested an action from another page on this site. * * To avoid security exploits within the theme. * * @since 2.1.0 bbPress (r4022) * * @param string $action Action nonce * @param string $query_arg where to look for nonce in $_REQUEST */ function bbp_verify_nonce_request( $action = '', $query_arg = '_wpnonce' ) { /** Home URL **************************************************************/ // Parse home_url() into pieces to remove query-strings, strange characters, // and other funny things that plugins might to do to it. $parsed_home = parse_url( home_url( '/', ( is_ssl() ? 'https' : 'http' ) ) ); // Maybe include the port, if it's included if ( isset( $parsed_home['port'] ) ) { $parsed_host = $parsed_home['host'] . ':' . $parsed_home['port']; } else { $parsed_host = $parsed_home['host']; } // Set the home URL for use in comparisons $home_url = trim( strtolower( $parsed_home['scheme'] . '://' . $parsed_host . $parsed_home['path'] ), '/' ); /** Requested URL *********************************************************/ // Maybe include the port, if it's included in home_url() if ( isset( $parsed_home['port'] ) && false === strpos( $_SERVER['HTTP_HOST'], ':' ) ) { $request_host = $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT']; } else { $request_host = $_SERVER['HTTP_HOST']; } // Build the currently requested URL $scheme = bbp_get_url_scheme(); $requested_url = strtolower( $scheme . $request_host . $_SERVER['REQUEST_URI'] ); /** Look for match ********************************************************/ /** * Filters the requested URL being nonce-verified. * * Useful for configurations like reverse proxying. * * @since 2.2.0 bbPress (r4361) * * @param string $requested_url The requested URL. */ $matched_url = apply_filters( 'bbp_verify_nonce_request_url', $requested_url ); // Check the nonce $result = isset( $_REQUEST[ $query_arg ] ) ? wp_verify_nonce( $_REQUEST[ $query_arg ], $action ) : false; // Nonce check failed if ( empty( $result ) || empty( $action ) || ( strpos( $matched_url, $home_url ) !== 0 ) ) { $result = false; } /** * Fires at the end of the nonce verification check. * * @since 2.1.0 bbPress (r4023) * * @param string $action Action nonce. * @param bool $result Boolean result of nonce verification. */ do_action( 'bbp_verify_nonce_request', $action, $result ); return $result; } /** Feeds *********************************************************************/ /** * This function is hooked into the WordPress 'request' action and is * responsible for sniffing out the query vars and serving up RSS2 feeds if * the stars align and the user has requested a feed of any bbPress type. * * @since 2.0.0 bbPress (r3171) * * @param array $query_vars * @return array */ function bbp_request_feed_trap( $query_vars = array() ) { // Looking at a feed if ( isset( $query_vars['feed'] ) ) { // Forum/Topic/Reply Feed if ( isset( $query_vars['post_type'] ) ) { // Matched post type $post_type = false; // Post types to check $post_types = array( bbp_get_forum_post_type(), bbp_get_topic_post_type(), bbp_get_reply_post_type() ); // Cast query vars as array outside of foreach loop $qv_array = (array) $query_vars['post_type']; // Check if this query is for a bbPress post type foreach ( $post_types as $bbp_pt ) { if ( in_array( $bbp_pt, $qv_array, true ) ) { $post_type = $bbp_pt; break; } } // Looking at a bbPress post type if ( ! empty( $post_type ) ) { // Supported select query vars $select_query_vars = array( 'p' => false, 'name' => false, $post_type => false, ); // Setup matched variables to select foreach ( $query_vars as $key => $value ) { if ( isset( $select_query_vars[ $key ] ) ) { $select_query_vars[ $key ] = $value; } } // Remove any empties $select_query_vars = array_filter( $select_query_vars ); // What bbPress post type are we looking for feeds on? switch ( $post_type ) { // Forum case bbp_get_forum_post_type() : // Define local variable(s) $meta_query = array(); // Single forum if ( ! empty( $select_query_vars ) ) { // Load up our own query // phpcs:ignore WordPress.WP.DiscouragedFunctions.query_posts_query_posts query_posts( array_merge( array( 'post_type' => bbp_get_forum_post_type(), 'feed' => true ), $select_query_vars ) ); // Restrict to specific forum ID $meta_query = array( array( 'key' => '_bbp_forum_id', 'value' => bbp_get_forum_id(), 'type' => 'NUMERIC', 'compare' => '=' ) ); } // Only forum replies if ( ! empty( $_GET['type'] ) && ( bbp_get_reply_post_type() === $_GET['type'] ) ) { // The query $the_query = array( 'author' => 0, 'feed' => true, 'post_type' => bbp_get_reply_post_type(), 'post_parent' => 'any', 'post_status' => bbp_get_public_reply_statuses(), 'posts_per_page' => bbp_get_replies_per_rss_page(), 'order' => 'DESC', 'meta_query' => $meta_query ); // Output the feed bbp_display_replies_feed_rss2( $the_query ); // Only forum topics } elseif ( ! empty( $_GET['type'] ) && ( bbp_get_topic_post_type() === $_GET['type'] ) ) { // The query $the_query = array( 'author' => 0, 'feed' => true, 'post_type' => bbp_get_topic_post_type(), 'post_parent' => bbp_get_forum_id(), 'post_status' => bbp_get_public_topic_statuses(), 'posts_per_page' => bbp_get_topics_per_rss_page(), 'order' => 'DESC' ); // Output the feed bbp_display_topics_feed_rss2( $the_query ); // All forum topics and replies } else { // Exclude private/hidden forums if not looking at single if ( empty( $select_query_vars ) ) { $meta_query = array( bbp_exclude_forum_ids( 'meta_query' ) ); } // The query $the_query = array( 'author' => 0, 'feed' => true, 'post_type' => array( bbp_get_reply_post_type(), bbp_get_topic_post_type() ), 'post_parent' => 'any', 'post_status' => bbp_get_public_topic_statuses(), 'posts_per_page' => bbp_get_replies_per_rss_page(), 'order' => 'DESC', 'meta_query' => $meta_query ); // Output the feed bbp_display_replies_feed_rss2( $the_query ); } break; // Topic feed - Show replies case bbp_get_topic_post_type() : // Single topic if ( ! empty( $select_query_vars ) ) { // Load up our own query // phpcs:ignore WordPress.WP.DiscouragedFunctions.query_posts_query_posts query_posts( array_merge( array( 'post_type' => bbp_get_topic_post_type(), 'feed' => true ), $select_query_vars ) ); // Output the feed bbp_display_replies_feed_rss2( array( 'feed' => true ) ); // All topics } else { // The query $the_query = array( 'author' => 0, 'feed' => true, 'post_parent' => 'any', 'posts_per_page' => bbp_get_topics_per_rss_page(), 'show_stickies' => false ); // Output the feed bbp_display_topics_feed_rss2( $the_query ); } break; // Replies case bbp_get_reply_post_type() : // The query $the_query = array( 'posts_per_page' => bbp_get_replies_per_rss_page(), 'meta_query' => array( array() ), 'feed' => true ); // All replies if ( empty( $select_query_vars ) ) { bbp_display_replies_feed_rss2( $the_query ); } break; } } // Single Topic Vview } elseif ( isset( $query_vars[ bbp_get_view_rewrite_id() ] ) ) { // Get the view $view = $query_vars[ bbp_get_view_rewrite_id() ]; // We have a view to display a feed if ( ! empty( $view ) ) { // Get the view query $the_query = bbp_get_view_query_args( $view ); // Output the feed if view exists if ( ! empty( $the_query ) ) { bbp_display_topics_feed_rss2( $the_query ); } } } // @todo User profile feeds } // No feed so continue on return $query_vars; } /** Templates ******************************************************************/ /** * Used to guess if page exists at requested path * * @since 2.0.0 bbPress (r3304) * * @param string $path * @return mixed False if no page, Page object if true */ function bbp_get_page_by_path( $path = '' ) { // Default to false $retval = false; // Path is not empty if ( ! empty( $path ) ) { // Pretty permalinks are on so path might exist if ( get_option( 'permalink_structure' ) ) { $retval = get_page_by_path( $path ); } } // Filter & return return apply_filters( 'bbp_get_page_by_path', $retval, $path ); } /** * Prevent WordPress from guessing permalinks for bbPress post types. * * bbPress post types are excluded from search because their visibility depends * on forum access. Older versions of WordPress may otherwise guess a restricted * forum or topic permalink from a partial slug and expose its full title. * * @since 2.6.17 bbPress * * @param bool $do_redirect_guess Whether to attempt to guess a redirect URL. * * @return bool Whether to attempt to guess a redirect URL. */ function bbp_do_not_guess_404_permalink( $do_redirect_guess = true ) { $post_types = (array) get_query_var( 'post_type' ); if ( bbp_is_custom_post_type( $post_types ) ) { $do_redirect_guess = false; } return $do_redirect_guess; } /** * Sets the 404 status. * * Used primarily with topics/replies inside hidden forums. * * @since 2.0.0 bbPress (r3051) * @since 2.6.0 bbPress (r6583) Use status_header() & nocache_headers() * * @param WP_Query $query The query being checked * * @return bool Always returns true */ function bbp_set_404( $query = null ) { // Global fallback if ( empty( $query ) ) { $query = bbp_get_wp_query(); } // Setup environment $query->set_404(); // Setup request status_header( 404 ); nocache_headers(); } /** * Sets the 200 status header. * * @since 2.6.0 bbPress (r6583) */ function bbp_set_200() { status_header( 200 ); } /** * Maybe handle the default 404 handling for some bbPress conditions * * Some conditions (like private/hidden forums and edits) have their own checks * on `bbp_template_redirect` and are not currently 404s. * * @since 2.6.0 bbPress (r6555) * * @param bool $override Whether to override the default handler * @param WP_Query $wp_query The posts query being referenced * * @return bool False to leave alone, true to override */ function bbp_pre_handle_404( $override = false, $wp_query = false ) { // Handle a bbPress 404 condition if ( isset( $wp_query->bbp_is_404 ) ) { // Either force a 404 when 200, or a 200 when 404 if ( true === $wp_query->bbp_is_404 ) { bbp_set_404( $wp_query ); } else { bbp_set_200(); } // Overridden $override = true; } // Return, maybe overridden return $override; } /** * Maybe pre-assign the posts that are returned from a WP_Query. * * This effectively short-circuits the default query for posts, which is * currently only used to avoid calling the main query when it's not necessary. * * @since 2.6.0 bbPress (r6580) * * @param mixed $posts Default null. Array of posts (possibly empty) * @param WP_Query $wp_query * * @return mixed Null if no override. Array if overridden. */ function bbp_posts_pre_query( $posts = null, $wp_query = false ) { // Custom 404 handler is set, so set posts to empty array to avoid 2 queries if ( ! empty( $wp_query->bbp_is_404 ) ) { $posts = array(); } // Return, maybe overridden return $posts; } /** * Get scheme for a URL based on is_ssl() results. * * @since 2.6.0 bbPress (r6759) * * @return string https:// if is_ssl(), otherwise http:// */ function bbp_get_url_scheme() { return is_ssl() ? 'https://' : 'http://'; } /** Titles ********************************************************************/ /** * Is a title longer that the maximum title length? * * Uses mb_strlen() in `8bit` mode to treat strings as raw. This matches the * behavior present in Comments, PHPMailer, RandomCompat, and others. * * @since 2.6.0 bbPress (r6783) * * @param string $title * @return bool */ function bbp_is_title_too_long( $title = '' ) { $max = bbp_get_title_max_length(); $len = mb_strlen( $title, '8bit' ); $result = ( $len > $max ); // Filter & return return (bool) apply_filters( 'bbp_is_title_too_long', $result, $title, $max, $len ); } 1\\Maps\\AlgorithmIdentifier' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AlgorithmIdentifier.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\AnotherName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AnotherName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Attribute' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Attribute.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\AttributeType' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AttributeType.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\AttributeTypeAndValue' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AttributeTypeAndValue.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\AttributeValue' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AttributeValue.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Attributes' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Attributes.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\AuthorityInfoAccessSyntax' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AuthorityInfoAccessSyntax.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\AuthorityKeyIdentifier' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AuthorityKeyIdentifier.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\BaseDistance' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BaseDistance.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\BasicConstraints' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BasicConstraints.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\BuiltInDomainDefinedAttribute' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BuiltInDomainDefinedAttribute.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\BuiltInDomainDefinedAttributes' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BuiltInDomainDefinedAttributes.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\BuiltInStandardAttributes' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BuiltInStandardAttributes.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CPSuri' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CPSuri.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CRLDistributionPoints' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CRLDistributionPoints.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CRLNumber' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CRLNumber.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CRLReason' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CRLReason.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CertPolicyId' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertPolicyId.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Certificate' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Certificate.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CertificateIssuer' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificateIssuer.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CertificateList' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificateList.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CertificatePolicies' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificatePolicies.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CertificateSerialNumber' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificateSerialNumber.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CertificationRequest' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificationRequest.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CertificationRequestInfo' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificationRequestInfo.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Characteristic_two' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Characteristic_two.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\CountryName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CountryName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Curve' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Curve.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DHParameter' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DHParameter.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DSAParams' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DSAParams.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DSAPrivateKey' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DSAPrivateKey.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DSAPublicKey' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DSAPublicKey.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DigestInfo' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DigestInfo.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DirectoryString' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DirectoryString.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DisplayText' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DisplayText.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DistributionPoint' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DistributionPoint.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DistributionPointName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DistributionPointName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\DssSigValue' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DssSigValue.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\ECParameters' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ECParameters.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\ECPoint' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ECPoint.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\ECPrivateKey' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ECPrivateKey.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\EDIPartyName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/EDIPartyName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\EcdsaSigValue' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/EcdsaSigValue.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\EncryptedData' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/EncryptedData.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\EncryptedPrivateKeyInfo' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/EncryptedPrivateKeyInfo.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\ExtKeyUsageSyntax' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ExtKeyUsageSyntax.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Extension' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Extension.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\ExtensionAttribute' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ExtensionAttribute.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\ExtensionAttributes' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ExtensionAttributes.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Extensions' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Extensions.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\FieldElement' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/FieldElement.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\FieldID' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/FieldID.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\GeneralName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/GeneralName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\GeneralNames' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/GeneralNames.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\GeneralSubtree' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/GeneralSubtree.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\GeneralSubtrees' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/GeneralSubtrees.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\HashAlgorithm' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/HashAlgorithm.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\HoldInstructionCode' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/HoldInstructionCode.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\InvalidityDate' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/InvalidityDate.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\IssuerAltName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/IssuerAltName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\IssuingDistributionPoint' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/IssuingDistributionPoint.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\KeyIdentifier' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/KeyIdentifier.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\KeyPurposeId' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/KeyPurposeId.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\KeyUsage' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/KeyUsage.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\MaskGenAlgorithm' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/MaskGenAlgorithm.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Name' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Name.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\NameConstraints' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/NameConstraints.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\NetworkAddress' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/NetworkAddress.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\NoticeReference' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/NoticeReference.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\NumericUserIdentifier' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/NumericUserIdentifier.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\ORAddress' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ORAddress.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\OneAsymmetricKey' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OneAsymmetricKey.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\OrganizationName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OrganizationName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\OrganizationalUnitNames' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OrganizationalUnitNames.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\OtherPrimeInfo' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OtherPrimeInfo.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\OtherPrimeInfos' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OtherPrimeInfos.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PBEParameter' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PBEParameter.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PBES2params' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PBES2params.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PBKDF2params' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PBKDF2params.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PBMAC1params' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PBMAC1params.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PKCS9String' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PKCS9String.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Pentanomial' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Pentanomial.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PersonalName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PersonalName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PolicyInformation' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PolicyInformation.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PolicyMappings' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PolicyMappings.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PolicyQualifierId' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PolicyQualifierId.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PolicyQualifierInfo' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PolicyQualifierInfo.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PostalAddress' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PostalAddress.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Prime_p' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Prime_p.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PrivateDomainName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PrivateDomainName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PrivateKey' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PrivateKey.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PrivateKeyInfo' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PrivateKeyInfo.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PrivateKeyUsagePeriod' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PrivateKeyUsagePeriod.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PublicKey' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PublicKey.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PublicKeyAndChallenge' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PublicKeyAndChallenge.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\PublicKeyInfo' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PublicKeyInfo.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\RC2CBCParameter' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RC2CBCParameter.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\RDNSequence' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RDNSequence.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\RSAPrivateKey' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RSAPrivateKey.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\RSAPublicKey' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RSAPublicKey.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\RSASSA_PSS_params' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RSASSA_PSS_params.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\ReasonFlags' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ReasonFlags.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\RelativeDistinguishedName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RelativeDistinguishedName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\RevokedCertificate' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RevokedCertificate.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\SignedPublicKeyAndChallenge' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SignedPublicKeyAndChallenge.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\SpecifiedECDomain' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SpecifiedECDomain.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\SubjectAltName' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SubjectAltName.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\SubjectDirectoryAttributes' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SubjectDirectoryAttributes.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\SubjectInfoAccessSyntax' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SubjectInfoAccessSyntax.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\SubjectPublicKeyInfo' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SubjectPublicKeyInfo.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\TBSCertList' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/TBSCertList.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\TBSCertificate' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/TBSCertificate.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\TerminalIdentifier' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/TerminalIdentifier.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Time' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Time.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Trinomial' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Trinomial.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\UniqueIdentifier' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/UniqueIdentifier.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\UserNotice' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/UserNotice.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\Validity' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Validity.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\netscape_ca_policy_url' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/netscape_ca_policy_url.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\netscape_cert_type' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/netscape_cert_type.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\ASN1\\Maps\\netscape_comment' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/netscape_comment.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\File\\X509' => $baseDir . '/phpseclib/phpseclib/phpseclib/File/X509.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\BCMath' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\BCMath\\Base' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/Base.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\BCMath\\BuiltIn' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/BuiltIn.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\BCMath\\DefaultEngine' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/DefaultEngine.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\BCMath\\OpenSSL' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/OpenSSL.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\BCMath\\Reductions\\Barrett' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/Reductions/Barrett.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\BCMath\\Reductions\\EvalBarrett' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/Reductions/EvalBarrett.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\Engine' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/Engine.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\GMP' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/GMP.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\GMP\\DefaultEngine' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/GMP/DefaultEngine.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\OpenSSL' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/OpenSSL.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP32' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP32.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP64' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP64.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\Base' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Base.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\DefaultEngine' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/DefaultEngine.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\Montgomery' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Montgomery.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\OpenSSL' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/OpenSSL.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\Reductions\\Barrett' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/Barrett.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\Reductions\\Classic' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/Classic.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\Reductions\\EvalBarrett' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/EvalBarrett.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\Reductions\\Montgomery' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/Montgomery.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\Reductions\\MontgomeryMult' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/MontgomeryMult.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger\\Engines\\PHP\\Reductions\\PowerOfTwo' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/PowerOfTwo.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BinaryField' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BinaryField.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BinaryField\\Integer' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/BinaryField/Integer.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\Common\\FiniteField' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/Common/FiniteField.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\Common\\FiniteField\\Integer' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/Common/FiniteField/Integer.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\PrimeField' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/PrimeField.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\PrimeField\\Integer' => $baseDir . '/phpseclib/phpseclib/phpseclib/Math/PrimeField/Integer.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Net\\SCP' => $baseDir . '/phpseclib/phpseclib/phpseclib/Net/SCP.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Net\\SFTP' => $baseDir . '/phpseclib/phpseclib/phpseclib/Net/SFTP.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Net\\SFTP\\Stream' => $baseDir . '/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\Net\\SSH2' => $baseDir . '/phpseclib/phpseclib/phpseclib/Net/SSH2.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\System\\SSH\\Agent' => $baseDir . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\System\\SSH\\Agent\\Identity' => $baseDir . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php', 'Google\\Site_Kit_Dependencies\\phpseclib3\\System\\SSH\\Common\\Traits\\ReadBytes' => $baseDir . '/phpseclib/phpseclib/phpseclib/System/SSH/Common/Traits/ReadBytes.php', );