File "template.php"
Full Path: /home/jlklyejr/public_html/post-date/wp-content/plugins/bbpress/includes/search/template.php
File size: 11.31 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* bbPress Search Template Tags
*
* @package bbPress
* @subpackage TemplateTags
*/
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
/** Search Loop Functions *****************************************************/
/**
* The main search loop. WordPress does the heavy lifting.
*
* @since 2.3.0 bbPress (r4579)
*
* @param array $args All the arguments supported by {@link WP_Query}
* @return object Multidimensional array of search information
*/
function bbp_has_search_results( $args = array() ) {
/** Defaults **************************************************************/
$default_search_terms = bbp_get_search_terms();
$default_post_types = bbp_get_post_types();
// Default query args
$default = array(
'post_type' => $default_post_types, // Forums, topics, and replies
'posts_per_page' => bbp_get_replies_per_page(), // This many
'paged' => bbp_get_paged(), // On this page
'orderby' => 'date', // Sorted by date
'order' => 'DESC', // Most recent first
'ignore_sticky_posts' => true, // Stickies not supported,
// Conditionally prime the cache for last active posts
'update_post_family_cache' => true
);
// Only set 's' if search terms exist
// https://bbpress.trac.wordpress.org/ticket/2607
if ( false !== $default_search_terms ) {
$default['s'] = $default_search_terms;
}
// What are the default allowed statuses (based on user caps)
if ( bbp_get_view_all() ) {
// Default view=all statuses
$post_statuses = array_keys( bbp_get_topic_statuses() );
// Add support for private status
if ( current_user_can( 'read_private_topics' ) ) {
$post_statuses[] = bbp_get_private_status_id();
}
// Join post statuses together
$default['post_status'] = $post_statuses;
// Lean on the 'perm' query var value of 'readable' to provide statuses
} else {
$default['perm'] = 'readable';
}
/** Setup *****************************************************************/
// Parse arguments against default values
$r = bbp_parse_args( $args, $default, 'has_search_results' );
// Get bbPress
$bbp = bbpress();
// Only call the search query if 's' is not empty
if ( ! empty( $r['s'] ) ) {
$bbp->search_query = new WP_Query( $r );
}
// Maybe prime last active posts
if ( ! empty( $r['update_post_family_cache'] ) ) {
bbp_update_post_family_caches( $bbp->search_query->posts );
}
// Add pagination values to query object
$bbp->search_query->posts_per_page = (int) $r['posts_per_page'];
$bbp->search_query->paged = (int) $r['paged'];
// Never home, regardless of what parse_query says
$bbp->search_query->is_home = false;
// Only add pagination is query returned results
if ( ! empty( $bbp->search_query->found_posts ) && ! empty( $bbp->search_query->posts_per_page ) ) {
// Total for pagination boundaries
$total_pages = ( $bbp->search_query->posts_per_page === $bbp->search_query->found_posts )
? 1
: ceil( $bbp->search_query->found_posts / $bbp->search_query->posts_per_page );
// Pagination settings with filter
$bbp_search_pagination = apply_filters( 'bbp_search_results_pagination', array(
'base' => bbp_get_search_pagination_base(),
'total' => $total_pages,
'current' => $bbp->search_query->paged
) );
// Add pagination to query object
$bbp->search_query->pagination_links = bbp_paginate_links( $bbp_search_pagination );
}
// Filter & return
return apply_filters( 'bbp_has_search_results', $bbp->search_query->have_posts(), $bbp->search_query );
}
/**
* Whether there are more search results available in the loop
*
* @since 2.3.0 bbPress (r4579)
*
* @return object Search information
*/
function bbp_search_results() {
// Put into variable to check against next
$have_posts = bbpress()->search_query->have_posts();
// Reset the post data when finished
if ( empty( $have_posts ) ) {
wp_reset_postdata();
}
return $have_posts;
}
/**
* Loads up the current search result in the loop
*
* @since 2.3.0 bbPress (r4579)
*
* @return object Search information
*/
function bbp_the_search_result() {
$search_result = bbpress()->search_query->the_post();
// Reset each current (forum|topic|reply) id
bbpress()->current_forum_id = bbp_get_forum_id();
bbpress()->current_topic_id = bbp_get_topic_id();
bbpress()->current_reply_id = bbp_get_reply_id();
return $search_result;
}
/**
* Output the search page title
*
* @since 2.3.0 bbPress (r4579)
*/
function bbp_search_title() {
echo bbp_get_search_title();
}
/**
* Get the search page title
*
* @since 2.3.0 bbPress (r4579)
*/
function bbp_get_search_title() {
// Get search terms
$search_terms = bbp_get_search_terms();
// No search terms specified
if ( empty( $search_terms ) ) {
$title = esc_html__( 'Search', 'bbpress' );
// Include search terms in title
} else {
$title = sprintf( esc_html__( "Search Results for '%s'", 'bbpress' ), esc_attr( $search_terms ) );
}
// Filter & return
return apply_filters( 'bbp_get_search_title', $title, $search_terms );
}
/**
* Output the search url
*
* @since 2.3.0 bbPress (r4579)
*/
function bbp_search_url() {
echo esc_url( bbp_get_search_url() );
}
/**
* Return the search url
*
* @since 2.3.0 bbPress (r4579)
*
* @return string Search url
*/
function bbp_get_search_url() {
// Pretty permalinks
if ( bbp_use_pretty_urls() ) {
// Run through home_url()
$url = bbp_get_root_url() . bbp_get_search_slug();
$url = user_trailingslashit( $url );
$url = home_url( $url );
// Unpretty permalinks
} else {
$url = add_query_arg( array(
bbp_get_search_rewrite_id() => ''
), home_url( '/' ) );
}
// Filter & return
return apply_filters( 'bbp_get_search_url', $url );
}
/**
* Output the search results url
*
* @since 2.4.0 bbPress (r4928)
*/
function bbp_search_results_url() {
echo esc_url( bbp_get_search_results_url() );
}
/**
* Return the search url
*
* @since 2.4.0 bbPress (r4928)
*
* @return string Search url
*/
function bbp_get_search_results_url() {
// Get the search terms
$search_terms = bbp_get_search_terms();
// Pretty permalinks
if ( bbp_use_pretty_urls() ) {
// Root search URL
$url = bbp_get_root_url() . bbp_get_search_slug();
// Append search terms
if ( ! empty( $search_terms ) ) {
$url = trailingslashit( $url ) . urlencode( $search_terms );
}
// Run through home_url()
$url = user_trailingslashit( $url );
$url = home_url( $url );
// Unpretty permalinks
} else {
$url = add_query_arg( array(
bbp_get_search_rewrite_id() => urlencode( $search_terms )
), home_url( '/' ) );
}
// Filter & return
return apply_filters( 'bbp_get_search_results_url', $url );
}
/**
* Output the search terms
*
* @since 2.3.0 bbPress (r4579)
*
* @param string $search_terms Optional. Search terms
*/
function bbp_search_terms( $search_terms = '' ) {
echo esc_attr( bbp_get_search_terms( $search_terms ) );
}
/**
* Get the search terms
*
* @since 2.3.0 bbPress (r4579)
*
* If search terms are supplied, those are used. Otherwise check the
* search rewrite id query var.
*
* @param string $passed_terms Optional. Search terms
* @return bool|string Search terms on success, false on failure
*/
function bbp_get_search_terms( $passed_terms = '' ) {
// Sanitize terms if they were passed in
if ( ! empty( $passed_terms ) ) {
$search_terms = sanitize_title( $passed_terms );
// Use query variable if not
} else {
// Global
$search_terms = get_query_var( bbp_get_search_rewrite_id(), null );
// Searching globally
if ( ! is_null( $search_terms ) ) {
$search_terms = wp_unslash( $search_terms );
// Other searches
} else {
// Get known search type IDs
$types = bbp_get_search_type_ids();
// Filterable, so make sure types exist
if ( ! empty( $types ) ) {
// Loop through types
foreach ( $types as $type ) {
// Look for search terms
$terms = bbp_sanitize_search_request( $type );
// Skip if no terms
if ( empty( $terms ) ) {
continue;
}
// Set terms if not empty
$search_terms = $terms;
}
}
}
}
// Trim whitespace & decode if non-empty string, or set to false
$search_terms = ! empty( $search_terms ) && is_string( $search_terms )
? urldecode( trim( $search_terms ) )
: false;
// Filter & return
return apply_filters( 'bbp_get_search_terms', $search_terms, $passed_terms );
}
/** Pagination ****************************************************************/
/**
* Return the base URL used inside of pagination links
*
* @since 2.6.0 bbPress (r6679)
*
* @return string
*/
function bbp_get_search_pagination_base() {
// If pretty permalinks are enabled, make our pagination pretty
if ( bbp_use_pretty_urls() ) {
// Shortcode territory
if ( is_page() || is_single() ) {
$base = get_permalink();
// Default search location
} else {
$base = bbp_get_search_results_url();
}
// Add pagination base
$base = trailingslashit( $base ) . user_trailingslashit( bbp_get_paged_slug() . '/%#%/' );
// Unpretty permalinks
} else {
$base = add_query_arg( 'paged', '%#%' );
}
// Filter & return
return apply_filters( 'bbp_get_search_pagination_base', $base );
}
/**
* Output the search result pagination count
*
* @since 2.3.0 bbPress (r4579)
*/
function bbp_search_pagination_count() {
echo bbp_get_search_pagination_count();
}
/**
* Return the search results pagination count
*
* @since 2.3.0 bbPress (r4579)
*
* @return string Search pagination count
*/
function bbp_get_search_pagination_count() {
$bbp = bbpress();
// Define local variable(s)
$retstr = '';
// Set pagination values
$total_int = intval( $bbp->search_query->found_posts );
$ppp_int = intval( $bbp->search_query->posts_per_page );
$start_int = intval( ( $bbp->search_query->paged - 1 ) * $ppp_int ) + 1;
$to_int = intval( ( $start_int + ( $ppp_int - 1 ) > $total_int )
? $total_int
: $start_int + ( $ppp_int - 1 ) );
// Format numbers for display
$total_num = bbp_number_format( $total_int );
$from_num = bbp_number_format( $start_int );
$to_num = bbp_number_format( $to_int );
// Single page of results
if ( empty( $to_num ) ) {
$retstr = sprintf( _n( 'Viewing %1$s result', 'Viewing %1$s results', $total_int, 'bbpress' ), $total_num );
// Several pages of results
} else {
$retstr = sprintf( _n( 'Viewing %2$s results (of %4$s total)', 'Viewing %1$s results - %2$s through %3$s (of %4$s total)', $bbp->search_query->post_count, 'bbpress' ), $bbp->search_query->post_count, $from_num, $to_num, $total_num );
}
// Filter & return
return apply_filters( 'bbp_get_search_pagination_count', esc_html( $retstr ) );
}
/**
* Output search pagination links
*
* @since 2.3.0 bbPress (r4579)
*/
function bbp_search_pagination_links() {
echo bbp_get_search_pagination_links();
}
/**
* Return search pagination links
*
* @since 2.3.0 bbPress (r4579)
*
* @return string Search pagination links
*/
function bbp_get_search_pagination_links() {
$bbp = bbpress();
if ( ! isset( $bbp->search_query->pagination_links ) || empty( $bbp->search_query->pagination_links ) ) {
return false;
}
// Filter & return
return apply_filters( 'bbp_get_search_pagination_links', $bbp->search_query->pagination_links );
}